Skip to content

Instantly share code, notes, and snippets.

@brandtbucher
Created March 8, 2024 22:11
Show Gist options
  • Save brandtbucher/9d3cc396dcb15d13f7e971175e987f3a to your computer and use it in GitHub Desktop.
Save brandtbucher/9d3cc396dcb15d13f7e971175e987f3a to your computer and use it in GitHub Desktop.
x86_64-unknown-linux-gnu
This file has been truncated, but you can view the full file.
// 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},
{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: &PyObject_GetItem+0x0
// 8: &_Py_Dealloc+0x0
// 10: CONTINUE
// 18: EXECUTOR
static const unsigned char _BINARY_SUBSCR_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_SUBSCR_data_holes[5] = {
{0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyObject_GetItem, 0x0},
{0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &_Py_Dealloc, 0x0},
{0x10, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0},
{0x18, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0},
};
// _BINARY_SUBSCR_DICT
//
// /tmp/tmp2mfmnab2/_BINARY_SUBSCR_DICT.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: 49 89 f6 movq %rsi, %r14
// 11: 48 89 fb movq %rdi, %rbx
// 14: 4c 8b 6e f0 movq -0x10(%rsi), %r13
// 18: 49 8b 45 08 movq 0x8(%r13), %rax
// 1c: 48 3b 05 00 00 00 00 cmpq (%rip), %rax # 0x23 <_JIT_ENTRY+0x23>
// 000000000000001f: R_X86_64_REX_GOTPCRELX PyDict_Type-0x4
// 23: 74 3f je 0x64 <_JIT_ENTRY+0x64>
// 25: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0x2c <_JIT_ENTRY+0x2c>
// 0000000000000028: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4
// 2c: 49 89 87 28 01 00 00 movq %rax, 0x128(%r15)
// 33: 49 29 de subq %rbx, %r14
// 36: 49 83 c6 b8 addq $-0x48, %r14
// 3a: 49 c1 ee 03 shrq $0x3, %r14
// 3e: 44 89 73 40 movl %r14d, 0x40(%rbx)
// 42: 48 8b 03 movq (%rbx), %rax
// 45: 8b 0d 00 00 00 00 movl (%rip), %ecx # 0x4b <_JIT_ENTRY+0x4b>
// 0000000000000047: R_X86_64_GOTPCRELX _JIT_TARGET-0x4
// 4b: 48 8d 04 48 leaq (%rax,%rcx,2), %rax
// 4f: 48 05 c8 00 00 00 addq $0xc8, %rax
// 55: 48 83 c4 08 addq $0x8, %rsp
// 59: 5b popq %rbx
// 5a: 41 5c popq %r12
// 5c: 41 5d popq %r13
// 5e: 41 5e popq %r14
// 60: 41 5f popq %r15
// 62: 5d popq %rbp
// 63: c3 retq
// 64: 4d 8b 66 f8 movq -0x8(%r14), %r12
// 68: 48 89 e2 movq %rsp, %rdx
// 6b: 4c 89 ef movq %r13, %rdi
// 6e: 4c 89 e6 movq %r12, %rsi
// 71: ff 15 00 00 00 00 callq *(%rip) # 0x77 <_JIT_ENTRY+0x77>
// 0000000000000073: R_X86_64_GOTPCRELX PyDict_GetItemRef-0x4
// 77: 89 c5 movl %eax, %ebp
// 79: 85 c0 testl %eax, %eax
// 7b: 74 0a je 0x87 <_JIT_ENTRY+0x87>
// 7d: 49 8b 45 00 movq (%r13), %rax
// 81: 85 c0 testl %eax, %eax
// 83: 79 13 jns 0x98 <_JIT_ENTRY+0x98>
// 85: eb 23 jmp 0xaa <_JIT_ENTRY+0xaa>
// 87: 4c 89 e7 movq %r12, %rdi
// 8a: ff 15 00 00 00 00 callq *(%rip) # 0x90 <_JIT_ENTRY+0x90>
// 000000000000008c: R_X86_64_GOTPCRELX _PyErr_SetKeyError-0x4
// 90: 49 8b 45 00 movq (%r13), %rax
// 94: 85 c0 testl %eax, %eax
// 96: 78 12 js 0xaa <_JIT_ENTRY+0xaa>
// 98: 48 ff c8 decq %rax
// 9b: 49 89 45 00 movq %rax, (%r13)
// 9f: 75 09 jne 0xaa <_JIT_ENTRY+0xaa>
// a1: 4c 89 ef movq %r13, %rdi
// a4: ff 15 00 00 00 00 callq *(%rip) # 0xaa <_JIT_ENTRY+0xaa>
// 00000000000000a6: R_X86_64_GOTPCRELX _Py_Dealloc-0x4
// aa: 49 8b 04 24 movq (%r12), %rax
// ae: 85 c0 testl %eax, %eax
// b0: 78 09 js 0xbb <_JIT_ENTRY+0xbb>
// b2: 48 ff c8 decq %rax
// b5: 49 89 04 24 movq %rax, (%r12)
// b9: 74 30 je 0xeb <_JIT_ENTRY+0xeb>
// bb: 49 8d 46 f0 leaq -0x10(%r14), %rax
// bf: 85 ed testl %ebp, %ebp
// c1: 7e 39 jle 0xfc <_JIT_ENTRY+0xfc>
// c3: 49 83 c6 f8 addq $-0x8, %r14
// c7: 48 8b 0c 24 movq (%rsp), %rcx
// cb: 48 89 08 movq %rcx, (%rax)
// ce: 48 89 df movq %rbx, %rdi
// d1: 4c 89 f6 movq %r14, %rsi
// d4: 4c 89 fa movq %r15, %rdx
// d7: 48 83 c4 08 addq $0x8, %rsp
// db: 5b popq %rbx
// dc: 41 5c popq %r12
// de: 41 5d popq %r13
// e0: 41 5e popq %r14
// e2: 41 5f popq %r15
// e4: 5d popq %rbp
// e5: ff 25 00 00 00 00 jmpq *(%rip) # 0xeb <_JIT_ENTRY+0xeb>
// 00000000000000e7: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4
// eb: 4c 89 e7 movq %r12, %rdi
// ee: ff 15 00 00 00 00 callq *(%rip) # 0xf4 <_JIT_ENTRY+0xf4>
// 00000000000000f0: R_X86_64_GOTPCRELX _Py_Dealloc-0x4
// f4: 49 8d 46 f0 leaq -0x10(%r14), %rax
// f8: 85 ed testl %ebp, %ebp
// fa: 7f c7 jg 0xc3 <_JIT_ENTRY+0xc3>
// fc: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0x103 <_JIT_ENTRY+0x103>
// 00000000000000ff: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4
// 103: 49 89 8f 28 01 00 00 movq %rcx, 0x128(%r15)
// 10a: 48 29 d8 subq %rbx, %rax
// 10d: 48 83 c0 b8 addq $-0x48, %rax
// 111: 48 c1 e8 03 shrq $0x3, %rax
// 115: 89 43 40 movl %eax, 0x40(%rbx)
// 118: 31 c0 xorl %eax, %eax
// 11a: e9 36 ff ff ff jmp 0x55 <_JIT_ENTRY+0x55>
// 11f:
static const unsigned char _BINARY_SUBSCR_DICT_code_body[288] = {
0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41,
0x54, 0x53, 0x50, 0x49, 0x89, 0xd7, 0x49, 0x89,
0xf6, 0x48, 0x89, 0xfb, 0x4c, 0x8b, 0x6e, 0xf0,
0x49, 0x8b, 0x45, 0x08, 0x48, 0x3b, 0x05, 0x00,
0x00, 0x00, 0x00, 0x74, 0x3f, 0x48, 0x8b, 0x05,
0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x87, 0x28,
0x01, 0x00, 0x00, 0x49, 0x29, 0xde, 0x49, 0x83,
0xc6, 0xb8, 0x49, 0xc1, 0xee, 0x03, 0x44, 0x89,
0x73, 0x40, 0x48, 0x8b, 0x03, 0x8b, 0x0d, 0x00,
0x00, 0x00, 0x00, 0x48, 0x8d, 0x04, 0x48, 0x48,
0x05, 0xc8, 0x00, 0x00, 0x00, 0x48, 0x83, 0xc4,
0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e,
0x41, 0x5f, 0x5d, 0xc3, 0x4d, 0x8b, 0x66, 0xf8,
0x48, 0x89, 0xe2, 0x4c, 0x89, 0xef, 0x4c, 0x89,
0xe6, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x89,
0xc5, 0x85, 0xc0, 0x74, 0x0a, 0x49, 0x8b, 0x45,
0x00, 0x85, 0xc0, 0x79, 0x13, 0xeb, 0x23, 0x4c,
0x89, 0xe7, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00,
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, 0x49, 0x8b, 0x04, 0x24, 0x85, 0xc0,
0x78, 0x09, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x04,
0x24, 0x74, 0x30, 0x49, 0x8d, 0x46, 0xf0, 0x85,
0xed, 0x7e, 0x39, 0x49, 0x83, 0xc6, 0xf8, 0x48,
0x8b, 0x0c, 0x24, 0x48, 0x89, 0x08, 0x48, 0x89,
0xdf, 0x4c, 0x89, 0xf6, 0x4c, 0x89, 0xfa, 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, 0x46, 0xf0,
0x85, 0xed, 0x7f, 0xc7, 0x48, 0x8b, 0x0d, 0x00,
0x00, 0x00, 0x00, 0x49, 0x89, 0x8f, 0x28, 0x01,
0x00, 0x00, 0x48, 0x29, 0xd8, 0x48, 0x83, 0xc0,
0xb8, 0x48, 0xc1, 0xe8, 0x03, 0x89, 0x43, 0x40,
0x31, 0xc0, 0xe9, 0x36, 0xff, 0xff, 0xff,
};
static const Hole _BINARY_SUBSCR_DICT_code_holes[10] = {
{0x1f, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, -0x4},
{0x28, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x4},
{0x47, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc},
{0x73, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x14},
{0x8c, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x1c},
{0xa6, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x24},
{0xe7, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x2c},
{0xf0, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x24},
{0xff, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x4},
};
// 0:
// 0: &PyDict_Type+0x0
// 8: EXECUTOR
// 10: TARGET
// 18: &PyDict_GetItemRef+0x0
// 20: &_PyErr_SetKeyError+0x0
// 28: &_Py_Dealloc+0x0
// 30: CONTINUE
static const unsigned char _BINARY_SUBSCR_DICT_data_body[57] = {
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 _BINARY_SUBSCR_DICT_data_holes[8] = {
{0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyDict_Type, 0x0},
{0x8, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0},
{0x10, HoleKind_R_X86_64_64, HoleValue_TARGET, NULL, 0x0},
{0x18, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyDict_GetItemRef, 0x0},
{0x20, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyErr_SetKeyError, 0x0},
{0x28, HoleKind_R_X86_64_64, HoleValue_ZERO, &_Py_Dealloc, 0x0},
{0x30, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0},
};
// _BINARY_SUBSCR_LIST_INT
//
// /tmp/tmp2mfmnab2/_BINARY_SUBSCR_LIST_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 d7 movq %rdx, %r15
// e: 49 89 f6 movq %rsi, %r14
// 11: 48 89 fb movq %rdi, %rbx
// 14: 48 8b 7e f8 movq -0x8(%rsi), %rdi
// 18: 48 8b 47 08 movq 0x8(%rdi), %rax
// 1c: 48 3b 05 00 00 00 00 cmpq (%rip), %rax # 0x23 <_JIT_ENTRY+0x23>
// 000000000000001f: R_X86_64_REX_GOTPCRELX PyLong_Type-0x4
// 23: 0f 85 8a 00 00 00 jne 0xb3 <_JIT_ENTRY+0xb3>
// 29: 4d 8b 66 f0 movq -0x10(%r14), %r12
// 2d: 49 8b 44 24 08 movq 0x8(%r12), %rax
// 32: 48 3b 05 00 00 00 00 cmpq (%rip), %rax # 0x39 <_JIT_ENTRY+0x39>
// 0000000000000035: R_X86_64_REX_GOTPCRELX PyList_Type-0x4
// 39: 75 78 jne 0xb3 <_JIT_ENTRY+0xb3>
// 3b: 48 83 7f 10 08 cmpq $0x8, 0x10(%rdi)
// 40: 77 71 ja 0xb3 <_JIT_ENTRY+0xb3>
// 42: 8b 47 18 movl 0x18(%rdi), %eax
// 45: 49 39 44 24 10 cmpq %rax, 0x10(%r12)
// 4a: 7e 67 jle 0xb3 <_JIT_ENTRY+0xb3>
// 4c: 49 8b 4c 24 18 movq 0x18(%r12), %rcx
// 51: 48 8b 2c c1 movq (%rcx,%rax,8), %rbp
// 55: 8b 45 00 movl (%rbp), %eax
// 58: ff c0 incl %eax
// 5a: 74 03 je 0x5f <_JIT_ENTRY+0x5f>
// 5c: 89 45 00 movl %eax, (%rbp)
// 5f: 48 8b 07 movq (%rdi), %rax
// 62: 85 c0 testl %eax, %eax
// 64: 78 0e js 0x74 <_JIT_ENTRY+0x74>
// 66: 48 ff c8 decq %rax
// 69: 48 89 07 movq %rax, (%rdi)
// 6c: 75 06 jne 0x74 <_JIT_ENTRY+0x74>
// 6e: ff 15 00 00 00 00 callq *(%rip) # 0x74 <_JIT_ENTRY+0x74>
// 0000000000000070: R_X86_64_GOTPCRELX PyObject_Free-0x4
// 74: 4d 8d 6e f8 leaq -0x8(%r14), %r13
// 78: 49 8b 04 24 movq (%r12), %rax
// 7c: 85 c0 testl %eax, %eax
// 7e: 78 12 js 0x92 <_JIT_ENTRY+0x92>
// 80: 48 ff c8 decq %rax
// 83: 49 89 04 24 movq %rax, (%r12)
// 87: 75 09 jne 0x92 <_JIT_ENTRY+0x92>
// 89: 4c 89 e7 movq %r12, %rdi
// 8c: ff 15 00 00 00 00 callq *(%rip) # 0x92 <_JIT_ENTRY+0x92>
// 000000000000008e: R_X86_64_GOTPCRELX _Py_Dealloc-0x4
// 92: 49 89 6e f0 movq %rbp, -0x10(%r14)
// 96: 48 89 df movq %rbx, %rdi
// 99: 4c 89 ee movq %r13, %rsi
// 9c: 4c 89 fa movq %r15, %rdx
// 9f: 48 83 c4 08 addq $0x8, %rsp
// a3: 5b popq %rbx
// a4: 41 5c popq %r12
// a6: 41 5d popq %r13
// a8: 41 5e popq %r14
// aa: 41 5f popq %r15
// ac: 5d popq %rbp
// ad: ff 25 00 00 00 00 jmpq *(%rip) # 0xb3 <_JIT_ENTRY+0xb3>
// 00000000000000af: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4
// b3: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0xba <_JIT_ENTRY+0xba>
// 00000000000000b6: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4
// ba: 49 89 87 28 01 00 00 movq %rax, 0x128(%r15)
// c1: 49 29 de subq %rbx, %r14
// c4: 49 83 c6 b8 addq $-0x48, %r14
// c8: 49 c1 ee 03 shrq $0x3, %r14
// cc: 44 89 73 40 movl %r14d, 0x40(%rbx)
// d0: 48 8b 03 movq (%rbx), %rax
// d3: 8b 0d 00 00 00 00 movl (%rip), %ecx # 0xd9 <_JIT_ENTRY+0xd9>
// 00000000000000d5: R_X86_64_GOTPCRELX _JIT_TARGET-0x4
// d9: 48 8d 04 48 leaq (%rax,%rcx,2), %rax
// dd: 48 05 c8 00 00 00 addq $0xc8, %rax
// e3: 48 83 c4 08 addq $0x8, %rsp
// e7: 5b popq %rbx
// e8: 41 5c popq %r12
// ea: 41 5d popq %r13
// ec: 41 5e popq %r14
// ee: 41 5f popq %r15
// f0: 5d popq %rbp
// f1: c3 retq
// f2:
static const unsigned char _BINARY_SUBSCR_LIST_INT_code_body[243] = {
0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41,
0x54, 0x53, 0x50, 0x49, 0x89, 0xd7, 0x49, 0x89,
0xf6, 0x48, 0x89, 0xfb, 0x48, 0x8b, 0x7e, 0xf8,
0x48, 0x8b, 0x47, 0x08, 0x48, 0x3b, 0x05, 0x00,
0x00, 0x00, 0x00, 0x0f, 0x85, 0x8a, 0x00, 0x00,
0x00, 0x4d, 0x8b, 0x66, 0xf0, 0x49, 0x8b, 0x44,
0x24, 0x08, 0x48, 0x3b, 0x05, 0x00, 0x00, 0x00,
0x00, 0x75, 0x78, 0x48, 0x83, 0x7f, 0x10, 0x08,
0x77, 0x71, 0x8b, 0x47, 0x18, 0x49, 0x39, 0x44,
0x24, 0x10, 0x7e, 0x67, 0x49, 0x8b, 0x4c, 0x24,
0x18, 0x48, 0x8b, 0x2c, 0xc1, 0x8b, 0x45, 0x00,
0xff, 0xc0, 0x74, 0x03, 0x89, 0x45, 0x00, 0x48,
0x8b, 0x07, 0x85, 0xc0, 0x78, 0x0e, 0x48, 0xff,
0xc8, 0x48, 0x89, 0x07, 0x75, 0x06, 0xff, 0x15,
0x00, 0x00, 0x00, 0x00, 0x4d, 0x8d, 0x6e, 0xf8,
0x49, 0x8b, 0x04, 0x24, 0x85, 0xc0, 0x78, 0x12,
0x48, 0xff, 0xc8, 0x49, 0x89, 0x04, 0x24, 0x75,
0x09, 0x4c, 0x89, 0xe7, 0xff, 0x15, 0x00, 0x00,
0x00, 0x00, 0x49, 0x89, 0x6e, 0xf0, 0x48, 0x89,
0xdf, 0x4c, 0x89, 0xee, 0x4c, 0x89, 0xfa, 0x48,
0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d,
0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xff, 0x25, 0x00,
0x00, 0x00, 0x00, 0x48, 0x8b, 0x05, 0x00, 0x00,
0x00, 0x00, 0x49, 0x89, 0x87, 0x28, 0x01, 0x00,
0x00, 0x49, 0x29, 0xde, 0x49, 0x83, 0xc6, 0xb8,
0x49, 0xc1, 0xee, 0x03, 0x44, 0x89, 0x73, 0x40,
0x48, 0x8b, 0x03, 0x8b, 0x0d, 0x00, 0x00, 0x00,
0x00, 0x48, 0x8d, 0x04, 0x48, 0x48, 0x05, 0xc8,
0x00, 0x00, 0x00, 0x48, 0x83, 0xc4, 0x08, 0x5b,
0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f,
0x5d, 0xc3,
};
static const Hole _BINARY_SUBSCR_LIST_INT_code_holes[8] = {
{0x1f, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, -0x4},
{0x35, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x4},
{0x70, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc},
{0x8e, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x14},
{0xaf, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x1c},
{0xb6, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x24},
{0xd5, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x2c},
};
// 0:
// 0: &PyLong_Type+0x0
// 8: &PyList_Type+0x0
// 10: &PyObject_Free+0x0
// 18: &_Py_Dealloc+0x0
// 20: CONTINUE
// 28: EXECUTOR
// 30: TARGET
static const unsigned char _BINARY_SUBSCR_LIST_INT_data_body[57] = {
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 _BINARY_SUBSCR_LIST_INT_data_holes[8] = {
{0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyLong_Type, 0x0},
{0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyList_Type, 0x0},
{0x10, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyObject_Free, 0x0},
{0x18, HoleKind_R_X86_64_64, HoleValue_ZERO, &_Py_Dealloc, 0x0},
{0x20, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0},
{0x28, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0},
{0x30, HoleKind_R_X86_64_64, HoleValue_TARGET, NULL, 0x0},
};
// _BINARY_SUBSCR_STR_INT
//
// /tmp/tmp2mfmnab2/_BINARY_SUBSCR_STR_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 d7 movq %rdx, %r15
// e: 49 89 f6 movq %rsi, %r14
// 11: 48 89 fb movq %rdi, %rbx
// 14: 48 8b 7e f8 movq -0x8(%rsi), %rdi
// 18: 48 8b 47 08 movq 0x8(%rdi), %rax
// 1c: 48 3b 05 00 00 00 00 cmpq (%rip), %rax # 0x23 <_JIT_ENTRY+0x23>
// 000000000000001f: R_X86_64_REX_GOTPCRELX PyLong_Type-0x4
// 23: 0f 85 c2 00 00 00 jne 0xeb <_JIT_ENTRY+0xeb>
// 29: 4d 8b 66 f0 movq -0x10(%r14), %r12
// 2d: 49 8b 44 24 08 movq 0x8(%r12), %rax
// 32: 48 3b 05 00 00 00 00 cmpq (%rip), %rax # 0x39 <_JIT_ENTRY+0x39>
// 0000000000000035: R_X86_64_REX_GOTPCRELX PyUnicode_Type-0x4
// 39: 0f 85 ac 00 00 00 jne 0xeb <_JIT_ENTRY+0xeb>
// 3f: 48 83 7f 10 08 cmpq $0x8, 0x10(%rdi)
// 44: 0f 87 a1 00 00 00 ja 0xeb <_JIT_ENTRY+0xeb>
// 4a: 8b 47 18 movl 0x18(%rdi), %eax
// 4d: 49 39 44 24 10 cmpq %rax, 0x10(%r12)
// 52: 0f 8e 93 00 00 00 jle 0xeb <_JIT_ENTRY+0xeb>
// 58: 41 8b 4c 24 20 movl 0x20(%r12), %ecx
// 5d: 89 ca movl %ecx, %edx
// 5f: c1 ea 02 shrl $0x2, %edx
// 62: 83 e2 07 andl $0x7, %edx
// 65: 83 fa 02 cmpl $0x2, %edx
// 68: 74 15 je 0x7f <_JIT_ENTRY+0x7f>
// 6a: 83 fa 01 cmpl $0x1, %edx
// 6d: 75 20 jne 0x8f <_JIT_ENTRY+0x8f>
// 6f: f6 c1 20 testb $0x20, %cl
// 72: 75 27 jne 0x9b <_JIT_ENTRY+0x9b>
// 74: 49 8b 4c 24 38 movq 0x38(%r12), %rcx
// 79: 0f b6 2c 01 movzbl (%rcx,%rax), %ebp
// 7d: eb 67 jmp 0xe6 <_JIT_ENTRY+0xe6>
// 7f: f6 c1 20 testb $0x20, %cl
// 82: 75 31 jne 0xb5 <_JIT_ENTRY+0xb5>
// 84: 49 8b 4c 24 38 movq 0x38(%r12), %rcx
// 89: 0f b7 2c 41 movzwl (%rcx,%rax,2), %ebp
// 8d: eb 57 jmp 0xe6 <_JIT_ENTRY+0xe6>
// 8f: f6 c1 20 testb $0x20, %cl
// 92: 75 3b jne 0xcf <_JIT_ENTRY+0xcf>
// 94: 49 8b 4c 24 38 movq 0x38(%r12), %rcx
// 99: eb 48 jmp 0xe3 <_JIT_ENTRY+0xe3>
// 9b: 31 d2 xorl %edx, %edx
// 9d: f6 c1 40 testb $0x40, %cl
// a0: 0f 94 c2 sete %dl
// a3: 48 c1 e2 04 shlq $0x4, %rdx
// a7: 4a 8d 0c 22 leaq (%rdx,%r12), %rcx
// ab: 48 83 c1 28 addq $0x28, %rcx
// af: 0f b6 2c 01 movzbl (%rcx,%rax), %ebp
// b3: eb 31 jmp 0xe6 <_JIT_ENTRY+0xe6>
// b5: 31 d2 xorl %edx, %edx
// b7: f6 c1 40 testb $0x40, %cl
// ba: 0f 94 c2 sete %dl
// bd: 48 c1 e2 04 shlq $0x4, %rdx
// c1: 4a 8d 0c 22 leaq (%rdx,%r12), %rcx
// c5: 48 83 c1 28 addq $0x28, %rcx
// c9: 0f b7 2c 41 movzwl (%rcx,%rax,2), %ebp
// cd: eb 17 jmp 0xe6 <_JIT_ENTRY+0xe6>
// cf: 31 d2 xorl %edx, %edx
// d1: f6 c1 40 testb $0x40, %cl
// d4: 0f 94 c2 sete %dl
// d7: 48 c1 e2 04 shlq $0x4, %rdx
// db: 4a 8d 0c 22 leaq (%rdx,%r12), %rcx
// df: 48 83 c1 28 addq $0x28, %rcx
// e3: 8b 2c 81 movl (%rcx,%rax,4), %ebp
// e6: 83 fd 7f cmpl $0x7f, %ebp
// e9: 76 3f jbe 0x12a <_JIT_ENTRY+0x12a>
// eb: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0xf2 <_JIT_ENTRY+0xf2>
// 00000000000000ee: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4
// f2: 49 89 87 28 01 00 00 movq %rax, 0x128(%r15)
// f9: 49 29 de subq %rbx, %r14
// fc: 49 83 c6 b8 addq $-0x48, %r14
// 100: 49 c1 ee 03 shrq $0x3, %r14
// 104: 44 89 73 40 movl %r14d, 0x40(%rbx)
// 108: 48 8b 03 movq (%rbx), %rax
// 10b: 8b 0d 00 00 00 00 movl (%rip), %ecx # 0x111 <_JIT_ENTRY+0x111>
// 000000000000010d: R_X86_64_GOTPCRELX _JIT_TARGET-0x4
// 111: 48 8d 04 48 leaq (%rax,%rcx,2), %rax
// 115: 48 05 c8 00 00 00 addq $0xc8, %rax
// 11b: 48 83 c4 08 addq $0x8, %rsp
// 11f: 5b popq %rbx
// 120: 41 5c popq %r12
// 122: 41 5d popq %r13
// 124: 41 5e popq %r14
// 126: 41 5f popq %r15
// 128: 5d popq %rbp
// 129: c3 retq
// 12a: 48 8b 07 movq (%rdi), %rax
// 12d: 85 c0 testl %eax, %eax
// 12f: 78 0e js 0x13f <_JIT_ENTRY+0x13f>
// 131: 48 ff c8 decq %rax
// 134: 48 89 07 movq %rax, (%rdi)
// 137: 75 06 jne 0x13f <_JIT_ENTRY+0x13f>
// 139: ff 15 00 00 00 00 callq *(%rip) # 0x13f <_JIT_ENTRY+0x13f>
// 000000000000013b: R_X86_64_GOTPCRELX PyObject_Free-0x4
// 13f: 4d 8d 6e f8 leaq -0x8(%r14), %r13
// 143: 49 8b 04 24 movq (%r12), %rax
// 147: 85 c0 testl %eax, %eax
// 149: 78 12 js 0x15d <_JIT_ENTRY+0x15d>
// 14b: 48 ff c8 decq %rax
// 14e: 49 89 04 24 movq %rax, (%r12)
// 152: 75 09 jne 0x15d <_JIT_ENTRY+0x15d>
// 154: 4c 89 e7 movq %r12, %rdi
// 157: ff 15 00 00 00 00 callq *(%rip) # 0x15d <_JIT_ENTRY+0x15d>
// 0000000000000159: R_X86_64_GOTPCRELX _Py_Dealloc-0x4
// 15d: 89 e8 movl %ebp, %eax
// 15f: 48 8d 04 40 leaq (%rax,%rax,2), %rax
// 163: 48 c1 e0 04 shlq $0x4, %rax
// 167: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0x16e <_JIT_ENTRY+0x16e>
// 000000000000016a: R_X86_64_REX_GOTPCRELX _PyRuntime-0x4
// 16e: 48 01 c8 addq %rcx, %rax
// 171: 48 05 70 fa 00 00 addq $0xfa70, %rax # imm = 0xFA70
// 177: 49 89 46 f0 movq %rax, -0x10(%r14)
// 17b: 48 89 df movq %rbx, %rdi
// 17e: 4c 89 ee movq %r13, %rsi
// 181: 4c 89 fa movq %r15, %rdx
// 184: 48 83 c4 08 addq $0x8, %rsp
// 188: 5b popq %rbx
// 189: 41 5c popq %r12
// 18b: 41 5d popq %r13
// 18d: 41 5e popq %r14
// 18f: 41 5f popq %r15
// 191: 5d popq %rbp
// 192: ff 25 00 00 00 00 jmpq *(%rip) # 0x198 <_JIT_ENTRY+0x198>
// 0000000000000194: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4
// 192:
static const unsigned char _BINARY_SUBSCR_STR_INT_code_body[403] = {
0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41,
0x54, 0x53, 0x50, 0x49, 0x89, 0xd7, 0x49, 0x89,
0xf6, 0x48, 0x89, 0xfb, 0x48, 0x8b, 0x7e, 0xf8,
0x48, 0x8b, 0x47, 0x08, 0x48, 0x3b, 0x05, 0x00,
0x00, 0x00, 0x00, 0x0f, 0x85, 0xc2, 0x00, 0x00,
0x00, 0x4d, 0x8b, 0x66, 0xf0, 0x49, 0x8b, 0x44,
0x24, 0x08, 0x48, 0x3b, 0x05, 0x00, 0x00, 0x00,
0x00, 0x0f, 0x85, 0xac, 0x00, 0x00, 0x00, 0x48,
0x83, 0x7f, 0x10, 0x08, 0x0f, 0x87, 0xa1, 0x00,
0x00, 0x00, 0x8b, 0x47, 0x18, 0x49, 0x39, 0x44,
0x24, 0x10, 0x0f, 0x8e, 0x93, 0x00, 0x00, 0x00,
0x41, 0x8b, 0x4c, 0x24, 0x20, 0x89, 0xca, 0xc1,
0xea, 0x02, 0x83, 0xe2, 0x07, 0x83, 0xfa, 0x02,
0x74, 0x15, 0x83, 0xfa, 0x01, 0x75, 0x20, 0xf6,
0xc1, 0x20, 0x75, 0x27, 0x49, 0x8b, 0x4c, 0x24,
0x38, 0x0f, 0xb6, 0x2c, 0x01, 0xeb, 0x67, 0xf6,
0xc1, 0x20, 0x75, 0x31, 0x49, 0x8b, 0x4c, 0x24,
0x38, 0x0f, 0xb7, 0x2c, 0x41, 0xeb, 0x57, 0xf6,
0xc1, 0x20, 0x75, 0x3b, 0x49, 0x8b, 0x4c, 0x24,
0x38, 0xeb, 0x48, 0x31, 0xd2, 0xf6, 0xc1, 0x40,
0x0f, 0x94, 0xc2, 0x48, 0xc1, 0xe2, 0x04, 0x4a,
0x8d, 0x0c, 0x22, 0x48, 0x83, 0xc1, 0x28, 0x0f,
0xb6, 0x2c, 0x01, 0xeb, 0x31, 0x31, 0xd2, 0xf6,
0xc1, 0x40, 0x0f, 0x94, 0xc2, 0x48, 0xc1, 0xe2,
0x04, 0x4a, 0x8d, 0x0c, 0x22, 0x48, 0x83, 0xc1,
0x28, 0x0f, 0xb7, 0x2c, 0x41, 0xeb, 0x17, 0x31,
0xd2, 0xf6, 0xc1, 0x40, 0x0f, 0x94, 0xc2, 0x48,
0xc1, 0xe2, 0x04, 0x4a, 0x8d, 0x0c, 0x22, 0x48,
0x83, 0xc1, 0x28, 0x8b, 0x2c, 0x81, 0x83, 0xfd,
0x7f, 0x76, 0x3f, 0x48, 0x8b, 0x05, 0x00, 0x00,
0x00, 0x00, 0x49, 0x89, 0x87, 0x28, 0x01, 0x00,
0x00, 0x49, 0x29, 0xde, 0x49, 0x83, 0xc6, 0xb8,
0x49, 0xc1, 0xee, 0x03, 0x44, 0x89, 0x73, 0x40,
0x48, 0x8b, 0x03, 0x8b, 0x0d, 0x00, 0x00, 0x00,
0x00, 0x48, 0x8d, 0x04, 0x48, 0x48, 0x05, 0xc8,
0x00, 0x00, 0x00, 0x48, 0x83, 0xc4, 0x08, 0x5b,
0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f,
0x5d, 0xc3, 0x48, 0x8b, 0x07, 0x85, 0xc0, 0x78,
0x0e, 0x48, 0xff, 0xc8, 0x48, 0x89, 0x07, 0x75,
0x06, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x4d,
0x8d, 0x6e, 0xf8, 0x49, 0x8b, 0x04, 0x24, 0x85,
0xc0, 0x78, 0x12, 0x48, 0xff, 0xc8, 0x49, 0x89,
0x04, 0x24, 0x75, 0x09, 0x4c, 0x89, 0xe7, 0xff,
0x15, 0x00, 0x00, 0x00, 0x00, 0x89, 0xe8, 0x48,
0x8d, 0x04, 0x40, 0x48, 0xc1, 0xe0, 0x04, 0x48,
0x8b, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x48, 0x01,
0xc8, 0x48, 0x05, 0x70, 0xfa, 0x00, 0x00, 0x49,
0x89, 0x46, 0xf0, 0x48, 0x89, 0xdf, 0x4c, 0x89,
0xee, 0x4c, 0x89, 0xfa, 0x48, 0x83, 0xc4, 0x08,
0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41,
0x5f, 0x5d,
};
static const Hole _BINARY_SUBSCR_STR_INT_code_holes[8] = {
{0x1f, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, -0x4},
{0x35, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x4},
{0xee, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xc},
{0x10d, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x14},
{0x13b, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x1c},
{0x159, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x24},
{0x16a, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x2c},
};
// 0:
// 0: &PyLong_Type+0x0
// 8: &PyUnicode_Type+0x0
// 10: EXECUTOR
// 18: TARGET
// 20: &PyObject_Free+0x0
// 28: &_Py_Dealloc+0x0
// 30: &_PyRuntime+0x0
static const unsigned char _BINARY_SUBSCR_STR_INT_data_body[57] = {
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 _BINARY_SUBSCR_STR_INT_data_holes[8] = {
{0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyLong_Type, 0x0},
{0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyUnicode_Type, 0x0},
{0x10, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0},
{0x18, HoleKind_R_X86_64_64, HoleValue_TARGET, NULL, 0x0},
{0x20, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyObject_Free, 0x0},
{0x28, HoleKind_R_X86_64_64, HoleValue_ZERO, &_Py_Dealloc, 0x0},
{0x30, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyRuntime, 0x0},
};
// _BINARY_SUBSCR_TUPLE_INT
//
// /tmp/tmp2mfmnab2/_BINARY_SUBSCR_TUPLE_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 d7 movq %rdx, %r15
// e: 49 89 f6 movq %rsi, %r14
// 11: 48 89 fb movq %rdi, %rbx
// 14: 48 8b 7e f8 movq -0x8(%rsi), %rdi
// 18: 48 8b 47 08 movq 0x8(%rdi), %rax
// 1c: 48 3b 05 00 00 00 00 cmpq (%rip), %rax # 0x23 <_JIT_ENTRY+0x23>
// 000000000000001f: R_X86_64_REX_GOTPCRELX PyLong_Type-0x4
// 23: 0f 85 86 00 00 00 jne 0xaf <_JIT_ENTRY+0xaf>
// 29: 4d 8b 66 f0 movq -0x10(%r14), %r12
// 2d: 49 8b 44 24 08 movq 0x8(%r12), %rax
// 32: 48 3b 05 00 00 00 00 cmpq (%rip), %rax # 0x39 <_JIT_ENTRY+0x39>
// 0000000000000035: R_X86_64_REX_GOTPCRELX PyTuple_Type-0x4
// 39: 75 74 jne 0xaf <_JIT_ENTRY+0xaf>
// 3b: 48 83 7f 10 08 cmpq $0x8, 0x10(%rdi)
// 40: 77 6d ja 0xaf <_JIT_ENTRY+0xaf>
// 42: 8b 47 18 movl 0x18(%rdi), %eax
// 45: 49 39 44 24 10 cmpq %rax, 0x10(%r12)
// 4a: 7e 63 jle 0xaf <_JIT_ENTRY+0xaf>
// 4c: 49 8b 6c c4 18 movq 0x18(%r12,%rax,8), %rbp
// 51: 8b 45 00 movl (%rbp), %eax
// 54: ff c0 incl %eax
// 56: 74 03 je 0x5b <_JIT_ENTRY+0x5b>
// 58: 89 45 00 movl %eax, (%rbp)
// 5b: 48 8b 07 movq (%rdi), %rax
// 5e: 85 c0 testl %eax, %eax
// 60: 78 0e js 0x70 <_JIT_ENTRY+0x70>
// 62: 48 ff c8 decq %rax
// 65: 48 89 07 movq %rax, (%rdi)
// 68: 75 06 jne 0x70 <_JIT_ENTRY+0x70>
// 6a: ff 15 00 00 00 00 callq *(%rip) # 0x70 <_JIT_ENTRY+0x70>
// 000000000000006c: R_X86_64_GOTPCRELX PyObject_Free-0x4
// 70: 4d 8d 6e f8 leaq -0x8(%r14), %r13
// 74: 49 8b 04 24 movq (%r12), %rax
// 78: 85 c0 testl %eax, %eax
// 7a: 78 12 js 0x8e <_JIT_ENTRY+0x8e>
// 7c: 48 ff c8 decq %rax
// 7f: 49 89 04 24 movq %rax, (%r12)
// 83: 75 09 jne 0x8e <_JIT_ENTRY+0x8e>
// 85: 4c 89 e7 movq %r12, %rdi
// 88: ff 15 00 00 00 00 callq *(%rip) # 0x8e <_JIT_ENTRY+0x8e>
// 000000000000008a: R_X86_64_GOTPCRELX _Py_Dealloc-0x4
// 8e: 49 89 6e f0 movq %rbp, -0x10(%r14)
// 92: 48 89 df movq %rbx, %rdi
// 95: 4c 89 ee movq %r13, %rsi
// 98: 4c 89 fa movq %r15, %rdx
// 9b: 48 83 c4 08 addq $0x8, %rsp
// 9f: 5b popq %rbx
// a0: 41 5c popq %r12
// a2: 41 5d popq %r13
// a4: 41 5e popq %r14
// a6: 41 5f popq %r15
// a8: 5d popq %rbp
// a9: ff 25 00 00 00 00 jmpq *(%rip) # 0xaf <_JIT_ENTRY+0xaf>
// 00000000000000ab: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4
// af: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0xb6 <_JIT_ENTRY+0xb6>
// 00000000000000b2: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4
// b6: 49 89 87 28 01 00 00 movq %rax, 0x128(%r15)
// bd: 49 29 de subq %rbx, %r14
// c0: 49 83 c6 b8 addq $-0x48, %r14
// c4: 49 c1 ee 03 shrq $0x3, %r14
// c8: 44 89 73 40 movl %r14d, 0x40(%rbx)
// cc: 48 8b 03 movq (%rbx), %rax
// cf: 8b 0d 00 00 00 00 movl (%rip), %ecx # 0xd5 <_JIT_ENTRY+0xd5>
// 00000000000000d1: R_X86_64_GOTPCRELX _JIT_TARGET-0x4
// d5: 48 8d 04 48 leaq (%rax,%rcx,2), %rax
// d9: 48 05 c8 00 00 00 addq $0xc8, %rax
// df: 48 83 c4 08 addq $0x8, %rsp
// e3: 5b popq %rbx
// e4: 41 5c popq %r12
// e6: 41 5d popq %r13
// e8: 41 5e popq %r14
// ea: 41 5f popq %r15
// ec: 5d popq %rbp
// ed: c3 retq
// ee:
static const unsigned char _BINARY_SUBSCR_TUPLE_INT_code_body[239] = {
0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41,
0x54, 0x53, 0x50, 0x49, 0x89, 0xd7, 0x49, 0x89,
0xf6, 0x48, 0x89, 0xfb, 0x48, 0x8b, 0x7e, 0xf8,
0x48, 0x8b, 0x47, 0x08, 0x48, 0x3b, 0x05, 0x00,
0x00, 0x00, 0x00, 0x0f, 0x85, 0x86, 0x00, 0x00,
0x00, 0x4d, 0x8b, 0x66, 0xf0, 0x49, 0x8b, 0x44,
0x24, 0x08, 0x48, 0x3b, 0x05, 0x00, 0x00, 0x00,
0x00, 0x75, 0x74, 0x48, 0x83, 0x7f, 0x10, 0x08,
0x77, 0x6d, 0x8b, 0x47, 0x18, 0x49, 0x39, 0x44,
0x24, 0x10, 0x7e, 0x63, 0x49, 0x8b, 0x6c, 0xc4,
0x18, 0x8b, 0x45, 0x00, 0xff, 0xc0, 0x74, 0x03,
0x89, 0x45, 0x00, 0x48, 0x8b, 0x07, 0x85, 0xc0,
0x78, 0x0e, 0x48, 0xff, 0xc8, 0x48, 0x89, 0x07,
0x75, 0x06, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00,
0x4d, 0x8d, 0x6e, 0xf8, 0x49, 0x8b, 0x04, 0x24,
0x85, 0xc0, 0x78, 0x12, 0x48, 0xff, 0xc8, 0x49,
0x89, 0x04, 0x24, 0x75, 0x09, 0x4c, 0x89, 0xe7,
0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89,
0x6e, 0xf0, 0x48, 0x89, 0xdf, 0x4c, 0x89, 0xee,
0x4c, 0x89, 0xfa, 0x48, 0x83, 0xc4, 0x08, 0x5b,
0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f,
0x5d, 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48,
0x8b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89,
0x87, 0x28, 0x01, 0x00, 0x00, 0x49, 0x29, 0xde,
0x49, 0x83, 0xc6, 0xb8, 0x49, 0xc1, 0xee, 0x03,
0x44, 0x89, 0x73, 0x40, 0x48, 0x8b, 0x03, 0x8b,
0x0d, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x04,
0x48, 0x48, 0x05, 0xc8, 0x00, 0x00, 0x00, 0x48,
0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d,
0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xc3,
};
static const Hole _BINARY_SUBSCR_TUPLE_INT_code_holes[8] = {
{0x1f, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, -0x4},
{0x35, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x4},
{0x6c, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc},
{0x8a, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x14},
{0xab, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x1c},
{0xb2, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x24},
{0xd1, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x2c},
};
// 0:
// 0: &PyLong_Type+0x0
// 8: &PyTuple_Type+0x0
// 10: &PyObject_Free+0x0
// 18: &_Py_Dealloc+0x0
// 20: CONTINUE
// 28: EXECUTOR
// 30: TARGET
static const unsigned char _BINARY_SUBSCR_TUPLE_INT_data_body[57] = {
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 _BINARY_SUBSCR_TUPLE_INT_data_holes[8] = {
{0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyLong_Type, 0x0},
{0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyTuple_Type, 0x0},
{0x10, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyObject_Free, 0x0},
{0x18, HoleKind_R_X86_64_64, HoleValue_ZERO, &_Py_Dealloc, 0x0},
{0x20, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0},
{0x28, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0},
{0x30, HoleKind_R_X86_64_64, HoleValue_TARGET, NULL, 0x0},
};
// _BUILD_CONST_KEY_MAP
//
// /tmp/tmp2mfmnab2/_BUILD_CONST_KEY_MAP.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 f8 movq -0x8(%rsi), %r13
// 18: 49 8b 45 08 movq 0x8(%r13), %rax
// 1c: 48 3b 05 00 00 00 00 cmpq (%rip), %rax # 0x23 <_JIT_ENTRY+0x23>
// 000000000000001f: R_X86_64_REX_GOTPCRELX PyTuple_Type-0x4
// 23: 0f 85 8e 00 00 00 jne 0xb7 <_JIT_ENTRY+0xb7>
// 29: 0f b7 05 00 00 00 00 movzwl (%rip), %eax # 0x30 <_JIT_ENTRY+0x30>
// 000000000000002c: R_X86_64_GOTPCREL _JIT_OPARG-0x4
// 30: 49 39 45 10 cmpq %rax, 0x10(%r13)
// 34: 0f 85 7d 00 00 00 jne 0xb7 <_JIT_ENTRY+0xb7>
// 3a: 8b 05 00 00 00 00 movl (%rip), %eax # 0x40 <_JIT_ENTRY+0x40>
// 000000000000003c: R_X86_64_GOTPCRELX _JIT_OPARG-0x4
// 40: f7 d0 notl %eax
// 42: 0d 00 00 ff ff orl $0xffff0000, %eax # imm = 0xFFFF0000
// 47: 48 98 cltq
// 49: 4d 8d 24 c7 leaq (%r15,%rax,8), %r12
// 4d: 49 8d 7d 18 leaq 0x18(%r13), %rdi
// 51: 48 8b 2d 00 00 00 00 movq (%rip), %rbp # 0x58 <_JIT_ENTRY+0x58>
// 0000000000000054: R_X86_64_REX_GOTPCRELX _JIT_OPARG-0x4
// 58: 44 0f b7 c5 movzwl %bp, %r8d
// 5c: be 01 00 00 00 movl $0x1, %esi
// 61: b9 01 00 00 00 movl $0x1, %ecx
// 66: 4c 89 e2 movq %r12, %rdx
// 69: ff 15 00 00 00 00 callq *(%rip) # 0x6f <_JIT_ENTRY+0x6f>
// 000000000000006b: R_X86_64_GOTPCRELX _PyDict_FromItems-0x4
// 6f: 48 89 04 24 movq %rax, (%rsp)
// 73: f7 c5 ff ff 00 00 testl $0xffff, %ebp # imm = 0xFFFF
// 79: 0f 8e 83 00 00 00 jle 0x102 <_JIT_ENTRY+0x102>
// 7f: 0f b7 2d 00 00 00 00 movzwl (%rip), %ebp # 0x86 <_JIT_ENTRY+0x86>
// 0000000000000082: R_X86_64_GOTPCREL _JIT_OPARG-0x4
// 86: 48 ff c5 incq %rbp
// 89: eb 0e jmp 0x99 <_JIT_ENTRY+0x99>
// 8b: 0f 1f 44 00 00 nopl (%rax,%rax)
// 90: 48 ff cd decq %rbp
// 93: 48 83 fd 01 cmpq $0x1, %rbp
// 97: 7e 69 jle 0x102 <_JIT_ENTRY+0x102>
// 99: 8d 45 fe leal -0x2(%rbp), %eax
// 9c: 49 8b 3c c4 movq (%r12,%rax,8), %rdi
// a0: 48 8b 07 movq (%rdi), %rax
// a3: 85 c0 testl %eax, %eax
// a5: 78 e9 js 0x90 <_JIT_ENTRY+0x90>
// a7: 48 ff c8 decq %rax
// aa: 48 89 07 movq %rax, (%rdi)
// ad: 75 e1 jne 0x90 <_JIT_ENTRY+0x90>
// af: ff 15 00 00 00 00 callq *(%rip) # 0xb5 <_JIT_ENTRY+0xb5>
// 00000000000000b1: R_X86_64_GOTPCRELX _Py_Dealloc-0x4
// b5: eb d9 jmp 0x90 <_JIT_ENTRY+0x90>
// b7: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0xbe <_JIT_ENTRY+0xbe>
// 00000000000000ba: R_X86_64_REX_GOTPCRELX PyExc_SystemError-0x4
// be: 48 8b 30 movq (%rax), %rsi
// c1: 48 8d 15 00 00 00 00 leaq (%rip), %rdx # 0xc8 <_JIT_ENTRY+0xc8>
// 00000000000000c4: R_X86_64_PC32 .L.str.12-0x4
// c8: 4c 89 f7 movq %r14, %rdi
// cb: ff 15 00 00 00 00 callq *(%rip) # 0xd1 <_JIT_ENTRY+0xd1>
// 00000000000000cd: R_X86_64_GOTPCRELX _PyErr_SetString-0x4
// d1: 4d 89 fc movq %r15, %r12
// d4: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0xdb <_JIT_ENTRY+0xdb>
// 00000000000000d7: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4
// db: 49 89 86 28 01 00 00 movq %rax, 0x128(%r14)
// e2: 49 29 dc subq %rbx, %r12
// e5: 49 83 c4 b8 addq $-0x48, %r12
// e9: 49 c1 ec 03 shrq $0x3, %r12
// ed: 44 89 63 40 movl %r12d, 0x40(%rbx)
// f1: 31 c0 xorl %eax, %eax
// f3: 48 83 c4 08 addq $0x8, %rsp
// f7: 5b popq %rbx
// f8: 41 5c popq %r12
// fa: 41 5d popq %r13
// fc: 41 5e popq %r14
// fe: 41 5f popq %r15
// 100: 5d popq %rbp
// 101: c3 retq
// 102: 49 8b 45 00 movq (%r13), %rax
// 106: 85 c0 testl %eax, %eax
// 108: 78 12 js 0x11c <_JIT_ENTRY+0x11c>
// 10a: 48 ff c8 decq %rax
// 10d: 49 89 45 00 movq %rax, (%r13)
// 111: 75 09 jne 0x11c <_JIT_ENTRY+0x11c>
// 113: 4c 89 ef movq %r13, %rdi
// 116: ff 15 00 00 00 00 callq *(%rip) # 0x11c <_JIT_ENTRY+0x11c>
// 0000000000000118: R_X86_64_GOTPCRELX _Py_Dealloc-0x4
// 11c: 48 8b 14 24 movq (%rsp), %rdx
// 120: 48 85 d2 testq %rdx, %rdx
// 123: 74 af je 0xd4 <_JIT_ENTRY+0xd4>
// 125: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0x12c <_JIT_ENTRY+0x12c>
// 0000000000000128: R_X86_64_REX_GOTPCRELX _JIT_OPARG-0x4
// 12c: 0f b7 c8 movzwl %ax, %ecx
// 12f: f7 d0 notl %eax
// 131: 0d 00 00 ff ff orl $0xffff0000, %eax # imm = 0xFFFF0000
// 136: 48 98 cltq
// 138: 49 89 14 c7 movq %rdx, (%r15,%rax,8)
// 13c: 48 c1 e1 03 shlq $0x3, %rcx
// 140: 49 29 cf subq %rcx, %r15
// 143: 48 89 df movq %rbx, %rdi
// 146: 4c 89 fe movq %r15, %rsi
// 149: 4c 89 f2 movq %r14, %rdx
// 14c: 48 83 c4 08 addq $0x8, %rsp
// 150: 5b popq %rbx
// 151: 41 5c popq %r12
// 153: 41 5d popq %r13
// 155: 41 5e popq %r14
// 157: 41 5f popq %r15
// 159: 5d popq %rbp
// 15a: ff 25 00 00 00 00 jmpq *(%rip) # 0x160 <_JIT_ENTRY+0x160>
// 000000000000015c: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4
// 15a:
static const unsigned char _BUILD_CONST_KEY_MAP_code_body[347] = {
0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41,
0x54, 0x53, 0x50, 0x49, 0x89, 0xd6, 0x49, 0x89,
0xf7, 0x48, 0x89, 0xfb, 0x4c, 0x8b, 0x6e, 0xf8,
0x49, 0x8b, 0x45, 0x08, 0x48, 0x3b, 0x05, 0x00,
0x00, 0x00, 0x00, 0x0f, 0x85, 0x8e, 0x00, 0x00,
0x00, 0x0f, 0xb7, 0x05, 0x00, 0x00, 0x00, 0x00,
0x49, 0x39, 0x45, 0x10, 0x0f, 0x85, 0x7d, 0x00,
0x00, 0x00, 0x8b, 0x05, 0x00, 0x00, 0x00, 0x00,
0xf7, 0xd0, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x48,
0x98, 0x4d, 0x8d, 0x24, 0xc7, 0x49, 0x8d, 0x7d,
0x18, 0x48, 0x8b, 0x2d, 0x00, 0x00, 0x00, 0x00,
0x44, 0x0f, 0xb7, 0xc5, 0xbe, 0x01, 0x00, 0x00,
0x00, 0xb9, 0x01, 0x00, 0x00, 0x00, 0x4c, 0x89,
0xe2, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48,
0x89, 0x04, 0x24, 0xf7, 0xc5, 0xff, 0xff, 0x00,
0x00, 0x0f, 0x8e, 0x83, 0x00, 0x00, 0x00, 0x0f,
0xb7, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x48, 0xff,
0xc5, 0xeb, 0x0e, 0x0f, 0x1f, 0x44, 0x00, 0x00,
0x48, 0xff, 0xcd, 0x48, 0x83, 0xfd, 0x01, 0x7e,
0x69, 0x8d, 0x45, 0xfe, 0x49, 0x8b, 0x3c, 0xc4,
0x48, 0x8b, 0x07, 0x85, 0xc0, 0x78, 0xe9, 0x48,
0xff, 0xc8, 0x48, 0x89, 0x07, 0x75, 0xe1, 0xff,
0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0xd9, 0x48,
0x8b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b,
0x30, 0x48, 0x8d, 0x15, 0x00, 0x00, 0x00, 0x00,
0x4c, 0x89, 0xf7, 0xff, 0x15, 0x00, 0x00, 0x00,
0x00, 0x4d, 0x89, 0xfc, 0x48, 0x8b, 0x05, 0x00,
0x00, 0x00, 0x00, 0x49, 0x89, 0x86, 0x28, 0x01,
0x00, 0x00, 0x49, 0x29, 0xdc, 0x49, 0x83, 0xc4,
0xb8, 0x49, 0xc1, 0xec, 0x03, 0x44, 0x89, 0x63,
0x40, 0x31, 0xc0, 0x48, 0x83, 0xc4, 0x08, 0x5b,
0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f,
0x5d, 0xc3, 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, 0x48, 0x8b, 0x14, 0x24,
0x48, 0x85, 0xd2, 0x74, 0xaf, 0x48, 0x8b, 0x05,
0x00, 0x00, 0x00, 0x00, 0x0f, 0xb7, 0xc8, 0xf7,
0xd0, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x48, 0x98,
0x49, 0x89, 0x14, 0xc7, 0x48, 0xc1, 0xe1, 0x03,
0x49, 0x29, 0xcf, 0x48, 0x89, 0xdf, 0x4c, 0x89,
0xfe, 0x4c, 0x89, 0xf2, 0x48, 0x83, 0xc4, 0x08,
0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41,
0x5f, 0x5d,
};
static const Hole _BUILD_CONST_KEY_MAP_code_holes[14] = {
{0x1f, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x24},
{0x2c, HoleKind_R_X86_64_GOTPCREL, HoleValue_DATA, NULL, 0x2c},
{0x3c, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x2c},
{0x54, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x2c},
{0x6b, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x34},
{0x82, HoleKind_R_X86_64_GOTPCREL, HoleValue_DATA, NULL, 0x2c},
{0xb1, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x3c},
{0xba, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x44},
{0xc4, HoleKind_R_X86_64_PC32, HoleValue_DATA, NULL, -0x4},
{0xcd, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4c},
{0xd7, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x54},
{0x118, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x3c},
{0x128, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x2c},
};
// 0: 'bad BUILD_CONST_KEY_MAP keys argument\x00'
// 26: 00 00
// 28: &PyTuple_Type+0x0
// 30: OPARG
// 38: &_PyDict_FromItems+0x0
// 40: &_Py_Dealloc+0x0
// 48: &PyExc_SystemError+0x0
// 50: &_PyErr_SetString+0x0
// 58: EXECUTOR
static const unsigned char _BUILD_CONST_KEY_MAP_data_body[97] = {
0x62, 0x61, 0x64, 0x20, 0x42, 0x55, 0x49, 0x4c,
0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x5f,
0x4b, 0x45, 0x59, 0x5f, 0x4d, 0x41, 0x50, 0x20,
0x6b, 0x65, 0x79, 0x73, 0x20, 0x61, 0x72, 0x67,
0x75, 0x6d, 0x65, 0x6e, 0x74, 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 _BUILD_CONST_KEY_MAP_data_holes[8] = {
{0x28, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyTuple_Type, 0x0},
{0x30, HoleKind_R_X86_64_64, HoleValue_OPARG, NULL, 0x0},
{0x38, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyDict_FromItems, 0x0},
{0x40, HoleKind_R_X86_64_64, HoleValue_ZERO, &_Py_Dealloc, 0x0},
{0x48, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyExc_SystemError, 0x0},
{0x50, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyErr_SetString, 0x0},
{0x58, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0},
};
// _BUILD_LIST
//
// /tmp/tmp2mfmnab2/_BUILD_LIST.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 54 pushq %r12
// 6: 53 pushq %rbx
// 7: 50 pushq %rax
// 8: 49 89 d6 movq %rdx, %r14
// b: 49 89 f7 movq %rsi, %r15
// e: 48 89 fb movq %rdi, %rbx
// 11: 0f b7 35 00 00 00 00 movzwl (%rip), %esi # 0x18 <_JIT_ENTRY+0x18>
// 0000000000000014: R_X86_64_GOTPCREL _JIT_OPARG-0x4
// 18: 48 8d 04 f5 00 00 00 00 leaq (,%rsi,8), %rax
// 20: 4d 89 fc movq %r15, %r12
// 23: 49 29 c4 subq %rax, %r12
// 26: 4c 89 e7 movq %r12, %rdi
// 29: ff 15 00 00 00 00 callq *(%rip) # 0x2f <_JIT_ENTRY+0x2f>
// 000000000000002b: R_X86_64_GOTPCRELX _PyList_FromArraySteal-0x4
// 2f: 48 85 c0 testq %rax, %rax
// 32: 74 3c je 0x70 <_JIT_ENTRY+0x70>
// 34: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0x3b <_JIT_ENTRY+0x3b>
// 0000000000000037: R_X86_64_REX_GOTPCRELX _JIT_OPARG-0x4
// 3b: 0f b7 d1 movzwl %cx, %edx
// 3e: 0f b7 c9 movzwl %cx, %ecx
// 41: 48 c1 e1 03 shlq $0x3, %rcx
// 45: 48 f7 d9 negq %rcx
// 48: 49 89 04 0f movq %rax, (%r15,%rcx)
// 4c: b8 01 00 00 00 movl $0x1, %eax
// 51: 29 d0 subl %edx, %eax
// 53: 48 98 cltq
// 55: 49 8d 34 c7 leaq (%r15,%rax,8), %rsi
// 59: 48 89 df movq %rbx, %rdi
// 5c: 4c 89 f2 movq %r14, %rdx
// 5f: 48 83 c4 08 addq $0x8, %rsp
// 63: 5b popq %rbx
// 64: 41 5c popq %r12
// 66: 41 5e popq %r14
// 68: 41 5f popq %r15
// 6a: ff 25 00 00 00 00 jmpq *(%rip) # 0x70 <_JIT_ENTRY+0x70>
// 000000000000006c: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4
// 70: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0x77 <_JIT_ENTRY+0x77>
// 0000000000000073: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4
// 77: 49 89 86 28 01 00 00 movq %rax, 0x128(%r14)
// 7e: 49 29 dc subq %rbx, %r12
// 81: 49 83 c4 b8 addq $-0x48, %r12
// 85: 49 c1 ec 03 shrq $0x3, %r12
// 89: 44 89 63 40 movl %r12d, 0x40(%rbx)
// 8d: 31 c0 xorl %eax, %eax
// 8f: 48 83 c4 08 addq $0x8, %rsp
// 93: 5b popq %rbx
// 94: 41 5c popq %r12
// 96: 41 5e popq %r14
// 98: 41 5f popq %r15
// 9a: c3 retq
// 9b:
static const unsigned char _BUILD_LIST_code_body[156] = {
0x41, 0x57, 0x41, 0x56, 0x41, 0x54, 0x53, 0x50,
0x49, 0x89, 0xd6, 0x49, 0x89, 0xf7, 0x48, 0x89,
0xfb, 0x0f, 0xb7, 0x35, 0x00, 0x00, 0x00, 0x00,
0x48, 0x8d, 0x04, 0xf5, 0x00, 0x00, 0x00, 0x00,
0x4d, 0x89, 0xfc, 0x49, 0x29, 0xc4, 0x4c, 0x89,
0xe7, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48,
0x85, 0xc0, 0x74, 0x3c, 0x48, 0x8b, 0x0d, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xb7, 0xd1, 0x0f, 0xb7,
0xc9, 0x48, 0xc1, 0xe1, 0x03, 0x48, 0xf7, 0xd9,
0x49, 0x89, 0x04, 0x0f, 0xb8, 0x01, 0x00, 0x00,
0x00, 0x29, 0xd0, 0x48, 0x98, 0x49, 0x8d, 0x34,
0xc7, 0x48, 0x89, 0xdf, 0x4c, 0x89, 0xf2, 0x48,
0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5e,
0x41, 0x5f, 0xff, 0x25, 0x00, 0x00, 0x00, 0x00,
0x48, 0x8b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x49,
0x89, 0x86, 0x28, 0x01, 0x00, 0x00, 0x49, 0x29,
0xdc, 0x49, 0x83, 0xc4, 0xb8, 0x49, 0xc1, 0xec,
0x03, 0x44, 0x89, 0x63, 0x40, 0x31, 0xc0, 0x48,
0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5e,
0x41, 0x5f, 0xc3,
};