// File: millanek[P]Dsuite/./Dsuite_utils.h
// Function: TrioDinfo::makeOutVec(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, bool, bool, int)
std::vector<string> makeOutVec(const std::vector<string>& trio, const bool fStats, const bool KS_test, const int arrangement) {
        
        int numCols = 9; if (fStats) numCols++; if(KS_test) numCols = numCols + 2;
        std::vector<string> outVec; outVec.resize(numCols);
        int patternsI = 6; if (fStats) patternsI++; if(KS_test) patternsI = patternsI + 2; // Where will the BBAA, ABBA, etc. counts be put
        
        double KSpval; double KSpvalStrongSitesOnly;
        if (KS_test) {
            KSpval = testIfStrongSitesUniformlyDistributed(arrangement);
            if (KSpval < 2.3e-16) KSpval = 2.3e-16;
            KSpvalStrongSitesOnly = testIfStrongSitesUniformlyDistributed(arrangement, "strongSitesOnly");
            if (KSpvalStrongSitesOnly < 2.3e-16) KSpvalStrongSitesOnly = 2.3e-16;
        }
        
        if (std::fabs(D1_p) < 2.3e-16) { D1_p = 2.3e-16; }
        if (std::fabs(D2_p) < 2.3e-16) { D2_p = 2.3e-16; }
        if (std::fabs(D3_p) < 2.3e-16) { D3_p = 2.3e-16; }
        
        double f4ratio; double Dnum;
        
        switch (arrangement) {
                
        case P3isTrios2_Dpositive:
            outVec[0] = trio[0]; outVec[1] = trio[1]; outVec[2] = trio[2];
            outVec[3] = numToString(D1); outVec[4] = numToString(D1_Z);
            outVec[5] = numToString(D1_p); outVec[patternsI] = numToString(BBAAtotal);
            outVec[patternsI+1] = numToString(ABBAtotal); outVec[patternsI+2] = numToString(BABAtotal);
            if (fStats) { Dnum = ABBAtotal-BABAtotal; f4ratio = Dnum/F_G_denom1; }
            break;
                
        case P3isTrios2_Dnegative:
            outVec[0] = trio[1]; outVec[1] = trio[0]; outVec[2] = trio[2];
            outVec[3] = numToString(std::fabs(D1)); outVec[4] = numToString(D1_Z);
            outVec[5] = numToString(D1_p); outVec[patternsI] = numToString(BBAAtotal);
            outVec[patternsI+1] = numToString(BABAtotal); outVec[patternsI+2] = numToString(ABBAtotal);
            if (fStats) { Dnum = BABAtotal-ABBAtotal; f4ratio = Dnum/F_G_denom1_reversed; }
            break;
                
        case P3isTrios1_Dpositive:
            outVec[0] = trio[0]; outVec[1] = trio[2];
            outVec[2] = trio[1]; outVec[3] = numToString(std::fabs(D2)); outVec[4] = numToString(D2_Z);
            outVec[5] = numToString(D2_p); outVec[patternsI] = numToString(BABAtotal);
            outVec[patternsI+1] = numToString(ABBAtotal); outVec[patternsI+2] = numToString(BBAAtotal);
            if (fStats) { Dnum = ABBAtotal - BBAAtotal; f4ratio = Dnum/F_G_denom2; }
            break;
        
        case P3isTrios1_Dnegative:
            outVec[0] = trio[2]; outVec[1] = trio[0];
            outVec[2] = trio[1]; outVec[3] = numToString(std::fabs(D2)); outVec[4] = numToString(D2_Z);
            outVec[5] = numToString(D2_p); outVec[patternsI] = numToString(BABAtotal);
            outVec[patternsI+1] = numToString(BBAAtotal); outVec[patternsI+2] = numToString(ABBAtotal);
            if (fStats) { Dnum = BBAAtotal - ABBAtotal; f4ratio = Dnum/F_G_denom2_reversed; }
            break;
                
        case P3isTrios0_Dpositive:
            outVec[0] = trio[2]; outVec[1] = trio[1];
            outVec[2] = trio[0]; outVec[3] = numToString(std::fabs(D3)); outVec[4] = numToString(D3_Z);
            outVec[5] = numToString(D3_p); outVec[patternsI] = numToString(ABBAtotal);
            outVec[patternsI+1] = numToString(BBAAtotal); outVec[patternsI+2] = numToString(BABAtotal);
            if (fStats) { Dnum = BBAAtotal - BABAtotal; f4ratio = Dnum/F_G_denom3; }
            break;
        
        case P3isTrios0_Dnegative:
            outVec[0] = trio[1]; outVec[1] = trio[2];
            outVec[2] = trio[0]; outVec[3] = numToString(std::fabs(D3)); outVec[4] = numToString(D3_Z);
            outVec[5] = numToString(D3_p); outVec[patternsI] = numToString(ABBAtotal);
            outVec[patternsI+1] = numToString(BABAtotal); outVec[patternsI+2] = numToString(BBAAtotal);
            if (fStats) { Dnum = BABAtotal - BBAAtotal; f4ratio = Dnum/F_G_denom3_reversed; }
            break;
                
        }
        
        /* investigating rare cases of unexpected f4-ratio values
        if (f4ratio < 0 || f4ratio > 1) {
            std::cerr << "trio[0]: " << trio[0] << "trio[1]: " << trio[1] << "trio[2]: " << trio[2] << std::endl;
            std::cerr << "Arrangement: " << arrangement << std::endl;
            std::cerr << "D1: " << D1 << " D2: " << D2  << " D3: " << D3 << std::endl;
            std::cerr << "ABBAtotal: " << ABBAtotal << "BBAAtotal: " << BBAAtotal  << "BABAtotal: " << BABAtotal << std::endl;
            std::cerr << "ABBAtotal-BABAtotal: " << ABBAtotal-BABAtotal << "ABBAtotal-BBAAtotal: " << ABBAtotal- BBAAtotal  << "BBAAtotal-BABAtotal: " << BBAAtotal-BABAtotal << std::endl;
            std::cerr << "F_G_denom1: " << F_G_denom1 << "; F_G_denom1_reversed: " << F_G_denom1_reversed << std::endl;
            std::cerr << "F_G_denom2: " << F_G_denom2 << "; F_G_denom2_reversed: " << F_G_denom2_reversed << std::endl;
            std::cerr << "F_G_denom3: " << F_G_denom3 << "; F_G_denom3_reversed: " << F_G_denom3_reversed << std::endl;
            std::cerr << "f4ratio: " << f4ratio << std::endl;
        }
        */
        
        
        if (fStats) { // For now just bounding those unexpected cases to the 0 to 1 range
            if (f4ratio < 0) { f4ratio = 0; }
            if (f4ratio > 1) { f4ratio = 1; }
            outVec[6] = numToString(f4ratio);
        }
        if (KS_test) {
            if (fStats) { outVec[7] = numToString(KSpval); outVec[8] = numToString(KSpvalStrongSitesOnly); }
            else  { outVec[6] = numToString(KSpval); outVec[7] = numToString(KSpvalStrongSitesOnly); }
        }
        
        return outVec;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x810, %rsp            # imm = 0x810
movq %rdi, -0x5e0(%rbp)
movb %r8b, %al
movq %rdi, %r8
movq %r8, -0x5d8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
andb $0x1, %cl
movb %cl, -0x19(%rbp)
andb $0x1, %al
movb %al, -0x1a(%rbp)
movl %r9d, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x5d0(%rbp)
movl $0x9, -0x24(%rbp)
testb $0x1, -0x19(%rbp)
je 0x37ecb
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
testb $0x1, -0x1a(%rbp)
je 0x37eda
movl -0x24(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x24(%rbp)
movq -0x5e0(%rbp), %rdi
movb $0x0, -0x25(%rbp)
callq 0x11d80
movq -0x5e0(%rbp), %rdi
movslq -0x24(%rbp), %rsi
callq 0x3d910
jmp 0x37efc
movl $0x6, -0x38(%rbp)
testb $0x1, -0x19(%rbp)
je 0x37f25
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x37f25
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x39414
testb $0x1, -0x1a(%rbp)
je 0x37f34
movl -0x38(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x38(%rbp)
testb $0x1, -0x1a(%rbp)
je 0x380d5
movl -0x20(%rbp), %eax
movl %eax, -0x5ec(%rbp)
leaq -0x69(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
callq 0x8a60
movq -0x5e8(%rbp), %rdx
leaq 0x51998(%rip), %rsi     # 0x898fd
leaq -0x68(%rbp), %rdi
callq 0x9a00
jmp 0x37f70
movl -0x5ec(%rbp), %esi
movq -0x5d0(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0x3d9a0
movsd %xmm0, -0x5f8(%rbp)
jmp 0x37f90
movsd -0x5f8(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x8c08
leaq -0x69(%rbp), %rdi
callq 0x8610
movsd 0x51239(%rip), %xmm0    # 0x891f0
ucomisd -0x40(%rbp), %xmm0
jbe 0x37ffe
movsd 0x5122a(%rip), %xmm0    # 0x891f0
movsd %xmm0, -0x40(%rbp)
jmp 0x37ffe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x37ff0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x8c08
leaq -0x69(%rbp), %rdi
callq 0x8610
jmp 0x39414
movl -0x20(%rbp), %eax
movl %eax, -0x604(%rbp)
leaq -0x91(%rbp), %rdi
movq %rdi, -0x600(%rbp)
callq 0x8a60
movq -0x600(%rbp), %rdx
leaq 0x518de(%rip), %rsi     # 0x89906
leaq -0x90(%rbp), %rdi
callq 0x9a00
jmp 0x38036
movl -0x604(%rbp), %esi
movq -0x5d0(%rbp), %rdi
leaq -0x90(%rbp), %rdx
callq 0x3d9a0
movsd %xmm0, -0x610(%rbp)
jmp 0x38059
movsd -0x610(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x8c08
leaq -0x91(%rbp), %rdi
callq 0x8610
movsd 0x5116a(%rip), %xmm0    # 0x891f0
ucomisd -0x48(%rbp), %xmm0
jbe 0x380d3
movsd 0x5115b(%rip), %xmm0    # 0x891f0
movsd %xmm0, -0x48(%rbp)
jmp 0x380d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x380c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x8c08
leaq -0x91(%rbp), %rdi
callq 0x8610
jmp 0x39414
jmp 0x380d5
movq -0x5d0(%rbp), %rax
fldt 0x30(%rax)
movq %rsp, %rax
fstpt (%rax)
callq 0x3e370
fstpt -0x61c(%rbp)
jmp 0x380f1
fldt -0x61c(%rbp)
fldl 0x510f3(%rip)           # 0x891f0
fucompi %st(1), %st
fstp %st(0)
jbe 0x38115
jmp 0x38105
movq -0x5d0(%rbp), %rax
fldl 0x510de(%rip)           # 0x891f0
fstpt 0x30(%rax)
movq -0x5d0(%rbp), %rax
fldt 0x40(%rax)
movq %rsp, %rax
fstpt (%rax)
callq 0x3e370
fstpt -0x628(%rbp)
jmp 0x38131
fldt -0x628(%rbp)
fldl 0x510b3(%rip)           # 0x891f0
fucompi %st(1), %st
fstp %st(0)
jbe 0x38155
jmp 0x38145
movq -0x5d0(%rbp), %rax
fldl 0x5109e(%rip)           # 0x891f0
fstpt 0x40(%rax)
movq -0x5d0(%rbp), %rax
fldt 0x50(%rax)
movq %rsp, %rax
fstpt (%rax)
callq 0x3e370
fstpt -0x634(%rbp)
jmp 0x38171
fldt -0x634(%rbp)
fldl 0x51073(%rip)           # 0x891f0
fucompi %st(1), %st
fstp %st(0)
jbe 0x38195
jmp 0x38185
movq -0x5d0(%rbp), %rax
fldl 0x5105e(%rip)           # 0x891f0
fstpt 0x50(%rax)
movl -0x20(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x640(%rbp)
subl $0x5, %eax
ja 0x3923f
movq -0x640(%rbp), %rax
leaq 0x51226(%rip), %rcx     # 0x893e0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0x650(%rbp)
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq -0x650(%rbp), %rsi
movq %rax, -0x648(%rbp)
callq 0x10b10
movq -0x648(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x38202
movq -0x18(%rbp), %rdi
movl $0x1, %esi
movq %rsi, -0x660(%rbp)
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq -0x660(%rbp), %rsi
movq %rax, -0x658(%rbp)
callq 0x10b10
movq -0x658(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x38242
movq -0x18(%rbp), %rdi
movl $0x2, %esi
movq %rsi, -0x670(%rbp)
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq -0x670(%rbp), %rsi
movq %rax, -0x668(%rbp)
callq 0x10b10
movq -0x668(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x38282
movq -0x5d0(%rbp), %rax
movsd 0x18(%rax), %xmm0
leaq -0xc8(%rbp), %rdi
callq 0x3e390
jmp 0x3829c
movq -0x5e0(%rbp), %rdi
movl $0x3, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0xc8(%rbp), %rsi
movq %rsi, -0x678(%rbp)
callq 0x86f0
movq -0x678(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x60(%rax), %xmm0
leaq -0xe8(%rbp), %rdi
callq 0x3e390
jmp 0x382e9
movq -0x5e0(%rbp), %rdi
movl $0x4, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0xe8(%rbp), %rsi
movq %rsi, -0x680(%rbp)
callq 0x86f0
movq -0x680(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
fldt 0x30(%rax)
movq %rsp, %rax
fstpt (%rax)
leaq -0x108(%rbp), %rdi
callq 0x3e4a0
jmp 0x38339
movq -0x5e0(%rbp), %rdi
movl $0x5, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x108(%rbp), %rsi
movq %rsi, -0x688(%rbp)
callq 0x86f0
movq -0x688(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x10(%rax), %xmm0
leaq -0x128(%rbp), %rdi
callq 0x3e390
jmp 0x38386
movq -0x5e0(%rbp), %rdi
movslq -0x38(%rbp), %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x128(%rbp), %rsi
movq %rsi, -0x690(%rbp)
callq 0x86f0
movq -0x690(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd (%rax), %xmm0
leaq -0x148(%rbp), %rdi
callq 0x3e390
jmp 0x383d1
movq -0x5e0(%rbp), %rdi
movl -0x38(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x148(%rbp), %rsi
movq %rsi, -0x698(%rbp)
callq 0x86f0
movq -0x698(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x8(%rax), %xmm0
leaq -0x168(%rbp), %rdi
callq 0x3e390
jmp 0x38421
movq -0x5e0(%rbp), %rdi
movl -0x38(%rbp), %eax
addl $0x2, %eax
movslq %eax, %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x168(%rbp), %rsi
callq 0x86f0
leaq -0x168(%rbp), %rdi
callq 0x8c08
testb $0x1, -0x19(%rbp)
je 0x38487
movq -0x5d0(%rbp), %rax
movsd (%rax), %xmm0
subsd 0x8(%rax), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0xa8(%rbp), %xmm0
divsd 0x98(%rax), %xmm0
movsd %xmm0, -0xa0(%rbp)
jmp 0x3923f
movq -0x18(%rbp), %rdi
movl $0x1, %esi
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq %rax, -0x6a0(%rbp)
xorl %eax, %eax
movl %eax, %esi
callq 0x10b10
movq -0x6a0(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x384c2
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq %rax, -0x6a8(%rbp)
movl $0x1, %esi
callq 0x10b10
movq -0x6a8(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x384f8
movq -0x18(%rbp), %rdi
movl $0x2, %esi
movq %rsi, -0x6b8(%rbp)
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq -0x6b8(%rbp), %rsi
movq %rax, -0x6b0(%rbp)
callq 0x10b10
movq -0x6b0(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x38538
movq -0x5d0(%rbp), %rax
movsd 0x18(%rax), %xmm0
movaps 0x50e85(%rip), %xmm1    # 0x893d0
pand %xmm1, %xmm0
leaq -0x188(%rbp), %rdi
callq 0x3e390
jmp 0x3855d
movq -0x5e0(%rbp), %rdi
movl $0x3, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x188(%rbp), %rsi
movq %rsi, -0x6c0(%rbp)
callq 0x86f0
movq -0x6c0(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x60(%rax), %xmm0
leaq -0x1a8(%rbp), %rdi
callq 0x3e390
jmp 0x385aa
movq -0x5e0(%rbp), %rdi
movl $0x4, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x1a8(%rbp), %rsi
movq %rsi, -0x6c8(%rbp)
callq 0x86f0
movq -0x6c8(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
fldt 0x30(%rax)
movq %rsp, %rax
fstpt (%rax)
leaq -0x1c8(%rbp), %rdi
callq 0x3e4a0
jmp 0x385fa
movq -0x5e0(%rbp), %rdi
movl $0x5, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x1c8(%rbp), %rsi
movq %rsi, -0x6d0(%rbp)
callq 0x86f0
movq -0x6d0(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x10(%rax), %xmm0
leaq -0x1e8(%rbp), %rdi
callq 0x3e390
jmp 0x38647
movq -0x5e0(%rbp), %rdi
movslq -0x38(%rbp), %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x1e8(%rbp), %rsi
movq %rsi, -0x6d8(%rbp)
callq 0x86f0
movq -0x6d8(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x8(%rax), %xmm0
leaq -0x208(%rbp), %rdi
callq 0x3e390
jmp 0x38693
movq -0x5e0(%rbp), %rdi
movl -0x38(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x208(%rbp), %rsi
movq %rsi, -0x6e0(%rbp)
callq 0x86f0
movq -0x6e0(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd (%rax), %xmm0
leaq -0x228(%rbp), %rdi
callq 0x3e390
jmp 0x386e2
movq -0x5e0(%rbp), %rdi
movl -0x38(%rbp), %eax
addl $0x2, %eax
movslq %eax, %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x228(%rbp), %rsi
callq 0x86f0
leaq -0x228(%rbp), %rdi
callq 0x8c08
testb $0x1, -0x19(%rbp)
je 0x38748
movq -0x5d0(%rbp), %rax
movsd 0x8(%rax), %xmm0
subsd (%rax), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0xa8(%rbp), %xmm0
divsd 0xa0(%rax), %xmm0
movsd %xmm0, -0xa0(%rbp)
jmp 0x3923f
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0x6f0(%rbp)
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq -0x6f0(%rbp), %rsi
movq %rax, -0x6e8(%rbp)
callq 0x10b10
movq -0x6e8(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x3878c
movq -0x18(%rbp), %rdi
movl $0x2, %esi
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq %rax, -0x6f8(%rbp)
movl $0x1, %esi
callq 0x10b10
movq -0x6f8(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x387c3
movq -0x18(%rbp), %rdi
movl $0x1, %esi
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq %rax, -0x700(%rbp)
movl $0x2, %esi
callq 0x10b10
movq -0x700(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x387fa
movq -0x5d0(%rbp), %rax
movsd 0x20(%rax), %xmm0
movaps 0x50bc3(%rip), %xmm1    # 0x893d0
pand %xmm1, %xmm0
leaq -0x248(%rbp), %rdi
callq 0x3e390
jmp 0x3881f
movq -0x5e0(%rbp), %rdi
movl $0x3, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x248(%rbp), %rsi
movq %rsi, -0x708(%rbp)
callq 0x86f0
movq -0x708(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x68(%rax), %xmm0
leaq -0x268(%rbp), %rdi
callq 0x3e390
jmp 0x3886c
movq -0x5e0(%rbp), %rdi
movl $0x4, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x268(%rbp), %rsi
movq %rsi, -0x710(%rbp)
callq 0x86f0
movq -0x710(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
fldt 0x40(%rax)
movq %rsp, %rax
fstpt (%rax)
leaq -0x288(%rbp), %rdi
callq 0x3e4a0
jmp 0x388bc
movq -0x5e0(%rbp), %rdi
movl $0x5, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x288(%rbp), %rsi
movq %rsi, -0x718(%rbp)
callq 0x86f0
movq -0x718(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x8(%rax), %xmm0
leaq -0x2a8(%rbp), %rdi
callq 0x3e390
jmp 0x38909
movq -0x5e0(%rbp), %rdi
movslq -0x38(%rbp), %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x2a8(%rbp), %rsi
movq %rsi, -0x720(%rbp)
callq 0x86f0
movq -0x720(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd (%rax), %xmm0
leaq -0x2c8(%rbp), %rdi
callq 0x3e390
jmp 0x38954
movq -0x5e0(%rbp), %rdi
movl -0x38(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x2c8(%rbp), %rsi
movq %rsi, -0x728(%rbp)
callq 0x86f0
movq -0x728(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x10(%rax), %xmm0
leaq -0x2e8(%rbp), %rdi
callq 0x3e390
jmp 0x389a4
movq -0x5e0(%rbp), %rdi
movl -0x38(%rbp), %eax
addl $0x2, %eax
movslq %eax, %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x86f0
leaq -0x2e8(%rbp), %rdi
callq 0x8c08
testb $0x1, -0x19(%rbp)
je 0x38a0a
movq -0x5d0(%rbp), %rax
movsd (%rax), %xmm0
subsd 0x10(%rax), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0xa8(%rbp), %xmm0
divsd 0xc8(%rax), %xmm0
movsd %xmm0, -0xa0(%rbp)
jmp 0x3923f
movq -0x18(%rbp), %rdi
movl $0x2, %esi
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq %rax, -0x730(%rbp)
xorl %eax, %eax
movl %eax, %esi
callq 0x10b10
movq -0x730(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x38a45
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq %rax, -0x738(%rbp)
movl $0x1, %esi
callq 0x10b10
movq -0x738(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x38a7b
movq -0x18(%rbp), %rdi
movl $0x1, %esi
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq %rax, -0x740(%rbp)
movl $0x2, %esi
callq 0x10b10
movq -0x740(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x38ab2
movq -0x5d0(%rbp), %rax
movsd 0x20(%rax), %xmm0
movaps 0x5090b(%rip), %xmm1    # 0x893d0
pand %xmm1, %xmm0
leaq -0x308(%rbp), %rdi
callq 0x3e390
jmp 0x38ad7
movq -0x5e0(%rbp), %rdi
movl $0x3, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x308(%rbp), %rsi
movq %rsi, -0x748(%rbp)
callq 0x86f0
movq -0x748(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x68(%rax), %xmm0
leaq -0x328(%rbp), %rdi
callq 0x3e390
jmp 0x38b24
movq -0x5e0(%rbp), %rdi
movl $0x4, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x328(%rbp), %rsi
movq %rsi, -0x750(%rbp)
callq 0x86f0
movq -0x750(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
fldt 0x40(%rax)
movq %rsp, %rax
fstpt (%rax)
leaq -0x348(%rbp), %rdi
callq 0x3e4a0
jmp 0x38b74
movq -0x5e0(%rbp), %rdi
movl $0x5, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x348(%rbp), %rsi
movq %rsi, -0x758(%rbp)
callq 0x86f0
movq -0x758(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x8(%rax), %xmm0
leaq -0x368(%rbp), %rdi
callq 0x3e390
jmp 0x38bc1
movq -0x5e0(%rbp), %rdi
movslq -0x38(%rbp), %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x368(%rbp), %rsi
movq %rsi, -0x760(%rbp)
callq 0x86f0
movq -0x760(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x10(%rax), %xmm0
leaq -0x388(%rbp), %rdi
callq 0x3e390
jmp 0x38c0d
movq -0x5e0(%rbp), %rdi
movl -0x38(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x388(%rbp), %rsi
movq %rsi, -0x768(%rbp)
callq 0x86f0
movq -0x768(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd (%rax), %xmm0
leaq -0x3a8(%rbp), %rdi
callq 0x3e390
jmp 0x38c5c
movq -0x5e0(%rbp), %rdi
movl -0x38(%rbp), %eax
addl $0x2, %eax
movslq %eax, %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x3a8(%rbp), %rsi
callq 0x86f0
leaq -0x3a8(%rbp), %rdi
callq 0x8c08
testb $0x1, -0x19(%rbp)
je 0x38cc2
movq -0x5d0(%rbp), %rax
movsd 0x10(%rax), %xmm0
subsd (%rax), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0xa8(%rbp), %xmm0
divsd 0xd0(%rax), %xmm0
movsd %xmm0, -0xa0(%rbp)
jmp 0x3923f
movq -0x18(%rbp), %rdi
movl $0x2, %esi
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq %rax, -0x770(%rbp)
xorl %eax, %eax
movl %eax, %esi
callq 0x10b10
movq -0x770(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x38cfd
movq -0x18(%rbp), %rdi
movl $0x1, %esi
movq %rsi, -0x780(%rbp)
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq -0x780(%rbp), %rsi
movq %rax, -0x778(%rbp)
callq 0x10b10
movq -0x778(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x38d3d
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq %rax, -0x788(%rbp)
movl $0x2, %esi
callq 0x10b10
movq -0x788(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x38d73
movq -0x5d0(%rbp), %rax
movsd 0x28(%rax), %xmm0
movaps 0x5064a(%rip), %xmm1    # 0x893d0
pand %xmm1, %xmm0
leaq -0x3c8(%rbp), %rdi
callq 0x3e390
jmp 0x38d98
movq -0x5e0(%rbp), %rdi
movl $0x3, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x3c8(%rbp), %rsi
movq %rsi, -0x790(%rbp)
callq 0x86f0
movq -0x790(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x70(%rax), %xmm0
leaq -0x3e8(%rbp), %rdi
callq 0x3e390
jmp 0x38de5
movq -0x5e0(%rbp), %rdi
movl $0x4, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x3e8(%rbp), %rsi
movq %rsi, -0x798(%rbp)
callq 0x86f0
movq -0x798(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
fldt 0x50(%rax)
movq %rsp, %rax
fstpt (%rax)
leaq -0x408(%rbp), %rdi
callq 0x3e4a0
jmp 0x38e35
movq -0x5e0(%rbp), %rdi
movl $0x5, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x408(%rbp), %rsi
movq %rsi, -0x7a0(%rbp)
callq 0x86f0
movq -0x7a0(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd (%rax), %xmm0
leaq -0x428(%rbp), %rdi
callq 0x3e390
jmp 0x38e81
movq -0x5e0(%rbp), %rdi
movslq -0x38(%rbp), %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x428(%rbp), %rsi
movq %rsi, -0x7a8(%rbp)
callq 0x86f0
movq -0x7a8(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x10(%rax), %xmm0
leaq -0x448(%rbp), %rdi
callq 0x3e390
jmp 0x38ecd
movq -0x5e0(%rbp), %rdi
movl -0x38(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x448(%rbp), %rsi
movq %rsi, -0x7b0(%rbp)
callq 0x86f0
movq -0x7b0(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x8(%rax), %xmm0
leaq -0x468(%rbp), %rdi
callq 0x3e390
jmp 0x38f1d
movq -0x5e0(%rbp), %rdi
movl -0x38(%rbp), %eax
addl $0x2, %eax
movslq %eax, %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x468(%rbp), %rsi
callq 0x86f0
leaq -0x468(%rbp), %rdi
callq 0x8c08
testb $0x1, -0x19(%rbp)
je 0x38f84
movq -0x5d0(%rbp), %rax
movsd 0x10(%rax), %xmm0
subsd 0x8(%rax), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0xa8(%rbp), %xmm0
divsd 0xf8(%rax), %xmm0
movsd %xmm0, -0xa0(%rbp)
jmp 0x3923f
movq -0x18(%rbp), %rdi
movl $0x1, %esi
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq %rax, -0x7b8(%rbp)
xorl %eax, %eax
movl %eax, %esi
callq 0x10b10
movq -0x7b8(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x38fbf
movq -0x18(%rbp), %rdi
movl $0x2, %esi
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq %rax, -0x7c0(%rbp)
movl $0x1, %esi
callq 0x10b10
movq -0x7c0(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x38ff6
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x10720
movq -0x5e0(%rbp), %rdi
movq %rax, -0x7c8(%rbp)
movl $0x2, %esi
callq 0x10b10
movq -0x7c8(%rbp), %rsi
movq %rax, %rdi
callq 0x8070
jmp 0x3902c
movq -0x5d0(%rbp), %rax
movsd 0x28(%rax), %xmm0
movaps 0x50391(%rip), %xmm1    # 0x893d0
pand %xmm1, %xmm0
leaq -0x488(%rbp), %rdi
callq 0x3e390
jmp 0x39051
movq -0x5e0(%rbp), %rdi
movl $0x3, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x488(%rbp), %rsi
movq %rsi, -0x7d0(%rbp)
callq 0x86f0
movq -0x7d0(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x70(%rax), %xmm0
leaq -0x4a8(%rbp), %rdi
callq 0x3e390
jmp 0x3909e
movq -0x5e0(%rbp), %rdi
movl $0x4, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x4a8(%rbp), %rsi
movq %rsi, -0x7d8(%rbp)
callq 0x86f0
movq -0x7d8(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
fldt 0x50(%rax)
movq %rsp, %rax
fstpt (%rax)
leaq -0x4c8(%rbp), %rdi
callq 0x3e4a0
jmp 0x390ee
movq -0x5e0(%rbp), %rdi
movl $0x5, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x4c8(%rbp), %rsi
movq %rsi, -0x7e0(%rbp)
callq 0x86f0
movq -0x7e0(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd (%rax), %xmm0
leaq -0x4e8(%rbp), %rdi
callq 0x3e390
jmp 0x3913a
movq -0x5e0(%rbp), %rdi
movslq -0x38(%rbp), %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x4e8(%rbp), %rsi
movq %rsi, -0x7e8(%rbp)
callq 0x86f0
movq -0x7e8(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x8(%rax), %xmm0
leaq -0x508(%rbp), %rdi
callq 0x3e390
jmp 0x39186
movq -0x5e0(%rbp), %rdi
movl -0x38(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x508(%rbp), %rsi
movq %rsi, -0x7f0(%rbp)
callq 0x86f0
movq -0x7f0(%rbp), %rdi
callq 0x8c08
movq -0x5d0(%rbp), %rax
movsd 0x10(%rax), %xmm0
leaq -0x528(%rbp), %rdi
callq 0x3e390
jmp 0x391d6
movq -0x5e0(%rbp), %rdi
movl -0x38(%rbp), %eax
addl $0x2, %eax
movslq %eax, %rsi
callq 0x10b10
movq %rax, %rdi
leaq -0x528(%rbp), %rsi
callq 0x86f0
leaq -0x528(%rbp), %rdi
callq 0x8c08
testb $0x1, -0x19(%rbp)
je 0x3923d
movq -0x5d0(%rbp), %rax
movsd 0x8(%rax), %xmm0
subsd 0x10(%rax), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0xa8(%rbp), %xmm0
divsd 0x100(%rax), %xmm0
movsd %xmm0, -0xa0(%rbp)
jmp 0x3923f
testb $0x1, -0x19(%rbp)
je 0x392c9
xorps %xmm0, %xmm0
ucomisd -0xa0(%rbp), %xmm0
jbe 0x39261
xorps %xmm0, %xmm0
movsd %xmm0, -0xa0(%rbp)
movsd -0xa0(%rbp), %xmm0
movsd 0x4f237(%rip), %xmm1    # 0x884a8
ucomisd %xmm1, %xmm0
jbe 0x39287
movsd 0x4f229(%rip), %xmm0    # 0x884a8
movsd %xmm0, -0xa0(%rbp)
movsd -0xa0(%rbp), %xmm0
leaq -0x548(%rbp), %rdi
callq 0x3e390
jmp 0x3929d
movq -0x5e0(%rbp), %rdi
movl $0x6, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x548(%rbp), %rsi
callq 0x86f0
leaq -0x548(%rbp), %rdi
callq 0x8c08
testb $0x1, -0x1a(%rbp)
je 0x393ee
testb $0x1, -0x19(%rbp)
je 0x39367
movsd -0x40(%rbp), %xmm0
leaq -0x568(%rbp), %rdi
callq 0x3e390
jmp 0x392f0
movq -0x5e0(%rbp), %rdi
movl $0x7, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x568(%rbp), %rsi
movq %rsi, -0x7f8(%rbp)
callq 0x86f0
movq -0x7f8(%rbp), %rdi
callq 0x8c08
movsd -0x48(%rbp), %xmm0
leaq -0x588(%rbp), %rdi
callq 0x3e390
jmp 0x39336
movq -0x5e0(%rbp), %rdi
movl $0x8, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x588(%rbp), %rsi
callq 0x86f0
leaq -0x588(%rbp), %rdi
callq 0x8c08
jmp 0x393ec
movsd -0x40(%rbp), %xmm0
leaq -0x5a8(%rbp), %rdi
callq 0x3e390
jmp 0x3937a
movq -0x5e0(%rbp), %rdi
movl $0x6, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x5a8(%rbp), %rsi
movq %rsi, -0x800(%rbp)
callq 0x86f0
movq -0x800(%rbp), %rdi
callq 0x8c08
movsd -0x48(%rbp), %xmm0
leaq -0x5c8(%rbp), %rdi
callq 0x3e390
jmp 0x393c0
movq -0x5e0(%rbp), %rdi
movl $0x7, %esi
callq 0x10b10
movq %rax, %rdi
leaq -0x5c8(%rbp), %rsi
callq 0x86f0
leaq -0x5c8(%rbp), %rdi
callq 0x8c08
jmp 0x393ee
movb $0x1, -0x25(%rbp)
testb $0x1, -0x25(%rbp)
jne 0x39404
movq -0x5e0(%rbp), %rdi
callq 0x10760
movq -0x5d8(%rbp), %rax
addq $0x810, %rsp            # imm = 0x810
popq %rbp
retq
movq -0x5e0(%rbp), %rdi
callq 0x10760
movq -0x30(%rbp), %rdi
callq 0x8a50
nopl (%rax)