// File: EstherJin[P]TetrisRemake/interpreter.cc
// Function: Interpreter::processCommands(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Game*, int*)
void Interpreter::processCommands(string cmd, Game *g, int *turn){
  string command = "";
  int n = 1;
  if ((cmd[0] >= '0') && (cmd[0] <= '9')) {
    int i = 1;
    n = cmd[0] - '0';
    while ((cmd[i] >= '0') && (cmd[i] <= '9')){
      n = n * 10 + (cmd[i] - '0');
      ++i;
    }
    cmd = cmd.substr(i);
  }
  map<string, vector<string>>::iterator it;
  for(it = commands.begin(); it != commands.end(); it++) {
    string key = it->first;
    vector<string> commands = it->second;
    int size = commands.size();
    for(int i = 0; i < size; ++i){
      if (cmd == commands.at(i)){
        command = key;
      }
    }
  }
  if (command != ""){
    if (command == "norandom"){
      string file;
      cin >> file;
      g->processCommand(command, file, n, *turn);
      g->print(cout);
    } else if (command == "sequence"){
      string file;
      cin >> file;
      ifstream f{file};
      if (f){
        string comm;
        streambuf *cinbuf = cin.rdbuf();
        cin.rdbuf(f.rdbuf());
        while(f >> comm){
          processCommands(comm, g, turn);
        }
        cin.rdbuf(cinbuf);
      }
    } else if (command == "drop") {
      try{
      g->processCommand(command, n, *turn);
      g->print(cout);
      } catch(int i){
        *turn = (*turn % 2) + 1;
        g->print(cout);
      } catch(char const* str){
        cout << "Restart? Yes/No:";
        string s;
        while (cin >> s){
          if (s == "Yes"){
            *turn = 1;
            g->processCommand(command, n, *turn);
            return;
          }
        }
        throw 1;
      }
    } else if (command == "restart") {
      *turn = 1;
      g->processCommand(command, n, *turn);
      g->print(cout);
    } else if ((command == "left")||(command == "right")||(command == "down")) {
      try{
      g->processCommand(command, n, *turn);
      g->print(cout);
      } catch(int i){
        *turn = (*turn % 2) + 1;
        g->print(cout);
      } catch(char const* str){
        *turn = 1;
        g->processCommand(command, n, *turn);
      } catch(char const* str){
        cout << "Restart? Yes/No:";
        string s;
        while (cin >> s){
          if (s == "Yes"){
            *turn = 1;
            g->processCommand(command, n, *turn);
            return;
          }
        }
        throw 1;
      }
    } else {
      g->processCommand(command, n, *turn);
      g->print(cout);
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x630, %rsp            # imm = 0x630
movq %rsi, -0x510(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x508(%rbp)
leaq -0x41(%rbp), %rdi
movq %rdi, -0x500(%rbp)
callq 0x65d0
movq -0x500(%rbp), %rdx
leaq 0xfc01(%rip), %rsi      # 0x2d6ec
leaq -0x40(%rbp), %rdi
callq 0x73b0
jmp 0x1daf6
leaq -0x41(%rbp), %rdi
callq 0x63e0
movq -0x510(%rbp), %rdi
movl $0x1, -0x58(%rbp)
xorl %eax, %eax
movl %eax, %esi
callq 0x6660
movq %rax, -0x518(%rbp)
jmp 0x1db1f
movq -0x518(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x30, %eax
jl 0x1dca9
movq -0x510(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6660
movq %rax, -0x520(%rbp)
jmp 0x1db4b
movq -0x520(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x39, %eax
jg 0x1dca9
movq -0x510(%rbp), %rdi
movl $0x1, -0x5c(%rbp)
xorl %eax, %eax
movl %eax, %esi
callq 0x6660
movq %rax, -0x528(%rbp)
jmp 0x1db7e
movq -0x528(%rbp), %rax
movsbl (%rax), %eax
subl $0x30, %eax
movl %eax, -0x58(%rbp)
movq -0x510(%rbp), %rdi
movslq -0x5c(%rbp), %rsi
callq 0x6660
movq %rax, -0x530(%rbp)
jmp 0x1dba7
movq -0x530(%rbp), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x30, %ecx
movb %al, -0x531(%rbp)
jl 0x1dbed
movq -0x510(%rbp), %rdi
movslq -0x5c(%rbp), %rsi
callq 0x6660
movq %rax, -0x540(%rbp)
jmp 0x1dbd7
movq -0x540(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x39, %eax
setle %al
movb %al, -0x531(%rbp)
movb -0x531(%rbp), %al
testb $0x1, %al
jne 0x1dbf9
jmp 0x1dc73
movq -0x510(%rbp), %rdi
movl -0x58(%rbp), %ecx
addl %ecx, %ecx
movl %ecx, %eax
leal (%rax,%rax,4), %eax
movl %eax, -0x54c(%rbp)
movslq -0x5c(%rbp), %rsi
callq 0x6660
movq %rax, -0x548(%rbp)
jmp 0x1dc22
movl -0x54c(%rbp), %eax
movq -0x548(%rbp), %rcx
movsbl (%rcx), %ecx
subl $0x30, %ecx
addl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1db8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x41(%rbp), %rdi
callq 0x63e0
jmp 0x1e9ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1e9a3
movq -0x510(%rbp), %rsi
movslq -0x5c(%rbp), %rdx
leaq -0x80(%rbp), %rdi
movq $-0x1, %rcx
callq 0x63a0
jmp 0x1dc90
movq -0x510(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x6430
leaq -0x80(%rbp), %rdi
callq 0x6230
leaq -0x88(%rbp), %rdi
callq 0x1eb10
movq -0x508(%rbp), %rdi
callq 0x1eb30
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x508(%rbp), %rdi
callq 0x1eb90
movq %rax, -0x98(%rbp)
leaq -0x88(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x1eb60
testb $0x1, %al
jne 0x1dd05
jmp 0x1de3b
leaq -0x88(%rbp), %rdi
callq 0x1ebc0
movq %rax, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x6150
jmp 0x1dd22
leaq -0x88(%rbp), %rdi
callq 0x1ebc0
movq %rax, %rsi
addq $0x20, %rsi
leaq -0xd0(%rbp), %rdi
callq 0x1ebe0
jmp 0x1dd43
leaq -0xd0(%rbp), %rdi
callq 0x1ecd0
movl %eax, -0xd4(%rbp)
movl $0x0, -0xd8(%rbp)
movl -0xd8(%rbp), %eax
cmpl -0xd4(%rbp), %eax
jge 0x1ddf8
movslq -0xd8(%rbp), %rsi
leaq -0xd0(%rbp), %rdi
callq 0x1ed80
movq %rax, -0x558(%rbp)
jmp 0x1dd8d
movq -0x558(%rbp), %rsi
movq -0x510(%rbp), %rdi
callq 0x1ecf0
testb $0x1, %al
jne 0x1dda6
jmp 0x1dde2
leaq -0x40(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x6040
jmp 0x1ddb8
jmp 0x1dde2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1de2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x7b70
jmp 0x1de2a
jmp 0x1dde4
movl -0xd8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xd8(%rbp)
jmp 0x1dd5f
leaq -0xd0(%rbp), %rdi
callq 0x7b70
leaq -0xb8(%rbp), %rdi
callq 0x6230
leaq -0x88(%rbp), %rdi
xorl %esi, %esi
callq 0x1edc0
movq %rax, -0xe0(%rbp)
jmp 0x1dcd6
leaq -0xb8(%rbp), %rdi
callq 0x6230
jmp 0x1e9a3
leaq 0xf8aa(%rip), %rsi      # 0x2d6ec
leaq -0x40(%rbp), %rdi
callq 0x1ee00
movb %al, -0x559(%rbp)
jmp 0x1de53
movb -0x559(%rbp), %al
testb $0x1, %al
jne 0x1de62
jmp 0x1e987
leaq 0xf3c6(%rip), %rsi      # 0x2d22f
leaq -0x40(%rbp), %rdi
callq 0x7460
movb %al, -0x55a(%rbp)
jmp 0x1de7a
movb -0x55a(%rbp), %al
testb $0x1, %al
jne 0x1de89
jmp 0x1df95
leaq -0x100(%rbp), %rdi
movq %rdi, -0x568(%rbp)
callq 0x64c0
movq -0x568(%rbp), %rsi
movq 0x2412e(%rip), %rdi     # 0x41fd8
callq 0x6460
jmp 0x1deb1
movq -0x18(%rbp), %rax
movq %rax, -0x570(%rbp)
leaq -0x120(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x6150
jmp 0x1dece
leaq -0x140(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x6150
jmp 0x1dee3
movq -0x570(%rbp), %rdi
movl -0x58(%rbp), %ecx
movq -0x20(%rbp), %rax
movl (%rax), %r8d
leaq -0x120(%rbp), %rsi
leaq -0x140(%rbp), %rdx
callq 0x164c0
jmp 0x1df09
leaq -0x140(%rbp), %rdi
callq 0x6230
leaq -0x120(%rbp), %rdi
callq 0x6230
movq -0x18(%rbp), %rdi
movq 0x24094(%rip), %rsi     # 0x41fc0
callq 0x153f0
jmp 0x1df33
leaq -0x100(%rbp), %rdi
callq 0x6230
jmp 0x1e985
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1df84
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1df78
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x6230
leaq -0x120(%rbp), %rdi
callq 0x6230
leaq -0x100(%rbp), %rdi
callq 0x6230
jmp 0x1e9a3
leaq 0xf558(%rip), %rsi      # 0x2d4f4
leaq -0x40(%rbp), %rdi
callq 0x7460
movb %al, -0x571(%rbp)
jmp 0x1dfad
movb -0x571(%rbp), %al
testb $0x1, %al
jne 0x1dfbc
jmp 0x1e1f5
leaq -0x160(%rbp), %rdi
movq %rdi, -0x580(%rbp)
callq 0x64c0
movq -0x580(%rbp), %rsi
movq 0x23ffb(%rip), %rdi     # 0x41fd8
callq 0x6460
jmp 0x1dfe4
leaq -0x368(%rbp), %rdi
leaq -0x160(%rbp), %rsi
movl $0x8, %edx
callq 0x6560
jmp 0x1dffe
movq -0x368(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x368(%rbp,%rax), %rdi
callq 0x6450
movb %al, -0x581(%rbp)
jmp 0x1e01e
movb -0x581(%rbp), %al
testb $0x1, %al
jne 0x1e02d
jmp 0x1e1bb
leaq -0x388(%rbp), %rdi
callq 0x64c0
movq 0x23f98(%rip), %rdi     # 0x41fd8
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x6170
movq %rax, -0x590(%rbp)
jmp 0x1e058
movq -0x590(%rbp), %rax
movq %rax, -0x390(%rbp)
movq 0x23f6b(%rip), %rax     # 0x41fd8
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x5a0(%rbp)
leaq -0x368(%rbp), %rdi
callq 0x6550
movq %rax, -0x598(%rbp)
jmp 0x1e093
movq -0x598(%rbp), %rsi
movq -0x5a0(%rbp), %rdi
callq 0x6610
jmp 0x1e0a8
jmp 0x1e0aa
leaq -0x368(%rbp), %rdi
leaq -0x388(%rbp), %rsi
callq 0x6460
movq %rax, -0x5a8(%rbp)
jmp 0x1e0c6
movq -0x5a8(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x6450
movb %al, -0x5a9(%rbp)
jmp 0x1e0e4
movb -0x5a9(%rbp), %al
testb $0x1, %al
jne 0x1e0f3
jmp 0x1e180
leaq -0x3b0(%rbp), %rdi
leaq -0x388(%rbp), %rsi
callq 0x6150
jmp 0x1e108
movq -0x508(%rbp), %rdi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
leaq -0x3b0(%rbp), %rsi
callq 0x1daa0
jmp 0x1e125
leaq -0x3b0(%rbp), %rdi
callq 0x6230
jmp 0x1e0aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1e1e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1e1d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1e1ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0x6230
jmp 0x1e1ad
movq 0x23e51(%rip), %rdi     # 0x41fd8
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
movq -0x390(%rbp), %rsi
callq 0x6610
jmp 0x1e19f
leaq -0x388(%rbp), %rdi
callq 0x6230
jmp 0x1e1bb
leaq -0x388(%rbp), %rdi
callq 0x6230
jmp 0x1e1d8
leaq -0x368(%rbp), %rdi
callq 0x60a0
leaq -0x160(%rbp), %rdi
callq 0x6230
jmp 0x1e983
leaq -0x368(%rbp), %rdi
callq 0x60a0
leaq -0x160(%rbp), %rdi
callq 0x6230
jmp 0x1e9a3
leaq 0xf014(%rip), %rsi      # 0x2d210
leaq -0x40(%rbp), %rdi
callq 0x7460
movb %al, -0x5aa(%rbp)
jmp 0x1e20d
movb -0x5aa(%rbp), %al
testb $0x1, %al
jne 0x1e21c
jmp 0x1e4b1
movq -0x18(%rbp), %rax
movq %rax, -0x5b8(%rbp)
leaq -0x3d0(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x6150
jmp 0x1e239
movq -0x5b8(%rbp), %rdi
movl -0x58(%rbp), %edx
movq -0x20(%rbp), %rax
movl (%rax), %ecx
leaq -0x3d0(%rbp), %rsi
callq 0x15cb0
jmp 0x1e257
leaq -0x3d0(%rbp), %rdi
callq 0x6230
movq -0x18(%rbp), %rdi
movq 0x23d52(%rip), %rsi     # 0x41fc0
callq 0x153f0
jmp 0x1e275
jmp 0x1e2f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1e29d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x6230
movl -0x54(%rbp), %eax
movl %eax, -0x5bc(%rbp)
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x1e2fa
movq -0x50(%rbp), %rdi
callq 0x6130
movl (%rax), %eax
movl %eax, -0x420(%rbp)
movq -0x20(%rbp), %rax
movl (%rax), %edx
movl %edx, %ecx
shrl $0x1f, %ecx
movl %edx, %esi
addl %ecx, %esi
andl $-0x2, %esi
movl %edx, %ecx
negl %esi
movl %esi, %edx
leal 0x1(%rcx,%rdx), %ecx
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq 0x23cd7(%rip), %rsi     # 0x41fc0
callq 0x153f0
jmp 0x1e2f0
callq 0x6580
jmp 0x1e981
movl -0x5bc(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x1e9a3
movq -0x50(%rbp), %rdi
callq 0x6130
movq %rax, -0x3d8(%rbp)
movq 0x23c9c(%rip), %rdi     # 0x41fc0
leaq 0xf1eb(%rip), %rsi      # 0x2d516
callq 0x6360
jmp 0x1e332
leaq -0x3f8(%rbp), %rdi
callq 0x64c0
movq 0x23c93(%rip), %rdi     # 0x41fd8
leaq -0x3f8(%rbp), %rsi
callq 0x6460
movq %rax, -0x5c8(%rbp)
jmp 0x1e35a
movq -0x5c8(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x6450
movb %al, -0x5c9(%rbp)
jmp 0x1e378
movb -0x5c9(%rbp), %al
testb $0x1, %al
jne 0x1e387
jmp 0x1e45d
leaq 0xf199(%rip), %rsi      # 0x2d527
leaq -0x3f8(%rbp), %rdi
callq 0x7460
movb %al, -0x5ca(%rbp)
jmp 0x1e3a2
movb -0x5ca(%rbp), %al
testb $0x1, %al
jne 0x1e3b1
jmp 0x1e458
movq -0x20(%rbp), %rax
movl $0x1, (%rax)
movq -0x18(%rbp), %rax
movq %rax, -0x5d8(%rbp)
leaq -0x418(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x6150
jmp 0x1e3d8
movq -0x5d8(%rbp), %rdi
movl -0x58(%rbp), %edx
movq -0x20(%rbp), %rax
movl (%rax), %ecx
leaq -0x418(%rbp), %rsi
callq 0x15cb0
jmp 0x1e3f6
leaq -0x418(%rbp), %rdi
callq 0x6230
movl $0x1, -0x41c(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x6230
callq 0x6580
jmp 0x1e991
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1e491
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1e485
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x418(%rbp), %rdi
callq 0x6230
jmp 0x1e485
jmp 0x1e33e
movl $0x4, %edi
callq 0x61a0
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x23b19(%rip), %rsi     # 0x41f90
xorl %eax, %eax
movl %eax, %edx
callq 0x65b0
jmp 0x1e9b5
leaq -0x3f8(%rbp), %rdi
callq 0x6230
callq 0x6580
jmp 0x1e9a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x6580
jmp 0x1e9a3
leaq 0xed6f(%rip), %rsi      # 0x2d227
leaq -0x40(%rbp), %rdi
callq 0x7460
movb %al, -0x5d9(%rbp)
jmp 0x1e4c9
movb -0x5d9(%rbp), %al
testb $0x1, %al
jne 0x1e4d8
jmp 0x1e55d
movq -0x20(%rbp), %rax
movl $0x1, (%rax)
movq -0x18(%rbp), %rax
movq %rax, -0x5e8(%rbp)
leaq -0x440(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x6150
jmp 0x1e4ff
movq -0x5e8(%rbp), %rdi
movl -0x58(%rbp), %edx
movq -0x20(%rbp), %rax
movl (%rax), %ecx
leaq -0x440(%rbp), %rsi
callq 0x15cb0
jmp 0x1e51d
leaq -0x440(%rbp), %rdi
callq 0x6230
movq -0x18(%rbp), %rdi
movq 0x23a8c(%rip), %rsi     # 0x41fc0
callq 0x153f0
jmp 0x1e53b
jmp 0x1e97f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x440(%rbp), %rdi
callq 0x6230
jmp 0x1e9a3
leaq 0xec90(%rip), %rsi      # 0x2d1f4
leaq -0x40(%rbp), %rdi
callq 0x7460
movb %al, -0x5e9(%rbp)
jmp 0x1e575
movb -0x5e9(%rbp), %al
testb $0x1, %al
jne 0x1e5cc
jmp 0x1e581
leaq 0xec71(%rip), %rsi      # 0x2d1f9
leaq -0x40(%rbp), %rdi
callq 0x7460
movb %al, -0x5ea(%rbp)
jmp 0x1e599
movb -0x5ea(%rbp), %al
testb $0x1, %al
jne 0x1e5cc
jmp 0x1e5a5
leaq 0xec76(%rip), %rsi      # 0x2d222
leaq -0x40(%rbp), %rdi
callq 0x7460
movb %al, -0x5eb(%rbp)
jmp 0x1e5bd
movb -0x5eb(%rbp), %al
testb $0x1, %al
jne 0x1e5cc
jmp 0x1e908
movq -0x18(%rbp), %rax
movq %rax, -0x5f8(%rbp)
leaq -0x460(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x6150
jmp 0x1e5e9
movq -0x5f8(%rbp), %rdi
movl -0x58(%rbp), %edx
movq -0x20(%rbp), %rax
movl (%rax), %ecx
leaq -0x460(%rbp), %rsi
callq 0x15cb0
jmp 0x1e607
leaq -0x460(%rbp), %rdi
callq 0x6230
movq -0x18(%rbp), %rdi
movq 0x239a2(%rip), %rsi     # 0x41fc0
callq 0x153f0
jmp 0x1e625
jmp 0x1e6a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1e64d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x460(%rbp), %rdi
callq 0x6230
movl -0x54(%rbp), %eax
movl %eax, -0x5fc(%rbp)
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x1e6aa
movq -0x50(%rbp), %rdi
callq 0x6130
movl (%rax), %eax
movl %eax, -0x4d4(%rbp)
movq -0x20(%rbp), %rax
movl (%rax), %edx
movl %edx, %ecx
shrl $0x1f, %ecx
movl %edx, %esi
addl %ecx, %esi
andl $-0x2, %esi
movl %edx, %ecx
negl %esi
movl %esi, %edx
leal 0x1(%rcx,%rdx), %ecx
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq 0x23927(%rip), %rsi     # 0x41fc0
callq 0x153f0
jmp 0x1e6a0
callq 0x6580
jmp 0x1e97d
movl -0x5fc(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x1e721
movq -0x50(%rbp), %rdi
callq 0x6130
movq %rax, -0x4b0(%rbp)
movq -0x20(%rbp), %rax
movl $0x1, (%rax)
movq -0x18(%rbp), %rax
movq %rax, -0x608(%rbp)
leaq -0x4d0(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x6150
jmp 0x1e6f0
movq -0x608(%rbp), %rdi
movl -0x58(%rbp), %edx
movq -0x20(%rbp), %rax
movl (%rax), %ecx
leaq -0x4d0(%rbp), %rsi
callq 0x15cb0
jmp 0x1e70e
leaq -0x4d0(%rbp), %rdi
callq 0x6230
callq 0x6580
jmp 0x1e6a5
movl -0x5fc(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x1e9a3
movq -0x50(%rbp), %rdi
callq 0x6130
movq %rax, -0x468(%rbp)
movq 0x23875(%rip), %rdi     # 0x41fc0
leaq 0xedc4(%rip), %rsi      # 0x2d516
callq 0x6360
jmp 0x1e759
leaq -0x488(%rbp), %rdi
callq 0x64c0
movq 0x2386c(%rip), %rdi     # 0x41fd8
leaq -0x488(%rbp), %rsi
callq 0x6460
movq %rax, -0x610(%rbp)
jmp 0x1e781
movq -0x610(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x6450
movb %al, -0x611(%rbp)
jmp 0x1e79f
movb -0x611(%rbp), %al
testb $0x1, %al
jne 0x1e7ae
jmp 0x1e884
leaq 0xed72(%rip), %rsi      # 0x2d527
leaq -0x488(%rbp), %rdi
callq 0x7460
movb %al, -0x612(%rbp)
jmp 0x1e7c9
movb -0x612(%rbp), %al
testb $0x1, %al
jne 0x1e7d8
jmp 0x1e87f
movq -0x20(%rbp), %rax
movl $0x1, (%rax)
movq -0x18(%rbp), %rax
movq %rax, -0x620(%rbp)
leaq -0x4a8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x6150
jmp 0x1e7ff
movq -0x620(%rbp), %rdi
movl -0x58(%rbp), %edx
movq -0x20(%rbp), %rax
movl (%rax), %ecx
leaq -0x4a8(%rbp), %rsi
callq 0x15cb0
jmp 0x1e81d
leaq -0x4a8(%rbp), %rdi
callq 0x6230
movl $0x1, -0x41c(%rbp)
leaq -0x488(%rbp), %rdi
callq 0x6230
callq 0x6580
jmp 0x1e991
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1e8b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1e8ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x4a8(%rbp), %rdi
callq 0x6230
jmp 0x1e8ac
jmp 0x1e765
movl $0x4, %edi
callq 0x61a0
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x236f2(%rip), %rsi     # 0x41f90
xorl %eax, %eax
movl %eax, %edx
callq 0x65b0
jmp 0x1e9b5
leaq -0x488(%rbp), %rdi
callq 0x6230
callq 0x6580
jmp 0x1e9a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1e8e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0x6230
callq 0x6580
jmp 0x1e9a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x6580
jmp 0x1e9a3
movq -0x18(%rbp), %rax
movq %rax, -0x628(%rbp)
leaq -0x4f8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x6150
jmp 0x1e925
movq -0x628(%rbp), %rdi
movl -0x58(%rbp), %edx
movq -0x20(%rbp), %rax
movl (%rax), %ecx
leaq -0x4f8(%rbp), %rsi
callq 0x15cb0
jmp 0x1e943
leaq -0x4f8(%rbp), %rdi
callq 0x6230
movq -0x18(%rbp), %rdi
movq 0x23666(%rip), %rsi     # 0x41fc0
callq 0x153f0
jmp 0x1e961
jmp 0x1e97d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x4f8(%rbp), %rdi
callq 0x6230
jmp 0x1e9a3
jmp 0x1e97f
jmp 0x1e981
jmp 0x1e983
jmp 0x1e985
jmp 0x1e987
movl $0x0, -0x41c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x6230
addq $0x630, %rsp            # imm = 0x630
popq %rbp
retq
leaq -0x40(%rbp), %rdi
callq 0x6230
movq -0x50(%rbp), %rdi
callq 0x65c0
nopw %cs:(%rax,%rax)
nop