262588213843476 · Gist

// a7920fd5915afd41455261c42b6e8788c63acc748805d466190366e56bbc90eb // $ /home/brandtbucher/.pyenv/versions/3.13-dev/bin/python3.13 ./Tools/jit/build.py x86_64-pc-linux-gnu typedef enum { HoleKind_ARM64_RELOC_GOT_LOAD_PAGE21, HoleKind_ARM64_RELOC_GOT_LOAD_PAGEOFF12, HoleKind_ARM64_RELOC_PAGE21, HoleKind_ARM64_RELOC_PAGEOFF12, HoleKind_ARM64_RELOC_UNSIGNED, HoleKind_IMAGE_REL_AMD64_REL32, HoleKind_IMAGE_REL_ARM64_BRANCH26, HoleKind_IMAGE_REL_ARM64_PAGEBASE_REL21, HoleKind_IMAGE_REL_ARM64_PAGEOFFSET_12A, HoleKind_IMAGE_REL_ARM64_PAGEOFFSET_12L, HoleKind_IMAGE_REL_I386_DIR32, HoleKind_IMAGE_REL_I386_REL32, HoleKind_R_AARCH64_ABS64, HoleKind_R_AARCH64_ADR_GOT_PAGE, HoleKind_R_AARCH64_CALL26, HoleKind_R_AARCH64_JUMP26, HoleKind_R_AARCH64_LD64_GOT_LO12_NC, HoleKind_R_AARCH64_MOVW_UABS_G0_NC, HoleKind_R_AARCH64_MOVW_UABS_G1_NC, HoleKind_R_AARCH64_MOVW_UABS_G2_NC, HoleKind_R_AARCH64_MOVW_UABS_G3, HoleKind_R_X86_64_64, HoleKind_R_X86_64_GOTPCREL, HoleKind_R_X86_64_GOTPCRELX, HoleKind_R_X86_64_PC32, HoleKind_R_X86_64_REX_GOTPCRELX, HoleKind_X86_64_RELOC_BRANCH, HoleKind_X86_64_RELOC_GOT, HoleKind_X86_64_RELOC_GOT_LOAD, HoleKind_X86_64_RELOC_SIGNED, HoleKind_X86_64_RELOC_UNSIGNED, } HoleKind; typedef enum { HoleValue_CODE, HoleValue_CONTINUE, HoleValue_DATA, HoleValue_EXECUTOR, HoleValue_GOT, HoleValue_OPARG, HoleValue_OPERAND, HoleValue_TARGET, HoleValue_TOP, HoleValue_ZERO, } HoleValue; typedef struct { const uint64_t offset; const HoleKind kind; const HoleValue value; const void *symbol; const uint64_t addend; } Hole; typedef struct { const size_t body_size; const unsigned char * const body; const size_t holes_size; const Hole * const holes; } Stencil; typedef struct { const Stencil code; const Stencil data; } StencilGroup; // _BEFORE_ASYNC_WITH // // /tmp/tmp2mfmnab2/_BEFORE_ASYNC_WITH.o: file format elf64-x86-64 // // Disassembly of section .text: // // 0000000000000000 <_JIT_ENTRY>: // 0: 55 pushq %rbp // 1: 41 57 pushq %r15 // 3: 41 56 pushq %r14 // 5: 41 55 pushq %r13 // 7: 41 54 pushq %r12 // 9: 53 pushq %rbx // a: 50 pushq %rax // b: 49 89 d7 movq %rdx, %r15 // e: 48 89 f3 movq %rsi, %rbx // 11: 49 89 fe movq %rdi, %r14 // 14: 4c 8b 6e f8 movq -0x8(%rsi), %r13 // 18: be 40 68 00 00 movl $0x6840, %esi # imm = 0x6840 // 1d: 48 03 35 00 00 00 00 addq (%rip), %rsi # 0x24 <_JIT_ENTRY+0x24> // 0000000000000020: R_X86_64_REX_GOTPCRELX _PyRuntime-0x4 // 24: 4c 89 ef movq %r13, %rdi // 27: ff 15 00 00 00 00 callq *(%rip) # 0x2d <_JIT_ENTRY+0x2d> // 0000000000000029: R_X86_64_GOTPCRELX _PyObject_LookupSpecial-0x4 // 2d: 48 85 c0 testq %rax, %rax // 30: 0f 84 90 00 00 00 je 0xc6 <_JIT_ENTRY+0xc6> // 36: 49 89 c4 movq %rax, %r12 // 39: be 78 68 00 00 movl $0x6878, %esi # imm = 0x6878 // 3e: 48 03 35 00 00 00 00 addq (%rip), %rsi # 0x45 <_JIT_ENTRY+0x45> // 0000000000000041: R_X86_64_REX_GOTPCRELX _PyRuntime-0x4 // 45: 4c 89 ef movq %r13, %rdi // 48: ff 15 00 00 00 00 callq *(%rip) # 0x4e <_JIT_ENTRY+0x4e> // 000000000000004a: R_X86_64_GOTPCRELX _PyObject_LookupSpecial-0x4 // 4e: 48 85 c0 testq %rax, %rax // 51: 0f 84 a9 00 00 00 je 0x100 <_JIT_ENTRY+0x100> // 57: 48 89 c5 movq %rax, %rbp // 5a: 49 8b 45 00 movq (%r13), %rax // 5e: 85 c0 testl %eax, %eax // 60: 78 12 js 0x74 <_JIT_ENTRY+0x74> // 62: 48 ff c8 decq %rax // 65: 49 89 45 00 movq %rax, (%r13) // 69: 75 09 jne 0x74 <_JIT_ENTRY+0x74> // 6b: 4c 89 ef movq %r13, %rdi // 6e: ff 15 00 00 00 00 callq *(%rip) # 0x74 <_JIT_ENTRY+0x74> // 0000000000000070: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 // 74: 4c 89 e7 movq %r12, %rdi // 77: ff 15 00 00 00 00 callq *(%rip) # 0x7d <_JIT_ENTRY+0x7d> // 0000000000000079: R_X86_64_GOTPCRELX PyObject_CallNoArgs-0x4 // 7d: 49 89 c5 movq %rax, %r13 // 80: 49 8b 04 24 movq (%r12), %rax // 84: 85 c0 testl %eax, %eax // 86: 78 0d js 0x95 <_JIT_ENTRY+0x95> // 88: 48 ff c8 decq %rax // 8b: 49 89 04 24 movq %rax, (%r12) // 8f: 0f 84 b5 00 00 00 je 0x14a <_JIT_ENTRY+0x14a> // 95: 4d 85 ed testq %r13, %r13 // 98: 0f 84 be 00 00 00 je 0x15c <_JIT_ENTRY+0x15c> // 9e: 48 89 6b f8 movq %rbp, -0x8(%rbx) // a2: 4c 89 2b movq %r13, (%rbx) // a5: 48 83 c3 08 addq $0x8, %rbx // a9: 4c 89 f7 movq %r14, %rdi // ac: 48 89 de movq %rbx, %rsi // af: 4c 89 fa movq %r15, %rdx // b2: 48 83 c4 08 addq $0x8, %rsp // b6: 5b popq %rbx // b7: 41 5c popq %r12 // b9: 41 5d popq %r13 // bb: 41 5e popq %r14 // bd: 41 5f popq %r15 // bf: 5d popq %rbp // c0: ff 25 00 00 00 00 jmpq *(%rip) # 0xc6 <_JIT_ENTRY+0xc6> // 00000000000000c2: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 // c6: 49 8b 47 70 movq 0x70(%r15), %rax // ca: 48 85 c0 testq %rax, %rax // cd: 74 0b je 0xda <_JIT_ENTRY+0xda> // cf: 48 83 78 08 00 cmpq $0x0, 0x8(%rax) // d4: 0f 85 a0 00 00 00 jne 0x17a <_JIT_ENTRY+0x17a> // da: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0xe1 <_JIT_ENTRY+0xe1> // 00000000000000dd: R_X86_64_REX_GOTPCRELX PyExc_TypeError-0x4 // e1: 48 8b 30 movq (%rax), %rsi // e4: 49 8b 45 08 movq 0x8(%r13), %rax // e8: 48 8b 48 18 movq 0x18(%rax), %rcx // ec: 48 8d 15 00 00 00 00 leaq (%rip), %rdx # 0xf3 <_JIT_ENTRY+0xf3> // 00000000000000ef: R_X86_64_PC32 .L.str.15-0x4 // f3: 4c 89 ff movq %r15, %rdi // f6: 31 c0 xorl %eax, %eax // f8: ff 15 00 00 00 00 callq *(%rip) # 0xfe <_JIT_ENTRY+0xfe> // 00000000000000fa: R_X86_64_GOTPCRELX _PyErr_Format-0x4 // fe: eb 7a jmp 0x17a <_JIT_ENTRY+0x17a> // 100: 49 8b 47 70 movq 0x70(%r15), %rax // 104: 48 85 c0 testq %rax, %rax // 107: 74 07 je 0x110 <_JIT_ENTRY+0x110> // 109: 48 83 78 08 00 cmpq $0x0, 0x8(%rax) // 10e: 75 24 jne 0x134 <_JIT_ENTRY+0x134> // 110: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0x117 <_JIT_ENTRY+0x117> // 0000000000000113: R_X86_64_REX_GOTPCRELX PyExc_TypeError-0x4 // 117: 48 8b 30 movq (%rax), %rsi // 11a: 49 8b 45 08 movq 0x8(%r13), %rax // 11e: 48 8b 48 18 movq 0x18(%rax), %rcx // 122: 48 8d 15 00 00 00 00 leaq (%rip), %rdx # 0x129 <_JIT_ENTRY+0x129> // 0000000000000125: R_X86_64_PC32 .L.str.16-0x4 // 129: 4c 89 ff movq %r15, %rdi // 12c: 31 c0 xorl %eax, %eax // 12e: ff 15 00 00 00 00 callq *(%rip) # 0x134 <_JIT_ENTRY+0x134> // 0000000000000130: R_X86_64_GOTPCRELX _PyErr_Format-0x4 // 134: 49 8b 04 24 movq (%r12), %rax // 138: 85 c0 testl %eax, %eax // 13a: 78 3e js 0x17a <_JIT_ENTRY+0x17a> // 13c: 48 ff c8 decq %rax // 13f: 49 89 04 24 movq %rax, (%r12) // 143: 75 35 jne 0x17a <_JIT_ENTRY+0x17a> // 145: 4c 89 e7 movq %r12, %rdi // 148: eb 2a jmp 0x174 <_JIT_ENTRY+0x174> // 14a: 4c 89 e7 movq %r12, %rdi // 14d: ff 15 00 00 00 00 callq *(%rip) # 0x153 <_JIT_ENTRY+0x153> // 000000000000014f: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 // 153: 4d 85 ed testq %r13, %r13 // 156: 0f 85 42 ff ff ff jne 0x9e <_JIT_ENTRY+0x9e> // 15c: 48 83 c3 f8 addq $-0x8, %rbx // 160: 48 8b 45 00 movq (%rbp), %rax // 164: 85 c0 testl %eax, %eax // 166: 78 12 js 0x17a <_JIT_ENTRY+0x17a> // 168: 48 ff c8 decq %rax // 16b: 48 89 45 00 movq %rax, (%rbp) // 16f: 75 09 jne 0x17a <_JIT_ENTRY+0x17a> // 171: 48 89 ef movq %rbp, %rdi // 174: ff 15 00 00 00 00 callq *(%rip) # 0x17a <_JIT_ENTRY+0x17a> // 0000000000000176: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 // 17a: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0x181 <_JIT_ENTRY+0x181> // 000000000000017d: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 // 181: 49 89 87 28 01 00 00 movq %rax, 0x128(%r15) // 188: 4c 29 f3 subq %r14, %rbx // 18b: 48 83 c3 b8 addq $-0x48, %rbx // 18f: 48 c1 eb 03 shrq $0x3, %rbx // 193: 41 89 5e 40 movl %ebx, 0x40(%r14) // 197: 31 c0 xorl %eax, %eax // 199: 48 83 c4 08 addq $0x8, %rsp // 19d: 5b popq %rbx // 19e: 41 5c popq %r12 // 1a0: 41 5d popq %r13 // 1a2: 41 5e popq %r14 // 1a4: 41 5f popq %r15 // 1a6: 5d popq %rbp // 1a7: c3 retq // 1a8: static const unsigned char _BEFORE_ASYNC_WITH_code_body[425] = { 0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x53, 0x50, 0x49, 0x89, 0xd7, 0x48, 0x89, 0xf3, 0x49, 0x89, 0xfe, 0x4c, 0x8b, 0x6e, 0xf8, 0xbe, 0x40, 0x68, 0x00, 0x00, 0x48, 0x03, 0x35, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x0f, 0x84, 0x90, 0x00, 0x00, 0x00, 0x49, 0x89, 0xc4, 0xbe, 0x78, 0x68, 0x00, 0x00, 0x48, 0x03, 0x35, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x0f, 0x84, 0xa9, 0x00, 0x00, 0x00, 0x48, 0x89, 0xc5, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x12, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x45, 0x00, 0x75, 0x09, 0x4c, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xe7, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0xc5, 0x49, 0x8b, 0x04, 0x24, 0x85, 0xc0, 0x78, 0x0d, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x04, 0x24, 0x0f, 0x84, 0xb5, 0x00, 0x00, 0x00, 0x4d, 0x85, 0xed, 0x0f, 0x84, 0xbe, 0x00, 0x00, 0x00, 0x48, 0x89, 0x6b, 0xf8, 0x4c, 0x89, 0x2b, 0x48, 0x83, 0xc3, 0x08, 0x4c, 0x89, 0xf7, 0x48, 0x89, 0xde, 0x4c, 0x89, 0xfa, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x49, 0x8b, 0x47, 0x70, 0x48, 0x85, 0xc0, 0x74, 0x0b, 0x48, 0x83, 0x78, 0x08, 0x00, 0x0f, 0x85, 0xa0, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x30, 0x49, 0x8b, 0x45, 0x08, 0x48, 0x8b, 0x48, 0x18, 0x48, 0x8d, 0x15, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xff, 0x31, 0xc0, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x7a, 0x49, 0x8b, 0x47, 0x70, 0x48, 0x85, 0xc0, 0x74, 0x07, 0x48, 0x83, 0x78, 0x08, 0x00, 0x75, 0x24, 0x48, 0x8b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x30, 0x49, 0x8b, 0x45, 0x08, 0x48, 0x8b, 0x48, 0x18, 0x48, 0x8d, 0x15, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xff, 0x31, 0xc0, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x8b, 0x04, 0x24, 0x85, 0xc0, 0x78, 0x3e, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x04, 0x24, 0x75, 0x35, 0x4c, 0x89, 0xe7, 0xeb, 0x2a, 0x4c, 0x89, 0xe7, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x85, 0xed, 0x0f, 0x85, 0x42, 0xff, 0xff, 0xff, 0x48, 0x83, 0xc3, 0xf8, 0x48, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x12, 0x48, 0xff, 0xc8, 0x48, 0x89, 0x45, 0x00, 0x75, 0x09, 0x48, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x87, 0x28, 0x01, 0x00, 0x00, 0x4c, 0x29, 0xf3, 0x48, 0x83, 0xc3, 0xb8, 0x48, 0xc1, 0xeb, 0x03, 0x41, 0x89, 0x5e, 0x40, 0x31, 0xc0, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xc3, }; static const Hole _BEFORE_ASYNC_WITH_code_holes[17] = { {0x20, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xac}, {0x29, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xb4}, {0x41, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xac}, {0x4a, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xb4}, {0x70, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xbc}, {0x79, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc4}, {0xc2, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xcc}, {0xdd, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xd4}, {0xef, HoleKind_R_X86_64_PC32, HoleValue_DATA, NULL, -0x4}, {0xfa, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xdc}, {0x113, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xd4}, {0x125, HoleKind_R_X86_64_PC32, HoleValue_DATA, NULL, 0x47}, {0x130, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xdc}, {0x14f, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xbc}, {0x176, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xbc}, {0x17d, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xe4}, }; // 0: "'%.200s' object does not support the asynchronous context manager protocol\x00'%.200s' object does not support the asynchronous context manager protocol (missed __aexit__ method)\x00" // b0: // b0: &_PyRuntime+0x0 // b8: &_PyObject_LookupSpecial+0x0 // c0: &_Py_Dealloc+0x0 // c8: &PyObject_CallNoArgs+0x0 // d0: CONTINUE // d8: &PyExc_TypeError+0x0 // e0: &_PyErr_Format+0x0 // e8: EXECUTOR static const unsigned char _BEFORE_ASYNC_WITH_data_body[241] = { 0x27, 0x25, 0x2e, 0x32, 0x30, 0x30, 0x73, 0x27, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x6f, 0x75, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x00, 0x27, 0x25, 0x2e, 0x32, 0x30, 0x30, 0x73, 0x27, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x6f, 0x75, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x20, 0x28, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x20, 0x5f, 0x5f, 0x61, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x5f, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; static const Hole _BEFORE_ASYNC_WITH_data_holes[9] = { {0xb0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyRuntime, 0x0}, {0xb8, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyObject_LookupSpecial, 0x0}, {0xc0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_Py_Dealloc, 0x0}, {0xc8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyObject_CallNoArgs, 0x0}, {0xd0, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, {0xd8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyExc_TypeError, 0x0}, {0xe0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyErr_Format, 0x0}, {0xe8, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, }; // _BEFORE_WITH // // /tmp/tmp2mfmnab2/_BEFORE_WITH.o: file format elf64-x86-64 // // Disassembly of section .text: // // 0000000000000000 <_JIT_ENTRY>: // 0: 55 pushq %rbp // 1: 41 57 pushq %r15 // 3: 41 56 pushq %r14 // 5: 41 55 pushq %r13 // 7: 41 54 pushq %r12 // 9: 53 pushq %rbx // a: 50 pushq %rax // b: 49 89 d7 movq %rdx, %r15 // e: 48 89 f3 movq %rsi, %rbx // 11: 49 89 fe movq %rdi, %r14 // 14: 4c 8b 6e f8 movq -0x8(%rsi), %r13 // 18: be 28 70 00 00 movl $0x7028, %esi # imm = 0x7028 // 1d: 48 03 35 00 00 00 00 addq (%rip), %rsi # 0x24 <_JIT_ENTRY+0x24> // 0000000000000020: R_X86_64_REX_GOTPCRELX _PyRuntime-0x4 // 24: 4c 89 ef movq %r13, %rdi // 27: ff 15 00 00 00 00 callq *(%rip) # 0x2d <_JIT_ENTRY+0x2d> // 0000000000000029: R_X86_64_GOTPCRELX _PyObject_LookupSpecial-0x4 // 2d: 48 85 c0 testq %rax, %rax // 30: 0f 84 90 00 00 00 je 0xc6 <_JIT_ENTRY+0xc6> // 36: 49 89 c4 movq %rax, %r12 // 39: be 90 70 00 00 movl $0x7090, %esi # imm = 0x7090 // 3e: 48 03 35 00 00 00 00 addq (%rip), %rsi # 0x45 <_JIT_ENTRY+0x45> // 0000000000000041: R_X86_64_REX_GOTPCRELX _PyRuntime-0x4 // 45: 4c 89 ef movq %r13, %rdi // 48: ff 15 00 00 00 00 callq *(%rip) # 0x4e <_JIT_ENTRY+0x4e> // 000000000000004a: R_X86_64_GOTPCRELX _PyObject_LookupSpecial-0x4 // 4e: 48 85 c0 testq %rax, %rax // 51: 0f 84 a9 00 00 00 je 0x100 <_JIT_ENTRY+0x100> // 57: 48 89 c5 movq %rax, %rbp // 5a: 49 8b 45 00 movq (%r13), %rax // 5e: 85 c0 testl %eax, %eax // 60: 78 12 js 0x74 <_JIT_ENTRY+0x74> // 62: 48 ff c8 decq %rax // 65: 49 89 45 00 movq %rax, (%r13) // 69: 75 09 jne 0x74 <_JIT_ENTRY+0x74> // 6b: 4c 89 ef movq %r13, %rdi // 6e: ff 15 00 00 00 00 callq *(%rip) # 0x74 <_JIT_ENTRY+0x74> // 0000000000000070: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 // 74: 4c 89 e7 movq %r12, %rdi // 77: ff 15 00 00 00 00 callq *(%rip) # 0x7d <_JIT_ENTRY+0x7d> // 0000000000000079: R_X86_64_GOTPCRELX PyObject_CallNoArgs-0x4 // 7d: 49 89 c5 movq %rax, %r13 // 80: 49 8b 04 24 movq (%r12), %rax // 84: 85 c0 testl %eax, %eax // 86: 78 0d js 0x95 <_JIT_ENTRY+0x95> // 88: 48 ff c8 decq %rax // 8b: 49 89 04 24 movq %rax, (%r12) // 8f: 0f 84 b5 00 00 00 je 0x14a <_JIT_ENTRY+0x14a> // 95: 4d 85 ed testq %r13, %r13 // 98: 0f 84 be 00 00 00 je 0x15c <_JIT_ENTRY+0x15c> // 9e: 48 89 6b f8 movq %rbp, -0x8(%rbx) // a2: 4c 89 2b movq %r13, (%rbx) // a5: 48 83 c3 08 addq $0x8, %rbx // a9: 4c 89 f7 movq %r14, %rdi // ac: 48 89 de movq %rbx, %rsi // af: 4c 89 fa movq %r15, %rdx // b2: 48 83 c4 08 addq $0x8, %rsp // b6: 5b popq %rbx // b7: 41 5c popq %r12 // b9: 41 5d popq %r13 // bb: 41 5e popq %r14 // bd: 41 5f popq %r15 // bf: 5d popq %rbp // c0: ff 25 00 00 00 00 jmpq *(%rip) # 0xc6 <_JIT_ENTRY+0xc6> // 00000000000000c2: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 // c6: 49 8b 47 70 movq 0x70(%r15), %rax // ca: 48 85 c0 testq %rax, %rax // cd: 74 0b je 0xda <_JIT_ENTRY+0xda> // cf: 48 83 78 08 00 cmpq $0x0, 0x8(%rax) // d4: 0f 85 a0 00 00 00 jne 0x17a <_JIT_ENTRY+0x17a> // da: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0xe1 <_JIT_ENTRY+0xe1> // 00000000000000dd: R_X86_64_REX_GOTPCRELX PyExc_TypeError-0x4 // e1: 48 8b 30 movq (%rax), %rsi // e4: 49 8b 45 08 movq 0x8(%r13), %rax // e8: 48 8b 48 18 movq 0x18(%rax), %rcx // ec: 48 8d 15 00 00 00 00 leaq (%rip), %rdx # 0xf3 <_JIT_ENTRY+0xf3> // 00000000000000ef: R_X86_64_PC32 .L.str.17-0x4 // f3: 4c 89 ff movq %r15, %rdi // f6: 31 c0 xorl %eax, %eax // f8: ff 15 00 00 00 00 callq *(%rip) # 0xfe <_JIT_ENTRY+0xfe> // 00000000000000fa: R_X86_64_GOTPCRELX _PyErr_Format-0x4 // fe: eb 7a jmp 0x17a <_JIT_ENTRY+0x17a> // 100: 49 8b 47 70 movq 0x70(%r15), %rax // 104: 48 85 c0 testq %rax, %rax // 107: 74 07 je 0x110 <_JIT_ENTRY+0x110> // 109: 48 83 78 08 00 cmpq $0x0, 0x8(%rax) // 10e: 75 24 jne 0x134 <_JIT_ENTRY+0x134> // 110: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0x117 <_JIT_ENTRY+0x117> // 0000000000000113: R_X86_64_REX_GOTPCRELX PyExc_TypeError-0x4 // 117: 48 8b 30 movq (%rax), %rsi // 11a: 49 8b 45 08 movq 0x8(%r13), %rax // 11e: 48 8b 48 18 movq 0x18(%rax), %rcx // 122: 48 8d 15 00 00 00 00 leaq (%rip), %rdx # 0x129 <_JIT_ENTRY+0x129> // 0000000000000125: R_X86_64_PC32 .L.str.18-0x4 // 129: 4c 89 ff movq %r15, %rdi // 12c: 31 c0 xorl %eax, %eax // 12e: ff 15 00 00 00 00 callq *(%rip) # 0x134 <_JIT_ENTRY+0x134> // 0000000000000130: R_X86_64_GOTPCRELX _PyErr_Format-0x4 // 134: 49 8b 04 24 movq (%r12), %rax // 138: 85 c0 testl %eax, %eax // 13a: 78 3e js 0x17a <_JIT_ENTRY+0x17a> // 13c: 48 ff c8 decq %rax // 13f: 49 89 04 24 movq %rax, (%r12) // 143: 75 35 jne 0x17a <_JIT_ENTRY+0x17a> // 145: 4c 89 e7 movq %r12, %rdi // 148: eb 2a jmp 0x174 <_JIT_ENTRY+0x174> // 14a: 4c 89 e7 movq %r12, %rdi // 14d: ff 15 00 00 00 00 callq *(%rip) # 0x153 <_JIT_ENTRY+0x153> // 000000000000014f: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 // 153: 4d 85 ed testq %r13, %r13 // 156: 0f 85 42 ff ff ff jne 0x9e <_JIT_ENTRY+0x9e> // 15c: 48 83 c3 f8 addq $-0x8, %rbx // 160: 48 8b 45 00 movq (%rbp), %rax // 164: 85 c0 testl %eax, %eax // 166: 78 12 js 0x17a <_JIT_ENTRY+0x17a> // 168: 48 ff c8 decq %rax // 16b: 48 89 45 00 movq %rax, (%rbp) // 16f: 75 09 jne 0x17a <_JIT_ENTRY+0x17a> // 171: 48 89 ef movq %rbp, %rdi // 174: ff 15 00 00 00 00 callq *(%rip) # 0x17a <_JIT_ENTRY+0x17a> // 0000000000000176: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 // 17a: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0x181 <_JIT_ENTRY+0x181> // 000000000000017d: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 // 181: 49 89 87 28 01 00 00 movq %rax, 0x128(%r15) // 188: 4c 29 f3 subq %r14, %rbx // 18b: 48 83 c3 b8 addq $-0x48, %rbx // 18f: 48 c1 eb 03 shrq $0x3, %rbx // 193: 41 89 5e 40 movl %ebx, 0x40(%r14) // 197: 31 c0 xorl %eax, %eax // 199: 48 83 c4 08 addq $0x8, %rsp // 19d: 5b popq %rbx // 19e: 41 5c popq %r12 // 1a0: 41 5d popq %r13 // 1a2: 41 5e popq %r14 // 1a4: 41 5f popq %r15 // 1a6: 5d popq %rbp // 1a7: c3 retq // 1a8: static const unsigned char _BEFORE_WITH_code_body[425] = { 0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x53, 0x50, 0x49, 0x89, 0xd7, 0x48, 0x89, 0xf3, 0x49, 0x89, 0xfe, 0x4c, 0x8b, 0x6e, 0xf8, 0xbe, 0x28, 0x70, 0x00, 0x00, 0x48, 0x03, 0x35, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x0f, 0x84, 0x90, 0x00, 0x00, 0x00, 0x49, 0x89, 0xc4, 0xbe, 0x90, 0x70, 0x00, 0x00, 0x48, 0x03, 0x35, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x0f, 0x84, 0xa9, 0x00, 0x00, 0x00, 0x48, 0x89, 0xc5, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x12, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x45, 0x00, 0x75, 0x09, 0x4c, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xe7, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0xc5, 0x49, 0x8b, 0x04, 0x24, 0x85, 0xc0, 0x78, 0x0d, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x04, 0x24, 0x0f, 0x84, 0xb5, 0x00, 0x00, 0x00, 0x4d, 0x85, 0xed, 0x0f, 0x84, 0xbe, 0x00, 0x00, 0x00, 0x48, 0x89, 0x6b, 0xf8, 0x4c, 0x89, 0x2b, 0x48, 0x83, 0xc3, 0x08, 0x4c, 0x89, 0xf7, 0x48, 0x89, 0xde, 0x4c, 0x89, 0xfa, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x49, 0x8b, 0x47, 0x70, 0x48, 0x85, 0xc0, 0x74, 0x0b, 0x48, 0x83, 0x78, 0x08, 0x00, 0x0f, 0x85, 0xa0, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x30, 0x49, 0x8b, 0x45, 0x08, 0x48, 0x8b, 0x48, 0x18, 0x48, 0x8d, 0x15, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xff, 0x31, 0xc0, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x7a, 0x49, 0x8b, 0x47, 0x70, 0x48, 0x85, 0xc0, 0x74, 0x07, 0x48, 0x83, 0x78, 0x08, 0x00, 0x75, 0x24, 0x48, 0x8b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x30, 0x49, 0x8b, 0x45, 0x08, 0x48, 0x8b, 0x48, 0x18, 0x48, 0x8d, 0x15, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xff, 0x31, 0xc0, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x8b, 0x04, 0x24, 0x85, 0xc0, 0x78, 0x3e, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x04, 0x24, 0x75, 0x35, 0x4c, 0x89, 0xe7, 0xeb, 0x2a, 0x4c, 0x89, 0xe7, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x85, 0xed, 0x0f, 0x85, 0x42, 0xff, 0xff, 0xff, 0x48, 0x83, 0xc3, 0xf8, 0x48, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x12, 0x48, 0xff, 0xc8, 0x48, 0x89, 0x45, 0x00, 0x75, 0x09, 0x48, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x87, 0x28, 0x01, 0x00, 0x00, 0x4c, 0x29, 0xf3, 0x48, 0x83, 0xc3, 0xb8, 0x48, 0xc1, 0xeb, 0x03, 0x41, 0x89, 0x5e, 0x40, 0x31, 0xc0, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xc3, }; static const Hole _BEFORE_WITH_code_holes[17] = { {0x20, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x94}, {0x29, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x9c}, {0x41, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x94}, {0x4a, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x9c}, {0x70, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xa4}, {0x79, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xac}, {0xc2, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xb4}, {0xdd, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xbc}, {0xef, HoleKind_R_X86_64_PC32, HoleValue_DATA, NULL, -0x4}, {0xfa, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc4}, {0x113, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xbc}, {0x125, HoleKind_R_X86_64_PC32, HoleValue_DATA, NULL, 0x3a}, {0x130, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc4}, {0x14f, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xa4}, {0x176, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xa4}, {0x17d, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xcc}, }; // 0: "'%.200s' object does not support the context manager protocol\x00'%.200s' object does not support the context manager protocol (missed __exit__ method)\x00" // 95: 00 00 00 // 98: &_PyRuntime+0x0 // a0: &_PyObject_LookupSpecial+0x0 // a8: &_Py_Dealloc+0x0 // b0: &PyObject_CallNoArgs+0x0 // b8: CONTINUE // c0: &PyExc_TypeError+0x0 // c8: &_PyErr_Format+0x0 // d0: EXECUTOR static const unsigned char _BEFORE_WITH_data_body[217] = { 0x27, 0x25, 0x2e, 0x32, 0x30, 0x30, 0x73, 0x27, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x00, 0x27, 0x25, 0x2e, 0x32, 0x30, 0x30, 0x73, 0x27, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x20, 0x28, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x20, 0x5f, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x5f, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; static const Hole _BEFORE_WITH_data_holes[9] = { {0x98, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyRuntime, 0x0}, {0xa0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyObject_LookupSpecial, 0x0}, {0xa8, HoleKind_R_X86_64_64, HoleValue_ZERO, &_Py_Dealloc, 0x0}, {0xb0, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyObject_CallNoArgs, 0x0}, {0xb8, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, {0xc0, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyExc_TypeError, 0x0}, {0xc8, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyErr_Format, 0x0}, {0xd0, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, }; // _BINARY_OP // // /tmp/tmp2mfmnab2/_BINARY_OP.o: file format elf64-x86-64 // // Disassembly of section .text: // // 0000000000000000 <_JIT_ENTRY>: // 0: 55 pushq %rbp // 1: 41 57 pushq %r15 // 3: 41 56 pushq %r14 // 5: 41 55 pushq %r13 // 7: 41 54 pushq %r12 // 9: 53 pushq %rbx // a: 50 pushq %rax // b: 49 89 d6 movq %rdx, %r14 // e: 49 89 f7 movq %rsi, %r15 // 11: 48 89 fb movq %rdi, %rbx // 14: 48 8b 6e f0 movq -0x10(%rsi), %rbp // 18: 4c 8b 6e f8 movq -0x8(%rsi), %r13 // 1c: 0f b7 05 00 00 00 00 movzwl (%rip), %eax # 0x23 <_JIT_ENTRY+0x23> // 000000000000001f: R_X86_64_GOTPCREL _JIT_OPARG-0x4 // 23: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0x2a <_JIT_ENTRY+0x2a> // 0000000000000026: R_X86_64_REX_GOTPCRELX _PyEval_BinaryOps-0x4 // 2a: 48 89 ef movq %rbp, %rdi // 2d: 4c 89 ee movq %r13, %rsi // 30: ff 14 c1 callq *(%rcx,%rax,8) // 33: 49 89 c4 movq %rax, %r12 // 36: 48 8b 45 00 movq (%rbp), %rax // 3a: 85 c0 testl %eax, %eax // 3c: 78 09 js 0x47 <_JIT_ENTRY+0x47> // 3e: 48 ff c8 decq %rax // 41: 48 89 45 00 movq %rax, (%rbp) // 45: 74 1c je 0x63 <_JIT_ENTRY+0x63> // 47: 49 8b 45 00 movq (%r13), %rax // 4b: 85 c0 testl %eax, %eax // 4d: 78 25 js 0x74 <_JIT_ENTRY+0x74> // 4f: 48 ff c8 decq %rax // 52: 49 89 45 00 movq %rax, (%r13) // 56: 75 1c jne 0x74 <_JIT_ENTRY+0x74> // 58: 4c 89 ef movq %r13, %rdi // 5b: ff 15 00 00 00 00 callq *(%rip) # 0x61 <_JIT_ENTRY+0x61> // 000000000000005d: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 // 61: eb 11 jmp 0x74 <_JIT_ENTRY+0x74> // 63: 48 89 ef movq %rbp, %rdi // 66: ff 15 00 00 00 00 callq *(%rip) # 0x6c <_JIT_ENTRY+0x6c> // 0000000000000068: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 // 6c: 49 8b 45 00 movq (%r13), %rax // 70: 85 c0 testl %eax, %eax // 72: 79 db jns 0x4f <_JIT_ENTRY+0x4f> // 74: 49 8d 47 f0 leaq -0x10(%r15), %rax // 78: 4d 85 e4 testq %r12, %r12 // 7b: 74 24 je 0xa1 <_JIT_ENTRY+0xa1> // 7d: 49 83 c7 f8 addq $-0x8, %r15 // 81: 4c 89 20 movq %r12, (%rax) // 84: 48 89 df movq %rbx, %rdi // 87: 4c 89 fe movq %r15, %rsi // 8a: 4c 89 f2 movq %r14, %rdx // 8d: 48 83 c4 08 addq $0x8, %rsp // 91: 5b popq %rbx // 92: 41 5c popq %r12 // 94: 41 5d popq %r13 // 96: 41 5e popq %r14 // 98: 41 5f popq %r15 // 9a: 5d popq %rbp // 9b: ff 25 00 00 00 00 jmpq *(%rip) # 0xa1 <_JIT_ENTRY+0xa1> // 000000000000009d: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 // a1: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0xa8 <_JIT_ENTRY+0xa8> // 00000000000000a4: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 // a8: 49 89 8e 28 01 00 00 movq %rcx, 0x128(%r14) // af: 48 29 d8 subq %rbx, %rax // b2: 48 83 c0 b8 addq $-0x48, %rax // b6: 48 c1 e8 03 shrq $0x3, %rax // ba: 89 43 40 movl %eax, 0x40(%rbx) // bd: 31 c0 xorl %eax, %eax // bf: 48 83 c4 08 addq $0x8, %rsp // c3: 5b popq %rbx // c4: 41 5c popq %r12 // c6: 41 5d popq %r13 // c8: 41 5e popq %r14 // ca: 41 5f popq %r15 // cc: 5d popq %rbp // cd: c3 retq // ce: static const unsigned char _BINARY_OP_code_body[207] = { 0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x53, 0x50, 0x49, 0x89, 0xd6, 0x49, 0x89, 0xf7, 0x48, 0x89, 0xfb, 0x48, 0x8b, 0x6e, 0xf0, 0x4c, 0x8b, 0x6e, 0xf8, 0x0f, 0xb7, 0x05, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x48, 0x89, 0xef, 0x4c, 0x89, 0xee, 0xff, 0x14, 0xc1, 0x49, 0x89, 0xc4, 0x48, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x09, 0x48, 0xff, 0xc8, 0x48, 0x89, 0x45, 0x00, 0x74, 0x1c, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x25, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x45, 0x00, 0x75, 0x1c, 0x4c, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x11, 0x48, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x79, 0xdb, 0x49, 0x8d, 0x47, 0xf0, 0x4d, 0x85, 0xe4, 0x74, 0x24, 0x49, 0x83, 0xc7, 0xf8, 0x4c, 0x89, 0x20, 0x48, 0x89, 0xdf, 0x4c, 0x89, 0xfe, 0x4c, 0x89, 0xf2, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x8e, 0x28, 0x01, 0x00, 0x00, 0x48, 0x29, 0xd8, 0x48, 0x83, 0xc0, 0xb8, 0x48, 0xc1, 0xe8, 0x03, 0x89, 0x43, 0x40, 0x31, 0xc0, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xc3, }; static const Hole _BINARY_OP_code_holes[7] = { {0x1f, HoleKind_R_X86_64_GOTPCREL, HoleValue_DATA, NULL, -0x4}, {0x26, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, {0x5d, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, {0x68, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, {0x9d, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, {0xa4, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x1c}, }; // 0: // 0: OPARG // 8: &_PyEval_BinaryOps+0x0 // 10: &_Py_Dealloc+0x0 // 18: CONTINUE // 20: EXECUTOR static const unsigned char _BINARY_OP_data_body[41] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; static const Hole _BINARY_OP_data_holes[6] = { {0x0, HoleKind_R_X86_64_64, HoleValue_OPARG, NULL, 0x0}, {0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyEval_BinaryOps, 0x0}, {0x10, HoleKind_R_X86_64_64, HoleValue_ZERO, &_Py_Dealloc, 0x0}, {0x18, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, {0x20, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, }; // _BINARY_OP_ADD_FLOAT // // /tmp/tmp2mfmnab2/_BINARY_OP_ADD_FLOAT.o: file format elf64-x86-64 // // Disassembly of section .text: // // 0000000000000000 <_JIT_ENTRY>: // 0: 41 57 pushq %r15 // 2: 41 56 pushq %r14 // 4: 41 55 pushq %r13 // 6: 41 54 pushq %r12 // 8: 53 pushq %rbx // 9: 49 89 d7 movq %rdx, %r15 // c: 48 89 f3 movq %rsi, %rbx // f: 49 89 fe movq %rdi, %r14 // 12: 4c 8b 6e f0 movq -0x10(%rsi), %r13 // 16: 4c 8b 66 f8 movq -0x8(%rsi), %r12 // 1a: f2 41 0f 10 45 10 movsd 0x10(%r13), %xmm0 # xmm0 = mem[0],zero // 20: f2 41 0f 58 44 24 10 addsd 0x10(%r12), %xmm0 // 27: 49 83 7d 00 01 cmpq $0x1, (%r13) // 2c: 75 22 jne 0x50 <_JIT_ENTRY+0x50> // 2e: f2 41 0f 11 45 10 movsd %xmm0, 0x10(%r13) // 34: 49 8b 04 24 movq (%r12), %rax // 38: 85 c0 testl %eax, %eax // 3a: 78 62 js 0x9e <_JIT_ENTRY+0x9e> // 3c: 48 ff c8 decq %rax // 3f: 49 89 04 24 movq %rax, (%r12) // 43: 75 59 jne 0x9e <_JIT_ENTRY+0x9e> // 45: 4c 89 e7 movq %r12, %rdi // 48: ff 15 00 00 00 00 callq *(%rip) # 0x4e <_JIT_ENTRY+0x4e> // 000000000000004a: R_X86_64_GOTPCRELX _PyFloat_ExactDealloc-0x4 // 4e: eb 4e jmp 0x9e <_JIT_ENTRY+0x9e> // 50: 49 83 3c 24 01 cmpq $0x1, (%r12) // 55: 75 1b jne 0x72 <_JIT_ENTRY+0x72> // 57: f2 41 0f 11 44 24 10 movsd %xmm0, 0x10(%r12) // 5e: 49 8b 45 00 movq (%r13), %rax // 62: 85 c0 testl %eax, %eax // 64: 78 07 js 0x6d <_JIT_ENTRY+0x6d> // 66: 48 ff c8 decq %rax // 69: 49 89 45 00 movq %rax, (%r13) // 6d: 4d 89 e5 movq %r12, %r13 // 70: eb 2c jmp 0x9e <_JIT_ENTRY+0x9e> // 72: ff 15 00 00 00 00 callq *(%rip) # 0x78 <_JIT_ENTRY+0x78> // 0000000000000074: R_X86_64_GOTPCRELX PyFloat_FromDouble-0x4 // 78: 48 85 c0 testq %rax, %rax // 7b: 74 41 je 0xbe <_JIT_ENTRY+0xbe> // 7d: 49 8b 4d 00 movq (%r13), %rcx // 81: 85 c9 testl %ecx, %ecx // 83: 78 07 js 0x8c <_JIT_ENTRY+0x8c> // 85: 48 ff c9 decq %rcx // 88: 49 89 4d 00 movq %rcx, (%r13) // 8c: 49 8b 0c 24 movq (%r12), %rcx // 90: 85 c9 testl %ecx, %ecx // 92: 78 07 js 0x9b <_JIT_ENTRY+0x9b> // 94: 48 ff c9 decq %rcx // 97: 49 89 0c 24 movq %rcx, (%r12) // 9b: 49 89 c5 movq %rax, %r13 // 9e: 4c 89 6b f0 movq %r13, -0x10(%rbx) // a2: 48 83 c3 f8 addq $-0x8, %rbx // a6: 4c 89 f7 movq %r14, %rdi // a9: 48 89 de movq %rbx, %rsi // ac: 4c 89 fa movq %r15, %rdx // af: 5b popq %rbx // b0: 41 5c popq %r12 // b2: 41 5d popq %r13 // b4: 41 5e popq %r14 // b6: 41 5f popq %r15 // b8: ff 25 00 00 00 00 jmpq *(%rip) # 0xbe <_JIT_ENTRY+0xbe> // 00000000000000ba: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 // be: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0xc5 <_JIT_ENTRY+0xc5> // 00000000000000c1: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 // c5: 49 89 87 28 01 00 00 movq %rax, 0x128(%r15) // cc: 4c 29 f3 subq %r14, %rbx // cf: 48 83 c3 b8 addq $-0x48, %rbx // d3: 48 c1 eb 03 shrq $0x3, %rbx // d7: 41 89 5e 40 movl %ebx, 0x40(%r14) // db: 31 c0 xorl %eax, %eax // dd: 5b popq %rbx // de: 41 5c popq %r12 // e0: 41 5d popq %r13 // e2: 41 5e popq %r14 // e4: 41 5f popq %r15 // e6: c3 retq // e7: static const unsigned char _BINARY_OP_ADD_FLOAT_code_body[232] = { 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x53, 0x49, 0x89, 0xd7, 0x48, 0x89, 0xf3, 0x49, 0x89, 0xfe, 0x4c, 0x8b, 0x6e, 0xf0, 0x4c, 0x8b, 0x66, 0xf8, 0xf2, 0x41, 0x0f, 0x10, 0x45, 0x10, 0xf2, 0x41, 0x0f, 0x58, 0x44, 0x24, 0x10, 0x49, 0x83, 0x7d, 0x00, 0x01, 0x75, 0x22, 0xf2, 0x41, 0x0f, 0x11, 0x45, 0x10, 0x49, 0x8b, 0x04, 0x24, 0x85, 0xc0, 0x78, 0x62, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x04, 0x24, 0x75, 0x59, 0x4c, 0x89, 0xe7, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x4e, 0x49, 0x83, 0x3c, 0x24, 0x01, 0x75, 0x1b, 0xf2, 0x41, 0x0f, 0x11, 0x44, 0x24, 0x10, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x07, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x45, 0x00, 0x4d, 0x89, 0xe5, 0xeb, 0x2c, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x74, 0x41, 0x49, 0x8b, 0x4d, 0x00, 0x85, 0xc9, 0x78, 0x07, 0x48, 0xff, 0xc9, 0x49, 0x89, 0x4d, 0x00, 0x49, 0x8b, 0x0c, 0x24, 0x85, 0xc9, 0x78, 0x07, 0x48, 0xff, 0xc9, 0x49, 0x89, 0x0c, 0x24, 0x49, 0x89, 0xc5, 0x4c, 0x89, 0x6b, 0xf0, 0x48, 0x83, 0xc3, 0xf8, 0x4c, 0x89, 0xf7, 0x48, 0x89, 0xde, 0x4c, 0x89, 0xfa, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x87, 0x28, 0x01, 0x00, 0x00, 0x4c, 0x29, 0xf3, 0x48, 0x83, 0xc3, 0xb8, 0x48, 0xc1, 0xeb, 0x03, 0x41, 0x89, 0x5e, 0x40, 0x31, 0xc0, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0xc3, }; static const Hole _BINARY_OP_ADD_FLOAT_code_holes[5] = { {0x4a, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, {0x74, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, {0xba, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, {0xc1, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, }; // 0: // 0: &_PyFloat_ExactDealloc+0x0 // 8: &PyFloat_FromDouble+0x0 // 10: CONTINUE // 18: EXECUTOR static const unsigned char _BINARY_OP_ADD_FLOAT_data_body[33] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; static const Hole _BINARY_OP_ADD_FLOAT_data_holes[5] = { {0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyFloat_ExactDealloc, 0x0}, {0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyFloat_FromDouble, 0x0}, {0x10, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, {0x18, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, }; // _BINARY_OP_ADD_INT // // /tmp/tmp2mfmnab2/_BINARY_OP_ADD_INT.o: file format elf64-x86-64 // // Disassembly of section .text: // // 0000000000000000 <_JIT_ENTRY>: // 0: 55 pushq %rbp // 1: 41 57 pushq %r15 // 3: 41 56 pushq %r14 // 5: 41 55 pushq %r13 // 7: 41 54 pushq %r12 // 9: 53 pushq %rbx // a: 50 pushq %rax // b: 49 89 d6 movq %rdx, %r14 // e: 49 89 f7 movq %rsi, %r15 // 11: 48 89 fb movq %rdi, %rbx // 14: 4c 8b 6e f0 movq -0x10(%rsi), %r13 // 18: 48 8b 6e f8 movq -0x8(%rsi), %rbp // 1c: 4c 89 ef movq %r13, %rdi // 1f: 48 89 ee movq %rbp, %rsi // 22: ff 15 00 00 00 00 callq *(%rip) # 0x28 <_JIT_ENTRY+0x28> // 0000000000000024: R_X86_64_GOTPCRELX _PyLong_Add-0x4 // 28: 49 89 c4 movq %rax, %r12 // 2b: 48 8b 45 00 movq (%rbp), %rax // 2f: 85 c0 testl %eax, %eax // 31: 78 09 js 0x3c <_JIT_ENTRY+0x3c> // 33: 48 ff c8 decq %rax // 36: 48 89 45 00 movq %rax, (%rbp) // 3a: 74 1c je 0x58 <_JIT_ENTRY+0x58> // 3c: 49 8b 45 00 movq (%r13), %rax // 40: 85 c0 testl %eax, %eax // 42: 78 25 js 0x69 <_JIT_ENTRY+0x69> // 44: 48 ff c8 decq %rax // 47: 49 89 45 00 movq %rax, (%r13) // 4b: 75 1c jne 0x69 <_JIT_ENTRY+0x69> // 4d: 4c 89 ef movq %r13, %rdi // 50: ff 15 00 00 00 00 callq *(%rip) # 0x56 <_JIT_ENTRY+0x56> // 0000000000000052: R_X86_64_GOTPCRELX PyObject_Free-0x4 // 56: eb 11 jmp 0x69 <_JIT_ENTRY+0x69> // 58: 48 89 ef movq %rbp, %rdi // 5b: ff 15 00 00 00 00 callq *(%rip) # 0x61 <_JIT_ENTRY+0x61> // 000000000000005d: R_X86_64_GOTPCRELX PyObject_Free-0x4 // 61: 49 8b 45 00 movq (%r13), %rax // 65: 85 c0 testl %eax, %eax // 67: 79 db jns 0x44 <_JIT_ENTRY+0x44> // 69: 49 8d 47 f0 leaq -0x10(%r15), %rax // 6d: 4d 85 e4 testq %r12, %r12 // 70: 74 24 je 0x96 <_JIT_ENTRY+0x96> // 72: 49 83 c7 f8 addq $-0x8, %r15 // 76: 4c 89 20 movq %r12, (%rax) // 79: 48 89 df movq %rbx, %rdi // 7c: 4c 89 fe movq %r15, %rsi // 7f: 4c 89 f2 movq %r14, %rdx // 82: 48 83 c4 08 addq $0x8, %rsp // 86: 5b popq %rbx // 87: 41 5c popq %r12 // 89: 41 5d popq %r13 // 8b: 41 5e popq %r14 // 8d: 41 5f popq %r15 // 8f: 5d popq %rbp // 90: ff 25 00 00 00 00 jmpq *(%rip) # 0x96 <_JIT_ENTRY+0x96> // 0000000000000092: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 // 96: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0x9d <_JIT_ENTRY+0x9d> // 0000000000000099: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 // 9d: 49 89 8e 28 01 00 00 movq %rcx, 0x128(%r14) // a4: 48 29 d8 subq %rbx, %rax // a7: 48 83 c0 b8 addq $-0x48, %rax // ab: 48 c1 e8 03 shrq $0x3, %rax // af: 89 43 40 movl %eax, 0x40(%rbx) // b2: 31 c0 xorl %eax, %eax // b4: 48 83 c4 08 addq $0x8, %rsp // b8: 5b popq %rbx // b9: 41 5c popq %r12 // bb: 41 5d popq %r13 // bd: 41 5e popq %r14 // bf: 41 5f popq %r15 // c1: 5d popq %rbp // c2: c3 retq // c3: static const unsigned char _BINARY_OP_ADD_INT_code_body[196] = { 0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x53, 0x50, 0x49, 0x89, 0xd6, 0x49, 0x89, 0xf7, 0x48, 0x89, 0xfb, 0x4c, 0x8b, 0x6e, 0xf0, 0x48, 0x8b, 0x6e, 0xf8, 0x4c, 0x89, 0xef, 0x48, 0x89, 0xee, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0xc4, 0x48, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x09, 0x48, 0xff, 0xc8, 0x48, 0x89, 0x45, 0x00, 0x74, 0x1c, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x25, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x45, 0x00, 0x75, 0x1c, 0x4c, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x11, 0x48, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x79, 0xdb, 0x49, 0x8d, 0x47, 0xf0, 0x4d, 0x85, 0xe4, 0x74, 0x24, 0x49, 0x83, 0xc7, 0xf8, 0x4c, 0x89, 0x20, 0x48, 0x89, 0xdf, 0x4c, 0x89, 0xfe, 0x4c, 0x89, 0xf2, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x8e, 0x28, 0x01, 0x00, 0x00, 0x48, 0x29, 0xd8, 0x48, 0x83, 0xc0, 0xb8, 0x48, 0xc1, 0xe8, 0x03, 0x89, 0x43, 0x40, 0x31, 0xc0, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xc3, }; static const Hole _BINARY_OP_ADD_INT_code_holes[6] = { {0x24, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, {0x52, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, {0x5d, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, {0x92, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, {0x99, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, }; // 0: // 0: &_PyLong_Add+0x0 // 8: &PyObject_Free+0x0 // 10: CONTINUE // 18: EXECUTOR static const unsigned char _BINARY_OP_ADD_INT_data_body[33] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; static const Hole _BINARY_OP_ADD_INT_data_holes[5] = { {0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyLong_Add, 0x0}, {0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyObject_Free, 0x0}, {0x10, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, {0x18, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, }; // _BINARY_OP_ADD_UNICODE // // /tmp/tmp2mfmnab2/_BINARY_OP_ADD_UNICODE.o: file format elf64-x86-64 // // Disassembly of section .text: // // 0000000000000000 <_JIT_ENTRY>: // 0: 55 pushq %rbp // 1: 41 57 pushq %r15 // 3: 41 56 pushq %r14 // 5: 41 55 pushq %r13 // 7: 41 54 pushq %r12 // 9: 53 pushq %rbx // a: 50 pushq %rax // b: 49 89 d6 movq %rdx, %r14 // e: 49 89 f7 movq %rsi, %r15 // 11: 48 89 fb movq %rdi, %rbx // 14: 48 8b 6e f0 movq -0x10(%rsi), %rbp // 18: 4c 8b 6e f8 movq -0x8(%rsi), %r13 // 1c: 48 89 ef movq %rbp, %rdi // 1f: 4c 89 ee movq %r13, %rsi // 22: ff 15 00 00 00 00 callq *(%rip) # 0x28 <_JIT_ENTRY+0x28> // 0000000000000024: R_X86_64_GOTPCRELX PyUnicode_Concat-0x4 // 28: 49 89 c4 movq %rax, %r12 // 2b: 48 8b 45 00 movq (%rbp), %rax // 2f: 85 c0 testl %eax, %eax // 31: 78 09 js 0x3c <_JIT_ENTRY+0x3c> // 33: 48 ff c8 decq %rax // 36: 48 89 45 00 movq %rax, (%rbp) // 3a: 74 1c je 0x58 <_JIT_ENTRY+0x58> // 3c: 49 8b 45 00 movq (%r13), %rax // 40: 85 c0 testl %eax, %eax // 42: 78 25 js 0x69 <_JIT_ENTRY+0x69> // 44: 48 ff c8 decq %rax // 47: 49 89 45 00 movq %rax, (%r13) // 4b: 75 1c jne 0x69 <_JIT_ENTRY+0x69> // 4d: 4c 89 ef movq %r13, %rdi // 50: ff 15 00 00 00 00 callq *(%rip) # 0x56 <_JIT_ENTRY+0x56> // 0000000000000052: R_X86_64_GOTPCRELX _PyUnicode_ExactDealloc-0x4 // 56: eb 11 jmp 0x69 <_JIT_ENTRY+0x69> // 58: 48 89 ef movq %rbp, %rdi // 5b: ff 15 00 00 00 00 callq *(%rip) # 0x61 <_JIT_ENTRY+0x61> // 000000000000005d: R_X86_64_GOTPCRELX _PyUnicode_ExactDealloc-0x4 // 61: 49 8b 45 00 movq (%r13), %rax // 65: 85 c0 testl %eax, %eax // 67: 79 db jns 0x44 <_JIT_ENTRY+0x44> // 69: 49 8d 47 f0 leaq -0x10(%r15), %rax // 6d: 4d 85 e4 testq %r12, %r12 // 70: 74 24 je 0x96 <_JIT_ENTRY+0x96> // 72: 49 83 c7 f8 addq $-0x8, %r15 // 76: 4c 89 20 movq %r12, (%rax) // 79: 48 89 df movq %rbx, %rdi // 7c: 4c 89 fe movq %r15, %rsi // 7f: 4c 89 f2 movq %r14, %rdx // 82: 48 83 c4 08 addq $0x8, %rsp // 86: 5b popq %rbx // 87: 41 5c popq %r12 // 89: 41 5d popq %r13 // 8b: 41 5e popq %r14 // 8d: 41 5f popq %r15 // 8f: 5d popq %rbp // 90: ff 25 00 00 00 00 jmpq *(%rip) # 0x96 <_JIT_ENTRY+0x96> // 0000000000000092: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 // 96: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0x9d <_JIT_ENTRY+0x9d> // 0000000000000099: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 // 9d: 49 89 8e 28 01 00 00 movq %rcx, 0x128(%r14) // a4: 48 29 d8 subq %rbx, %rax // a7: 48 83 c0 b8 addq $-0x48, %rax // ab: 48 c1 e8 03 shrq $0x3, %rax // af: 89 43 40 movl %eax, 0x40(%rbx) // b2: 31 c0 xorl %eax, %eax // b4: 48 83 c4 08 addq $0x8, %rsp // b8: 5b popq %rbx // b9: 41 5c popq %r12 // bb: 41 5d popq %r13 // bd: 41 5e popq %r14 // bf: 41 5f popq %r15 // c1: 5d popq %rbp // c2: c3 retq // c3: static const unsigned char _BINARY_OP_ADD_UNICODE_code_body[196] = { 0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x53, 0x50, 0x49, 0x89, 0xd6, 0x49, 0x89, 0xf7, 0x48, 0x89, 0xfb, 0x48, 0x8b, 0x6e, 0xf0, 0x4c, 0x8b, 0x6e, 0xf8, 0x48, 0x89, 0xef, 0x4c, 0x89, 0xee, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0xc4, 0x48, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x09, 0x48, 0xff, 0xc8, 0x48, 0x89, 0x45, 0x00, 0x74, 0x1c, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x25, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x45, 0x00, 0x75, 0x1c, 0x4c, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x11, 0x48, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x79, 0xdb, 0x49, 0x8d, 0x47, 0xf0, 0x4d, 0x85, 0xe4, 0x74, 0x24, 0x49, 0x83, 0xc7, 0xf8, 0x4c, 0x89, 0x20, 0x48, 0x89, 0xdf, 0x4c, 0x89, 0xfe, 0x4c, 0x89, 0xf2, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x8e, 0x28, 0x01, 0x00, 0x00, 0x48, 0x29, 0xd8, 0x48, 0x83, 0xc0, 0xb8, 0x48, 0xc1, 0xe8, 0x03, 0x89, 0x43, 0x40, 0x31, 0xc0, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xc3, }; static const Hole _BINARY_OP_ADD_UNICODE_code_holes[6] = { {0x24, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, {0x52, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, {0x5d, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, {0x92, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, {0x99, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, }; // 0: // 0: &PyUnicode_Concat+0x0 // 8: &_PyUnicode_ExactDealloc+0x0 // 10: CONTINUE // 18: EXECUTOR static const unsigned char _BINARY_OP_ADD_UNICODE_data_body[33] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; static const Hole _BINARY_OP_ADD_UNICODE_data_holes[5] = { {0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyUnicode_Concat, 0x0}, {0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyUnicode_ExactDealloc, 0x0}, {0x10, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, {0x18, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, }; // _BINARY_OP_MULTIPLY_FLOAT // // /tmp/tmp2mfmnab2/_BINARY_OP_MULTIPLY_FLOAT.o: file format elf64-x86-64 // // Disassembly of section .text: // // 0000000000000000 <_JIT_ENTRY>: // 0: 41 57 pushq %r15 // 2: 41 56 pushq %r14 // 4: 41 55 pushq %r13 // 6: 41 54 pushq %r12 // 8: 53 pushq %rbx // 9: 49 89 d7 movq %rdx, %r15 // c: 48 89 f3 movq %rsi, %rbx // f: 49 89 fe movq %rdi, %r14 // 12: 4c 8b 6e f0 movq -0x10(%rsi), %r13 // 16: 4c 8b 66 f8 movq -0x8(%rsi), %r12 // 1a: f2 41 0f 10 45 10 movsd 0x10(%r13), %xmm0 # xmm0 = mem[0],zero // 20: f2 41 0f 59 44 24 10 mulsd 0x10(%r12), %xmm0 // 27: 49 83 7d 00 01 cmpq $0x1, (%r13) // 2c: 75 22 jne 0x50 <_JIT_ENTRY+0x50> // 2e: f2 41 0f 11 45 10 movsd %xmm0, 0x10(%r13) // 34: 49 8b 04 24 movq (%r12), %rax // 38: 85 c0 testl %eax, %eax // 3a: 78 62 js 0x9e <_JIT_ENTRY+0x9e> // 3c: 48 ff c8 decq %rax // 3f: 49 89 04 24 movq %rax, (%r12) // 43: 75 59 jne 0x9e <_JIT_ENTRY+0x9e> // 45: 4c 89 e7 movq %r12, %rdi // 48: ff 15 00 00 00 00 callq *(%rip) # 0x4e <_JIT_ENTRY+0x4e> // 000000000000004a: R_X86_64_GOTPCRELX _PyFloat_ExactDealloc-0x4 // 4e: eb 4e jmp 0x9e <_JIT_ENTRY+0x9e> // 50: 49 83 3c 24 01 cmpq $0x1, (%r12) // 55: 75 1b jne 0x72 <_JIT_ENTRY+0x72> // 57: f2 41 0f 11 44 24 10 movsd %xmm0, 0x10(%r12) // 5e: 49 8b 45 00 movq (%r13), %rax // 62: 85 c0 testl %eax, %eax // 64: 78 07 js 0x6d <_JIT_ENTRY+0x6d> // 66: 48 ff c8 decq %rax // 69: 49 89 45 00 movq %rax, (%r13) // 6d: 4d 89 e5 movq %r12, %r13 // 70: eb 2c jmp 0x9e <_JIT_ENTRY+0x9e> // 72: ff 15 00 00 00 00 callq *(%rip) # 0x78 <_JIT_ENTRY+0x78> // 0000000000000074: R_X86_64_GOTPCRELX PyFloat_FromDouble-0x4 // 78: 48 85 c0 testq %rax, %rax // 7b: 74 41 je 0xbe <_JIT_ENTRY+0xbe> // 7d: 49 8b 4d 00 movq (%r13), %rcx // 81: 85 c9 testl %ecx, %ecx // 83: 78 07 js 0x8c <_JIT_ENTRY+0x8c> // 85: 48 ff c9 decq %rcx // 88: 49 89 4d 00 movq %rcx, (%r13) // 8c: 49 8b 0c 24 movq (%r12), %rcx // 90: 85 c9 testl %ecx, %ecx // 92: 78 07 js 0x9b <_JIT_ENTRY+0x9b> // 94: 48 ff c9 decq %rcx // 97: 49 89 0c 24 movq %rcx, (%r12) // 9b: 49 89 c5 movq %rax, %r13 // 9e: 4c 89 6b f0 movq %r13, -0x10(%rbx) // a2: 48 83 c3 f8 addq $-0x8, %rbx // a6: 4c 89 f7 movq %r14, %rdi // a9: 48 89 de movq %rbx, %rsi // ac: 4c 89 fa movq %r15, %rdx // af: 5b popq %rbx // b0: 41 5c popq %r12 // b2: 41 5d popq %r13 // b4: 41 5e popq %r14 // b6: 41 5f popq %r15 // b8: ff 25 00 00 00 00 jmpq *(%rip) # 0xbe <_JIT_ENTRY+0xbe> // 00000000000000ba: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 // be: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0xc5 <_JIT_ENTRY+0xc5> // 00000000000000c1: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 // c5: 49 89 87 28 01 00 00 movq %rax, 0x128(%r15) // cc: 4c 29 f3 subq %r14, %rbx // cf: 48 83 c3 b8 addq $-0x48, %rbx // d3: 48 c1 eb 03 shrq $0x3, %rbx // d7: 41 89 5e 40 movl %ebx, 0x40(%r14) // db: 31 c0 xorl %eax, %eax // dd: 5b popq %rbx // de: 41 5c popq %r12 // e0: 41 5d popq %r13 // e2: 41 5e popq %r14 // e4: 41 5f popq %r15 // e6: c3 retq // e7: static const unsigned char _BINARY_OP_MULTIPLY_FLOAT_code_body[232] = { 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x53, 0x49, 0x89, 0xd7, 0x48, 0x89, 0xf3, 0x49, 0x89, 0xfe, 0x4c, 0x8b, 0x6e, 0xf0, 0x4c, 0x8b, 0x66, 0xf8, 0xf2, 0x41, 0x0f, 0x10, 0x45, 0x10, 0xf2, 0x41, 0x0f, 0x59, 0x44, 0x24, 0x10, 0x49, 0x83, 0x7d, 0x00, 0x01, 0x75, 0x22, 0xf2, 0x41, 0x0f, 0x11, 0x45, 0x10, 0x49, 0x8b, 0x04, 0x24, 0x85, 0xc0, 0x78, 0x62, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x04, 0x24, 0x75, 0x59, 0x4c, 0x89, 0xe7, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x4e, 0x49, 0x83, 0x3c, 0x24, 0x01, 0x75, 0x1b, 0xf2, 0x41, 0x0f, 0x11, 0x44, 0x24, 0x10, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x07, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x45, 0x00, 0x4d, 0x89, 0xe5, 0xeb, 0x2c, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x74, 0x41, 0x49, 0x8b, 0x4d, 0x00, 0x85, 0xc9, 0x78, 0x07, 0x48, 0xff, 0xc9, 0x49, 0x89, 0x4d, 0x00, 0x49, 0x8b, 0x0c, 0x24, 0x85, 0xc9, 0x78, 0x07, 0x48, 0xff, 0xc9, 0x49, 0x89, 0x0c, 0x24, 0x49, 0x89, 0xc5, 0x4c, 0x89, 0x6b, 0xf0, 0x48, 0x83, 0xc3, 0xf8, 0x4c, 0x89, 0xf7, 0x48, 0x89, 0xde, 0x4c, 0x89, 0xfa, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x87, 0x28, 0x01, 0x00, 0x00, 0x4c, 0x29, 0xf3, 0x48, 0x83, 0xc3, 0xb8, 0x48, 0xc1, 0xeb, 0x03, 0x41, 0x89, 0x5e, 0x40, 0x31, 0xc0, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0xc3, }; static const Hole _BINARY_OP_MULTIPLY_FLOAT_code_holes[5] = { {0x4a, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, {0x74, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, {0xba, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, {0xc1, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, }; // 0: // 0: &_PyFloat_ExactDealloc+0x0 // 8: &PyFloat_FromDouble+0x0 // 10: CONTINUE // 18: EXECUTOR static const unsigned char _BINARY_OP_MULTIPLY_FLOAT_data_body[33] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; static const Hole _BINARY_OP_MULTIPLY_FLOAT_data_holes[5] = { {0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyFloat_ExactDealloc, 0x0}, {0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyFloat_FromDouble, 0x0}, {0x10, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, {0x18, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, }; // _BINARY_OP_MULTIPLY_INT // // /tmp/tmp2mfmnab2/_BINARY_OP_MULTIPLY_INT.o: file format elf64-x86-64 // // Disassembly of section .text: // // 0000000000000000 <_JIT_ENTRY>: // 0: 55 pushq %rbp // 1: 41 57 pushq %r15 // 3: 41 56 pushq %r14 // 5: 41 55 pushq %r13 // 7: 41 54 pushq %r12 // 9: 53 pushq %rbx // a: 50 pushq %rax // b: 49 89 d6 movq %rdx, %r14 // e: 49 89 f7 movq %rsi, %r15 // 11: 48 89 fb movq %rdi, %rbx // 14: 4c 8b 6e f0 movq -0x10(%rsi), %r13 // 18: 48 8b 6e f8 movq -0x8(%rsi), %rbp // 1c: 4c 89 ef movq %r13, %rdi // 1f: 48 89 ee movq %rbp, %rsi // 22: ff 15 00 00 00 00 callq *(%rip) # 0x28 <_JIT_ENTRY+0x28> // 0000000000000024: R_X86_64_GOTPCRELX _PyLong_Multiply-0x4 // 28: 49 89 c4 movq %rax, %r12 // 2b: 48 8b 45 00 movq (%rbp), %rax // 2f: 85 c0 testl %eax, %eax // 31: 78 09 js 0x3c <_JIT_ENTRY+0x3c> // 33: 48 ff c8 decq %rax // 36: 48 89 45 00 movq %rax, (%rbp) // 3a: 74 1c je 0x58 <_JIT_ENTRY+0x58> // 3c: 49 8b 45 00 movq (%r13), %rax // 40: 85 c0 testl %eax, %eax // 42: 78 25 js 0x69 <_JIT_ENTRY+0x69> // 44: 48 ff c8 decq %rax // 47: 49 89 45 00 movq %rax, (%r13) // 4b: 75 1c jne 0x69 <_JIT_ENTRY+0x69> // 4d: 4c 89 ef movq %r13, %rdi // 50: ff 15 00 00 00 00 callq *(%rip) # 0x56 <_JIT_ENTRY+0x56> // 0000000000000052: R_X86_64_GOTPCRELX PyObject_Free-0x4 // 56: eb 11 jmp 0x69 <_JIT_ENTRY+0x69> // 58: 48 89 ef movq %rbp, %rdi // 5b: ff 15 00 00 00 00 callq *(%rip) # 0x61 <_JIT_ENTRY+0x61> // 000000000000005d: R_X86_64_GOTPCRELX PyObject_Free-0x4 // 61: 49 8b 45 00 movq (%r13), %rax // 65: 85 c0 testl %eax, %eax // 67: 79 db jns 0x44 <_JIT_ENTRY+0x44> // 69: 49 8d 47 f0 leaq -0x10(%r15), %rax // 6d: 4d 85 e4 testq %r12, %r12 // 70: 74 24 je 0x96 <_JIT_ENTRY+0x96> // 72: 49 83 c7 f8 addq $-0x8, %r15 // 76: 4c 89 20 movq %r12, (%rax) // 79: 48 89 df movq %rbx, %rdi // 7c: 4c 89 fe movq %r15, %rsi // 7f: 4c 89 f2 movq %r14, %rdx // 82: 48 83 c4 08 addq $0x8, %rsp // 86: 5b popq %rbx // 87: 41 5c popq %r12 // 89: 41 5d popq %r13 // 8b: 41 5e popq %r14 // 8d: 41 5f popq %r15 // 8f: 5d popq %rbp // 90: ff 25 00 00 00 00 jmpq *(%rip) # 0x96 <_JIT_ENTRY+0x96> // 0000000000000092: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 // 96: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0x9d <_JIT_ENTRY+0x9d> // 0000000000000099: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 // 9d: 49 89 8e 28 01 00 00 movq %rcx, 0x128(%r14) // a4: 48 29 d8 subq %rbx, %rax // a7: 48 83 c0 b8 addq $-0x48, %rax // ab: 48 c1 e8 03 shrq $0x3, %rax // af: 89 43 40 movl %eax, 0x40(%rbx) // b2: 31 c0 xorl %eax, %eax // b4: 48 83 c4 08 addq $0x8, %rsp // b8: 5b popq %rbx // b9: 41 5c popq %r12 // bb: 41 5d popq %r13 // bd: 41 5e popq %r14 // bf: 41 5f popq %r15 // c1: 5d popq %rbp // c2: c3 retq // c3: static const unsigned char _BINARY_OP_MULTIPLY_INT_code_body[196] = { 0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x53, 0x50, 0x49, 0x89, 0xd6, 0x49, 0x89, 0xf7, 0x48, 0x89, 0xfb, 0x4c, 0x8b, 0x6e, 0xf0, 0x48, 0x8b, 0x6e, 0xf8, 0x4c, 0x89, 0xef, 0x48, 0x89, 0xee, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0xc4, 0x48, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x09, 0x48, 0xff, 0xc8, 0x48, 0x89, 0x45, 0x00, 0x74, 0x1c, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x25, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x45, 0x00, 0x75, 0x1c, 0x4c, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x11, 0x48, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x79, 0xdb, 0x49, 0x8d, 0x47, 0xf0, 0x4d, 0x85, 0xe4, 0x74, 0x24, 0x49, 0x83, 0xc7, 0xf8, 0x4c, 0x89, 0x20, 0x48, 0x89, 0xdf, 0x4c, 0x89, 0xfe, 0x4c, 0x89, 0xf2, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x8e, 0x28, 0x01, 0x00, 0x00, 0x48, 0x29, 0xd8, 0x48, 0x83, 0xc0, 0xb8, 0x48, 0xc1, 0xe8, 0x03, 0x89, 0x43, 0x40, 0x31, 0xc0, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xc3, }; static const Hole _BINARY_OP_MULTIPLY_INT_code_holes[6] = { {0x24, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, {0x52, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, {0x5d, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, {0x92, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, {0x99, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, }; // 0: // 0: &_PyLong_Multiply+0x0 // 8: &PyObject_Free+0x0 // 10: CONTINUE // 18: EXECUTOR static const unsigned char _BINARY_OP_MULTIPLY_INT_data_body[33] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; static const Hole _BINARY_OP_MULTIPLY_INT_data_holes[5] = { {0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyLong_Multiply, 0x0}, {0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyObject_Free, 0x0}, {0x10, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, {0x18, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, }; // _BINARY_OP_SUBTRACT_FLOAT // // /tmp/tmp2mfmnab2/_BINARY_OP_SUBTRACT_FLOAT.o: file format elf64-x86-64 // // Disassembly of section .text: // // 0000000000000000 <_JIT_ENTRY>: // 0: 41 57 pushq %r15 // 2: 41 56 pushq %r14 // 4: 41 55 pushq %r13 // 6: 41 54 pushq %r12 // 8: 53 pushq %rbx // 9: 49 89 d7 movq %rdx, %r15 // c: 48 89 f3 movq %rsi, %rbx // f: 49 89 fe movq %rdi, %r14 // 12: 4c 8b 6e f0 movq -0x10(%rsi), %r13 // 16: 4c 8b 66 f8 movq -0x8(%rsi), %r12 // 1a: f2 41 0f 10 45 10 movsd 0x10(%r13), %xmm0 # xmm0 = mem[0],zero // 20: f2 41 0f 5c 44 24 10 subsd 0x10(%r12), %xmm0 // 27: 49 83 7d 00 01 cmpq $0x1, (%r13) // 2c: 75 22 jne 0x50 <_JIT_ENTRY+0x50> // 2e: f2 41 0f 11 45 10 movsd %xmm0, 0x10(%r13) // 34: 49 8b 04 24 movq (%r12), %rax // 38: 85 c0 testl %eax, %eax // 3a: 78 62 js 0x9e <_JIT_ENTRY+0x9e> // 3c: 48 ff c8 decq %rax // 3f: 49 89 04 24 movq %rax, (%r12) // 43: 75 59 jne 0x9e <_JIT_ENTRY+0x9e> // 45: 4c 89 e7 movq %r12, %rdi // 48: ff 15 00 00 00 00 callq *(%rip) # 0x4e <_JIT_ENTRY+0x4e> // 000000000000004a: R_X86_64_GOTPCRELX _PyFloat_ExactDealloc-0x4 // 4e: eb 4e jmp 0x9e <_JIT_ENTRY+0x9e> // 50: 49 83 3c 24 01 cmpq $0x1, (%r12) // 55: 75 1b jne 0x72 <_JIT_ENTRY+0x72> // 57: f2 41 0f 11 44 24 10 movsd %xmm0, 0x10(%r12) // 5e: 49 8b 45 00 movq (%r13), %rax // 62: 85 c0 testl %eax, %eax // 64: 78 07 js 0x6d <_JIT_ENTRY+0x6d> // 66: 48 ff c8 decq %rax // 69: 49 89 45 00 movq %rax, (%r13) // 6d: 4d 89 e5 movq %r12, %r13 // 70: eb 2c jmp 0x9e <_JIT_ENTRY+0x9e> // 72: ff 15 00 00 00 00 callq *(%rip) # 0x78 <_JIT_ENTRY+0x78> // 0000000000000074: R_X86_64_GOTPCRELX PyFloat_FromDouble-0x4 // 78: 48 85 c0 testq %rax, %rax // 7b: 74 41 je 0xbe <_JIT_ENTRY+0xbe> // 7d: 49 8b 4d 00 movq (%r13), %rcx // 81: 85 c9 testl %ecx, %ecx // 83: 78 07 js 0x8c <_JIT_ENTRY+0x8c> // 85: 48 ff c9 decq %rcx // 88: 49 89 4d 00 movq %rcx, (%r13) // 8c: 49 8b 0c 24 movq (%r12), %rcx // 90: 85 c9 testl %ecx, %ecx // 92: 78 07 js 0x9b <_JIT_ENTRY+0x9b> // 94: 48 ff c9 decq %rcx // 97: 49 89 0c 24 movq %rcx, (%r12) // 9b: 49 89 c5 movq %rax, %r13 // 9e: 4c 89 6b f0 movq %r13, -0x10(%rbx) // a2: 48 83 c3 f8 addq $-0x8, %rbx // a6: 4c 89 f7 movq %r14, %rdi // a9: 48 89 de movq %rbx, %rsi // ac: 4c 89 fa movq %r15, %rdx // af: 5b popq %rbx // b0: 41 5c popq %r12 // b2: 41 5d popq %r13 // b4: 41 5e popq %r14 // b6: 41 5f popq %r15 // b8: ff 25 00 00 00 00 jmpq *(%rip) # 0xbe <_JIT_ENTRY+0xbe> // 00000000000000ba: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 // be: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0xc5 <_JIT_ENTRY+0xc5> // 00000000000000c1: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 // c5: 49 89 87 28 01 00 00 movq %rax, 0x128(%r15) // cc: 4c 29 f3 subq %r14, %rbx // cf: 48 83 c3 b8 addq $-0x48, %rbx // d3: 48 c1 eb 03 shrq $0x3, %rbx // d7: 41 89 5e 40 movl %ebx, 0x40(%r14) // db: 31 c0 xorl %eax, %eax // dd: 5b popq %rbx // de: 41 5c popq %r12 // e0: 41 5d popq %r13 // e2: 41 5e popq %r14 // e4: 41 5f popq %r15 // e6: c3 retq // e7: static const unsigned char _BINARY_OP_SUBTRACT_FLOAT_code_body[232] = { 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x53, 0x49, 0x89, 0xd7, 0x48, 0x89, 0xf3, 0x49, 0x89, 0xfe, 0x4c, 0x8b, 0x6e, 0xf0, 0x4c, 0x8b, 0x66, 0xf8, 0xf2, 0x41, 0x0f, 0x10, 0x45, 0x10, 0xf2, 0x41, 0x0f, 0x5c, 0x44, 0x24, 0x10, 0x49, 0x83, 0x7d, 0x00, 0x01, 0x75, 0x22, 0xf2, 0x41, 0x0f, 0x11, 0x45, 0x10, 0x49, 0x8b, 0x04, 0x24, 0x85, 0xc0, 0x78, 0x62, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x04, 0x24, 0x75, 0x59, 0x4c, 0x89, 0xe7, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x4e, 0x49, 0x83, 0x3c, 0x24, 0x01, 0x75, 0x1b, 0xf2, 0x41, 0x0f, 0x11, 0x44, 0x24, 0x10, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x07, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x45, 0x00, 0x4d, 0x89, 0xe5, 0xeb, 0x2c, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x74, 0x41, 0x49, 0x8b, 0x4d, 0x00, 0x85, 0xc9, 0x78, 0x07, 0x48, 0xff, 0xc9, 0x49, 0x89, 0x4d, 0x00, 0x49, 0x8b, 0x0c, 0x24, 0x85, 0xc9, 0x78, 0x07, 0x48, 0xff, 0xc9, 0x49, 0x89, 0x0c, 0x24, 0x49, 0x89, 0xc5, 0x4c, 0x89, 0x6b, 0xf0, 0x48, 0x83, 0xc3, 0xf8, 0x4c, 0x89, 0xf7, 0x48, 0x89, 0xde, 0x4c, 0x89, 0xfa, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x87, 0x28, 0x01, 0x00, 0x00, 0x4c, 0x29, 0xf3, 0x48, 0x83, 0xc3, 0xb8, 0x48, 0xc1, 0xeb, 0x03, 0x41, 0x89, 0x5e, 0x40, 0x31, 0xc0, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0xc3, }; static const Hole _BINARY_OP_SUBTRACT_FLOAT_code_holes[5] = { {0x4a, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, {0x74, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, {0xba, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, {0xc1, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, }; // 0: // 0: &_PyFloat_ExactDealloc+0x0 // 8: &PyFloat_FromDouble+0x0 // 10: CONTINUE // 18: EXECUTOR static const unsigned char _BINARY_OP_SUBTRACT_FLOAT_data_body[33] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; static const Hole _BINARY_OP_SUBTRACT_FLOAT_data_holes[5] = { {0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyFloat_ExactDealloc, 0x0}, {0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyFloat_FromDouble, 0x0}, {0x10, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, {0x18, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, }; // _BINARY_OP_SUBTRACT_INT // // /tmp/tmp2mfmnab2/_BINARY_OP_SUBTRACT_INT.o: file format elf64-x86-64 // // Disassembly of section .text: // // 0000000000000000 <_JIT_ENTRY>: // 0: 55 pushq %rbp // 1: 41 57 pushq %r15 // 3: 41 56 pushq %r14 // 5: 41 55 pushq %r13 // 7: 41 54 pushq %r12 // 9: 53 pushq %rbx // a: 50 pushq %rax // b: 49 89 d6 movq %rdx, %r14 // e: 49 89 f7 movq %rsi, %r15 // 11: 48 89 fb movq %rdi, %rbx // 14: 4c 8b 6e f0 movq -0x10(%rsi), %r13 // 18: 48 8b 6e f8 movq -0x8(%rsi), %rbp // 1c: 4c 89 ef movq %r13, %rdi // 1f: 48 89 ee movq %rbp, %rsi // 22: ff 15 00 00 00 00 callq *(%rip) # 0x28 <_JIT_ENTRY+0x28> // 0000000000000024: R_X86_64_GOTPCRELX _PyLong_Subtract-0x4 // 28: 49 89 c4 movq %rax, %r12 // 2b: 48 8b 45 00 movq (%rbp), %rax // 2f: 85 c0 testl %eax, %eax // 31: 78 09 js 0x3c <_JIT_ENTRY+0x3c> // 33: 48 ff c8 decq %rax // 36: 48 89 45 00 movq %rax, (%rbp) // 3a: 74 1c je 0x58 <_JIT_ENTRY+0x58> // 3c: 49 8b 45 00 movq (%r13), %rax // 40: 85 c0 testl %eax, %eax // 42: 78 25 js 0x69 <_JIT_ENTRY+0x69> // 44: 48 ff c8 decq %rax // 47: 49 89 45 00 movq %rax, (%r13) // 4b: 75 1c jne 0x69 <_JIT_ENTRY+0x69> // 4d: 4c 89 ef movq %r13, %rdi // 50: ff 15 00 00 00 00 callq *(%rip) # 0x56 <_JIT_ENTRY+0x56> // 0000000000000052: R_X86_64_GOTPCRELX PyObject_Free-0x4 // 56: eb 11 jmp 0x69 <_JIT_ENTRY+0x69> // 58: 48 89 ef movq %rbp, %rdi // 5b: ff 15 00 00 00 00 callq *(%rip) # 0x61 <_JIT_ENTRY+0x61> // 000000000000005d: R_X86_64_GOTPCRELX PyObject_Free-0x4 // 61: 49 8b 45 00 movq (%r13), %rax // 65: 85 c0 testl %eax, %eax // 67: 79 db jns 0x44 <_JIT_ENTRY+0x44> // 69: 49 8d 47 f0 leaq -0x10(%r15), %rax // 6d: 4d 85 e4 testq %r12, %r12 // 70: 74 24 je 0x96 <_JIT_ENTRY+0x96> // 72: 49 83 c7 f8 addq $-0x8, %r15 // 76: 4c 89 20 movq %r12, (%rax) // 79: 48 89 df movq %rbx, %rdi // 7c: 4c 89 fe movq %r15, %rsi // 7f: 4c 89 f2 movq %r14, %rdx // 82: 48 83 c4 08 addq $0x8, %rsp // 86: 5b popq %rbx // 87: 41 5c popq %r12 // 89: 41 5d popq %r13 // 8b: 41 5e popq %r14 // 8d: 41 5f popq %r15 // 8f: 5d popq %rbp // 90: ff 25 00 00 00 00 jmpq *(%rip) # 0x96 <_JIT_ENTRY+0x96> // 0000000000000092: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 // 96: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0x9d <_JIT_ENTRY+0x9d> // 0000000000000099: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 // 9d: 49 89 8e 28 01 00 00 movq %rcx, 0x128(%r14) // a4: 48 29 d8 subq %rbx, %rax // a7: 48 83 c0 b8 addq $-0x48, %rax // ab: 48 c1 e8 03 shrq $0x3, %rax // af: 89 43 40 movl %eax, 0x40(%rbx) // b2: 31 c0 xorl %eax, %eax // b4: 48 83 c4 08 addq $0x8, %rsp // b8: 5b popq %rbx // b9: 41 5c popq %r12 // bb: 41 5d popq %r13 // bd: 41 5e popq %r14 // bf: 41 5f popq %r15 // c1: 5d popq %rbp // c2: c3 retq // c3: static const unsigned char _BINARY_OP_SUBTRACT_INT_code_body[196] = { 0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x53, 0x50, 0x49, 0x89, 0xd6, 0x49, 0x89, 0xf7, 0x48, 0x89, 0xfb, 0x4c, 0x8b, 0x6e, 0xf0, 0x48, 0x8b, 0x6e, 0xf8, 0x4c, 0x89, 0xef, 0x48, 0x89, 0xee, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0xc4, 0x48, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x09, 0x48, 0xff, 0xc8, 0x48, 0x89, 0x45, 0x00, 0x74, 0x1c, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x25, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x45, 0x00, 0x75, 0x1c, 0x4c, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x11, 0x48, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x79, 0xdb, 0x49, 0x8d, 0x47, 0xf0, 0x4d, 0x85, 0xe4, 0x74, 0x24, 0x49, 0x83, 0xc7, 0xf8, 0x4c, 0x89, 0x20, 0x48, 0x89, 0xdf, 0x4c, 0x89, 0xfe, 0x4c, 0x89, 0xf2, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x8e, 0x28, 0x01, 0x00, 0x00, 0x48, 0x29, 0xd8, 0x48, 0x83, 0xc0, 0xb8, 0x48, 0xc1, 0xe8, 0x03, 0x89, 0x43, 0x40, 0x31, 0xc0, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xc3, }; static const Hole _BINARY_OP_SUBTRACT_INT_code_holes[6] = { {0x24, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, {0x52, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, {0x5d, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, {0x92, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, {0x99, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, }; // 0: // 0: &_PyLong_Subtract+0x0 // 8: &PyObject_Free+0x0 // 10: CONTINUE // 18: EXECUTOR static const unsigned char _BINARY_OP_SUBTRACT_INT_data_body[33] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; static const Hole _BINARY_OP_SUBTRACT_INT_data_holes[5] = { {0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyLong_Subtract, 0x0}, {0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyObject_Free, 0x0}, {0x10, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, {0x18, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, }; // _BINARY_SLICE // // /tmp/tmp2mfmnab2/_BINARY_SLICE.o: file format elf64-x86-64 // // Disassembly of section .text: // // 0000000000000000 <_JIT_ENTRY>: // 0: 55 pushq %rbp // 1: 41 57 pushq %r15 // 3: 41 56 pushq %r14 // 5: 41 55 pushq %r13 // 7: 41 54 pushq %r12 // 9: 53 pushq %rbx // a: 50 pushq %rax // b: 49 89 d6 movq %rdx, %r14 // e: 49 89 f7 movq %rsi, %r15 // 11: 48 89 fb movq %rdi, %rbx // 14: 48 8b 76 f8 movq -0x8(%rsi), %rsi // 18: 4d 8b 67 e8 movq -0x18(%r15), %r12 // 1c: 49 8b 7f f0 movq -0x10(%r15), %rdi // 20: ff 15 00 00 00 00 callq *(%rip) # 0x26 <_JIT_ENTRY+0x26> // 0000000000000022: R_X86_64_GOTPCRELX _PyBuildSlice_ConsumeRefs-0x4 // 26: 48 85 c0 testq %rax, %rax // 29: 74 2e je 0x59 <_JIT_ENTRY+0x59> // 2b: 48 89 c5 movq %rax, %rbp // 2e: 4c 89 e7 movq %r12, %rdi // 31: 48 89 c6 movq %rax, %rsi // 34: ff 15 00 00 00 00 callq *(%rip) # 0x3a <_JIT_ENTRY+0x3a> // 0000000000000036: R_X86_64_GOTPCRELX PyObject_GetItem-0x4 // 3a: 49 89 c5 movq %rax, %r13 // 3d: 48 8b 45 00 movq (%rbp), %rax // 41: 85 c0 testl %eax, %eax // 43: 78 17 js 0x5c <_JIT_ENTRY+0x5c> // 45: 48 ff c8 decq %rax // 48: 48 89 45 00 movq %rax, (%rbp) // 4c: 75 0e jne 0x5c <_JIT_ENTRY+0x5c> // 4e: 48 89 ef movq %rbp, %rdi // 51: ff 15 00 00 00 00 callq *(%rip) # 0x57 <_JIT_ENTRY+0x57> // 0000000000000053: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 // 57: eb 03 jmp 0x5c <_JIT_ENTRY+0x5c> // 59: 45 31 ed xorl %r13d, %r13d // 5c: 49 8b 04 24 movq (%r12), %rax // 60: 85 c0 testl %eax, %eax // 62: 78 09 js 0x6d <_JIT_ENTRY+0x6d> // 64: 48 ff c8 decq %rax // 67: 49 89 04 24 movq %rax, (%r12) // 6b: 74 2d je 0x9a <_JIT_ENTRY+0x9a> // 6d: 49 8d 47 e8 leaq -0x18(%r15), %rax // 71: 4d 85 ed testq %r13, %r13 // 74: 74 36 je 0xac <_JIT_ENTRY+0xac> // 76: 49 83 c7 f0 addq $-0x10, %r15 // 7a: 4c 89 28 movq %r13, (%rax) // 7d: 48 89 df movq %rbx, %rdi // 80: 4c 89 fe movq %r15, %rsi // 83: 4c 89 f2 movq %r14, %rdx // 86: 48 83 c4 08 addq $0x8, %rsp // 8a: 5b popq %rbx // 8b: 41 5c popq %r12 // 8d: 41 5d popq %r13 // 8f: 41 5e popq %r14 // 91: 41 5f popq %r15 // 93: 5d popq %rbp // 94: ff 25 00 00 00 00 jmpq *(%rip) # 0x9a <_JIT_ENTRY+0x9a> // 0000000000000096: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 // 9a: 4c 89 e7 movq %r12, %rdi // 9d: ff 15 00 00 00 00 callq *(%rip) # 0xa3 <_JIT_ENTRY+0xa3> // 000000000000009f: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 // a3: 49 8d 47 e8 leaq -0x18(%r15), %rax // a7: 4d 85 ed testq %r13, %r13 // aa: 75 ca jne 0x76 <_JIT_ENTRY+0x76> // ac: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0xb3 <_JIT_ENTRY+0xb3> // 00000000000000af: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 // b3: 49 89 8e 28 01 00 00 movq %rcx, 0x128(%r14) // ba: 48 29 d8 subq %rbx, %rax // bd: 48 83 c0 b8 addq $-0x48, %rax // c1: 48 c1 e8 03 shrq $0x3, %rax // c5: 89 43 40 movl %eax, 0x40(%rbx) // c8: 31 c0 xorl %eax, %eax // ca: 48 83 c4 08 addq $0x8, %rsp // ce: 5b popq %rbx // cf: 41 5c popq %r12 // d1: 41 5d popq %r13 // d3: 41 5e popq %r14 // d5: 41 5f popq %r15 // d7: 5d popq %rbp // d8: c3 retq // d9: static const unsigned char _BINARY_SLICE_code_body[218] = { 0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x53, 0x50, 0x49, 0x89, 0xd6, 0x49, 0x89, 0xf7, 0x48, 0x89, 0xfb, 0x48, 0x8b, 0x76, 0xf8, 0x4d, 0x8b, 0x67, 0xe8, 0x49, 0x8b, 0x7f, 0xf0, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x74, 0x2e, 0x48, 0x89, 0xc5, 0x4c, 0x89, 0xe7, 0x48, 0x89, 0xc6, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0xc5, 0x48, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x17, 0x48, 0xff, 0xc8, 0x48, 0x89, 0x45, 0x00, 0x75, 0x0e, 0x48, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x03, 0x45, 0x31, 0xed, 0x49, 0x8b, 0x04, 0x24, 0x85, 0xc0, 0x78, 0x09, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x04, 0x24, 0x74, 0x2d, 0x49, 0x8d, 0x47, 0xe8, 0x4d, 0x85, 0xed, 0x74, 0x36, 0x49, 0x83, 0xc7, 0xf0, 0x4c, 0x89, 0x28, 0x48, 0x89, 0xdf, 0x4c, 0x89, 0xfe, 0x4c, 0x89, 0xf2, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xe7, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x8d, 0x47, 0xe8, 0x4d, 0x85, 0xed, 0x75, 0xca, 0x48, 0x8b, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x8e, 0x28, 0x01, 0x00, 0x00, 0x48, 0x29, 0xd8, 0x48, 0x83, 0xc0, 0xb8, 0x48, 0xc1, 0xe8, 0x03, 0x89, 0x43, 0x40, 0x31, 0xc0, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xc3, }; static const Hole _BINARY_SLICE_code_holes[7] = { {0x22, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, {0x36, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, {0x53, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, {0x96, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, {0x9f, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, {0xaf, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x1c}, }; // 0: // 0: &_PyBuildSlice_ConsumeRefs+0x0 // 8: &PyObject_GetItem+0x0 // 10: &_Py_Dealloc+0x0 // 18: CONTINUE // 20: EXECUTOR static const unsigned char _BINARY_SLICE_data_body[41] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; static const Hole _BINARY_SLICE_data_holes[6] = { {0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyBuildSlice_ConsumeRefs, 0x0}, {0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyObject_GetItem, 0x0}, {0x10, HoleKind_R_X86_64_64, HoleValue_ZERO, &_Py_Dealloc, 0x0}, {0x18, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, {0x20, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, }; // _BINARY_SUBSCR // // /tmp/tmp2mfmnab2/_BINARY_SUBSCR.o: file format elf64-x86-64 // // Disassembly of section .text: // // 0000000000000000 <_JIT_ENTRY>: // 0: 55 pushq %rbp // 1: 41 57 pushq %r15 // 3: 41 56 pushq %r14 // 5: 41 55 pushq %r13 // 7: 41 54 pushq %r12 // 9: 53 pushq %rbx // a: 50 pushq %rax // b: 49 89 d6 movq %rdx, %r14 // e: 49 89 f7 movq %rsi, %r15 // 11: 48 89 fb movq %rdi, %rbx // 14: 48 8b 6e f0 movq -0x10(%rsi), %rbp // 18: 4c 8b 6e f8 movq -0x8(%rsi), %r13 // 1c: 48 89 ef movq %rbp, %rdi // 1f: 4c 89 ee movq %r13, %rsi // 22: ff 15 00 00 00 00 callq *(%rip) # 0x28 <_JIT_ENTRY+0x28> // 0000000000000024: R_X86_64_GOTPCRELX PyObject_GetItem-0x4 // 28: 49 89 c4 movq %rax, %r12 // 2b: 48 8b 45 00 movq (%rbp), %rax // 2f: 85 c0 testl %eax, %eax // 31: 78 09 js 0x3c <_JIT_ENTRY+0x3c> // 33: 48 ff c8 decq %rax // 36: 48 89 45 00 movq %rax, (%rbp) // 3a: 74 1c je 0x58 <_JIT_ENTRY+0x58> // 3c: 49 8b 45 00 movq (%r13), %rax // 40: 85 c0 testl %eax, %eax // 42: 78 25 js 0x69 <_JIT_ENTRY+0x69> // 44: 48 ff c8 decq %rax // 47: 49 89 45 00 movq %rax, (%r13) // 4b: 75 1c jne 0x69 <_JIT_ENTRY+0x69> // 4d: 4c 89 ef movq %r13, %rdi // 50: ff 15 00 00 00 00 callq *(%rip) # 0x56 <_JIT_ENTRY+0x56> // 0000000000000052: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 // 56: eb 11 jmp 0x69 <_JIT_ENTRY+0x69> // 58: 48 89 ef movq %rbp, %rdi // 5b: ff 15 00 00 00 00 callq *(%rip) # 0x61 <_JIT_ENTRY+0x61> // 000000000000005d: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 // 61: 49 8b 45 00 movq (%r13), %rax // 65: 85 c0 testl %eax, %eax // 67: 79 db jns 0x44 <_JIT_ENTRY+0x44> // 69: 49 8d 47 f0 leaq -0x10(%r15), %rax // 6d: 4d 85 e4 testq %r12, %r12 // 70: 74 24 je 0x96 <_JIT_ENTRY+0x96> // 72: 49 83 c7 f8 addq $-0x8, %r15 // 76: 4c 89 20 movq %r12, (%rax) // 79: 48 89 df movq %rbx, %rdi // 7c: 4c 89 fe movq %r15, %rsi // 7f: 4c 89 f2 movq %r14, %rdx // 82: 48 83 c4 08 addq $0x8, %rsp // 86: 5b popq %rbx // 87: 41 5c popq %r12 // 89: 41 5d popq %r13 // 8b: 41 5e popq %r14 // 8d: 41 5f popq %r15 // 8f: 5d popq %rbp // 90: ff 25 00 00 00 00 jmpq *(%rip) # 0x96 <_JIT_ENTRY+0x96> // 0000000000000092: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 // 96: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0x9d <_JIT_ENTRY+0x9d> // 0000000000000099: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 // 9d: 49 89 8e 28 01 00 00 movq %rcx, 0x128(%r14) // a4: 48 29 d8 subq %rbx, %rax // a7: 48 83 c0 b8 addq $-0x48, %rax // ab: 48 c1 e8 03 shrq $0x3, %rax // af: 89 43 40 movl %eax, 0x40(%rbx) // b2: 31 c0 xorl %eax, %eax // b4: 48 83 c4 08 addq $0x8, %rsp // b8: 5b popq %rbx // b9: 41 5c popq %r12 // bb: 41 5d popq %r13 // bd: 41 5e popq %r14 // bf: 41 5f popq %r15 // c1: 5d popq %rbp // c2: c3 retq // c3: static const unsigned char _BINARY_SUBSCR_code_body[196] = { 0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x53, 0x50, 0x49, 0x89, 0xd6, 0x49, 0x89, 0xf7, 0x48, 0x89, 0xfb, 0x48, 0x8b, 0x6e, 0xf0, 0x4c, 0x8b, 0x6e, 0xf8, 0x48, 0x89, 0xef, 0x4c, 0x89, 0xee, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0xc4, 0x48, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x09, 0x48, 0xff, 0xc8, 0x48, 0x89, 0x45, 0x00, 0x74, 0x1c, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x25, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x45, 0x00, 0x75, 0x1c, 0x4c, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x11, 0x48, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x79, 0xdb, 0x49, 0x8d, 0x47, 0xf0, 0x4d, 0x85, 0xe4, 0x74, 0x24, 0x49, 0x83, 0xc7, 0xf8, 0x4c, 0x89, 0x20, 0x48, 0x89, 0xdf, 0x4c, 0x89, 0xfe, 0x4c, 0x89, 0xf2, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x8e, 0x28, 0x01, 0x00, 0x00, 0x48, 0x29, 0xd8, 0x48, 0x83, 0xc0, 0xb8, 0x48, 0xc1, 0xe8, 0x03, 0x89, 0x43, 0x40, 0x31, 0xc0, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xc3, }; static const Hole _BINARY_SUBSCR_code_holes[6] = { {0x24, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4},

Read the original on gist.github.com ↗