1#include "asm-i386.h" 2 TEXT() 3 ALIGN(2) 4 P2ALIGN(2,3) 5 DECLARE_FUNCTION(callback_receiver) 6FUNBEGIN(callback_receiver) 7 INSN1(push,l ,R(ebp)) 8 INSN2(mov,l ,R(esp), R(ebp)) 9 INSN1(push,l ,R(edi)) 10 INSN1(push,l ,R(esi)) 11 INSN2(lea,l ,X4 MEM_DISP(ebp,8), R(edx)) 12 INSN2(sub,l ,NUM(56), R(esp)) 13 INSN2(mov,l ,R(edx),X4 MEM_DISP(ebp,-40)) 14 INSN2(lea,l ,X4 MEM_DISP(ebp,-56), R(edx)) 15 INSN2(mov,l ,NUM(0),X4 MEM_DISP(ebp,-56)) 16 INSN2(mov,l ,NUM(0),X4 MEM_DISP(ebp,-36)) 17 INSN2(mov,l ,NUM(0),X4 MEM_DISP(ebp,-32)) 18 INSN2(mov,l ,R(ebx),X4 MEM_DISP(ebp,-24)) 19 INSN1(push,l ,R(edx)) 20 INSN1(push,l ,X4 MEM_DISP(ecx,4)) 21 INSN1(call,_ ,INDIR(X4 MEM(ecx))) 22 INSN2(mov,l ,X4 MEM_DISP(ebp,-32), R(esi)) 23 INSN2(add,l ,NUM(16), R(esp)) 24 INSN2(test,l ,R(esi), R(esi)) 25 INSN1(je,_ ,L(43)) 26 INSN2(cmp,l ,NUM(1), R(esi)) 27 INSN1(je,_ ,L(44)) 28 INSN2(cmp,l ,NUM(2), R(esi)) 29 INSN1(je,_ ,L(44)) 30 INSN2(cmp,l ,NUM(3), R(esi)) 31 INSN1(je,_ ,L(49)) 32 INSN2(cmp,l ,NUM(4), R(esi)) 33 INSN1(je,_ ,L(50)) 34 INSN2(cmp,l ,NUM(5), R(esi)) 35 INSN1(je,_ ,L(51)) 36 INSN2(cmp,l ,NUM(6), R(esi)) 37 INSN1(je,_ ,L(48)) 38 INSN2(cmp,l ,NUM(7), R(esi)) 39 INSN1(je,_ ,L(48)) 40 INSN2(cmp,l ,NUM(8), R(esi)) 41 INSN1(je,_ ,L(48)) 42 INSN2(cmp,l ,NUM(9), R(esi)) 43 INSN1(je,_ ,L(48)) 44 INSN2(lea,l ,X4 MEM_DISP(esi,-10), R(edx)) 45 INSN2(cmp,l ,NUM(1), R(edx)) 46 INSN1(ja,_ ,L(22)) 47 INSN2(mov,l ,X4 MEM_DISP(ebp,-48), R(eax)) 48 INSN2(mov,l ,X4 MEM_DISP(ebp,-44),R(edx)) 49L(33): 50 P2ALIGN(2,3) 51L(43): 52 INSN2(mov,l ,X4 MEM_DISP(ebp,-56), R(esi)) 53L(3): 54 INSN2(and,l ,NUM(512), R(esi)) 55 INSN1(je,_ ,L(1)) 56 INSN2(mov,l ,X4 MEM_DISP(ebp,0),R(ecx)) 57 INSN2(mov,l ,X4 MEM_DISP(ebp,-40), R(esp)) 58 INSN1(jmp,_ ,INDIR(R(ecx))) 59L(1): 60 INSN2(lea,l ,X4 MEM_DISP(ebp,-8), R(esp)) 61 INSN1(pop,l ,R(esi)) 62 INSN1(pop,l ,R(edi)) 63 leave 64 ret 65L(22): 66 INSN2(cmp,l ,NUM(12), R(esi)) 67 INSN1(je,_ ,L(52)) 68 INSN2(cmp,l ,NUM(13), R(esi)) 69 INSN1(je,_ ,L(53)) 70 INSN2(cmp,l ,NUM(14), R(esi)) 71 INSN1(je,_ ,L(48)) 72 INSN2(cmp,l ,NUM(15), R(esi)) 73 INSN1(jne,_ ,L(43)) 74 INSN2(mov,l ,X4 MEM_DISP(ebp,-56), R(esi)) 75 INSN2(test,l ,NUM(1024), R(esi)) 76 INSN2(mov,l ,R(esi), R(edi)) 77 INSN1(je,_ ,L(31)) 78 INSN2(mov,l ,X4 MEM_DISP(ebp,-28), R(edx)) 79 INSN2(cmp,l ,NUM(1), R(edx)) 80 INSN1(je,_ ,L(54)) 81 INSN2(cmp,l ,NUM(2), R(edx)) 82 INSN1(je,_ ,L(55)) 83 INSN2(cmp,l ,NUM(4), R(edx)) 84 INSN1(je,_ ,L(56)) 85 INSN2(cmp,l ,NUM(8), R(edx)) 86 INSN1(je,_ ,L(57)) 87L(31): 88 INSN2(and,l ,NUM(16), R(edi)) 89 INSN2(mov,l ,X4 MEM_DISP(ebp,-36), R(eax)) 90 INSN1(jne,_ ,L(3)) 91 INSN2(lea,l ,X4 MEM_DISP(ebp,-8), R(esp)) 92 INSN1(pop,l ,R(esi)) 93 INSN1(pop,l ,R(edi)) 94 leave 95 ret NUM(4) 96 INSN1(jmp,_ ,L(3)) 97L(57): 98 INSN2(mov,l ,X4 MEM_DISP(ebp,-36), R(edx)) 99 INSN2(mov,l ,X4 MEM(edx), R(eax)) 100 INSN2(mov,l ,X4 MEM_DISP(edx,4),R(edx)) 101 INSN1(jmp,_ ,L(3)) 102L(56): 103 INSN2(mov,l ,X4 MEM_DISP(ebp,-36), R(edx)) 104 INSN2(mov,l ,X4 MEM(edx), R(eax)) 105 INSN1(jmp,_ ,L(3)) 106L(55): 107 INSN2(mov,l ,X4 MEM_DISP(ebp,-36), R(edx)) 108 INSN2MOVXL(movz,w,X2 MEM(edx), R(eax)) 109 INSN1(jmp,_ ,L(3)) 110L(54): 111 INSN2(mov,l ,X4 MEM_DISP(ebp,-36), R(edx)) 112 INSN2MOVXL(movz,b,X1 MEM(edx), R(eax)) 113 INSN1(jmp,_ ,L(3)) 114 P2ALIGN(2,3) 115L(48): 116 INSN2(mov,l ,X4 MEM_DISP(ebp,-48), R(eax)) 117 INSN1(jmp,_ ,L(43)) 118L(53): 119 INSN1(fld,l ,X8 MEM_DISP(ebp,-48)) 120 INSN1(jmp,_ ,L(43)) 121L(52): 122 INSN1(fld,s ,X4 MEM_DISP(ebp,-48)) 123 INSN1(jmp,_ ,L(43)) 124 P2ALIGN(2,3) 125L(51): 126 INSN2MOVXL(movz,w,X2 MEM_DISP(ebp,-48), R(eax)) 127 INSN1(jmp,_ ,L(43)) 128L(50): 129 INSN2MOVXL(movs,w,X2 MEM_DISP(ebp,-48),R(eax)) 130 INSN1(jmp,_ ,L(43)) 131L(49): 132 INSN2MOVXL(movz,b,X1 MEM_DISP(ebp,-48), R(eax)) 133 INSN1(jmp,_ ,L(43)) 134 P2ALIGN(2,3) 135L(44): 136 INSN2MOVXL(movs,b,X1 MEM_DISP(ebp,-48),R(eax)) 137 INSN1(jmp,_ ,L(43)) 138L(fe1): 139 FUNEND(callback_receiver,L(fe1)-callback_receiver) 140 ALIGN(2) 141 P2ALIGN(2,3) 142GLOBL(C(callback_get_receiver)) 143 DECLARE_FUNCTION(callback_get_receiver) 144FUNBEGIN(callback_get_receiver) 145 INSN1(push,l ,R(ebp)) 146 INSN2(mov,l ,R(esp), R(ebp)) 147 INSN1(push,l ,R(ebx)) 148 INSN1(call,_ ,L(59)) 149L(59): 150 INSN1(pop,l ,R(ebx)) 151#ifdef __ELF__ 152 INSN2(add,l ,NUM()_GLOBAL_OFFSET_TABLE_+[.-L(59)],R(ebx)) 153#endif 154#ifdef __ELF__ 155 INSN2(lea,l ,callback_receiver@MEM_DISP(ebx,GOTOFF), R(eax)) 156#else 157 INSN2(lea,l ,C(callback_receiver)-L(59)MEM(ebx), R(eax)) 158#endif 159 INSN2(mov,l ,X4 MEM(esp), R(ebx)) 160 leave 161 ret 162L(fe2): 163 FUNEND(callback_get_receiver,L(fe2)-callback_get_receiver) 164 165#if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__ 166 .section .note.GNU-stack,"",@progbits 167#endif 168