// File: Cicko[P]Ram-Machine/RamMachine.cpp
// Function: RamMachine::runProgram(bool)
void RamMachine::runProgram (bool trace) {
  pc_ = 0;
  error_ = false;
  outTape_->reset ();
  memory_->reset ();
  inTape_->reset();
  bool halt = false;

  while (!halt && !error_)
  {

    bool salto = false;
    Instruction * actual = program_->getInstruction (pc_);

    if (actual->getOp () == "read") {               // READ
      int inTapeData = inTape_->read ();
      switch (actual->getType ()) {
        case INDIRECT:   // Indirect
          memory_->write (inTapeData,memory_->read (stoi (actual->getOperand ())));
          break;
        case DIRECT:   // Direct
          memory_->write (inTapeData,stoi (actual->getOperand ()));
          break;
        case IMMEDIATE:   // Immediate
          cout << "El modo inmediato no tiene sentido en la operacion READ. Saliendo al menu..." << endl;
          error_ = true;
          break;
        default:
          cout << "No se reconoce este tipo de READ. Saliendo al menu..." << endl;
          error_ = true;
      }
    }
    else if (actual->getOp () == "write") {         // WRITE
      switch (actual->getType ()) {
        case INDIRECT:
          outTape_->write (memory_->read (memory_->read (stoi (actual->getOperand ()))));
          break;
        case DIRECT:
          outTape_->write (memory_->read (stoi (actual->getOperand ())));
          break;
        case IMMEDIATE:
          outTape_->write (stoi (actual->getOperand()));
          break;
        default:
          cout << "No se reconoce este tipo de WRITE. Saliendo al menu..." << endl;
          error_ = true;
      }
    }
    else if (actual->getOp () == "load") {          // LOAD
      switch (actual->getType ()) {
        case INDIRECT:
          memory_->write (memory_->read (memory_->read (stoi (actual->getOperand ()))),ACCUM);
          break;
        case DIRECT:
          memory_->write (memory_->read (stoi (actual->getOperand ())),ACCUM);
          break;
        case IMMEDIATE:
          memory_->write (stoi (actual->getOperand ()),ACCUM);
          break;
        default:
          cout << "No se reconoce este tipo de LOAD. Saliendo al menu..." << endl;
          error_ = true;
      }
    }
    else if (actual->getOp() == "store") {
      switch (actual->getType()) {
        case INDIRECT:
          memory_->write (memory_->read (ACCUM), memory_->read (stoi (actual->getOperand())));
          break;
        case DIRECT:
          memory_->write (memory_->read (ACCUM),stoi (actual->getOperand()));
          break;
        case IMMEDIATE:
          cout << "No esta permitido el modo inmediato en la operacion STORE. Saliendo al menu.." << endl;
          error_ = true;
          break;
        default:
          cout << "No se reconoce este tipo de STORE. Saliendo al menu..." << endl;
          error_ = true;
      }
    }
    else if (actual->getOp() == "add") {
      switch (actual->getType()) {
        case INDIRECT:
          memory_->write(memory_->read (ACCUM) + memory_->read (memory_->read (stoi (actual->getOperand()))),ACCUM);
          break;
        case DIRECT:
          memory_->write (memory_->read (ACCUM) + memory_->read (stoi (actual->getOperand ())),ACCUM);
          break;
        case IMMEDIATE:
          memory_->write (memory_->read (ACCUM) + stoi (actual->getOperand ()),ACCUM);
          break;
        default:
          cout << "No se reconoce este tipo de SUB. Saliendo al menu..." << endl;
          error_ = true;
      }
    }
    else if (actual->getOp() == "sub") {
      switch (actual->getType()) {
        case INDIRECT:
          memory_->write(memory_->read (ACCUM) - memory_->read (memory_->read (stoi (actual->getOperand()))),ACCUM);
          break;
        case DIRECT:
          memory_->write (memory_->read (ACCUM) - memory_->read (stoi (actual->getOperand ())),ACCUM);
          break;
        case IMMEDIATE:
          memory_->write (memory_->read (ACCUM) - stoi (actual->getOperand ()),ACCUM);
          break;
        default:
          cout << "No se reconoce este tipo de SUB. Saliendo al menu..." << endl;
          error_ = true;
      }
    }
    else if (actual->getOp() == "mul") {
      switch (actual->getType()) {
        case INDIRECT:
          memory_->write(memory_->read (ACCUM) * memory_->read (memory_->read (stoi (actual->getOperand()))),ACCUM);
          break;
        case DIRECT:
          memory_->write (memory_->read (ACCUM) * memory_->read (stoi (actual->getOperand ())),ACCUM);
          break;
        case IMMEDIATE:
          memory_->write (memory_->read (ACCUM) * stoi (actual->getOperand ()),ACCUM);
          break;
        default:
          cout << "No se reconoce este tipo de MUL. Saliendo al menu..." << endl;
          error_ = true;
      }
    }
    else if (actual->getOp() == "div") {
      switch (actual->getType()) {
        case INDIRECT:
          memory_->write(memory_->read (ACCUM) / memory_->read (memory_->read (stoi (actual->getOperand()))),ACCUM);
          break;
        case DIRECT:
          memory_->write (memory_->read (ACCUM) / memory_->read (stoi (actual->getOperand ())),ACCUM);
          break;
        case IMMEDIATE:
          memory_->write (memory_->read (ACCUM) / stoi (actual->getOperand ()),ACCUM);
          break;
        default:
          cout << "No se reconoce este tipo de DIV. Saliendo al menu..." << endl;
          error_ = true;
      }
    }
    else if (actual->getOp () == "jump") {
      salto = true;
      jumpManager (actual);
    }
    else if (actual->getOp () == "jzero") {
      if (memory_->read (ACCUM) == 0) {
        salto = true;
        jumpManager (actual);
      }
    }
    else if (actual->getOp() == "jgtz") {
      if (memory_->read (ACCUM) > 0) {
        salto = true;
        jumpManager (actual);
      }
    }
    else if (actual->getOp() == "halt") {
      cout << "Se ha alcanzado HALT en la linea " << pc_ << ". Ahora se procedera a guardar el contenido en el fichero de salida." << endl;
      halt = true;
    }
    if (trace) {
      showActualState (actual);
    }
    if(error_) {
      cout << "We get error at line " << pc_ << endl;
      break;
    }
    if(!salto)
      pc_++;
  }
  saveToOutputTape ();
}

// Assembly:
subq $0x8d8, %rsp            # imm = 0x8D8
movb %sil, %al
movq %rdi, 0x8d0(%rsp)
andb $0x1, %al
movb %al, 0x8cf(%rsp)
movq 0x8d0(%rsp), %rax
movq %rax, 0x468(%rsp)
movl $0x0, 0x20(%rax)
movb $0x0, 0x24(%rax)
movq 0x8(%rax), %rdi
callq 0x384a0
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x38980
movq 0x468(%rsp), %rax
movq (%rax), %rdi
callq 0x37910
movb $0x0, 0x8ce(%rsp)
xorl %eax, %eax
testb $0x1, 0x8ce(%rsp)
movb %al, 0x467(%rsp)
jne 0x34eaf
movq 0x468(%rsp), %rax
movb 0x24(%rax), %al
xorb $-0x1, %al
movb %al, 0x467(%rsp)
movb 0x467(%rsp), %al
testb $0x1, %al
jne 0x34ebf
jmp 0x36d27
movq 0x468(%rsp), %rax
movb $0x0, 0x8cd(%rsp)
movq 0x18(%rax), %rdi
movl 0x20(%rax), %esi
callq 0x9a20
movq %rax, 0x8c0(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x8a0(%rsp), %rdi
movq %rdi, 0x458(%rsp)
callq 0xa3a0
movq 0x458(%rsp), %rdi
leaq 0x54cd(%rip), %rsi      # 0x3a3dc
callq 0x9f50
movb %al, 0x466(%rsp)
jmp 0x34f1d
leaq 0x8a0(%rsp), %rdi
callq 0x62a0
movb 0x466(%rsp), %al
testb $0x1, %al
jne 0x34f3a
jmp 0x351aa
movq 0x468(%rsp), %rax
movq (%rax), %rdi
callq 0x37810
movl %eax, 0x890(%rsp)
movq 0x8c0(%rsp), %rdi
callq 0x37390
movsbl %al, %eax
movl %eax, 0x454(%rsp)
subl $0x2a, %eax
je 0x34fbc
jmp 0x34f6f
movl 0x454(%rsp), %eax
subl $0x3d, %eax
je 0x35147
jmp 0x34f81
movl 0x454(%rsp), %eax
subl $0x64, %eax
je 0x35094
jmp 0x35177
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x8a0(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x430(%rsp)
movq %rax, 0x438(%rsp)
movl 0x890(%rsp), %eax
movl %eax, 0x444(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x870(%rsp), %rdi
movq %rdi, 0x448(%rsp)
callq 0x373f0
movq 0x448(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x450(%rsp)
jmp 0x35022
movl 0x450(%rsp), %esi
movq 0x430(%rsp), %rdi
callq 0x38940
movl %eax, 0x42c(%rsp)
jmp 0x3503f
movl 0x42c(%rsp), %edx
movl 0x444(%rsp), %esi
movq 0x438(%rsp), %rdi
callq 0x38900
jmp 0x3505c
leaq 0x870(%rsp), %rdi
callq 0x62a0
jmp 0x351a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x870(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x410(%rsp)
movl 0x890(%rsp), %eax
movl %eax, 0x41c(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x850(%rsp), %rdi
movq %rdi, 0x420(%rsp)
callq 0x373f0
movq 0x420(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x428(%rsp)
jmp 0x350f2
movl 0x428(%rsp), %edx
movl 0x41c(%rsp), %esi
movq 0x410(%rsp), %rdi
callq 0x38900
jmp 0x3510f
leaq 0x850(%rsp), %rdi
callq 0x62a0
jmp 0x351a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x850(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x1ae4a(%rip), %rdi     # 0x4ff98
leaq 0x61a4(%rip), %rsi      # 0x3b2f9
callq 0x6430
movq %rax, %rdi
movq 0x1ae0c(%rip), %rsi     # 0x4ff70
callq 0x6480
movq 0x468(%rsp), %rax
movb $0x1, 0x24(%rax)
jmp 0x351a5
movq 0x1ae1a(%rip), %rdi     # 0x4ff98
leaq 0x61c1(%rip), %rsi      # 0x3b346
callq 0x6430
movq %rax, %rdi
movq 0x1addc(%rip), %rsi     # 0x4ff70
callq 0x6480
movq 0x468(%rsp), %rax
movb $0x1, 0x24(%rax)
jmp 0x36ca3
movq 0x8c0(%rsp), %rsi
leaq 0x830(%rsp), %rdi
movq %rdi, 0x400(%rsp)
callq 0xa3a0
movq 0x400(%rsp), %rdi
leaq 0x520b(%rip), %rsi      # 0x3a3e1
callq 0x9f50
movb %al, 0x40f(%rsp)
jmp 0x351e4
leaq 0x830(%rsp), %rdi
callq 0x62a0
movb 0x40f(%rsp), %al
testb $0x1, %al
jne 0x35201
jmp 0x354ed
movq 0x8c0(%rsp), %rdi
callq 0x37390
movsbl %al, %eax
movl %eax, 0x3fc(%rsp)
subl $0x2a, %eax
je 0x3526c
jmp 0x3521f
movl 0x3fc(%rsp), %eax
subl $0x3d, %eax
je 0x3541f
jmp 0x35231
movl 0x3fc(%rsp), %eax
subl $0x64, %eax
je 0x35358
jmp 0x354ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x830(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x8(%rax), %rcx
movq %rcx, 0x3d8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x3e0(%rsp)
movq %rax, 0x3e8(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x810(%rsp), %rdi
movq %rdi, 0x3f0(%rsp)
callq 0x373f0
movq 0x3f0(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x3f8(%rsp)
jmp 0x352d0
movl 0x3f8(%rsp), %esi
movq 0x3e0(%rsp), %rdi
callq 0x38940
movl %eax, 0x3d4(%rsp)
jmp 0x352ed
movl 0x3d4(%rsp), %esi
movq 0x3e8(%rsp), %rdi
callq 0x38940
movl %eax, 0x3d0(%rsp)
jmp 0x3530a
movl 0x3d0(%rsp), %esi
movq 0x3d8(%rsp), %rdi
callq 0x38320
jmp 0x35320
leaq 0x810(%rsp), %rdi
callq 0x62a0
jmp 0x354e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x810(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x8(%rax), %rcx
movq %rcx, 0x3b0(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x3b8(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x7f0(%rsp), %rdi
movq %rdi, 0x3c0(%rsp)
callq 0x373f0
movq 0x3c0(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x3cc(%rsp)
jmp 0x353b4
movl 0x3cc(%rsp), %esi
movq 0x3b8(%rsp), %rdi
callq 0x38940
movl %eax, 0x3ac(%rsp)
jmp 0x353d1
movl 0x3ac(%rsp), %esi
movq 0x3b0(%rsp), %rdi
callq 0x38320
jmp 0x353e7
leaq 0x7f0(%rsp), %rdi
callq 0x62a0
jmp 0x354e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x7f0(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x398(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x7d0(%rsp), %rdi
movq %rdi, 0x3a0(%rsp)
callq 0x373f0
movq 0x3a0(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x3a8(%rsp)
jmp 0x3546f
movl 0x3a8(%rsp), %esi
movq 0x398(%rsp), %rdi
callq 0x38320
jmp 0x35485
leaq 0x7d0(%rsp), %rdi
callq 0x62a0
jmp 0x354e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x7d0(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x1aad7(%rip), %rdi     # 0x4ff98
leaq 0x5eb4(%rip), %rsi      # 0x3b37c
callq 0x6430
movq %rax, %rdi
movq 0x1aa99(%rip), %rsi     # 0x4ff70
callq 0x6480
movq 0x468(%rsp), %rax
movb $0x1, 0x24(%rax)
jmp 0x36ca1
movq 0x8c0(%rsp), %rsi
leaq 0x7b0(%rsp), %rdi
movq %rdi, 0x388(%rsp)
callq 0xa3a0
movq 0x388(%rsp), %rdi
leaq 0x4eb8(%rip), %rsi      # 0x3a3d1
callq 0x9f50
movb %al, 0x397(%rsp)
jmp 0x35527
leaq 0x7b0(%rsp), %rdi
callq 0x62a0
movb 0x397(%rsp), %al
testb $0x1, %al
jne 0x35544
jmp 0x35831
movq 0x8c0(%rsp), %rdi
callq 0x37390
movsbl %al, %eax
movl %eax, 0x384(%rsp)
subl $0x2a, %eax
je 0x355af
jmp 0x35562
movl 0x384(%rsp), %eax
subl $0x3d, %eax
je 0x35761
jmp 0x35574
movl 0x384(%rsp), %eax
subl $0x64, %eax
je 0x3569c
jmp 0x357fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x7b0(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x360(%rsp)
movq %rax, %rcx
movq %rcx, 0x368(%rsp)
movq %rax, 0x370(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x790(%rsp), %rdi
movq %rdi, 0x378(%rsp)
callq 0x373f0
movq 0x378(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x380(%rsp)
jmp 0x35612
movl 0x380(%rsp), %esi
movq 0x360(%rsp), %rdi
callq 0x38940
movl %eax, 0x35c(%rsp)
jmp 0x3562f
movl 0x35c(%rsp), %esi
movq 0x370(%rsp), %rdi
callq 0x38940
movl %eax, 0x358(%rsp)
jmp 0x3564c
movl 0x358(%rsp), %esi
movq 0x368(%rsp), %rdi
xorl %edx, %edx
callq 0x38900
jmp 0x35664
leaq 0x790(%rsp), %rdi
callq 0x62a0
jmp 0x3582c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x790(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x338(%rsp)
movq %rax, 0x340(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x770(%rsp), %rdi
movq %rdi, 0x348(%rsp)
callq 0x373f0
movq 0x348(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x354(%rsp)
jmp 0x356f4
movl 0x354(%rsp), %esi
movq 0x338(%rsp), %rdi
callq 0x38940
movl %eax, 0x334(%rsp)
jmp 0x35711
movl 0x334(%rsp), %esi
movq 0x340(%rsp), %rdi
xorl %edx, %edx
callq 0x38900
jmp 0x35729
leaq 0x770(%rsp), %rdi
callq 0x62a0
jmp 0x3582c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x770(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x320(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x750(%rsp), %rdi
movq %rdi, 0x328(%rsp)
callq 0x373f0
movq 0x328(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x330(%rsp)
jmp 0x357b1
movl 0x330(%rsp), %esi
movq 0x320(%rsp), %rdi
xorl %edx, %edx
callq 0x38900
jmp 0x357c9
leaq 0x750(%rsp), %rdi
callq 0x62a0
jmp 0x3582c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x750(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x1a793(%rip), %rdi     # 0x4ff98
leaq 0x5ba7(%rip), %rsi      # 0x3b3b3
callq 0x6430
movq %rax, %rdi
movq 0x1a755(%rip), %rsi     # 0x4ff70
callq 0x6480
movq 0x468(%rsp), %rax
movb $0x1, 0x24(%rax)
jmp 0x36c9f
movq 0x8c0(%rsp), %rsi
leaq 0x730(%rsp), %rdi
movq %rdi, 0x310(%rsp)
callq 0xa3a0
movq 0x310(%rsp), %rdi
leaq 0x4b79(%rip), %rsi      # 0x3a3d6
callq 0x9f50
movb %al, 0x31f(%rsp)
jmp 0x3586b
leaq 0x730(%rsp), %rdi
callq 0x62a0
movb 0x31f(%rsp), %al
testb $0x1, %al
jne 0x35888
jmp 0x35b07
movq 0x8c0(%rsp), %rdi
callq 0x37390
movsbl %al, %eax
movl %eax, 0x30c(%rsp)
subl $0x2a, %eax
je 0x358f3
jmp 0x358a6
movl 0x30c(%rsp), %eax
subl $0x3d, %eax
je 0x35aa4
jmp 0x358b8
movl 0x30c(%rsp), %eax
subl $0x64, %eax
je 0x359e5
jmp 0x35ad4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x730(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
movq %rdi, 0x2e0(%rsp)
xorl %esi, %esi
movl %esi, 0x2fc(%rsp)
callq 0x38940
movl %eax, %ecx
movq 0x468(%rsp), %rax
movl %ecx, 0x2ec(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x2f0(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x710(%rsp), %rdi
movq %rdi, 0x300(%rsp)
callq 0x373f0
movl 0x2fc(%rsp), %eax
movq 0x300(%rsp), %rdi
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x308(%rsp)
jmp 0x35973
movl 0x308(%rsp), %esi
movq 0x2f0(%rsp), %rdi
callq 0x38940
movl %eax, 0x2dc(%rsp)
jmp 0x35990
movl 0x2dc(%rsp), %edx
movl 0x2ec(%rsp), %esi
movq 0x2e0(%rsp), %rdi
callq 0x38900
jmp 0x359ad
leaq 0x710(%rsp), %rdi
callq 0x62a0
jmp 0x35b02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x710(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
movq %rdi, 0x2c0(%rsp)
xorl %esi, %esi
movl %esi, 0x2cc(%rsp)
callq 0x38940
movl %eax, 0x2c8(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x6f0(%rsp), %rdi
movq %rdi, 0x2d0(%rsp)
callq 0x373f0
movl 0x2cc(%rsp), %eax
movq 0x2d0(%rsp), %rdi
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x2d8(%rsp)
jmp 0x35a4f
movl 0x2d8(%rsp), %edx
movl 0x2c8(%rsp), %esi
movq 0x2c0(%rsp), %rdi
callq 0x38900
jmp 0x35a6c
leaq 0x6f0(%rsp), %rdi
callq 0x62a0
jmp 0x35b02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x6f0(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x1a4ed(%rip), %rdi     # 0x4ff98
leaq 0x5937(%rip), %rsi      # 0x3b3e9
callq 0x6430
movq %rax, %rdi
movq 0x1a4af(%rip), %rsi     # 0x4ff70
callq 0x6480
movq 0x468(%rsp), %rax
movb $0x1, 0x24(%rax)
jmp 0x35b02
movq 0x1a4bd(%rip), %rdi     # 0x4ff98
leaq 0x5955(%rip), %rsi      # 0x3b437
callq 0x6430
movq %rax, %rdi
movq 0x1a47f(%rip), %rsi     # 0x4ff70
callq 0x6480
movq 0x468(%rsp), %rax
movb $0x1, 0x24(%rax)
jmp 0x36c9d
movq 0x8c0(%rsp), %rsi
leaq 0x6d0(%rsp), %rdi
movq %rdi, 0x2b0(%rsp)
callq 0xa3a0
movq 0x2b0(%rsp), %rdi
leaq 0x488e(%rip), %rsi      # 0x3a3c1
callq 0x9f50
movb %al, 0x2bf(%rsp)
jmp 0x35b41
leaq 0x6d0(%rsp), %rdi
callq 0x62a0
movb 0x2bf(%rsp), %al
testb $0x1, %al
jne 0x35b5e
jmp 0x35ecd
movq 0x8c0(%rsp), %rdi
callq 0x37390
movsbl %al, %eax
movl %eax, 0x2ac(%rsp)
subl $0x2a, %eax
je 0x35bc9
jmp 0x35b7c
movl 0x2ac(%rsp), %eax
subl $0x3d, %eax
je 0x35dda
jmp 0x35b8e
movl 0x2ac(%rsp), %eax
subl $0x64, %eax
je 0x35ce4
jmp 0x35e9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x6d0(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
movq %rdi, 0x278(%rsp)
xorl %esi, %esi
movl %esi, 0x29c(%rsp)
callq 0x38940
movl %eax, %ecx
movq 0x468(%rsp), %rax
movl %ecx, 0x284(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x288(%rsp)
movq %rax, 0x290(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x6b0(%rsp), %rdi
movq %rdi, 0x2a0(%rsp)
callq 0x373f0
movl 0x29c(%rsp), %eax
movq 0x2a0(%rsp), %rdi
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x2a8(%rsp)
jmp 0x35c51
movl 0x2a8(%rsp), %esi
movq 0x288(%rsp), %rdi
callq 0x38940
movl %eax, 0x274(%rsp)
jmp 0x35c6e
movl 0x274(%rsp), %esi
movq 0x290(%rsp), %rdi
callq 0x38940
movl %eax, 0x270(%rsp)
jmp 0x35c8b
movq 0x278(%rsp), %rdi
movl 0x270(%rsp), %eax
movl 0x284(%rsp), %esi
addl %eax, %esi
xorl %edx, %edx
callq 0x38900
jmp 0x35cac
leaq 0x6b0(%rsp), %rdi
callq 0x62a0
jmp 0x35ec8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x6b0(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
movq %rdi, 0x240(%rsp)
xorl %esi, %esi
movl %esi, 0x25c(%rsp)
callq 0x38940
movl %eax, %ecx
movq 0x468(%rsp), %rax
movl %ecx, 0x24c(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x250(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x690(%rsp), %rdi
movq %rdi, 0x260(%rsp)
callq 0x373f0
movl 0x25c(%rsp), %eax
movq 0x260(%rsp), %rdi
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x26c(%rsp)
jmp 0x35d64
movl 0x26c(%rsp), %esi
movq 0x250(%rsp), %rdi
callq 0x38940
movl %eax, 0x23c(%rsp)
jmp 0x35d81
movq 0x240(%rsp), %rdi
movl 0x23c(%rsp), %eax
movl 0x24c(%rsp), %esi
addl %eax, %esi
xorl %edx, %edx
callq 0x38900
jmp 0x35da2
leaq 0x690(%rsp), %rdi
callq 0x62a0
jmp 0x35ec8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x690(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
movq %rdi, 0x220(%rsp)
xorl %esi, %esi
movl %esi, 0x22c(%rsp)
callq 0x38940
movl %eax, 0x228(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x670(%rsp), %rdi
movq %rdi, 0x230(%rsp)
callq 0x373f0
movl 0x22c(%rsp), %eax
movq 0x230(%rsp), %rdi
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x238(%rsp)
jmp 0x35e44
movq 0x220(%rsp), %rdi
movl 0x238(%rsp), %eax
movl 0x228(%rsp), %esi
addl %eax, %esi
xorl %edx, %edx
callq 0x38900
jmp 0x35e65
leaq 0x670(%rsp), %rdi
callq 0x62a0
jmp 0x35ec8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x670(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x1a0f7(%rip), %rdi     # 0x4ff98
leaq 0x55c6(%rip), %rsi      # 0x3b46e
callq 0x6430
movq %rax, %rdi
movq 0x1a0b9(%rip), %rsi     # 0x4ff70
callq 0x6480
movq 0x468(%rsp), %rax
movb $0x1, 0x24(%rax)
jmp 0x36c9b
movq 0x8c0(%rsp), %rsi
leaq 0x650(%rsp), %rdi
movq %rdi, 0x210(%rsp)
callq 0xa3a0
movq 0x210(%rsp), %rdi
leaq 0x44cc(%rip), %rsi      # 0x3a3c5
callq 0x9f50
movb %al, 0x21f(%rsp)
jmp 0x35f07
leaq 0x650(%rsp), %rdi
callq 0x62a0
movb 0x21f(%rsp), %al
testb $0x1, %al
jne 0x35f24
jmp 0x36293
movq 0x8c0(%rsp), %rdi
callq 0x37390
movsbl %al, %eax
movl %eax, 0x20c(%rsp)
subl $0x2a, %eax
je 0x35f8f
jmp 0x35f42
movl 0x20c(%rsp), %eax
subl $0x3d, %eax
je 0x361a0
jmp 0x35f54
movl 0x20c(%rsp), %eax
subl $0x64, %eax
je 0x360aa
jmp 0x36260
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x650(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
movq %rdi, 0x1d8(%rsp)
xorl %esi, %esi
movl %esi, 0x1fc(%rsp)
callq 0x38940
movl %eax, %ecx
movq 0x468(%rsp), %rax
movl %ecx, 0x1e4(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x1e8(%rsp)
movq %rax, 0x1f0(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x630(%rsp), %rdi
movq %rdi, 0x200(%rsp)
callq 0x373f0
movl 0x1fc(%rsp), %eax
movq 0x200(%rsp), %rdi
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x208(%rsp)
jmp 0x36017
movl 0x208(%rsp), %esi
movq 0x1e8(%rsp), %rdi
callq 0x38940
movl %eax, 0x1d4(%rsp)
jmp 0x36034
movl 0x1d4(%rsp), %esi
movq 0x1f0(%rsp), %rdi
callq 0x38940
movl %eax, 0x1d0(%rsp)
jmp 0x36051
movq 0x1d8(%rsp), %rdi
movl 0x1d0(%rsp), %eax
movl 0x1e4(%rsp), %esi
subl %eax, %esi
xorl %edx, %edx
callq 0x38900
jmp 0x36072
leaq 0x630(%rsp), %rdi
callq 0x62a0
jmp 0x3628e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x630(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
movq %rdi, 0x1a0(%rsp)
xorl %esi, %esi
movl %esi, 0x1bc(%rsp)
callq 0x38940
movl %eax, %ecx
movq 0x468(%rsp), %rax
movl %ecx, 0x1ac(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x1b0(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x610(%rsp), %rdi
movq %rdi, 0x1c0(%rsp)
callq 0x373f0
movl 0x1bc(%rsp), %eax
movq 0x1c0(%rsp), %rdi
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x1cc(%rsp)
jmp 0x3612a
movl 0x1cc(%rsp), %esi
movq 0x1b0(%rsp), %rdi
callq 0x38940
movl %eax, 0x19c(%rsp)
jmp 0x36147
movq 0x1a0(%rsp), %rdi
movl 0x19c(%rsp), %eax
movl 0x1ac(%rsp), %esi
subl %eax, %esi
xorl %edx, %edx
callq 0x38900
jmp 0x36168
leaq 0x610(%rsp), %rdi
callq 0x62a0
jmp 0x3628e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x610(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
movq %rdi, 0x180(%rsp)
xorl %esi, %esi
movl %esi, 0x18c(%rsp)
callq 0x38940
movl %eax, 0x188(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x5f0(%rsp), %rdi
movq %rdi, 0x190(%rsp)
callq 0x373f0
movl 0x18c(%rsp), %eax
movq 0x190(%rsp), %rdi
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x198(%rsp)
jmp 0x3620a
movq 0x180(%rsp), %rdi
movl 0x198(%rsp), %eax
movl 0x188(%rsp), %esi
subl %eax, %esi
xorl %edx, %edx
callq 0x38900
jmp 0x3622b
leaq 0x5f0(%rsp), %rdi
callq 0x62a0
jmp 0x3628e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x5f0(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x19d31(%rip), %rdi     # 0x4ff98
leaq 0x5200(%rip), %rsi      # 0x3b46e
callq 0x6430
movq %rax, %rdi
movq 0x19cf3(%rip), %rsi     # 0x4ff70
callq 0x6480
movq 0x468(%rsp), %rax
movb $0x1, 0x24(%rax)
jmp 0x36c99
movq 0x8c0(%rsp), %rsi
leaq 0x5d0(%rsp), %rdi
movq %rdi, 0x170(%rsp)
callq 0xa3a0
movq 0x170(%rsp), %rdi
leaq 0x410a(%rip), %rsi      # 0x3a3c9
callq 0x9f50
movb %al, 0x17f(%rsp)
jmp 0x362cd
leaq 0x5d0(%rsp), %rdi
callq 0x62a0
movb 0x17f(%rsp), %al
testb $0x1, %al
jne 0x362ea
jmp 0x3665c
movq 0x8c0(%rsp), %rdi
callq 0x37390
movsbl %al, %eax
movl %eax, 0x16c(%rsp)
subl $0x2a, %eax
je 0x36355
jmp 0x36308
movl 0x16c(%rsp), %eax
subl $0x3d, %eax
je 0x36568
jmp 0x3631a
movl 0x16c(%rsp), %eax
subl $0x64, %eax
je 0x36471
jmp 0x36629
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x5d0(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
movq %rdi, 0x138(%rsp)
xorl %esi, %esi
movl %esi, 0x15c(%rsp)
callq 0x38940
movl %eax, %ecx
movq 0x468(%rsp), %rax
movl %ecx, 0x144(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x148(%rsp)
movq %rax, 0x150(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x5b0(%rsp), %rdi
movq %rdi, 0x160(%rsp)
callq 0x373f0
movl 0x15c(%rsp), %eax
movq 0x160(%rsp), %rdi
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x168(%rsp)
jmp 0x363dd
movl 0x168(%rsp), %esi
movq 0x148(%rsp), %rdi
callq 0x38940
movl %eax, 0x134(%rsp)
jmp 0x363fa
movl 0x134(%rsp), %esi
movq 0x150(%rsp), %rdi
callq 0x38940
movl %eax, 0x130(%rsp)
jmp 0x36417
movq 0x138(%rsp), %rdi
movl 0x130(%rsp), %eax
movl 0x144(%rsp), %esi
imull %eax, %esi
xorl %edx, %edx
callq 0x38900
jmp 0x36439
leaq 0x5b0(%rsp), %rdi
callq 0x62a0
jmp 0x36657
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x5b0(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
movq %rdi, 0x100(%rsp)
xorl %esi, %esi
movl %esi, 0x11c(%rsp)
callq 0x38940
movl %eax, %ecx
movq 0x468(%rsp), %rax
movl %ecx, 0x10c(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x110(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x590(%rsp), %rdi
movq %rdi, 0x120(%rsp)
callq 0x373f0
movl 0x11c(%rsp), %eax
movq 0x120(%rsp), %rdi
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x12c(%rsp)
jmp 0x364f1
movl 0x12c(%rsp), %esi
movq 0x110(%rsp), %rdi
callq 0x38940
movl %eax, 0xfc(%rsp)
jmp 0x3650e
movq 0x100(%rsp), %rdi
movl 0xfc(%rsp), %eax
movl 0x10c(%rsp), %esi
imull %eax, %esi
xorl %edx, %edx
callq 0x38900
jmp 0x36530
leaq 0x590(%rsp), %rdi
callq 0x62a0
jmp 0x36657
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x590(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
movq %rdi, 0xe0(%rsp)
xorl %esi, %esi
movl %esi, 0xec(%rsp)
callq 0x38940
movl %eax, 0xe8(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x570(%rsp), %rdi
movq %rdi, 0xf0(%rsp)
callq 0x373f0
movl 0xec(%rsp), %eax
movq 0xf0(%rsp), %rdi
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0xf8(%rsp)
jmp 0x365d2
movq 0xe0(%rsp), %rdi
movl 0xf8(%rsp), %eax
movl 0xe8(%rsp), %esi
imull %eax, %esi
xorl %edx, %edx
callq 0x38900
jmp 0x365f4
leaq 0x570(%rsp), %rdi
callq 0x62a0
jmp 0x36657
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x570(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x19968(%rip), %rdi     # 0x4ff98
leaq 0x4e6c(%rip), %rsi      # 0x3b4a3
callq 0x6430
movq %rax, %rdi
movq 0x1992a(%rip), %rsi     # 0x4ff70
callq 0x6480
movq 0x468(%rsp), %rax
movb $0x1, 0x24(%rax)
jmp 0x36c97
movq 0x8c0(%rsp), %rsi
leaq 0x550(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0xa3a0
movq 0xd0(%rsp), %rdi
leaq 0x3d45(%rip), %rsi      # 0x3a3cd
callq 0x9f50
movb %al, 0xdf(%rsp)
jmp 0x36696
leaq 0x550(%rsp), %rdi
callq 0x62a0
movb 0xdf(%rsp), %al
testb $0x1, %al
jne 0x366b3
jmp 0x369ef
movq 0x8c0(%rsp), %rdi
callq 0x37390
movsbl %al, %eax
movl %eax, 0xcc(%rsp)
subl $0x2a, %eax
je 0x3671e
jmp 0x366d1
movl 0xcc(%rsp), %eax
subl $0x3d, %eax
je 0x36917
jmp 0x366e3
movl 0xcc(%rsp), %eax
subl $0x64, %eax
je 0x3683c
jmp 0x369bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x550(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
movq %rdi, 0x98(%rsp)
xorl %esi, %esi
movl %esi, 0xbc(%rsp)
callq 0x38940
movl %eax, %ecx
movq 0x468(%rsp), %rax
movl %ecx, 0xa4(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0xa8(%rsp)
movq %rax, 0xb0(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x530(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0x373f0
movl 0xbc(%rsp), %eax
movq 0xc0(%rsp), %rdi
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0xc8(%rsp)
jmp 0x367a6
movl 0xc8(%rsp), %esi
movq 0xa8(%rsp), %rdi
callq 0x38940
movl %eax, 0x94(%rsp)
jmp 0x367c3
movl 0x94(%rsp), %esi
movq 0xb0(%rsp), %rdi
callq 0x38940
movl %eax, 0x90(%rsp)
jmp 0x367e0
movq 0x98(%rsp), %rdi
movl 0x90(%rsp), %ecx
movl 0xa4(%rsp), %eax
cltd
idivl %ecx
movl %eax, %esi
xorl %edx, %edx
callq 0x38900
jmp 0x36804
leaq 0x530(%rsp), %rdi
callq 0x62a0
jmp 0x369ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x530(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
movq %rdi, 0x60(%rsp)
xorl %esi, %esi
movl %esi, 0x7c(%rsp)
callq 0x38940
movl %eax, %ecx
movq 0x468(%rsp), %rax
movl %ecx, 0x6c(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x70(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x510(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x373f0
movl 0x7c(%rsp), %eax
movq 0x80(%rsp), %rdi
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x8c(%rsp)
jmp 0x368ad
movl 0x8c(%rsp), %esi
movq 0x70(%rsp), %rdi
callq 0x38940
movl %eax, 0x5c(%rsp)
jmp 0x368c4
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %ecx
movl 0x6c(%rsp), %eax
cltd
idivl %ecx
movl %eax, %esi
xorl %edx, %edx
callq 0x38900
jmp 0x368df
leaq 0x510(%rsp), %rdi
callq 0x62a0
jmp 0x369ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x510(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
movq %rdi, 0x40(%rsp)
xorl %esi, %esi
movl %esi, 0x4c(%rsp)
callq 0x38940
movl %eax, 0x48(%rsp)
movq 0x8c0(%rsp), %rsi
leaq 0x4f0(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x373f0
movl 0x4c(%rsp), %eax
movq 0x50(%rsp), %rdi
movl %eax, %esi
movl $0xa, %edx
callq 0x373a0
movl %eax, 0x58(%rsp)
jmp 0x3696c
movq 0x40(%rsp), %rdi
movl 0x58(%rsp), %ecx
movl 0x48(%rsp), %eax
cltd
idivl %ecx
movl %eax, %esi
xorl %edx, %edx
callq 0x38900
jmp 0x36987
leaq 0x4f0(%rsp), %rdi
callq 0x62a0
jmp 0x369ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x4f0(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x195d5(%rip), %rdi     # 0x4ff98
leaq 0x4b0e(%rip), %rsi      # 0x3b4d8
callq 0x6430
movq %rax, %rdi
movq 0x19597(%rip), %rsi     # 0x4ff70
callq 0x6480
movq 0x468(%rsp), %rax
movb $0x1, 0x24(%rax)
jmp 0x36c95
movq 0x8c0(%rsp), %rsi
leaq 0x4d0(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0xa3a0
movq 0x30(%rsp), %rdi
leaq 0x39d2(%rip), %rsi      # 0x3a3e7
callq 0x9f50
movb %al, 0x3f(%rsp)
jmp 0x36a20
leaq 0x4d0(%rsp), %rdi
callq 0x62a0
movb 0x3f(%rsp), %al
testb $0x1, %al
jne 0x36a37
jmp 0x36a7f
movq 0x468(%rsp), %rdi
movb $0x1, 0x8cd(%rsp)
movq 0x8c0(%rsp), %rsi
callq 0x36d50
jmp 0x36c93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x4d0(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
movq 0x8c0(%rsp), %rsi
leaq 0x4b0(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xa3a0
movq 0x20(%rsp), %rdi
leaq 0x394c(%rip), %rsi      # 0x3a3f1
callq 0x9f50
movb %al, 0x2f(%rsp)
jmp 0x36ab0
leaq 0x4b0(%rsp), %rdi
callq 0x62a0
movb 0x2f(%rsp), %al
testb $0x1, %al
jne 0x36ac7
jmp 0x36b29
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
xorl %esi, %esi
callq 0x38940
cmpl $0x0, %eax
jne 0x36b24
movq 0x468(%rsp), %rdi
movb $0x1, 0x8cd(%rsp)
movq 0x8c0(%rsp), %rsi
callq 0x36d50
jmp 0x36b24
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x4b0(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
jmp 0x36c91
movq 0x8c0(%rsp), %rsi
leaq 0x490(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0xa3a0
movq 0x10(%rsp), %rdi
leaq 0x389d(%rip), %rsi      # 0x3a3ec
callq 0x9f50
movb %al, 0x1f(%rsp)
jmp 0x36b5a
leaq 0x490(%rsp), %rdi
callq 0x62a0
movb 0x1f(%rsp), %al
testb $0x1, %al
jne 0x36b71
jmp 0x36bd3
movq 0x468(%rsp), %rax
movq 0x10(%rax), %rdi
xorl %esi, %esi
callq 0x38940
cmpl $0x0, %eax
jle 0x36bce
movq 0x468(%rsp), %rdi
movb $0x1, 0x8cd(%rsp)
movq 0x8c0(%rsp), %rsi
callq 0x36d50
jmp 0x36bce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x490(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
jmp 0x36c8f
movq 0x8c0(%rsp), %rsi
leaq 0x470(%rsp), %rdi
movq %rdi, (%rsp)
callq 0xa3a0
movq (%rsp), %rdi
leaq 0x3851(%rip), %rsi      # 0x3a448
callq 0x9f50
movb %al, 0xf(%rsp)
jmp 0x36c02
leaq 0x470(%rsp), %rdi
callq 0x62a0
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0x36c19
jmp 0x36c8d
movq 0x19378(%rip), %rdi     # 0x4ff98
leaq 0x48e6(%rip), %rsi      # 0x3b50d
callq 0x6430
movq %rax, %rdi
movq 0x468(%rsp), %rax
movl 0x20(%rax), %esi
callq 0x65f0
movq %rax, %rdi
leaq 0x48e6(%rip), %rsi      # 0x3b52f
callq 0x6430
movq %rax, %rdi
movq 0x19318(%rip), %rsi     # 0x4ff70
callq 0x6480
movb $0x1, 0x8ce(%rsp)
jmp 0x36c8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x898(%rsp)
movl %eax, 0x894(%rsp)
leaq 0x470(%rsp), %rdi
callq 0x62a0
jmp 0x36d3c
jmp 0x36c8f
jmp 0x36c91
jmp 0x36c93
jmp 0x36c95
jmp 0x36c97
jmp 0x36c99
jmp 0x36c9b
jmp 0x36c9d
jmp 0x36c9f
jmp 0x36ca1
jmp 0x36ca3
testb $0x1, 0x8cf(%rsp)
je 0x36cc2
movq 0x468(%rsp), %rdi
movq 0x8c0(%rsp), %rsi
callq 0x36ea0
movq 0x468(%rsp), %rax
testb $0x1, 0x24(%rax)
je 0x36d07
movq 0x192c1(%rip), %rdi     # 0x4ff98
leaq 0x4896(%rip), %rsi      # 0x3b574
callq 0x6430
movq %rax, %rdi
movq 0x468(%rsp), %rax
movl 0x20(%rax), %esi
callq 0x65f0
movq %rax, %rdi
movq 0x19270(%rip), %rsi     # 0x4ff70
callq 0x6480
jmp 0x36d27
testb $0x1, 0x8cd(%rsp)
jne 0x36d22
movq 0x468(%rsp), %rax
movl 0x20(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x20(%rax)
jmp 0x34e88
movq 0x468(%rsp), %rdi
callq 0x36f70
addq $0x8d8, %rsp            # imm = 0x8D8
retq
movq 0x898(%rsp), %rdi
callq 0x67b0
nopl (%rax)