// File: /workspace/github_cpp_makefile_star2_O1/readmapping[P]alfalfa/src/mapper.cpp
// Function: read_t::postprocess(sparseSA const&, align_opt const&, bool)
void read_t::postprocess(const sparseSA& sa, const align_opt & alnOptions, bool paired){
    //mapq independent from match/mismatch
    if(alnOptions.print >= 3) cerr << "postprocessing read ... " << endl;
    if(!alignments.empty()){
        //FIRST SORT
        if(!paired)
            sort(alignments.begin(),alignments.end(), compAlignments);
        else
            sort(alignments.begin(),alignments.end(), compPairedAlignments);
        int chainCount = 0;
        int maxDP = min((int)alignments.size(),alnOptions.alignmentCount);
        if(alnOptions.fullDP)
            maxDP = min((int)alignments.size(),max(4,alnOptions.alignmentCount));//TODO set parameter
        for(int j = 0; j < maxDP; j++){
            alignments[j]->setLocalPos(sa);
            if(!alignments[j]->chain.empty() && !alnOptions.fullDP){
                chainCount++;
                alignments[j]->constructCIGAR(sa.S, alignments[j]->flag.test(4) ? rcReadP : readP, 
                    sequence.length(), alnOptions.fixedBandSize, alnOptions.mat, 
                    alnOptions.match, alnOptions.openGap, alnOptions.extendGap, alnOptions.print);
            }
            else{
                //full dp version
                fullDP(sa.S, alignments[j]->flag.test(4) ? rcReadP : readP, sequence.size(), 
             alignments[j], alnOptions.fixedBandSize, alnOptions.mat, 
             alnOptions.match, alnOptions.openGap, alnOptions.extendGap, alnOptions.print);
            }
            if(alnOptions.print >= 3) cerr << "edit dist: " << alignments[j]->editDist << " and cigar " << alignments[j]->cigar << endl;
        }
        if(alnOptions.print >= 2){ 
            cerr << "#POSTPROCCHAIN " << chainCount << endl;
            cerr << "#POSTPROCFULL " << (min((int)alignments.size(),alnOptions.alignmentCount)-chainCount) << endl;
        }
        //SECOND SORT
        if(!paired)
            sort(alignments.begin(),alignments.end(), compAlignments);
        else
            sort(alignments.begin(),alignments.end(), compPairedAlignments);
        int maxScore = alignments[0]->alignmentScore + alignments[0]->mate.alignmentScore;
        int secBestScore = alignments.size() > 1 ? alignments[1]->alignmentScore + alignments[1]->mate.alignmentScore : alnOptions.mismatch*sequence.length();
        int mapq = (secBestScore == (int)(alnOptions.mismatch*sequence.length())) ? MAX_MAPQ :
            (int)(250*((double)(maxScore-secBestScore) / maxScore) + 0.499);
        mapq = maxScore == secBestScore ? 0 : mapq;
        mapq = min(max(0,mapq),MAX_MAPQ);
        if(alnOptions.print >= 2){ 
            cerr << "#MAPQ " << mapq << endl;
            cerr << "#POSTPROC " << min((int)alignments.size(),alnOptions.alignmentCount) << endl;
        }
        for(int j = 0; j < min((int)alignments.size(),alnOptions.alignmentCount); j++){
            if(alnOptions.print >= 3) cerr << "constructing cigar for alignment on " << alignments[j]->rname << " and pos " << alignments[j]->pos << endl;
            if(alignments[j]->alignmentScore + alignments[j]->mate.alignmentScore == maxScore)
                alignments[j]->mapq = mapq;
            else
                alignments[j]->flag.set(8,true);
        }
        
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movl %ecx, %ebp
movq %rsi, 0x8(%rsp)
movq %rdi, %rbx
movq %rdx, (%rsp)
cmpl $0x3, 0x78(%rdx)
jl 0x208fc
movq 0x33727(%rip), %r15     # 0x53fe8
leaq 0x244f2(%rip), %rsi     # 0x44dba
movl $0x18, %edx
movq %r15, %rdi
callq 0x7340
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x72b0
movsbl %al, %esi
movq %r15, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x71d0
movq 0xb0(%rbx), %r12
movq 0xb8(%rbx), %r15
cmpq %r15, %r12
je 0x214b4
movq %rbx, 0x18(%rsp)
movq %r15, %rbx
subq %r12, %rbx
movq %rbx, %rax
sarq $0x3, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
leaq 0x8(%r12), %r13
testb %bpl, %bpl
movl %ebp, 0x24(%rsp)
je 0x20a60
leaq -0x2bf(%rip), %rcx      # 0x2068c
movq %r12, %rdi
movq %r15, %rsi
callq 0x2f808
cmpq $0x81, %rbx
movq %r15, %rbp
jl 0x20b3d
movq %rbp, 0x10(%rsp)
movl $0x8, %r15d
movq %r13, %rbp
movq %r12, %rbx
movq %rbx, %rcx
leaq (%r12,%r15), %rbx
movq (%r12,%r15), %r14
movq (%r12), %rdx
movl 0xe0(%r14), %eax
addl 0x70(%r14), %eax
movl 0xe0(%rdx), %esi
addl 0x70(%rdx), %esi
cmpl %esi, %eax
jle 0x209b1
movq %r13, %rdi
movq %r12, %rsi
movq %r15, %rdx
callq 0x7570
movq %r12, %rcx
jmp 0x209e6
movq (%rcx), %rcx
movl 0xe0(%rcx), %edx
addl 0x70(%rcx), %edx
movq %rbx, %rcx
cmpl %edx, %eax
jle 0x209e6
movq %rbp, %rdx
leaq -0x8(%rdx), %rcx
movq -0x10(%rdx), %rsi
movq -0x8(%rdx), %rdi
movq %rdi, (%rdx)
movl 0xe0(%rsi), %edi
addl 0x70(%rsi), %edi
movq %rcx, %rdx
cmpl %edi, %eax
jg 0x209c7
movq %r14, (%rcx)
addq $0x8, %r15
addq $0x8, %rbp
cmpq $0x80, %r15
jne 0x20977
subq $-0x80, %r12
movq 0x10(%rsp), %r9
cmpq %r9, %r12
je 0x20c34
movq -0x8(%r12), %rdx
movq (%r12), %rax
movl 0xe0(%rax), %ecx
addl 0x70(%rax), %ecx
movl 0xe0(%rdx), %esi
addl 0x70(%rdx), %esi
movq %r12, %rdx
cmpl %esi, %ecx
jle 0x20a57
movq %r12, %rsi
leaq -0x8(%rsi), %rdx
movq -0x10(%rsi), %rdi
movq -0x8(%rsi), %r8
movq %r8, (%rsi)
movl 0xe0(%rdi), %r8d
addl 0x70(%rdi), %r8d
movq %rdx, %rsi
cmpl %r8d, %ecx
jg 0x20a35
movq %rax, (%rdx)
addq $0x8, %r12
jmp 0x20a07
leaq -0x3e5(%rip), %rcx      # 0x20682
movq %r12, %rdi
movq %r15, %rsi
callq 0x2f808
cmpq $0x81, %rbx
jl 0x20bca
movq %r15, 0x10(%rsp)
movl $0x8, %r15d
movq %r13, %rbx
movq %r12, %rbp
movq %rbp, %rcx
leaq (%r12,%r15), %rbp
movq (%r12,%r15), %r14
movq (%r12), %rdx
movl 0x70(%r14), %eax
cmpl 0x70(%rdx), %eax
jle 0x20abb
movq %r13, %rdi
movq %r12, %rsi
movq %r15, %rdx
callq 0x7570
movq %r12, %rcx
jmp 0x20ae0
movq (%rcx), %rdx
movq %rbp, %rcx
cmpl 0x70(%rdx), %eax
jle 0x20ae0
movq %rbx, %rdx
leaq -0x8(%rdx), %rcx
movq -0x10(%rdx), %rsi
movq -0x8(%rdx), %rdi
movq %rdi, (%rdx)
movq %rcx, %rdx
cmpl 0x70(%rsi), %eax
jg 0x20ac9
movq %r14, (%rcx)
addq $0x8, %r15
addq $0x8, %rbx
cmpq $0x80, %r15
jne 0x20a90
subq $-0x80, %r12
movq 0x10(%rsp), %r9
cmpq %r9, %r12
je 0x20c34
movq -0x8(%r12), %rsi
movq (%r12), %rax
movl 0x70(%rax), %ecx
movq %r12, %rdx
cmpl 0x70(%rsi), %ecx
jle 0x20b34
movq %r12, %rsi
leaq -0x8(%rsi), %rdx
movq -0x10(%rsi), %rdi
movq -0x8(%rsi), %r8
movq %r8, (%rsi)
movq %rdx, %rsi
cmpl 0x70(%rdi), %ecx
jg 0x20b1d
movq %rax, (%rdx)
addq $0x8, %r12
jmp 0x20afd
cmpq %rbp, %r13
je 0x20c34
movq %r12, %r15
movq %r15, %rdi
movq %r13, %r15
movq (%r13), %rbx
movq (%r12), %rcx
movl 0xe0(%rbx), %eax
addl 0x70(%rbx), %eax
movl 0xe0(%rcx), %edx
addl 0x70(%rcx), %edx
cmpl %edx, %eax
jle 0x20b87
movq %r15, %rdx
subq %r12, %rdx
subq %rdx, %rdi
addq $0x10, %rdi
movq %r12, %rsi
callq 0x7570
movq %r12, %rcx
jmp 0x20bbc
movq (%rdi), %rcx
movl 0xe0(%rcx), %edx
addl 0x70(%rcx), %edx
movq %r15, %rcx
cmpl %edx, %eax
jle 0x20bbc
movq %r15, %rdx
leaq -0x8(%rdx), %rcx
movq -0x10(%rdx), %rsi
movq -0x8(%rdx), %rdi
movq %rdi, (%rdx)
movl 0xe0(%rsi), %edi
addl 0x70(%rsi), %edi
movq %rcx, %rdx
cmpl %edi, %eax
jg 0x20b9d
movq %rbx, (%rcx)
leaq 0x8(%r15), %r13
cmpq %rbp, %r13
jne 0x20b49
jmp 0x20c34
cmpq %r15, %r13
je 0x20c34
movq %r12, %rbx
movq %rbx, %rdi
movq %r13, %rbx
movq (%r13), %r14
movq (%r12), %rcx
movl 0x70(%r14), %eax
cmpl 0x70(%rcx), %eax
jle 0x20c03
movq %rbx, %rdx
subq %r12, %rdx
subq %rdx, %rdi
addq $0x10, %rdi
movq %r12, %rsi
callq 0x7570
movq %r12, %rcx
jmp 0x20c28
movq (%rdi), %rdx
movq %rbx, %rcx
cmpl 0x70(%rdx), %eax
jle 0x20c28
movq %rbx, %rdx
leaq -0x8(%rdx), %rcx
movq -0x10(%rdx), %rsi
movq -0x8(%rdx), %rdi
movq %rdi, (%rdx)
movq %rcx, %rdx
cmpl 0x70(%rsi), %eax
jg 0x20c11
movq %r14, (%rcx)
leaq 0x8(%rbx), %r13
cmpq %r15, %r13
jne 0x20bd2
movq 0x18(%rsp), %rbx
movq 0xb8(%rbx), %rax
subq 0xb0(%rbx), %rax
shrq $0x3, %rax
movq (%rsp), %rsi
movl 0x50(%rsi), %edx
cmpl %eax, %edx
movl %eax, %ecx
cmovll %edx, %ecx
cmpb $0x1, 0x73(%rsi)
jne 0x20c77
movl $0x4, %ecx
cmpl $0x5, %edx
jl 0x20c70
movq (%rsp), %rcx
movl 0x50(%rcx), %ecx
cmpl %eax, %ecx
cmovll %ecx, %eax
movl %eax, %ecx
testl %ecx, %ecx
jle 0x20e25
movq 0x8(%rsp), %rax
leaq 0x50(%rax), %r15
movq (%rsp), %rax
leaq 0x10(%rax), %rbp
movl %ecx, %r12d
xorl %r13d, %r13d
movl $0x0, 0x10(%rsp)
movq 0xb0(%rbx), %rax
movq (%rax,%r13,8), %rdi
movq 0x8(%rsp), %rsi
callq 0x2b8ec
movq 0xb0(%rbx), %rax
movq (%rax,%r13,8), %rcx
movq 0xe8(%rcx), %rax
cmpq 0xf0(%rcx), %rax
je 0x20cd8
movq (%rsp), %rax
cmpb $0x0, 0x73(%rax)
je 0x20d16
movl 0x40(%rcx), %eax
andl $0x10, %eax
shrl %eax
movq 0xa0(%rbx,%rax), %rsi
movl 0x28(%rbx), %edx
movq (%rsp), %rdi
movl 0x90(%rdi), %r8d
movl (%rdi), %eax
movl 0x8(%rdi), %r10d
movl 0xc(%rdi), %r11d
movl 0x78(%rdi), %ebx
movq %r15, %rdi
movq %rbp, %r9
pushq %rbx
pushq %r11
pushq %r10
pushq %rax
callq 0x206a4
jmp 0x20d61
incl 0x10(%rsp)
movl 0x40(%rcx), %eax
andl $0x10, %eax
shrl %eax
movq 0xa0(%rbx,%rax), %rdx
movl 0x28(%rbx), %eax
movq (%rsp), %rsi
movl 0x90(%rsi), %r8d
movl (%rsi), %r10d
movl 0x8(%rsi), %r11d
movl 0xc(%rsi), %ebx
movq (%rsp), %rsi
movl 0x78(%rsi), %r14d
movq %rcx, %rdi
movq %r15, %rsi
movl %eax, %ecx
movq %rbp, %r9
pushq %r14
pushq %rbx
pushq %r11
pushq %r10
callq 0x1f6b6
addq $0x20, %rsp
movq (%rsp), %rax
cmpl $0x3, 0x78(%rax)
movq 0x18(%rsp), %rbx
jl 0x20e17
movl $0xb, %edx
movq 0x33264(%rip), %r14     # 0x53fe8
movq %r14, %rdi
leaq 0x24045(%rip), %rsi     # 0x44dd3
callq 0x7340
movq 0xb0(%rbx), %rax
movq (%rax,%r13,8), %rax
movl 0x6c(%rax), %esi
movq %r14, %rdi
callq 0x75d0
movq %rbp, %r14
movq %r12, %rbp
movq %r15, %r12
movq %rax, %r15
movl $0xb, %edx
movq %rax, %rdi
leaq 0x2401b(%rip), %rsi     # 0x44ddf
callq 0x7340
movq 0xb0(%rbx), %rax
movq (%rax,%r13,8), %rax
movq 0x20(%rax), %rsi
movq 0x28(%rax), %rdx
movq %r15, %rdi
callq 0x7340
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x72b0
movsbl %al, %esi
movq %r15, %rdi
movq %r12, %r15
movq %rbp, %r12
movq %r14, %rbp
callq 0x7040
movq %rax, %rdi
callq 0x71d0
incq %r13
cmpq %r13, %r12
jne 0x20c9e
jmp 0x20e2d
movl $0x0, 0x10(%rsp)
movq (%rsp), %rax
cmpl $0x1, 0x78(%rax)
jle 0x20ef4
movq 0x331a6(%rip), %r15     # 0x53fe8
leaq 0x23fa2(%rip), %rsi     # 0x44deb
movl $0xf, %edx
movq %r15, %rdi
callq 0x7340
movq %r15, %rdi
movl 0x10(%rsp), %ebp
movl %ebp, %esi
callq 0x75d0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x72b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x71d0
leaq 0x23f66(%rip), %rsi     # 0x44dfb
movl $0xe, %edx
movq %r15, %rdi
callq 0x7340
movq 0xb8(%rbx), %rsi
subq 0xb0(%rbx), %rsi
shrq $0x3, %rsi
movq (%rsp), %rax
movl 0x50(%rax), %eax
cmpl %esi, %eax
cmovll %eax, %esi
subl %ebp, %esi
movq %r15, %rdi
callq 0x75d0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x72b0
movsbl %al, %esi
movq %r15, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x71d0
movq 0xb0(%rbx), %r15
movq 0xb8(%rbx), %rbp
cmpb $0x0, 0x24(%rsp)
je 0x21049
cmpq %rbp, %r15
je 0x2123e
movq %rbp, %rbx
subq %r15, %rbx
movq %rbx, %rax
sarq $0x3, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
leaq -0x8ab(%rip), %rcx      # 0x2068c
movq %r15, %rdi
movq %rbp, %rsi
callq 0x2f808
leaq 0x8(%r15), %r12
cmpq $0x81, %rbx
jl 0x21149
movq %rbp, 0x8(%rsp)
movl $0x8, %ebp
movq %r12, %r13
movq %r15, %rbx
movq %rbx, %rcx
leaq (%r15,%rbp), %rbx
movq (%r15,%rbp), %r14
movq (%r15), %rdx
movl 0xe0(%r14), %eax
addl 0x70(%r14), %eax
movl 0xe0(%rdx), %esi
addl 0x70(%rdx), %esi
cmpl %esi, %eax
jle 0x20f9c
movq %r12, %rdi
movq %r15, %rsi
movq %rbp, %rdx
callq 0x7570
movq %r15, %rcx
jmp 0x20fd1
movq (%rcx), %rcx
movl 0xe0(%rcx), %edx
addl 0x70(%rcx), %edx
movq %rbx, %rcx
cmpl %edx, %eax
jle 0x20fd1
movq %r13, %rdx
leaq -0x8(%rdx), %rcx
movq -0x10(%rdx), %rsi
movq -0x8(%rdx), %rdi
movq %rdi, (%rdx)
movl 0xe0(%rsi), %edi
addl 0x70(%rsi), %edi
movq %rcx, %rdx
cmpl %edi, %eax
jg 0x20fb2
movq %r14, (%rcx)
addq $0x8, %rbp
addq $0x8, %r13
cmpq $0x80, %rbp
jne 0x20f63
subq $-0x80, %r15
movq 0x8(%rsp), %r9
cmpq %r9, %r15
je 0x2123e
movq -0x8(%r15), %rdx
movq (%r15), %rax
movl 0xe0(%rax), %ecx
addl 0x70(%rax), %ecx
movl 0xe0(%rdx), %esi
addl 0x70(%rdx), %esi
movq %r15, %rdx
cmpl %esi, %ecx
jle 0x21040
movq %r15, %rsi
leaq -0x8(%rsi), %rdx
movq -0x10(%rsi), %rdi
movq -0x8(%rsi), %r8
movq %r8, (%rsi)
movl 0xe0(%rdi), %r8d
addl 0x70(%rdi), %r8d
movq %rdx, %rsi
cmpl %r8d, %ecx
jg 0x2101e
movq %rax, (%rdx)
addq $0x8, %r15
jmp 0x20ff2
cmpq %rbp, %r15
je 0x2123e
movq %rbp, %rbx
subq %r15, %rbx
movq %rbx, %rax
sarq $0x3, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
leaq -0x9f1(%rip), %rcx      # 0x20682
movq %r15, %rdi
movq %rbp, %rsi
callq 0x2f808
leaq 0x8(%r15), %r13
cmpq $0x81, %rbx
jl 0x211d5
movq %rbp, 0x8(%rsp)
movl $0x8, %ebp
movq %r13, %rbx
movq %r15, %r12
movq %r12, %rcx
leaq (%r15,%rbp), %r12
movq (%r15,%rbp), %r14
movq (%r15), %rdx
movl 0x70(%r14), %eax
cmpl 0x70(%rdx), %eax
jle 0x210c9
movq %r13, %rdi
movq %r15, %rsi
movq %rbp, %rdx
callq 0x7570
movq %r15, %rcx
jmp 0x210ee
movq (%rcx), %rdx
movq %r12, %rcx
cmpl 0x70(%rdx), %eax
jle 0x210ee
movq %rbx, %rdx
leaq -0x8(%rdx), %rcx
movq -0x10(%rdx), %rsi
movq -0x8(%rdx), %rdi
movq %rdi, (%rdx)
movq %rcx, %rdx
cmpl 0x70(%rsi), %eax
jg 0x210d7
movq %r14, (%rcx)
addq $0x8, %rbp
addq $0x8, %rbx
cmpq $0x80, %rbp
jne 0x2109f
subq $-0x80, %r15
movq 0x8(%rsp), %r9
cmpq %r9, %r15
je 0x2123e
movq -0x8(%r15), %rsi
movq (%r15), %rax
movl 0x70(%rax), %ecx
movq %r15, %rdx
cmpl 0x70(%rsi), %ecx
jle 0x21140
movq %r15, %rsi
leaq -0x8(%rsi), %rdx
movq -0x10(%rsi), %rdi
movq -0x8(%rsi), %r8
movq %r8, (%rsi)
movq %rdx, %rsi
cmpl 0x70(%rdi), %ecx
jg 0x21129
movq %rax, (%rdx)
addq $0x8, %r15
jmp 0x2110b
cmpq %rbp, %r12
je 0x2123e
movq %r15, %r13
movq %r13, %rdi
movq %r12, %r13
movq (%r12), %rbx
movq (%r15), %rcx
movl 0xe0(%rbx), %eax
addl 0x70(%rbx), %eax
movl 0xe0(%rcx), %edx
addl 0x70(%rcx), %edx
cmpl %edx, %eax
jle 0x21192
movq %r13, %rdx
subq %r15, %rdx
subq %rdx, %rdi
addq $0x10, %rdi
movq %r15, %rsi
callq 0x7570
movq %r15, %rcx
jmp 0x211c7
movq (%rdi), %rcx
movl 0xe0(%rcx), %edx
addl 0x70(%rcx), %edx
movq %r13, %rcx
cmpl %edx, %eax
jle 0x211c7
movq %r13, %rdx
leaq -0x8(%rdx), %rcx
movq -0x10(%rdx), %rsi
movq -0x8(%rdx), %rdi
movq %rdi, (%rdx)
movl 0xe0(%rsi), %edi
addl 0x70(%rsi), %edi
movq %rcx, %rdx
cmpl %edi, %eax
jg 0x211a8
movq %rbx, (%rcx)
leaq 0x8(%r13), %r12
cmpq %rbp, %r12
jne 0x21155
jmp 0x2123e
cmpq %rbp, %r13
je 0x2123e
movq %r15, %rbx
movq %rbx, %rdi
movq %r13, %rbx
movq (%r13), %r14
movq (%r15), %rcx
movl 0x70(%r14), %eax
cmpl 0x70(%rcx), %eax
jle 0x2120d
movq %rbx, %rdx
subq %r15, %rdx
subq %rdx, %rdi
addq $0x10, %rdi
movq %r15, %rsi
callq 0x7570
movq %r15, %rcx
jmp 0x21232
movq (%rdi), %rdx
movq %rbx, %rcx
cmpl 0x70(%rdx), %eax
jle 0x21232
movq %rbx, %rdx
leaq -0x8(%rdx), %rcx
movq -0x10(%rdx), %rsi
movq -0x8(%rdx), %rdi
movq %rdi, (%rdx)
movq %rcx, %rdx
cmpl 0x70(%rsi), %eax
jg 0x2121b
movq %r14, (%rcx)
leaq 0x8(%rbx), %r13
cmpq %rbp, %r13
jne 0x211dd
movq 0x18(%rsp), %rbx
movq 0xb0(%rbx), %rax
movq 0xb8(%rbx), %rdx
movq (%rax), %rcx
movl 0xe0(%rcx), %r13d
subq %rax, %rdx
cmpq $0x9, %rdx
jb 0x21273
movq 0x8(%rax), %rdx
movl 0xe0(%rdx), %eax
addl 0x70(%rdx), %eax
jmp 0x2127e
movq (%rsp), %rax
movl 0x4(%rax), %eax
imull 0x28(%rbx), %eax
addl 0x70(%rcx), %r13d
movq (%rsp), %rcx
movl 0x4(%rcx), %edx
imull 0x28(%rbx), %edx
movl $0x3c, %ecx
cmpl %edx, %eax
je 0x212bc
movl %r13d, %ecx
subl %eax, %ecx
cvtsi2sd %ecx, %xmm0
cvtsi2sd %r13d, %xmm1
divsd %xmm1, %xmm0
mulsd 0x238c0(%rip), %xmm0    # 0x44b70
addsd 0x238c0(%rip), %xmm0    # 0x44b78
cvttsd2si %xmm0, %ecx
xorl %edx, %edx
testl %ecx, %ecx
cmovlel %edx, %ecx
cmpl $0x3c, %ecx
movl $0x3c, %esi
cmovll %ecx, %esi
cmpl %eax, %r13d
cmovel %edx, %esi
movl %esi, 0x8(%rsp)
movq (%rsp), %rax
cmpl $0x2, 0x78(%rax)
jl 0x2139b
movq 0x32cfb(%rip), %r15     # 0x53fe8
leaq 0x23b16(%rip), %rsi     # 0x44e0a
movl $0x6, %edx
movq %r15, %rdi
callq 0x7340
movq %r15, %rdi
movl 0x8(%rsp), %esi
callq 0x75d0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x72b0
movsbl %al, %esi
movq %r12, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x71d0
leaq 0x23ad3(%rip), %rsi     # 0x44e11
movl $0xa, %edx
movq %r15, %rdi
callq 0x7340
movq 0xb8(%rbx), %rsi
subq 0xb0(%rbx), %rsi
shrq $0x3, %rsi
movq (%rsp), %rax
movl 0x50(%rax), %eax
cmpl %esi, %eax
cmovll %eax, %esi
movq %r15, %rdi
callq 0x75d0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x72b0
movsbl %al, %esi
movq %r15, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x71d0
movq 0xb8(%rbx), %rax
subq 0xb0(%rbx), %rax
shrq $0x3, %rax
movq (%rsp), %rcx
movl 0x50(%rcx), %ecx
cmpl %eax, %ecx
cmovll %ecx, %eax
testl %eax, %eax
jle 0x214b4
xorl %ebp, %ebp
movq 0x32c1e(%rip), %r15     # 0x53fe8
leaq 0x23a4b(%rip), %r14     # 0x44e1c
movq (%rsp), %rax
cmpl $0x3, 0x78(%rax)
jl 0x21462
movl $0x24, %edx
movq %r15, %rdi
movq %r14, %rsi
callq 0x7340
movq 0xb0(%rbx), %rax
movq (%rax,%rbp,8), %rax
movq 0x48(%rax), %rsi
movq 0x50(%rax), %rdx
movq %r15, %rdi
callq 0x7340
movq %rax, %r12
movl $0x9, %edx
movq %rax, %rdi
leaq 0x23a25(%rip), %rsi     # 0x44e41
callq 0x7340
movq 0xb0(%rbx), %rax
movq (%rax,%rbp,8), %rax
movq 0x18(%rax), %rsi
movq %r12, %rdi
callq 0x72a0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x72b0
movsbl %al, %esi
movq %r12, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x71d0
movq 0xb0(%rbx), %rax
movq (%rax,%rbp,8), %rax
movl 0xe0(%rax), %ecx
addl 0x70(%rax), %ecx
cmpl %r13d, %ecx
jne 0x21484
movl 0x8(%rsp), %ecx
movl %ecx, 0x68(%rax)
jmp 0x21488
orb $0x1, 0x41(%rax)
movq 0xb8(%rbx), %rax
subq 0xb0(%rbx), %rax
incq %rbp
shrq $0x3, %rax
movq (%rsp), %rcx
movl 0x50(%rcx), %ecx
cmpl %eax, %ecx
cmovll %ecx, %eax
cltq
cmpq %rax, %rbp
jl 0x213d1
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq