// File: readmapping[P]alfalfa/src/mapper.cpp
// Function: pairedMatch5(sparseSA const&, read_t&, read_t&, align_opt const&, paired_opt const&)
void pairedMatch5(const sparseSA& sa, read_t & mate1, read_t & mate2, const align_opt & alnOptions, const paired_opt & pairedOpt){
    //FIND CANDIDATE REGIONS FOR BOTH MATES
    vector<lis_t>  lisIntervals1;
    vector<lis_t>  lisIntervals2;
    if(alnOptions.print >= 3) cerr << "calculate LIS of both mates"  << endl;
    calculateCandRegions(sa, mate1, alnOptions, lisIntervals1, alnOptions.errorPercent);
    calculateCandRegions(sa, mate2, alnOptions, lisIntervals2, alnOptions.errorPercent);
    //SORT ALL LIS
    if(alnOptions.print >= 3) cerr << "first mate resulted in " << lisIntervals1.size() << " intervals" << endl;
    if(alnOptions.print >= 3) cerr << "second mate resulted in " << lisIntervals2.size() << " intervals" << endl;
    vector<alnScoreInfo_t> pairedOrder;
    pairedOrder.reserve(lisIntervals1.size()+lisIntervals2.size());
    for(size_t i = 0; i < lisIntervals1.size(); i++)
        pairedOrder.push_back(alnScoreInfo_t(true, i,lisIntervals1[i].score));
    for(size_t i = 0; i < lisIntervals2.size(); i++)
        pairedOrder.push_back(alnScoreInfo_t(false, i,lisIntervals2[i].score));
    sort(pairedOrder.begin(),pairedOrder.end(),compAlnScorePaired);
    //TRY TO EXTEND LIS
    int Plength1 = mate1.sequence.length();
    int editDist1 = (int)(alnOptions.errorPercent*Plength1)+1;
    int minScore1 = (int) (Plength1*alnOptions.match + (alnOptions.mismatch-alnOptions.match)*editDist1);
    int Plength2 = mate2.sequence.length();
    int editDist2 = (int)(alnOptions.errorPercent*Plength2)+1;
    int minScore2 = (int) (Plength2*alnOptions.match + (alnOptions.mismatch-alnOptions.match)*editDist2);
    processLisIntervalsAndPair(sa, mate1, mate2, alnOptions, pairedOpt, lisIntervals1, lisIntervals2, 
    pairedOrder, alnOptions.maxAlnCount, alnOptions.minCoverage, minScore1, minScore2);
    if(mate1.alignments.empty() && !mate2.alignments.empty() && alnOptions.rescue){
        if(alnOptions.print >= 2) cerr << "#RESCUE" << endl;
        minScore1 = max(0,(int)(Plength1*alnOptions.match + (alnOptions.mismatch-alnOptions.match)*0.2*Plength1));
        int maxAlignmentCount = 20;
        int minCoverage = Plength1*0.01;
        processLisIntervals(sa, mate1, alnOptions, lisIntervals1, editDist1, maxAlignmentCount, minCoverage, minScore1);
    }
    else if(mate2.alignments.empty() && !mate1.alignments.empty() && alnOptions.rescue){
        if(alnOptions.print >= 2) cerr << "#RESCUE" << endl;
        minScore2 = max(0,(int)(Plength2*alnOptions.match + (alnOptions.mismatch-alnOptions.match)*0.2*Plength2));
        int maxAlignmentCount = 20;
        int minCoverage = Plength1*0.01;
        processLisIntervals(sa, mate2, alnOptions, lisIntervals2, editDist2, maxAlignmentCount, minCoverage, minScore2);
    }
    if(alnOptions.print >= 3) cerr << "first  mate resulted in " << mate1.alignments.size() << " alignments" << endl;
    if(alnOptions.print >= 3) cerr << "second mate resulted in " << mate2.alignments.size() << " alignments" << endl;
    if(mate1.alignments.empty() && mate2.alignments.empty() && pairedOpt.pairedRescue){
        minScore1 = max(0,(int)(Plength1*alnOptions.match + (alnOptions.mismatch-alnOptions.match)*0.2*Plength1));
        minScore2 = max(0,(int)(Plength2*alnOptions.match + (alnOptions.mismatch-alnOptions.match)*0.2*Plength2));
        processLisIntervalsAndPair(sa, mate1, mate2, alnOptions, pairedOpt, lisIntervals1, lisIntervals2, 
    pairedOrder, 20, 0.01, minScore1, minScore2);
    }
    if(alnOptions.print >= 3) cerr << "first mate resulted in " << mate1.alignments.size() << " alignments" << endl;
    if(alnOptions.print >= 3) cerr << "second mate resulted in " << mate2.alignments.size() << " alignments" << endl;
    //FIND DISCORDANT ALIGNMENTS AMONGST HIGHEST SCORING UNPAIRED ALIGNMENTS
    int maxPairedAlignments = alnOptions.alignmentCount+1;
    int pairedAlignments = mate1.pairedAlignmentCount;
    if(alnOptions.print >= 2) cerr << "#CONCORDANTCOUNT " << pairedAlignments << endl;
    int alnCount = max(mate1.pairedAlignmentCount, mate2.pairedAlignmentCount);
    if(pairedOpt.discordant && alnCount < maxPairedAlignments)
        calculateDiscordantAlignments(sa, mate1, mate2);
    if(alnOptions.print >= 2) cerr << "#DISCORDANTCOUNT " << mate1.pairedAlignmentCount-pairedAlignments << endl;
}

// Assembly:
subq $0x268, %rsp            # imm = 0x268
movq %rdi, 0x260(%rsp)
movq %rsi, 0x258(%rsp)
movq %rdx, 0x250(%rsp)
movq %rcx, 0x248(%rsp)
movq %r8, 0x240(%rsp)
leaq 0x228(%rsp), %rdi
callq 0x4e460
leaq 0x210(%rsp), %rdi
callq 0x4e460
movq 0x248(%rsp), %rax
cmpl $0x3, 0x78(%rax)
jl 0x48f85
movq 0x4e0b2(%rip), %rdi     # 0x96ff0
leaq 0x354e4(%rip), %rsi     # 0x7e429
callq 0x8360
movq %rax, 0x148(%rsp)
jmp 0x48f54
movq 0x148(%rsp), %rdi
movq 0x4e04d(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x48f6a
jmp 0x48f85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x208(%rsp)
movl %eax, 0x204(%rsp)
jmp 0x49cda
movq 0x260(%rsp), %rdi
movq 0x258(%rsp), %rsi
movq 0x248(%rsp), %rdx
movsd 0x30(%rdx), %xmm0
leaq 0x228(%rsp), %rcx
callq 0x429c0
jmp 0x48fb1
movq 0x260(%rsp), %rdi
movq 0x250(%rsp), %rsi
movq 0x248(%rsp), %rdx
movsd 0x30(%rdx), %xmm0
leaq 0x210(%rsp), %rcx
callq 0x429c0
jmp 0x48fdd
movq 0x248(%rsp), %rax
cmpl $0x3, 0x78(%rax)
jl 0x49065
movq 0x4dffe(%rip), %rdi     # 0x96ff0
leaq 0x352f6(%rip), %rsi     # 0x7e2ef
callq 0x8360
movq %rax, 0x140(%rsp)
jmp 0x49008
leaq 0x228(%rsp), %rdi
callq 0x4c4b0
movq 0x140(%rsp), %rdi
movq %rax, %rsi
callq 0x8100
movq %rax, 0x138(%rsp)
jmp 0x4902f
movq 0x138(%rsp), %rdi
leaq 0x35524(%rip), %rsi     # 0x7e562
callq 0x8360
movq %rax, 0x130(%rsp)
jmp 0x4904d
movq 0x130(%rsp), %rdi
movq 0x4df54(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x49063
jmp 0x49065
movq 0x248(%rsp), %rax
cmpl $0x3, 0x78(%rax)
jl 0x490ed
movq 0x4df76(%rip), %rdi     # 0x96ff0
leaq 0x3529f(%rip), %rsi     # 0x7e320
callq 0x8360
movq %rax, 0x128(%rsp)
jmp 0x49090
leaq 0x210(%rsp), %rdi
callq 0x4c4b0
movq 0x128(%rsp), %rdi
movq %rax, %rsi
callq 0x8100
movq %rax, 0x120(%rsp)
jmp 0x490b7
movq 0x120(%rsp), %rdi
leaq 0x3549c(%rip), %rsi     # 0x7e562
callq 0x8360
movq %rax, 0x118(%rsp)
jmp 0x490d5
movq 0x118(%rsp), %rdi
movq 0x4decc(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x490eb
jmp 0x490ed
leaq 0x1e8(%rsp), %rdi
movq %rdi, 0x110(%rsp)
callq 0x4e6a0
leaq 0x228(%rsp), %rdi
callq 0x4c4b0
movq %rax, 0x108(%rsp)
leaq 0x210(%rsp), %rdi
callq 0x4c4b0
movq 0x108(%rsp), %rsi
movq 0x110(%rsp), %rdi
addq %rax, %rsi
callq 0x4e6b0
jmp 0x4913e
movq $0x0, 0x1e0(%rsp)
movq 0x1e0(%rsp), %rax
movq %rax, 0x100(%rsp)
leaq 0x228(%rsp), %rdi
callq 0x4c4b0
movq %rax, %rcx
movq 0x100(%rsp), %rax
cmpq %rcx, %rax
jae 0x4920e
movq 0x1e0(%rsp), %rsi
movl %esi, %eax
movl %eax, 0xfc(%rsp)
leaq 0x228(%rsp), %rdi
callq 0x4c850
movl 0xfc(%rsp), %edx
movl (%rax), %ecx
leaq 0x1d4(%rsp), %rdi
movl $0x1, %esi
callq 0x4e660
jmp 0x491b6
leaq 0x1e8(%rsp), %rdi
leaq 0x1d4(%rsp), %rsi
callq 0x4e630
jmp 0x491cd
jmp 0x491cf
movq 0x1e0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x1e0(%rsp)
jmp 0x4914a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x208(%rsp)
movl %eax, 0x204(%rsp)
leaq 0x1e8(%rsp), %rdi
callq 0x4e870
jmp 0x49cda
movq $0x0, 0x1c8(%rsp)
movq 0x1c8(%rsp), %rax
movq %rax, 0xf0(%rsp)
leaq 0x210(%rsp), %rdi
callq 0x4c4b0
movq %rax, %rcx
movq 0xf0(%rsp), %rax
cmpq %rcx, %rax
jae 0x492b1
movq 0x1c8(%rsp), %rsi
movl %esi, %eax
movl %eax, 0xec(%rsp)
leaq 0x210(%rsp), %rdi
callq 0x4c850
movl 0xec(%rsp), %edx
movl (%rax), %ecx
leaq 0x1bc(%rsp), %rdi
xorl %esi, %esi
callq 0x4e660
jmp 0x4927f
leaq 0x1e8(%rsp), %rdi
leaq 0x1bc(%rsp), %rsi
callq 0x4e630
jmp 0x49296
jmp 0x49298
movq 0x1c8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x1c8(%rsp)
jmp 0x4921a
leaq 0x1e8(%rsp), %rdi
movq %rdi, 0xe0(%rsp)
callq 0x4e810
movq 0xe0(%rsp), %rdi
movq %rax, 0x1b0(%rsp)
callq 0x4e840
movq %rax, 0x1a8(%rsp)
movq 0x1b0(%rsp), %rdi
movq 0x1a8(%rsp), %rsi
leaq -0x512a(%rip), %rdx     # 0x441d0
callq 0x4e7c0
jmp 0x49301
movq 0x258(%rsp), %rdi
addq $0x20, %rdi
callq 0x8630
movl %eax, 0x1a4(%rsp)
movq 0x248(%rsp), %rax
movsd 0x30(%rax), %xmm0
cvtsi2sdl 0x1a4(%rsp), %xmm1
mulsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
incl %eax
movl %eax, 0x1a0(%rsp)
movl 0x1a4(%rsp), %eax
movq 0x248(%rsp), %rcx
movl (%rcx), %edx
movl 0x4(%rcx), %ecx
imull %edx, %eax
subl %edx, %ecx
movl 0x1a0(%rsp), %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, 0x19c(%rsp)
movq 0x250(%rsp), %rdi
addq $0x20, %rdi
callq 0x8630
movl %eax, 0x198(%rsp)
movq 0x248(%rsp), %rax
movsd 0x30(%rax), %xmm0
cvtsi2sdl 0x198(%rsp), %xmm1
mulsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
incl %eax
movl %eax, 0x194(%rsp)
movl 0x198(%rsp), %eax
movq 0x248(%rsp), %rcx
movl (%rcx), %edx
movl 0x4(%rcx), %ecx
imull %edx, %eax
subl %edx, %ecx
movl 0x194(%rsp), %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, 0x190(%rsp)
movq 0x260(%rsp), %rdi
movq 0x258(%rsp), %rsi
movq 0x250(%rsp), %rdx
movq 0x248(%rsp), %rcx
movq 0x240(%rsp), %r8
movl 0x60(%rcx), %r9d
movsd 0x68(%rcx), %xmm0
movl 0x19c(%rsp), %r10d
movl 0x190(%rsp), %r11d
movq %rsp, %rax
movl %r11d, 0x20(%rax)
movl %r10d, 0x18(%rax)
movl %r9d, 0x10(%rax)
leaq 0x1e8(%rsp), %r9
movq %r9, 0x8(%rax)
leaq 0x210(%rsp), %r9
movq %r9, (%rax)
leaq 0x228(%rsp), %r9
callq 0x509f0
jmp 0x4944d
movq 0x258(%rsp), %rdi
addq $0xb0, %rdi
callq 0xbe60
testb $0x1, %al
jne 0x4946a
jmp 0x495db
movq 0x250(%rsp), %rdi
addq $0xb0, %rdi
callq 0xbe60
testb $0x1, %al
jne 0x495db
movq 0x248(%rsp), %rax
testb $0x1, 0x71(%rax)
je 0x495db
movq 0x248(%rsp), %rax
cmpl $0x2, 0x78(%rax)
jl 0x494db
movq 0x4db43(%rip), %rdi     # 0x96ff0
leaq 0x34be2(%rip), %rsi     # 0x7e096
callq 0x8360
movq %rax, 0xd8(%rsp)
jmp 0x494c3
movq 0xd8(%rsp), %rdi
movq 0x4dade(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x494d9
jmp 0x494db
movl $0x0, 0x18c(%rsp)
movl 0x1a4(%rsp), %eax
movq 0x248(%rsp), %rcx
movl (%rcx), %edx
movl 0x4(%rcx), %ecx
movl %eax, %esi
imull %edx, %esi
cvtsi2sd %esi, %xmm1
subl %edx, %ecx
cvtsi2sd %ecx, %xmm0
movsd 0x34647(%rip), %xmm2    # 0x7db58
mulsd %xmm2, %xmm0
cvtsi2sd %eax, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, 0x188(%rsp)
leaq 0x18c(%rsp), %rdi
leaq 0x188(%rsp), %rsi
callq 0x14d40
movq %rax, 0xd0(%rsp)
jmp 0x4954b
movq 0xd0(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x19c(%rsp)
movl $0x14, 0x184(%rsp)
cvtsi2sdl 0x1a4(%rsp), %xmm0
movsd 0x30370(%rip), %xmm1    # 0x798e8
mulsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, 0x180(%rsp)
movq 0x260(%rsp), %rdi
movq 0x258(%rsp), %rsi
movq 0x248(%rsp), %rdx
movl 0x1a0(%rsp), %r8d
movl 0x184(%rsp), %r9d
movl 0x180(%rsp), %ecx
movl 0x19c(%rsp), %r10d
movq %rsp, %rax
movl %r10d, 0x8(%rax)
movl %ecx, (%rax)
leaq 0x228(%rsp), %rcx
callq 0x41a60
jmp 0x495d6
jmp 0x49768
movq 0x250(%rsp), %rdi
addq $0xb0, %rdi
callq 0xbe60
testb $0x1, %al
jne 0x495f8
jmp 0x49766
movq 0x258(%rsp), %rdi
addq $0xb0, %rdi
callq 0xbe60
testb $0x1, %al
jne 0x49766
movq 0x248(%rsp), %rax
testb $0x1, 0x71(%rax)
je 0x49766
movq 0x248(%rsp), %rax
cmpl $0x2, 0x78(%rax)
jl 0x49669
movq 0x4d9b5(%rip), %rdi     # 0x96ff0
leaq 0x34a54(%rip), %rsi     # 0x7e096
callq 0x8360
movq %rax, 0xc8(%rsp)
jmp 0x49651
movq 0xc8(%rsp), %rdi
movq 0x4d950(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x49667
jmp 0x49669
movl $0x0, 0x17c(%rsp)
movl 0x198(%rsp), %eax
movq 0x248(%rsp), %rcx
movl (%rcx), %edx
movl 0x4(%rcx), %ecx
movl %eax, %esi
imull %edx, %esi
cvtsi2sd %esi, %xmm1
subl %edx, %ecx
cvtsi2sd %ecx, %xmm0
movsd 0x344b9(%rip), %xmm2    # 0x7db58
mulsd %xmm2, %xmm0
cvtsi2sd %eax, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, 0x178(%rsp)
leaq 0x17c(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x14d40
movq %rax, 0xc0(%rsp)
jmp 0x496d9
movq 0xc0(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x190(%rsp)
movl $0x14, 0x174(%rsp)
cvtsi2sdl 0x1a4(%rsp), %xmm0
movsd 0x301e2(%rip), %xmm1    # 0x798e8
mulsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, 0x170(%rsp)
movq 0x260(%rsp), %rdi
movq 0x250(%rsp), %rsi
movq 0x248(%rsp), %rdx
movl 0x194(%rsp), %r8d
movl 0x174(%rsp), %r9d
movl 0x170(%rsp), %ecx
movl 0x190(%rsp), %r10d
movq %rsp, %rax
movl %r10d, 0x8(%rax)
movl %ecx, (%rax)
leaq 0x210(%rsp), %rcx
callq 0x41a60
jmp 0x49764
jmp 0x49766
jmp 0x49768
movq 0x248(%rsp), %rax
cmpl $0x3, 0x78(%rax)
jl 0x497fb
movq 0x4d86f(%rip), %rdi     # 0x96ff0
leaq 0x34d35(%rip), %rsi     # 0x7e4bd
callq 0x8360
movq %rax, 0xb8(%rsp)
jmp 0x49797
movq 0x258(%rsp), %rdi
addq $0xb0, %rdi
callq 0xdac0
movq 0xb8(%rsp), %rdi
movq %rax, %rsi
callq 0x8100
movq %rax, 0xb0(%rsp)
jmp 0x497c5
movq 0xb0(%rsp), %rdi
leaq 0x34d13(%rip), %rsi     # 0x7e4e7
callq 0x8360
movq %rax, 0xa8(%rsp)
jmp 0x497e3
movq 0xa8(%rsp), %rdi
movq 0x4d7be(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x497f9
jmp 0x497fb
movq 0x248(%rsp), %rax
cmpl $0x3, 0x78(%rax)
jl 0x4988e
movq 0x4d7dc(%rip), %rdi     # 0x96ff0
leaq 0x34b05(%rip), %rsi     # 0x7e320
callq 0x8360
movq %rax, 0xa0(%rsp)
jmp 0x4982a
movq 0x250(%rsp), %rdi
addq $0xb0, %rdi
callq 0xdac0
movq 0xa0(%rsp), %rdi
movq %rax, %rsi
callq 0x8100
movq %rax, 0x98(%rsp)
jmp 0x49858
movq 0x98(%rsp), %rdi
leaq 0x34c80(%rip), %rsi     # 0x7e4e7
callq 0x8360
movq %rax, 0x90(%rsp)
jmp 0x49876
movq 0x90(%rsp), %rdi
movq 0x4d72b(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x4988c
jmp 0x4988e
movq 0x258(%rsp), %rdi
addq $0xb0, %rdi
callq 0xbe60
testb $0x1, %al
jne 0x498ab
jmp 0x49a56
movq 0x250(%rsp), %rdi
addq $0xb0, %rdi
callq 0xbe60
testb $0x1, %al
jne 0x498c8
jmp 0x49a56
movq 0x240(%rsp), %rax
testb $0x1, 0x14(%rax)
je 0x49a56
movl $0x0, 0x16c(%rsp)
movl 0x1a4(%rsp), %eax
movq 0x248(%rsp), %rcx
movl (%rcx), %edx
movl 0x4(%rcx), %ecx
movl %eax, %esi
imull %edx, %esi
cvtsi2sd %esi, %xmm1
subl %edx, %ecx
cvtsi2sd %ecx, %xmm0
movsd 0x34248(%rip), %xmm2    # 0x7db58
mulsd %xmm2, %xmm0
cvtsi2sd %eax, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, 0x168(%rsp)
leaq 0x16c(%rsp), %rdi
leaq 0x168(%rsp), %rsi
callq 0x14d40
movq %rax, 0x88(%rsp)
jmp 0x4994a
movq 0x88(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x19c(%rsp)
movl $0x0, 0x164(%rsp)
movl 0x198(%rsp), %eax
movq 0x248(%rsp), %rcx
movl (%rcx), %edx
movl 0x4(%rcx), %ecx
movl %eax, %esi
imull %edx, %esi
cvtsi2sd %esi, %xmm1
subl %edx, %ecx
cvtsi2sd %ecx, %xmm0
movsd 0x341c7(%rip), %xmm2    # 0x7db58
mulsd %xmm2, %xmm0
cvtsi2sd %eax, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, 0x160(%rsp)
leaq 0x164(%rsp), %rdi
leaq 0x160(%rsp), %rsi
callq 0x14d40
movq %rax, 0x80(%rsp)
jmp 0x499cb
movq 0x80(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x190(%rsp)
movq 0x260(%rsp), %rdi
movq 0x258(%rsp), %rsi
movq 0x250(%rsp), %rdx
movq 0x248(%rsp), %rcx
movq 0x240(%rsp), %r8
movl 0x19c(%rsp), %r9d
movl 0x190(%rsp), %r10d
movq %rsp, %rax
movl %r10d, 0x20(%rax)
movl %r9d, 0x18(%rax)
leaq 0x1e8(%rsp), %r9
movq %r9, 0x8(%rax)
leaq 0x210(%rsp), %r9
movq %r9, (%rax)
movl $0x14, 0x10(%rax)
leaq 0x228(%rsp), %r9
movsd 0x2fe9b(%rip), %xmm0    # 0x798e8
callq 0x509f0
jmp 0x49a54
jmp 0x49a56
movq 0x248(%rsp), %rax
cmpl $0x3, 0x78(%rax)
jl 0x49ad3
movq 0x4d585(%rip), %rdi     # 0x96ff0
leaq 0x3487d(%rip), %rsi     # 0x7e2ef
callq 0x8360
movq %rax, 0x78(%rsp)
jmp 0x49a7e
movq 0x258(%rsp), %rdi
addq $0xb0, %rdi
callq 0xdac0
movq 0x78(%rsp), %rdi
movq %rax, %rsi
callq 0x8100
movq %rax, 0x70(%rsp)
jmp 0x49aa6
movq 0x70(%rsp), %rdi
leaq 0x34a35(%rip), %rsi     # 0x7e4e7
callq 0x8360
movq %rax, 0x68(%rsp)
jmp 0x49abe
movq 0x68(%rsp), %rdi
movq 0x4d4e6(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x49ad1
jmp 0x49ad3
movq 0x248(%rsp), %rax
cmpl $0x3, 0x78(%rax)
jl 0x49b50
movq 0x4d508(%rip), %rdi     # 0x96ff0
leaq 0x34831(%rip), %rsi     # 0x7e320
callq 0x8360
movq %rax, 0x60(%rsp)
jmp 0x49afb
movq 0x250(%rsp), %rdi
addq $0xb0, %rdi
callq 0xdac0
movq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x8100
movq %rax, 0x58(%rsp)
jmp 0x49b23
movq 0x58(%rsp), %rdi
leaq 0x349b8(%rip), %rsi     # 0x7e4e7
callq 0x8360
movq %rax, 0x50(%rsp)
jmp 0x49b3b
movq 0x50(%rsp), %rdi
movq 0x4d469(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x49b4e
jmp 0x49b50
movq 0x248(%rsp), %rax
movl 0x50(%rax), %eax
addl $0x1, %eax
movl %eax, 0x15c(%rsp)
movq 0x258(%rsp), %rax
movl 0xc8(%rax), %eax
movl %eax, 0x158(%rsp)
movq 0x248(%rsp), %rax
cmpl $0x2, 0x78(%rax)
jl 0x49bcf
movq 0x4d461(%rip), %rdi     # 0x96ff0
leaq 0x3482b(%rip), %rsi     # 0x7e3c1
callq 0x8360
movq %rax, 0x48(%rsp)
jmp 0x49ba2
movq 0x48(%rsp), %rdi
movl 0x158(%rsp), %esi
callq 0x8710
movq %rax, 0x40(%rsp)
jmp 0x49bba
movq 0x40(%rsp), %rdi
movq 0x4d3ea(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x49bcd
jmp 0x49bcf
movq 0x258(%rsp), %rdi
addq $0xc8, %rdi
movq 0x250(%rsp), %rsi
addq $0xc8, %rsi
callq 0x14d40
movq %rax, 0x38(%rsp)
jmp 0x49bf9
movq 0x38(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x154(%rsp)
movq 0x240(%rsp), %rax
testb $0x1, 0x9(%rax)
je 0x49c46
movl 0x154(%rsp), %eax
cmpl 0x15c(%rsp), %eax
jge 0x49c46
movq 0x260(%rsp), %rdi
movq 0x258(%rsp), %rsi
movq 0x250(%rsp), %rdx
callq 0x43d30
jmp 0x49c44
jmp 0x49c46
movq 0x248(%rsp), %rax
cmpl $0x2, 0x78(%rax)
jl 0x49cab
movq 0x4d395(%rip), %rdi     # 0x96ff0
leaq 0x34771(%rip), %rsi     # 0x7e3d3
callq 0x8360
movq %rax, 0x30(%rsp)
jmp 0x49c6e
movq 0x30(%rsp), %rdi
movq 0x258(%rsp), %rax
movl 0xc8(%rax), %esi
movl 0x158(%rsp), %eax
subl %eax, %esi
callq 0x8710
movq %rax, 0x28(%rsp)
jmp 0x49c96
movq 0x28(%rsp), %rdi
movq 0x4d30e(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x49ca9
jmp 0x49cab
leaq 0x1e8(%rsp), %rdi
callq 0x4e870
leaq 0x210(%rsp), %rdi
callq 0x4e4e0
leaq 0x228(%rsp), %rdi
callq 0x4e4e0
addq $0x268, %rsp            # imm = 0x268
retq
leaq 0x210(%rsp), %rdi
callq 0x4e4e0
leaq 0x228(%rsp), %rdi
callq 0x4e4e0
movq 0x208(%rsp), %rdi
callq 0x8730
nopw %cs:(%rax,%rax)