#ifdef _MSC_VER
#include "vacall.h"
#endif
#include "asmi386.h"
TEXT()
ALIGN(2)
GLOBL(C(__vacall))
DECLARE_FUNCTION(__vacall)
FUNBEGIN(__vacall)
INSN2(sub,l ,NUM(36),R(esp))
INSN2(mov,l ,NUM(0),X4 MEM(esp))
INSN2(lea,l ,X4 MEM_DISP(esp,40),R(ecx))
INSN2(mov,l ,R(ecx),X4 MEM_DISP(esp,4))
INSN2(mov,l ,NUM(0),X4 MEM_DISP(esp,8))
INSN2(mov,l ,NUM(0),X4 MEM_DISP(esp,12))
INSN2(mov,l ,R(ebx),X4 MEM_DISP(esp,32))
INSN2(mov,l ,R(esp),R(edx))
INSN1(push,l ,R(edx))
INSN2(mov,l ,C(vacall_function),R(edx))
INSN1(call,_ ,INDIR(R(edx)))
INSN2(add,l ,NUM(4),R(esp))
INSN2(cmp,l ,NUM(0),X4 MEM_DISP(esp,12))
INSN1(je,_ ,L3)
INSN2(cmp,l ,NUM(1),X4 MEM_DISP(esp,12))
INSN1(je,_ ,L45)
INSN2(cmp,l ,NUM(2),X4 MEM_DISP(esp,12))
INSN1(jne,_ ,L6)
L45:
INSN2MOVX(movs,b ,X1 MEM_DISP(esp,24),R(eax))
INSN1(jmp,_ ,L3)
L6:
INSN2(cmp,l ,NUM(3),X4 MEM_DISP(esp,12))
INSN1(jne,_ ,L8)
INSN2MOVX(movz,b ,X1 MEM_DISP(esp,24),R(eax))
INSN1(jmp,_ ,L3)
L8:
INSN2(cmp,l ,NUM(4),X4 MEM_DISP(esp,12))
INSN1(jne,_ ,L10)
INSN2MOVX(movs,w ,X2 MEM_DISP(esp,24),R(eax))
INSN1(jmp,_ ,L3)
L10:
INSN2(cmp,l ,NUM(5),X4 MEM_DISP(esp,12))
INSN1(jne,_ ,L12)
INSN2MOVX(movz,w ,X2 MEM_DISP(esp,24),R(eax))
INSN1(jmp,_ ,L3)
L12:
INSN2(cmp,l ,NUM(6),X4 MEM_DISP(esp,12))
INSN1(je,_ ,L46)
INSN2(cmp,l ,NUM(7),X4 MEM_DISP(esp,12))
INSN1(je,_ ,L46)
INSN2(cmp,l ,NUM(8),X4 MEM_DISP(esp,12))
INSN1(je,_ ,L46)
INSN2(cmp,l ,NUM(9),X4 MEM_DISP(esp,12))
INSN1(je,_ ,L46)
INSN2(mov,l ,X4 MEM_DISP(esp,12),R(edx))
INSN2(add,l ,NUM(-10),R(edx))
INSN2(cmp,l ,NUM(1),R(edx))
INSN1(ja,_ ,L22)
INSN2(mov,l ,X4 MEM_DISP(esp,24),R(eax))
INSN2(mov,l ,X4 MEM_DISP(esp,28),R(edx))
INSN1(jmp,_ ,L3)
L22:
INSN2(cmp,l ,NUM(12),X4 MEM_DISP(esp,12))
INSN1(jne,_ ,L24)
INSN1(fld,s ,X4 MEM_DISP(esp,24))
INSN1(jmp,_ ,L3)
L24:
INSN2(cmp,l ,NUM(13),X4 MEM_DISP(esp,12))
INSN1(jne,_ ,L26)
INSN1(fld,l ,X8 MEM_DISP(esp,24))
INSN1(jmp,_ ,L3)
L26:
INSN2(cmp,l ,NUM(14),X4 MEM_DISP(esp,12))
INSN1(jne,_ ,L28)
L46:
INSN2(mov,l ,X4 MEM_DISP(esp,24),R(eax))
INSN1(jmp,_ ,L3)
L28:
INSN2(cmp,l ,NUM(15),X4 MEM_DISP(esp,12))
INSN1(jne,_ ,L3)
INSN2(test,b ,NUM(1),X1 MEM(esp))
INSN1(jne,_ ,L47)
INSN2(test,b ,NUM(4),X1 MEM_DISP(esp,1))
INSN1(je,_ ,L33)
INSN2(cmp,l ,NUM(1),X4 MEM_DISP(esp,16))
INSN1(jne,_ ,L34)
INSN2(mov,l ,X4 MEM_DISP(esp,8),R(edx))
INSN2MOVX(movz,b ,X1 MEM(edx),R(eax))
INSN1(jmp,_ ,L3)
L34:
INSN2(cmp,l ,NUM(2),X4 MEM_DISP(esp,16))
INSN1(jne,_ ,L37)
INSN2(mov,l ,X4 MEM_DISP(esp,8),R(edx))
INSN2MOVX(movz,w ,X2 MEM(edx),R(eax))
INSN1(jmp,_ ,L3)
L37:
INSN2(cmp,l ,NUM(4),X4 MEM_DISP(esp,16))
INSN1(jne,_ ,L39)
INSN2(mov,l ,X4 MEM_DISP(esp,8),R(edx))
INSN2(mov,l ,X4 MEM(edx),R(eax))
INSN1(jmp,_ ,L3)
L39:
INSN2(cmp,l ,NUM(8),X4 MEM_DISP(esp,16))
INSN1(jne,_ ,L33)
INSN2(mov,l ,X4 MEM_DISP(esp,8),R(edx))
INSN2(mov,l ,X4 MEM(edx),R(eax))
INSN2(mov,l ,X4 MEM_DISP(esp,8),R(edx))
INSN2(mov,l ,X4 MEM_DISP(edx,4),R(edx))
INSN1(jmp,_ ,L3)
L33:
INSN2(test,b ,NUM(24),X1 MEM(esp))
INSN1(jne,_ ,L42)
INSN2(add,l ,NUM(36),R(esp))
ret NUM(4)
L42:
INSN2(test,b ,NUM(16),X1 MEM(esp))
INSN1(je,_ ,L3)
L47:
INSN2(mov,l ,X4 MEM_DISP(esp,8),R(eax))
L3:
INSN2(test,b ,NUM(2),X1 MEM_DISP(esp,1))
INSN1(je,_ ,L44)
INSN2(mov,l ,X4 MEM_DISP(esp,36),R(ecx))
INSN2(mov,l ,X4 MEM_DISP(esp,4),R(esp))
INSN1(jmp,_ ,INDIR(R(ecx)))
L44:
INSN2(add,l ,NUM(36),R(esp))
ret
FUNEND()