// File: /workspace/github_cpp_makefile_star2_O1/Altius[P]hotspot2/src/hotspot2_part1.cpp
// Function: main
int main(int argc, char* argv[])
{

  // Option defaults
  int background_size = 50001;
  int sampling_interval = 1;
  int smoothing_parameter = 5; // recommend ca. 15 when the maximum # of sampled observations is ca. 250
  int print_help = 0;
  int print_version = 0;
  string infilename = "";
  string outfilename = "";
  string outfilenameChromNames = "";
  string outfilenamePvals = "";

  // Long-opt definitions
  static struct option long_options[] = {
    { "background_size", required_argument, 0, 'b' },
    { "sampling_interval", required_argument, 0, 'n' },
    { "smoothing_parameter", required_argument, 0, 'm' },
    { "input", required_argument, 0, 'i' },
    { "output", required_argument, 0, 'o' },
    { "outputChromlist", required_argument, 0, 'c' },
    { "outputPvals", required_argument, 0, 'p' }, // note we had been using 'p' for num_pvals
    { "help", no_argument, &print_help, 1 },
    { "version", no_argument, &print_version, 1 },
    { 0, 0, 0, 0 }
  };

  // Parse options
  char c;
  stringstream ss; // Used for parsing doubles (allows scientific notation)
  while ((c = getopt_long(argc, argv, "b:f:m:n:p:s:i:o:c:hvV", long_options, NULL)) != -1)
    {
      switch (c)
        {
        case 'b':
          background_size = atoi(optarg);
          break;
        case 'n':
          sampling_interval = atoi(optarg);
          break;
        case 'm':
          smoothing_parameter = atoi(optarg);
          break;
        case 'p':
	  outfilenamePvals = optarg;
          break;
        case 'i':
          infilename = optarg;
          break;
        case 'o':
          outfilename = optarg;
          break;
	case 'c':
          outfilenameChromNames = optarg;
          break;
	case 'h':
          print_help = 1;
          break;
        case 'v':
        case 'V':
          print_version = 1;
          break;
        case 0:
          // long option received, do nothing
          break;
        default:
          print_help = 1;
        }
    }

  if (!print_help && !print_version && outfilenameChromNames.empty())
    {
      cerr << "Error:  No filename supplied for (temporary) output file of integer-to-chromosomeName mapping."
	   << endl
	   << endl;
      print_help = 1;
    }
  if (!print_help && !print_version && outfilenamePvals.empty())
    {
      cerr << "Error:  No filename supplied for (temporary) output file of scaled -log10(P) values."
	   << endl
	   << endl;
      print_help = 1;
    }
  
  // Print usage and exit if necessary
  if (print_help)
    {
      cerr << "Usage:  " << argv[0] << " [options] < in.cutcounts.bed > out.pvalues.bed\n"
           << "\n"
           << "Options: \n"
           << "  -b, --background_size=SIZE     The size of the background region (50001)\n"
           << "  -n, --sampling_interval=INT    How often (bp) to sample for null modeling (1)\n"
           << "  -m, --smoothing_prameter=INT   Smoothing parameter used in null modeling (5)\n"
           << "  -i, --input=FILE               A file to read input from (STDIN)\n"
           << "  -o, --output=FILE              A file to write output to (STDOUT)\n"
	   << "  -c, --outputChromlist=FILE     Output file to store chromName-to-int mapping\n"
	   << "  -p, --outputPvals=FILE         Output file to store scaled -log10(P) values and # occurrences\n"
	   << "  -v, --version                  Print the version information and exit\n"
           << "  -h, --help                     Display this helpful help\n"
           << "\n"
           << " output (sent to stdout) will be a .bed4 file with a scaled transformation of the P-value in field 4\n"
           << " input (received from stdin) requires IDs in field 4 and counts in field 5.\n"
           << endl
           << endl;
      return -1;
    }

  if (print_version)
    {
      cout << argv[0] << " version " << hotspot2_VERSION_MAJOR
           << '.' << hotspot2_VERSION_MINOR << endl;
      return 0;
    }

  ios_base::sync_with_stdio(false); // calling this static method in this way turns off checks, speeds up I/O

  if (!infilename.empty() && infilename != "-")
    {
      if (freopen(infilename.c_str(), "r", stdin) == NULL)
        {
          cerr << "Error: Couldn't open input file " << infilename << endl;
          return 1;
        }
    }
  if (!outfilename.empty() && outfilename != "-")
    {
      if (freopen(outfilename.c_str(), "w", stdout) == NULL)
        {
          cerr << "Error: Couldn't open output file " << outfilename << " for writing" << endl;
          return 1;
        }
    }

  ofstream ofsIntToChrnameMapping(outfilenameChromNames.c_str());
  if (!ofsIntToChrnameMapping)
    {
      cerr << "Error:  Unable to open file \"" << outfilenameChromNames << "\" for write."
	   << endl
	   << endl;
      return -1;
    }
  ofstream ofsPvals(outfilenamePvals.c_str());
  if (!ofsPvals)
    {
      cerr << "Error:  Unable to open file \"" << outfilenamePvals << "\" for write."
	   << endl
	   << endl;
      return -1;
    }
  
  if (!parseAndProcessInput(background_size, sampling_interval, smoothing_parameter,
			    ofsPvals))
    return -1;

  for (map<string*, int>::const_iterator it = chromAsInt.begin(); it != chromAsInt.end(); it++)
    ofsIntToChrnameMapping << it->second << '\t' << *(it->first) << '\n';
  
  return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x648, %rsp            # imm = 0x648
movq %rsi, %rbx
movl %edi, %ebp
movl $0xc351, 0x20(%rsp)     # imm = 0xC351
movl $0x1, 0x1c(%rsp)
movl $0x5, 0x18(%rsp)
xorl %eax, %eax
movl %eax, 0x10(%rsp)
movl %eax, 0x14(%rsp)
leaq 0xa0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x3924(%rip), %r14      # 0x9825
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
movq %r14, %rdx
callq 0x8230
leaq 0x40(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x30(%rsp), %rdi
movq %r14, %rsi
movq %r14, %rdx
callq 0x8230
leaq 0x80(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x38e2(%rip), %rdx      # 0x9825
leaq 0x70(%rsp), %rdi
movq %rdx, %rsi
callq 0x8230
leaq 0x60(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x38c5(%rip), %rdx      # 0x9825
leaq 0x50(%rsp), %rdi
movq %rdx, %rsi
callq 0x8230
movb 0x746d(%rip), %al       # 0xd3e0
testb %al, %al
je 0x6996
leaq 0x4c0(%rsp), %rdi
callq 0x2170
movl 0x18(%rsp), %eax
movl %eax, 0x24(%rsp)
movl 0x1c(%rsp), %eax
movl %eax, 0x28(%rsp)
movl 0x20(%rsp), %eax
movl %eax, 0x2c(%rsp)
leaq 0x390b(%rip), %rdx      # 0x98b2
leaq 0x72f2(%rip), %rcx      # 0xd2a0
movl %ebp, %edi
movq %rbx, %rsi
xorl %r8d, %r8d
callq 0x2360
shll $0x18, %eax
cmpl $0xff000000, %eax       # imm = 0xFF000000
je 0x60cf
leaq 0x38e2(%rip), %r15      # 0x98b2
leaq 0x72c9(%rip), %r13      # 0xd2a0
sarl $0x18, %eax
leal -0x62(%rax), %ecx
cmpl $0x14, %ecx
ja 0x600d
leaq 0x3057(%rip), %rdx      # 0x9040
movslq (%rdx,%rcx,4), %rax
addq %rdx, %rax
movq %r12, %r14
jmpq *%rax
movq 0x6fac(%rip), %rax      # 0xcfa8
movq (%rax), %rdi
callq 0x2320
movl %eax, 0x2c(%rsp)
jmp 0x60ae
testl %eax, %eax
je 0x60ae
cmpl $0x56, %eax
jne 0x6027
movl $0x1, 0x14(%rsp)
jmp 0x60ae
movl $0x1, 0x10(%rsp)
jmp 0x60ae
leaq 0x70(%rsp), %r14
jmp 0x6059
leaq 0x50(%rsp), %r14
jmp 0x6059
movq 0x6f62(%rip), %rax      # 0xcfa8
movq (%rax), %rdi
callq 0x2320
movl %eax, 0x28(%rsp)
jmp 0x60ae
leaq 0x30(%rsp), %r14
movq 0x6f48(%rip), %rax      # 0xcfa8
movq (%rax), %rdi
movq %rdi, 0xb0(%rsp)
movq 0x8(%r14), %rax
movq %rax, 0xb8(%rsp)
callq 0x20d0
movq %r14, %rdi
xorl %esi, %esi
movq 0xb8(%rsp), %rdx
movq 0xb0(%rsp), %rcx
movq %rax, %r8
callq 0x2310
jmp 0x60ae
movq 0x6f06(%rip), %rax      # 0xcfa8
movq (%rax), %rdi
callq 0x2320
movl %eax, 0x24(%rsp)
movl %ebp, %edi
movq %rbx, %rsi
movq %r15, %rdx
movq %r13, %rcx
xorl %r8d, %r8d
callq 0x2360
shll $0x18, %eax
cmpl $0xff000000, %eax       # imm = 0xFF000000
jne 0x5fd7
movl 0x24(%rsp), %eax
movl %eax, 0x18(%rsp)
movl 0x28(%rsp), %eax
movl %eax, 0x1c(%rsp)
movl 0x2c(%rsp), %eax
movl %eax, 0x20(%rsp)
cmpl $0x0, 0x10(%rsp)
jne 0x617d
cmpl $0x0, 0x14(%rsp)
jne 0x617d
cmpq $0x0, 0x78(%rsp)
jne 0x617d
movq 0x6ee4(%rip), %r14      # 0xcff0
leaq 0x37b5(%rip), %rsi      # 0x98c8
movl $0x5e, %edx
movq %r14, %rdi
callq 0x2270
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq 0x6eb2(%rip), %rdi      # 0xcff0
callq 0x2030
movq %rax, %rdi
callq 0x2140
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2140
movl $0x1, 0x10(%rsp)
cmpl $0x0, 0x10(%rsp)
jne 0x6213
cmpl $0x0, 0x14(%rsp)
jne 0x6213
cmpq $0x0, 0x58(%rsp)
jne 0x6213
movq 0x6e4e(%rip), %r14      # 0xcff0
leaq 0x377e(%rip), %rsi      # 0x9927
movl $0x54, %edx
movq %r14, %rdi
callq 0x2270
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq 0x6e1c(%rip), %rdi      # 0xcff0
callq 0x2030
movq %rax, %rdi
callq 0x2140
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2140
movl $0x1, 0x10(%rsp)
cmpl $0x0, 0x10(%rsp)
je 0x6259
movq 0x6dcf(%rip), %r14      # 0xcff0
leaq 0x3754(%rip), %rsi      # 0x997c
movl $0x8, %edx
movq %r14, %rdi
callq 0x2270
movq (%rbx), %rbx
testq %rbx, %rbx
je 0x628f
movq %rbx, %rdi
callq 0x20d0
movq 0x6da4(%rip), %rdi      # 0xcff0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x2270
jmp 0x62a7
cmpl $0x0, 0x14(%rsp)
je 0x6471
movq (%rbx), %rbx
testq %rbx, %rbx
je 0x65d4
movq %rbx, %rdi
callq 0x20d0
movq 0x6d49(%rip), %rdi      # 0xcfc8
movq %rbx, %rsi
movq %rax, %rdx
callq 0x2270
jmp 0x65f2
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x2380
movq 0x6d42(%rip), %rdi      # 0xcff0
leaq 0x36d0(%rip), %rsi      # 0x9985
movl $0x30, %edx
callq 0x2270
movq 0x6d2a(%rip), %rdi      # 0xcff0
leaq 0x36f2(%rip), %rsi      # 0x99bf
movl $0x1, %edx
callq 0x2270
movq 0x6d12(%rip), %rdi      # 0xcff0
leaq 0x36d1(%rip), %rsi      # 0x99b6
movl $0xa, %edx
callq 0x2270
movq 0x6cfa(%rip), %rdi      # 0xcff0
leaq 0x36c4(%rip), %rsi      # 0x99c1
movl $0x4b, %edx
callq 0x2270
movq 0x6ce2(%rip), %rdi      # 0xcff0
leaq 0x36f8(%rip), %rsi      # 0x9a0d
movl $0x50, %edx
callq 0x2270
movq 0x6cca(%rip), %rdi      # 0xcff0
leaq 0x3731(%rip), %rsi      # 0x9a5e
movl $0x4f, %edx
callq 0x2270
movq 0x6cb2(%rip), %rdi      # 0xcff0
leaq 0x3769(%rip), %rsi      # 0x9aae
movl $0x43, %edx
callq 0x2270
movq 0x6c9a(%rip), %rdi      # 0xcff0
leaq 0x3795(%rip), %rsi      # 0x9af2
movl $0x44, %edx
callq 0x2270
movq 0x6c82(%rip), %rdi      # 0xcff0
leaq 0x37c2(%rip), %rsi      # 0x9b37
movl $0x4f, %edx
callq 0x2270
movq 0x6c6a(%rip), %rdi      # 0xcff0
leaq 0x37fa(%rip), %rsi      # 0x9b87
movl $0x60, %edx
callq 0x2270
movq 0x6c52(%rip), %rdi      # 0xcff0
leaq 0x3843(%rip), %rsi      # 0x9be8
movl $0x48, %edx
callq 0x2270
movq 0x6c3a(%rip), %rdi      # 0xcff0
leaq 0x3874(%rip), %rsi      # 0x9c31
movl $0x3b, %edx
callq 0x2270
movq 0x6c22(%rip), %rdi      # 0xcff0
leaq 0x35ea(%rip), %rsi      # 0x99bf
movl $0x1, %edx
callq 0x2270
movq 0x6c0a(%rip), %rdi      # 0xcff0
leaq 0x3880(%rip), %rsi      # 0x9c6d
movl $0x65, %edx
callq 0x2270
movq 0x6bf2(%rip), %rbx      # 0xcff0
leaq 0x38ce(%rip), %rsi      # 0x9cd3
movl $0x4c, %edx
movq %rbx, %rdi
callq 0x2270
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq 0x6bc0(%rip), %rdi      # 0xcff0
callq 0x2030
movq %rax, %rdi
callq 0x2140
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq %rax, %rdi
callq 0x2140
jmp 0x68e2
xorl %edi, %edi
callq 0x20c0
cmpq $0x0, 0x98(%rsp)
je 0x64c2
leaq 0x38a0(%rip), %rsi      # 0x9d2a
leaq 0x90(%rsp), %rdi
callq 0x2080
testl %eax, %eax
je 0x64c2
movq 0x90(%rsp), %rdi
movq 0x6b16(%rip), %rax      # 0xcfc0
movq (%rax), %rdx
leaq 0x33c6(%rip), %rsi      # 0x987a
callq 0x2250
testq %rax, %rax
je 0x6742
cmpq $0x0, 0x38(%rsp)
je 0x6503
leaq 0x3859(%rip), %rsi      # 0x9d2a
leaq 0x30(%rsp), %rdi
callq 0x2080
testl %eax, %eax
je 0x6503
movq 0x30(%rsp), %rdi
movq 0x6aa5(%rip), %rax      # 0xcf90
movq (%rax), %rdx
leaq 0x3858(%rip), %rsi      # 0x9d4d
callq 0x2250
testq %rax, %rax
je 0x677b
movq 0x70(%rsp), %rsi
leaq 0xc0(%rsp), %rdi
movl $0x10, %edx
callq 0x2260
movq 0xc0(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0xe0(%rsp,%rax)
je 0x6671
movq 0x6ab5(%rip), %rdi      # 0xcff0
leaq 0x383c(%rip), %rsi      # 0x9d7e
movl $0x1d, %edx
callq 0x2270
movq 0x70(%rsp), %rsi
movq 0x78(%rsp), %rdx
movq 0x6a93(%rip), %rdi      # 0xcff0
callq 0x2270
movq %rax, %rbx
leaq 0x3830(%rip), %rsi      # 0x9d9c
movl $0xc, %edx
movq %rax, %rdi
callq 0x2270
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2140
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq %rax, %rdi
callq 0x2140
jmp 0x68aa
movq 0x69ed(%rip), %rax      # 0xcfc8
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x20(%rax,%rcx), %esi
orl $0x1, %esi
callq 0x2380
movq 0x69cf(%rip), %rdi      # 0xcfc8
leaq 0x3720(%rip), %rsi      # 0x9d20
movl $0x9, %edx
callq 0x2270
movq 0x69b7(%rip), %rdi      # 0xcfc8
movl $0x2, %esi
callq 0x2390
leaq 0xc0(%rsp), %rsi
movb $0x2e, (%rsi)
movl $0x1, %edx
movq %rax, %rdi
callq 0x2270
movq %rax, %rdi
movl $0x1, %esi
callq 0x2390
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
xorl %ebx, %ebx
movq %rax, %rdi
callq 0x2140
jmp 0x68e2
movq 0x50(%rsp), %rsi
leaq 0x2c0(%rsp), %rdi
movl $0x10, %edx
callq 0x2260
movq 0x2c0(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x2e0(%rsp,%rax)
je 0x67d2
movq 0x6947(%rip), %rdi      # 0xcff0
leaq 0x36ce(%rip), %rsi      # 0x9d7e
movl $0x1d, %edx
callq 0x2270
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
movq 0x6925(%rip), %rdi      # 0xcff0
callq 0x2270
movq %rax, %rbx
leaq 0x36c2(%rip), %rsi      # 0x9d9c
movl $0xc, %edx
movq %rax, %rdi
callq 0x2270
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2140
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq %rax, %rdi
callq 0x2140
jmp 0x6872
movq 0x68a7(%rip), %rdi      # 0xcff0
leaq 0x35dc(%rip), %rsi      # 0x9d2c
movl $0x20, %edx
callq 0x2270
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
movq 0x687f(%rip), %rdi      # 0xcff0
callq 0x2270
movq %rax, %r14
jmp 0x67c0
movq 0x686e(%rip), %rdi      # 0xcff0
leaq 0x35c6(%rip), %rsi      # 0x9d4f
movl $0x21, %edx
callq 0x2270
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
movq 0x684c(%rip), %rdi      # 0xcff0
callq 0x2270
movq %rax, %r14
leaq 0x35be(%rip), %rsi      # 0x9d71
movl $0xc, %edx
movq %rax, %rdi
callq 0x2270
movl $0x1, %ebx
movq %r14, %rdi
callq 0x20e0
jmp 0x68e2
leaq 0x20(%rsp), %rdi
leaq 0x1c(%rsp), %rsi
leaq 0x18(%rsp), %rdx
leaq 0x2c0(%rsp), %rcx
callq 0x5a0c
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
testb %al, %al
je 0x6872
movq 0x6a72(%rip), %r14      # 0xd270
xorl %ebx, %ebx
leaq 0x6a59(%rip), %r13      # 0xd260
cmpq %r13, %r14
je 0x6872
leaq 0xc0(%rsp), %r15
leaq 0xf(%rsp), %r12
movl 0x28(%r14), %esi
movq %r15, %rdi
callq 0x2390
movb $0x9, 0xf(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x2270
movq 0x20(%r14), %rcx
movq (%rcx), %rsi
movq 0x8(%rcx), %rdx
movq %rax, %rdi
callq 0x2270
movb $0xa, 0xf(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x2270
movq %r14, %rdi
callq 0x2280
movq %rax, %r14
cmpq %r13, %rax
jne 0x6819
movq 0x673f(%rip), %rax      # 0xcfb8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq 0x2c8(%rsp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, 0x2c0(%rsp,%rcx)
callq 0x21c0
leaq 0x3b8(%rsp), %rdi
callq 0x2090
movq 0x6707(%rip), %rax      # 0xcfb8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq 0xc8(%rsp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, 0xc0(%rsp,%rcx)
callq 0x21c0
leaq 0x1b8(%rsp), %rdi
callq 0x2090
movq 0x66af(%rip), %rsi      # 0xcf98
leaq 0x4c0(%rsp), %rdi
callq 0x2190
leaq 0x540(%rsp), %rdi
callq 0x2090
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x691f
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x2230
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x6941
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x2230
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x695d
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x2230
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x6982
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x2230
movl %ebx, %eax
addq $0x648, %rsp            # imm = 0x648
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x10(%rsp), %rdi
leaq 0x14(%rsp), %rsi
callq 0x2474
jmp 0x5f7b
jmp 0x69c2
jmp 0x6a0b
jmp 0x69b0
movq %rax, %rbx
leaq 0x2c0(%rsp), %rdi
callq 0x22f0
jmp 0x69c5
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x22f0
jmp 0x6a0e
movq %rax, %rbx
jmp 0x6a2f
movq %rax, %rbx
jmp 0x6a4b
movq %rax, %rbx
jmp 0x6a6d
movq %rax, %rbx
jmp 0x6a89
movq %rax, %rbx
movl 0x24(%rsp), %eax
movl %eax, 0x18(%rsp)
movl 0x28(%rsp), %eax
movl %eax, 0x1c(%rsp)
movl 0x2c(%rsp), %eax
movl %eax, 0x20(%rsp)
jmp 0x6a0e
movq %rax, %rbx
movq 0x6583(%rip), %rsi      # 0xcf98
leaq 0x4c0(%rsp), %rdi
callq 0x2190
leaq 0x540(%rsp), %rdi
callq 0x2090
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x6a4b
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x2230
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x6a6d
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x2230
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x6a89
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x2230
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x6aae
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x2230
movq %rbx, %rdi
callq 0x23a0