// File: /workspace/github_cpp_makefile_star2_O3/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 $0x638, %rsp            # imm = 0x638
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 0x360b(%rip), %r14      # 0x9855
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
movq %r14, %rdx
callq 0x8572
leaq 0x40(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x30(%rsp), %rdi
movq %r14, %rsi
movq %r14, %rdx
callq 0x8572
leaq 0x80(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x35c9(%rip), %rdx      # 0x9855
leaq 0x70(%rsp), %rdi
movq %rdx, %rsi
callq 0x8572
leaq 0x60(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x35ac(%rip), %rdx      # 0x9855
leaq 0x50(%rsp), %rdi
movq %rdx, %rsi
callq 0x8572
movb 0x7124(%rip), %al       # 0xd3e0
testb %al, %al
je 0x6ce2
leaq 0x4b0(%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 0x35f2(%rip), %rdx      # 0x98e2
leaq 0x6fa9(%rip), %rcx      # 0xd2a0
movl %ebp, %edi
movq %rbx, %rsi
xorl %r8d, %r8d
callq 0x2360
shll $0x18, %eax
cmpl $0xff000000, %eax       # imm = 0xFF000000
je 0x6424
leaq 0x35c9(%rip), %r15      # 0x98e2
leaq 0x6f80(%rip), %r13      # 0xd2a0
sarl $0x18, %eax
leal -0x62(%rax), %ecx
cmpl $0x14, %ecx
ja 0x6356
leaq 0x2d3e(%rip), %rdx      # 0x9070
movslq (%rdx,%rcx,4), %rax
addq %rdx, %rax
movq %r12, %r14
jmpq *%rax
movq 0x6c63(%rip), %rax      # 0xcfa8
movq (%rax), %rdi
callq 0x2320
movl %eax, 0x2c(%rsp)
jmp 0x6403
testl %eax, %eax
je 0x6403
cmpl $0x56, %eax
jne 0x6370
movl $0x1, 0x14(%rsp)
jmp 0x6403
movl $0x1, 0x10(%rsp)
jmp 0x6403
leaq 0x70(%rsp), %r14
jmp 0x63a5
leaq 0x50(%rsp), %r14
jmp 0x63a5
movq 0x6c16(%rip), %rax      # 0xcfa8
movq (%rax), %rdi
callq 0x2320
movl %eax, 0x28(%rsp)
jmp 0x6403
leaq 0x30(%rsp), %r14
movq 0x6bfc(%rip), %rax      # 0xcfa8
movq (%rax), %r13
movl %ebp, %r15d
movq %r12, %rbp
movq %rbx, %r12
movq 0x8(%r14), %rbx
movq %r13, %rdi
callq 0x20d0
movq %r14, %rdi
xorl %esi, %esi
movq %rbx, %rdx
movq %r12, %rbx
movq %rbp, %r12
movl %r15d, %ebp
leaq 0x3506(%rip), %r15      # 0x98e2
movq %r13, %rcx
leaq 0x6eba(%rip), %r13      # 0xd2a0
movq %rax, %r8
callq 0x2310
jmp 0x6403
movq 0x6bb1(%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 0x6320
movl 0x24(%rsp), %eax
movl %eax, 0x18(%rsp)
movl 0x28(%rsp), %eax
movl %eax, 0x1c(%rsp)
movl 0x2c(%rsp), %eax
movl %eax, 0x20(%rsp)
movl 0x10(%rsp), %ecx
movl 0x14(%rsp), %eax
testl %ecx, %ecx
jne 0x64d6
testl %eax, %eax
jne 0x64d6
cmpq $0x0, 0x78(%rsp)
jne 0x64d6
movq 0x6b8d(%rip), %r14      # 0xcff0
leaq 0x348e(%rip), %rsi      # 0x98f8
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 0x6b5b(%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)
jmp 0x64e8
movl %ecx, %edx
orl %eax, %edx
je 0x67b8
testl %ecx, %ecx
je 0x6935
movq 0x6b01(%rip), %r14      # 0xcff0
leaq 0x34b6(%rip), %rsi      # 0x99ac
movl $0x8, %edx
movq %r14, %rdi
callq 0x2270
movq (%rbx), %rbx
testq %rbx, %rbx
je 0x6527
movq %rbx, %rdi
callq 0x20d0
movq 0x6ad6(%rip), %rdi      # 0xcff0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x2270
jmp 0x653f
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x2380
movq 0x6aaa(%rip), %rdi      # 0xcff0
leaq 0x3468(%rip), %rsi      # 0x99b5
movl $0x30, %edx
callq 0x2270
movq 0x6a92(%rip), %rdi      # 0xcff0
leaq 0x348a(%rip), %rsi      # 0x99ef
movl $0x1, %edx
callq 0x2270
movq 0x6a7a(%rip), %rdi      # 0xcff0
leaq 0x3469(%rip), %rsi      # 0x99e6
movl $0xa, %edx
callq 0x2270
movq 0x6a62(%rip), %rdi      # 0xcff0
leaq 0x345c(%rip), %rsi      # 0x99f1
movl $0x4b, %edx
callq 0x2270
movq 0x6a4a(%rip), %rdi      # 0xcff0
leaq 0x3490(%rip), %rsi      # 0x9a3d
movl $0x50, %edx
callq 0x2270
movq 0x6a32(%rip), %rdi      # 0xcff0
leaq 0x34c9(%rip), %rsi      # 0x9a8e
movl $0x4f, %edx
callq 0x2270
movq 0x6a1a(%rip), %rdi      # 0xcff0
leaq 0x3501(%rip), %rsi      # 0x9ade
movl $0x43, %edx
callq 0x2270
movq 0x6a02(%rip), %rdi      # 0xcff0
leaq 0x352d(%rip), %rsi      # 0x9b22
movl $0x44, %edx
callq 0x2270
movq 0x69ea(%rip), %rdi      # 0xcff0
leaq 0x355a(%rip), %rsi      # 0x9b67
movl $0x4f, %edx
callq 0x2270
movq 0x69d2(%rip), %rdi      # 0xcff0
leaq 0x3592(%rip), %rsi      # 0x9bb7
movl $0x60, %edx
callq 0x2270
movq 0x69ba(%rip), %rdi      # 0xcff0
leaq 0x35db(%rip), %rsi      # 0x9c18
movl $0x48, %edx
callq 0x2270
movq 0x69a2(%rip), %rdi      # 0xcff0
leaq 0x360c(%rip), %rsi      # 0x9c61
movl $0x3b, %edx
callq 0x2270
movq 0x698a(%rip), %rdi      # 0xcff0
leaq 0x3382(%rip), %rsi      # 0x99ef
movl $0x1, %edx
callq 0x2270
movq 0x6972(%rip), %rdi      # 0xcff0
leaq 0x3618(%rip), %rsi      # 0x9c9d
movl $0x65, %edx
callq 0x2270
movq 0x695a(%rip), %rbx      # 0xcff0
leaq 0x3666(%rip), %rsi      # 0x9d03
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 0x6928(%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
movq 0x688d(%rip), %rsi      # 0xcf98
leaq 0x4b0(%rsp), %rdi
callq 0x2190
leaq 0x530(%rsp), %rdi
callq 0x2090
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x6741
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x2230
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x6763
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x2230
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x677f
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x2230
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x67a4
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x2230
movl %ebx, %eax
addq $0x638, %rsp            # imm = 0x638
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpq $0x0, 0x58(%rsp)
je 0x6968
xorl %edi, %edi
callq 0x20c0
cmpq $0x0, 0x98(%rsp)
je 0x6815
leaq 0x357d(%rip), %rsi      # 0x9d5a
leaq 0x90(%rsp), %rdi
callq 0x2080
testl %eax, %eax
je 0x6815
movq 0x90(%rsp), %rdi
movq 0x67c3(%rip), %rax      # 0xcfc0
movq (%rax), %rdx
leaq 0x30a3(%rip), %rsi      # 0x98aa
callq 0x2250
testq %rax, %rax
je 0x6aae
cmpq $0x0, 0x38(%rsp)
je 0x6856
leaq 0x3536(%rip), %rsi      # 0x9d5a
leaq 0x30(%rsp), %rdi
callq 0x2080
testl %eax, %eax
je 0x6856
movq 0x30(%rsp), %rdi
movq 0x6752(%rip), %rax      # 0xcf90
movq (%rax), %rdx
leaq 0x3535(%rip), %rsi      # 0x9d7d
callq 0x2250
testq %rax, %rax
je 0x6ae7
movq 0x70(%rsp), %rsi
leaq 0xb0(%rsp), %rdi
movl $0x10, %edx
callq 0x2260
movq 0xb0(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0xd0(%rsp,%rax)
je 0x69dd
movq 0x6762(%rip), %rdi      # 0xcff0
leaq 0x3519(%rip), %rsi      # 0x9dae
movl $0x1d, %edx
callq 0x2270
movq 0x70(%rsp), %rsi
movq 0x78(%rsp), %rdx
movq 0x6740(%rip), %rdi      # 0xcff0
callq 0x2270
movq %rax, %rbx
leaq 0x350d(%rip), %rsi      # 0x9dcc
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
movq %rax, %rdi
callq 0x2140
movq 0x6694(%rip), %rax      # 0xcfb8
movq (%rax), %r14
movq 0x18(%rax), %r15
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
jmp 0x6cb3
testl %eax, %eax
je 0x67c4
movq (%rbx), %rbx
testq %rbx, %rbx
je 0x6b3e
movq %rbx, %rdi
callq 0x20d0
movq 0x6670(%rip), %rdi      # 0xcfc8
movq %rbx, %rsi
movq %rax, %rdx
callq 0x2270
jmp 0x6b5c
movq 0x6681(%rip), %r14      # 0xcff0
leaq 0x2fe1(%rip), %rsi      # 0x9957
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 0x664f(%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
jmp 0x64cc
movq 0x50(%rsp), %rsi
leaq 0x2b0(%rsp), %rdi
movl $0x10, %edx
callq 0x2260
movq 0x2b0(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x2d0(%rsp,%rax)
je 0x6bdb
movq 0x65db(%rip), %rdi      # 0xcff0
leaq 0x3392(%rip), %rsi      # 0x9dae
movl $0x1d, %edx
callq 0x2270
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
movq 0x65b9(%rip), %rdi      # 0xcff0
callq 0x2270
movq %rax, %rbx
leaq 0x3386(%rip), %rsi      # 0x9dcc
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 0x6c7b
movq 0x653b(%rip), %rdi      # 0xcff0
leaq 0x32a0(%rip), %rsi      # 0x9d5c
movl $0x20, %edx
callq 0x2270
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
movq 0x6513(%rip), %rdi      # 0xcff0
callq 0x2270
movq %rax, %r14
jmp 0x6b2c
movq 0x6502(%rip), %rdi      # 0xcff0
leaq 0x328a(%rip), %rsi      # 0x9d7f
movl $0x21, %edx
callq 0x2270
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
movq 0x64e0(%rip), %rdi      # 0xcff0
callq 0x2270
movq %rax, %r14
leaq 0x3282(%rip), %rsi      # 0x9da1
movl $0xc, %edx
movq %rax, %rdi
callq 0x2270
movl $0x1, %ebx
movq %r14, %rdi
callq 0x20e0
jmp 0x6704
movq 0x6483(%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 0x6465(%rip), %rdi      # 0xcfc8
leaq 0x31e6(%rip), %rsi      # 0x9d50
movl $0x9, %edx
callq 0x2270
movq 0x644d(%rip), %rdi      # 0xcfc8
movl $0x2, %esi
callq 0x2390
leaq 0xb0(%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 0x6704
leaq 0x20(%rsp), %rdi
leaq 0x1c(%rsp), %rsi
leaq 0x18(%rsp), %rdx
leaq 0x2b0(%rsp), %rcx
callq 0x5d4a
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
testb %al, %al
je 0x6c7b
movq 0x6669(%rip), %r14      # 0xd270
xorl %ebx, %ebx
leaq 0x6650(%rip), %r13      # 0xd260
cmpq %r13, %r14
je 0x6c7b
leaq 0xb0(%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 0x6c22
movq 0x6336(%rip), %rax      # 0xcfb8
movq (%rax), %r14
movq 0x18(%rax), %r15
leaq 0x2b8(%rsp), %rdi
movq %r14, -0x8(%rdi)
movq -0x18(%r14), %rax
movq %r15, 0x2b0(%rsp,%rax)
callq 0x21c0
leaq 0x3a8(%rsp), %rdi
callq 0x2090
leaq 0xb8(%rsp), %rdi
movq %r14, -0x8(%rdi)
movq -0x18(%r14), %rax
movq %r15, 0xb0(%rsp,%rax)
callq 0x21c0
leaq 0x1a8(%rsp), %rdi
callq 0x2090
jmp 0x6704
leaq 0x10(%rsp), %rdi
leaq 0x14(%rsp), %rsi
callq 0x2474
jmp 0x62c4
jmp 0x6d0e
jmp 0x6d39
jmp 0x6cfc
movq %rax, %rbx
leaq 0x2b0(%rsp), %rdi
callq 0x22f0
jmp 0x6d11
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x22f0
jmp 0x6d3c
movq %rax, %rbx
jmp 0x6d5d
movq %rax, %rbx
jmp 0x6d79
movq %rax, %rbx
jmp 0x6d9b
movq %rax, %rbx
jmp 0x6db7
jmp 0x6d39
movq %rax, %rbx
movq 0x6255(%rip), %rsi      # 0xcf98
leaq 0x4b0(%rsp), %rdi
callq 0x2190
leaq 0x530(%rsp), %rdi
callq 0x2090
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x6d79
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x2230
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x6d9b
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x2230
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x6db7
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x2230
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x6ddc
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x2230
movq %rbx, %rdi
callq 0x23a0