// File: /workspace/github_cpp_makefile_star2_O1/ekg[P]fastahack/FastaHack.cpp
// Function: main
int main (int argc, char** argv) {

    string command;
    string fastaFileName;
    string seqname;
    string longseqname;
    long long start;
    long long length;
    bool dump = false;

    bool buildIndex = false;  // flag to force index building
    bool printEntropy = false;  // entropy printing
    bool readRegionsFromStdin = false;
    //bool printLength = false;
    string region;

    int c;

    while (true) {
        static struct option long_options[] =
        {
            /* These options set a flag. */
            //{"verbose", no_argument,       &verbose_flag, 1},
            //{"brief",   no_argument,       &verbose_flag, 0},
            {"help", no_argument, 0, 'h'},
            {"index",  no_argument, 0, 'i'},
            //{"length",  no_argument, &printLength, true},
            {"entropy", no_argument, 0, 'e'},
            {"region", required_argument, 0, 'r'},
            {"stdin", no_argument, 0, 'c'},
            {0, 0, 0, 0}
        };
        /* getopt_long stores the option index here. */
        int option_index = 0;

        c = getopt_long (argc, argv, "hciedr:",
                         long_options, &option_index);

      /* Detect the end of the options. */
          if (c == -1)
            break;
 
          switch (c)
            {
            case 0:
            /* If this option set a flag, do nothing else now. */
            if (long_options[option_index].flag != 0)
              break;
            printf ("option %s", long_options[option_index].name);
            if (optarg)
              printf (" with arg %s", optarg);
            printf ("\n");
            break;

          case 'e':
            printEntropy = true;
            break;

          case 'c':
            readRegionsFromStdin = true;
            break;
 
          case 'i':
            buildIndex = true;
            break;
 
          case 'r':
            region = optarg;
            break;

            case 'd':
                dump = true;
                break;

          case 'h':
            printSummary();
            exit(0);
            break;
 
          case '?':
            /* getopt_long already printed an error message. */
            printSummary();
            exit(1);
            break;
 
          default:
            abort ();
          }
      }

    /* Print any remaining command line arguments (not options). */
    if (optind < argc) {
        //cerr << "fasta file: " << argv[optind] << endl;
        fastaFileName = argv[optind];
    } else {
        cerr << "please specify a fasta file" << endl;
        printSummary();
        exit(1);
    }

    if (buildIndex) {
        FastaIndex* fai = new FastaIndex();
        //cerr << "generating fasta index file for " << fastaFileName << endl;
        fai->indexReference(fastaFileName);
        fai->writeIndexFile((string) fastaFileName + fai->indexFileExtension());
    }
    
    string sequence;  // holds sequence so we can optionally process it

    FastaReference fr;
    fr.open(fastaFileName);

    if (dump) {
        for (vector<string>::iterator s = fr.index->sequenceNames.begin(); s != fr.index->sequenceNames.end(); ++s) {
            cout << *s << "\t" << fr.getSequence(*s) << endl;
        }
        return 0;
    }

    if (region != "") {
        FastaRegion target(region);
        sequence = fr.getTargetSubSequence(target);
    }

    if (readRegionsFromStdin) {
        string regionstr;
        while (getline(cin, regionstr)) {
            FastaRegion target(regionstr);
            if (target.startPos == -1) {
                cout << fr.getSequence(target.startSeq) << endl;
            } else {
                cout << fr.getSubSequence(target.startSeq, target.startPos - 1, target.length()) << endl;
            }
        }
    } else {
        if (sequence != "") {
            if (printEntropy) {
                if (sequence.size() > 0) {
                    cout << shannon_H((char*) sequence.c_str(), sequence.size()) << endl;
                } else {
                    cerr << "please specify a region or sequence for which to calculate the shannon entropy" << endl;
                }
            } else {  // if no statistical processing is requested, just print the sequence
                cout << sequence << endl;
            }
        }
    }

    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x258, %rsp            # imm = 0x258
movq %rsi, %rbx
movl %edi, %ebp
leaq 0x78(%rsp), %rax
movq %rax, -0x10(%rax)
xorl %edx, %edx
movq %rdx, -0x8(%rax)
movb %dl, (%rax)
leaq 0x38(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rdx, -0x8(%rax)
movb %dl, (%rax)
leaq 0x58(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rdx, -0x8(%rax)
movb %dl, (%rax)
leaq 0x248(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rdx, -0x8(%rax)
movb %dl, (%rax)
leaq 0x140(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rdx, -0x8(%rax)
movl $0x0, %ecx
movq %rcx, 0x108(%rsp)
movb %dl, (%rax)
leaq 0x1e4e(%rip), %r14      # 0x95eb
leaq 0x5aec(%rip), %r13      # 0xd290
leaq 0x150(%rsp), %r15
movq $0x0, 0xf0(%rsp)
movq $0x0, 0xf8(%rsp)
movq $0x0, 0x100(%rsp)
movl %edi, 0xcc(%rsp)
movl $0x0, 0x150(%rsp)
movl %ebp, %edi
movq %rbx, %rsi
movq %r14, %rdx
movq %r13, %rcx
movq %r15, %r8
callq 0x3450
cmpl $0x62, %eax
jle 0x7825
leal -0x63(%rax), %ecx
cmpl $0x6, %ecx
ja 0x7891
leaq 0x1a1f(%rip), %rdx      # 0x922c
movslq (%rdx,%rcx,4), %rax
addq %rdx, %rax
jmpq *%rax
movb $0x1, %al
movq %rax, 0xf8(%rsp)
jmp 0x7913
cmpl $-0x1, %eax
je 0x7921
testl %eax, %eax
jne 0x81c7
movslq 0x150(%rsp), %rax
shlq $0x5, %rax
movb $0x1, %r12b
cmpq $0x0, 0x10(%rax,%r13)
jne 0x7916
addq %r13, %rax
movq (%rax), %rsi
leaq 0x1d95(%rip), %rdi      # 0x95f3
xorl %eax, %eax
callq 0x3050
movq 0x573c(%rip), %rax      # 0xcfa8
movq (%rax), %rsi
testq %rsi, %rsi
je 0x7882
leaq 0x1d82(%rip), %rdi      # 0x95fd
xorl %eax, %eax
callq 0x3050
movl $0xa, %edi
callq 0x3390
jmp 0x7916
cmpl $0x72, %eax
jne 0x81db
movq 0x5707(%rip), %rax      # 0xcfa8
movq (%rax), %r13
movq %rbx, %rbp
movq %r15, %rbx
movq %r14, %r15
movq 0x138(%rsp), %r14
movq %r13, %rdi
callq 0x3140
movb $0x1, %r12b
leaq 0x130(%rsp), %rdi
xorl %esi, %esi
movq %r14, %rdx
movq %r15, %r14
movq %rbx, %r15
movq %rbp, %rbx
movl 0xcc(%rsp), %ebp
movq %r13, %rcx
leaq 0x59a9(%rip), %r13      # 0xd290
movq %rax, %r8
callq 0x33f0
jmp 0x7916
movb $0x1, %al
movq %rax, 0x100(%rsp)
jmp 0x7913
movb $0x1, %al
movq %rax, 0xf0(%rsp)
jmp 0x7913
movb $0x1, %al
movq %rax, 0x108(%rsp)
movb $0x1, %r12b
testb %r12b, %r12b
jne 0x77d7
jmp 0x7926
xorl %r12d, %r12d
jmp 0x7916
movq 0x569b(%rip), %rax      # 0xcfc8
movslq (%rax), %rax
cmpl %ebp, %eax
jge 0x81ec
movq (%rbx,%rax,8), %rbx
leaq 0x28(%rsp), %r14
movq 0x8(%r14), %r15
movq %rbx, %rdi
callq 0x3140
movq %r14, %rdi
xorl %esi, %esi
movq %r15, %rdx
movq %rbx, %rcx
movq %rax, %r8
callq 0x33f0
testb $0x1, 0x108(%rsp)
je 0x7b2c
movl $0x280, %edi            # imm = 0x280
callq 0x32c0
movq %rax, %r14
movq %rax, %rdi
callq 0x38b8
leaq 0x228(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
addq %rsi, %rdx
leaq 0x218(%rsp), %rdi
callq 0x55ac
leaq 0x218(%rsp), %rsi
movq %r14, %rdi
callq 0x3fdc
movq 0x218(%rsp), %rdi
cmpq %rbx, %rdi
je 0x79d6
movq 0x228(%rsp), %rsi
incq %rsi
callq 0x32d0
leaq 0x160(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
addq %rsi, %rdx
leaq 0x150(%rsp), %rdi
callq 0x55ac
movq %rsp, %rdi
movq %r14, %rsi
callq 0x4864
movq 0x150(%rsp), %rcx
movq 0x158(%rsp), %r8
movq 0x8(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %r15, %rcx
je 0x7a32
movq 0x160(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x7a51
leaq 0x10(%rsp), %rdi
movl $0xf, %esi
cmpq %rdi, -0x10(%rdi)
je 0x7a4c
movq 0x10(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x7a64
movq (%rsp), %rsi
leaq 0x150(%rsp), %rdi
callq 0x30f0
jmp 0x7a70
movq %rsp, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3300
leaq 0xe0(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x7a9d
movq %rsi, 0xd0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xe0(%rsp)
jmp 0x7aa3
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0xd8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0xd0(%rsp), %rsi
movq %r14, %rdi
callq 0x4692
leaq 0xe0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7af4
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x32d0
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7b0f
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x150(%rsp), %rdi
cmpq %r15, %rdi
je 0x7b2c
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x32d0
leaq 0x98(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x168(%rsp), %rcx
movb %al, -0x18(%rcx)
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movq %rax, 0x10(%rcx)
movq %rax, 0x28(%rcx)
leaq 0x208(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1f8(%rsp), %rdi
callq 0x55ac
leaq 0x150(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
callq 0x4888
movq 0x1f8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x7bb5
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x32d0
testb $0x1, 0x100(%rsp)
je 0x7cd4
movq 0x190(%rsp), %rax
movq 0x30(%rax), %r14
cmpq 0x38(%rax), %r14
je 0x80e3
leaq 0x1e8(%rsp), %rbx
leaq 0x1d8(%rsp), %r15
movq %rsp, %r12
leaq 0x150(%rsp), %r13
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq 0x53be(%rip), %rdi      # 0xcfc0
callq 0x3320
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x13ec(%rip), %rsi      # 0x9005
callq 0x3320
movq %rbx, 0x1d8(%rsp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x55ac
movq %r12, %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x4c00
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbp, %rdi
callq 0x3320
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %rbp, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x7c9c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x1d8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x7cb9
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x32d0
addq $0x20, %r14
movq 0x190(%rsp), %rax
cmpq 0x38(%rax), %r14
jne 0x7bf4
jmp 0x80e3
leaq 0x132b(%rip), %rsi      # 0x9006
leaq 0x130(%rsp), %rdi
callq 0x30d0
testl %eax, %eax
je 0x7d67
movq %rsp, %rdi
leaq 0x130(%rsp), %rsi
callq 0x8518
leaq 0x110(%rsp), %rdi
leaq 0x150(%rsp), %rsi
movq %rsp, %rdx
callq 0x4e6c
leaq 0x88(%rsp), %rdi
leaq 0x110(%rsp), %rbx
movq %rbx, %rsi
callq 0x3370
movq (%rbx), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0x7d4c
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x32d0
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7d67
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x32d0
testb $0x1, 0xf8(%rsp)
je 0x7fd1
leaq 0x120(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x1c8(%rsp), %rbp
movq 0x523d(%rip), %rbx      # 0xcfd8
leaq 0x110(%rsp), %r14
leaq 0x198(%rsp), %r13
leaq 0x1b8(%rsp), %r15
movq %r13, %r12
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x34c0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x8041
movq %rsp, %rdi
movq %r14, %rsi
callq 0x8518
cmpl $-0x1, 0x20(%rsp)
je 0x7ede
movq %rbp, 0x1b8(%rsp)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x55ac
movl 0x20(%rsp), %ecx
movl 0x24(%rsp), %eax
movl %eax, %r8d
subl %ecx, %r8d
decl %ecx
incl %r8d
testl %eax, %eax
movl $0x1, %eax
cmovlel %eax, %r8d
leaq 0xa8(%rsp), %rdi
leaq 0x150(%rsp), %rsi
movq %r15, %rdx
callq 0x4f56
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq 0x5157(%rip), %rdi      # 0xcfc0
callq 0x3320
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x7ebd
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x1b8(%rsp), %rdi
cmpq %rbp, %rdi
movq %r12, %r13
je 0x7fad
movq 0x1c8(%rsp), %rsi
jmp 0x7fa5
leaq 0x1a8(%rsp), %rax
movq %rax, 0x198(%rsp)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0x55ac
leaq 0xa8(%rsp), %rdi
leaq 0x150(%rsp), %rsi
movq %r13, %rdx
callq 0x4c00
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq 0x508f(%rip), %rdi      # 0xcfc0
callq 0x3320
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x7f85
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
movq %r12, %r13
je 0x7fad
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x32d0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x7db6
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x32d0
jmp 0x7db6
leaq 0x102e(%rip), %rsi      # 0x9006
leaq 0x88(%rsp), %rdi
callq 0x30d0
testl %eax, %eax
je 0x80e3
testb $0x1, 0xf0(%rsp)
je 0x806c
movq 0x90(%rsp), %rsi
testq %rsi, %rsi
je 0x80a1
movq 0x88(%rsp), %rdi
callq 0x8d40
cvtss2sd %xmm0, %xmm0
movq 0x4fa0(%rip), %rdi      # 0xcfc0
callq 0x3430
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3290
jmp 0x80d0
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0x80e3
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x32d0
jmp 0x80e3
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq 0x4f3d(%rip), %rdi      # 0xcfc0
callq 0x3320
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3290
jmp 0x80d0
movq 0x4f48(%rip), %rbx      # 0xcff0
leaq 0x1577(%rip), %rsi      # 0x9626
movl $0x4e, %edx
movq %rbx, %rdi
callq 0x3320
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
leaq 0x150(%rsp), %rdi
callq 0x4ba6
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x8115
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
leaq 0x78(%rsp), %rbx
leaq 0x38(%rsp), %r14
leaq 0x58(%rsp), %r15
je 0x8149
movq 0x140(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x238(%rsp), %rdi
leaq 0x248(%rsp), %rax
cmpq %rax, %rdi
je 0x816e
movq 0x248(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x8185
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x28(%rsp), %rdi
cmpq %r14, %rdi
je 0x819c
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x68(%rsp), %rdi
cmpq %rbx, %rdi
je 0x81b3
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x32d0
xorl %eax, %eax
addq $0x258, %rsp            # imm = 0x258
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpl $0x3f, %eax
jne 0x81db
callq 0x72d0
movl $0x1, %edi
callq 0x3360
callq 0x3190
callq 0x72d0
xorl %edi, %edi
callq 0x3360
movq 0x4dfd(%rip), %rdi      # 0xcff0
leaq 0x1410(%rip), %rsi      # 0x960a
movl $0x1b, %edx
callq 0x3320
movq 0x4de5(%rip), %rdi      # 0xcff0
callq 0x3150
callq 0x72d0
jmp 0x81d1
movq %rax, %r12
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8440
movq 0x10(%rsp), %rsi
jmp 0x8438
jmp 0x8400
movq %rax, %r12
leaq 0xe0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8264
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x32d0
jmp 0x8264
movq %rax, %r12
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8284
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x32d0
jmp 0x8284
movq %rax, %r12
movq 0x150(%rsp), %rdi
cmpq %r15, %rdi
je 0x8302
movq 0x160(%rsp), %rsi
jmp 0x82b5
jmp 0x82ff
movq %rax, %r12
movq 0x218(%rsp), %rdi
cmpq %rbx, %rdi
je 0x8302
movq 0x228(%rsp), %rsi
incq %rsi
jmp 0x82c5
movq %rax, %r12
movl $0x280, %esi            # imm = 0x280
movq %r14, %rdi
callq 0x32d0
jmp 0x8302
movq %rax, %r12
movq 0x1f8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x8440
movq 0x208(%rsp), %rsi
jmp 0x8438
jmp 0x82ff
jmp 0x8400
jmp 0x82ff
jmp 0x8316
movq %rax, %r12
jmp 0x835d
jmp 0x82ff
movq %rax, %r12
leaq 0x78(%rsp), %rbx
leaq 0x38(%rsp), %r14
leaq 0x58(%rsp), %r15
jmp 0x8481
movq %rax, %r12
jmp 0x83c6
movq %rax, %r12
jmp 0x83a9
jmp 0x837c
jmp 0x8400
movq %rax, %r12
jmp 0x8423
movq %rax, %r12
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x835d
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x83c6
movq 0x1a8(%rsp), %rsi
jmp 0x83be
movq %rax, %r12
jmp 0x83e1
movq %rax, %r12
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x83a9
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x1b8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x83c6
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0x32d0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x83e1
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0x8440
movq 0x120(%rsp), %rsi
jmp 0x8438
movq %rax, %r12
jmp 0x8440
movq %rax, %r12
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x8423
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x1d8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x8440
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x32d0
leaq 0x78(%rsp), %rbx
leaq 0x38(%rsp), %r14
leaq 0x58(%rsp), %r15
leaq 0x98(%rsp), %r13
leaq 0x150(%rsp), %rdi
callq 0x4ba6
movq 0x88(%rsp), %rdi
cmpq %r13, %rdi
je 0x8481
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
je 0x84a6
movq 0x140(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x238(%rsp), %rdi
leaq 0x248(%rsp), %rax
cmpq %rax, %rdi
je 0x84cb
movq 0x248(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x84e2
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x28(%rsp), %rdi
cmpq %r14, %rdi
je 0x84f9
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x32d0
movq 0x68(%rsp), %rdi
cmpq %rbx, %rdi
je 0x8510
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x32d0
movq %r12, %rdi
callq 0x3490