#include "asmi386.h" TEXT() ALIGN(2) GLOBL(C(__builtin_avcall)) DECLARE_FUNCTION(__builtin_avcall) FUNBEGIN(__builtin_avcall) INSN1(push,l ,R(ebp)) INSN2(mov,l ,R(esp),R(ebp)) INSN1(push,l ,R(esi)) INSN1(push,l ,R(ebx)) INSN2(mov,l ,X4 MEM_DISP(ebp,8),R(esi)) INSN2(add,l ,NUM(-1024),R(esp)) INSN2(mov,l ,R(esp),R(ecx)) INSN2(mov,l ,X4 MEM_DISP(esi,20),R(eax)) INSN2(add,l ,NUM(-32),R(eax)) INSN2(sub,l ,R(esi),R(eax)) INSN2(mov,l ,R(eax),R(edx)) INSN2(sar,l ,NUM(2),R(edx)) INSN2(xor,l ,R(ebx),R(ebx)) INSN2(cmp,l ,R(edx),R(ebx)) INSN1(jge,_ ,L3) L5: INSN2(mov,l ,X4 MEM_DISP_SHINDEX(esi,32,ebx,4),R(eax)) INSN2(mov,l ,R(eax),X4 MEM_SHINDEX(ecx,ebx,4)) INSN1(inc,l ,R(ebx)) INSN2(cmp,l ,R(edx),R(ebx)) INSN1(jl,_ ,L5) L3: INSN2(test,b ,NUM(8),X1 MEM_DISP(esi,4)) INSN1(je,_ ,L7) INSN2(cmp,l ,NUM(16),X4 MEM_DISP(esi,12)) INSN1(jne,_ ,L7) INSN2(mov,l ,X4 MEM_DISP(esi,8),R(ebx)) L7: INSN2(mov,l ,X4 MEM_DISP(esi,12),R(eax)) INSN2(cmp,l ,NUM(13),R(eax)) INSN1(jne,_ ,L8) INSN2(mov,l ,X4 MEM(esi),R(eax)) INSN1(call,_ ,INDIR(R(eax))) INSN2(mov,l ,X4 MEM_DISP(esi,8),R(eax)) INSN1(fstp,s ,X4 MEM(eax)) INSN1(jmp,_ ,L9) L8: INSN2(cmp,l ,NUM(14),R(eax)) INSN1(jne,_ ,L10) INSN2(mov,l ,X4 MEM(esi),R(eax)) INSN1(call,_ ,INDIR(R(eax))) INSN2(mov,l ,X4 MEM_DISP(esi,8),R(eax)) INSN1(fstp,l ,X8 MEM(eax)) INSN1(jmp,_ ,L9) L10: INSN2(mov,l ,X4 MEM(esi),R(eax)) INSN1(call,_ ,INDIR(R(eax))) INSN2(mov,l ,R(eax),R(ebx)) INSN2(mov,l ,X4 MEM_DISP(esi,12),R(eax)) INSN2(cmp,l ,NUM(1),R(eax)) INSN1(je,_ ,L9) INSN2(test,l ,R(eax),R(eax)) INSN1(je,_ ,L61) INSN2(cmp,l ,NUM(2),R(eax)) INSN1(je,_ ,L62) INSN2(cmp,l ,NUM(3),R(eax)) INSN1(je,_ ,L62) INSN2(cmp,l ,NUM(4),R(eax)) INSN1(je,_ ,L62) INSN2(cmp,l ,NUM(5),R(eax)) INSN1(je,_ ,L63) INSN2(cmp,l ,NUM(6),R(eax)) INSN1(je,_ ,L63) INSN2(cmp,l ,NUM(7),R(eax)) INSN1(je,_ ,L61) INSN2(cmp,l ,NUM(8),R(eax)) INSN1(je,_ ,L61) INSN2(cmp,l ,NUM(9),R(eax)) INSN1(je,_ ,L61) INSN2(cmp,l ,NUM(10),R(eax)) INSN1(je,_ ,L61) INSN2(mov,l ,X4 MEM_DISP(esi,12),R(ecx)) INSN2(lea,l ,X4 MEM_DISP(ecx,-11),R(eax)) INSN2(cmp,l ,NUM(1),R(eax)) INSN1(jbe,_ ,L64) INSN2(cmp,l ,NUM(15),R(ecx)) INSN1(je,_ ,L61) INSN2(cmp,l ,NUM(16),R(ecx)) INSN1(jne,_ ,L9) INSN2(mov,l ,X4 MEM_DISP(esi,4),R(eax)) INSN2(test,b ,NUM(1),R(al)) INSN1(je,_ ,L39) INSN2(mov,l ,X4 MEM_DISP(esi,16),R(eax)) INSN2(cmp,l ,NUM(1),R(eax)) INSN1(jne,_ ,L40) INSN2(mov,l ,X4 MEM_DISP(esi,8),R(edx)) INSN2(mov,b ,X1 MEM(ebx),R(al)) INSN2(mov,b ,R(al),X1 MEM(edx)) INSN1(jmp,_ ,L9) L40: INSN2(cmp,l ,NUM(2),R(eax)) INSN1(jne,_ ,L42) INSN2(mov,l ,X4 MEM_DISP(esi,8),R(edx)) INSN2(mov,w ,X2 MEM(ebx),R(ax)) INSN2(mov,w ,R(ax),X2 MEM(edx)) INSN1(jmp,_ ,L9) L42: INSN2(cmp,l ,NUM(4),R(eax)) INSN1(jne,_ ,L44) INSN2(mov,l ,X4 MEM_DISP(esi,8),R(edx)) INSN2(mov,l ,X4 MEM(ebx),R(eax)) INSN2(mov,l ,R(eax),X4 MEM(edx)) INSN1(jmp,_ ,L9) L44: INSN2(cmp,l ,NUM(8),R(eax)) INSN1(jne,_ ,L46) INSN2(mov,l ,X4 MEM_DISP(esi,8),R(edx)) INSN2(mov,l ,X4 MEM(ebx),R(eax)) INSN2(mov,l ,R(eax),X4 MEM(edx)) INSN2(mov,l ,X4 MEM_DISP(esi,8),R(edx)) INSN2(mov,l ,X4 MEM_DISP(ebx,4),R(eax)) INSN2(mov,l ,R(eax),X4 MEM_DISP(edx,4)) INSN1(jmp,_ ,L9) L46: INSN2(add,l ,NUM(3),R(eax)) INSN2(mov,l ,R(eax),R(ecx)) INSN2(shr,l ,NUM(2),R(ecx)) INSN1(dec,l ,R(ecx)) INSN1(js,_ ,L9) L50: INSN2(mov,l ,X4 MEM_DISP(esi,8),R(edx)) INSN2(mov,l ,X4 MEM_SHINDEX(ebx,ecx,4),R(eax)) INSN2(mov,l ,R(eax),X4 MEM_SHINDEX(edx,ecx,4)) INSN1(dec,l ,R(ecx)) INSN1(jns,_ ,L50) INSN1(jmp,_ ,L9) L39: INSN2(test,b ,NUM(2),R(ah)) INSN1(je,_ ,L9) INSN2(mov,l ,X4 MEM_DISP(esi,16),R(eax)) INSN2(cmp,l ,NUM(1),R(eax)) INSN1(jne,_ ,L54) L62: INSN2(mov,l ,X4 MEM_DISP(esi,8),R(eax)) INSN2(mov,b ,R(bl),X1 MEM(eax)) INSN1(jmp,_ ,L9) L54: INSN2(cmp,l ,NUM(2),R(eax)) INSN1(jne,_ ,L56) L63: INSN2(mov,l ,X4 MEM_DISP(esi,8),R(eax)) INSN2(mov,w ,R(bx),X2 MEM(eax)) INSN1(jmp,_ ,L9) L56: INSN2(cmp,l ,NUM(4),R(eax)) INSN1(jne,_ ,L58) L61: INSN2(mov,l ,X4 MEM_DISP(esi,8),R(eax)) INSN2(mov,l ,R(ebx),X4 MEM(eax)) INSN1(jmp,_ ,L9) L58: INSN2(cmp,l ,NUM(8),R(eax)) INSN1(jne,_ ,L9) L64: INSN2(mov,l ,X4 MEM_DISP(esi,8),R(eax)) INSN2(mov,l ,R(ebx),X4 MEM(eax)) INSN2(mov,l ,X4 MEM_DISP(esi,8),R(eax)) INSN2(mov,l ,R(edx),X4 MEM_DISP(eax,4)) L9: INSN2(xor,l ,R(eax),R(eax)) INSN2(lea,l ,X4 MEM_DISP(ebp,-8),R(esp)) INSN1(pop,l ,R(ebx)) INSN1(pop,l ,R(esi)) INSN2(mov,l ,R(ebp),R(esp)) INSN1(pop,l ,R(ebp)) ret FUNEND()