// File: /workspace/github_cpp_makefile_star2_O3/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 0x4fca
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 0x4fca
leaq 0x1426(%rip), %rdx      # 0x27a4
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 0x4fca
leaq 0x1446(%rip), %rdx      # 0x2806
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 0x4fca
leaq 0x144e(%rip), %rdx      # 0x2850
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 0x4fca
leaq 0x1496(%rip), %rdx      # 0x28da
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 0x4fca
leaq 0x14fa(%rip), %rdx      # 0x2980
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 0x4fca
leaq 0x151c(%rip), %rdx      # 0x29e4
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 0x4fca
leaq 0x156a(%rip), %rdx      # 0x2a74
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 0x4fca
leaq 0x15b8(%rip), %rdx      # 0x2b04
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 0x4fca
leaq 0x1618(%rip), %rdx      # 0x2ba6
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 0x4fca
leaq 0x1638(%rip), %rdx      # 0x2c08
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 0x4fca
leaq 0x1640(%rip), %rdx      # 0x2c52
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 0x4fca
leaq 0x1688(%rip), %rdx      # 0x2cdc
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 0x4fca
leaq 0x16ec(%rip), %rdx      # 0x2d82
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 0x4fca
leaq 0x170e(%rip), %rdx      # 0x2de6
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 0x4fca
leaq 0x175c(%rip), %rdx      # 0x2e76
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 0x4fca
leaq 0x17aa(%rip), %rdx      # 0x2f06
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 0x4fca
leaq 0x1812(%rip), %rdx      # 0x2fb0
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 0x4fca
leaq 0x183a(%rip), %rdx      # 0x301a
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 0x4fca
leaq 0x184e(%rip), %rdx      # 0x3070
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 0x4fca
leaq 0x189e(%rip), %rdx      # 0x3102
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 0x4fca
leaq 0x190a(%rip), %rdx      # 0x31b0
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 0x4fca
leaq 0x1934(%rip), %rdx      # 0x321c
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 0x4fca
leaq 0x198a(%rip), %rdx      # 0x32b4
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 0x4fca
leaq 0x19e0(%rip), %rdx      # 0x334c
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 0x4fca
leaq 0x1a54(%rip), %rdx      # 0x3402
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 0x4fca
leaq 0x1a88(%rip), %rdx      # 0x3478
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 0x4fca
leaq 0x1aa2(%rip), %rdx      # 0x34d4
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 0x4fca
leaq 0x1afe(%rip), %rdx      # 0x3572
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 0x4fca
leaq 0x1b76(%rip), %rdx      # 0x362c
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 0x4fca
leaq 0x1bac(%rip), %rdx      # 0x36a4
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 0x4fca
leaq 0x1c0e(%rip), %rdx      # 0x3748
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 0x4fca
leaq 0x1c70(%rip), %rdx      # 0x37ec
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 0x4fca
leaq 0x1cb2(%rip), %rdx      # 0x3870
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 0x4fca
leaq 0x1caa(%rip), %rdx      # 0x38aa
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 0x4fca
leaq 0x1c9a(%rip), %rdx      # 0x38dc
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 0x4fca
leaq 0x1cc6(%rip), %rdx      # 0x394a
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 0x4fca
leaq 0x1d0c(%rip), %rdx      # 0x39d2
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 0x4fca
leaq 0x1d08(%rip), %rdx      # 0x3a10
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 0x4fca
leaq 0x1d3c(%rip), %rdx      # 0x3a86
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 0x4fca
leaq 0x1d70(%rip), %rdx      # 0x3afc
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 0x4fca
leaq 0x1dcc(%rip), %rdx      # 0x3b9a
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 0x4fca
leaq 0x1dde(%rip), %rdx      # 0x3bee
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 0x4fca
leaq 0x1de6(%rip), %rdx      # 0x3c38
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 0x4fca
leaq 0x1e2a(%rip), %rdx      # 0x3cbe
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 0x4fca
leaq 0x1e8a(%rip), %rdx      # 0x3d60
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 0x4fca
leaq 0x1ea0(%rip), %rdx      # 0x3db8
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 0x4fca
leaq 0x1eea(%rip), %rdx      # 0x3e44
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 0x4fca
leaq 0x1f34(%rip), %rdx      # 0x3ed0
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 0x4fca
leaq 0x1fbe(%rip), %rdx      # 0x3f9c
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 0x4fca
leaq 0x200e(%rip), %rdx      # 0x402e
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 0x4fca
leaq 0x203c(%rip), %rdx      # 0x409e
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 0x4fca
leaq 0x20b8(%rip), %rdx      # 0x415c
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 0x4fca
leaq 0x2148(%rip), %rdx      # 0x422e
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 0x4fca
leaq 0x219a(%rip), %rdx      # 0x42c2
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 0x4fca
leaq 0x221a(%rip), %rdx      # 0x4384
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 0x4fca
leaq 0x229a(%rip), %rdx      # 0x4446
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 0x4fca
leaq 0x22d6(%rip), %rdx      # 0x44c4
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 0x4fca
leaq 0x22be(%rip), %rdx      # 0x44ee
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 0x4fca
leaq 0x2324(%rip), %rdx      # 0x4596
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 0x4fca
leaq 0x2364(%rip), %rdx      # 0x4618
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 0x4fca
leaq 0x23c2(%rip), %rdx      # 0x46b8
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 0x4fca
leaq 0x2404(%rip), %rdx      # 0x473c
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 0x4fca
leaq 0x23fe(%rip), %rdx      # 0x4778
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 0x4fca
leaq 0x246a(%rip), %rdx      # 0x4826
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 0x4fca
leaq 0x24b0(%rip), %rdx      # 0x48ae
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 0x4d76
movq %r12, %rdi
callq 0x4e16
movq %r15, %rdi
callq 0x4e8c
movq %r14, %rdi
callq 0x1160