// File: /workspace/github_cpp_makefile_star2_O1/maplechori[P]stata-reader-writer/main.cpp
// Function: main
int main(int argc, char **argv)
{
  namespace po = boost::program_options;
  Context *ctx = NULL;

  try
  {
    po::options_description desc("General options");
    desc.add_options()
    ("help", "produce help message")
    ("stata-file", po::value< string >(), "stata input file")
    ;

    po::options_description db_export("Database options");
    db_export.add_options()
    ("db-type,d", po::value< string >(), "select database type [sqlite]")
    ("connection-string,c", po::value< string >(), "connection string" )
    ;

    po::positional_options_description p;
    p.add("stata-file", -1);

    po::positional_options_description db;
    db.add("db-type", 1).add("connection-string", 2);
    
    po::options_description all("Allowed options");
    all.add(desc).add(db_export);
    
    po::variables_map args;
    
    po::store (po::command_line_parser(argc, argv).options(all).positional(p).positional(db)
    .style (po::command_line_style::default_style | po::command_line_style::allow_long_disguise)
    .run (), args);

    po::notify(args);

    if (args.count("help") || !args.count("stata-file"))
    {
      cout << "Usage: " << PROGRAM_NAME << " [options] <stata file>\n";
      cout << all << endl;
      return 0;
    }

    ifstream stfs(args["stata-file"].as< string >().c_str(), ios::in | ios::binary);
    std::string stata((std::istreambuf_iterator<char>(stfs)), std::istreambuf_iterator<char>());
    ctx = new Context((char *)stata.c_str(), stata.length());

    if (ctx != NULL) {
      ctx->advance();
    }

    
 
    if (args.count("db-type"))
    {
      DatabaseTypes db_type = SQLITE;

      if (!args.count("connection-string"))
      {
        cout << "Connection string required" << endl;
        return 0;     
      }
     
      if (args["db-type"].as< string >() == "sqlite")
      {
        db_type = SQLITE;
      }
      else
      {
        cout << "Database type not supported" << endl;
        return 0;
      }
    
      cout << "Exporting to " << args["connection-string"].as< string >().c_str() << endl;
      ctx->exportToDB( db_type, (char *)args["connection-string"].as< string >().c_str()); 
      return 1;
       
        
      
    }
    else
    {
        // Show the metadata of the file and exit 
         cout << "Information on Stata file: " << args["stata-file"].as< string >() << endl;
         cout << ctx->hdr.showHeader() << endl;
         return 1;
    }

  }
  catch(std::exception& e) {
      cout << e.what() << "\n";
  }
    

  
  

  //  ctx->exportToDB((char *)"export_context.db");
  

  
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x508, %rsp            # imm = 0x508
movq %rsi, %rbx
movl %edi, %r14d
leaq -0x478(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x9628(%rip), %rsi      # 0x11020
leaq 0x9630(%rip), %rdx      # 0x1102f
leaq -0x488(%rbp), %rdi
callq 0x8ede
movq 0x11586(%rip), %rax     # 0x18f98
movl (%rax), %r15d
movl %r15d, %r12d
shrl %r12d
leaq -0x280(%rbp), %rdi
leaq -0x488(%rbp), %rsi
movl %r15d, %edx
movl %r12d, %ecx
callq 0x7450
movq -0x488(%rbp), %rdi
leaq -0x478(%rbp), %rax
cmpq %rax, %rdi
je 0x7a56
movq -0x478(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0x280(%rbp), %rdi
callq 0x73c0
leaq -0x488(%rbp), %rdi
movq %rax, (%rdi)
leaq 0x95bd(%rip), %rsi      # 0x11030
leaq 0x95bb(%rip), %rdx      # 0x11035
callq 0x75e0
movq %rax, %r13
xorl %edi, %edi
callq 0x8f77
leaq 0x95ba(%rip), %rsi      # 0x1104a
leaq 0x95be(%rip), %rcx      # 0x11055
movq %r13, %rdi
movq %rax, %rdx
callq 0x7610
leaq -0x488(%rbp), %rdi
leaq -0x478(%rbp), %rax
movq %rax, (%rdi)
leaq 0x95ac(%rip), %rsi      # 0x11066
leaq 0x95b5(%rip), %rdx      # 0x11076
callq 0x8ede
leaq -0x200(%rbp), %rdi
leaq -0x488(%rbp), %rsi
movl %r15d, %edx
movl %r12d, %ecx
callq 0x7450
movq -0x488(%rbp), %rdi
leaq -0x478(%rbp), %rax
cmpq %rax, %rdi
je 0x7b01
movq -0x478(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0x200(%rbp), %rdi
callq 0x73c0
movq %rax, -0x488(%rbp)
xorl %edi, %edi
callq 0x8f77
leaq 0x9555(%rip), %rsi      # 0x11077
leaq 0x9558(%rip), %rcx      # 0x11081
leaq -0x488(%rbp), %rdi
movq %rax, %rdx
callq 0x7610
movq %rax, %r13
xorl %edi, %edi
callq 0x8f77
leaq 0x9556(%rip), %rsi      # 0x1109f
leaq 0x9563(%rip), %rcx      # 0x110b3
movq %r13, %rdi
movq %rax, %rdx
callq 0x7610
leaq -0x100(%rbp), %rdi
callq 0x7410
leaq 0x94dc(%rip), %rsi      # 0x1104a
leaq -0x100(%rbp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x7370
leaq -0xc8(%rbp), %rdi
callq 0x7410
leaq 0x9533(%rip), %rsi      # 0x110c5
leaq -0xc8(%rbp), %rdi
movl $0x1, %edx
callq 0x7370
leaq 0x9523(%rip), %rsi      # 0x110cd
movq %rax, %rdi
movl $0x2, %edx
callq 0x7370
leaq -0x488(%rbp), %rdi
leaq -0x478(%rbp), %rax
movq %rax, (%rdi)
leaq 0x9510(%rip), %rsi      # 0x110df
leaq 0x9518(%rip), %rdx      # 0x110ee
callq 0x8ede
leaq -0x180(%rbp), %rdi
leaq -0x488(%rbp), %rsi
movl %r15d, %edx
movl %r12d, %ecx
callq 0x7450
movq -0x488(%rbp), %rdi
leaq -0x478(%rbp), %rax
cmpq %rax, %rdi
je 0x7c16
movq -0x478(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0x180(%rbp), %rdi
leaq -0x280(%rbp), %rsi
callq 0x7350
leaq -0x200(%rbp), %rsi
movq %rax, %rdi
callq 0x7350
leaq -0x528(%rbp), %rdi
callq 0x7150
leaq -0x488(%rbp), %rdi
movl %r14d, %esi
movq %rbx, %rdx
callq 0x87d2
leaq -0x488(%rbp), %rdi
leaq -0x180(%rbp), %rbx
movq %rbx, %rsi
callq 0x72b0
leaq -0x488(%rbp), %rdi
movq %rbx, 0x70(%rdi)
leaq -0x100(%rbp), %rsi
callq 0x7550
leaq -0x488(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x7550
leaq -0x488(%rbp), %rdi
movl $0x13f7, %esi           # imm = 0x13F7
callq 0x7630
leaq -0x90(%rbp), %rdi
leaq -0x488(%rbp), %rsi
callq 0x8862
leaq -0x90(%rbp), %rdi
leaq -0x528(%rbp), %rsi
xorl %edx, %edx
callq 0x75a0
leaq -0x90(%rbp), %rdi
callq 0x8a20
leaq -0x438(%rbp), %rdi
callq 0x8b52
leaq -0x458(%rbp), %rdi
callq 0x8b94
leaq -0x488(%rbp), %rdi
callq 0x8aa8
leaq -0x528(%rbp), %rdi
callq 0x71f0
leaq -0x488(%rbp), %rdi
leaq -0x478(%rbp), %rax
movq %rax, (%rdi)
leaq 0x930d(%rip), %rsi      # 0x11030
leaq 0x930a(%rip), %rdx      # 0x11034
callq 0x8ede
leaq -0x518(%rbp), %rbx
leaq -0x488(%rbp), %rsi
movq %rbx, %rdi
callq 0xa6a4
movq %rax, %r14
leaq -0x510(%rbp), %r12
movb $0x1, %r15b
cmpq %r12, %rax
jne 0x7d8f
leaq -0x80(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x92e4(%rip), %rsi      # 0x1104a
leaq 0x92e7(%rip), %rdx      # 0x11054
leaq -0x90(%rbp), %rdi
callq 0x8ede
leaq -0x90(%rbp), %rsi
movq %rbx, %rdi
callq 0xa6a4
cmpq %r12, %rax
sete %r15b
cmpq %r12, %r14
jne 0x7dad
leaq -0x80(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7dad
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x7340
movq -0x488(%rbp), %rdi
leaq -0x478(%rbp), %rax
cmpq %rax, %rdi
je 0x7dcf
movq -0x478(%rbp), %rsi
incq %rsi
callq 0x7340
testb %r15b, %r15b
je 0x7e65
movq 0x111e1(%rip), %rdi     # 0x18fc0
leaq 0x9309(%rip), %rsi      # 0x110ef
movl $0x7, %edx
callq 0x73b0
movq 0x111c9(%rip), %rdi     # 0x18fc0
leaq 0x92f9(%rip), %rsi      # 0x110f7
movl $0xf, %edx
callq 0x73b0
movq 0x111b1(%rip), %rdi     # 0x18fc0
leaq 0x92f1(%rip), %rsi      # 0x11107
movl $0x18, %edx
callq 0x73b0
movq 0x11199(%rip), %rdi     # 0x18fc0
leaq -0x180(%rbp), %rsi
callq 0x7090
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %r14, %rdi
callq 0x7050
xorl %r14d, %r14d
movq %rax, %rdi
callq 0x7230
jmp 0x82a8
leaq -0x58(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x91d6(%rip), %rsi      # 0x1104a
leaq 0x91d9(%rip), %rdx      # 0x11054
leaq -0x68(%rbp), %rdi
callq 0x8ede
leaq -0x528(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x7390
movq %rax, %rdi
callq 0xa741
movq (%rax), %rsi
leaq -0x488(%rbp), %rdi
movl $0xc, %edx
callq 0x75d0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x7ec9
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x7340
movq -0x488(%rbp), %rax
movq -0x18(%rax), %rax
movq -0x3a0(%rbp,%rax), %rsi
leaq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
movq %rax, (%rdi)
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
xorl %ecx, %ecx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
callq 0xab8c
movl $0x118, %edi            # imm = 0x118
callq 0x7330
movq %rax, %r15
movq -0x68(%rbp), %rsi
movl -0x60(%rbp), %edx
movq %rax, %rdi
callq 0xb4e0
movq %r15, %rdi
callq 0xb87a
leaq -0x38(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x9199(%rip), %rsi      # 0x110c5
leaq 0x9199(%rip), %rdx      # 0x110cc
leaq -0x48(%rbp), %rdi
callq 0x8ede
leaq -0x48(%rbp), %rsi
movq %rbx, %rdi
callq 0xa6a4
movq %rax, %r14
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x7f60
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x7340
cmpq %r12, %r14
je 0x8023
leaq -0x48(%rbp), %rdi
movq %r13, (%rdi)
leaq 0x9156(%rip), %rsi      # 0x110cd
leaq 0x9160(%rip), %rdx      # 0x110de
callq 0x8ede
leaq -0x48(%rbp), %rsi
movq %rbx, %rdi
callq 0xa6a4
movq %rax, %r14
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x7fa7
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x7340
cmpq %r12, %r14
je 0x8112
leaq -0x48(%rbp), %rdi
movq %r13, (%rdi)
leaq 0x9107(%rip), %rsi      # 0x110c5
leaq 0x9107(%rip), %rdx      # 0x110cc
callq 0x8ede
leaq -0x528(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x7390
movq %rax, %rdi
callq 0xa741
leaq 0x9152(%rip), %rsi      # 0x1113b
movq %rax, %rdi
callq 0x70d0
movl %eax, %r14d
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x8009
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x7340
testl %r14d, %r14d
je 0x8160
movl $0x1b, %edx
leaq 0x9124(%rip), %rsi      # 0x11142
jmp 0x811e
movq 0x10f96(%rip), %rdi     # 0x18fc0
leaq 0x913b(%rip), %rsi      # 0x1116c
movl $0x1b, %edx
callq 0x73b0
leaq -0x48(%rbp), %rdi
movq %r13, (%rdi)
leaq 0x9001(%rip), %rsi      # 0x1104a
leaq 0x9004(%rip), %rdx      # 0x11054
callq 0x8ede
leaq -0x528(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x7390
movq %rax, %rdi
callq 0xa741
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x10f45(%rip), %rdi     # 0x18fc0
callq 0x73b0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %r14, %rdi
callq 0x7050
movq %rax, %rdi
callq 0x7230
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x80bf
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x7340
addq $0x8, %r15
leaq -0x48(%rbp), %rdi
movq %r15, %rsi
callq 0xafba
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq 0x10ee2(%rip), %rdi     # 0x18fc0
callq 0x73b0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %r14, %rdi
callq 0x7050
movq %rax, %rdi
callq 0x7230
jmp 0x8268
movl $0x1a, %edx
leaq 0x9002(%rip), %rsi      # 0x11120
movq 0x10e9b(%rip), %r14     # 0x18fc0
movq %r14, %rdi
callq 0x73b0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq 0x10e75(%rip), %rdi     # 0x18fc0
callq 0x7050
xorl %r14d, %r14d
movq %rax, %rdi
callq 0x7230
jmp 0x8283
movq 0x10e59(%rip), %r14     # 0x18fc0
leaq 0x8ff0(%rip), %rsi      # 0x1115e
movl $0xd, %edx
movq %r14, %rdi
callq 0x73b0
leaq -0x48(%rbp), %rdi
movq %r13, (%rdi)
leaq 0x8f44(%rip), %rsi      # 0x110cd
leaq 0x8f4e(%rip), %rdx      # 0x110de
callq 0x8ede
leaq -0x528(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x7390
movq %rax, %rdi
callq 0xa741
movq (%rax), %r12
testq %r12, %r12
je 0x81d1
movq %r12, %rdi
callq 0x7160
movq 0x10dfc(%rip), %rdi     # 0x18fc0
movq %r12, %rsi
movq %rax, %rdx
callq 0x73b0
jmp 0x81e9
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x7560
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq 0x10db9(%rip), %rdi     # 0x18fc0
callq 0x7050
movq %rax, %rdi
callq 0x7230
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x8229
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0x48(%rbp), %rdi
movq %r13, (%rdi)
leaq 0x8e96(%rip), %rsi      # 0x110cd
leaq 0x8ea0(%rip), %rdx      # 0x110de
callq 0x8ede
leaq -0x528(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x7390
movq %rax, %rdi
callq 0xa741
movq (%rax), %rdx
movq %r15, %rdi
xorl %esi, %esi
callq 0xb692
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x827d
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x7340
movl $0x1, %r14d
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x829c
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0x488(%rbp), %rdi
callq 0x70b0
movq 0x10d21(%rip), %rax     # 0x18fd0
addq $0x10, %rax
leaq -0x4b8(%rbp), %rdi
movq %rax, -0x70(%rdi)
callq 0x8bd6
leaq -0x4e8(%rbp), %rdi
callq 0x8c86
movq %rbx, %rdi
callq 0x8d16
leaq -0x118(%rbp), %rbx
movq %rbx, %rdi
callq 0x8e02
movq -0x28(%rbx), %rdi
testq %rdi, %rdi
je 0x8321
movq -0x120(%rbp), %rsi
subq %rdi, %rsi
callq 0x7340
xorl %eax, %eax
movq %rax, -0x140(%rbp)
movl %eax, -0x138(%rbp)
movq %rax, -0x130(%rbp)
movl %eax, -0x128(%rbp)
movq %rax, -0x120(%rbp)
leaq -0x158(%rbp), %rbx
movq %rbx, %rdi
callq 0x8e54
movq -0x28(%rbx), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x834f
movq -0x170(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0xa0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x836e
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0xc8(%rbp), %rdi
callq 0x8aa8
leaq -0xd8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8399
movq -0xd8(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0x100(%rbp), %rdi
callq 0x8aa8
leaq -0x198(%rbp), %rbx
movq %rbx, %rdi
callq 0x8e02
movq -0x28(%rbx), %rdi
testq %rdi, %rdi
je 0x83ef
movq -0x1a0(%rbp), %rsi
subq %rdi, %rsi
callq 0x7340
xorl %eax, %eax
movq %rax, -0x1c0(%rbp)
movl %eax, -0x1b8(%rbp)
movq %rax, -0x1b0(%rbp)
movl %eax, -0x1a8(%rbp)
movq %rax, -0x1a0(%rbp)
leaq -0x1d8(%rbp), %rbx
movq %rbx, %rdi
callq 0x8e54
movq -0x28(%rbx), %rdi
leaq -0x1f0(%rbp), %rax
cmpq %rax, %rdi
je 0x841d
movq -0x1f0(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0x218(%rbp), %rbx
movq %rbx, %rdi
callq 0x8e02
movq -0x28(%rbx), %rdi
testq %rdi, %rdi
je 0x8467
movq -0x220(%rbp), %rsi
subq %rdi, %rsi
callq 0x7340
xorl %eax, %eax
movq %rax, -0x240(%rbp)
movl %eax, -0x238(%rbp)
movq %rax, -0x230(%rbp)
movl %eax, -0x228(%rbp)
movq %rax, -0x220(%rbp)
leaq -0x258(%rbp), %rbx
movq %rbx, %rdi
callq 0x8e54
movq -0x28(%rbx), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x8495
movq -0x270(%rbp), %rsi
incq %rsi
callq 0x7340
movl %r14d, %eax
addq $0x508, %rsp            # imm = 0x508
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x8658
jmp 0x8658
jmp 0x8658
jmp 0x8658
jmp 0x8658
jmp 0x863b
jmp 0x863b
jmp 0x8658
movq %rdx, %rbx
movq %rax, %r14
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x8536
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x7340
jmp 0x8536
jmp 0x8530
jmp 0x863b
jmp 0x863b
jmp 0x863b
jmp 0x8658
movq %rdx, %rbx
movq %rax, %r14
movl $0x118, %esi            # imm = 0x118
movq %r15, %rdi
jmp 0x8651
movq %rdx, %rbx
movq %rax, %r14
jmp 0x8677
jmp 0x86be
jmp 0x863b
movq %rdx, %rbx
movq %rax, %r14
movq -0x488(%rbp), %rdi
leaq -0x478(%rbp), %rax
cmpq %rax, %rdi
je 0x86d8
movq -0x478(%rbp), %rsi
jmp 0x869c
jmp 0x86be
movq %rdx, %rbx
movq %rax, %r14
leaq -0x90(%rbp), %rdi
callq 0x8a20
jmp 0x86cc
jmp 0x86be
jmp 0x86a6
movq %rdx, %rbx
movq %rax, %r14
movq -0x488(%rbp), %rdi
leaq -0x478(%rbp), %rax
cmpq %rax, %rdi
je 0x86f0
movq -0x478(%rbp), %rsi
incq %rsi
callq 0x7340
jmp 0x86f0
jmp 0x86ae
jmp 0x85b7
movq %rdx, %rbx
movq %rax, %r14
jmp 0x86fc
jmp 0x877e
movq %rdx, %rbx
movq %rax, %r14
movq -0x488(%rbp), %rdi
leaq -0x478(%rbp), %rax
cmpq %rax, %rdi
je 0x8714
movq -0x478(%rbp), %rsi
incq %rsi
callq 0x7340
jmp 0x8714
jmp 0x86b6
movq %rdx, %rbx
movq %rax, %r14
movq -0x488(%rbp), %rdi
leaq -0x478(%rbp), %rax
cmpq %rax, %rdi
je 0x8720
movq -0x478(%rbp), %rsi
incq %rsi
callq 0x7340
jmp 0x8720
movq %rdx, %rbx
movq %rax, %r14
jmp 0x8720
jmp 0x8658
movq %rdx, %rbx
movq %rax, %r14
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x865e
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x7340
jmp 0x865e
movq %rdx, %rbx
movq %rax, %r14
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x8677
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0x488(%rbp), %rdi
callq 0x70b0
jmp 0x86d8
movq %rdx, %rbx
movq %rax, %r14
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x86d8
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x7340
jmp 0x86d8
movq %rdx, %rbx
movq %rax, %r14
jmp 0x86e4
movq %rdx, %rbx
movq %rax, %r14
jmp 0x86f0
movq %rdx, %rbx
movq %rax, %r14
jmp 0x8714
movq %rdx, %rbx
movq %rax, %r14
jmp 0x86d8
movq %rdx, %rbx
movq %rax, %r14
leaq -0x488(%rbp), %rdi
callq 0x893a
leaq -0x528(%rbp), %rdi
callq 0x8964
leaq -0x180(%rbp), %rdi
callq 0x89a0
leaq -0xc8(%rbp), %rdi
callq 0x89f0
leaq -0x100(%rbp), %rdi
callq 0x89f0
leaq -0x200(%rbp), %rdi
callq 0x89a0
leaq -0x280(%rbp), %rdi
callq 0x89a0
cmpl $0x1, %ebx
jne 0x876e
movq %r14, %rdi
callq 0x7140
movq (%rax), %rcx
movq %rax, %rdi
callq *0x10(%rcx)
movq 0x10883(%rip), %rdi     # 0x18fc0
movq %rax, %rsi
callq 0x7320
leaq 0x89d2(%rip), %rsi      # 0x1111e
movl $0x1, %edx
movq %rax, %rdi
callq 0x73b0
callq 0x7530
xorl %r14d, %r14d
jmp 0x8495
movq %rax, %r14
callq 0x7530
movq %r14, %rdi
callq 0x75b0
movq %rax, %rdi
callq 0x8786
movq %rdx, %rbx
movq %rax, %r14
jmp 0x8708