// File: /workspace/github_cpp_makefile_star2_O1/millanek[P]evo/evo_fullAnnotationExtract.cpp
// Function: AnnotationPreformat(int, char**)
int AnnotationPreformat(int argc, char** argv) {
    parseAnnotExtractOptions(argc, argv);
    // Load up the annotation file
    std::ifstream* gpFile = new std::ifstream(opt::gpFile.c_str());
    std::unordered_map<string, bool> gpTranscripts;
    std::cerr << "Loading " << opt::gpFile << std::endl;
    std::string line;
    while (getline(*gpFile, line)) {
        gpTranscripts[split(line, '\t')[0]] = true;
    } gpFile->close();
    std::cerr << "Done" << std::endl;
    
    
    std::ifstream* annotFile = new std::ifstream(opt::annotationFile.c_str());
    std::ofstream* regulatoryFile;
    std::ofstream* intronFile;
    std::ofstream* upstreamFile;
    std::ofstream* downstreamFile;
    if (opt::regulatory) {
        regulatoryFile = new std::ofstream(opt::annotationFile+"Extract_allRegulatory");
        intronFile = new std::ofstream(opt::annotationFile+"Extract_Intron");
        upstreamFile = new std::ofstream(opt::annotationFile+"Extract_Upstream");
        downstreamFile = new std::ofstream(opt::annotationFile+"Extract_Downstream");
    }
    string geneLastLine = ""; string scaffoldLastLine = ""; string startLastLine = ""; string endLastLine = "";
    string directionLastLine = "";
    std::cerr << "Going through " << opt::annotationFile << std::endl;
    while (getline(*annotFile, line)) {
        if (line[0] == '#') continue;
        std::vector<string> annotVec = split(line, '\t');
        if (annotVec[2] == "CDS") { // only outputting CDS coordinates
            std::vector<string> descriptionVec = split(annotVec[8], ' ');
            string transcript = "";
            if (descriptionVec[2] == "transcript_id") {
                transcript = descriptionVec[3].substr(1).substr(0,descriptionVec[3].substr(1).length()-2);
            } else if (descriptionVec[4] == "transcript_id") {
                transcript = descriptionVec[5].substr(1).substr(0,descriptionVec[5].substr(1).length()-2);
            }
            if (gpTranscripts.count(transcript) == 1) {
                string gene = descriptionVec[1].substr(1).substr(0,descriptionVec[1].substr(1).length()-2);
                string scaffold = annotVec[0];
                string start = annotVec[3];
                string end = annotVec[4];
                string direction = annotVec[6];
                std::cout << scaffold << "\t" << start << "\t" << end << "\t" << direction << "\t" << gene << std::endl;
                if (opt::regulatory) {
                    if (gene != geneLastLine) {
                        // First sort out the previous gene:
                        if (directionLastLine == "+") {
                            *downstreamFile << scaffoldLastLine << "\t" << atoi(endLastLine.c_str())+1 << "\t" << atoi(endLastLine.c_str())+opt::bp_3prime+1 << "\t" << directionLastLine << "\t" << geneLastLine << "\t" << "downstream" << std::endl;
                            *regulatoryFile << scaffoldLastLine << "\t" << atoi(endLastLine.c_str())+1 << "\t" << atoi(endLastLine.c_str())+opt::bp_3prime+1 << "\t" << directionLastLine << "\t" << geneLastLine << "\t" << "downstream" << std::endl;
                        }
                        if (directionLastLine == "-") {
                            *upstreamFile << scaffoldLastLine << "\t" << atoi(endLastLine.c_str())+1 << "\t" << atoi(endLastLine.c_str())+opt::bp_5prime+1 << "\t" << directionLastLine << "\t" << geneLastLine << "\t" << "upstream" << std::endl;
                            *regulatoryFile << scaffoldLastLine << "\t" << atoi(endLastLine.c_str())+1 << "\t" << atoi(endLastLine.c_str())+opt::bp_5prime+1 << "\t" << directionLastLine << "\t" << geneLastLine << "\t" << "upstream" << std::endl;
                        }
                        // Now sort out this gene:
                        if (direction == "+") {
                            int startUpstream = atoi(start.c_str())-opt::bp_5prime-1;
                            if (startUpstream < 0) startUpstream = 0;
                            int endUpstream = atoi(start.c_str())-1;
                            if (endUpstream > 0) {
                                *upstreamFile << scaffold << "\t" << startUpstream << "\t" << atoi(start.c_str())-1 << "\t" << direction << "\t" << gene << "\t" << "upstream" << std::endl;
                                *regulatoryFile << scaffold << "\t" << startUpstream << "\t" << atoi(start.c_str())-1 << "\t" << direction << "\t" << gene << "\t" << "upstream" << std::endl;
                            }
                        }
                        if (direction == "-") {
                            int startDownstream = atoi(start.c_str())-opt::bp_5prime-1;
                            if (startDownstream < 0) startDownstream = 0;
                            int endDownstream = atoi(start.c_str())-1;
                            if (endDownstream > 0) {
                                *downstreamFile << scaffold << "\t" << startDownstream << "\t" << atoi(start.c_str())-1 << "\t" << direction << "\t" << gene << "\t" << "downstream" << std::endl;
                                *regulatoryFile << scaffold << "\t" << startDownstream << "\t" << atoi(start.c_str())-1 << "\t" << direction << "\t" << gene << "\t" << "downstream" << std::endl;
                            }
                        }
                    }
                    if (gene == geneLastLine) {
                        int startIntron = atoi(endLastLine.c_str())+1;
                        int endIntron = atoi(start.c_str())-1;
                        if (endIntron > startIntron) {
                            *intronFile << scaffold << "\t" << startIntron << "\t" << endIntron << "\t" << direction << "\t" << gene << "\t" << "intron" << std::endl;
                            *regulatoryFile << scaffold << "\t" << startIntron << "\t" << endIntron << "\t" << direction << "\t" << gene << "\t" << "intron" << std::endl;
                        } else {
                            std::cerr << "WARNING: an intron for gene " << gene << " has negative length" << std::endl;
                        }
                    }
                }
                geneLastLine = gene; startLastLine = start; endLastLine = end; directionLastLine = direction;
                scaffoldLastLine = scaffold;
            }
            //
        }
        // if (gpTranscripts.count() == 1) {
        // }
    } annotFile->close();
    // and the final noncoding element:
    if (opt::regulatory) {
        if (directionLastLine == "+") {
            *downstreamFile << scaffoldLastLine << "\t" << atoi(endLastLine.c_str())+1 << "\t" << atoi(endLastLine.c_str())+opt::bp_3prime+1 << "\t" << directionLastLine << "\t" << geneLastLine << "\t" << "downstream" << std::endl;
            *regulatoryFile << scaffoldLastLine << "\t" << atoi(endLastLine.c_str())+1 << "\t" << atoi(endLastLine.c_str())+opt::bp_3prime+1 << "\t" << directionLastLine << "\t" << geneLastLine << "\t" << "downstream" << std::endl;
        }
        if (directionLastLine == "-") {
            *upstreamFile << scaffoldLastLine << "\t" << atoi(endLastLine.c_str())+1 << "\t" << atoi(endLastLine.c_str())+opt::bp_5prime+1 << "\t" << directionLastLine << "\t" << geneLastLine << "\t" << "upstream" << std::endl;
            *regulatoryFile << scaffoldLastLine << "\t" << atoi(endLastLine.c_str())+1 << "\t" << atoi(endLastLine.c_str())+opt::bp_5prime+1 << "\t" << directionLastLine << "\t" << geneLastLine << "\t" << "upstream" << std::endl;
        }
    }
    std::cerr << "Done" << std::endl;
    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x208, %rsp            # imm = 0x208
callq 0x3ca34
movl $0x208, %edi            # imm = 0x208
callq 0x8470
movq %rax, %r14
movq 0xd0f7a(%rip), %rsi     # 0x10b990
movq %rax, %rdi
movl $0x8, %edx
callq 0x8860
leaq 0x200(%rsp), %rax
movq %rax, -0x30(%rax)
movq $0x1, -0x28(%rax)
xorps %xmm0, %xmm0
movups %xmm0, -0x20(%rax)
movl $0x3f800000, -0x10(%rax) # imm = 0x3F800000
movups %xmm0, -0x8(%rax)
movq 0xd0598(%rip), %rdi     # 0x10afe8
leaq 0x95dd9(%rip), %rsi     # 0xd0830
movl $0x8, %edx
callq 0x84e0
movq 0xd0f28(%rip), %rsi     # 0x10b990
movq 0xd0f29(%rip), %rdx     # 0x10b998
movq 0xd0572(%rip), %rdi     # 0x10afe8
callq 0x84e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
leaq 0x128(%rsp), %r13
movq %r13, -0x10(%r13)
movq $0x0, -0x8(%r13)
movb $0x0, (%r13)
leaq 0x118(%rsp), %rbx
movq %rsp, %r15
leaq 0x1d0(%rsp), %r12
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x3ab2a
movq %r15, %rdi
movq %rbx, %rsi
movl $0x9, %edx
callq 0x50624
movq (%rsp), %rsi
movq %r12, %rdi
callq 0x3cdd4
movb $0x1, (%rax)
movq %r15, %rdi
callq 0x3123c
jmp 0x3aad1
movq %r14, %rdi
callq 0x80f0
movq 0xd04af(%rip), %rbx     # 0x10afe8
leaq 0x93537(%rip), %rsi     # 0xce077
movl $0x4, %edx
movq %rbx, %rdi
callq 0x84e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0xd047d(%rip), %rdi     # 0x10afe8
callq 0x8040
movq %rax, %rdi
callq 0x8300
movl $0x208, %edi            # imm = 0x208
callq 0x8470
movq %rax, %r15
movq 0xd0e24(%rip), %rsi     # 0x10b9b0
movq %rax, %rdi
movl $0x8, %edx
callq 0x8860
cmpb $0x1, 0xd0e30(%rip)     # 0x10b9d0
jne 0x3ad46
movl $0x200, %edi            # imm = 0x200
callq 0x8470
movq %rax, 0x60(%rsp)
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xd0deb(%rip), %rsi     # 0x10b9b0
movq 0xd0dec(%rip), %rdx     # 0x10b9b8
addq %rsi, %rdx
movq %rsp, %rdi
callq 0x2e45c
leaq 0x95c5b(%rip), %rsi     # 0xd0839
movq %rsp, %rdi
callq 0x88c0
movq %rsp, %rsi
movq 0x60(%rsp), %rdi
movl $0x10, %edx
callq 0x88d0
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x3ac0e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
movl $0x200, %edi            # imm = 0x200
callq 0x8470
movq %rax, 0x158(%rsp)
movq %rsp, %rdi
movq %r14, (%rdi)
movq 0xd0d83(%rip), %rsi     # 0x10b9b0
movq 0xd0d84(%rip), %rdx     # 0x10b9b8
addq %rsi, %rdx
callq 0x2e45c
leaq 0x95c0c(%rip), %rsi     # 0xd084f
movq %rsp, %rdi
callq 0x88c0
movq %rsp, %rsi
movq 0x158(%rsp), %rdi
movl $0x10, %edx
callq 0x88d0
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x3ac76
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
movl $0x200, %edi            # imm = 0x200
callq 0x8470
movq %rax, 0x108(%rsp)
movq %rsp, %rdi
movq %r14, (%rdi)
movq 0xd0d1b(%rip), %rsi     # 0x10b9b0
movq 0xd0d1c(%rip), %rdx     # 0x10b9b8
addq %rsi, %rdx
callq 0x2e45c
leaq 0x95bb3(%rip), %rsi     # 0xd085e
movq %rsp, %rdi
callq 0x88c0
movq %rsp, %rsi
movq 0x108(%rsp), %rdi
movl $0x10, %edx
callq 0x88d0
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x3acde
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
movl $0x200, %edi            # imm = 0x200
callq 0x8470
movq %rax, 0x110(%rsp)
movq %rsp, %rdi
movq %r14, (%rdi)
movq 0xd0cb3(%rip), %rsi     # 0x10b9b0
movq 0xd0cb4(%rip), %rdx     # 0x10b9b8
addq %rsi, %rdx
callq 0x2e45c
leaq 0x95b5c(%rip), %rsi     # 0xd086f
movq %rsp, %rdi
callq 0x88c0
movq %rsp, %rsi
movq 0x110(%rsp), %rdi
movl $0x10, %edx
callq 0x88d0
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x3ad46
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x96f29(%rip), %rdx     # 0xd1c7f
movq %rsp, %rdi
movq %rdx, %rsi
callq 0x28952
leaq 0xb8(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x96f0a(%rip), %rdx     # 0xd1c7f
leaq 0xa8(%rsp), %rdi
movq %rdx, %rsi
callq 0x28952
leaq 0x148(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x96ee7(%rip), %rdx     # 0xd1c7f
leaq 0x138(%rsp), %rdi
movq %rdx, %rsi
callq 0x28952
leaq 0x78(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x96ec7(%rip), %rdx     # 0xd1c7f
leaq 0x68(%rsp), %rdi
movq %rdx, %rsi
callq 0x28952
leaq 0xd8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x96ea7(%rip), %rdx     # 0xd1c7f
leaq 0xc8(%rsp), %rdi
movq %rdx, %rsi
callq 0x28952
movq 0xd01f9(%rip), %rdi     # 0x10afe8
leaq 0x95a8c(%rip), %rsi     # 0xd0882
movl $0xe, %edx
callq 0x84e0
movq 0xd0ba9(%rip), %rsi     # 0x10b9b0
movq 0xd0baa(%rip), %rdx     # 0x10b9b8
movq 0xd01d3(%rip), %rdi     # 0x10afe8
callq 0x84e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
leaq 0x118(%rsp), %rbp
leaq 0x96e2b(%rip), %r13     # 0xd1c7e
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %r15, %rdi
movq %rbp, %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x3c010
movq 0x118(%rsp), %rax
cmpb $0x23, (%rax)
je 0x3ae53
leaq 0x1b8(%rsp), %rdi
movq %rbp, %rsi
movl $0x9, %edx
callq 0x50624
movq 0x1b8(%rsp), %rdi
addq $0x40, %rdi
leaq 0x959d5(%rip), %rsi     # 0xd0891
callq 0x8160
testl %eax, %eax
jne 0x3bffe
movq 0x1b8(%rsp), %rsi
movl $0x100, %eax            # imm = 0x100
addq %rax, %rsi
leaq 0x160(%rsp), %rdi
movl $0x20, %edx
callq 0x50624
leaq 0x1a8(%rsp), %rax
movq %rax, 0x198(%rsp)
leaq 0x198(%rsp), %rdi
leaq 0x96d75(%rip), %rdx     # 0xd1c7f
movq %rdx, %rsi
callq 0x28952
movq 0x160(%rsp), %rdi
addq $0x40, %rdi
leaq 0x95970(%rip), %rbx     # 0xd0895
movq %rbx, %rsi
callq 0x8160
testl %eax, %eax
je 0x3afba
movq 0x160(%rsp), %rdi
subq $-0x80, %rdi
movq %rbx, %rsi
callq 0x8160
testl %eax, %eax
jne 0x3b08b
movq 0x160(%rsp), %rsi
movl $0xa0, %ebx
addq %rbx, %rsi
movl $0x1, %edx
leaq 0x20(%rsp), %rdi
movq $-0x1, %rcx
callq 0x84a0
movq 0x160(%rsp), %rsi
addq %rbx, %rsi
movl $0x1, %edx
leaq 0x40(%rsp), %rdi
movq $-0x1, %rcx
callq 0x84a0
movq 0x48(%rsp), %rcx
addq $-0x2, %rcx
leaq 0x88(%rsp), %rbx
movq %rbx, %rdi
leaq 0x20(%rsp), %rsi
xorl %edx, %edx
callq 0x84a0
jmp 0x3b01e
movq 0x160(%rsp), %rsi
addq $0x60, %rsi
movl $0x1, %edx
leaq 0x20(%rsp), %rdi
movq $-0x1, %rcx
callq 0x84a0
movq 0x160(%rsp), %rsi
addq $0x60, %rsi
movl $0x1, %edx
leaq 0x40(%rsp), %rdi
movq $-0x1, %rcx
callq 0x84a0
movq 0x48(%rsp), %rcx
addq $-0x2, %rcx
leaq 0x88(%rsp), %rbx
movq %rbx, %rdi
leaq 0x20(%rsp), %rsi
xorl %edx, %edx
callq 0x84a0
leaq 0x198(%rsp), %rdi
movq %rbx, %rsi
callq 0x8540
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x3b053
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x3b06f
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x3b08b
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x1d0(%rsp), %rdi
leaq 0x198(%rsp), %rsi
callq 0x3cf16
testq %rax, %rax
je 0x3bfcc
movq 0x160(%rsp), %rsi
addq $0x20, %rsi
movl $0x1, %edx
leaq 0x20(%rsp), %rdi
movq $-0x1, %rcx
callq 0x84a0
movq 0x160(%rsp), %rsi
addq $0x20, %rsi
movl $0x1, %edx
leaq 0x40(%rsp), %rdi
movq $-0x1, %rcx
callq 0x84a0
movq 0x48(%rsp), %rcx
addq $-0x2, %rcx
leaq 0x88(%rsp), %rdi
leaq 0x20(%rsp), %rsi
xorl %edx, %edx
callq 0x84a0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x3b126
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x3b142
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x1b8(%rsp), %rax
leaq 0x30(%rsp), %rcx
movq %rcx, 0x20(%rsp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x20(%rsp), %rdi
callq 0x2e45c
movq 0x1b8(%rsp), %rax
leaq 0x50(%rsp), %rcx
movq %rcx, 0x40(%rsp)
movq 0x60(%rax), %rsi
movq 0x68(%rax), %rdx
addq %rsi, %rdx
leaq 0x40(%rsp), %rdi
callq 0x2e45c
movq 0x1b8(%rsp), %rax
leaq 0x188(%rsp), %rcx
movq %rcx, 0x178(%rsp)
movq 0x80(%rax), %rsi
movq 0x88(%rax), %rdx
addq %rsi, %rdx
leaq 0x178(%rsp), %rdi
callq 0x2e45c
movq 0x1b8(%rsp), %rax
leaq 0xf8(%rsp), %rcx
movq %rcx, 0xe8(%rsp)
movq 0xc0(%rax), %rsi
movq 0xc8(%rax), %rdx
addq %rsi, %rdx
leaq 0xe8(%rsp), %rdi
callq 0x2e45c
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0xcfdac(%rip), %rdi     # 0x10afb8
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x178(%rsp), %rsi
movq 0x180(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
cmpb $0x1, 0xd06e8(%rip)     # 0x10b9d0
jne 0x3beca
movq 0x90(%rsp), %rdx
cmpq 0x8(%rsp), %rdx
jne 0x3b31f
testq %rdx, %rdx
je 0x3bc27
movq (%rsp), %rsi
movq 0x88(%rsp), %rdi
callq 0x8490
testl %eax, %eax
je 0x3bc27
leaq 0xc8(%rsp), %rdi
leaq 0x95575(%rip), %rsi     # 0xd08a3
callq 0x8160
testl %eax, %eax
jne 0x3b55c
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq 0x110(%rsp), %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x68(%rsp), %rdi
callq 0x86e0
leal 0x1(%rax), %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x68(%rsp), %rdi
callq 0x86e0
movl 0xd0135(%rip), %ecx     # 0x10b4d8
leal (%rax,%rcx), %esi
incl %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movl $0xa, %edx
movq %rbx, %rdi
leaq 0x95484(%rip), %rsi     # 0xd08a5
callq 0x84e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq 0x60(%rsp), %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x68(%rsp), %rdi
callq 0x86e0
leal 0x1(%rax), %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x68(%rsp), %rdi
callq 0x86e0
movl 0xd0026(%rip), %ecx     # 0x10b4d8
leal (%rax,%rcx), %esi
incl %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movl $0xa, %edx
movq %rbx, %rdi
leaq 0x95375(%rip), %rsi     # 0xd08a5
callq 0x84e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
leaq 0xc8(%rsp), %rdi
leaq 0x95345(%rip), %rsi     # 0xd08b0
callq 0x8160
testl %eax, %eax
jne 0x3b799
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq 0x108(%rsp), %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x68(%rsp), %rdi
callq 0x86e0
leal 0x1(%rax), %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x68(%rsp), %rdi
callq 0x86e0
movl 0xcfefc(%rip), %ecx     # 0x10b4dc
leal (%rax,%rcx), %esi
incl %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movl $0x8, %edx
movq %rbx, %rdi
leaq 0x95254(%rip), %rsi     # 0xd08b2
callq 0x84e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq 0x60(%rsp), %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x68(%rsp), %rdi
callq 0x86e0
leal 0x1(%rax), %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x68(%rsp), %rdi
callq 0x86e0
movl 0xcfded(%rip), %ecx     # 0x10b4dc
leal (%rax,%rcx), %esi
incl %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movl $0x8, %edx
movq %rbx, %rdi
leaq 0x95145(%rip), %rsi     # 0xd08b2
callq 0x84e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
leaq 0xe8(%rsp), %rdi
leaq 0x950fb(%rip), %rsi     # 0xd08a3
callq 0x8160
testl %eax, %eax
jne 0x3b9e0
movq 0x40(%rsp), %rdi
callq 0x86e0
movl 0xcfd16(%rip), %r14d    # 0x10b4dc
notl %r14d
addl %eax, %r14d
testl %r14d, %r14d
movl $0x0, %ecx
cmovlel %ecx, %r14d
cmpl $0x2, %eax
jl 0x3b9e0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x108(%rsp), %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq %rbx, %rdi
movl %r14d, %esi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x40(%rsp), %rdi
callq 0x86e0
leal -0x1(%rax), %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movl $0x8, %edx
movq %rbx, %rdi
leaq 0x94ffc(%rip), %rsi     # 0xd08b2
callq 0x84e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x60(%rsp), %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq %rbx, %rdi
movl %r14d, %esi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x40(%rsp), %rdi
callq 0x86e0
leal -0x1(%rax), %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movl $0x8, %edx
movq %rbx, %rdi
leaq 0x94efe(%rip), %rsi     # 0xd08b2
callq 0x84e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
leaq 0xe8(%rsp), %rdi
leaq 0x94ec1(%rip), %rsi     # 0xd08b0
callq 0x8160
testl %eax, %eax
jne 0x3bc27
movq 0x40(%rsp), %rdi
callq 0x86e0
movl 0xcfacf(%rip), %r14d    # 0x10b4dc
notl %r14d
addl %eax, %r14d
testl %r14d, %r14d
movl $0x0, %ecx
cmovlel %ecx, %r14d
cmpl $0x2, %eax
jl 0x3bc27
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x110(%rsp), %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq %rbx, %rdi
movl %r14d, %esi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x40(%rsp), %rdi
callq 0x86e0
leal -0x1(%rax), %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movl $0xa, %edx
movq %rbx, %rdi
leaq 0x94da8(%rip), %rsi     # 0xd08a5
callq 0x84e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x60(%rsp), %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq %rbx, %rdi
movl %r14d, %esi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x40(%rsp), %rdi
callq 0x86e0
leal -0x1(%rax), %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movl $0xa, %edx
movq %rbx, %rdi
leaq 0x94caa(%rip), %rsi     # 0xd08a5
callq 0x84e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x90(%rsp), %rdx
cmpq 0x8(%rsp), %rdx
jne 0x3beca
testq %rdx, %rdx
je 0x3bc58
movq (%rsp), %rsi
movq 0x88(%rsp), %rdi
callq 0x8490
testl %eax, %eax
jne 0x3beca
movq 0x68(%rsp), %rdi
callq 0x86e0
movl %eax, %ebx
incl %ebx
movq 0x40(%rsp), %rdi
callq 0x86e0
movl %eax, %r14d
decl %r14d
cmpl %ebx, %r14d
jle 0x3be58
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x158(%rsp), %rdi
callq 0x84e0
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq %r12, %rdi
movl %ebx, %esi
callq 0x8810
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq %r12, %rdi
movl %r14d, %esi
callq 0x8810
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
movq %r12, %rdi
callq 0x84e0
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq %r12, %rdi
callq 0x84e0
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movl $0x6, %edx
movq %r12, %rdi
leaq 0x94b72(%rip), %rsi     # 0xd08bb
callq 0x84e0
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r12, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x60(%rsp), %rdi
callq 0x84e0
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq %r12, %rdi
movl %ebx, %esi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq %rbx, %rdi
movl %r14d, %esi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movl $0x6, %edx
movq %rbx, %rdi
leaq 0x94a7e(%rip), %rsi     # 0xd08bb
callq 0x84e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
jmp 0x3beb7
movl $0x1c, %edx
movq 0xcf184(%rip), %rdi     # 0x10afe8
leaq 0x94a57(%rip), %rsi     # 0xd08c2
callq 0x84e0
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq 0xcf161(%rip), %rdi     # 0x10afe8
callq 0x84e0
movq %rax, %rbx
movl $0x14, %edx
movq %rax, %rdi
leaq 0x94a41(%rip), %rsi     # 0xd08df
callq 0x84e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq %rsp, %rdi
leaq 0x88(%rsp), %rsi
callq 0x8270
leaq 0x138(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x8270
leaq 0x68(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x8270
leaq 0xc8(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0x8270
leaq 0xa8(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x8270
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x3bf4a
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x3bf6f
movq 0x188(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x3bf8b
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x3bfa7
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x3bfcc
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x3bff1
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x160(%rsp), %rdi
callq 0x3123c
leaq 0x1b8(%rsp), %rdi
callq 0x3123c
jmp 0x3ae53
movq %r15, %rdi
callq 0x80f0
cmpb $0x1, 0xcf9b1(%rip)     # 0x10b9d0
jne 0x3c4ef
leaq 0x94877(%rip), %rsi     # 0xd08a3
leaq 0xc8(%rsp), %rdi
callq 0x8160
testl %eax, %eax
jne 0x3c28a
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq 0x110(%rsp), %rdi
callq 0x84e0
movq %rax, %rbx
leaq 0x95c16(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
movq 0x68(%rsp), %rdi
callq 0x86e0
leal 0x1(%rax), %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
leaq 0x95bea(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
movq 0x68(%rsp), %rdi
callq 0x86e0
movl 0xcf427(%rip), %ecx     # 0x10b4d8
leal (%rax,%rcx), %esi
incl %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
leaq 0x95bb6(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
leaq 0x95b87(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
leaq 0x95b5f(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
leaq 0x94772(%rip), %rsi     # 0xd08a5
movl $0xa, %edx
movq %rbx, %rdi
callq 0x84e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq 0x60(%rsp), %rdi
callq 0x84e0
movq %rax, %rbx
leaq 0x95af3(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
movq 0x68(%rsp), %rdi
callq 0x86e0
leal 0x1(%rax), %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
leaq 0x95ac7(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
movq 0x68(%rsp), %rdi
callq 0x86e0
movl 0xcf304(%rip), %ecx     # 0x10b4d8
leal (%rax,%rcx), %esi
incl %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
leaq 0x95a93(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
leaq 0x95a64(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
leaq 0x95a3c(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
leaq 0x9464f(%rip), %rsi     # 0xd08a5
movl $0xa, %edx
movq %rbx, %rdi
callq 0x84e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
leaq 0x9461f(%rip), %rsi     # 0xd08b0
leaq 0xc8(%rsp), %rdi
callq 0x8160
testl %eax, %eax
jne 0x3c4ef
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq 0x108(%rsp), %rdi
callq 0x84e0
movq %rax, %rbx
leaq 0x959b1(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
movq 0x68(%rsp), %rdi
callq 0x86e0
leal 0x1(%rax), %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
leaq 0x95985(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
movq 0x68(%rsp), %rdi
callq 0x86e0
movl 0xcf1c6(%rip), %ecx     # 0x10b4dc
leal (%rax,%rcx), %esi
incl %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
leaq 0x95951(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
leaq 0x95922(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
leaq 0x958fa(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
leaq 0x9451a(%rip), %rsi     # 0xd08b2
movl $0x8, %edx
movq %rbx, %rdi
callq 0x84e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq 0x60(%rsp), %rdi
callq 0x84e0
movq %rax, %rbx
leaq 0x9588e(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
movq 0x68(%rsp), %rdi
callq 0x86e0
leal 0x1(%rax), %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
leaq 0x95862(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
movq 0x68(%rsp), %rdi
callq 0x86e0
movl 0xcf0a3(%rip), %ecx     # 0x10b4dc
leal (%rax,%rcx), %esi
incl %esi
movq %rbx, %rdi
callq 0x8810
movq %rax, %rbx
leaq 0x9582e(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
leaq 0x957ff(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
leaq 0x957d7(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
leaq 0x943f7(%rip), %rsi     # 0xd08b2
movl $0x8, %edx
movq %rbx, %rdi
callq 0x84e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0xceaf2(%rip), %rbx     # 0x10afe8
leaq 0x91b7a(%rip), %rsi     # 0xce077
movl $0x4, %edx
movq %rbx, %rdi
callq 0x84e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0xceac0(%rip), %rdi     # 0x10afe8
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
leaq 0x128(%rsp), %rbx
leaq 0x10(%rsp), %r14
leaq 0xb8(%rsp), %r15
leaq 0x148(%rsp), %r12
je 0x3c577
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x3c593
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x138(%rsp), %rdi
cmpq %r12, %rdi
je 0x3c5b0
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xa8(%rsp), %rdi
cmpq %r15, %rdi
je 0x3c5cd
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x8480
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x3c5e3
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x118(%rsp), %rdi
cmpq %rbx, %rdi
je 0x3c600
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x1d0(%rsp), %rdi
callq 0x288b4
xorl %eax, %eax
addq $0x208, %rsp            # imm = 0x208
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3c623
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x3c641
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0x3c641
movq %rax, %rbx
movl $0x200, %esi            # imm = 0x200
movq 0x110(%rsp), %rdi
jmp 0x3c9fd
jmp 0x3c655
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x3c673
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0x3c673
movq %rax, %rbx
movl $0x200, %esi            # imm = 0x200
movq 0x108(%rsp), %rdi
jmp 0x3c9fd
jmp 0x3c687
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x3c6a5
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0x3c6a5
movq %rax, %rbx
movl $0x200, %esi            # imm = 0x200
movq 0x158(%rsp), %rdi
jmp 0x3c9fd
jmp 0x3c6b9
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x3c6d7
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0x3c6d7
movq %rax, %rbx
movl $0x200, %esi            # imm = 0x200
movq 0x60(%rsp), %rdi
jmp 0x3c9fd
movq %rax, %rbx
leaq 0x78(%rsp), %r15
jmp 0x3c99b
movq %rax, %rbx
jmp 0x3c9b2
movq %rax, %rbx
jmp 0x3c9cf
movq %rax, %rbx
jmp 0x3c9ec
jmp 0x3c863
movq %rax, %rbx
movl $0x208, %esi            # imm = 0x208
movq %r15, %rdi
jmp 0x3c9fd
jmp 0x3c863
movq %rax, %rbx
movl $0x208, %esi            # imm = 0x208
movq %r14, %rdi
callq 0x8480
jmp 0x3ca2c
jmp 0x3c815
jmp 0x3c776
jmp 0x3c771
jmp 0x3c863
jmp 0x3c815
jmp 0x3c776
jmp 0x3c771
movq %rax, %rbx
jmp 0x3c893
movq %rax, %rbx
jmp 0x3c8b8
movq %rax, %rbx
jmp 0x3c8d4
movq %rax, %rbx
jmp 0x3c8f0
movq %rax, %rbx
jmp 0x3c795
movq %rax, %rbx
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x3c795
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x3c915
movq 0x30(%rsp), %rsi
jmp 0x3c90d
jmp 0x3c815
jmp 0x3c863
movq %rax, %rbx
jmp 0x3ca1f
movq %rax, %rbx
leaq 0x128(%rsp), %r13
leaq 0x10(%rsp), %r14
leaq 0xb8(%rsp), %r12
leaq 0x148(%rsp), %rbp
leaq 0x78(%rsp), %r15
jmp 0x3c969
movq %rax, %rbx
leaq 0x128(%rsp), %r13
leaq 0x10(%rsp), %r14
leaq 0xb8(%rsp), %r12
leaq 0x148(%rsp), %rbp
leaq 0x78(%rsp), %r15
jmp 0x3c95c
movq %rax, %rbx
jmp 0x3c915
jmp 0x3c86b
jmp 0x3c86b
jmp 0x3c86b
jmp 0x3c839
jmp 0x3c839
movq %rax, %rbx
movq %rsp, %rdi
callq 0x3123c
jmp 0x3ca02
jmp 0x3c863
movq %rax, %rbx
leaq 0x128(%rsp), %r13
leaq 0x10(%rsp), %r14
leaq 0xb8(%rsp), %r12
leaq 0x148(%rsp), %rbp
leaq 0x78(%rsp), %r15
jmp 0x3c976
movq %rax, %rbx
jmp 0x3ca02
movq %rax, %rbx
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x3c893
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x3c8b8
movq 0x188(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x3c8d4
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x3c8f0
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x3c915
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x128(%rsp), %r13
leaq 0x10(%rsp), %r14
leaq 0xb8(%rsp), %r12
leaq 0x148(%rsp), %rbp
leaq 0x78(%rsp), %r15
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x3c95c
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x160(%rsp), %rdi
callq 0x3123c
leaq 0x1b8(%rsp), %rdi
callq 0x3123c
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x3c99b
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x68(%rsp), %rdi
cmpq %r15, %rdi
je 0x3c9b2
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x138(%rsp), %rdi
cmpq %rbp, %rdi
je 0x3c9cf
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x3c9ec
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x8480
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x3ca02
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x118(%rsp), %rdi
cmpq %r13, %rdi
je 0x3ca1f
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x1d0(%rsp), %rdi
callq 0x288b4
movq %rbx, %rdi
callq 0x8840