// File: Ahhgust[P]STRaitRazor/str8.cpp
// Function: parseArgs(int, char**, Options&)
int
parseArgs(int argc, char **argv, Options &opt) {
  
  int i;

  // defaults
  opt.out = stdout;
  opt.verbose=0;
  opt.help=0;
  opt.shortCircuit=0;
  opt.minPrint=0;
  opt.noReverseComplement=0; 
  opt.config=NULL;
  opt.numThreads=1;
  opt.useTrie=1;
  opt.type=NULL;
  opt.includeAnchors=false;
  opt.printHeader=false;
  opt.motifDistance=0;
  opt.distance=1;
  opt.useQuality=NO_QUALITY;

  bool errors=0;
  
  for (i=1; i < argc; ++i) {
    if (argv[i][0] == '-') {
      if (argv[i][1] == 'h') {
        opt.help=1;
      } else if (argv[i][1] == 'd') {
        opt.printHeader=1;
      } else if (argv[i][1] == 's') {
        opt.shortCircuit=1;
      } else if (argv[i][1] == 'v') {
        opt.verbose=1;
      } else if (argv[i][1] == 'i') {
        opt.includeAnchors=true;
      } else if (argv[i][1] == 'q') {
        opt.useQuality=EXPECT_QUALITY;

        // my attempt at an optional argument
        ++i;
        if (argv[i] == NULL)
          break;
        else if (argv[i][1] == '\0') {
          if (argv[i][0] == 'x' || argv[i][0] == 'X') {
            opt.useQuality = EXPECT_QUALITY;
          } else if (argv[i][0] == 'e' || argv[i][0] == 'E') {
            opt.useQuality = EDGAR_QUALITY;
          } else {
            --i;
          }
        } else {
          --i;
        }

        
      } else if (argv[i][1] == 't') {
        // filters the config file by type
        ++i;
        opt.type = argv[i];
        if (opt.type==NULL) {
          cerr << "Oops. -t flag requires a type!" << endl;
          errors=1;
        }
      } else if (argv[i][1] == 'n') {
        opt.noReverseComplement=1; 
      } else if (argv[i][1] == 'o') { // setting output file
        if (i == argc-1) {
          cerr << endl<< "Option -o requires an argument\nEG, -o outFile.txt" << endl << endl;
          errors=1;
        } else {
          ++i;
          opt.out = fopen(argv[i], "w");
        }
      } else if (argv[i][1] == 'f') { // setting min records to print
        if (i == argc-1) {
          cerr << endl << "Option -f requires an integer; the smallest number of haplotype-counts that are allowed to be printed" << endl << endl;
          errors=1;
        } else {
          ++i;
          char *s = argv[i];
          while (*s >= '0' && *s <= '9') {
            opt.minPrint = (opt.minPrint*10)+(*s - '0');
            ++s;
          }
          if (s == argv[i]) {
            cerr << endl << "Option -f requires an integer; the smallest number of haplotype-counts that are allowed to be printed, not " << s  << endl << endl;
            errors=1;
          }
        }
      } else if (argv[i][1] == 'a') { // setting the degeneracy/distance with anchors when constructing the trie
        if (i == argc-1) {
          cerr << endl << "Option -a requires an integer in the range [0,2] (inclusive); the (max) hamming distance used when searching for anchors" << endl << endl;
          errors=1;
        } else {
          ++i;
          char *s = argv[i];
          opt.distance = (*s - '0');
          if (s[1] != 0 || opt.distance > 2) {
            cerr << endl << "Option -a requires a an integer in the range [0,2] (inclusive); the (max) hamming distance used when searching for anchors, not: " << s << endl;
            errors=1;
          }
          //	  cerr << "Distance is " << ((unsigned)opt.distance) << endl;
        }
      } else if (argv[i][1] == 'm') { // setting the degeneracy/distance with motifs when constructing the trie
        if (i == argc-1) {
          cerr << endl << "Option -m requires a 0 or a 1; the (max) hamming distance used when searching for motifs" << endl << endl;
	  errors=1;
        } else {
          ++i;
          char *s = argv[i];
          opt.motifDistance = (*s - '0');
          if (s[1] != 0 || opt.motifDistance > 1) {
            cerr << endl << "Option -m requires a 0 or a 1 (inclusive); the (max) hamming distance used when searching for motifs, not: " << s << endl;
            errors=1;
          }
        }
      } else if (argv[i][1] == 'p') { // setting the number of threads/processors
        if (i == argc-1) {
          cerr << endl << "Option -p requires an integer; the number of processors needed" << endl << endl;
          errors=1;
        } else {
          ++i;
          char *s = argv[i];
          opt.numThreads=0;
          while (*s >= '0' && *s <= '9') {
            opt.numThreads = (opt.numThreads*10)+(*s - '0');
            ++s;
          }
          if (s == argv[i]) {
            cerr << endl << "Option -p requires an integer; not " << s  << endl << endl;
            errors=1;
          }
          
#ifdef NOTHREADS
          
          if (opt.numThreads > 1) {
            cerr << "This program was compiled w/o threads, yet you are trying to use multithreading. You can't do both!" << endl <<
              "Please either recompile this program with threads, or set the number of threads to 1!!" << endl;
            exit(EXIT_FAILURE);
          } 
#endif
          
        }
      } else if (argv[i][1] == 'c') { // this config file
        if (i == argc-1) {
          cerr << endl<< "Option -c requires a file; ie, the config file" << endl << endl;
          errors=1;
        } else {
          ++i;
          opt.config = argv[i];
        }
      } else if (argv[i][1] == '-') { // unix convention; force the end of flags
        break;
      } else {
        cerr << endl <<  "Unknown option: " << argv[i]  << endl << endl;
        errors=1;
      }

    } else
      break;
    
  }
  
  if (opt.config==NULL) {
    cerr << endl <<  "Missing required flag: -c configfile"  << endl << endl;
    errors=1;
  }

  if (errors || opt.help) 
    usage(argv[0]);

  return i;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq 0x154ee(%rip), %rax     # 0x1bfa8
movq (%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x18(%rbp), %rax
movb $0x0, 0x5(%rax)
movq -0x18(%rbp), %rax
movb $0x0, 0x6(%rax)
movq -0x18(%rbp), %rax
movb $0x0, 0x4(%rax)
movq -0x18(%rbp), %rax
movl $0x0, (%rax)
movq -0x18(%rbp), %rax
movb $0x0, 0x7(%rax)
movq -0x18(%rbp), %rax
movq $0x0, 0x18(%rax)
movq -0x18(%rbp), %rax
movl $0x1, 0x20(%rax)
movq -0x18(%rbp), %rax
movb $0x1, 0x27(%rax)
movq -0x18(%rbp), %rax
movq $0x0, 0x28(%rax)
movq -0x18(%rbp), %rax
movb $0x0, 0x8(%rax)
movq -0x18(%rbp), %rax
movb $0x0, 0x9(%rax)
movq -0x18(%rbp), %rax
movb $0x0, 0x26(%rax)
movq -0x18(%rbp), %rax
movb $0x1, 0x25(%rax)
movq -0x18(%rbp), %rax
movb $0x0, 0xa(%rax)
movb $0x0, -0x1d(%rbp)
movl $0x1, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x73ca
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x73b8
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x68, %eax
jne 0x6b93
movq -0x18(%rbp), %rax
movb $0x1, 0x6(%rax)
jmp 0x73b6
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x64, %eax
jne 0x6bb5
movq -0x18(%rbp), %rax
movb $0x1, 0x9(%rax)
jmp 0x73b4
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x73, %eax
jne 0x6bd7
movq -0x18(%rbp), %rax
movb $0x1, 0x4(%rax)
jmp 0x73b2
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x76, %eax
jne 0x6bf9
movq -0x18(%rbp), %rax
movb $0x1, 0x5(%rax)
jmp 0x73b0
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x69, %eax
jne 0x6c1b
movq -0x18(%rbp), %rax
movb $0x1, 0x8(%rax)
jmp 0x73ae
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x71, %eax
jne 0x6cef
movq -0x18(%rbp), %rax
movb $0x2, 0xa(%rax)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
jne 0x6c59
jmp 0x73ca
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x0, %eax
jne 0x6cdf
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x78, %eax
je 0x6c96
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x58, %eax
jne 0x6ca0
movq -0x18(%rbp), %rax
movb $0x2, 0xa(%rax)
jmp 0x6cdd
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x65, %eax
je 0x6cc8
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x45, %eax
jne 0x6cd2
movq -0x18(%rbp), %rax
movb $0x1, 0xa(%rax)
jmp 0x6cdb
movl -0x1c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x6cdd
jmp 0x6ce8
movl -0x1c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x6cea
jmp 0x73ac
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x74, %eax
jne 0x6d57
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x28(%rax)
jne 0x6d52
movq 0x152bd(%rip), %rdi     # 0x1bff0
leaq 0xdb27(%rip), %rsi      # 0x14861
callq 0x3290
movq %rax, %rdi
movq 0x1526f(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movb $0x1, -0x1d(%rbp)
jmp 0x73aa
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x6e, %eax
jne 0x6d79
movq -0x18(%rbp), %rax
movb $0x1, 0x7(%rax)
jmp 0x73a8
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x6f, %eax
jne 0x6e16
movl -0x1c(%rbp), %eax
movl -0x4(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0x6de5
movq 0x1524a(%rip), %rdi     # 0x1bff0
movq 0x1520b(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
leaq 0xdac4(%rip), %rsi      # 0x14880
callq 0x3290
movq %rax, %rdi
movq 0x151ed(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
movq 0x151de(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movb $0x1, -0x1d(%rbp)
jmp 0x6e11
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0xdab1(%rip), %rsi      # 0x148b2
callq 0x3320
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0x73a6
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x66, %eax
jne 0x6f58
movl -0x1c(%rbp), %eax
movl -0x4(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0x6e85
movq 0x151ad(%rip), %rdi     # 0x1bff0
movq 0x1516e(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
leaq 0xda5b(%rip), %rsi      # 0x148b4
callq 0x3290
movq %rax, %rdi
movq 0x15150(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
movq 0x15141(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movb $0x1, -0x1d(%rbp)
jmp 0x6f53
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x30, %ecx
movb %al, -0x41(%rbp)
jl 0x6ebf
movq -0x28(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x39, %eax
setle %al
movb %al, -0x41(%rbp)
movb -0x41(%rbp), %al
testb $0x1, %al
jne 0x6ec8
jmp 0x6eef
movq -0x18(%rbp), %rax
imull $0xa, (%rax), %ecx
movq -0x28(%rbp), %rax
movsbl (%rax), %eax
subl $0x30, %eax
addl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, (%rax)
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x6e9e
movq -0x28(%rbp), %rax
movq -0x10(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
cmpq (%rcx,%rdx,8), %rax
jne 0x6f51
movq 0x150e8(%rip), %rdi     # 0x1bff0
movq 0x150a9(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
leaq 0xd9fc(%rip), %rsi      # 0x1491a
callq 0x3290
movq %rax, %rdi
movq -0x28(%rbp), %rsi
callq 0x3290
movq %rax, %rdi
movq 0x1507f(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
movq 0x15070(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movb $0x1, -0x1d(%rbp)
jmp 0x6f53
jmp 0x73a4
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x61, %eax
jne 0x7055
movl -0x1c(%rbp), %eax
movl -0x4(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0x6fc7
movq 0x1506b(%rip), %rdi     # 0x1bff0
movq 0x1502c(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
leaq 0xd9eb(%rip), %rsi      # 0x14986
callq 0x3290
movq %rax, %rdi
movq 0x1500e(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
movq 0x14fff(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movb $0x1, -0x1d(%rbp)
jmp 0x7050
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movsbl (%rax), %eax
subl $0x30, %eax
movb %al, %cl
movq -0x18(%rbp), %rax
movb %cl, 0x25(%rax)
movq -0x30(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x0, %eax
jne 0x700d
movq -0x18(%rbp), %rax
movzbl 0x25(%rax), %eax
cmpl $0x2, %eax
jle 0x704e
movq 0x14fdc(%rip), %rdi     # 0x1bff0
movq 0x14f9d(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
leaq 0xd9d5(%rip), %rsi      # 0x149ff
callq 0x3290
movq %rax, %rdi
movq -0x30(%rbp), %rsi
callq 0x3290
movq %rax, %rdi
movq 0x14f73(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movb $0x1, -0x1d(%rbp)
jmp 0x7050
jmp 0x73a2
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x6d, %eax
jne 0x7152
movl -0x1c(%rbp), %eax
movl -0x4(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0x70c4
movq 0x14f6e(%rip), %rdi     # 0x1bff0
movq 0x14f2f(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
leaq 0xd9e9(%rip), %rsi      # 0x14a81
callq 0x3290
movq %rax, %rdi
movq 0x14f11(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
movq 0x14f02(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movb $0x1, -0x1d(%rbp)
jmp 0x714d
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movsbl (%rax), %eax
subl $0x30, %eax
movb %al, %cl
movq -0x18(%rbp), %rax
movb %cl, 0x26(%rax)
movq -0x38(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x0, %eax
jne 0x710a
movq -0x18(%rbp), %rax
movzbl 0x26(%rax), %eax
cmpl $0x1, %eax
jle 0x714b
movq 0x14edf(%rip), %rdi     # 0x1bff0
movq 0x14ea0(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
leaq 0xd9b3(%rip), %rsi      # 0x14ada
callq 0x3290
movq %rax, %rdi
movq -0x38(%rbp), %rsi
callq 0x3290
movq %rax, %rdi
movq 0x14e76(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movb $0x1, -0x1d(%rbp)
jmp 0x714d
jmp 0x73a0
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x70, %eax
jne 0x72a1
movl -0x1c(%rbp), %eax
movl -0x4(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0x71c1
movq 0x14e71(%rip), %rdi     # 0x1bff0
movq 0x14e32(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
leaq 0xd9b1(%rip), %rsi      # 0x14b46
callq 0x3290
movq %rax, %rdi
movq 0x14e14(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
movq 0x14e05(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movb $0x1, -0x1d(%rbp)
jmp 0x729c
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rax
movl $0x0, 0x20(%rax)
movq -0x40(%rbp), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x30, %ecx
movb %al, -0x42(%rbp)
jl 0x7206
movq -0x40(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x39, %eax
setle %al
movb %al, -0x42(%rbp)
movb -0x42(%rbp), %al
testb $0x1, %al
jne 0x720f
jmp 0x7238
movq -0x18(%rbp), %rax
imull $0xa, 0x20(%rax), %ecx
movq -0x40(%rbp), %rax
movsbl (%rax), %eax
subl $0x30, %eax
addl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x20(%rax)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x71e5
movq -0x40(%rbp), %rax
movq -0x10(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
cmpq (%rcx,%rdx,8), %rax
jne 0x729a
movq 0x14d9f(%rip), %rdi     # 0x1bff0
movq 0x14d60(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
leaq 0xd91e(%rip), %rsi      # 0x14b85
callq 0x3290
movq %rax, %rdi
movq -0x40(%rbp), %rsi
callq 0x3290
movq %rax, %rdi
movq 0x14d36(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
movq 0x14d27(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movb $0x1, -0x1d(%rbp)
jmp 0x729c
jmp 0x739e
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x63, %eax
jne 0x7328
movl -0x1c(%rbp), %eax
movl -0x4(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0x7309
movq 0x14d26(%rip), %rdi     # 0x1bff0
movq 0x14ce7(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
leaq 0xd8c9(%rip), %rsi      # 0x14ba9
callq 0x3290
movq %rax, %rdi
movq 0x14cc9(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
movq 0x14cba(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movb $0x1, -0x1d(%rbp)
jmp 0x7326
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x18(%rax)
jmp 0x739c
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x2d, %eax
jne 0x7342
jmp 0x73ca
movq 0x14ca7(%rip), %rdi     # 0x1bff0
movq 0x14c68(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
leaq 0xd879(%rip), %rsi      # 0x14bd8
callq 0x3290
movq %rax, %rdi
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x3290
movq %rax, %rdi
movq 0x14c36(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
movq 0x14c27(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movb $0x1, -0x1d(%rbp)
jmp 0x739c
jmp 0x739e
jmp 0x73a0
jmp 0x73a2
jmp 0x73a4
jmp 0x73a6
jmp 0x73a8
jmp 0x73aa
jmp 0x73ac
jmp 0x73ae
jmp 0x73b0
jmp 0x73b2
jmp 0x73b4
jmp 0x73b6
jmp 0x73ba
jmp 0x73ca
jmp 0x73bc
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x6b4d
movq -0x18(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x7419
movq 0x14c14(%rip), %rdi     # 0x1bff0
movq 0x14bd5(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
leaq 0xd7f7(%rip), %rsi      # 0x14be9
callq 0x3290
movq %rax, %rdi
movq 0x14bb7(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movq %rax, %rdi
movq 0x14ba8(%rip), %rsi     # 0x1bfb8
callq 0x32e0
movb $0x1, -0x1d(%rbp)
testb $0x1, -0x1d(%rbp)
jne 0x7429
movq -0x18(%rbp), %rax
testb $0x1, 0x6(%rax)
je 0x7435
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x67d0
movl -0x1c(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
nop