// File: /workspace/github_cpp_makefile_star2_O1/nimitbhardwaj[P]KapaNes/./src/cpu.cpp
// Function: NES::CPU::CPU()
CPU::CPU() {
    // Initials of registers
    regAcc = regX = regY = flags = 0;
    stackPtr = instPtr = 0;

    // ORA
    insertOpcode(0b00000001, &CPU::ora_indirect_x, "ORA_IND_X");
    insertOpcode(0b00000101, &CPU::ora_zeropg, "ORA_ZEROPG");
    insertOpcode(0b00001001, &CPU::ora_immediate, "ORA_IMM");
    insertOpcode(0b00001101, &CPU::ora_absolute, "ORA_ABS");
    insertOpcode(0b00010001, &CPU::ora_indirect_y, "ORA_IND_Y");
    insertOpcode(0b00010101, &CPU::ora_zeropg_x, "ORA_ZEROPG_X");
    insertOpcode(0b00011001, &CPU::ora_absolute_y, "ORA_ABS_Y");
    insertOpcode(0b00011101, &CPU::ora_absolute_x, "ORA_ABS_X");

    // AND
    insertOpcode(0b00100001, &CPU::and_indirect_x, "AND_IND_X");
    insertOpcode(0b00100101, &CPU::and_zeropg, "AND_ZEROPG");
    insertOpcode(0b00101001, &CPU::and_immediate, "AND_IMM");
    insertOpcode(0b00101101, &CPU::and_absolute, "AND_ABS");
    insertOpcode(0b00110001, &CPU::and_indirect_y, "AND_IND_Y");
    insertOpcode(0b00110101, &CPU::and_zeropg_x, "AND_ZEROPG_X");
    insertOpcode(0b00111001, &CPU::and_absolute_y, "AND_ABS_Y");
    insertOpcode(0b00111101, &CPU::and_absolute_x, "AND_ABS_X");

    // EOR
    insertOpcode(0b01000001, &CPU::eor_indirect_x, "EOR_IND_X");
    insertOpcode(0b01000101, &CPU::eor_zeropg, "EOR_ZEROPG");
    insertOpcode(0b01001001, &CPU::eor_immediate, "EOR_IMM");
    insertOpcode(0b01001101, &CPU::eor_absolute, "EOR_ABS");
    insertOpcode(0b01010001, &CPU::eor_indirect_y, "EOR_IND_Y");
    insertOpcode(0b01010101, &CPU::eor_zeropg_x, "EOR_ZEROPG_X");
    insertOpcode(0b01011001, &CPU::eor_absolute_y, "EOR_ABS_Y");
    insertOpcode(0b01011101, &CPU::eor_absolute_x, "EOR_ABS_X");

    // ADC
    insertOpcode(0b01100001, &CPU::adc_indirect_x, "ADC_IND_X");
    insertOpcode(0b01100101, &CPU::adc_zeropg, "ADC_ZEROPG");
    insertOpcode(0b01101001, &CPU::adc_immediate, "ADC_IMM");
    insertOpcode(0b01101101, &CPU::adc_absolute, "ADC_ABS");
    insertOpcode(0b01110001, &CPU::adc_indirect_y, "ADC_IND_Y");
    insertOpcode(0b01110101, &CPU::adc_zeropg_x, "ADC_ZEROPG_X");
    insertOpcode(0b01111001, &CPU::adc_absolute_y, "ADC_ABS_Y");
    insertOpcode(0b01111101, &CPU::adc_absolute_x, "ADC_ABS_X");

    // STA
    insertOpcode(0b10000001, &CPU::sta_indirect_x, "STA_IND_X");
    insertOpcode(0b10000101, &CPU::sta_zeropg, "STA_ZEROPG");
    insertOpcode(0b10001001, &CPU::sta_immediate, "STA_IMM");
    insertOpcode(0b10001101, &CPU::sta_absolute, "STA_ABS");
    insertOpcode(0b10010001, &CPU::sta_indirect_y, "STA_IND_Y");
    insertOpcode(0b10010101, &CPU::sta_zeropg_x, "STA_ZEROPG_X");
    insertOpcode(0b10011001, &CPU::sta_absolute_y, "STA_ABS_Y");
    insertOpcode(0b10011101, &CPU::sta_absolute_x, "STA_ABS_X");
    
    // LDA
    insertOpcode(0b10100001, &CPU::lda_indirect_x, "LDA_IND_X");
    insertOpcode(0b10100101, &CPU::lda_zeropg, "LDA_ZEROPG");
    insertOpcode(0b10101001, &CPU::lda_immediate, "LDA_IMM");
    insertOpcode(0b10101101, &CPU::lda_absolute, "LDA_ABS");
    insertOpcode(0b10110001, &CPU::lda_indirect_y, "LDA_IND_Y");
    insertOpcode(0b10110101, &CPU::lda_zeropg_x, "LDA_ZEROPG_X");
    insertOpcode(0b10111001, &CPU::lda_absolute_y, "LDA_ABS_Y");
    insertOpcode(0b10111101, &CPU::lda_absolute_x, "LDA_ABS_X");
    
    // CMP
    insertOpcode(0b11000001, &CPU::cmp_indirect_x, "CMP_IND_X");
    insertOpcode(0b11000101, &CPU::cmp_zeropg, "CMP_ZEROPG");
    insertOpcode(0b11001001, &CPU::cmp_immediate, "CMP_IMM");
    insertOpcode(0b11001101, &CPU::cmp_absolute, "CMP_ABS");
    insertOpcode(0b11010001, &CPU::cmp_indirect_y, "CMP_IND_Y");
    insertOpcode(0b11010101, &CPU::cmp_zeropg_x, "CMP_ZEROPG_X");
    insertOpcode(0b11011001, &CPU::cmp_absolute_y, "CMP_ABS_Y");
    insertOpcode(0b11011101, &CPU::cmp_absolute_x, "CMP_ABS_X");
    
    // SBC: Under Construction
    // insertOpcode(0b11100001, &CPU::sbc_indirect_x, "SBC_IND_X");
    // insertOpcode(0b11100101, &CPU::sbc_zeropg, "SBC_ZEROPG");
    // insertOpcode(0b11101001, &CPU::sbc_immediate, "SBC_IMM");
    // insertOpcode(0b11101101, &CPU::sbc_absolute, "SBC_ABS");
    // insertOpcode(0b11110001, &CPU::sbc_indirect_y, "SBC_IND_Y");
    // insertOpcode(0b11110101, &CPU::sbc_zeropg_x, "SBC_ZEROPG_X");
    // insertOpcode(0b11111001, &CPU::sbc_absolute_y, "SBC_ABS_Y");
    // insertOpcode(0b11111101, &CPU::sbc_absolute_x, "SBC_ABS_X");
    
    // ASL
    insertOpcode(0b00000110, &CPU::asl_zeropg, "ASL_ZEROPG");
    insertOpcode(0b00001010, &CPU::asl_accumulator, "ASL_ACCUMULATOR");
    insertOpcode(0b00001110, &CPU::asl_absolute, "ASL_ABSOLUTE");
    insertOpcode(0b00010110, &CPU::asl_zeropg_x, "ASL_ZEROPG_X");
    insertOpcode(0b00011110, &CPU::asl_absolute_x, "ASL_ABSOLUTE_X");

    // ROL
    insertOpcode(0b00100110, &CPU::rol_zeropg, "ROL_ZEROPG");
    insertOpcode(0b00101010, &CPU::rol_accumulator, "ROL_ACCUMULATOR");
    insertOpcode(0b00101110, &CPU::rol_absolute, "ROL_ABSOLUTE");
    insertOpcode(0b00110110, &CPU::rol_zeropg_x, "ROL_ZEROPG_X");
    insertOpcode(0b00111110, &CPU::rol_absolute_x, "ROL_ABSOLUTE_X");

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0x38(%rdi), %rax
movq %rax, 0x8(%rdi)
movl $0x1, %eax
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%rdi)
movl $0x3f800000, %ecx       # imm = 0x3F800000
movl %ecx, 0x28(%rdi)
movups %xmm0, 0x30(%rdi)
leaq 0x70(%rdi), %rdx
movq %rdx, 0x40(%rdi)
movq %rax, 0x48(%rdi)
movups %xmm0, 0x50(%rdi)
movl %ecx, 0x60(%rdi)
movups %xmm0, 0x68(%rdi)
leaq 0xa8(%rdi), %rdx
movq %rdx, 0x78(%rdi)
movq %rax, 0x80(%rdi)
movups %xmm0, 0x88(%rdi)
movl %ecx, 0x98(%rdi)
movups %xmm0, 0xa0(%rdi)
movq $0x0, (%rdi)
leaq -0x30(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x4cdf(%rip), %rsi      # 0x6004
leaq 0x4ce1(%rip), %rdx      # 0x600d
leaq -0x40(%rbp), %rdi
callq 0x4f22
leaq 0x13c6(%rip), %rdx      # 0x2702
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x1, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x135d
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4ca3(%rip), %rsi      # 0x600e
leaq 0x4ca6(%rip), %rdx      # 0x6018
callq 0x4f22
leaq 0x1420(%rip), %rdx      # 0x279e
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x5, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x139f
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4c6c(%rip), %rsi      # 0x6019
leaq 0x4c6c(%rip), %rdx      # 0x6020
callq 0x4f22
leaq 0x143a(%rip), %rdx      # 0x27fa
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x9, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x13e1
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4c32(%rip), %rsi      # 0x6021
leaq 0x4c32(%rip), %rdx      # 0x6028
callq 0x4f22
leaq 0x143c(%rip), %rdx      # 0x283e
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xd, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1423
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4bf8(%rip), %rsi      # 0x6029
leaq 0x4bfa(%rip), %rdx      # 0x6032
callq 0x4f22
leaq 0x147e(%rip), %rdx      # 0x28c2
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x11, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1465
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4bc0(%rip), %rsi      # 0x6033
leaq 0x4bc5(%rip), %rdx      # 0x603f
callq 0x4f22
leaq 0x14dc(%rip), %rdx      # 0x2962
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x15, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x14a7
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4b8b(%rip), %rsi      # 0x6040
leaq 0x4b8d(%rip), %rdx      # 0x6049
callq 0x4f22
leaq 0x14f8(%rip), %rdx      # 0x29c0
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x19, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x14e9
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4b53(%rip), %rsi      # 0x604a
leaq 0x4b55(%rip), %rdx      # 0x6053
callq 0x4f22
leaq 0x1540(%rip), %rdx      # 0x2a4a
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x1d, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x152b
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4b1b(%rip), %rsi      # 0x6054
leaq 0x4b1d(%rip), %rdx      # 0x605d
callq 0x4f22
leaq 0x1588(%rip), %rdx      # 0x2ad4
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x21, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x156d
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4ae3(%rip), %rsi      # 0x605e
leaq 0x4ae6(%rip), %rdx      # 0x6068
callq 0x4f22
leaq 0x15e2(%rip), %rdx      # 0x2b70
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x25, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x15af
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4aac(%rip), %rsi      # 0x6069
leaq 0x4aac(%rip), %rdx      # 0x6070
callq 0x4f22
leaq 0x15fc(%rip), %rdx      # 0x2bcc
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x29, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x15f1
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4a72(%rip), %rsi      # 0x6071
leaq 0x4a72(%rip), %rdx      # 0x6078
callq 0x4f22
leaq 0x15fe(%rip), %rdx      # 0x2c10
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x2d, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1633
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4a38(%rip), %rsi      # 0x6079
leaq 0x4a3a(%rip), %rdx      # 0x6082
callq 0x4f22
leaq 0x1640(%rip), %rdx      # 0x2c94
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x31, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1675
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4a00(%rip), %rsi      # 0x6083
leaq 0x4a05(%rip), %rdx      # 0x608f
callq 0x4f22
leaq 0x169e(%rip), %rdx      # 0x2d34
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x35, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x16b7
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x49cb(%rip), %rsi      # 0x6090
leaq 0x49cd(%rip), %rdx      # 0x6099
callq 0x4f22
leaq 0x16ba(%rip), %rdx      # 0x2d92
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x39, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x16f9
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4993(%rip), %rsi      # 0x609a
leaq 0x4995(%rip), %rdx      # 0x60a3
callq 0x4f22
leaq 0x1702(%rip), %rdx      # 0x2e1c
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x3d, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x173b
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x495b(%rip), %rsi      # 0x60a4
leaq 0x495d(%rip), %rdx      # 0x60ad
callq 0x4f22
leaq 0x174a(%rip), %rdx      # 0x2ea6
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x41, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x177d
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4923(%rip), %rsi      # 0x60ae
leaq 0x4926(%rip), %rdx      # 0x60b8
callq 0x4f22
leaq 0x17aa(%rip), %rdx      # 0x2f48
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x45, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x17bf
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x48ec(%rip), %rsi      # 0x60b9
leaq 0x48ec(%rip), %rdx      # 0x60c0
callq 0x4f22
leaq 0x17ca(%rip), %rdx      # 0x2faa
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x49, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1801
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x48b2(%rip), %rsi      # 0x60c1
leaq 0x48b2(%rip), %rdx      # 0x60c8
callq 0x4f22
leaq 0x17da(%rip), %rdx      # 0x2ffc
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x4d, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1843
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4878(%rip), %rsi      # 0x60c9
leaq 0x487a(%rip), %rdx      # 0x60d2
callq 0x4f22
leaq 0x1822(%rip), %rdx      # 0x3086
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x51, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1885
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4840(%rip), %rsi      # 0x60d3
leaq 0x4845(%rip), %rdx      # 0x60df
callq 0x4f22
leaq 0x1886(%rip), %rdx      # 0x312c
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x55, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x18c7
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x480b(%rip), %rsi      # 0x60e0
leaq 0x480d(%rip), %rdx      # 0x60e9
callq 0x4f22
leaq 0x18a8(%rip), %rdx      # 0x3190
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x59, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1909
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x47d3(%rip), %rsi      # 0x60ea
leaq 0x47d5(%rip), %rdx      # 0x60f3
callq 0x4f22
leaq 0x18f6(%rip), %rdx      # 0x3220
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x5d, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x194b
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x479b(%rip), %rsi      # 0x60f4
leaq 0x479d(%rip), %rdx      # 0x60fd
callq 0x4f22
leaq 0x1944(%rip), %rdx      # 0x32b0
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x61, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x198d
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4763(%rip), %rsi      # 0x60fe
leaq 0x4766(%rip), %rdx      # 0x6108
callq 0x4f22
leaq 0x19b8(%rip), %rdx      # 0x3366
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x65, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x19cf
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x472c(%rip), %rsi      # 0x6109
leaq 0x472c(%rip), %rdx      # 0x6110
callq 0x4f22
leaq 0x19ec(%rip), %rdx      # 0x33dc
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x69, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1a11
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x46f2(%rip), %rsi      # 0x6111
leaq 0x46f2(%rip), %rdx      # 0x6118
callq 0x4f22
leaq 0x1a06(%rip), %rdx      # 0x3438
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x6d, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1a53
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x46b8(%rip), %rsi      # 0x6119
leaq 0x46ba(%rip), %rdx      # 0x6122
callq 0x4f22
leaq 0x1a62(%rip), %rdx      # 0x34d6
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x71, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1a95
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4680(%rip), %rsi      # 0x6123
leaq 0x4685(%rip), %rdx      # 0x612f
callq 0x4f22
leaq 0x1ada(%rip), %rdx      # 0x3590
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x75, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1ad7
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x464b(%rip), %rsi      # 0x6130
leaq 0x464d(%rip), %rdx      # 0x6139
callq 0x4f22
leaq 0x1b10(%rip), %rdx      # 0x3608
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x79, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1b19
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4613(%rip), %rsi      # 0x613a
leaq 0x4615(%rip), %rdx      # 0x6143
callq 0x4f22
leaq 0x1b72(%rip), %rdx      # 0x36ac
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x7d, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1b5b
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x45db(%rip), %rsi      # 0x6144
leaq 0x45dd(%rip), %rdx      # 0x614d
callq 0x4f22
leaq 0x1bd4(%rip), %rdx      # 0x3750
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x81, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1b9d
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x45a3(%rip), %rsi      # 0x614e
leaq 0x45a6(%rip), %rdx      # 0x6158
callq 0x4f22
leaq 0x1c16(%rip), %rdx      # 0x37d4
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x85, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1bdf
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x456c(%rip), %rsi      # 0x6159
leaq 0x456c(%rip), %rdx      # 0x6160
callq 0x4f22
leaq 0x1c0e(%rip), %rdx      # 0x380e
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x89, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1c21
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4532(%rip), %rsi      # 0x6161
leaq 0x4532(%rip), %rdx      # 0x6168
callq 0x4f22
leaq 0x1bfe(%rip), %rdx      # 0x3840
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x8d, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1c63
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x44f8(%rip), %rsi      # 0x6169
leaq 0x44fa(%rip), %rdx      # 0x6172
callq 0x4f22
leaq 0x1c2a(%rip), %rdx      # 0x38ae
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x91, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1ca5
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x44c0(%rip), %rsi      # 0x6173
leaq 0x44c5(%rip), %rdx      # 0x617f
callq 0x4f22
leaq 0x1c70(%rip), %rdx      # 0x3936
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x95, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1ce7
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x448b(%rip), %rsi      # 0x6180
leaq 0x448d(%rip), %rdx      # 0x6189
callq 0x4f22
leaq 0x1c6c(%rip), %rdx      # 0x3974
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x99, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1d29
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4453(%rip), %rsi      # 0x618a
leaq 0x4455(%rip), %rdx      # 0x6193
callq 0x4f22
leaq 0x1ca0(%rip), %rdx      # 0x39ea
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x9d, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1d6b
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x441b(%rip), %rsi      # 0x6194
leaq 0x441d(%rip), %rdx      # 0x619d
callq 0x4f22
leaq 0x1cd4(%rip), %rdx      # 0x3a60
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xa1, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1dad
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x43e3(%rip), %rsi      # 0x619e
leaq 0x43e6(%rip), %rdx      # 0x61a8
callq 0x4f22
leaq 0x1d2a(%rip), %rdx      # 0x3af8
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xa5, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1def
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x43ac(%rip), %rsi      # 0x61a9
leaq 0x43ac(%rip), %rdx      # 0x61b0
callq 0x4f22
leaq 0x1d36(%rip), %rdx      # 0x3b46
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xa9, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1e31
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4372(%rip), %rsi      # 0x61b1
leaq 0x4372(%rip), %rdx      # 0x61b8
callq 0x4f22
leaq 0x1d38(%rip), %rdx      # 0x3b8a
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xad, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1e73
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4338(%rip), %rsi      # 0x61b9
leaq 0x433a(%rip), %rdx      # 0x61c2
callq 0x4f22
leaq 0x1d76(%rip), %rdx      # 0x3c0a
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xb1, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1eb5
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4300(%rip), %rsi      # 0x61c3
leaq 0x4305(%rip), %rdx      # 0x61cf
callq 0x4f22
leaq 0x1dd0(%rip), %rdx      # 0x3ca6
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xb5, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1ef7
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x42cb(%rip), %rsi      # 0x61d0
leaq 0x42cd(%rip), %rdx      # 0x61d9
callq 0x4f22
leaq 0x1de0(%rip), %rdx      # 0x3cf8
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xb9, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1f39
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4293(%rip), %rsi      # 0x61da
leaq 0x4295(%rip), %rdx      # 0x61e3
callq 0x4f22
leaq 0x1e24(%rip), %rdx      # 0x3d7e
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xbd, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1f7b
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x425b(%rip), %rsi      # 0x61e4
leaq 0x425d(%rip), %rdx      # 0x61ed
callq 0x4f22
leaq 0x1e68(%rip), %rdx      # 0x3e04
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xc1, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1fbd
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4223(%rip), %rsi      # 0x61ee
leaq 0x4226(%rip), %rdx      # 0x61f8
callq 0x4f22
leaq 0x1ef2(%rip), %rdx      # 0x3ed0
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xc5, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x1fff
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x41ec(%rip), %rsi      # 0x61f9
leaq 0x41ec(%rip), %rdx      # 0x6200
callq 0x4f22
leaq 0x1f42(%rip), %rdx      # 0x3f62
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xc9, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x2041
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x41b2(%rip), %rsi      # 0x6201
leaq 0x41b2(%rip), %rdx      # 0x6208
callq 0x4f22
leaq 0x1f68(%rip), %rdx      # 0x3fca
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xcd, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x2083
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4178(%rip), %rsi      # 0x6209
leaq 0x417a(%rip), %rdx      # 0x6212
callq 0x4f22
leaq 0x1fe4(%rip), %rdx      # 0x4088
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xd1, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x20c5
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4140(%rip), %rsi      # 0x6213
leaq 0x4145(%rip), %rdx      # 0x621f
callq 0x4f22
leaq 0x2074(%rip), %rdx      # 0x415a
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xd5, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x2107
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x410b(%rip), %rsi      # 0x6220
leaq 0x410d(%rip), %rdx      # 0x6229
callq 0x4f22
leaq 0x20c6(%rip), %rdx      # 0x41ee
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xd9, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x2149
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x40d3(%rip), %rsi      # 0x622a
leaq 0x40d5(%rip), %rdx      # 0x6233
callq 0x4f22
leaq 0x2146(%rip), %rdx      # 0x42b0
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xdd, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x218b
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x409b(%rip), %rsi      # 0x6234
leaq 0x409e(%rip), %rdx      # 0x623e
callq 0x4f22
leaq 0x21c6(%rip), %rdx      # 0x4372
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x6, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x21cd
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4064(%rip), %rsi      # 0x623f
leaq 0x406c(%rip), %rdx      # 0x624e
callq 0x4f22
leaq 0x21f8(%rip), %rdx      # 0x43e6
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xa, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x220f
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x4032(%rip), %rsi      # 0x624f
leaq 0x4037(%rip), %rdx      # 0x625b
callq 0x4f22
leaq 0x21de(%rip), %rdx      # 0x440e
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0xe, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x2251
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x3ffd(%rip), %rsi      # 0x625c
leaq 0x4002(%rip), %rdx      # 0x6268
callq 0x4f22
leaq 0x223c(%rip), %rdx      # 0x44ae
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x16, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x2293
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x3fc8(%rip), %rsi      # 0x6269
leaq 0x3fcf(%rip), %rdx      # 0x6277
callq 0x4f22
leaq 0x2272(%rip), %rdx      # 0x4526
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x1e, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x22d5
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x3f95(%rip), %rsi      # 0x6278
leaq 0x3f98(%rip), %rdx      # 0x6282
callq 0x4f22
leaq 0x22c8(%rip), %rdx      # 0x45be
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x26, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x2317
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x3f5e(%rip), %rsi      # 0x6283
leaq 0x3f66(%rip), %rdx      # 0x6292
callq 0x4f22
leaq 0x230a(%rip), %rdx      # 0x4642
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x2a, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x2359
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x3f2c(%rip), %rsi      # 0x6293
leaq 0x3f31(%rip), %rdx      # 0x629f
callq 0x4f22
leaq 0x2304(%rip), %rdx      # 0x467e
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x2e, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x239b
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x3ef7(%rip), %rsi      # 0x62a0
leaq 0x3efc(%rip), %rdx      # 0x62ac
callq 0x4f22
leaq 0x2370(%rip), %rdx      # 0x472c
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x36, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x23dd
callq 0x10e0
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x3ec2(%rip), %rsi      # 0x62ad
leaq 0x3ec9(%rip), %rdx      # 0x62bb
callq 0x4f22
leaq 0x23b6(%rip), %rdx      # 0x47b4
leaq -0x40(%rbp), %r8
movq %rbx, %rdi
movl $0x3e, %esi
xorl %ecx, %ecx
callq 0x264a
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x241f
callq 0x10e0
addq $0x20, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
jmp 0x2608
jmp 0x261b
movq %rax, %r14
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x261e
callq 0x10e0
jmp 0x261e
movq %rax, %r14
leaq 0x8(%rbx), %r15
leaq 0x40(%rbx), %r12
addq $0x78, %rbx
movq %rbx, %rdi
callq 0x4cd2
movq %r12, %rdi
callq 0x4d72
movq %r15, %rdi
callq 0x4de8
movq %r14, %rdi
callq 0x1160