// File: /workspace/github_cpp_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2c8, %rsp            # imm = 0x2C8
movq %rsi, %rbx
movl %edi, %r15d
callq 0x372c
callq 0x8e8b
leaq -0x98(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x6351(%rip), %r14      # 0xfbd9
leaq -0xa8(%rbp), %rdi
movq %r14, %rsi
movq %r14, %rdx
callq 0x750c
leaq -0xb8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq -0xc8(%rbp), %rdi
movq %r14, %rsi
movq %r14, %rdx
callq 0x750c
cmpl $0x1, %r15d
jg 0x98c9
xorl %ebx, %ebx
callq 0xa464
jmp 0xa262
xorps %xmm0, %xmm0
leaq -0x60(%rbp), %rax
movaps %xmm0, (%rax)
movq $0x0, 0x10(%rax)
movl %r15d, %r13d
xorl %r14d, %r14d
leaq -0x2f0(%rbp), %r15
leaq -0x80(%rbp), %r12
movq (%rbx,%r14,8), %rsi
movq %r15, %rdi
movq %r12, %rdx
callq 0x3110
leaq -0x60(%rbp), %rdi
movq %r15, %rsi
callq 0xdc98
movq -0x2f0(%rbp), %rdi
leaq -0x2e0(%rbp), %rax
cmpq %rax, %rdi
je 0x991f
callq 0x3260
incq %r14
cmpq %r14, %r13
jne 0x98ec
movq -0x60(%rbp), %rax
movq -0x58(%rbp), %rcx
subq %rax, %rcx
cmpq $0x21, %rcx
jb 0x9d1b
movl $0x1, %ecx
movq %rcx, -0x88(%rbp)
movl $0x1, %r12d
leaq -0x2f0(%rbp), %rdi
shlq $0x5, %r12
leaq (%rax,%r12), %rdx
movq (%rax,%r12), %rcx
cmpb $0x2d, (%rcx)
jne 0x9a5a
cmpb $0x2d, 0x1(%rcx)
jne 0x9b5d
leaq -0x2e0(%rbp), %rax
movq %rax, -0x2f0(%rbp)
movq (%rdx), %rsi
movq 0x8(%rdx), %rdx
addq %rsi, %rdx
leaq -0x2f0(%rbp), %rbx
movq %rbx, %rdi
callq 0x7faa
movq -0x2e8(%rbp), %rcx
addq $-0x2, %rcx
movl $0x2, %edx
leaq -0x80(%rbp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x3290
movq %rbx, %rdi
movq %r14, %rsi
callq 0x32e0
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
leaq -0x48(%rbp), %r13
je 0x99db
callq 0x3260
leaq 0xaba6(%rip), %rdi      # 0x14588
movq %rbx, %rsi
callq 0xd244
leaq -0x70(%rbp), %rcx
movq %rcx, -0x80(%rbp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0x7faa
movq %r14, %rdi
leaq 0x61cb(%rip), %rsi      # 0xfbd9
callq 0x30c0
movl %eax, %r15d
testl %eax, %eax
je 0x9ac3
movq %r13, %rdi
leaq 0x60b9(%rip), %rsi      # 0xfae1
movq %r14, %rdx
callq 0xd2c3
movq -0x60(%rbp), %rdi
addq %r12, %rdi
movq %r13, %rsi
callq 0x32e0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x9b26
callq 0x3260
jmp 0x9b26
leaq -0xc8(%rbp), %rsi
callq 0xd34e
movq -0x2f0(%rbp), %rsi
movq -0x2e8(%rbp), %rdx
leaq -0xa8(%rbp), %rdi
callq 0x30d0
movq -0x2f0(%rbp), %rdi
leaq -0x2e0(%rbp), %rax
cmpq %rax, %rdi
je 0x9a98
callq 0x3260
movq -0xc0(%rbp), %rdx
movl $0x1, %r8d
leaq -0xc8(%rbp), %rdi
xorl %esi, %esi
leaq 0x5567(%rip), %rcx      # 0xf01c
callq 0x3340
movq -0x60(%rbp), %rax
jmp 0x9ced
movl $0x14, %edx
movq 0xa4e9(%rip), %rdi      # 0x13fb8
leaq 0x599b(%rip), %rsi      # 0xf471
callq 0x32c0
movq -0x2f0(%rbp), %rsi
movq -0x2e8(%rbp), %rdx
movq 0xa4c8(%rip), %rdi      # 0x13fb8
callq 0x32c0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movb $0x1, 0xaa92(%rip)      # 0x145b8
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x9b38
callq 0x3260
movq -0x2f0(%rbp), %rdi
leaq -0x2e0(%rbp), %rax
cmpq %rax, %rdi
je 0x9b50
callq 0x3260
movq -0x60(%rbp), %rax
testl %r15d, %r15d
je 0x9ced
cmpq $0x2, 0x8(%rax,%r12)
jb 0x9ced
leaq (%rax,%r12), %r15
movq -0x88(%rbp), %rcx
leal 0x1(%rcx), %r14d
movl $0x1, %ebx
movl $0x2, %r13d
movq (%r15), %rcx
movzbl (%rcx,%rbx), %ecx
cmpl $0x6c, %ecx
je 0x9bdf
cmpl $0x77, %ecx
jne 0x9c56
movq -0x58(%rbp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
movl $0x49, %edx
leaq 0x58d7(%rip), %rsi      # 0xf486
cmpq %r14, %rcx
jbe 0x9c26
movq %r14, %rcx
shlq $0x5, %rcx
movq (%rax,%rcx), %rdi
callq 0x3350
movl %eax, 0xa656(%rip)      # 0x14220
addq $0x20, %r15
leaq -0x60(%rbp), %rdi
movq %r15, %rsi
callq 0xe022
jmp 0x9cd4
movq -0x58(%rbp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
movl $0x4a, %edx
leaq 0x58da(%rip), %rsi      # 0xf4d0
cmpq %r14, %rcx
jbe 0x9c26
movq %r14, %rcx
shlq $0x5, %rcx
movq (%rax,%rcx), %rdi
callq 0x3350
movl %eax, 0xa96f(%rip)      # 0x14580
addq $0x20, %r15
leaq -0x60(%rbp), %rdi
movq %r15, %rsi
callq 0xe022
jmp 0x9cd4
movq 0xa38b(%rip), %rdi      # 0x13fb8
callq 0x32c0
movq 0xa37f(%rip), %rcx      # 0x13fb8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x3270
movq 0xa364(%rip), %r15      # 0x13fb8
jmp 0x9cba
movsbl %cl, %edi
callq 0x927b
testb %al, %al
jne 0x9cd4
movl $0x10, %edx
movq 0xa34a(%rip), %rdi      # 0x13fb8
leaq 0x58a6(%rip), %rsi      # 0xf51b
callq 0x32c0
movq -0x60(%rbp), %rax
movq (%rax,%r12), %rax
movb (%rax,%rbx), %al
movb %al, -0x2f0(%rbp)
movl $0x1, %edx
movq 0xa321(%rip), %rdi      # 0x13fb8
leaq -0x2f0(%rbp), %rsi
callq 0x32c0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movb $0x1, 0xa8e4(%rip)      # 0x145b8
movl %r13d, %ebx
movq -0x60(%rbp), %rax
leaq (%rax,%r12), %r15
incl %r13d
cmpq %rbx, 0x8(%rax,%r12)
ja 0x9b83
movq -0x88(%rbp), %rdx
incl %edx
movq -0x58(%rbp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
movq %rdx, %r12
movq %rdx, -0x88(%rbp)
cmpq %rdx, %rcx
leaq -0x2f0(%rbp), %rdi
ja 0x9955
movl $0x1, %ebx
cmpb $0x0, 0xa891(%rip)      # 0x145b8
jne 0xa259
cmpb $0x1, 0xa846(%rip)      # 0x1457a
jne 0x9d85
cmpb $0x66, 0xa4db(%rip)     # 0x14218
je 0x9d85
movq 0xa272(%rip), %rbx      # 0x13fb8
leaq 0x57df(%rip), %rsi      # 0xf52c
movl $0x59, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0xa240(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
leaq -0x70(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x5e45(%rip), %rdx      # 0xfbd9
leaq -0x80(%rbp), %rdi
movq %rdx, %rsi
callq 0x750c
leaq -0x2f0(%rbp), %rdi
callq 0x31c0
movzbl 0xa465(%rip), %eax      # 0x14218
cmpl $0x67, %eax
jle 0x9e6b
cmpl $0x68, %eax
je 0x9eb4
cmpl $0x73, %eax
je 0x9ebe
cmpl $0x74, %eax
jne 0x9faf
leaq -0x118(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0xa8(%rbp), %rsi
movq -0xa0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x128(%rbp), %rdi
callq 0x7faa
leaq -0x48(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0xbd71
leaq -0x2e0(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x32c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9e5f
callq 0x3260
movq -0x128(%rbp), %rdi
jmp 0xa100
cmpl $0x62, %eax
je 0x9f1b
cmpl $0x66, %eax
jne 0x9faf
movzbl 0xa396(%rip), %eax      # 0x1421a
cmpl $0x69, %eax
je 0xa005
cmpl $0x63, %eax
je 0x9ffa
cmpl $0x61, %eax
jne 0xa02f
leaq 0x56e0(%rip), %rsi      # 0xf586
leaq -0x80(%rbp), %rdi
callq 0x32f0
jmp 0xa02f
callq 0xa464
jmp 0xa10a
leaq -0x48(%rbp), %rdi
callq 0xaef8
leaq -0x2e0(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x32c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0xa105
jmp 0xa10a
leaq -0x138(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0xa8(%rbp), %rsi
movq -0xa0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x148(%rbp), %rdi
callq 0x7faa
leaq -0x48(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0xb312
leaq -0x2e0(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x32c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9fa3
callq 0x3260
movq -0x148(%rbp), %rdi
jmp 0xa100
movq 0xa002(%rip), %rbx      # 0x13fb8
leaq 0x55ed(%rip), %rsi      # 0xf5aa
movl $0x20, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x9fd0(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
jmp 0xa10a
leaq -0x48(%rbp), %rdi
callq 0x8b33
jmp 0xa00e
leaq -0x48(%rbp), %rdi
callq 0x966c
leaq -0x80(%rbp), %rdi
leaq -0x48(%rbp), %rbx
movq %rbx, %rsi
callq 0x32e0
movq (%rbx), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xa02f
callq 0x3260
leaq -0xf8(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0xa8(%rbp), %rsi
movq -0xa0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x108(%rbp), %rdi
callq 0x7faa
leaq -0xd8(%rbp), %r12
movq %r12, -0x10(%r12)
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
addq %rsi, %rdx
leaq -0xe8(%rbp), %rdi
callq 0x7faa
movsbl 0xa198(%rip), %ecx      # 0x14219
leaq -0x48(%rbp), %rdi
leaq -0x108(%rbp), %rsi
leaq -0xe8(%rbp), %rdx
callq 0xc463
leaq -0x2e0(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x32c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xa0e8
callq 0x3260
movq -0xe8(%rbp), %rdi
cmpq %r12, %rdi
je 0xa0f9
callq 0x3260
movq -0x108(%rbp), %rdi
cmpq %r14, %rdi
je 0xa10a
callq 0x3260
movzbl 0xa10a(%rip), %eax      # 0x1421b
cmpl $0x6f, %eax
je 0xa188
cmpl $0x76, %eax
jne 0xa1ae
leaq -0x2d8(%rbp), %rbx
leaq -0x168(%rbp), %rdi
movq %rbx, %rsi
callq 0x3370
leaq -0x168(%rbp), %rdi
callq 0x89c4
movl %eax, %r14d
leaq -0x158(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xa159
callq 0x3260
cmpl $-0x1, %r14d
jne 0xa22a
leaq -0x48(%rbp), %rdi
movq %rbx, %rsi
callq 0x3370
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq 0x9e3a(%rip), %rdi      # 0x13fb8
callq 0x32c0
jmp 0xa218
leaq -0x2d8(%rbp), %rsi
leaq -0x48(%rbp), %rdi
callq 0x3370
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq 0x9e11(%rip), %rdi      # 0x13fb8
callq 0x32c0
jmp 0xa218
movq 0x9e03(%rip), %rbx      # 0x13fb8
leaq 0x540f(%rip), %rsi      # 0xf5cb
movl $0x1a, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x9dd1(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
leaq -0x2d8(%rbp), %rsi
leaq -0x48(%rbp), %rdi
callq 0x3370
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq 0x9da5(%rip), %rdi      # 0x13fb8
callq 0x32c0
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xa22a
callq 0x3260
movq 0x9d6f(%rip), %rsi      # 0x13fa0
leaq -0x2f0(%rbp), %rdi
callq 0x31e0
leaq -0x270(%rbp), %rdi
callq 0x30e0
movq -0x80(%rbp), %rdi
cmpq %r15, %rdi
je 0xa257
callq 0x3260
xorl %ebx, %ebx
leaq -0x60(%rbp), %rdi
callq 0x7c92
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0xa27a
callq 0x3260
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0xa292
callq 0x3260
movl %ebx, %eax
addq $0x2c8, %rsp            # imm = 0x2C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xa3a6
jmp 0xa3a6
jmp 0xa378
jmp 0xa3a6
movq %rax, %rbx
jmp 0xa31d
movq %rax, %rbx
jmp 0xa32e
movq %rax, %rbx
jmp 0xa34c
movq %rax, %rbx
jmp 0xa36a
jmp 0xa3a6
jmp 0xa3a6
jmp 0xa3a6
jmp 0xa3a6
jmp 0xa378
jmp 0xa3a6
jmp 0xa378
movq %rax, %rbx
leaq -0x158(%rbp), %rax
jmp 0xa37f
jmp 0xa3a6
movq %rax, %rbx
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xa31d
callq 0x3260
movq -0xe8(%rbp), %rdi
cmpq %r12, %rdi
je 0xa32e
callq 0x3260
movq -0x108(%rbp), %rdi
jmp 0xa371
movq %rax, %rbx
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xa34c
callq 0x3260
movq -0x148(%rbp), %rdi
jmp 0xa371
movq %rax, %rbx
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xa36a
callq 0x3260
movq -0x128(%rbp), %rdi
cmpq %r14, %rdi
jne 0xa388
jmp 0xa3a9
movq %rax, %rbx
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xa3a9
callq 0x3260
jmp 0xa3a9
movq %rax, %rbx
jmp 0xa3c8
jmp 0xa420
jmp 0xa420
movq %rax, %rbx
jmp 0xa42c
movq %rax, %rbx
movq 0x9bf0(%rip), %rsi      # 0x13fa0
leaq -0x2f0(%rbp), %rdi
callq 0x31e0
leaq -0x270(%rbp), %rdi
callq 0x30e0
movq -0x80(%rbp), %rdi
cmpq %r15, %rdi
jne 0xa419
jmp 0xa423
movq %rax, %rbx
jmp 0xa444
jmp 0xa3de
jmp 0xa403
jmp 0xa420
movq %rax, %rbx
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0xa406
callq 0x3260
jmp 0xa406
jmp 0xa420
jmp 0xa420
jmp 0xa403
jmp 0xa403
jmp 0xa420
jmp 0xa420
jmp 0xa420
movq %rax, %rbx
movq -0x2f0(%rbp), %rdi
leaq -0x2e0(%rbp), %rax
cmpq %rax, %rdi
je 0xa423
callq 0x3260
jmp 0xa423
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x7c92
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0xa444
callq 0x3260
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0xa45c
callq 0x3260
movq %rbx, %rdi
callq 0x3390