// File: /workspace/github_cpp_makefile_star2_O1/millanek[P]evo/./process_vcf_coding_sequences.h
// Function: calculateN(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, int, bool)
inline double calculateN(const std::string& refCdn, const std::string& altCdn, int diffNum, bool refAncestral) {
    assert(refCdn.length() == altCdn.length());
    assert(diffNum >= 0 && diffNum <= 3);
    double N = 0;
    
    if (diffNum == 0) {
        return s_mapCodonToExpDist[refCdn];
    }
    
    if (diffNum == 1) {
        if (refAncestral) {
            return s_mapCodonToExpDist[refCdn];
        } else { // Also consider the reverse order of mutations if we don't know the ancestral allele
            return (s_mapCodonToExpDist[refCdn] + s_mapCodonToExpDist[altCdn])/2;
        }
    } else {
        if (diffNum == 2) {
            // Find where the diffs are
            std::vector<std::string::size_type> diffPos;
            for (std::string::size_type i = 0; i != refCdn.length(); i++) {
                if (refCdn[i] != altCdn[i]) {
                    diffPos.push_back(i);
                }
            }
            
            // Then calculate N for the possible mutation paths:
            double Nsum = 0;
            // e.g. TAA -> TGA -> TGG
            std::string stepCdn = refCdn;
            stepCdn[diffPos[0]] = altCdn[diffPos[0]];
            Nsum = (s_mapCodonToExpDist[refCdn] + s_mapCodonToExpDist[stepCdn])/2;
            
            // e.g. TAA -> TAG -> TGG
            stepCdn = refCdn;
            stepCdn[diffPos[1]] = altCdn[diffPos[1]];
            Nsum = Nsum + ((s_mapCodonToExpDist[refCdn] + s_mapCodonToExpDist[stepCdn])/2);
            
            if (refAncestral) {
                return Nsum / 2;
            } else { // Also consider the reverse order of mutations if we don't know the ancestral allele
                // e.g. TAA <- TGA <- TGG
                stepCdn = altCdn;
                stepCdn[diffPos[0]] = refCdn[diffPos[0]];
                Nsum = Nsum + ((s_mapCodonToExpDist[altCdn] + s_mapCodonToExpDist[stepCdn])/2);
                
                // e.g. TAA <- TAG <- TGG
                stepCdn = altCdn; // the reverse order of mutations
                stepCdn[diffPos[1]] = refCdn[diffPos[1]];
                Nsum = Nsum + ((s_mapCodonToExpDist[altCdn] + s_mapCodonToExpDist[stepCdn])/2);
                // Get the average N for the four mutation paths:
                return Nsum / 4;
            }
        }
        
        // This could surely be simplified but I write out all the possible mutation paths explicitly
        // one could even have a lookup table for all the three letter pairs and what N scores they give
        if (diffNum == 3) {
            double Nsum = 0;
            
            // e.g. AAA -> TAA -> TGA -> TGG
            std::string stepCdn = refCdn; stepCdn[0] = altCdn[0];
            std::string step2Cdn = stepCdn; step2Cdn[1] = altCdn[1];
            Nsum = (s_mapCodonToExpDist[refCdn] + s_mapCodonToExpDist[stepCdn] + s_mapCodonToExpDist[step2Cdn])/3;
            
            // e.g. AAA -> TAA -> TAG -> TGG
            stepCdn = refCdn; stepCdn[0] = altCdn[0];
            step2Cdn = stepCdn; step2Cdn[2] = altCdn[2];
            Nsum = Nsum + ((s_mapCodonToExpDist[refCdn] + s_mapCodonToExpDist[stepCdn] + s_mapCodonToExpDist[step2Cdn])/3);
            
            // e.g. AAA -> AGA -> TGA -> TGG
            stepCdn = refCdn; stepCdn[1] = altCdn[1];
            step2Cdn = stepCdn; step2Cdn[0] = altCdn[0];
            Nsum = Nsum + ((s_mapCodonToExpDist[refCdn] + s_mapCodonToExpDist[stepCdn] + s_mapCodonToExpDist[step2Cdn])/3);
            
            // e.g. AAA -> AGA -> AGG -> TGG
            stepCdn = refCdn; stepCdn[1] = altCdn[1];
            step2Cdn = stepCdn; step2Cdn[2] = altCdn[2];
            Nsum = Nsum + ((s_mapCodonToExpDist[refCdn] + s_mapCodonToExpDist[stepCdn] + s_mapCodonToExpDist[step2Cdn])/3);
            
            // e.g. AAA -> AAG -> AGG -> TGG
            stepCdn = refCdn; stepCdn[2] = altCdn[2];
            step2Cdn = stepCdn; step2Cdn[1] = altCdn[1];
            Nsum = Nsum + ((s_mapCodonToExpDist[refCdn] + s_mapCodonToExpDist[stepCdn] + s_mapCodonToExpDist[step2Cdn])/3);
            
            // e.g. AAA -> AAG -> TAG -> TGG
            stepCdn = refCdn; stepCdn[2] = altCdn[2];
            step2Cdn = stepCdn; step2Cdn[0] = altCdn[0];
            Nsum = Nsum + ((s_mapCodonToExpDist[refCdn] + s_mapCodonToExpDist[stepCdn] + s_mapCodonToExpDist[step2Cdn])/3);
            
            if (refAncestral) {
                return Nsum / 6;
            } else { // Also consider the reverse order of mutations if we don't know the ancestral allele
                // e.g. AAA <- TAA <- TGA <- TGG
                stepCdn = altCdn; stepCdn[2] = refCdn[2];
                step2Cdn = stepCdn; step2Cdn[1] = refCdn[1];
                Nsum = Nsum + ((s_mapCodonToExpDist[altCdn] + s_mapCodonToExpDist[stepCdn] + s_mapCodonToExpDist[step2Cdn])/3);
                
                // e.g. AAA <- TAA <- TAG <- TGG
                stepCdn = altCdn; stepCdn[1] = refCdn[1];
                step2Cdn = stepCdn; step2Cdn[2] = refCdn[2];
                Nsum = Nsum + ((s_mapCodonToExpDist[altCdn] + s_mapCodonToExpDist[stepCdn] + s_mapCodonToExpDist[step2Cdn])/3);
                
                // e.g. AAA -> AGA -> TGA -> TGG
                stepCdn = altCdn; stepCdn[2] = refCdn[2];
                step2Cdn = stepCdn; step2Cdn[0] = refCdn[0];
                Nsum = Nsum + ((s_mapCodonToExpDist[altCdn] + s_mapCodonToExpDist[stepCdn] + s_mapCodonToExpDist[step2Cdn])/3);
                
                // e.g. AAA <- AGA <- AGG <- TGG
                stepCdn = altCdn; stepCdn[0] = refCdn[0];
                step2Cdn = stepCdn; step2Cdn[2] = refCdn[2];
                Nsum = Nsum + ((s_mapCodonToExpDist[altCdn] + s_mapCodonToExpDist[stepCdn] + s_mapCodonToExpDist[step2Cdn])/3);
                
                // e.g. AAA <- AAG <- AGG <- TGG
                stepCdn = altCdn; stepCdn[0] = refCdn[0];
                step2Cdn = stepCdn; step2Cdn[1] = refCdn[1];
                Nsum = Nsum + ((s_mapCodonToExpDist[altCdn] + s_mapCodonToExpDist[stepCdn] + s_mapCodonToExpDist[step2Cdn])/3);
                
                // e.g. AAA <- AAG <- TAG <- TGG
                stepCdn = altCdn; stepCdn[1] = refCdn[1];
                step2Cdn = stepCdn; step2Cdn[0] = refCdn[0];
                Nsum = Nsum + ((s_mapCodonToExpDist[altCdn] + s_mapCodonToExpDist[stepCdn] + s_mapCodonToExpDist[step2Cdn])/3);
                
                // Get the average N for the twelve mutation paths:
                return Nsum / 12;
            }
        }
        
    }
    return N;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movl %edx, %eax
movq 0x8(%rdi), %rdx
cmpq 0x8(%rsi), %rdx
jne 0x7910f
cmpl $0x4, %eax
jae 0x7912e
movl %ecx, %ebp
movq %rsi, %rbx
movq %rdi, %r14
cmpl $0x2, %eax
je 0x78684
cmpl $0x1, %eax
je 0x7863e
testl %eax, %eax
jne 0x787ec
leaq 0x93e8b(%rip), %rdi     # 0x10c4b8
movq %r14, %rsi
callq 0x34214
movsd (%rax), %xmm0
jmp 0x790fd
leaq 0x93e73(%rip), %rdi     # 0x10c4b8
movq %r14, %rsi
callq 0x34214
movsd (%rax), %xmm0
testb %bpl, %bpl
jne 0x790fd
leaq 0x93e57(%rip), %rdi     # 0x10c4b8
movq %rbx, %rsi
movsd %xmm0, (%rsp)
callq 0x34214
movsd (%rsp), %xmm0
addsd (%rax), %xmm0
mulsd 0x56dd1(%rip), %xmm0    # 0xcf450
jmp 0x790fd
xorpd %xmm0, %xmm0
movapd %xmm0, 0x30(%rsp)
xorl %eax, %eax
movq %rax, 0x40(%rsp)
movq %rax, 0x10(%rsp)
movq 0x8(%r14), %rdx
testq %rdx, %rdx
je 0x786f8
xorl %eax, %eax
leaq 0x30(%rsp), %r15
leaq 0x10(%rsp), %r12
movq (%r14), %rcx
movb (%rcx,%rax), %cl
movq (%rbx), %rdx
cmpb (%rdx,%rax), %cl
je 0x786e2
movq 0x38(%rsp), %rsi
cmpq 0x40(%rsp), %rsi
je 0x786d7
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x38(%rsp)
jmp 0x786e2
movq %r15, %rdi
movq %r12, %rdx
callq 0x57718
movq 0x10(%rsp), %rax
incq %rax
movq %rax, 0x10(%rsp)
movq 0x8(%r14), %rdx
cmpq %rdx, %rax
jne 0x786af
leaq 0x20(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r14), %rsi
addq %rsi, %rdx
leaq 0x10(%rsp), %rdi
callq 0x2e45c
movq 0x30(%rsp), %rax
movq (%rax), %rax
movq (%rbx), %rcx
movb (%rcx,%rax), %cl
movq 0x10(%rsp), %rdx
movb %cl, (%rdx,%rax)
leaq 0x93d8a(%rip), %rdi     # 0x10c4b8
movq %r14, %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
leaq 0x93d71(%rip), %rdi     # 0x10c4b8
leaq 0x10(%rsp), %rsi
callq 0x34214
movsd 0x8(%rsp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
leaq 0x10(%rsp), %rdi
movq %r14, %rsi
callq 0x8270
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rbx), %rcx
movb (%rcx,%rax), %cl
movq 0x10(%rsp), %rdx
movb %cl, (%rdx,%rax)
leaq 0x93d2c(%rip), %rdi     # 0x10c4b8
movq %r14, %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
leaq 0x93d14(%rip), %rdi     # 0x10c4b8
leaq 0x10(%rsp), %rsi
callq 0x34214
movsd 0x8(%rsp), %xmm1
mulsd 0x56c94(%rip), %xmm1    # 0xcf450
movsd (%rsp), %xmm0
addsd (%rax), %xmm0
mulsd 0x56c83(%rip), %xmm0    # 0xcf450
addsd %xmm1, %xmm0
testb %bpl, %bpl
je 0x78bd3
mulsd 0x56c6e(%rip), %xmm0    # 0xcf450
movsd %xmm0, (%rsp)
jmp 0x78cbd
leaq 0x20(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r14), %rsi
addq %rsi, %rdx
leaq 0x10(%rsp), %r15
movq %r15, %rdi
callq 0x2e45c
movq (%rbx), %rax
movb (%rax), %al
movq (%r15), %rcx
movb %al, (%rcx)
leaq 0x40(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq 0x30(%rsp), %rdi
callq 0x2e45c
movq (%rbx), %rax
movb 0x1(%rax), %al
movq 0x30(%rsp), %rcx
movb %al, 0x1(%rcx)
leaq 0x93c73(%rip), %rdi     # 0x10c4b8
movq %r14, %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
leaq 0x93c5a(%rip), %rdi     # 0x10c4b8
leaq 0x10(%rsp), %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
leaq 0x93c40(%rip), %rdi     # 0x10c4b8
leaq 0x30(%rsp), %rsi
callq 0x34214
movsd 0x8(%rsp), %xmm0
addsd (%rsp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
leaq 0x10(%rsp), %rdi
movq %r14, %rsi
callq 0x8270
movq (%rbx), %rax
movb (%rax), %al
leaq 0x10(%rsp), %rsi
movq (%rsi), %rcx
movb %al, (%rcx)
leaq 0x30(%rsp), %rdi
callq 0x8270
movq (%rbx), %rax
movb 0x2(%rax), %al
movq 0x30(%rsp), %rcx
movb %al, 0x2(%rcx)
leaq 0x93be6(%rip), %rdi     # 0x10c4b8
movq %r14, %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x58(%rsp)
leaq 0x93bcd(%rip), %rdi     # 0x10c4b8
leaq 0x10(%rsp), %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
leaq 0x93bb3(%rip), %rdi     # 0x10c4b8
leaq 0x30(%rsp), %rsi
callq 0x34214
movsd 0x58(%rsp), %xmm0
addsd (%rsp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x58(%rsp)
leaq 0x10(%rsp), %rdi
movq %r14, %rsi
callq 0x8270
movq (%rbx), %rax
movb 0x1(%rax), %al
leaq 0x10(%rsp), %rsi
movq (%rsi), %rcx
movb %al, 0x1(%rcx)
leaq 0x30(%rsp), %rdi
callq 0x8270
movq (%rbx), %rax
movb (%rax), %al
movq 0x30(%rsp), %rcx
movb %al, (%rcx)
leaq 0x93b59(%rip), %rdi     # 0x10c4b8
movq %r14, %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x70(%rsp)
leaq 0x93b40(%rip), %rdi     # 0x10c4b8
leaq 0x10(%rsp), %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
leaq 0x93b26(%rip), %rdi     # 0x10c4b8
leaq 0x30(%rsp), %rsi
callq 0x34214
movsd 0x70(%rsp), %xmm0
addsd (%rsp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x70(%rsp)
leaq 0x10(%rsp), %rdi
movq %r14, %rsi
callq 0x8270
movq (%rbx), %rax
movb 0x1(%rax), %al
leaq 0x10(%rsp), %rsi
movq (%rsi), %rcx
movb %al, 0x1(%rcx)
leaq 0x30(%rsp), %rdi
callq 0x8270
movq (%rbx), %rax
movb 0x2(%rax), %al
movq 0x30(%rsp), %rcx
movb %al, 0x2(%rcx)
leaq 0x93aca(%rip), %rdi     # 0x10c4b8
movq %r14, %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x68(%rsp)
leaq 0x93ab1(%rip), %rdi     # 0x10c4b8
leaq 0x10(%rsp), %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
leaq 0x93a97(%rip), %rdi     # 0x10c4b8
leaq 0x30(%rsp), %rsi
callq 0x34214
movsd 0x68(%rsp), %xmm0
addsd (%rsp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x68(%rsp)
leaq 0x10(%rsp), %rdi
movq %r14, %rsi
callq 0x8270
movq (%rbx), %rax
movb 0x2(%rax), %al
leaq 0x10(%rsp), %rsi
movq (%rsi), %rcx
movb %al, 0x2(%rcx)
leaq 0x30(%rsp), %rdi
callq 0x8270
movq (%rbx), %rax
movb 0x1(%rax), %al
movq 0x30(%rsp), %rcx
movb %al, 0x1(%rcx)
leaq 0x93a3b(%rip), %rdi     # 0x10c4b8
movq %r14, %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x60(%rsp)
leaq 0x93a22(%rip), %rdi     # 0x10c4b8
leaq 0x10(%rsp), %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
leaq 0x93a08(%rip), %rdi     # 0x10c4b8
leaq 0x30(%rsp), %rsi
callq 0x34214
movsd 0x60(%rsp), %xmm0
addsd (%rsp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x60(%rsp)
leaq 0x10(%rsp), %rdi
movq %r14, %rsi
callq 0x8270
movq (%rbx), %rax
movb 0x2(%rax), %al
leaq 0x10(%rsp), %rsi
movq (%rsi), %rcx
movb %al, 0x2(%rcx)
leaq 0x30(%rsp), %rdi
callq 0x8270
movq (%rbx), %rax
movb (%rax), %al
movq 0x30(%rsp), %rcx
movb %al, (%rcx)
leaq 0x939ae(%rip), %rdi     # 0x10c4b8
movq %r14, %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
leaq 0x93996(%rip), %rdi     # 0x10c4b8
leaq 0x10(%rsp), %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x78(%rsp)
leaq 0x9397b(%rip), %rdi     # 0x10c4b8
leaq 0x30(%rsp), %rsi
callq 0x34214
movsd 0x8(%rsp), %xmm0
divsd 0x63493(%rip), %xmm0    # 0xdbfe8
movsd 0x58(%rsp), %xmm1
divsd 0x63485(%rip), %xmm1    # 0xdbfe8
addsd %xmm0, %xmm1
movsd 0x70(%rsp), %xmm0
divsd 0x63473(%rip), %xmm0    # 0xdbfe8
movsd 0x68(%rsp), %xmm2
divsd 0x63465(%rip), %xmm2    # 0xdbfe8
addsd %xmm1, %xmm0
addsd %xmm0, %xmm2
movsd 0x60(%rsp), %xmm1
divsd 0x6344f(%rip), %xmm1    # 0xdbfe8
addsd %xmm2, %xmm1
movsd (%rsp), %xmm0
addsd 0x78(%rsp), %xmm0
addsd (%rax), %xmm0
divsd 0x63434(%rip), %xmm0    # 0xdbfe8
addsd %xmm1, %xmm0
testb %bpl, %bpl
je 0x78cef
divsd 0x63427(%rip), %xmm0    # 0xdbff0
movsd %xmm0, (%rsp)
jmp 0x790ca
movsd %xmm0, (%rsp)
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0x8270
movq 0x30(%rsp), %rax
movq (%rax), %rax
movq (%r14), %rcx
movb (%rcx,%rax), %cl
movq 0x10(%rsp), %rdx
movb %cl, (%rdx,%rax)
leaq 0x938b6(%rip), %rdi     # 0x10c4b8
movq %rbx, %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
leaq 0x9389d(%rip), %rdi     # 0x10c4b8
leaq 0x10(%rsp), %rsi
callq 0x34214
movsd 0x8(%rsp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0x8270
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rax
movq (%r14), %rcx
movb (%rcx,%rax), %cl
movq 0x10(%rsp), %rdx
movb %cl, (%rdx,%rax)
leaq 0x93858(%rip), %rdi     # 0x10c4b8
movq %rbx, %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x58(%rsp)
leaq 0x9383f(%rip), %rdi     # 0x10c4b8
leaq 0x10(%rsp), %rsi
callq 0x34214
movsd 0x8(%rsp), %xmm1
mulsd 0x567bf(%rip), %xmm1    # 0xcf450
movsd (%rsp), %xmm0
addsd %xmm1, %xmm0
movsd 0x58(%rsp), %xmm1
addsd (%rax), %xmm1
mulsd 0x567a4(%rip), %xmm1    # 0xcf450
addsd %xmm0, %xmm1
mulsd 0x60458(%rip), %xmm1    # 0xd9110
movsd %xmm1, (%rsp)
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x78cd4
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x790f8
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
jmp 0x790f3
movsd %xmm0, (%rsp)
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0x8270
movq (%r14), %rax
movb 0x2(%rax), %al
leaq 0x10(%rsp), %rsi
movq (%rsi), %rcx
movb %al, 0x2(%rcx)
leaq 0x30(%rsp), %rdi
callq 0x8270
movq (%r14), %rax
movb 0x1(%rax), %al
movq 0x30(%rsp), %rcx
movb %al, 0x1(%rcx)
leaq 0x93787(%rip), %rdi     # 0x10c4b8
movq %rbx, %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
leaq 0x9376e(%rip), %rdi     # 0x10c4b8
leaq 0x10(%rsp), %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x58(%rsp)
leaq 0x93753(%rip), %rdi     # 0x10c4b8
leaq 0x30(%rsp), %rsi
callq 0x34214
movsd 0x8(%rsp), %xmm0
addsd 0x58(%rsp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0x8270
movq (%r14), %rax
movb 0x1(%rax), %al
leaq 0x10(%rsp), %rsi
movq (%rsi), %rcx
movb %al, 0x1(%rcx)
leaq 0x30(%rsp), %rdi
callq 0x8270
movq (%r14), %rax
movb 0x2(%rax), %al
movq 0x30(%rsp), %rcx
movb %al, 0x2(%rcx)
leaq 0x936f6(%rip), %rdi     # 0x10c4b8
movq %rbx, %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x58(%rsp)
leaq 0x936dd(%rip), %rdi     # 0x10c4b8
leaq 0x10(%rsp), %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x70(%rsp)
leaq 0x936c2(%rip), %rdi     # 0x10c4b8
leaq 0x30(%rsp), %rsi
callq 0x34214
movsd 0x58(%rsp), %xmm0
addsd 0x70(%rsp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x58(%rsp)
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0x8270
movq (%r14), %rax
movb 0x2(%rax), %al
leaq 0x10(%rsp), %rsi
movq (%rsi), %rcx
movb %al, 0x2(%rcx)
leaq 0x30(%rsp), %rdi
callq 0x8270
movq (%r14), %rax
movb (%rax), %al
movq 0x30(%rsp), %rcx
movb %al, (%rcx)
leaq 0x93667(%rip), %rdi     # 0x10c4b8
movq %rbx, %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x70(%rsp)
leaq 0x9364e(%rip), %rdi     # 0x10c4b8
leaq 0x10(%rsp), %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x68(%rsp)
leaq 0x93633(%rip), %rdi     # 0x10c4b8
leaq 0x30(%rsp), %rsi
callq 0x34214
movsd 0x70(%rsp), %xmm0
addsd 0x68(%rsp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x70(%rsp)
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0x8270
movq (%r14), %rax
movb (%rax), %al
leaq 0x10(%rsp), %rsi
movq (%rsi), %rcx
movb %al, (%rcx)
leaq 0x30(%rsp), %rdi
callq 0x8270
movq (%r14), %rax
movb 0x2(%rax), %al
movq 0x30(%rsp), %rcx
movb %al, 0x2(%rcx)
leaq 0x935d8(%rip), %rdi     # 0x10c4b8
movq %rbx, %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x68(%rsp)
leaq 0x935bf(%rip), %rdi     # 0x10c4b8
leaq 0x10(%rsp), %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x60(%rsp)
leaq 0x935a4(%rip), %rdi     # 0x10c4b8
leaq 0x30(%rsp), %rsi
callq 0x34214
movsd 0x68(%rsp), %xmm0
addsd 0x60(%rsp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x68(%rsp)
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0x8270
movq (%r14), %rax
movb (%rax), %al
leaq 0x10(%rsp), %rsi
movq (%rsi), %rcx
movb %al, (%rcx)
leaq 0x30(%rsp), %rdi
callq 0x8270
movq (%r14), %rax
movb 0x1(%rax), %al
movq 0x30(%rsp), %rcx
movb %al, 0x1(%rcx)
leaq 0x93549(%rip), %rdi     # 0x10c4b8
movq %rbx, %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x60(%rsp)
leaq 0x93530(%rip), %rdi     # 0x10c4b8
leaq 0x10(%rsp), %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x78(%rsp)
leaq 0x93515(%rip), %rdi     # 0x10c4b8
leaq 0x30(%rsp), %rsi
callq 0x34214
movsd 0x60(%rsp), %xmm0
addsd 0x78(%rsp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x60(%rsp)
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0x8270
movq (%r14), %rax
movb 0x1(%rax), %al
leaq 0x10(%rsp), %rsi
movq (%rsi), %rcx
movb %al, 0x1(%rcx)
leaq 0x30(%rsp), %rdi
callq 0x8270
movq (%r14), %rax
movb (%rax), %al
movq 0x30(%rsp), %rcx
movb %al, (%rcx)
leaq 0x934ba(%rip), %rdi     # 0x10c4b8
movq %rbx, %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x78(%rsp)
leaq 0x934a1(%rip), %rdi     # 0x10c4b8
leaq 0x10(%rsp), %rsi
callq 0x34214
movsd (%rax), %xmm0
movsd %xmm0, 0x80(%rsp)
leaq 0x93483(%rip), %rdi     # 0x10c4b8
leaq 0x30(%rsp), %rsi
callq 0x34214
movsd 0x8(%rsp), %xmm1
divsd 0x62f9b(%rip), %xmm1    # 0xdbfe8
movsd 0x58(%rsp), %xmm2
divsd 0x62f8d(%rip), %xmm2    # 0xdbfe8
movsd (%rsp), %xmm0
addsd %xmm1, %xmm0
addsd %xmm0, %xmm2
movsd 0x70(%rsp), %xmm0
divsd 0x62f72(%rip), %xmm0    # 0xdbfe8
addsd %xmm2, %xmm0
movsd 0x68(%rsp), %xmm1
divsd 0x62f60(%rip), %xmm1    # 0xdbfe8
addsd %xmm0, %xmm1
movsd 0x60(%rsp), %xmm0
divsd 0x62f4e(%rip), %xmm0    # 0xdbfe8
addsd %xmm1, %xmm0
movsd 0x78(%rsp), %xmm1
addsd 0x80(%rsp), %xmm1
addsd (%rax), %xmm1
divsd 0x62f2f(%rip), %xmm1    # 0xdbfe8
addsd %xmm0, %xmm1
divsd 0x62f33(%rip), %xmm1    # 0xdbff8
movsd %xmm1, (%rsp)
movq 0x30(%rsp), %rdi
cmpq %r13, %rdi
je 0x790e1
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x790f8
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
movsd (%rsp), %xmm0
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x6441d(%rip), %rdi     # 0xdd533
leaq 0x599f5(%rip), %rsi     # 0xd2b12
leaq 0x64482(%rip), %rcx     # 0xdd5a6
movl $0x280, %edx            # imm = 0x280
callq 0x82c0
leaq 0x644b8(%rip), %rdi     # 0xdd5ed
leaq 0x599d6(%rip), %rsi     # 0xd2b12
leaq 0x64463(%rip), %rcx     # 0xdd5a6
movl $0x281, %edx            # imm = 0x281
callq 0x82c0
jmp 0x79154
movq %rax, %rbx
jmp 0x791a1
movq %rax, %rbx
jmp 0x79173
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x79173
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x791b8
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
jmp 0x791b3
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r13, %rdi
je 0x791a1
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x791b8
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
movq %rbx, %rdi
callq 0x8840