// File: /workspace/github_cpp_makefile_star2_O2/readmapping[P]alfalfa/src/main.cpp
// Function: main
int main(int argc, char* argv[]) {
    cerr << "@PG\tID:" << PROG << "\tVN:" << PROG_VERSION << endl;
    //handle command structure and general help
    if (argc < 2 || strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help") == 0) {
        option::printUsage(std::cerr, basicUsage);
        exit(1);
    }
    if (strcmp(argv[1], "evaluate") == 0) {
        samCheckOptions_t opt;
        opt.initOptions();
        processCheckParameters(argc - 1, argv + 1, opt);
        cerr << "parsing options: done" << endl;
        if (opt.subcommand == ORACLE)
            checkOracle(opt);
        else if (opt.subcommand == SUMMARY)
            checkSummary(opt);
        else if (opt.subcommand == WGSIM)
            checkWgsim(opt);
    } else {
        mapOptions_t opt;
        opt.initOptions();
        processParameters(argc, argv, opt);
        //query name + read initialization
        cerr << "parsing options: done" << endl;
        sa = new sparseSA();
        if (opt.command == INDEX) {
            cerr << "loading ref sequences: ..." << endl;
            sa->loadRef(opt.ref_fasta);
            cerr << "loading ref sequences: done" << endl;
            cerr << "# ref sequence: " << opt.ref_fasta.data() << endl;
            //build index
            cerr << "building index with s = " << opt.K << " ... " << endl;
            clock_t start = clock();
            sa->init(opt.K, opt.hasSuflink, opt.hasChild, opt.hasKmer);
            sa->construct();
            cerr << "building index: done" << endl;
            if (opt.saveIndex) {
                cerr << "saving index to disk" << " ... " << endl;
                sa->save(opt.index_prefix);
                cerr << "saving index to disk: done" << endl;
            }
            clock_t end = clock();
            double cpu_time = (double) (end - start) / CLOCKS_PER_SEC;
            cerr << "time for building index structure: " << cpu_time << endl;
            cerr << "INDEX SIZE IN BYTES: " << sa->index_size_in_bytes() << endl;
            delete sa;
        } else if (opt.command == ALN) {
            //build or load index
            if (opt.indexLocation.empty() || !sa->load(opt.indexLocation)) {
                sa->loadRef(opt.ref_fasta);
                sa->init(opt.K, opt.hasSuflink, opt.hasChild, opt.hasKmer); //because S needs to be changed
                //TODO: set choice for kmer: situation yes or no
                cerr << "building index with s = " << opt.K << " ... " << endl;
                //adjust data structure to seed choice and sparseness
                clock_t start = clock();
                sa->construct();
                cerr << "building index: done" << endl;
                if (opt.saveIndex) {
                    cerr << "saving index to disk" << " ... " << endl;
                    sa->save(opt.index_prefix);
                    cerr << "saving index to disk: done" << endl;
                }
                clock_t end = clock();
                double cpu_time = (double) (end - start) / CLOCKS_PER_SEC;
                cerr << "time for building index structure: " << cpu_time << endl;
            } else {
                opt.K = sa->K;
                opt.hasChild = sa->hasChild;
                opt.hasSuflink = sa->hasSufLink;
                opt.hasKmer = sa->hasKmer;
            }
            if (opt.alnOptions.print >= 1) {
                cerr << "index has sparseness " << opt.K << endl;
                cerr << "index uses suffix links? " << (sa->hasSufLink ? "yes" : "no") << endl;
                cerr << "index uses child array? " << (sa->hasChild ? "yes" : "no") << endl;
                cerr << "INDEX SIZE IN BYTES: " << sa->index_size_in_bytes() << endl;
            }
#ifndef NDEBUG
            if (opt.alnOptions.debugFile != NULL) {
                fprintf(opt.alnOptions.debugFile, "#REF %s\n", opt.ref_fasta.c_str());
                fprintf(opt.alnOptions.debugFile, "%lu\n", sa->S.length());
                long sequenceCount = sa->descr.size();
                fprintf(opt.alnOptions.debugFile, "%ld\n", sequenceCount);
                if (sequenceCount == 1)
                    fprintf(opt.alnOptions.debugFile, "%d %s %lu %ld\n", 0, sa->descr[0].c_str(), sa->S.length(), sa->startpos[0]);
                else {
                    for (long i = 0; i < sequenceCount - 1; i++)
                        fprintf(opt.alnOptions.debugFile, "%ld %s %ld %ld\n", i, sa->descr[i].c_str(), sa->startpos[i + 1] - sa->startpos[i], sa->startpos[i]);
                    fprintf(opt.alnOptions.debugFile, "%ld %s %ld %ld\n", sequenceCount - 1, sa->descr[sequenceCount - 1].c_str(), (long) (sa->S.length() - sa->startpos[sequenceCount - 1]), sa->startpos[sequenceCount - 1]);
                }
            }
#endif
            //Print SAM Header, require refdescre, startpos and argc/argv
            outfile = fopen(opt.outputName.c_str(), "w");
            string header = createHeader(argc, argv, sa->S.length(), sa);
            fprintf(outfile, "%s", header.c_str());
            if (opt.alnOptions.print >= 1) cerr << "header printed to output" << endl;
            //FIRST: Unpaired reads
            if (!opt.unpairedQ.empty()) {
                if (opt.alnOptions.print >= 2) cerr << "#SE" << endl;
                cerr << "Mapping unpaired reads to the index using " << opt.query_threads << " threads ..." << endl;
                queryReader = new fastqInputReader(opt.unpairedQ, opt.nucleotidesOnly);
                clock_t start = clock();
                unpaired_thread(&opt);
                clock_t end = clock();
                double cpu_time = (double) (end - start) / CLOCKS_PER_SEC;
                cerr << endl;
                cerr << "mapping unpaired: done in " << cpu_time << " seconds." << endl;
                delete queryReader;
            }
            //SECOND: Paired reads
            if (!opt.pair1.empty() && !opt.pair2.empty()) {
                if (opt.alnOptions.print >= 2) cerr << "#PE" << endl;
                cerr << "Mapping paired reads to the index using " << opt.query_threads << " threads ..." << endl;
                mate1Reader = new fastqInputReader(opt.pair1, opt.nucleotidesOnly);
                mate2Reader = new fastqInputReader(opt.pair2, opt.nucleotidesOnly);
                clock_t start = clock();
                paired_thread1(&opt);
                clock_t end = clock();
                double cpu_time = (double) (end - start) / CLOCKS_PER_SEC;
                cerr << endl;
                cerr << "mapping paired: done in " << cpu_time << " seconds" << endl;
                delete mate1Reader;
                delete mate2Reader;
            } else if (!opt.pair1.empty() || !opt.pair2.empty()) {
                fprintf(stderr, "ALFALFA requires 2 separate mate pairs files \n");
                exit(1);
            }
            fclose(outfile);
#ifndef NDEBUG
            if (opt.alnOptions.debugFile != NULL) fclose(opt.alnOptions.debugFile);
#endif
            delete sa;
            cerr << "FINISHED" << endl;
        }
    }
    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x1d8, %rsp            # imm = 0x1D8
movq %rsi, %rbx
movl %edi, %ebp
movq 0x41899(%rip), %rdi     # 0x49fe8
leaq 0x29a37(%rip), %rsi     # 0x3218d
callq 0x72b0
leaq 0x41c16(%rip), %rsi     # 0x4a378
movq %rax, %rdi
callq 0x7280
leaq 0x29a0a(%rip), %rsi     # 0x3217b
movq %rax, %rdi
callq 0x72b0
leaq 0x41c38(%rip), %rsi     # 0x4a3b8
movq %rax, %rdi
callq 0x7280
movq %rax, %rdi
callq 0x7160
cmpl $0x2, %ebp
jl 0x912a
movq 0x8(%rbx), %r14
cmpb $0x2d, (%r14)
jne 0x87b5
cmpb $0x68, 0x1(%r14)
jne 0x87b5
cmpb $0x0, 0x2(%r14)
je 0x912a
leaq 0x299de(%rip), %rsi     # 0x3219a
movq %r14, %rdi
callq 0x7460
testl %eax, %eax
je 0x912a
leaq 0x299ce(%rip), %rsi     # 0x321a1
movq %r14, %rdi
callq 0x7460
leaq 0x20(%rsp), %r14
movq %r14, %rdi
testl %eax, %eax
je 0x8ac2
callq 0x9c54
movq %r14, %rdi
callq 0xb308
leaq 0x20(%rsp), %rdx
movl %ebp, %edi
movq %rbx, %rsi
callq 0xbde8
movq 0x417da(%rip), %rdi     # 0x49fe8
leaq 0x29995(%rip), %rsi     # 0x321aa
callq 0x72b0
movq %rax, %rdi
callq 0x7160
movl $0x118, %edi            # imm = 0x118
callq 0x72d0
movq %rax, %rcx
addq $0x60, %rcx
xorpd %xmm0, %xmm0
movupd %xmm0, 0x20(%rax)
movupd %xmm0, 0x10(%rax)
movupd %xmm0, (%rax)
movq %rcx, 0x50(%rax)
andq $0x0, 0x58(%rax)
movb $0x0, 0x60(%rax)
andq $0x0, 0x110(%rax)
movupd %xmm0, 0x100(%rax)
movupd %xmm0, 0x70(%rax)
movupd %xmm0, 0x80(%rax)
movupd %xmm0, 0x90(%rax)
movupd %xmm0, 0xa0(%rax)
movupd %xmm0, 0xb0(%rax)
movupd %xmm0, 0xc0(%rax)
movupd %xmm0, 0xd0(%rax)
andq $0x0, 0xe0(%rax)
movl $0x1, 0xf4(%rax)
movq %rax, 0x41b50(%rip)     # 0x4a400
movl 0x20(%rsp), %ecx
cmpl $0x2, %ecx
je 0x8b2c
testl %ecx, %ecx
jne 0x9110
movq 0x4171c(%rip), %rdi     # 0x49fe8
leaq 0x298ed(%rip), %rsi     # 0x321c0
callq 0x72b0
movq %rax, %rdi
callq 0x7160
movq 0x41b19(%rip), %rdi     # 0x4a400
leaq 0x90(%rsp), %rsi
callq 0xd2e0
movq 0x416ed(%rip), %rdi     # 0x49fe8
leaq 0x298d9(%rip), %rsi     # 0x321db
callq 0x72b0
movq %rax, %rdi
callq 0x7160
movq 0x416d2(%rip), %rdi     # 0x49fe8
leaq 0x298da(%rip), %rsi     # 0x321f7
callq 0x72b0
movq 0x90(%rsp), %rsi
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
callq 0x7160
movq 0x416a7(%rip), %rdi     # 0x49fe8
leaq 0x298c0(%rip), %rsi     # 0x32208
callq 0x72b0
movl 0x24(%rsp), %esi
movq %rax, %rdi
callq 0x75c0
leaq 0x2e42d(%rip), %rsi     # 0x36d8d
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
callq 0x7160
callq 0x71c0
movq %rax, %rbx
movq 0x41a81(%rip), %rdi     # 0x4a400
movslq 0x24(%rsp), %rsi
movzbl 0xd2(%rsp), %edx
movzbl 0xd1(%rsp), %ecx
movzbl 0xd3(%rsp), %r8d
callq 0xd1d2
movq 0x41a57(%rip), %rdi     # 0x4a400
callq 0xee0e
movq 0x41633(%rip), %rdi     # 0x49fe8
leaq 0x29865(%rip), %rsi     # 0x32221
callq 0x72b0
movq %rax, %rdi
callq 0x7160
cmpb $0x1, 0xd0(%rsp)
jne 0x8a2c
movq 0x4160e(%rip), %rdi     # 0x49fe8
leaq 0x29855(%rip), %rsi     # 0x32236
callq 0x72b0
leaq 0x2e3a0(%rip), %rsi     # 0x36d8d
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
callq 0x7160
movq 0x419fc(%rip), %rdi     # 0x4a400
leaq 0xb0(%rsp), %rsi
callq 0xdf74
movq 0x415d0(%rip), %rdi     # 0x49fe8
leaq 0x2982c(%rip), %rsi     # 0x3224b
callq 0x72b0
movq %rax, %rdi
callq 0x7160
callq 0x71c0
movq %rax, %r14
movq 0x415ad(%rip), %rdi     # 0x49fe8
leaq 0x29824(%rip), %rsi     # 0x32266
callq 0x72b0
subq %rbx, %r14
cvtsi2sd %r14, %xmm0
divsd 0x295b1(%rip), %xmm0    # 0x32008
movq %rax, %rdi
callq 0x7560
movq %rax, %rdi
callq 0x7160
movq 0x4157a(%rip), %rdi     # 0x49fe8
leaq 0x29815(%rip), %rsi     # 0x3228a
callq 0x72b0
movq %rax, %rbx
movq 0x4197c(%rip), %rdi     # 0x4a400
callq 0xd126
movq %rbx, %rdi
movq %rax, %rsi
callq 0x72a0
movq %rax, %rdi
callq 0x7160
movq 0x4195d(%rip), %rbx     # 0x4a400
testq %rbx, %rbx
je 0x8ab0
movq %rbx, %rdi
callq 0x9d86
movl $0x118, %esi            # imm = 0x118
movq %rbx, %rdi
callq 0x72e0
jmp 0x9110
callq 0x99fe
movq %r14, %rdi
callq 0x9b6a
addq $0x8, %rbx
decl %ebp
leaq 0x20(%rsp), %rdx
movl %ebp, %edi
movq %rbx, %rsi
callq 0x29657
movq 0x414fd(%rip), %rdi     # 0x49fe8
leaq 0x296b8(%rip), %rsi     # 0x321aa
callq 0x72b0
movq %rax, %rdi
callq 0x7160
movl 0x20(%rsp), %eax
cmpl $0x3, %eax
je 0x909e
cmpl $0x1, %eax
je 0x9092
testl %eax, %eax
jne 0x90a8
leaq 0x20(%rsp), %rdi
callq 0x2ab9f
jmp 0x90a8
cmpq $0x0, 0xe0(%rsp)
je 0x8b8a
leaq 0xd8(%rsp), %rsi
movq %rax, %rdi
callq 0xe652
movl %eax, %ecx
movq 0x418b0(%rip), %rax     # 0x4a400
testb %cl, %cl
je 0x8b8a
movl 0xe8(%rax), %ecx
movl %ecx, 0x24(%rsp)
movb 0xf0(%rax), %cl
movb %cl, 0xd1(%rsp)
movb 0xf1(%rax), %cl
movb %cl, 0xd2(%rsp)
movb 0xf8(%rax), %al
movb %al, 0xd3(%rsp)
jmp 0x8cc7
leaq 0x90(%rsp), %rsi
movq %rax, %rdi
callq 0xd2e0
movq 0x4185f(%rip), %rdi     # 0x4a400
movslq 0x24(%rsp), %rsi
movzbl 0xd2(%rsp), %edx
movzbl 0xd1(%rsp), %ecx
movzbl 0xd3(%rsp), %r8d
callq 0xd1d2
movq 0x4141d(%rip), %rdi     # 0x49fe8
leaq 0x29636(%rip), %rsi     # 0x32208
callq 0x72b0
movl 0x24(%rsp), %esi
movq %rax, %rdi
callq 0x75c0
leaq 0x2e1a3(%rip), %rsi     # 0x36d8d
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
callq 0x7160
callq 0x71c0
movq %rax, %r14
movq 0x417f7(%rip), %rdi     # 0x4a400
callq 0xee0e
movq 0x413d3(%rip), %rdi     # 0x49fe8
leaq 0x29605(%rip), %rsi     # 0x32221
callq 0x72b0
movq %rax, %rdi
callq 0x7160
cmpb $0x1, 0xd0(%rsp)
jne 0x8c8c
movq 0x413ae(%rip), %rdi     # 0x49fe8
leaq 0x295f5(%rip), %rsi     # 0x32236
callq 0x72b0
leaq 0x2e140(%rip), %rsi     # 0x36d8d
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
callq 0x7160
movq 0x4179c(%rip), %rdi     # 0x4a400
leaq 0xb0(%rsp), %rsi
callq 0xdf74
movq 0x41370(%rip), %rdi     # 0x49fe8
leaq 0x295cc(%rip), %rsi     # 0x3224b
callq 0x72b0
movq %rax, %rdi
callq 0x7160
callq 0x71c0
movq %rax, %r15
movq 0x4134d(%rip), %rdi     # 0x49fe8
leaq 0x295c4(%rip), %rsi     # 0x32266
callq 0x72b0
subq %r14, %r15
cvtsi2sd %r15, %xmm0
divsd 0x29351(%rip), %xmm0    # 0x32008
movq %rax, %rdi
callq 0x7560
movq %rax, %rdi
callq 0x7160
cmpl $0x0, 0x198(%rsp)
jle 0x8daf
movq 0x4130c(%rip), %rdi     # 0x49fe8
leaq 0x295bd(%rip), %rsi     # 0x322a0
callq 0x72b0
movl 0x24(%rsp), %esi
movq %rax, %rdi
callq 0x75c0
movq %rax, %rdi
callq 0x7160
movq 0x412e5(%rip), %rdi     # 0x49fe8
leaq 0x295ac(%rip), %rsi     # 0x322b6
callq 0x72b0
movq 0x416ea(%rip), %rcx     # 0x4a400
leaq 0x295b3(%rip), %r15     # 0x322d0
cmpb $0x0, 0xf1(%rcx)
leaq 0x295a9(%rip), %r14     # 0x322d4
movq %r14, %rsi
cmovneq %r15, %rsi
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
callq 0x7160
movq 0x4129f(%rip), %rdi     # 0x49fe8
leaq 0x29587(%rip), %rsi     # 0x322d7
callq 0x72b0
movq 0x416a4(%rip), %rcx     # 0x4a400
cmpb $0x0, 0xf0(%rcx)
cmovneq %r15, %r14
movq %rax, %rdi
movq %r14, %rsi
callq 0x72b0
movq %rax, %rdi
callq 0x7160
movq 0x41267(%rip), %rdi     # 0x49fe8
leaq 0x29502(%rip), %rsi     # 0x3228a
callq 0x72b0
movq %rax, %r14
movq 0x41669(%rip), %rdi     # 0x4a400
callq 0xd126
movq %r14, %rdi
movq %rax, %rsi
callq 0x72a0
movq %rax, %rdi
callq 0x7160
movq 0xf8(%rsp), %rdi
leaq 0x30627(%rip), %rsi     # 0x393e5
callq 0x7350
movq %rax, 0x4163e(%rip)     # 0x4a408
movq 0x4162f(%rip), %r8      # 0x4a400
movq 0x58(%r8), %rcx
movq %rsp, %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x8536
movq 0x4161f(%rip), %rsi     # 0x4a408
movq (%rsp), %rdi
callq 0x7320
cmpl $0x0, 0x198(%rsp)
jle 0x8e17
movq 0x411e5(%rip), %rdi     # 0x49fe8
leaq 0x294e6(%rip), %rsi     # 0x322f0
callq 0x72b0
movq %rax, %rdi
callq 0x7160
cmpq $0x0, 0x38(%rsp)
je 0x8f2b
cmpl $0x2, 0x198(%rsp)
jl 0x8e48
movq 0x411b4(%rip), %rdi     # 0x49fe8
leaq 0x294ce(%rip), %rsi     # 0x32309
callq 0x72b0
movq %rax, %rdi
callq 0x7160
movq 0x41199(%rip), %rdi     # 0x49fe8
leaq 0x294b7(%rip), %rsi     # 0x3230d
callq 0x72b0
movl 0x28(%rsp), %esi
movq %rax, %rdi
callq 0x75c0
leaq 0x294ca(%rip), %rsi     # 0x32338
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
callq 0x7160
pushq $0x60
popq %rdi
callq 0x72d0
movq %rax, %r14
leaq 0x30(%rsp), %rsi
movzbl 0xe8(%rsi), %edx
movq %rax, %rdi
callq 0x14e88
movq %r14, 0x41554(%rip)     # 0x4a3f8
callq 0x71c0
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x7a15
callq 0x71c0
movq %rax, %r14
movq 0x41123(%rip), %rdi     # 0x49fe8
callq 0x7160
movq 0x41117(%rip), %rdi     # 0x49fe8
leaq 0x2946d(%rip), %rsi     # 0x32345
callq 0x72b0
subq %rbx, %r14
cvtsi2sd %r14, %xmm0
divsd 0x2911b(%rip), %xmm0    # 0x32008
movq %rax, %rdi
callq 0x7560
leaq 0x29464(%rip), %rsi     # 0x32360
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
callq 0x7160
movq 0x414e5(%rip), %rbx     # 0x4a3f8
testq %rbx, %rbx
je 0x8f20
movq %rbx, %rdi
callq 0x14fb6
pushq $0x60
popq %rsi
movq %rbx, %rdi
callq 0x72e0
cmpq $0x0, 0x58(%rsp)
je 0x90b4
cmpq $0x0, 0x78(%rsp)
je 0x914f
cmpl $0x2, 0x198(%rsp)
jl 0x8f68
movq 0x41094(%rip), %rdi     # 0x49fe8
leaq 0x2940f(%rip), %rsi     # 0x3236a
callq 0x72b0
movq %rax, %rdi
callq 0x7160
movq 0x41079(%rip), %rdi     # 0x49fe8
leaq 0x293f8(%rip), %rsi     # 0x3236e
callq 0x72b0
movl 0x28(%rsp), %esi
movq %rax, %rdi
callq 0x75c0
leaq 0x293aa(%rip), %rsi     # 0x32338
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
callq 0x7160
pushq $0x60
popq %rdi
callq 0x72d0
movq %rax, %r14
leaq 0x50(%rsp), %rsi
movzbl 0xc8(%rsi), %edx
movq %rax, %rdi
callq 0x14e88
movq %r14, 0x4144c(%rip)     # 0x4a410
pushq $0x60
popq %rdi
callq 0x72d0
movq %rax, %r14
leaq 0x70(%rsp), %rsi
movzbl 0xa8(%rsi), %edx
movq %rax, %rdi
callq 0x14e88
movq %r14, 0x4142e(%rip)     # 0x4a418
callq 0x71c0
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x7f18
callq 0x71c0
movq %rax, %r14
movq 0x40fdd(%rip), %rdi     # 0x49fe8
callq 0x7160
movq 0x40fd1(%rip), %rdi     # 0x49fe8
leaq 0x29379(%rip), %rsi     # 0x32397
callq 0x72b0
subq %rbx, %r14
cvtsi2sd %r14, %xmm0
divsd 0x28fd5(%rip), %xmm0    # 0x32008
movq %rax, %rdi
callq 0x7560
leaq 0x29068(%rip), %rsi     # 0x320aa
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
callq 0x7160
movq 0x413b7(%rip), %rbx     # 0x4a410
testq %rbx, %rbx
je 0x9066
movq %rbx, %rdi
callq 0x14fb6
pushq $0x60
popq %rsi
movq %rbx, %rdi
callq 0x72e0
movq 0x413a0(%rip), %rbx     # 0x4a418
testq %rbx, %rbx
je 0x9085
movq %rbx, %rdi
callq 0x14fb6
pushq $0x60
popq %rsi
movq %rbx, %rdi
callq 0x72e0
jmp 0x90c0
leaq 0x20(%rsp), %rdi
callq 0x2e38e
jmp 0x90a8
leaq 0x20(%rsp), %rdi
callq 0x2c7bf
leaq 0x20(%rsp), %rdi
callq 0x9bec
jmp 0x911a
cmpq $0x0, 0x78(%rsp)
jne 0x914f
movq 0x41341(%rip), %rdi     # 0x4a408
callq 0x72c0
movq 0x4132d(%rip), %rbx     # 0x4a400
testq %rbx, %rbx
je 0x90e0
movq %rbx, %rdi
callq 0x9d86
movl $0x118, %esi            # imm = 0x118
movq %rbx, %rdi
callq 0x72e0
movq 0x40ef4(%rip), %rdi     # 0x49fe8
leaq 0x292e4(%rip), %rsi     # 0x323df
callq 0x72b0
movq %rax, %rdi
callq 0x7160
movq %rsp, %rdi
callq 0x76a8
leaq 0x20(%rsp), %rdi
callq 0x9dde
xorl %eax, %eax
addq $0x1d8, %rsp            # imm = 0x1D8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq 0x40eb7(%rip), %rdi     # 0x49fe8
leaq 0x3f138(%rip), %rsi     # 0x48270
pushq $0x50
popq %rdx
pushq $0x32
popq %rcx
pushq $0x4b
popq %r8
callq 0x99da
pushq $0x1
popq %rdi
callq 0x7390
movq 0x40e72(%rip), %rax     # 0x49fc8
movq (%rax), %rcx
leaq 0x29250(%rip), %rdi     # 0x323b0
pushq $0x2e
popq %rsi
pushq $0x1
popq %rdx
callq 0x7670
jmp 0x9147
jmp 0x91a2
jmp 0x9175
jmp 0x9175
jmp 0x91a2
movq %rax, %rbx
pushq $0x60
popq %rsi
movq %r14, %rdi
callq 0x72e0
jmp 0x91a5
jmp 0x91af
jmp 0x91af
jmp 0x91a2
jmp 0x91a2
jmp 0x91af
jmp 0x91af
jmp 0x91af
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x9bec
jmp 0x91bc
movq %rax, %rbx
movq %rsp, %rdi
callq 0x76a8
jmp 0x91b2
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x9dde
movq %rbx, %rdi
callq 0x75e0