// File: AsherGlick[P]CommentHeader/source/main.cpp
// Function: main
int main(int argv, char * argc[]) {
  initilizeHeaderStyles();
  initilizeFullFlags();

  // parse arguments into a string
  string userInput = "";

  // used to append spaces after the first text argument
  string inputSpaces = "";

  // If there are no arguments, output the help screen
  if (argv <= 1) {
    help();
    return 0;
  }

  // create a vector of the arguments
  vector<string> arguments;
  for (int i = 0; i < argv; i++) {
    arguments.push_back(argc[i]);
  }

  // Loop through all of the arguments
  for (unsigned int i = 1; i < arguments.size(); i++) {
    // Check to see if the input is a flag
    if (arguments[i][0] == '-') {
      // Check to see if the flag is a fulltext flag
      if (arguments[i][1] == '-') {
        string flag = arguments[i];
        flag = flag.substr(2, flag.size() - 2);
        string smallflag = fullFlagCompression[flag];
        if (smallflag == "") {
          cout << "Undefined Argument: " << flag << endl;
          postArgParseHalt = true;
          continue;
        }
        else {
          arguments[i] = "-"+smallflag;
        }
      }
      for (unsigned int j = 1; j < arguments[i].size(); j++) {
        // Grab arguments for width
        if (arguments[i][j] == 'w') {
          if (i+1 >= arguments.size()) {
            cout << "Error: You did not specify a width for your title after using the -w flag" << endl;
            postArgParseHalt = true;
          }
          else {
            titleWidth = atoi(arguments[i + 1].c_str());
            arguments.erase(arguments.begin()+i+1);
          }
        }
        // Grab arguments for length
        else if (arguments[i][j] == 'l') {
          if (i+1 >= arguments.size()) {
            cout << "Error: You did not specify a length for your title after using the -l flag" << endl;
            postArgParseHalt = true;
          }
          else {
            titleLength = atoi(arguments[i + 1].c_str());
            arguments.erase(arguments.begin() + i + 1);
          }
        }
        else if (activateFlag(arguments[i][j])) {}
        else {
          cout << "Undefined flag: " << arguments[i][j] << endl;
          postArgParseHalt = true;  // Stop the program after parsing inputs
        }
      }
    }

    // Take all non flagged input and append it together
    else {
      userInput += inputSpaces + arguments[i];
      inputSpaces = " ";
    }
  }

  // Kill the program if any undefined flags were found
  if (postArgParseHalt) {
    return 1;
  }

  // Prevent the extended input flag and the tital flag from both being active
  if (inputLocationFlagSet && outputFormatFlag != 'f') {
    // extendedInputFlag = false; // TODO should this be replaced?
    cout << "Warning: the input location flag is ignored becasue you are not creating a function title" << endl;
  }

  // A string for containing the extended input's data
  string extendedInputString = "";


  stringstream output;
  // Check to see what type of header needs to be generated
  switch (outputFormatFlag) {
    case 'h':
      help();
      break;
    case 's':
      output << signiture() << endl;
      break;
    case 'b':
      output << bsd(userInput) << endl;
      break;
    case 't':
      output << title(userInput) << endl;
      break;
    case 'f':

      // Check for the input flag
      if (inputLocationFlag == 'a') {
        extendedInputString = "I AM NOT PARSING FROM ARGS PROPERLY"; // TODO: PARSE FROM ARGS
      }
      else if (inputLocationFlag == 'i') {
        extendedInputString = captureExtendedInput();
      }
      else if (inputLocationFlag == 'c') {
        extendedInputString = copyFromClipboard();
      }

      output << headder(userInput, extendedInputString, outputRightWallFlag) << endl;
      break;

    default:
      cout << "ERROR: UNKNOWN FORMAT FLAG FOUND" << endl;
  }

  // Output the results to stdout or to xclip depending on the flag specified
  
  if (outputLocationFlag == 'v') {
    if (copyToClipboard(output.str()) == -1) {
      // Print the output to stdout if xclip is not found
      cout << output.str();
    }
  }
  else if (outputLocationFlag == 'o') {
    cout << output.str();
  }
  else {
    cout << "Invalid outputLocationFlag" << endl;
    cout << output.str();
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x680, %rsp            # imm = 0x680
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
callq 0x37c0
callq 0xe810
leaq -0x31(%rbp), %rdi
movq %rdi, -0x528(%rbp)
callq 0x3470
movq -0x528(%rbp), %rdx
leaq 0x9738(%rip), %rsi      # 0x18bf9
leaq -0x30(%rbp), %rdi
callq 0x33a0
jmp 0xf4cc
leaq -0x31(%rbp), %rdi
callq 0x3300
leaq -0x69(%rbp), %rdi
movq %rdi, -0x530(%rbp)
callq 0x3470
movq -0x530(%rbp), %rdx
leaq 0x9706(%rip), %rsi      # 0x18bf9
leaq -0x68(%rbp), %rdi
callq 0x33a0
jmp 0xf4fe
leaq -0x69(%rbp), %rdi
callq 0x3300
cmpl $0x1, -0x8(%rbp)
jg 0xf56c
callq 0x104c0
jmp 0xf514
movl $0x0, -0x4(%rbp)
movl $0x1, -0x70(%rbp)
jmp 0x1045e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x31(%rbp), %rdi
callq 0x3300
jmp 0x104b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x69(%rbp), %rdi
callq 0x3300
jmp 0x104a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x104a0
leaq -0x88(%rbp), %rdi
callq 0xc650
movl $0x0, -0x8c(%rbp)
movl -0x8c(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0xf64e
movq -0x10(%rbp), %rax
movslq -0x8c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x540(%rbp)
leaq -0xb1(%rbp), %rdi
movq %rdi, -0x538(%rbp)
callq 0x3470
movq -0x540(%rbp), %rsi
movq -0x538(%rbp), %rdx
leaq -0xb0(%rbp), %rdi
callq 0x33a0
jmp 0xf5d6
leaq -0x88(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x138f0
jmp 0xf5eb
leaq -0xb0(%rbp), %rdi
callq 0x31a0
leaq -0xb1(%rbp), %rdi
callq 0x3300
movl -0x8c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8c(%rbp)
jmp 0xf582
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xf63d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x31a0
leaq -0xb1(%rbp), %rdi
callq 0x3300
jmp 0x10494
movl $0x1, -0xb8(%rbp)
movl -0xb8(%rbp), %eax
movq %rax, -0x548(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xd0e0
movq %rax, %rcx
movq -0x548(%rbp), %rax
cmpq %rcx, %rax
jae 0xfd98
movl -0xb8(%rbp), %eax
movl %eax, %esi
leaq -0x88(%rbp), %rdi
callq 0x13920
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x34c0
movq %rax, -0x550(%rbp)
jmp 0xf6ad
movq -0x550(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0xfd0a
movl -0xb8(%rbp), %eax
movl %eax, %esi
leaq -0x88(%rbp), %rdi
callq 0x13920
movq %rax, %rdi
movl $0x1, %esi
callq 0x34c0
movq %rax, -0x558(%rbp)
jmp 0xf6ea
movq -0x558(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0xf905
movl -0xb8(%rbp), %eax
movl %eax, %esi
leaq -0x88(%rbp), %rdi
callq 0x13920
movq %rax, %rsi
leaq -0xd8(%rbp), %rdi
callq 0x3130
jmp 0xf722
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x560(%rbp)
callq 0x31e0
movq -0x560(%rbp), %rsi
movq %rax, %rcx
addq $-0x2, %rcx
leaq -0xf8(%rbp), %rdi
movl $0x2, %edx
callq 0x32c0
jmp 0xf756
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x570(%rbp)
leaq -0xf8(%rbp), %rsi
movq %rsi, -0x578(%rbp)
callq 0x3350
movq -0x578(%rbp), %rdi
callq 0x31a0
movq -0x570(%rbp), %rsi
leaq 0x11e5f(%rip), %rdi     # 0x215f0
callq 0x13940
movq %rax, -0x568(%rbp)
jmp 0xf79f
movq -0x568(%rbp), %rsi
leaq -0x118(%rbp), %rdi
callq 0x3130
jmp 0xf7b4
leaq 0x943e(%rip), %rsi      # 0x18bf9
leaq -0x118(%rbp), %rdi
callq 0x13840
movb %al, -0x579(%rbp)
jmp 0xf7cf
movb -0x579(%rbp), %al
testb $0x1, %al
jne 0xf7de
jmp 0xf87a
movq 0x117db(%rip), %rdi     # 0x20fc0
leaq 0x8ca5(%rip), %rsi      # 0x18491
callq 0x32a0
movq %rax, -0x588(%rbp)
jmp 0xf7fa
movq -0x588(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x3230
movq %rax, -0x590(%rbp)
jmp 0xf816
movq -0x590(%rbp), %rdi
movq 0x1178c(%rip), %rsi     # 0x20fb0
callq 0x32e0
jmp 0xf82b
movb $0x1, 0x11dee(%rip)     # 0x21620
movl $0x7, -0x70(%rbp)
jmp 0xf8cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x10494
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xf8f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x31a0
jmp 0xf8f4
leaq 0x9280(%rip), %rsi      # 0x18b01
leaq -0x138(%rbp), %rdi
leaq -0x118(%rbp), %rdx
callq 0x13a20
jmp 0xf896
movl -0xb8(%rbp), %eax
movl %eax, %esi
leaq -0x88(%rbp), %rdi
callq 0x13920
movq %rax, %rdi
leaq -0x138(%rbp), %rsi
callq 0x3350
leaq -0x138(%rbp), %rdi
callq 0x31a0
movl $0x0, -0x70(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x31a0
leaq -0xd8(%rbp), %rdi
callq 0x31a0
movl -0x70(%rbp), %eax
testl %eax, %eax
je 0xf8f2
jmp 0xf8ed
jmp 0xfd84
jmp 0xf905
leaq -0xd8(%rbp), %rdi
callq 0x31a0
jmp 0x10494
movl $0x1, -0x13c(%rbp)
movl -0x13c(%rbp), %eax
movq %rax, -0x598(%rbp)
movl -0xb8(%rbp), %eax
movl %eax, %esi
leaq -0x88(%rbp), %rdi
callq 0x13920
movq %rax, %rdi
callq 0x31e0
movq %rax, %rcx
movq -0x598(%rbp), %rax
cmpq %rcx, %rax
jae 0xfd08
movl -0xb8(%rbp), %eax
movl %eax, %esi
leaq -0x88(%rbp), %rdi
callq 0x13920
movq %rax, %rdi
movl -0x13c(%rbp), %eax
movl %eax, %esi
callq 0x34c0
movq %rax, -0x5a0(%rbp)
jmp 0xf978
movq -0x5a0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x77, %eax
jne 0xfab0
movl -0xb8(%rbp), %eax
addl $0x1, %eax
movl %eax, %eax
movq %rax, -0x5a8(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xd0e0
movq %rax, %rcx
movq -0x5a8(%rbp), %rax
cmpq %rcx, %rax
jb 0xf9f5
movq 0x11601(%rip), %rdi     # 0x20fc0
leaq 0x8ae0(%rip), %rsi      # 0x184a6
callq 0x32a0
movq %rax, -0x5b0(%rbp)
jmp 0xf9d4
movq -0x5b0(%rbp), %rdi
movq 0x115ce(%rip), %rsi     # 0x20fb0
callq 0x32e0
jmp 0xf9e9
movb $0x1, 0x11c30(%rip)     # 0x21620
jmp 0xfaab
movl -0xb8(%rbp), %eax
incl %eax
movl %eax, %esi
leaq -0x88(%rbp), %rdi
movq %rdi, -0x5c0(%rbp)
callq 0x13920
movq %rax, %rdi
callq 0x3120
movq %rax, %rdi
callq 0x3400
movq -0x5c0(%rbp), %rdi
movl %eax, 0x11859(%rip)     # 0x21288
callq 0x13ba0
movq %rax, -0x160(%rbp)
movl -0xb8(%rbp), %eax
movl %eax, %esi
leaq -0x160(%rbp), %rdi
callq 0x13bd0
movq %rax, -0x158(%rbp)
leaq -0x158(%rbp), %rdi
movl $0x1, %esi
callq 0x13bd0
movq %rax, -0x150(%rbp)
leaq -0x148(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x13c10
movq -0x5c0(%rbp), %rdi
movq -0x148(%rbp), %rsi
callq 0x13b30
movq %rax, -0x5b8(%rbp)
jmp 0xfa9d
movq -0x5b8(%rbp), %rax
movq %rax, -0x168(%rbp)
jmp 0xfcf2
movl -0xb8(%rbp), %eax
movl %eax, %esi
leaq -0x88(%rbp), %rdi
callq 0x13920
movq %rax, %rdi
movl -0x13c(%rbp), %eax
movl %eax, %esi
callq 0x34c0
movq %rax, -0x5c8(%rbp)
jmp 0xfadd
movq -0x5c8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x6c, %eax
jne 0xfc15
movl -0xb8(%rbp), %eax
addl $0x1, %eax
movl %eax, %eax
movq %rax, -0x5d0(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xd0e0
movq %rax, %rcx
movq -0x5d0(%rbp), %rax
cmpq %rcx, %rax
jb 0xfb5a
movq 0x1149c(%rip), %rdi     # 0x20fc0
leaq 0x89c5(%rip), %rsi      # 0x184f0
callq 0x32a0
movq %rax, -0x5d8(%rbp)
jmp 0xfb39
movq -0x5d8(%rbp), %rdi
movq 0x11469(%rip), %rsi     # 0x20fb0
callq 0x32e0
jmp 0xfb4e
movb $0x1, 0x11acb(%rip)     # 0x21620
jmp 0xfc10
movl -0xb8(%rbp), %eax
incl %eax
movl %eax, %esi
leaq -0x88(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
callq 0x13920
movq %rax, %rdi
callq 0x3120
movq %rax, %rdi
callq 0x3400
movq -0x5e8(%rbp), %rdi
movl %eax, 0x11a54(%rip)     # 0x215e8
callq 0x13ba0
movq %rax, -0x188(%rbp)
movl -0xb8(%rbp), %eax
movl %eax, %esi
leaq -0x188(%rbp), %rdi
callq 0x13bd0
movq %rax, -0x180(%rbp)
leaq -0x180(%rbp), %rdi
movl $0x1, %esi
callq 0x13bd0
movq %rax, -0x178(%rbp)
leaq -0x170(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x13c10
movq -0x5e8(%rbp), %rdi
movq -0x170(%rbp), %rsi
callq 0x13b30
movq %rax, -0x5e0(%rbp)
jmp 0xfc02
movq -0x5e0(%rbp), %rax
movq %rax, -0x190(%rbp)
jmp 0xfcf0
movl -0xb8(%rbp), %eax
movl %eax, %esi
leaq -0x88(%rbp), %rdi
callq 0x13920
movq %rax, %rdi
movl -0x13c(%rbp), %eax
movl %eax, %esi
callq 0x34c0
movq %rax, -0x5f0(%rbp)
jmp 0xfc42
movq -0x5f0(%rbp), %rax
movsbl (%rax), %edi
callq 0xef80
movb %al, -0x5f1(%rbp)
jmp 0xfc59
movb -0x5f1(%rbp), %al
testb $0x1, %al
jne 0xfc65
jmp 0xfc6a
jmp 0xfcee
movq 0x1134f(%rip), %rdi     # 0x20fc0
leaq 0x88c3(%rip), %rsi      # 0x1853b
callq 0x32a0
movq %rax, -0x600(%rbp)
jmp 0xfc86
movl -0xb8(%rbp), %eax
movl %eax, %esi
leaq -0x88(%rbp), %rdi
callq 0x13920
movq %rax, %rdi
movl -0x13c(%rbp), %eax
movl %eax, %esi
callq 0x34c0
movq %rax, -0x608(%rbp)
jmp 0xfcb3
movq -0x600(%rbp), %rdi
movq -0x608(%rbp), %rax
movsbl (%rax), %esi
callq 0x3330
movq %rax, -0x610(%rbp)
jmp 0xfcd2
movq -0x610(%rbp), %rdi
movq 0x112d0(%rip), %rsi     # 0x20fb0
callq 0x32e0
jmp 0xfce7
movb $0x1, 0x11932(%rip)     # 0x21620
jmp 0xfcf0
jmp 0xfcf2
jmp 0xfcf4
movl -0x13c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x13c(%rbp)
jmp 0xf90f
jmp 0xfd82
movl -0xb8(%rbp), %eax
movl %eax, %esi
leaq -0x88(%rbp), %rdi
callq 0x13920
movq %rax, %rdx
leaq -0x1b0(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x13c50
jmp 0xfd33
leaq -0x30(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x3370
jmp 0xfd45
leaq -0x1b0(%rbp), %rdi
callq 0x31a0
leaq 0x82c4(%rip), %rsi      # 0x1801c
leaq -0x68(%rbp), %rdi
callq 0x3380
jmp 0xfd63
jmp 0xfd82
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x31a0
jmp 0x10494
jmp 0xfd84
movl -0xb8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb8(%rbp)
jmp 0xf658
testb $0x1, 0x11881(%rip)     # 0x21620
je 0xfdb4
movl $0x1, -0x4(%rbp)
movl $0x1, -0x70(%rbp)
jmp 0x10452
testb $0x1, 0x11827(%rip)     # 0x215e2
je 0xfdfc
movsbl 0x114bc(%rip), %eax     # 0x21280
cmpl $0x66, %eax
je 0xfdfc
movq 0x111f0(%rip), %rdi     # 0x20fc0
leaq 0x8775(%rip), %rsi      # 0x1854c
callq 0x32a0
movq %rax, -0x618(%rbp)
jmp 0xfde5
movq -0x618(%rbp), %rdi
movq 0x111bd(%rip), %rsi     # 0x20fb0
callq 0x32e0
jmp 0xfdfa
jmp 0xfdfc
leaq -0x1d1(%rbp), %rdi
movq %rdi, -0x620(%rbp)
callq 0x3470
movq -0x620(%rbp), %rdx
leaq 0x8ddc(%rip), %rsi      # 0x18bf9
leaq -0x1d0(%rbp), %rdi
callq 0x33a0
jmp 0xfe2b
leaq -0x1d1(%rbp), %rdi
callq 0x3300
leaq -0x360(%rbp), %rdi
callq 0x31f0
jmp 0xfe45
movsbl 0x11434(%rip), %eax     # 0x21280
addl $-0x62, %eax
movl %eax, %ecx
movq %rcx, -0x628(%rbp)
subl $0x12, %eax
ja 0x10250
movq -0x628(%rbp), %rax
leaq 0x837d(%rip), %rcx      # 0x181ec
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1d1(%rbp), %rdi
callq 0x3300
jmp 0x10494
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x10488
callq 0x104c0
jmp 0xfead
jmp 0x10283
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1047c
leaq -0x350(%rbp), %rax
movq %rax, -0x630(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x10d40
jmp 0xfedf
movq -0x630(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x3230
movq %rax, -0x638(%rbp)
jmp 0xfefb
movq -0x638(%rbp), %rdi
movq 0x110a7(%rip), %rsi     # 0x20fb0
callq 0x32e0
jmp 0xff10
leaq -0x380(%rbp), %rdi
callq 0x31a0
jmp 0x10283
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x31a0
jmp 0x1047c
leaq -0x350(%rbp), %rax
movq %rax, -0x640(%rbp)
leaq -0x3c0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x3130
jmp 0xff5e
leaq -0x3a0(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x111d0
jmp 0xff73
movq -0x640(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0x3230
movq %rax, -0x648(%rbp)
jmp 0xff8f
movq -0x648(%rbp), %rdi
movq 0x11013(%rip), %rsi     # 0x20fb0
callq 0x32e0
jmp 0xffa4
leaq -0x3a0(%rbp), %rdi
callq 0x31a0
leaq -0x3c0(%rbp), %rdi
callq 0x31a0
jmp 0x10283
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xffe7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x31a0
leaq -0x3c0(%rbp), %rdi
callq 0x31a0
jmp 0x1047c
leaq -0x350(%rbp), %rax
movq %rax, -0x650(%rbp)
leaq -0x400(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x3130
jmp 0x10018
leaq -0x3e0(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0x11b70
jmp 0x1002d
movq -0x650(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0x3230
movq %rax, -0x658(%rbp)
jmp 0x10049
movq -0x658(%rbp), %rdi
movq 0x10f59(%rip), %rsi     # 0x20fb0
callq 0x32e0
jmp 0x1005e
leaq -0x3e0(%rbp), %rdi
callq 0x31a0
leaq -0x400(%rbp), %rdi
callq 0x31a0
jmp 0x10283
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x100a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x3e0(%rbp), %rdi
callq 0x31a0
leaq -0x400(%rbp), %rdi
callq 0x31a0
jmp 0x1047c
movsbl 0x111c9(%rip), %eax     # 0x21282
cmpl $0x61, %eax
jne 0x100d5
leaq 0x84e1(%rip), %rsi      # 0x185a6
leaq -0x1d0(%rbp), %rdi
callq 0x3380
jmp 0x100d3
jmp 0x1014d
movsbl 0x111a6(%rip), %eax     # 0x21282
cmpl $0x69, %eax
jne 0x10110
leaq -0x420(%rbp), %rdi
callq 0xf1c0
jmp 0x100ef
leaq -0x1d0(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0x3350
leaq -0x420(%rbp), %rdi
callq 0x31a0
jmp 0x1014b
movsbl 0x1116b(%rip), %eax     # 0x21282
cmpl $0x63, %eax
jne 0x10149
leaq -0x440(%rbp), %rdi
callq 0xe250
jmp 0x1012a
leaq -0x1d0(%rbp), %rdi
leaq -0x440(%rbp), %rsi
callq 0x3350
leaq -0x440(%rbp), %rdi
callq 0x31a0
jmp 0x1014b
jmp 0x1014d
leaq -0x350(%rbp), %rax
movq %rax, -0x660(%rbp)
leaq -0x480(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x3130
jmp 0x1016d
leaq -0x4a0(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x3130
jmp 0x10182
movsbl 0x110f8(%rip), %ecx     # 0x21281
leaq -0x460(%rbp), %rdi
leaq -0x480(%rbp), %rsi
leaq -0x4a0(%rbp), %rdx
callq 0x12370
jmp 0x101a5
movq -0x660(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0x3230
movq %rax, -0x668(%rbp)
jmp 0x101c1
movq -0x668(%rbp), %rdi
movq 0x10de1(%rip), %rsi     # 0x20fb0
callq 0x32e0
jmp 0x101d6
leaq -0x460(%rbp), %rdi
callq 0x31a0
leaq -0x4a0(%rbp), %rdi
callq 0x31a0
leaq -0x480(%rbp), %rdi
callq 0x31a0
jmp 0x10283
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1023f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x10233
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x460(%rbp), %rdi
callq 0x31a0
leaq -0x4a0(%rbp), %rdi
callq 0x31a0
leaq -0x480(%rbp), %rdi
callq 0x31a0
jmp 0x1047c
movq 0x10d69(%rip), %rdi     # 0x20fc0
leaq 0x836c(%rip), %rsi      # 0x185ca
callq 0x32a0
movq %rax, -0x670(%rbp)
jmp 0x1026c
movq -0x670(%rbp), %rdi
movq 0x10d36(%rip), %rsi     # 0x20fb0
callq 0x32e0
jmp 0x10281
jmp 0x10283
movsbl 0x10ff9(%rip), %eax     # 0x21283
cmpl $0x76, %eax
jne 0x1034a
leaq -0x4c0(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x3290
jmp 0x102a8
leaq -0x4c0(%rbp), %rdi
callq 0xdfa0
movl %eax, -0x674(%rbp)
jmp 0x102bc
leaq -0x4c0(%rbp), %rdi
callq 0x31a0
movl -0x674(%rbp), %eax
cmpl $-0x1, %eax
jne 0x10345
leaq -0x4e0(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x3290
jmp 0x102e8
movq 0x10cd1(%rip), %rdi     # 0x20fc0
leaq -0x4e0(%rbp), %rsi
callq 0x3230
jmp 0x102fd
leaq -0x4e0(%rbp), %rdi
callq 0x31a0
jmp 0x10345
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x4c0(%rbp), %rdi
callq 0x31a0
jmp 0x1047c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x4e0(%rbp), %rdi
callq 0x31a0
jmp 0x1047c
jmp 0x10433
movsbl 0x10f32(%rip), %eax     # 0x21283
cmpl $0x6f, %eax
jne 0x103ae
leaq -0x500(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x3290
jmp 0x1036b
movq 0x10c4e(%rip), %rdi     # 0x20fc0
leaq -0x500(%rbp), %rsi
callq 0x3230
jmp 0x10380
leaq -0x500(%rbp), %rdi
callq 0x31a0
jmp 0x10431
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x500(%rbp), %rdi
callq 0x31a0
jmp 0x1047c
movq 0x10c0b(%rip), %rdi     # 0x20fc0
leaq 0x822f(%rip), %rsi      # 0x185eb
callq 0x32a0
movq %rax, -0x680(%rbp)
jmp 0x103ca
movq -0x680(%rbp), %rdi
movq 0x10bd8(%rip), %rsi     # 0x20fb0
callq 0x32e0
jmp 0x103df
leaq -0x520(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x3290
jmp 0x103f4
movq 0x10bc5(%rip), %rdi     # 0x20fc0
leaq -0x520(%rbp), %rsi
callq 0x3230
jmp 0x10409
leaq -0x520(%rbp), %rdi
callq 0x31a0
jmp 0x10431
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x520(%rbp), %rdi
callq 0x31a0
jmp 0x1047c
jmp 0x10433
leaq -0x360(%rbp), %rdi
callq 0x3200
leaq -0x1d0(%rbp), %rdi
callq 0x31a0
movl $0x0, -0x70(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xcae0
leaq -0x68(%rbp), %rdi
callq 0x31a0
leaq -0x30(%rbp), %rdi
callq 0x31a0
movl -0x4(%rbp), %eax
addq $0x680, %rsp            # imm = 0x680
popq %rbp
retq
leaq -0x360(%rbp), %rdi
callq 0x3200
leaq -0x1d0(%rbp), %rdi
callq 0x31a0
leaq -0x88(%rbp), %rdi
callq 0xcae0
leaq -0x68(%rbp), %rdi
callq 0x31a0
leaq -0x30(%rbp), %rdi
callq 0x31a0
movq -0x40(%rbp), %rdi
callq 0x3460
nopl (%rax,%rax)