// File: Ciaxur[P]yagb-emu/src/CPU.cc
// Function: CPU::dump(std::ostream&, bool, char)
void CPU::dump(std::ostream &out, bool isHeader, char endChar) {
  // Store Default Formatting
  std::ios init(nullptr);
  init.copyfmt(out);

  if (isHeader) out << "== REGISTERS ==\n";
  out << std::setfill('0') << std::uppercase << std::hex << "  A: " << std::setw(2) << (int)reg.A << endChar;
  out << std::uppercase << std::hex << "  B: " << std::setw(2) << (int)reg.B << endChar;
  out << std::uppercase << std::hex << "  C: " << std::setw(2) << (int)reg.C << endChar;
  out << std::uppercase << std::hex << "  D: " << std::setw(2) << (int)reg.D << endChar;
  out << std::uppercase << std::hex << "  E: " << std::setw(2) << (int)reg.E << endChar;
  out << std::uppercase << std::hex << "  F: " << std::setw(2) << (int)reg.F << endChar;
  out << std::uppercase << std::hex << "  H: " << std::setw(2) << (int)reg.H << endChar;
  out << std::uppercase << std::hex << "  L: " << std::setw(2) << (int)reg.L << endChar;
  out << std::uppercase << std::hex << "  HL: " << std::setw(4) << (int)((reg.H << 8) | reg.L) << endChar;
  out << std::uppercase << std::hex << "  SP: " << std::setw(4) << SP << endChar;
  out << std::uppercase << std::hex << "  PC: " << std::setw(4) << PC << endChar;

  if (isHeader) out << "\n== STATES ==\n";
  out << std::uppercase << std::hex << "  IME: " << IME << endChar;
  out << std::uppercase << std::hex << "  LY: " << (int)ppu->LY << endChar;
  out << std::uppercase << std::hex << "  LY[0xFF44]: " << (int)memory.memory[0xFF44] << endChar;
  out << std::uppercase << std::hex << "  LCDC [0xFF40]: " << (int)memory.memory[0xFF40] << endChar;
  out << std::uppercase << std::hex << "    " << std::bitset<8>(memory.memory[0xFF40]) << endChar << endChar;
  out << std::uppercase << std::hex << "  STAT [0xFF41]: " << (int)memory.memory[0xFF41] << endChar;
  out << std::uppercase << std::hex << "    " << std::bitset<8>(memory.memory[0xFF41]) << endChar << endChar;

  out << std::uppercase << std::hex << "  IE [0xFFFF]: " << (int)memory.memory[0xFFFF] << endChar;
  out << std::uppercase << std::hex << "    " << std::bitset<8>(memory.memory[0xFFFF]) << endChar << endChar;
  out << std::uppercase << std::hex << "  IF [0xFF0F]: " << (int)memory.memory[0xFF0F] << endChar;
  out << std::uppercase << std::hex << "    " << std::bitset<8>(memory.memory[0xFF0F]) << endChar << endChar;

  out << std::uppercase << std::dec << "  FRAME: " << ppu->currentFrame << endChar;
  out << std::uppercase << std::hex << "  HALTED: " << halted << endChar;
  out << std::uppercase << std::hex << "  RUNNING: " << running << endChar;

  if (isHeader) out << "\n== FLAGS ==\n";
  out << std::uppercase << std::hex << "  Z: " << ((reg.F & 0x80) >> 7) << endChar;
  out << std::uppercase << std::hex << "  N: " << ((reg.F & 0x40) >> 6) << endChar;
  out << std::uppercase << std::hex << "  H: " << ((reg.F & 0x20) >> 5) << endChar;
  out << std::uppercase << std::hex << "  C: " << ((reg.F & 0x10) >> 4) << endChar;

  // Revert Formatting Back
  out.copyfmt(init);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x640, %rsp            # imm = 0x640
movb %cl, %al
movb %dl, %cl
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %cl
movb %cl, -0x11(%rbp)
movb %al, -0x12(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x190(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x120(%rbp), %rdi
movq %rdi, -0x188(%rbp)
callq 0xd2d0
movq -0x188(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq (%rsi), %rax
movq -0x18(%rax), %rax
addq %rax, %rsi
callq 0xd2e0
jmp 0x4acee
testb $0x1, -0x11(%rbp)
je 0x4ad2b
movq -0x10(%rbp), %rdi
leaq 0x126faf(%rip), %rsi    # 0x171cae
callq 0xd5c0
jmp 0x4ad06
jmp 0x4ad2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x120(%rbp), %rdi
callq 0xd570
jmp 0x4c072
movq -0x10(%rbp), %rax
movq %rax, -0x1a0(%rbp)
movl $0x30, %edi
callq 0xb4290
movb %al, -0x191(%rbp)
jmp 0x4ad48
movq -0x1a0(%rbp), %rdi
movb -0x191(%rbp), %al
movb %al, -0x12d(%rbp)
movzbl -0x12d(%rbp), %esi
callq 0xd6f0
movq %rax, -0x1a8(%rbp)
jmp 0x4ad70
movq -0x1a8(%rbp), %rdi
leaq 0x69532(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x1b0(%rbp)
jmp 0x4ad8c
movq -0x1b0(%rbp), %rdi
leaq 0x69546(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x1b8(%rbp)
jmp 0x4ada8
movq -0x1b8(%rbp), %rdi
leaq 0x126f09(%rip), %rsi    # 0x171cbf
callq 0xd5c0
movq %rax, -0x1c0(%rbp)
jmp 0x4adc4
movl $0x2, %edi
callq 0xb4310
movl %eax, -0x1c4(%rbp)
jmp 0x4add6
movq -0x1c0(%rbp), %rdi
movl -0x1c4(%rbp), %eax
movl %eax, -0x134(%rbp)
movl -0x134(%rbp), %esi
callq 0xd530
movq %rax, -0x1d0(%rbp)
jmp 0x4adfd
movq -0x1d0(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x118(%rax), %esi
callq 0xd310
movq %rax, -0x1d8(%rbp)
jmp 0x4ae20
movq -0x1d8(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4ae32
movq -0x10(%rbp), %rdi
leaq 0x69473(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x1e0(%rbp)
jmp 0x4ae4b
movq -0x1e0(%rbp), %rdi
leaq 0x69487(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x1e8(%rbp)
jmp 0x4ae67
movq -0x1e8(%rbp), %rdi
leaq 0x126e50(%rip), %rsi    # 0x171cc5
callq 0xd5c0
movq %rax, -0x1f0(%rbp)
jmp 0x4ae83
movl $0x2, %edi
callq 0xb4310
movl %eax, -0x1f4(%rbp)
jmp 0x4ae95
movq -0x1f0(%rbp), %rdi
movl -0x1f4(%rbp), %eax
movl %eax, -0x138(%rbp)
movl -0x138(%rbp), %esi
callq 0xd530
movq %rax, -0x200(%rbp)
jmp 0x4aebc
movq -0x200(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x119(%rax), %esi
callq 0xd310
movq %rax, -0x208(%rbp)
jmp 0x4aedf
movq -0x208(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4aef1
movq -0x10(%rbp), %rdi
leaq 0x693b4(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x210(%rbp)
jmp 0x4af0a
movq -0x210(%rbp), %rdi
leaq 0x693c8(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x218(%rbp)
jmp 0x4af26
movq -0x218(%rbp), %rdi
leaq 0x126d97(%rip), %rsi    # 0x171ccb
callq 0xd5c0
movq %rax, -0x220(%rbp)
jmp 0x4af42
movl $0x2, %edi
callq 0xb4310
movl %eax, -0x224(%rbp)
jmp 0x4af54
movq -0x220(%rbp), %rdi
movl -0x224(%rbp), %eax
movl %eax, -0x13c(%rbp)
movl -0x13c(%rbp), %esi
callq 0xd530
movq %rax, -0x230(%rbp)
jmp 0x4af7b
movq -0x230(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x11a(%rax), %esi
callq 0xd310
movq %rax, -0x238(%rbp)
jmp 0x4af9e
movq -0x238(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4afb0
movq -0x10(%rbp), %rdi
leaq 0x692f5(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x240(%rbp)
jmp 0x4afc9
movq -0x240(%rbp), %rdi
leaq 0x69309(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x248(%rbp)
jmp 0x4afe5
movq -0x248(%rbp), %rdi
leaq 0x126cde(%rip), %rsi    # 0x171cd1
callq 0xd5c0
movq %rax, -0x250(%rbp)
jmp 0x4b001
movl $0x2, %edi
callq 0xb4310
movl %eax, -0x254(%rbp)
jmp 0x4b013
movq -0x250(%rbp), %rdi
movl -0x254(%rbp), %eax
movl %eax, -0x140(%rbp)
movl -0x140(%rbp), %esi
callq 0xd530
movq %rax, -0x260(%rbp)
jmp 0x4b03a
movq -0x260(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x11b(%rax), %esi
callq 0xd310
movq %rax, -0x268(%rbp)
jmp 0x4b05d
movq -0x268(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4b06f
movq -0x10(%rbp), %rdi
leaq 0x69236(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x270(%rbp)
jmp 0x4b088
movq -0x270(%rbp), %rdi
leaq 0x6924a(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x278(%rbp)
jmp 0x4b0a4
movq -0x278(%rbp), %rdi
leaq 0x126c25(%rip), %rsi    # 0x171cd7
callq 0xd5c0
movq %rax, -0x280(%rbp)
jmp 0x4b0c0
movl $0x2, %edi
callq 0xb4310
movl %eax, -0x284(%rbp)
jmp 0x4b0d2
movq -0x280(%rbp), %rdi
movl -0x284(%rbp), %eax
movl %eax, -0x144(%rbp)
movl -0x144(%rbp), %esi
callq 0xd530
movq %rax, -0x290(%rbp)
jmp 0x4b0f9
movq -0x290(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x11c(%rax), %esi
callq 0xd310
movq %rax, -0x298(%rbp)
jmp 0x4b11c
movq -0x298(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4b12e
movq -0x10(%rbp), %rdi
leaq 0x69177(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x2a0(%rbp)
jmp 0x4b147
movq -0x2a0(%rbp), %rdi
leaq 0x6918b(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x2a8(%rbp)
jmp 0x4b163
movq -0x2a8(%rbp), %rdi
leaq 0x126b6c(%rip), %rsi    # 0x171cdd
callq 0xd5c0
movq %rax, -0x2b0(%rbp)
jmp 0x4b17f
movl $0x2, %edi
callq 0xb4310
movl %eax, -0x2b4(%rbp)
jmp 0x4b191
movq -0x2b0(%rbp), %rdi
movl -0x2b4(%rbp), %eax
movl %eax, -0x148(%rbp)
movl -0x148(%rbp), %esi
callq 0xd530
movq %rax, -0x2c0(%rbp)
jmp 0x4b1b8
movq -0x2c0(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x11d(%rax), %esi
callq 0xd310
movq %rax, -0x2c8(%rbp)
jmp 0x4b1db
movq -0x2c8(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4b1ed
movq -0x10(%rbp), %rdi
leaq 0x690b8(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x2d0(%rbp)
jmp 0x4b206
movq -0x2d0(%rbp), %rdi
leaq 0x690cc(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x2d8(%rbp)
jmp 0x4b222
movq -0x2d8(%rbp), %rdi
leaq 0x126ab3(%rip), %rsi    # 0x171ce3
callq 0xd5c0
movq %rax, -0x2e0(%rbp)
jmp 0x4b23e
movl $0x2, %edi
callq 0xb4310
movl %eax, -0x2e4(%rbp)
jmp 0x4b250
movq -0x2e0(%rbp), %rdi
movl -0x2e4(%rbp), %eax
movl %eax, -0x14c(%rbp)
movl -0x14c(%rbp), %esi
callq 0xd530
movq %rax, -0x2f0(%rbp)
jmp 0x4b277
movq -0x2f0(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x11e(%rax), %esi
callq 0xd310
movq %rax, -0x2f8(%rbp)
jmp 0x4b29a
movq -0x2f8(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4b2ac
movq -0x10(%rbp), %rdi
leaq 0x68ff9(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x300(%rbp)
jmp 0x4b2c5
movq -0x300(%rbp), %rdi
leaq 0x6900d(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x308(%rbp)
jmp 0x4b2e1
movq -0x308(%rbp), %rdi
leaq 0x1269fa(%rip), %rsi    # 0x171ce9
callq 0xd5c0
movq %rax, -0x310(%rbp)
jmp 0x4b2fd
movl $0x2, %edi
callq 0xb4310
movl %eax, -0x314(%rbp)
jmp 0x4b30f
movq -0x310(%rbp), %rdi
movl -0x314(%rbp), %eax
movl %eax, -0x150(%rbp)
movl -0x150(%rbp), %esi
callq 0xd530
movq %rax, -0x320(%rbp)
jmp 0x4b336
movq -0x320(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x11f(%rax), %esi
callq 0xd310
movq %rax, -0x328(%rbp)
jmp 0x4b359
movq -0x328(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4b36b
movq -0x10(%rbp), %rdi
leaq 0x68f3a(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x330(%rbp)
jmp 0x4b384
movq -0x330(%rbp), %rdi
leaq 0x68f4e(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x338(%rbp)
jmp 0x4b3a0
movq -0x338(%rbp), %rdi
leaq 0x126941(%rip), %rsi    # 0x171cef
callq 0xd5c0
movq %rax, -0x340(%rbp)
jmp 0x4b3bc
movl $0x4, %edi
callq 0xb4310
movl %eax, -0x344(%rbp)
jmp 0x4b3ce
movq -0x340(%rbp), %rdi
movl -0x344(%rbp), %eax
movl %eax, -0x154(%rbp)
movl -0x154(%rbp), %esi
callq 0xd530
movq %rax, -0x350(%rbp)
jmp 0x4b3f5
movq -0x350(%rbp), %rdi
movq -0x190(%rbp), %rax
movw 0x11e(%rax), %ax
rolw $0x8, %ax
movzwl %ax, %esi
callq 0xd310
movq %rax, -0x358(%rbp)
jmp 0x4b41f
movq -0x358(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4b431
movq -0x10(%rbp), %rdi
leaq 0x68e74(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x360(%rbp)
jmp 0x4b44a
movq -0x360(%rbp), %rdi
leaq 0x68e88(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x368(%rbp)
jmp 0x4b466
movq -0x368(%rbp), %rdi
leaq 0x126882(%rip), %rsi    # 0x171cf6
callq 0xd5c0
movq %rax, -0x370(%rbp)
jmp 0x4b482
movl $0x4, %edi
callq 0xb4310
movl %eax, -0x374(%rbp)
jmp 0x4b494
movq -0x370(%rbp), %rdi
movl -0x374(%rbp), %eax
movl %eax, -0x158(%rbp)
movl -0x158(%rbp), %esi
callq 0xd530
movq %rax, -0x380(%rbp)
jmp 0x4b4bb
movq -0x380(%rbp), %rdi
movq -0x190(%rbp), %rax
movzwl 0x12e(%rax), %esi
callq 0xd320
movq %rax, -0x388(%rbp)
jmp 0x4b4de
movq -0x388(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4b4f0
movq -0x10(%rbp), %rdi
leaq 0x68db5(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x390(%rbp)
jmp 0x4b509
movq -0x390(%rbp), %rdi
leaq 0x68dc9(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x398(%rbp)
jmp 0x4b525
movq -0x398(%rbp), %rdi
leaq 0x1267ca(%rip), %rsi    # 0x171cfd
callq 0xd5c0
movq %rax, -0x3a0(%rbp)
jmp 0x4b541
movl $0x4, %edi
callq 0xb4310
movl %eax, -0x3a4(%rbp)
jmp 0x4b553
movq -0x3a0(%rbp), %rdi
movl -0x3a4(%rbp), %eax
movl %eax, -0x15c(%rbp)
movl -0x15c(%rbp), %esi
callq 0xd530
movq %rax, -0x3b0(%rbp)
jmp 0x4b57a
movq -0x3b0(%rbp), %rdi
movq -0x190(%rbp), %rax
movzwl 0x12c(%rax), %esi
callq 0xd320
movq %rax, -0x3b8(%rbp)
jmp 0x4b59d
movq -0x3b8(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4b5af
testb $0x1, -0x11(%rbp)
je 0x4b5c9
movq -0x10(%rbp), %rdi
leaq 0x126744(%rip), %rsi    # 0x171d04
callq 0xd5c0
jmp 0x4b5c7
jmp 0x4b5c9
movq -0x10(%rbp), %rdi
leaq 0x68cdc(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x3c0(%rbp)
jmp 0x4b5e2
movq -0x3c0(%rbp), %rdi
leaq 0x68cf0(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x3c8(%rbp)
jmp 0x4b5fe
movq -0x3c8(%rbp), %rdi
leaq 0x126707(%rip), %rsi    # 0x171d13
callq 0xd5c0
movq %rax, -0x3d0(%rbp)
jmp 0x4b61a
movq -0x3d0(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x128(%rax), %esi
andl $0x1, %esi
callq 0xd260
movq %rax, -0x3d8(%rbp)
jmp 0x4b640
movq -0x3d8(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4b652
movq -0x10(%rbp), %rdi
leaq 0x68c53(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x3e0(%rbp)
jmp 0x4b66b
movq -0x3e0(%rbp), %rdi
leaq 0x68c67(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x3e8(%rbp)
jmp 0x4b687
movq -0x3e8(%rbp), %rdi
leaq 0x126686(%rip), %rsi    # 0x171d1b
callq 0xd5c0
movq %rax, -0x3f0(%rbp)
jmp 0x4b6a3
movq -0x3f0(%rbp), %rdi
movq -0x190(%rbp), %rax
movq (%rax), %rax
movzbl 0x20(%rax), %esi
callq 0xd310
movq %rax, -0x3f8(%rbp)
jmp 0x4b6c6
movq -0x3f8(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4b6d8
movq -0x10(%rbp), %rdi
leaq 0x68bcd(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x400(%rbp)
jmp 0x4b6f1
movq -0x400(%rbp), %rdi
leaq 0x68be1(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x408(%rbp)
jmp 0x4b70d
movq -0x408(%rbp), %rdi
leaq 0x126607(%rip), %rsi    # 0x171d22
callq 0xd5c0
movq %rax, -0x410(%rbp)
jmp 0x4b729
movq -0x410(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x10094(%rax), %esi
callq 0xd310
movq %rax, -0x418(%rbp)
jmp 0x4b74c
movq -0x418(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4b75e
movq -0x10(%rbp), %rdi
leaq 0x68b47(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x420(%rbp)
jmp 0x4b777
movq -0x420(%rbp), %rdi
leaq 0x68b5b(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x428(%rbp)
jmp 0x4b793
movq -0x428(%rbp), %rdi
leaq 0x126590(%rip), %rsi    # 0x171d31
callq 0xd5c0
movq %rax, -0x430(%rbp)
jmp 0x4b7af
movq -0x430(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x10090(%rax), %esi
callq 0xd310
movq %rax, -0x438(%rbp)
jmp 0x4b7d2
movq -0x438(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4b7e4
movq -0x10(%rbp), %rdi
leaq 0x68ac1(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x440(%rbp)
jmp 0x4b7fd
movq -0x440(%rbp), %rdi
leaq 0x68ad5(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x448(%rbp)
jmp 0x4b819
movq -0x448(%rbp), %rdi
leaq 0x12aa46(%rip), %rsi    # 0x17626d
callq 0xd5c0
movq %rax, -0x450(%rbp)
jmp 0x4b835
movq -0x190(%rbp), %rax
movzbl 0x10090(%rax), %eax
movl %eax, %esi
leaq -0x168(%rbp), %rdi
movq %rdi, -0x460(%rbp)
callq 0xb4430
movq -0x450(%rbp), %rdi
movq -0x460(%rbp), %rsi
callq 0xb4330
movq %rax, -0x458(%rbp)
jmp 0x4b874
movq -0x458(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
movq %rax, -0x468(%rbp)
jmp 0x4b88d
movq -0x468(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4b89f
movq -0x10(%rbp), %rdi
leaq 0x68a06(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x470(%rbp)
jmp 0x4b8b8
movq -0x470(%rbp), %rdi
leaq 0x68a1a(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x478(%rbp)
jmp 0x4b8d4
movq -0x478(%rbp), %rdi
leaq 0x126461(%rip), %rsi    # 0x171d43
callq 0xd5c0
movq %rax, -0x480(%rbp)
jmp 0x4b8f0
movq -0x480(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x10091(%rax), %esi
callq 0xd310
movq %rax, -0x488(%rbp)
jmp 0x4b913
movq -0x488(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4b925
movq -0x10(%rbp), %rdi
leaq 0x68980(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x490(%rbp)
jmp 0x4b93e
movq -0x490(%rbp), %rdi
leaq 0x68994(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x498(%rbp)
jmp 0x4b95a
movq -0x498(%rbp), %rdi
leaq 0x12a905(%rip), %rsi    # 0x17626d
callq 0xd5c0
movq %rax, -0x4a0(%rbp)
jmp 0x4b976
movq -0x190(%rbp), %rax
movzbl 0x10091(%rax), %eax
movl %eax, %esi
leaq -0x170(%rbp), %rdi
movq %rdi, -0x4b0(%rbp)
callq 0xb4430
movq -0x4a0(%rbp), %rdi
movq -0x4b0(%rbp), %rsi
callq 0xb4330
movq %rax, -0x4a8(%rbp)
jmp 0x4b9b5
movq -0x4a8(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
movq %rax, -0x4b8(%rbp)
jmp 0x4b9ce
movq -0x4b8(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4b9e0
movq -0x10(%rbp), %rdi
leaq 0x688c5(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x4c0(%rbp)
jmp 0x4b9f9
movq -0x4c0(%rbp), %rdi
leaq 0x688d9(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x4c8(%rbp)
jmp 0x4ba15
movq -0x4c8(%rbp), %rdi
leaq 0x126332(%rip), %rsi    # 0x171d55
callq 0xd5c0
movq %rax, -0x4d0(%rbp)
jmp 0x4ba31
movq -0x4d0(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x1014f(%rax), %esi
callq 0xd310
movq %rax, -0x4d8(%rbp)
jmp 0x4ba54
movq -0x4d8(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4ba66
movq -0x10(%rbp), %rdi
leaq 0x6883f(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x4e0(%rbp)
jmp 0x4ba7f
movq -0x4e0(%rbp), %rdi
leaq 0x68853(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x4e8(%rbp)
jmp 0x4ba9b
movq -0x4e8(%rbp), %rdi
leaq 0x12a7c4(%rip), %rsi    # 0x17626d
callq 0xd5c0
movq %rax, -0x4f0(%rbp)
jmp 0x4bab7
movq -0x190(%rbp), %rax
movzbl 0x1014f(%rax), %eax
movl %eax, %esi
leaq -0x178(%rbp), %rdi
movq %rdi, -0x500(%rbp)
callq 0xb4430
movq -0x4f0(%rbp), %rdi
movq -0x500(%rbp), %rsi
callq 0xb4330
movq %rax, -0x4f8(%rbp)
jmp 0x4baf6
movq -0x4f8(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
movq %rax, -0x508(%rbp)
jmp 0x4bb0f
movq -0x508(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4bb21
movq -0x10(%rbp), %rdi
leaq 0x68784(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x510(%rbp)
jmp 0x4bb3a
movq -0x510(%rbp), %rdi
leaq 0x68798(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x518(%rbp)
jmp 0x4bb56
movq -0x518(%rbp), %rdi
leaq 0x126201(%rip), %rsi    # 0x171d65
callq 0xd5c0
movq %rax, -0x520(%rbp)
jmp 0x4bb72
movq -0x520(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x1005f(%rax), %esi
callq 0xd310
movq %rax, -0x528(%rbp)
jmp 0x4bb95
movq -0x528(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4bba7
movq -0x10(%rbp), %rdi
leaq 0x686fe(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x530(%rbp)
jmp 0x4bbc0
movq -0x530(%rbp), %rdi
leaq 0x68712(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x538(%rbp)
jmp 0x4bbdc
movq -0x538(%rbp), %rdi
leaq 0x12a683(%rip), %rsi    # 0x17626d
callq 0xd5c0
movq %rax, -0x540(%rbp)
jmp 0x4bbf8
movq -0x190(%rbp), %rax
movzbl 0x1005f(%rax), %eax
movl %eax, %esi
leaq -0x180(%rbp), %rdi
movq %rdi, -0x550(%rbp)
callq 0xb4430
movq -0x540(%rbp), %rdi
movq -0x550(%rbp), %rsi
callq 0xb4330
movq %rax, -0x548(%rbp)
jmp 0x4bc37
movq -0x548(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
movq %rax, -0x558(%rbp)
jmp 0x4bc50
movq -0x558(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4bc62
movq -0x10(%rbp), %rdi
leaq 0x68643(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x560(%rbp)
jmp 0x4bc7b
movq -0x560(%rbp), %rdi
leaq 0x687f7(%rip), %rsi     # 0xb4480
callq 0xdb40
movq %rax, -0x568(%rbp)
jmp 0x4bc97
movq -0x568(%rbp), %rdi
leaq 0x1260d0(%rip), %rsi    # 0x171d75
callq 0xd5c0
movq %rax, -0x570(%rbp)
jmp 0x4bcb3
movq -0x570(%rbp), %rdi
movq -0x190(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rsi
callq 0xd9c0
movq %rax, -0x578(%rbp)
jmp 0x4bcd6
movq -0x578(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4bce8
movq -0x10(%rbp), %rdi
leaq 0x685bd(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x580(%rbp)
jmp 0x4bd01
movq -0x580(%rbp), %rdi
leaq 0x685d1(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x588(%rbp)
jmp 0x4bd1d
movq -0x588(%rbp), %rdi
leaq 0x126054(%rip), %rsi    # 0x171d7f
callq 0xd5c0
movq %rax, -0x590(%rbp)
jmp 0x4bd39
movq -0x590(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x12a(%rax), %esi
andl $0x1, %esi
callq 0xd260
movq %rax, -0x598(%rbp)
jmp 0x4bd5f
movq -0x598(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4bd71
movq -0x10(%rbp), %rdi
leaq 0x68534(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x5a0(%rbp)
jmp 0x4bd8a
movq -0x5a0(%rbp), %rdi
leaq 0x68548(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x5a8(%rbp)
jmp 0x4bda6
movq -0x5a8(%rbp), %rdi
leaq 0x125fd6(%rip), %rsi    # 0x171d8a
callq 0xd5c0
movq %rax, -0x5b0(%rbp)
jmp 0x4bdc2
movq -0x5b0(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x12b(%rax), %esi
andl $0x1, %esi
callq 0xd260
movq %rax, -0x5b8(%rbp)
jmp 0x4bde8
movq -0x5b8(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4bdfa
testb $0x1, -0x11(%rbp)
je 0x4be14
movq -0x10(%rbp), %rdi
leaq 0x125f8b(%rip), %rsi    # 0x171d96
callq 0xd5c0
jmp 0x4be12
jmp 0x4be14
movq -0x10(%rbp), %rdi
leaq 0x68491(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x5c0(%rbp)
jmp 0x4be2d
movq -0x5c0(%rbp), %rdi
leaq 0x684a5(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x5c8(%rbp)
jmp 0x4be49
movq -0x5c8(%rbp), %rdi
leaq 0x125f4d(%rip), %rsi    # 0x171da4
callq 0xd5c0
movq %rax, -0x5d0(%rbp)
jmp 0x4be65
movq -0x5d0(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x11d(%rax), %esi
shrl $0x7, %esi
callq 0xd310
movq %rax, -0x5d8(%rbp)
jmp 0x4be8b
movq -0x5d8(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4be9d
movq -0x10(%rbp), %rdi
leaq 0x68408(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x5e0(%rbp)
jmp 0x4beb6
movq -0x5e0(%rbp), %rdi
leaq 0x6841c(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x5e8(%rbp)
jmp 0x4bed2
movq -0x5e8(%rbp), %rdi
leaq 0x125eca(%rip), %rsi    # 0x171daa
callq 0xd5c0
movq %rax, -0x5f0(%rbp)
jmp 0x4beee
movq -0x5f0(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x11d(%rax), %esi
andl $0x40, %esi
shrl $0x6, %esi
callq 0xd310
movq %rax, -0x5f8(%rbp)
jmp 0x4bf17
movq -0x5f8(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4bf29
movq -0x10(%rbp), %rdi
leaq 0x6837c(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x600(%rbp)
jmp 0x4bf42
movq -0x600(%rbp), %rdi
leaq 0x68390(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x608(%rbp)
jmp 0x4bf5e
movq -0x608(%rbp), %rdi
leaq 0x125d77(%rip), %rsi    # 0x171ce3
callq 0xd5c0
movq %rax, -0x610(%rbp)
jmp 0x4bf7a
movq -0x610(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x11d(%rax), %esi
andl $0x20, %esi
shrl $0x5, %esi
callq 0xd310
movq %rax, -0x618(%rbp)
jmp 0x4bfa3
movq -0x618(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4bfb5
movq -0x10(%rbp), %rdi
leaq 0x682f0(%rip), %rsi     # 0xb42b0
callq 0xdb40
movq %rax, -0x620(%rbp)
jmp 0x4bfce
movq -0x620(%rbp), %rdi
leaq 0x68304(%rip), %rsi     # 0xb42e0
callq 0xdb40
movq %rax, -0x628(%rbp)
jmp 0x4bfea
movq -0x628(%rbp), %rdi
leaq 0x125cd3(%rip), %rsi    # 0x171ccb
callq 0xd5c0
movq %rax, -0x630(%rbp)
jmp 0x4c006
movq -0x630(%rbp), %rdi
movq -0x190(%rbp), %rax
movzbl 0x11d(%rax), %esi
andl $0x10, %esi
shrl $0x4, %esi
callq 0xd310
movq %rax, -0x638(%rbp)
jmp 0x4c02f
movq -0x638(%rbp), %rdi
movsbl -0x12(%rbp), %esi
callq 0xd630
jmp 0x4c041
movq -0x10(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
leaq -0x120(%rbp), %rsi
callq 0xd2e0
jmp 0x4c05d
leaq -0x120(%rbp), %rdi
callq 0xd570
addq $0x640, %rsp            # imm = 0x640
popq %rbp
retq
movq -0x128(%rbp), %rdi
callq 0xd620
nop