// File: /workspace/github_cpp_makefile_star2_O3/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 $0x4e8, %rsp            # imm = 0x4E8
movq %rsi, %rbx
movl %edi, %r14d
leaq -0x458(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x960c(%rip), %rsi      # 0x11004
leaq 0x9614(%rip), %rdx      # 0x11013
leaq -0x468(%rbp), %rdi
callq 0x8eb8
movq 0x11586(%rip), %rax     # 0x18f98
movl (%rax), %r15d
movl %r15d, %r12d
shrl %r12d
leaq -0x260(%rbp), %rdi
leaq -0x468(%rbp), %rsi
movl %r15d, %edx
movl %r12d, %ecx
callq 0x7450
movq -0x468(%rbp), %rdi
leaq -0x458(%rbp), %rax
cmpq %rax, %rdi
je 0x7a56
movq -0x458(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0x260(%rbp), %rdi
callq 0x73c0
leaq -0x468(%rbp), %rdi
movq %rax, (%rdi)
leaq 0x95a1(%rip), %rsi      # 0x11014
leaq 0x959f(%rip), %rdx      # 0x11019
callq 0x75e0
movq %rax, %r13
xorl %edi, %edi
callq 0x8f56
leaq 0x959e(%rip), %rsi      # 0x1102e
leaq 0x95a2(%rip), %rcx      # 0x11039
movq %r13, %rdi
movq %rax, %rdx
callq 0x7610
leaq -0x468(%rbp), %rdi
leaq -0x458(%rbp), %rax
movq %rax, (%rdi)
leaq 0x9590(%rip), %rsi      # 0x1104a
leaq 0x9599(%rip), %rdx      # 0x1105a
callq 0x8eb8
leaq -0x1e0(%rbp), %rdi
leaq -0x468(%rbp), %rsi
movl %r15d, %edx
movl %r12d, %ecx
callq 0x7450
movq -0x468(%rbp), %rdi
leaq -0x458(%rbp), %rax
cmpq %rax, %rdi
je 0x7b01
movq -0x458(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0x1e0(%rbp), %rdi
callq 0x73c0
movq %rax, -0x468(%rbp)
xorl %edi, %edi
callq 0x8f56
leaq 0x9539(%rip), %rsi      # 0x1105b
leaq 0x953c(%rip), %rcx      # 0x11065
leaq -0x468(%rbp), %rdi
movq %rax, %rdx
callq 0x7610
movq %rax, %r13
xorl %edi, %edi
callq 0x8f56
leaq 0x953a(%rip), %rsi      # 0x11083
leaq 0x9547(%rip), %rcx      # 0x11097
movq %r13, %rdi
movq %rax, %rdx
callq 0x7610
leaq -0xe0(%rbp), %rdi
callq 0x7410
leaq 0x94c0(%rip), %rsi      # 0x1102e
leaq -0xe0(%rbp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x7370
leaq -0xa8(%rbp), %rdi
callq 0x7410
leaq 0x9517(%rip), %rsi      # 0x110a9
leaq -0xa8(%rbp), %rdi
movl $0x1, %edx
callq 0x7370
leaq 0x9507(%rip), %rsi      # 0x110b1
movq %rax, %rdi
movl $0x2, %edx
callq 0x7370
leaq -0x468(%rbp), %rdi
leaq -0x458(%rbp), %rax
movq %rax, (%rdi)
leaq 0x94f4(%rip), %rsi      # 0x110c3
leaq 0x94fc(%rip), %rdx      # 0x110d2
callq 0x8eb8
leaq -0x160(%rbp), %rdi
leaq -0x468(%rbp), %rsi
movl %r15d, %edx
movl %r12d, %ecx
callq 0x7450
movq -0x468(%rbp), %rdi
leaq -0x458(%rbp), %rax
cmpq %rax, %rdi
je 0x7c16
movq -0x458(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0x160(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x7350
leaq -0x1e0(%rbp), %rsi
movq %rax, %rdi
callq 0x7350
leaq -0x508(%rbp), %rdi
callq 0x7150
leaq -0x468(%rbp), %rdi
movl %r14d, %esi
movq %rbx, %rdx
callq 0x87ae
leaq -0x468(%rbp), %rdi
leaq -0x160(%rbp), %rbx
movq %rbx, %rsi
callq 0x72b0
leaq -0x468(%rbp), %rdi
movq %rbx, 0x70(%rdi)
leaq -0xe0(%rbp), %rsi
callq 0x7550
leaq -0x468(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x7550
leaq -0x468(%rbp), %rdi
movl $0x13f7, %esi           # imm = 0x13F7
callq 0x7630
leaq -0x70(%rbp), %rdi
leaq -0x468(%rbp), %rsi
callq 0x883e
leaq -0x70(%rbp), %rdi
leaq -0x508(%rbp), %rsi
xorl %edx, %edx
callq 0x75a0
leaq -0x70(%rbp), %rdi
callq 0x89ec
leaq -0x418(%rbp), %rdi
callq 0x8b20
leaq -0x438(%rbp), %rdi
callq 0x8b62
leaq -0x468(%rbp), %rdi
callq 0x8a74
leaq -0x508(%rbp), %rdi
callq 0x71f0
leaq -0x468(%rbp), %rdi
leaq -0x458(%rbp), %rax
movq %rax, (%rdi)
leaq 0x92fa(%rip), %rsi      # 0x11014
leaq 0x92f7(%rip), %rdx      # 0x11018
callq 0x8eb8
leaq -0x4f8(%rbp), %rbx
leaq -0x468(%rbp), %rsi
movq %rbx, %rdi
callq 0xa65c
movq %rax, %r14
leaq -0x4f0(%rbp), %r12
movb $0x1, %r15b
cmpq %r12, %rax
jne 0x7d95
leaq -0x60(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x92d1(%rip), %rsi      # 0x1102e
leaq 0x92d4(%rip), %rdx      # 0x11038
leaq -0x70(%rbp), %rdi
callq 0x8eb8
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0xa65c
cmpq %r14, %rax
sete %r15b
movq -0x70(%rbp), %rdi
cmpq %r13, %rdi
je 0x7d95
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x7340
movq -0x468(%rbp), %rdi
leaq -0x458(%rbp), %rax
cmpq %rax, %rdi
je 0x7db7
movq -0x458(%rbp), %rsi
incq %rsi
callq 0x7340
testb %r15b, %r15b
je 0x7e4d
movq 0x111f9(%rip), %rdi     # 0x18fc0
leaq 0x9305(%rip), %rsi      # 0x110d3
movl $0x7, %edx
callq 0x73b0
movq 0x111e1(%rip), %rdi     # 0x18fc0
leaq 0x92f5(%rip), %rsi      # 0x110db
movl $0xf, %edx
callq 0x73b0
movq 0x111c9(%rip), %rdi     # 0x18fc0
leaq 0x92ed(%rip), %rsi      # 0x110eb
movl $0x18, %edx
callq 0x73b0
movq 0x111b1(%rip), %rdi     # 0x18fc0
leaq -0x160(%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 0x8290
leaq -0x60(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x91d2(%rip), %rsi      # 0x1102e
leaq 0x91d5(%rip), %rdx      # 0x11038
leaq -0x70(%rbp), %rdi
callq 0x8eb8
leaq -0x508(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x7390
movq %rax, %rdi
callq 0xa6f9
movq (%rax), %rsi
leaq -0x468(%rbp), %rdi
movl $0xc, %edx
callq 0x75d0
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x7eb1
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x7340
movq -0x468(%rbp), %rax
movq -0x18(%rax), %rax
movq -0x380(%rbp,%rax), %rsi
leaq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
movq %rax, (%rdi)
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
xorl %ecx, %ecx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
callq 0xab18
movl $0x118, %edi            # imm = 0x118
callq 0x7330
movq %rax, %r15
movq -0x70(%rbp), %rsi
movl -0x68(%rbp), %edx
movq %rax, %rdi
callq 0xb4e0
movq %r15, %rdi
callq 0xb856
leaq -0x38(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x9195(%rip), %rsi      # 0x110a9
leaq 0x9195(%rip), %rdx      # 0x110b0
leaq -0x48(%rbp), %rdi
callq 0x8eb8
leaq -0x48(%rbp), %rsi
movq %rbx, %rdi
callq 0xa65c
movq %rax, %r14
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x7f48
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x7340
cmpq %r12, %r14
je 0x800b
leaq -0x48(%rbp), %rdi
movq %r13, (%rdi)
leaq 0x9152(%rip), %rsi      # 0x110b1
leaq 0x915c(%rip), %rdx      # 0x110c2
callq 0x8eb8
leaq -0x48(%rbp), %rsi
movq %rbx, %rdi
callq 0xa65c
movq %rax, %r14
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x7f8f
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x7340
cmpq %r12, %r14
je 0x80fa
leaq -0x48(%rbp), %rdi
movq %r13, (%rdi)
leaq 0x9103(%rip), %rsi      # 0x110a9
leaq 0x9103(%rip), %rdx      # 0x110b0
callq 0x8eb8
leaq -0x508(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x7390
movq %rax, %rdi
callq 0xa6f9
leaq 0x914e(%rip), %rsi      # 0x1111f
movq %rax, %rdi
callq 0x70d0
movl %eax, %r14d
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x7ff1
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x7340
testl %r14d, %r14d
je 0x8148
movl $0x1b, %edx
leaq 0x9120(%rip), %rsi      # 0x11126
jmp 0x8106
movq 0x10fae(%rip), %rdi     # 0x18fc0
leaq 0x9137(%rip), %rsi      # 0x11150
movl $0x1b, %edx
callq 0x73b0
leaq -0x48(%rbp), %rdi
movq %r13, (%rdi)
leaq 0x8ffd(%rip), %rsi      # 0x1102e
leaq 0x9000(%rip), %rdx      # 0x11038
callq 0x8eb8
leaq -0x508(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x7390
movq %rax, %rdi
callq 0xa6f9
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x10f5d(%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 0x80a7
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 0x10efa(%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 0x8250
movl $0x1a, %edx
leaq 0x8ffe(%rip), %rsi      # 0x11104
movq 0x10eb3(%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 0x10e8d(%rip), %rdi     # 0x18fc0
callq 0x7050
xorl %r14d, %r14d
movq %rax, %rdi
callq 0x7230
jmp 0x826b
movq 0x10e71(%rip), %r14     # 0x18fc0
leaq 0x8fec(%rip), %rsi      # 0x11142
movl $0xd, %edx
movq %r14, %rdi
callq 0x73b0
leaq -0x48(%rbp), %rdi
movq %r13, (%rdi)
leaq 0x8f40(%rip), %rsi      # 0x110b1
leaq 0x8f4a(%rip), %rdx      # 0x110c2
callq 0x8eb8
leaq -0x508(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x7390
movq %rax, %rdi
callq 0xa6f9
movq (%rax), %r12
testq %r12, %r12
je 0x81b9
movq %r12, %rdi
callq 0x7160
movq 0x10e14(%rip), %rdi     # 0x18fc0
movq %r12, %rsi
movq %rax, %rdx
callq 0x73b0
jmp 0x81d1
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 0x10dd1(%rip), %rdi     # 0x18fc0
callq 0x7050
movq %rax, %rdi
callq 0x7230
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x8211
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0x48(%rbp), %rdi
movq %r13, (%rdi)
leaq 0x8e92(%rip), %rsi      # 0x110b1
leaq 0x8e9c(%rip), %rdx      # 0x110c2
callq 0x8eb8
leaq -0x508(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x7390
movq %rax, %rdi
callq 0xa6f9
movq (%rax), %rdx
movq %r15, %rdi
xorl %esi, %esi
callq 0xb676
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x8265
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x7340
movl $0x1, %r14d
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x8284
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0x468(%rbp), %rdi
callq 0x70b0
movq 0x10d39(%rip), %rax     # 0x18fd0
addq $0x10, %rax
leaq -0x498(%rbp), %rdi
movq %rax, -0x70(%rdi)
callq 0x8ba4
leaq -0x4c8(%rbp), %rdi
callq 0x8c54
movq %rbx, %rdi
callq 0x8ce4
leaq -0xf8(%rbp), %rbx
movq %rbx, %rdi
callq 0x8dd0
movq -0x28(%rbx), %rdi
testq %rdi, %rdi
je 0x8309
movq -0x100(%rbp), %rsi
subq %rdi, %rsi
callq 0x7340
xorl %eax, %eax
movq %rax, -0x120(%rbp)
movl %eax, -0x118(%rbp)
movq %rax, -0x110(%rbp)
movl %eax, -0x108(%rbp)
movq %rax, -0x100(%rbp)
leaq -0x138(%rbp), %rbx
movq %rbx, %rdi
callq 0x8e28
movq -0x28(%rbx), %rdi
leaq -0x150(%rbp), %rax
cmpq %rax, %rdi
je 0x8337
movq -0x150(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0x80(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8350
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0xa8(%rbp), %rdi
callq 0x8a74
leaq -0xb8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x837b
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0xe0(%rbp), %rdi
callq 0x8a74
leaq -0x178(%rbp), %rbx
movq %rbx, %rdi
callq 0x8dd0
movq -0x28(%rbx), %rdi
testq %rdi, %rdi
je 0x83d1
movq -0x180(%rbp), %rsi
subq %rdi, %rsi
callq 0x7340
xorl %eax, %eax
movq %rax, -0x1a0(%rbp)
movl %eax, -0x198(%rbp)
movq %rax, -0x190(%rbp)
movl %eax, -0x188(%rbp)
movq %rax, -0x180(%rbp)
leaq -0x1b8(%rbp), %rbx
movq %rbx, %rdi
callq 0x8e28
movq -0x28(%rbx), %rdi
leaq -0x1d0(%rbp), %rax
cmpq %rax, %rdi
je 0x83ff
movq -0x1d0(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0x1f8(%rbp), %rbx
movq %rbx, %rdi
callq 0x8dd0
movq -0x28(%rbx), %rdi
testq %rdi, %rdi
je 0x8449
movq -0x200(%rbp), %rsi
subq %rdi, %rsi
callq 0x7340
xorl %eax, %eax
movq %rax, -0x220(%rbp)
movl %eax, -0x218(%rbp)
movq %rax, -0x210(%rbp)
movl %eax, -0x208(%rbp)
movq %rax, -0x200(%rbp)
leaq -0x238(%rbp), %rbx
movq %rbx, %rdi
callq 0x8e28
movq -0x28(%rbx), %rdi
leaq -0x250(%rbp), %rax
cmpq %rax, %rdi
je 0x8477
movq -0x250(%rbp), %rsi
incq %rsi
callq 0x7340
movl %r14d, %eax
addq $0x4e8, %rsp            # imm = 0x4E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x8634
jmp 0x8634
jmp 0x8634
jmp 0x8634
jmp 0x8634
jmp 0x8617
jmp 0x8617
jmp 0x8634
movq %rdx, %rbx
movq %rax, %r14
movq -0x70(%rbp), %rdi
cmpq %r13, %rdi
je 0x8515
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x7340
jmp 0x8515
jmp 0x850f
jmp 0x8617
jmp 0x8617
jmp 0x8617
jmp 0x8634
movq %rdx, %rbx
movq %rax, %r14
movl $0x118, %esi            # imm = 0x118
movq %r15, %rdi
jmp 0x862d
movq %rdx, %rbx
movq %rax, %r14
jmp 0x8653
jmp 0x869a
jmp 0x8617
movq %rdx, %rbx
movq %rax, %r14
movq -0x468(%rbp), %rdi
leaq -0x458(%rbp), %rax
cmpq %rax, %rdi
je 0x86b4
movq -0x458(%rbp), %rsi
jmp 0x8678
jmp 0x869a
movq %rdx, %rbx
movq %rax, %r14
leaq -0x70(%rbp), %rdi
callq 0x89ec
jmp 0x86a8
jmp 0x869a
jmp 0x8682
movq %rdx, %rbx
movq %rax, %r14
movq -0x468(%rbp), %rdi
leaq -0x458(%rbp), %rax
cmpq %rax, %rdi
je 0x86cc
movq -0x458(%rbp), %rsi
incq %rsi
callq 0x7340
jmp 0x86cc
jmp 0x868a
jmp 0x8593
movq %rdx, %rbx
movq %rax, %r14
jmp 0x86d8
jmp 0x875a
movq %rdx, %rbx
movq %rax, %r14
movq -0x468(%rbp), %rdi
leaq -0x458(%rbp), %rax
cmpq %rax, %rdi
je 0x86f0
movq -0x458(%rbp), %rsi
incq %rsi
callq 0x7340
jmp 0x86f0
jmp 0x8692
movq %rdx, %rbx
movq %rax, %r14
movq -0x468(%rbp), %rdi
leaq -0x458(%rbp), %rax
cmpq %rax, %rdi
je 0x86fc
movq -0x458(%rbp), %rsi
incq %rsi
callq 0x7340
jmp 0x86fc
movq %rdx, %rbx
movq %rax, %r14
jmp 0x86fc
jmp 0x8634
movq %rdx, %rbx
movq %rax, %r14
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x863a
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x7340
jmp 0x863a
movq %rdx, %rbx
movq %rax, %r14
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x8653
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x7340
leaq -0x468(%rbp), %rdi
callq 0x70b0
jmp 0x86b4
movq %rdx, %rbx
movq %rax, %r14
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x86b4
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x7340
jmp 0x86b4
movq %rdx, %rbx
movq %rax, %r14
jmp 0x86c0
movq %rdx, %rbx
movq %rax, %r14
jmp 0x86cc
movq %rdx, %rbx
movq %rax, %r14
jmp 0x86f0
movq %rdx, %rbx
movq %rax, %r14
jmp 0x86b4
movq %rdx, %rbx
movq %rax, %r14
leaq -0x468(%rbp), %rdi
callq 0x8906
leaq -0x508(%rbp), %rdi
callq 0x8930
leaq -0x160(%rbp), %rdi
callq 0x896c
leaq -0xa8(%rbp), %rdi
callq 0x89bc
leaq -0xe0(%rbp), %rdi
callq 0x89bc
leaq -0x1e0(%rbp), %rdi
callq 0x896c
leaq -0x260(%rbp), %rdi
callq 0x896c
cmpl $0x1, %ebx
jne 0x874a
movq %r14, %rdi
callq 0x7140
movq (%rax), %rcx
movq %rax, %rdi
callq *0x10(%rcx)
movq 0x108a7(%rip), %rdi     # 0x18fc0
movq %rax, %rsi
callq 0x7320
leaq 0x89da(%rip), %rsi      # 0x11102
movl $0x1, %edx
movq %rax, %rdi
callq 0x73b0
callq 0x7530
xorl %r14d, %r14d
jmp 0x8477
movq %rax, %r14
callq 0x7530
movq %r14, %rdi
callq 0x75b0
movq %rax, %rdi
callq 0x8762
movq %rdx, %rbx
movq %rax, %r14
jmp 0x86e4