// File: /workspace/github_cpp_makefile_star2_O2/readmapping[P]alfalfa/src/mapper.cpp
// Function: alignment_t::constructCIGAR(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned char const*, int, int, signed char const*, int, int, int, int)
void alignment_t::constructCIGAR(const string& S, const uint8_t * readP, 
        int Plen, int fixedBand, const int8_t *mat, int match, int openGap, int extendGap, int print){
    //use chain to recreate succesfull alignment, but now use other method that recovers alignment
    stringstream sNM;
    editDist = 0;
    int costEx = 0; //performanceCounter
    //start with beginGap:
    if(qB){
        if(print >= 4) cerr << "clipping before start alignment: " << qB << endl;
        sNM << qB << "S";
    }
    assert(chain.size()>0);
    int qLen = qE - qB + 1;
    int refLen = (int)(refE - refB + 1L);
    int band;
    uint8_t *target;
    target = (uint8_t *)malloc(refLen);
    for (int i = 0; i < refLen; ++i) // convert to the nt4 encoding
        target[i] = Utils::ORDVALUE[(size_t)S[refB+i]];
    //before first element of chain
    if(chain[0].query > qB){
        qLen = chain[0].query - qB;
        refLen = (int)(chain[0].ref - refB);
        int n_cigar;
        uint32_t * cigar;
        band = bandSizeEstimate(fixedBand, qLen, refLen, match, openGap, extendGap, alignmentScore);
        costEx += refLen*band;
        if(print >=7 ) cerr << "dp called with dimension " << (qLen) << "x" << (refLen) << " and band " << band << endl;
        ksw_global(qLen, readP+qB, refLen, target, 5, mat, -1*openGap, -1*extendGap, band, &n_cigar, &cigar);
        editDist += recoverCIGAR4(n_cigar, cigar, readP+qB, target, sNM);
        if(print >=4 ) cerr << "current cigar " << sNM.str() << endl;
        free(cigar);        
    }
    sNM << chain[0].len << '=';
    //traverse chain
    for(size_t i = 1; i < chain.size(); i++){
        int qDist = chain[i].query - (chain[i-1].query + chain[i-1].len - 1);
        int refDist = (int) (chain[i].ref - (chain[i-1].ref + chain[i-1].len - 1L));
        if (qDist < 0 || refDist < 0) {
            if (qDist >= refDist)
                qDist -= refDist; //qDist insertions
            else
                refDist -= qDist;
        }
        if (qDist <= 0) {//minRefDist deletions //1+|qDist| matches lost of next mem
            sNM << refDist << 'D' << (chain[i].len - 1 + qDist) << '=';
            editDist += refDist;
        } else if (refDist <= 0) {
            sNM << qDist << 'I' << (chain[i].len - 1 + refDist) << '=';
            editDist += qDist;
        } else if (qDist == 1) {
            sNM << (refDist-1) << 'D' << chain[i].len << '=';
            editDist += refDist-1;
        } else if (refDist == 1) {
            sNM << (qDist-1) << 'I' << chain[i].len << '=';
            editDist += qDist-1;
        } else if (refDist == 2 && qDist==2) {
            sNM << 1 << 'X' << chain[i].len << '=';
            editDist += 1;
        } else {//both distances are positive and not equal to (1,1), otherwise seeds would not be maximal!
            qLen = chain[i].query - 1 - (chain[i-1].query + chain[i-1].len) + 1;
            refLen = (int)(chain[i].ref - 1 - (chain[i-1].ref + chain[i-1].len) + 1);
            int n_cigar;
            uint32_t * cigar;
            band = bandSizeEstimate(fixedBand, qLen, refLen, match, openGap, extendGap, alignmentScore);
            costEx += refLen*band;
            if(print >= 7) cerr << "dp called with dimension " << (qLen) << "x" << (refLen) << " and band " << band << endl;
            ksw_global(qLen, readP+chain[i-1].query + chain[i-1].len, refLen, target+(chain[i-1].ref + chain[i-1].len-refB), 5, mat, -1*openGap, -1*extendGap, band, &n_cigar, &cigar);
            editDist += recoverCIGAR4(n_cigar, cigar, readP+chain[i-1].query + chain[i-1].len, target + (chain[i-1].ref + chain[i-1].len-refB), sNM);
            sNM << chain[i].len << '=';
            free(cigar);
        }
        if(print>= 4) cerr << "current cigar " << sNM.str() << endl;
    }
    //after last element of chain
    int lastIndex = chain.size()-1;
    if(chain[lastIndex].query+chain[lastIndex].len-1 < qE){
        qLen = qE - (chain[lastIndex].query + chain[lastIndex].len) + 1;
        refLen = (int)(refE - (chain[lastIndex].ref + chain[lastIndex].len) + 1);
        int n_cigar;
        uint32_t * cigar;
        band = bandSizeEstimate(fixedBand, qLen, refLen, match, openGap, extendGap, alignmentScore);
        if(print>=7) cerr << "dp called with dimension " << (qLen) << "x" << (refLen) << " and band " << band << endl;
        costEx += refLen*band;
        ksw_global(qLen, readP+chain[lastIndex].query + chain[lastIndex].len, refLen, target+(chain[lastIndex].ref + chain[lastIndex].len-refB), 5, mat, -1*openGap, -1*extendGap, band, &n_cigar, &cigar);
        editDist += recoverCIGAR4(n_cigar, cigar, readP+chain[lastIndex].query + chain[lastIndex].len, target+(chain[lastIndex].ref + chain[lastIndex].len-refB), sNM);
        if(print>=4) cerr << "current cigar " << sNM.str() << endl;
        free(cigar);        
    }    
    //end with possible endGap
    if(Plen-1-qE){
        if(print>=4) cerr << "clipping after end alignment: " << (Plen-1-qE) << endl;
        sNM << (Plen-1-qE) << "S";
    }
    //final results:
    free(target);    
    NMtag = sNM.str();
    cigar = recoverCIGAR3from4(NMtag);
    if(print>=2) cerr << "#COSTPOSTPROC " << costEx << endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x238, %rsp            # imm = 0x238
movq %r9, 0x70(%rsp)
movl %r8d, 0x30(%rsp)
movl %ecx, 0x4c(%rsp)
movq %rdx, 0x40(%rsp)
movq %rsi, %r14
movq %rdi, %r13
leaq 0xb0(%rsp), %rdi
callq 0x71e0
andl $0x0, 0x6c(%r13)
movl 0x10(%r13), %esi
testl %esi, %esi
je 0x196b1
cmpl $0x4, 0x288(%rsp)
jl 0x19695
movq 0x30977(%rip), %rdi     # 0x49fe8
leaq 0x1d67e(%rip), %rsi     # 0x36cf6
callq 0x72b0
movl 0x10(%r13), %esi
movq %rax, %rdi
callq 0x75c0
movq %rax, %rdi
callq 0x7160
movl 0x10(%r13), %esi
leaq 0xc0(%rsp), %rdi
callq 0x75c0
leaq 0x1deb8(%rip), %rsi     # 0x37561
movq %rax, %rdi
callq 0x72b0
movl 0x8(%r13), %eax
movq (%r13), %rbx
subl %ebx, %eax
incl %eax
movslq %eax, %r15
movq %r15, %rdi
callq 0x7430
movq %rax, 0x20(%rsp)
movq (%r14), %rax
addq %rbx, %rax
xorl %ecx, %ecx
testl %r15d, %r15d
cmovlel %ecx, %r15d
leaq 0x1d50d(%rip), %rdx     # 0x36bf0
movq 0x20(%rsp), %rdi
cmpq %rcx, %r15
je 0x196ff
movsbq (%rax,%rcx), %rsi
movb (%rsi,%rdx), %sil
movb %sil, (%rdi,%rcx)
incq %rcx
jmp 0x196e8
movq 0xe8(%r13), %rax
movl 0x8(%rax), %r14d
movl 0x10(%r13), %r15d
movq $0x0, 0x38(%rsp)
subl %r15d, %r14d
movq %r13, 0x8(%rsp)
jle 0x198b9
movl (%rax), %ebp
subl %ebx, %ebp
movl 0x70(%r13), %eax
subq $0x8, %rsp
movl 0x38(%rsp), %edi
movl %r14d, %esi
movl %ebp, %edx
movl 0x278(%rsp), %ecx
movl 0x280(%rsp), %r8d
movl 0x288(%rsp), %r9d
pushq %rax
callq 0x18fac
popq %rcx
popq %rdx
movl %eax, %r12d
cmpl $0x7, 0x288(%rsp)
jl 0x197c8
movq 0x3087b(%rip), %rdi     # 0x49fe8
leaq 0x1d5a4(%rip), %rsi     # 0x36d18
callq 0x72b0
movq %rax, %rdi
movl %r14d, %esi
callq 0x75c0
leaq 0x19730(%rip), %rsi     # 0x32ebb
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
movl %ebp, %esi
callq 0x75c0
leaq 0x1d58e(%rip), %rsi     # 0x36d32
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
movl %r12d, %esi
callq 0x75c0
movq %rax, %rdi
callq 0x7160
movq 0x8(%rsp), %rax
movl 0x10(%rax), %r15d
movslq %r15d, %rsi
addq 0x40(%rsp), %rsi
movl 0x278(%rsp), %eax
negl %eax
movl 0x280(%rsp), %ecx
movl %ecx, %r10d
negl %r10d
subq $0x8, %rsp
leaq 0x30(%rsp), %r11
leaq 0x3c(%rsp), %rbx
pushq $0x5
popq %r8
movl %r14d, %edi
movl %ebp, %edx
movq 0x28(%rsp), %rcx
movq 0x78(%rsp), %r9
pushq %r11
pushq %rbx
pushq %r12
pushq %r10
pushq %rax
callq 0x311f5
addq $0x30, %rsp
movl 0x34(%rsp), %edi
movq 0x28(%rsp), %rsi
movq 0x8(%rsp), %rax
movslq 0x10(%rax), %rdx
addq 0x40(%rsp), %rdx
leaq 0xb0(%rsp), %r8
movq 0x20(%rsp), %rcx
callq 0x1913f
movq 0x8(%rsp), %rcx
addl %eax, 0x6c(%rcx)
cmpl $0x4, 0x288(%rsp)
jl 0x1989a
movq 0x3078e(%rip), %rdi     # 0x49fe8
leaq 0x1d4dc(%rip), %rsi     # 0x36d3d
callq 0x72b0
movq %rax, %r14
leaq 0xc8(%rsp), %rsi
leaq 0x50(%rsp), %rdi
callq 0x7540
leaq 0x50(%rsp), %rsi
movq %r14, %rdi
callq 0x7280
movq %rax, %rdi
callq 0x7160
leaq 0x50(%rsp), %rdi
callq 0x76a8
imull %ebp, %r12d
movq %r12, 0x38(%rsp)
movq 0x28(%rsp), %rdi
callq 0x7360
movq 0x8(%rsp), %r13
movq 0xe8(%r13), %rax
leaq 0xc0(%rsp), %rdi
movl 0xc(%rax), %esi
callq 0x75c0
pushq $0x3d
popq %rsi
movq %rax, %rdi
callq 0x7330
movl 0x278(%rsp), %eax
negl %eax
movq %rax, 0x88(%rsp)
movl 0x280(%rsp), %eax
negl %eax
movq %rax, 0x80(%rsp)
pushq $0x1
popq %rbx
xorl %ebp, %ebp
movq 0xe8(%r13), %rax
movq 0xf0(%r13), %rcx
subq %rax, %rcx
movq %rcx, %rdx
sarq $0x4, %rdx
cmpq %rdx, %rbx
jae 0x19d32
movq %rbx, 0x18(%rsp)
movl 0x18(%rax,%rbp), %r13d
movl 0x8(%rax,%rbp), %ebx
movl 0xc(%rax,%rbp), %r14d
subl %r14d, %r13d
subl %ebx, %r13d
movq 0x10(%rax,%rbp), %rdx
movq %rbp, 0x10(%rsp)
movq (%rax,%rbp), %rbp
movq %r14, %rax
addq %rbp, %rax
movl %edx, %r12d
subl %eax, %r12d
incl %r12d
movl %r13d, %ecx
incl %ecx
js 0x1995e
testl %r12d, %r12d
jns 0x19969
movl %ecx, %r15d
subl %r12d, %r15d
jge 0x1996c
subl %ecx, %r12d
movl %ecx, %r15d
testl %r15d, %r15d
jle 0x199d1
testl %r12d, %r12d
jle 0x19a28
cmpl $0x1, %r15d
jne 0x19a78
decl %r12d
leaq 0xc0(%rsp), %rdi
movl %r12d, %esi
callq 0x75c0
movq 0x8(%rsp), %r13
movq 0x18(%rsp), %rbx
movq 0x10(%rsp), %rbp
movq %rax, %rdi
pushq $0x44
popq %rsi
callq 0x7330
movq 0xe8(%r13), %rcx
movl 0x1c(%rcx,%rbp), %esi
movq %rax, %rdi
callq 0x75c0
movq %rax, %rdi
pushq $0x3d
popq %rsi
callq 0x7330
jmp 0x19a1f
leaq 0xc0(%rsp), %rdi
movl %r12d, %esi
callq 0x75c0
movq 0x8(%rsp), %r13
movq 0x18(%rsp), %rbx
movq 0x10(%rsp), %rbp
movq %rax, %rdi
pushq $0x44
popq %rsi
callq 0x7330
movq 0xe8(%r13), %rcx
movl 0x1c(%rcx,%rbp), %ecx
leal (%r15,%rcx), %esi
decl %esi
movq %rax, %rdi
callq 0x75c0
movq %rax, %rdi
pushq $0x3d
popq %rsi
callq 0x7330
addl %r12d, 0x6c(%r13)
jmp 0x19ad1
leaq 0xc0(%rsp), %rdi
movl %r15d, %esi
callq 0x75c0
movq 0x8(%rsp), %r13
movq 0x18(%rsp), %rbx
movq 0x10(%rsp), %rbp
movq %rax, %rdi
pushq $0x49
popq %rsi
callq 0x7330
movq 0xe8(%r13), %rcx
movl 0x1c(%rcx,%rbp), %ecx
leal (%r12,%rcx), %esi
decl %esi
movq %rax, %rdi
callq 0x75c0
movq %rax, %rdi
pushq $0x3d
popq %rsi
callq 0x7330
jmp 0x19acd
cmpl $0x1, %r12d
jne 0x19b2f
decl %r15d
leaq 0xc0(%rsp), %rdi
movl %r15d, %esi
callq 0x75c0
movq 0x8(%rsp), %r13
movq 0x18(%rsp), %rbx
movq 0x10(%rsp), %rbp
movq %rax, %rdi
pushq $0x49
popq %rsi
callq 0x7330
movq 0xe8(%r13), %rcx
movl 0x1c(%rcx,%rbp), %esi
movq %rax, %rdi
callq 0x75c0
movq %rax, %rdi
pushq $0x3d
popq %rsi
callq 0x7330
addl %r15d, 0x6c(%r13)
cmpl $0x4, 0x288(%rsp)
jl 0x19b23
movq 0x30506(%rip), %rdi     # 0x49fe8
leaq 0x1d254(%rip), %rsi     # 0x36d3d
callq 0x72b0
movq %rax, %r14
leaq 0x50(%rsp), %r15
movq %r15, %rdi
leaq 0xc8(%rsp), %rsi
callq 0x7540
movq %r14, %rdi
movq %r15, %rsi
callq 0x7280
movq %rax, %rdi
callq 0x7160
leaq 0x50(%rsp), %rdi
callq 0x76a8
incq %rbx
addq $0x10, %rbp
jmp 0x198fb
cmpl $0x2, %r15d
jne 0x19b8c
cmpl $0x2, %r12d
jne 0x19b8c
leaq 0xc0(%rsp), %rdi
pushq $0x1
popq %rsi
callq 0x75c0
movq 0x8(%rsp), %r13
movq 0x18(%rsp), %rbx
movq 0x10(%rsp), %rbp
movq %rax, %rdi
pushq $0x58
popq %rsi
callq 0x7330
movq 0xe8(%r13), %rcx
movl 0x1c(%rcx,%rbp), %esi
movq %rax, %rdi
callq 0x75c0
movq %rax, %rdi
pushq $0x3d
popq %rsi
callq 0x7330
incl 0x6c(%r13)
jmp 0x19ad1
subl %eax, %edx
movq 0x8(%rsp), %r15
movl 0x70(%r15), %eax
subq $0x8, %rsp
movl 0x38(%rsp), %edi
movl %r13d, %esi
movq %rdx, 0x80(%rsp)
movl 0x278(%rsp), %ecx
movl 0x280(%rsp), %r8d
movl 0x288(%rsp), %r9d
pushq %rax
callq 0x18fac
popq %rcx
popq %rdx
movl %eax, %r12d
cmpl $0x7, 0x288(%rsp)
jl 0x19c4b
movq 0x3040b(%rip), %rdi     # 0x49fe8
leaq 0x1d134(%rip), %rsi     # 0x36d18
callq 0x72b0
movq 0x10(%rsp), %rbp
movq %rax, %rdi
movl %r13d, %esi
callq 0x75c0
movq %rax, %rdi
leaq 0x192b8(%rip), %rsi     # 0x32ebb
callq 0x72b0
movq %rax, %rdi
movq 0x78(%rsp), %rsi
callq 0x75c0
movq %rax, %rdi
leaq 0x1d113(%rip), %rsi     # 0x36d32
callq 0x72b0
movq %rax, %rdi
movl %r12d, %esi
callq 0x75c0
movq %rax, %rdi
callq 0x7160
movq 0xe8(%r15), %rax
movl 0x8(%rax,%rbp), %ebx
movl 0xc(%rax,%rbp), %r14d
movq (%rax,%rbp), %rbp
movslq %ebx, %rsi
addq 0x40(%rsp), %rsi
movslq %r14d, %rax
addq %rax, %rsi
addq %rax, %rbp
subq (%r15), %rbp
addq 0x20(%rsp), %rbp
subq $0x8, %rsp
movl %r13d, %edi
movq 0x80(%rsp), %rdx
movq %rbp, %rcx
pushq $0x5
popq %r8
movq 0x78(%rsp), %r9
leaq 0x58(%rsp), %rax
pushq %rax
leaq 0x38(%rsp), %rax
pushq %rax
pushq %r12
pushq 0xa0(%rsp)
pushq 0xb0(%rsp)
callq 0x311f5
addq $0x30, %rsp
movq 0x10(%rsp), %rbp
movq %r15, %r13
movl 0x28(%rsp), %edi
movq 0xe8(%r15), %rax
movslq 0x8(%rax,%rbp), %rdx
addq 0x40(%rsp), %rdx
movslq 0xc(%rax,%rbp), %rcx
addq %rcx, %rdx
addq (%rax,%rbp), %rcx
movq 0x50(%rsp), %rsi
subq (%r15), %rcx
addq 0x20(%rsp), %rcx
leaq 0xb0(%rsp), %r8
callq 0x1913f
addl %eax, 0x6c(%r13)
movq 0xe8(%r13), %rax
movl 0x1c(%rax,%rbp), %esi
leaq 0xc0(%rsp), %rdi
callq 0x75c0
movq %rax, %rdi
pushq $0x3d
popq %rsi
callq 0x7330
imull 0x78(%rsp), %r12d
addl 0x38(%rsp), %r12d
movq 0x50(%rsp), %rdi
callq 0x7360
movq %r12, 0x38(%rsp)
movq 0x18(%rsp), %rbx
jmp 0x19ad1
shlq $0x1c, %rcx
movabsq $-0x100000000, %rbx     # imm = 0xFFFFFFFF00000000
addq %rcx, %rbx
movq %rbx, %rdx
sarq $0x1c, %rdx
movl 0x8(%rax,%rdx), %ebp
movl 0xc(%rax,%rdx), %r13d
leal (%r13,%rbp), %esi
movq 0x8(%rsp), %r14
movl 0x14(%r14), %ecx
movl %ecx, %r15d
subl %esi, %r15d
jge 0x19d7a
movq %r14, %r12
movl 0x4c(%rsp), %ebx
movq 0x38(%rsp), %r13
jmp 0x19f73
sarq $0x20, %rbx
addq %rdx, %rax
incl %r15d
movl 0x8(%r14), %ecx
movq (%rax), %r12
leal (%r12,%r13), %eax
negl %eax
leal (%rcx,%rax), %edx
incl %edx
movl 0x70(%r14), %eax
subq $0x8, %rsp
movl 0x38(%rsp), %edi
movl %r15d, %esi
movl %edx, 0x18(%rsp)
movl 0x278(%rsp), %ecx
movl 0x280(%rsp), %r8d
movl 0x288(%rsp), %r9d
pushq %rax
callq 0x18fac
popq %rcx
popq %rdx
movq %rax, 0x18(%rsp)
cmpl $0x7, 0x288(%rsp)
jl 0x19e54
movq 0x3020a(%rip), %rdi     # 0x49fe8
leaq 0x1cf33(%rip), %rsi     # 0x36d18
callq 0x72b0
movl 0x10(%rsp), %ebp
movq 0x18(%rsp), %r12
movq %rax, %rdi
movl %r15d, %esi
callq 0x75c0
leaq 0x190b6(%rip), %rsi     # 0x32ebb
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
movl %ebp, %esi
callq 0x75c0
leaq 0x1cf14(%rip), %rsi     # 0x36d32
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
movl %r12d, %esi
callq 0x75c0
movq %rax, %rdi
callq 0x7160
movq 0xe8(%r14), %rax
movq %rbx, %rcx
shlq $0x4, %rcx
movl 0x8(%rax,%rcx), %ebp
movl 0xc(%rax,%rcx), %r13d
movq (%rax,%rcx), %r12
movslq %ebp, %rsi
addq 0x40(%rsp), %rsi
movslq %r13d, %rax
addq %rax, %rsi
addq %rax, %r12
subq (%r14), %r12
addq 0x20(%rsp), %r12
subq $0x8, %rsp
leaq 0x3c(%rsp), %rax
pushq $0x5
popq %r8
movl %r15d, %edi
movl 0x18(%rsp), %ebp
movl %ebp, %edx
movq %r12, %rcx
movq 0x78(%rsp), %r9
leaq 0x30(%rsp), %r10
pushq %r10
pushq %rax
movq 0x30(%rsp), %r13
pushq %r13
pushq 0xa0(%rsp)
pushq 0xb0(%rsp)
callq 0x311f5
addq $0x30, %rsp
movq %r14, %r12
movl 0x34(%rsp), %edi
movq 0x28(%rsp), %rsi
movq 0xe8(%r14), %rax
shlq $0x4, %rbx
movslq 0x8(%rax,%rbx), %rcx
movq 0x40(%rsp), %rdx
addq %rcx, %rdx
movslq 0xc(%rax,%rbx), %r8
addq %r8, %rdx
addq (%rax,%rbx), %r8
subq (%r14), %r8
movq 0x20(%rsp), %rcx
addq %r8, %rcx
leaq 0xb0(%rsp), %r8
callq 0x1913f
addl %eax, 0x6c(%r12)
cmpl $0x4, 0x288(%rsp)
movq 0x38(%rsp), %rbx
jl 0x19f59
movq 0x300d4(%rip), %rdi     # 0x49fe8
leaq 0x1ce22(%rip), %rsi     # 0x36d3d
callq 0x72b0
movq %rax, %r15
leaq 0x50(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x7540
movq 0x38(%rsp), %rbx
leaq 0x50(%rsp), %rsi
movq %r15, %rdi
callq 0x7280
movq %rax, %rdi
callq 0x7160
leaq 0x50(%rsp), %rdi
callq 0x76a8
imull %ebp, %r13d
addl %ebx, %r13d
movq 0x28(%rsp), %rdi
callq 0x7360
movl 0x14(%r12), %ecx
movl 0x4c(%rsp), %ebx
decl %ebx
cmpl %ecx, %ebx
je 0x19fd2
cmpl $0x4, 0x288(%rsp)
jl 0x19fb2
movq 0x3005e(%rip), %rdi     # 0x49fe8
leaq 0x1cdbb(%rip), %rsi     # 0x36d4c
callq 0x72b0
movl %ebx, %esi
subl 0x14(%r12), %esi
movq %rax, %rdi
callq 0x75c0
movq %rax, %rdi
callq 0x7160
movl 0x14(%r12), %ecx
subl %ecx, %ebx
leaq 0xc0(%rsp), %rdi
movl %ebx, %esi
callq 0x75c0
leaq 0x1d597(%rip), %rsi     # 0x37561
movq %rax, %rdi
callq 0x72b0
movq 0x20(%rsp), %rdi
callq 0x7360
leaq 0x50(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x7540
leaq 0x78(%r12), %r14
leaq 0x50(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x73a0
movq %r15, %rdi
callq 0x76a8
leaq 0x90(%rsp), %rdi
movq %r14, %rsi
callq 0x7440
leaq 0x50(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x19006
addq $0x20, %r12
leaq 0x50(%rsp), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x73a0
movq %r14, %rdi
callq 0x76a8
leaq 0x90(%rsp), %rdi
callq 0x76a8
cmpl $0x2, 0x288(%rsp)
jl 0x1a086
movq 0x2ff81(%rip), %rdi     # 0x49fe8
leaq 0x1ccfd(%rip), %rsi     # 0x36d6b
callq 0x72b0
movq %rax, %rdi
movl %r13d, %esi
callq 0x75c0
movq %rax, %rdi
callq 0x7160
leaq 0xb0(%rsp), %rdi
callq 0x7210
addq $0x238, %rsp            # imm = 0x238
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1a0db
jmp 0x1a0db
jmp 0x1a0cc
jmp 0x1a0cc
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
jmp 0x1a0d4
jmp 0x1a0db
jmp 0x1a0db
jmp 0x1a0db
jmp 0x1a0db
jmp 0x1a0db
jmp 0x1a0db
jmp 0x1a0db
jmp 0x1a0db
jmp 0x1a0db
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x76a8
jmp 0x1a0de
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x7210
movq %rbx, %rdi
callq 0x75e0
nop