// File: navrajsaini[P]PL_Compiler_design_project/test.cpp
// Function: main
int main ()
{

   //TESING SCANNER && ADMIN
   ifstream infile;
   ofstream outfile;
   cout << endl << endl << endl;
   cout << "--------testing scanner-----------";
   string codefile, tokenfile;
   string codef[8] =
      {
	 "./testfiles/test1.txt", "./testfiles/test2.txt",
	 "./testfiles/test3.txt", "./testfiles/test4.txt",
	 "./testfiles/test5.txt", "./testfiles/test6.txt",
	 "./testfiles/test7.txt", "./testfiles/testLang.txt"};

   string tokenf[8] =
      {"./testfiles/test1.Out", "./testfiles/test2.Out",
       "./testfiles/test3.Out", "./testfiles/test4.Out",
       "./testfiles/test5.Out", "./testfiles/test6.Out",
       "./testfiles/test7.Out", "./testfiles/testLang.Out"};
   for (int i = 0; i < 8; i++)
   {
      cout << "testing file: " << i+1 << endl;

      if (i == 7)
      {
	 cout << "testing the proper testLang file." << endl
	      << "There should not be any errorrs..."
	      << endl;
      }
      codefile = codef[i];
      tokenfile = tokenf[i];
      cout << endl;

      Scanner scanTest (codefile, tokenfile);
      Admin compiler(codefile, tokenfile, scanTest);
      compiler.tst = true;
      cout << "finished making the compiler..." << endl;
      int fin = compiler.scan();
      cout << "compile finished, output is: " << fin << endl;
      cout << endl << endl << "about to print... " << endl;
      compiler.print();

      //   cout << "the location of begin is: " << scanTest.getToken("begin") << endl;

      cout << "------------------testing parser-----------" << endl;
      compiler.parse();
      // if ctd is false there is a error in the parser
      // so the assembler will not run.
      if (compiler.ctd == true)
      {
	 cout << "-------------------testing assembler----------" << endl;
	 outfile.open(tokenfile);
	 infile.open("psudogen");
	 Assembler a(infile, outfile);
	 
	 cout << "first run" << endl;
	 a.firstPass();
	 
	 cout << "second run" << endl;
	 outfile.close();
	 infile.close();
	 
	 outfile.open(tokenfile);
	 infile.open("psudogen");
	 a.secondPass();
	 infile.close();
	 outfile.close();
	 cout << "------------------testing interpreter----------" << endl;
	 Interpreter b(tokenfile, true);
      }
      else
	 cout << "compiling error, exiting..." << endl;
   }
   return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x5060, %rsp           # imm = 0x5060
movl $0x0, -0x4(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x2200
leaq -0x410(%rbp), %rdi
callq 0x2300
jmp 0x526c
movq 0x22d55(%rip), %rdi     # 0x27fc8
movq 0x22d3e(%rip), %rsi     # 0x27fb8
callq 0x21d0
movq %rax, -0x4e48(%rbp)
jmp 0x5288
movq -0x4e48(%rbp), %rdi
movq 0x22d22(%rip), %rsi     # 0x27fb8
callq 0x21d0
movq %rax, -0x4e50(%rbp)
jmp 0x52a4
movq -0x4e50(%rbp), %rdi
movq 0x22d06(%rip), %rsi     # 0x27fb8
callq 0x21d0
jmp 0x52b9
movq 0x22d08(%rip), %rdi     # 0x27fc8
leaq 0x1adcb(%rip), %rsi     # 0x20092
callq 0x21b0
jmp 0x52ce
leaq -0x440(%rbp), %rdi
callq 0x2290
leaq -0x460(%rbp), %rdi
callq 0x2290
movb $0x1, -0x571(%rbp)
leaq -0x560(%rbp), %rax
movq %rax, -0x4e60(%rbp)
movq %rax, -0x568(%rbp)
leaq -0x569(%rbp), %rdi
movq %rdi, -0x4e58(%rbp)
callq 0x2340
movq -0x4e60(%rbp), %rdi
movq -0x4e58(%rbp), %rdx
leaq 0x1ad8b(%rip), %rsi     # 0x200b5
callq 0x2280
jmp 0x5331
leaq -0x540(%rbp), %rax
movq %rax, -0x4e70(%rbp)
movq %rax, -0x568(%rbp)
leaq -0x56a(%rbp), %rdi
movq %rdi, -0x4e68(%rbp)
callq 0x2340
movq -0x4e70(%rbp), %rdi
movq -0x4e68(%rbp), %rdx
leaq 0x1ad5d(%rip), %rsi     # 0x200cb
callq 0x2280
jmp 0x5375
leaq -0x520(%rbp), %rax
movq %rax, -0x4e80(%rbp)
movq %rax, -0x568(%rbp)
leaq -0x56b(%rbp), %rdi
movq %rdi, -0x4e78(%rbp)
callq 0x2340
movq -0x4e80(%rbp), %rdi
movq -0x4e78(%rbp), %rdx
leaq 0x1ad2f(%rip), %rsi     # 0x200e1
callq 0x2280
jmp 0x53b9
leaq -0x500(%rbp), %rax
movq %rax, -0x4e90(%rbp)
movq %rax, -0x568(%rbp)
leaq -0x56c(%rbp), %rdi
movq %rdi, -0x4e88(%rbp)
callq 0x2340
movq -0x4e90(%rbp), %rdi
movq -0x4e88(%rbp), %rdx
leaq 0x1ad01(%rip), %rsi     # 0x200f7
callq 0x2280
jmp 0x53fd
leaq -0x4e0(%rbp), %rax
movq %rax, -0x4ea0(%rbp)
movq %rax, -0x568(%rbp)
leaq -0x56d(%rbp), %rdi
movq %rdi, -0x4e98(%rbp)
callq 0x2340
movq -0x4ea0(%rbp), %rdi
movq -0x4e98(%rbp), %rdx
leaq 0x1acd3(%rip), %rsi     # 0x2010d
callq 0x2280
jmp 0x5441
leaq -0x4c0(%rbp), %rax
movq %rax, -0x4eb0(%rbp)
movq %rax, -0x568(%rbp)
leaq -0x56e(%rbp), %rdi
movq %rdi, -0x4ea8(%rbp)
callq 0x2340
movq -0x4eb0(%rbp), %rdi
movq -0x4ea8(%rbp), %rdx
leaq 0x1aca5(%rip), %rsi     # 0x20123
callq 0x2280
jmp 0x5485
leaq -0x4a0(%rbp), %rax
movq %rax, -0x4ec0(%rbp)
movq %rax, -0x568(%rbp)
leaq -0x56f(%rbp), %rdi
movq %rdi, -0x4eb8(%rbp)
callq 0x2340
movq -0x4ec0(%rbp), %rdi
movq -0x4eb8(%rbp), %rdx
leaq 0x1ac77(%rip), %rsi     # 0x20139
callq 0x2280
jmp 0x54c9
leaq -0x480(%rbp), %rax
movq %rax, -0x4ed0(%rbp)
movq %rax, -0x568(%rbp)
leaq -0x570(%rbp), %rdi
movq %rdi, -0x4ec8(%rbp)
callq 0x2340
movq -0x4ed0(%rbp), %rdi
movq -0x4ec8(%rbp), %rdx
leaq 0x1ac49(%rip), %rsi     # 0x2014f
callq 0x2280
jmp 0x550d
movb $0x0, -0x571(%rbp)
leaq -0x570(%rbp), %rdi
callq 0x21e0
leaq -0x56f(%rbp), %rdi
callq 0x21e0
leaq -0x56e(%rbp), %rdi
callq 0x21e0
leaq -0x56d(%rbp), %rdi
callq 0x21e0
leaq -0x56c(%rbp), %rdi
callq 0x21e0
leaq -0x56b(%rbp), %rdi
callq 0x21e0
leaq -0x56a(%rbp), %rdi
callq 0x21e0
leaq -0x569(%rbp), %rdi
callq 0x21e0
movb $0x1, -0x691(%rbp)
leaq -0x680(%rbp), %rax
movq %rax, -0x4ee0(%rbp)
movq %rax, -0x688(%rbp)
leaq -0x689(%rbp), %rdi
movq %rdi, -0x4ed8(%rbp)
callq 0x2340
movq -0x4ee0(%rbp), %rdi
movq -0x4ed8(%rbp), %rdx
leaq 0x1abb0(%rip), %rsi     # 0x20168
callq 0x2280
jmp 0x55bf
leaq -0x660(%rbp), %rax
movq %rax, -0x4ef0(%rbp)
movq %rax, -0x688(%rbp)
leaq -0x68a(%rbp), %rdi
movq %rdi, -0x4ee8(%rbp)
callq 0x2340
movq -0x4ef0(%rbp), %rdi
movq -0x4ee8(%rbp), %rdx
leaq 0x1ab82(%rip), %rsi     # 0x2017e
callq 0x2280
jmp 0x5603
leaq -0x640(%rbp), %rax
movq %rax, -0x4f00(%rbp)
movq %rax, -0x688(%rbp)
leaq -0x68b(%rbp), %rdi
movq %rdi, -0x4ef8(%rbp)
callq 0x2340
movq -0x4f00(%rbp), %rdi
movq -0x4ef8(%rbp), %rdx
leaq 0x1ab54(%rip), %rsi     # 0x20194
callq 0x2280
jmp 0x5647
leaq -0x620(%rbp), %rax
movq %rax, -0x4f10(%rbp)
movq %rax, -0x688(%rbp)
leaq -0x68c(%rbp), %rdi
movq %rdi, -0x4f08(%rbp)
callq 0x2340
movq -0x4f10(%rbp), %rdi
movq -0x4f08(%rbp), %rdx
leaq 0x1ab26(%rip), %rsi     # 0x201aa
callq 0x2280
jmp 0x568b
leaq -0x600(%rbp), %rax
movq %rax, -0x4f20(%rbp)
movq %rax, -0x688(%rbp)
leaq -0x68d(%rbp), %rdi
movq %rdi, -0x4f18(%rbp)
callq 0x2340
movq -0x4f20(%rbp), %rdi
movq -0x4f18(%rbp), %rdx
leaq 0x1aaf8(%rip), %rsi     # 0x201c0
callq 0x2280
jmp 0x56cf
leaq -0x5e0(%rbp), %rax
movq %rax, -0x4f30(%rbp)
movq %rax, -0x688(%rbp)
leaq -0x68e(%rbp), %rdi
movq %rdi, -0x4f28(%rbp)
callq 0x2340
movq -0x4f30(%rbp), %rdi
movq -0x4f28(%rbp), %rdx
leaq 0x1aaca(%rip), %rsi     # 0x201d6
callq 0x2280
jmp 0x5713
leaq -0x5c0(%rbp), %rax
movq %rax, -0x4f40(%rbp)
movq %rax, -0x688(%rbp)
leaq -0x68f(%rbp), %rdi
movq %rdi, -0x4f38(%rbp)
callq 0x2340
movq -0x4f40(%rbp), %rdi
movq -0x4f38(%rbp), %rdx
leaq 0x1aa9c(%rip), %rsi     # 0x201ec
callq 0x2280
jmp 0x5757
leaq -0x5a0(%rbp), %rax
movq %rax, -0x4f50(%rbp)
movq %rax, -0x688(%rbp)
leaq -0x690(%rbp), %rdi
movq %rdi, -0x4f48(%rbp)
callq 0x2340
movq -0x4f50(%rbp), %rdi
movq -0x4f48(%rbp), %rdx
leaq 0x1aa6e(%rip), %rsi     # 0x20202
callq 0x2280
jmp 0x579b
movb $0x0, -0x691(%rbp)
leaq -0x690(%rbp), %rdi
callq 0x21e0
leaq -0x68f(%rbp), %rdi
callq 0x21e0
leaq -0x68e(%rbp), %rdi
callq 0x21e0
leaq -0x68d(%rbp), %rdi
callq 0x21e0
leaq -0x68c(%rbp), %rdi
callq 0x21e0
leaq -0x68b(%rbp), %rdi
callq 0x21e0
leaq -0x68a(%rbp), %rdi
callq 0x21e0
leaq -0x689(%rbp), %rdi
callq 0x21e0
movl $0x0, -0x698(%rbp)
cmpl $0x8, -0x698(%rbp)
jge 0x61cc
movq 0x227a8(%rip), %rdi     # 0x27fc8
leaq 0x1a9f4(%rip), %rsi     # 0x2021b
callq 0x21b0
movq %rax, -0x4f58(%rbp)
jmp 0x5835
movq -0x4f58(%rbp), %rdi
movl -0x698(%rbp), %esi
incl %esi
callq 0x2310
movq %rax, -0x4f60(%rbp)
jmp 0x5852
movq -0x4f60(%rbp), %rdi
movq 0x22758(%rip), %rsi     # 0x27fb8
callq 0x21d0
jmp 0x5867
cmpl $0x7, -0x698(%rbp)
jne 0x5bef
movq 0x2274d(%rip), %rdi     # 0x27fc8
leaq 0x1a9a8(%rip), %rsi     # 0x2022a
callq 0x21b0
movq %rax, -0x4f68(%rbp)
jmp 0x5890
movq -0x4f68(%rbp), %rdi
movq 0x2271a(%rip), %rsi     # 0x27fb8
callq 0x21d0
movq %rax, -0x4f70(%rbp)
jmp 0x58ac
movq -0x4f70(%rbp), %rdi
leaq 0x1a992(%rip), %rsi     # 0x2024c
callq 0x21b0
movq %rax, -0x4f78(%rbp)
jmp 0x58c8
movq -0x4f78(%rbp), %rdi
movq 0x226e2(%rip), %rsi     # 0x27fb8
callq 0x21d0
jmp 0x58dd
jmp 0x5bef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x6369
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x635d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x5a0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x59ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x59f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x59e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x59db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x59cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x59c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
leaq -0x570(%rbp), %rdi
callq 0x21e0
leaq -0x56f(%rbp), %rdi
callq 0x21e0
leaq -0x56e(%rbp), %rdi
callq 0x21e0
leaq -0x56d(%rbp), %rdi
callq 0x21e0
leaq -0x56c(%rbp), %rdi
callq 0x21e0
leaq -0x56b(%rbp), %rdi
callq 0x21e0
leaq -0x56a(%rbp), %rdi
callq 0x21e0
leaq -0x569(%rbp), %rdi
callq 0x21e0
testb $0x1, -0x571(%rbp)
jne 0x5a22
jmp 0x5a6f
movq -0x568(%rbp), %rax
leaq -0x560(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x4f80(%rbp)
je 0x5a6d
movq -0x4f80(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x4f88(%rbp)
callq 0x2130
movq -0x4f88(%rbp), %rax
leaq -0x560(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x4f80(%rbp)
jne 0x5a3c
jmp 0x5a6f
jmp 0x6345
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x5b6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x5b63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x5b57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x5b4b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x5b3f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x5b33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x5b27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
leaq -0x690(%rbp), %rdi
callq 0x21e0
leaq -0x68f(%rbp), %rdi
callq 0x21e0
leaq -0x68e(%rbp), %rdi
callq 0x21e0
leaq -0x68d(%rbp), %rdi
callq 0x21e0
leaq -0x68c(%rbp), %rdi
callq 0x21e0
leaq -0x68b(%rbp), %rdi
callq 0x21e0
leaq -0x68a(%rbp), %rdi
callq 0x21e0
leaq -0x689(%rbp), %rdi
callq 0x21e0
testb $0x1, -0x691(%rbp)
jne 0x5b86
jmp 0x5bd3
movq -0x688(%rbp), %rax
leaq -0x680(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x4f90(%rbp)
je 0x5bd1
movq -0x4f90(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x4f98(%rbp)
callq 0x2130
movq -0x4f98(%rbp), %rax
leaq -0x680(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x4f90(%rbp)
jne 0x5ba0
jmp 0x5bd3
jmp 0x62f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x623c
movslq -0x698(%rbp), %rax
shlq $0x5, %rax
leaq -0x560(%rbp,%rax), %rsi
leaq -0x440(%rbp), %rdi
callq 0x2030
jmp 0x5c10
movslq -0x698(%rbp), %rax
shlq $0x5, %rax
leaq -0x680(%rbp,%rax), %rsi
leaq -0x460(%rbp), %rdi
callq 0x2030
jmp 0x5c31
movq 0x22390(%rip), %rdi     # 0x27fc8
movq 0x22379(%rip), %rsi     # 0x27fb8
callq 0x21d0
jmp 0x5c46
leaq -0x1528(%rbp), %rdi
leaq -0x440(%rbp), %rsi
callq 0x20d0
jmp 0x5c5b
leaq -0x1548(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0x20d0
jmp 0x5c70
leaq -0x1508(%rbp), %rdi
leaq -0x1528(%rbp), %rsi
leaq -0x1548(%rbp), %rdx
callq 0x141a0
jmp 0x5c8c
leaq -0x1548(%rbp), %rdi
callq 0x2130
leaq -0x1528(%rbp), %rdi
callq 0x2130
leaq -0x3658(%rbp), %rdi
leaq -0x440(%rbp), %rsi
callq 0x20d0
jmp 0x5cb9
leaq -0x3678(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0x20d0
jmp 0x5cce
leaq -0x3638(%rbp), %rdi
leaq -0x3658(%rbp), %rsi
leaq -0x3678(%rbp), %rdx
leaq -0x1508(%rbp), %rcx
callq 0x12fc0
jmp 0x5cf1
leaq -0x3678(%rbp), %rdi
callq 0x2130
leaq -0x3658(%rbp), %rdi
callq 0x2130
movb $0x1, -0x3636(%rbp)
movq 0x222b1(%rip), %rdi     # 0x27fc8
leaq 0x1a551(%rip), %rsi     # 0x2026f
callq 0x21b0
movq %rax, -0x4fa0(%rbp)
jmp 0x5d2c
movq -0x4fa0(%rbp), %rdi
movq 0x2227e(%rip), %rsi     # 0x27fb8
callq 0x21d0
jmp 0x5d41
leaq -0x3638(%rbp), %rdi
callq 0x13330
movl %eax, -0x4fa4(%rbp)
jmp 0x5d55
movl -0x4fa4(%rbp), %eax
movl %eax, -0x367c(%rbp)
movq 0x22260(%rip), %rdi     # 0x27fc8
leaq 0x1a520(%rip), %rsi     # 0x2028f
callq 0x21b0
movq %rax, -0x4fb0(%rbp)
jmp 0x5d7d
movq -0x4fb0(%rbp), %rdi
movl -0x367c(%rbp), %esi
callq 0x2310
movq %rax, -0x4fb8(%rbp)
jmp 0x5d98
movq -0x4fb8(%rbp), %rdi
movq 0x22212(%rip), %rsi     # 0x27fb8
callq 0x21d0
jmp 0x5dad
movq 0x22214(%rip), %rdi     # 0x27fc8
movq 0x221fd(%rip), %rsi     # 0x27fb8
callq 0x21d0
movq %rax, -0x4fc0(%rbp)
jmp 0x5dc9
movq -0x4fc0(%rbp), %rdi
movq 0x221e1(%rip), %rsi     # 0x27fb8
callq 0x21d0
movq %rax, -0x4fc8(%rbp)
jmp 0x5de5
movq -0x4fc8(%rbp), %rdi
leaq 0x1a4ba(%rip), %rsi     # 0x202ad
callq 0x21b0
movq %rax, -0x4fd0(%rbp)
jmp 0x5e01
movq -0x4fd0(%rbp), %rdi
movq 0x221a9(%rip), %rsi     # 0x27fb8
callq 0x21d0
jmp 0x5e16
leaq -0x3638(%rbp), %rdi
callq 0x13300
jmp 0x5e24
movq 0x2219d(%rip), %rdi     # 0x27fc8
leaq 0x1a48e(%rip), %rsi     # 0x202c0
callq 0x21b0
movq %rax, -0x4fd8(%rbp)
jmp 0x5e40
movq -0x4fd8(%rbp), %rdi
movq 0x2216a(%rip), %rsi     # 0x27fb8
callq 0x21d0
jmp 0x5e55
leaq -0x3638(%rbp), %rdi
callq 0x134e0
jmp 0x5e63
movb -0x3637(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x6153
movq 0x2214a(%rip), %rdi     # 0x27fc8
leaq 0x1a467(%rip), %rsi     # 0x202ec
callq 0x21b0
movq %rax, -0x4fe0(%rbp)
jmp 0x5e93
movq -0x4fe0(%rbp), %rdi
movq 0x22117(%rip), %rsi     # 0x27fb8
callq 0x21d0
jmp 0x5ea8
leaq -0x410(%rbp), %rdi
leaq -0x460(%rbp), %rsi
movl $0x10, %edx
callq 0x2100
jmp 0x5ec2
leaq 0x1a452(%rip), %rsi     # 0x2031b
leaq -0x210(%rbp), %rdi
movl $0x8, %edx
callq 0x2140
jmp 0x5edc
leaq -0x3e68(%rbp), %rdi
leaq -0x210(%rbp), %rsi
leaq -0x410(%rbp), %rdx
callq 0x1c690
jmp 0x5ef8
movq 0x220c9(%rip), %rdi     # 0x27fc8
leaq 0x1a41e(%rip), %rsi     # 0x20324
callq 0x21b0
movq %rax, -0x4fe8(%rbp)
jmp 0x5f14
movq -0x4fe8(%rbp), %rdi
movq 0x22096(%rip), %rsi     # 0x27fb8
callq 0x21d0
jmp 0x5f29
leaq -0x3e68(%rbp), %rdi
callq 0x1c710
jmp 0x5f37
movq 0x2208a(%rip), %rdi     # 0x27fc8
leaq 0x1a3e9(%rip), %rsi     # 0x2032e
callq 0x21b0
movq %rax, -0x4ff0(%rbp)
jmp 0x5f53
movq -0x4ff0(%rbp), %rdi
movq 0x22057(%rip), %rsi     # 0x27fb8
callq 0x21d0
jmp 0x5f68
leaq -0x410(%rbp), %rdi
callq 0x22a0
jmp 0x5f76
leaq -0x210(%rbp), %rdi
callq 0x2050
jmp 0x5f84
leaq -0x410(%rbp), %rdi
leaq -0x460(%rbp), %rsi
movl $0x10, %edx
callq 0x2100
jmp 0x5f9e
leaq 0x1a376(%rip), %rsi     # 0x2031b
leaq -0x210(%rbp), %rdi
movl $0x8, %edx
callq 0x2140
jmp 0x5fb8
leaq -0x3e68(%rbp), %rdi
callq 0x1cab0
jmp 0x5fc6
leaq -0x210(%rbp), %rdi
callq 0x2050
jmp 0x5fd4
leaq -0x410(%rbp), %rdi
callq 0x22a0
jmp 0x5fe2
movq 0x21fdf(%rip), %rdi     # 0x27fc8
leaq 0x1a349(%rip), %rsi     # 0x20339
callq 0x21b0
movq %rax, -0x4ff8(%rbp)
jmp 0x5ffe
movq -0x4ff8(%rbp), %rdi
movq 0x21fac(%rip), %rsi     # 0x27fb8
callq 0x21d0
jmp 0x6013
leaq -0x4e40(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0x20d0
jmp 0x6028
leaq -0x4e20(%rbp), %rdi
leaq -0x4e40(%rbp), %rsi
movl $0x1, %edx
callq 0x1dce0
jmp 0x6042
leaq -0x4e40(%rbp), %rdi
callq 0x2130
leaq -0x3e68(%rbp), %rdi
callq 0x1c700
jmp 0x6186
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x6091
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
leaq -0x1548(%rbp), %rdi
callq 0x2130
leaq -0x1528(%rbp), %rdi
callq 0x2130
jmp 0x623c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x61be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x60eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
leaq -0x3678(%rbp), %rdi
callq 0x2130
leaq -0x3658(%rbp), %rdi
callq 0x2130
jmp 0x61be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x61b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
jmp 0x6145
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x418(%rbp)
movl %eax, -0x41c(%rbp)
leaq -0x4e40(%rbp), %rdi
callq 0x2130
leaq -0x3e68(%rbp), %rdi
callq 0x1c700
jmp 0x61b2
movq 0x21e6e(%rip), %rdi     # 0x27fc8
leaq 0x1a208(%rip), %rsi     # 0x20369
callq 0x21b0
movq %rax, -0x5000(%rbp)
jmp 0x616f
movq -0x5000(%rbp), %rdi
movq 0x21e3b(%rip), %rsi     # 0x27fb8
callq 0x21d0
jmp 0x6184
jmp 0x6186
leaq -0x3638(%rbp), %rdi
callq 0x6390
leaq -0x1508(%rbp), %rdi
callq 0x6420
movl -0x698(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x698(%rbp)
jmp 0x580c
leaq -0x3638(%rbp), %rdi
callq 0x6390
leaq -0x1508(%rbp), %rdi
callq 0x6420
jmp 0x623c
movl $0x0, -0x4(%rbp)
leaq -0x680(%rbp), %rax
movq %rax, -0x5010(%rbp)
addq $0x100, %rax            # imm = 0x100
movq %rax, -0x5008(%rbp)
movq -0x5008(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x5018(%rbp)
callq 0x2130
movq -0x5010(%rbp), %rcx
movq -0x5018(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5008(%rbp)
jne 0x61ee
leaq -0x560(%rbp), %rax
movq %rax, -0x5028(%rbp)
addq $0x100, %rax            # imm = 0x100
movq %rax, -0x5020(%rbp)
jmp 0x628a
leaq -0x680(%rbp), %rax
movq %rax, -0x5038(%rbp)
addq $0x100, %rax            # imm = 0x100
movq %rax, -0x5030(%rbp)
movq -0x5030(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x5040(%rbp)
callq 0x2130
movq -0x5038(%rbp), %rcx
movq -0x5040(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5030(%rbp)
jne 0x6257
jmp 0x62f7
movq -0x5020(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x5048(%rbp)
callq 0x2130
movq -0x5028(%rbp), %rcx
movq -0x5048(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5020(%rbp)
jne 0x628a
leaq -0x460(%rbp), %rdi
callq 0x2130
leaq -0x440(%rbp), %rdi
callq 0x2130
leaq -0x410(%rbp), %rdi
callq 0x22c0
leaq -0x210(%rbp), %rdi
callq 0x2060
movl -0x4(%rbp), %eax
addq $0x5060, %rsp           # imm = 0x5060
popq %rbp
retq
leaq -0x560(%rbp), %rax
movq %rax, -0x5058(%rbp)
addq $0x100, %rax            # imm = 0x100
movq %rax, -0x5050(%rbp)
movq -0x5050(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x5060(%rbp)
callq 0x2130
movq -0x5058(%rbp), %rcx
movq -0x5060(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5050(%rbp)
jne 0x6312
jmp 0x6345
leaq -0x460(%rbp), %rdi
callq 0x2130
leaq -0x440(%rbp), %rdi
callq 0x2130
leaq -0x410(%rbp), %rdi
callq 0x22c0
leaq -0x210(%rbp), %rdi
callq 0x2060
movq -0x418(%rbp), %rdi
callq 0x2330
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)