// File: chfeder[P]turbulence_generator/./TurbGen.h
// Function: TurbGen::get_turb_vector(double const*, double*)
void get_turb_vector(const double pos[], double v[]) {
        // ******************************************************
        // Compute physical turbulent vector v[ndim]=(vx,vy,vz) at position pos[ndim]=(x,y,z)
        // from loop over all turbulent modes; return into double v[ndim]
        // ******************************************************
        if (verbose > 1) TurbGen_printf(FuncSig(__func__)+"entering.\n");
        // containers for speeding-up calculations below
        std::vector<double> ampl(nmodes);
        std::vector<double> sinx(nmodes); std::vector<double> cosx(nmodes);
        std::vector<double> siny(nmodes); std::vector<double> cosy(nmodes);
        std::vector<double> sinz(nmodes); std::vector<double> cosz(nmodes);
        // pre-compute some trigonometry
        for (int m = 0; m < nmodes; m++) {
            ampl[m] = 2.0 * sol_weight_norm * this->ampl[m]; // pre-compute amplitude including normalisation factors
            sinx[m] = sin(mode[X][m]*pos[X]);
            cosx[m] = cos(mode[X][m]*pos[X]);
            if ((int)ndim > 1) {
                siny[m] = sin(mode[Y][m]*pos[Y]);
                cosy[m] = cos(mode[Y][m]*pos[Y]);
            } else {
                siny[m] = 0.0;
                cosy[m] = 1.0;
            }
            if ((int)ndim > 2) {
                sinz[m] = sin(mode[Z][m]*pos[Z]);
                cosz[m] = cos(mode[Z][m]*pos[Z]);
            } else {
                sinz[m] = 0.0;
                cosz[m] = 1.0;
            }
        }
        // scratch variables
        double real, imag;
        // init return vector with zero
        v[X] = 0.0; if (ncmp > 1) v[Y] = 0.0; if (ncmp > 2) v[Z] = 0.0;
        // loop over modes
        for (int m = 0; m < nmodes; m++) {
            // these are the real and imaginary parts, respectively, of
            //  e^{ i \vec{k} \cdot \vec{x} } = cos(kx*x + ky*y + kz*z) + i sin(kx*x + ky*y + kz*z)
            real = ( cosx[m]*cosy[m] - sinx[m]*siny[m] ) * cosz[m] - ( sinx[m]*cosy[m] + cosx[m]*siny[m] ) * sinz[m];
            imag = cosx[m] * ( cosy[m]*sinz[m] + siny[m]*cosz[m] ) + sinx[m] * ( cosy[m]*cosz[m] - siny[m]*sinz[m] );
            // return vector for this position x, y, z
            v[X] += ampl[m] * (aka[X][m]*real - akb[X][m]*imag) * ampl_factor[X];
            if (ncmp > 1) v[Y] += ampl[m] * (aka[Y][m]*real - akb[Y][m]*imag) * ampl_factor[Y];
            if (ncmp > 2) v[Z] += ampl[m] * (aka[Z][m]*real - akb[Z][m]*imag) * ampl_factor[Z];
        }
        if (verbose > 1) TurbGen_printf(FuncSig(__func__)+"exiting.\n");
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x390, %rsp            # imm = 0x390
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x1f8(%rbp)
cmpl $0x1, (%rax)
jle 0x4b51
leaq -0x79(%rbp), %rdi
movq %rdi, -0x200(%rbp)
callq 0x3560
movq -0x200(%rbp), %rdx
leaq 0x11732(%rip), %rsi     # 0x1619b
leaq -0x78(%rbp), %rdi
callq 0x4620
jmp 0x4a74
movq -0x1f8(%rbp), %rsi
leaq -0x58(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0x9b50
jmp 0x4a8a
leaq 0x109ca(%rip), %rdx     # 0x1545b
leaq -0x38(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x9b00
jmp 0x4aa0
movq -0x1f8(%rbp), %rdi
xorl %eax, %eax
leaq -0x38(%rbp), %rsi
callq 0x99f0
jmp 0x4ab4
leaq -0x38(%rbp), %rdi
callq 0x31e0
leaq -0x58(%rbp), %rdi
callq 0x31e0
leaq -0x78(%rbp), %rdi
callq 0x31e0
leaq -0x79(%rbp), %rdi
callq 0x3350
jmp 0x4b51
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4b43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4b3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4b31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x31e0
leaq -0x58(%rbp), %rdi
callq 0x31e0
leaq -0x78(%rbp), %rdi
callq 0x31e0
leaq -0x79(%rbp), %rdi
callq 0x3350
jmp 0x5a5c
movq -0x1f8(%rbp), %rax
movslq 0x154(%rax), %rax
movq %rax, -0x210(%rbp)
leaq -0xa9(%rbp), %rdi
movq %rdi, -0x208(%rbp)
callq 0x12b90
movq -0x210(%rbp), %rsi
movq -0x208(%rbp), %rdx
leaq -0xa8(%rbp), %rdi
callq 0x12bb0
jmp 0x4b95
leaq -0xa9(%rbp), %rdi
callq 0xf850
movq -0x1f8(%rbp), %rax
movslq 0x154(%rax), %rax
movq %rax, -0x220(%rbp)
leaq -0xc9(%rbp), %rdi
movq %rdi, -0x218(%rbp)
callq 0x12b90
movq -0x220(%rbp), %rsi
movq -0x218(%rbp), %rdx
leaq -0xc8(%rbp), %rdi
callq 0x12bb0
jmp 0x4be5
leaq -0xc9(%rbp), %rdi
callq 0xf850
movq -0x1f8(%rbp), %rax
movslq 0x154(%rax), %rax
movq %rax, -0x230(%rbp)
leaq -0xe9(%rbp), %rdi
movq %rdi, -0x228(%rbp)
callq 0x12b90
movq -0x230(%rbp), %rsi
movq -0x228(%rbp), %rdx
leaq -0xe8(%rbp), %rdi
callq 0x12bb0
jmp 0x4c35
leaq -0xe9(%rbp), %rdi
callq 0xf850
movq -0x1f8(%rbp), %rax
movslq 0x154(%rax), %rax
movq %rax, -0x240(%rbp)
leaq -0x109(%rbp), %rdi
movq %rdi, -0x238(%rbp)
callq 0x12b90
movq -0x240(%rbp), %rsi
movq -0x238(%rbp), %rdx
leaq -0x108(%rbp), %rdi
callq 0x12bb0
jmp 0x4c85
leaq -0x109(%rbp), %rdi
callq 0xf850
movq -0x1f8(%rbp), %rax
movslq 0x154(%rax), %rax
movq %rax, -0x250(%rbp)
leaq -0x129(%rbp), %rdi
movq %rdi, -0x248(%rbp)
callq 0x12b90
movq -0x250(%rbp), %rsi
movq -0x248(%rbp), %rdx
leaq -0x128(%rbp), %rdi
callq 0x12bb0
jmp 0x4cd5
leaq -0x129(%rbp), %rdi
callq 0xf850
movq -0x1f8(%rbp), %rax
movslq 0x154(%rax), %rax
movq %rax, -0x260(%rbp)
leaq -0x149(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0x12b90
movq -0x260(%rbp), %rsi
movq -0x258(%rbp), %rdx
leaq -0x148(%rbp), %rdi
callq 0x12bb0
jmp 0x4d25
leaq -0x149(%rbp), %rdi
callq 0xf850
movq -0x1f8(%rbp), %rax
movslq 0x154(%rax), %rax
movq %rax, -0x270(%rbp)
leaq -0x169(%rbp), %rdi
movq %rdi, -0x268(%rbp)
callq 0x12b90
movq -0x270(%rbp), %rsi
movq -0x268(%rbp), %rdx
leaq -0x168(%rbp), %rdi
callq 0x12bb0
jmp 0x4d75
leaq -0x169(%rbp), %rdi
callq 0xf850
movl $0x0, -0x170(%rbp)
movq -0x1f8(%rbp), %rcx
movl -0x170(%rbp), %eax
cmpl 0x154(%rcx), %eax
jge 0x51ae
movq -0x1f8(%rbp), %rdi
movsd 0x1027d(%rip), %xmm0    # 0x15030
mulsd 0x1d8(%rdi), %xmm0
movsd %xmm0, -0x290(%rbp)
addq $0x138, %rdi            # imm = 0x138
movslq -0x170(%rbp), %rsi
callq 0xad50
movsd -0x290(%rbp), %xmm0
mulsd (%rax), %xmm0
movsd %xmm0, -0x288(%rbp)
movslq -0x170(%rbp), %rsi
leaq -0xa8(%rbp), %rdi
callq 0xad50
movsd -0x288(%rbp), %xmm0
movq -0x1f8(%rbp), %rdi
movsd %xmm0, (%rax)
addq $0x48, %rdi
movslq -0x170(%rbp), %rsi
callq 0xad50
movsd (%rax), %xmm0
movq -0x10(%rbp), %rax
mulsd (%rax), %xmm0
callq 0x30a0
movsd %xmm0, -0x280(%rbp)
movslq -0x170(%rbp), %rsi
leaq -0xc8(%rbp), %rdi
callq 0xad50
movsd -0x280(%rbp), %xmm0
movq -0x1f8(%rbp), %rdi
movsd %xmm0, (%rax)
addq $0x48, %rdi
movslq -0x170(%rbp), %rsi
callq 0xad50
movsd (%rax), %xmm0
movq -0x10(%rbp), %rax
mulsd (%rax), %xmm0
callq 0x35a0
movsd %xmm0, -0x278(%rbp)
movslq -0x170(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0xad50
movsd -0x278(%rbp), %xmm0
movq %rax, %rcx
movq -0x1f8(%rbp), %rax
movsd %xmm0, (%rcx)
cvttsd2si 0x158(%rax), %eax
cmpl $0x1, %eax
jle 0x5064
movq -0x1f8(%rbp), %rdi
addq $0x48, %rdi
addq $0x18, %rdi
movslq -0x170(%rbp), %rsi
callq 0xad50
movsd (%rax), %xmm0
movq -0x10(%rbp), %rax
mulsd 0x8(%rax), %xmm0
callq 0x30a0
movsd %xmm0, -0x2a0(%rbp)
movslq -0x170(%rbp), %rsi
leaq -0x108(%rbp), %rdi
callq 0xad50
movsd -0x2a0(%rbp), %xmm0
movq -0x1f8(%rbp), %rdi
movsd %xmm0, (%rax)
addq $0x48, %rdi
addq $0x18, %rdi
movslq -0x170(%rbp), %rsi
callq 0xad50
movsd (%rax), %xmm0
movq -0x10(%rbp), %rax
mulsd 0x8(%rax), %xmm0
callq 0x35a0
movsd %xmm0, -0x298(%rbp)
movslq -0x170(%rbp), %rsi
leaq -0x128(%rbp), %rdi
callq 0xad50
movsd -0x298(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x509d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xa9(%rbp), %rdi
callq 0xf850
jmp 0x5a5c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xc9(%rbp), %rdi
callq 0xf850
jmp 0x5a50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xe9(%rbp), %rdi
callq 0xf850
jmp 0x5a44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x109(%rbp), %rdi
callq 0xf850
jmp 0x5a38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x129(%rbp), %rdi
callq 0xf850
jmp 0x5a2c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x149(%rbp), %rdi
callq 0xf850
jmp 0x5a20
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x169(%rbp), %rdi
callq 0xf850
jmp 0x5a14
movslq -0x170(%rbp), %rsi
leaq -0x108(%rbp), %rdi
callq 0xad50
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movslq -0x170(%rbp), %rsi
leaq -0x128(%rbp), %rdi
callq 0xad50
movsd 0xff7f(%rip), %xmm0     # 0x15018
movsd %xmm0, (%rax)
movq -0x1f8(%rbp), %rax
cvttsd2si 0x158(%rax), %eax
cmpl $0x2, %eax
jle 0x515f
movq -0x1f8(%rbp), %rdi
addq $0x48, %rdi
addq $0x30, %rdi
movslq -0x170(%rbp), %rsi
callq 0xad50
movsd (%rax), %xmm0
movq -0x10(%rbp), %rax
mulsd 0x10(%rax), %xmm0
callq 0x30a0
movsd %xmm0, -0x2b0(%rbp)
movslq -0x170(%rbp), %rsi
leaq -0x148(%rbp), %rdi
callq 0xad50
movsd -0x2b0(%rbp), %xmm0
movq -0x1f8(%rbp), %rdi
movsd %xmm0, (%rax)
addq $0x48, %rdi
addq $0x30, %rdi
movslq -0x170(%rbp), %rsi
callq 0xad50
movsd (%rax), %xmm0
movq -0x10(%rbp), %rax
mulsd 0x10(%rax), %xmm0
callq 0x35a0
movsd %xmm0, -0x2a8(%rbp)
movslq -0x170(%rbp), %rsi
leaq -0x168(%rbp), %rdi
callq 0xad50
movsd -0x2a8(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x5198
movslq -0x170(%rbp), %rsi
leaq -0x148(%rbp), %rdi
callq 0xad50
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movslq -0x170(%rbp), %rsi
leaq -0x168(%rbp), %rdi
callq 0xad50
movsd 0xfe84(%rip), %xmm0     # 0x15018
movsd %xmm0, (%rax)
jmp 0x519a
movl -0x170(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x170(%rbp)
jmp 0x4d8b
movq -0x1f8(%rbp), %rax
movq -0x18(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rcx)
cmpl $0x1, 0x160(%rax)
jle 0x51d5
movq -0x18(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x8(%rax)
movq -0x1f8(%rbp), %rax
cmpl $0x2, 0x160(%rax)
jle 0x51f1
movq -0x18(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x10(%rax)
movl $0x0, -0x184(%rbp)
movq -0x1f8(%rbp), %rcx
movl -0x184(%rbp), %eax
cmpl 0x154(%rcx), %eax
jge 0x5868
movslq -0x184(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0xad50
movsd (%rax), %xmm0
movsd %xmm0, -0x350(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0x128(%rbp), %rdi
callq 0xad50
movsd (%rax), %xmm0
movsd %xmm0, -0x348(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0xc8(%rbp), %rdi
callq 0xad50
movsd (%rax), %xmm0
movsd %xmm0, -0x358(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0x108(%rbp), %rdi
callq 0xad50
movsd -0x358(%rbp), %xmm1
movsd -0x350(%rbp), %xmm0
movsd -0x348(%rbp), %xmm2
mulsd (%rax), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x320(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0x168(%rbp), %rdi
callq 0xad50
movsd (%rax), %xmm0
movsd %xmm0, -0x318(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0xc8(%rbp), %rdi
callq 0xad50
movsd (%rax), %xmm0
movsd %xmm0, -0x338(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0x128(%rbp), %rdi
callq 0xad50
movsd (%rax), %xmm0
movsd %xmm0, -0x330(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0xad50
movsd (%rax), %xmm0
movsd %xmm0, -0x340(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0x108(%rbp), %rdi
callq 0xad50
movsd -0x340(%rbp), %xmm1
movsd -0x338(%rbp), %xmm0
movsd -0x330(%rbp), %xmm2
mulsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x328(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0x148(%rbp), %rdi
callq 0xad50
movsd -0x328(%rbp), %xmm1
movsd -0x320(%rbp), %xmm0
movsd -0x318(%rbp), %xmm2
mulsd (%rax), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x178(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0xad50
movsd (%rax), %xmm0
movsd %xmm0, -0x2d8(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0x128(%rbp), %rdi
callq 0xad50
movsd (%rax), %xmm0
movsd %xmm0, -0x308(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0x148(%rbp), %rdi
callq 0xad50
movsd (%rax), %xmm0
movsd %xmm0, -0x300(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0x108(%rbp), %rdi
callq 0xad50
movsd (%rax), %xmm0
movsd %xmm0, -0x310(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0x168(%rbp), %rdi
callq 0xad50
movsd -0x310(%rbp), %xmm1
movsd -0x308(%rbp), %xmm0
movsd -0x300(%rbp), %xmm2
mulsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x2d0(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0xc8(%rbp), %rdi
callq 0xad50
movsd (%rax), %xmm0
movsd %xmm0, -0x2e0(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0x128(%rbp), %rdi
callq 0xad50
movsd (%rax), %xmm0
movsd %xmm0, -0x2f0(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0x168(%rbp), %rdi
callq 0xad50
movsd (%rax), %xmm0
movsd %xmm0, -0x2e8(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0x108(%rbp), %rdi
callq 0xad50
movsd (%rax), %xmm0
movsd %xmm0, -0x2f8(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0x148(%rbp), %rdi
callq 0xad50
movsd -0x2f8(%rbp), %xmm4
movsd -0x2f0(%rbp), %xmm3
movsd -0x2e8(%rbp), %xmm5
movsd -0x2e0(%rbp), %xmm1
movsd -0x2d8(%rbp), %xmm0
movsd -0x2d0(%rbp), %xmm2
mulsd (%rax), %xmm4
movq %xmm4, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm4
mulsd %xmm5, %xmm3
addsd %xmm4, %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x180(%rbp)
movslq -0x184(%rbp), %rsi
leaq -0xa8(%rbp), %rdi
callq 0xad50
movq -0x1f8(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x2b8(%rbp)
addq $0x90, %rdi
movslq -0x184(%rbp), %rsi
callq 0xad50
movq -0x1f8(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x2c8(%rbp)
movsd -0x178(%rbp), %xmm0
movsd %xmm0, -0x2c0(%rbp)
addq $0xd8, %rdi
movslq -0x184(%rbp), %rsi
callq 0xad50
movsd -0x2c8(%rbp), %xmm1
movsd -0x2c0(%rbp), %xmm3
movsd -0x2b8(%rbp), %xmm0
movq %rax, %rcx
movq -0x1f8(%rbp), %rax
movsd (%rcx), %xmm2
mulsd -0x180(%rbp), %xmm2
movq %xmm2, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd 0x1f8(%rax), %xmm2
movq -0x18(%rbp), %rcx
movsd (%rcx), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rcx)
cmpl $0x1, 0x160(%rax)
jle 0x5758
movslq -0x184(%rbp), %rsi
leaq -0xa8(%rbp), %rdi
callq 0xad50
movq -0x1f8(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x360(%rbp)
addq $0x90, %rdi
addq $0x18, %rdi
movslq -0x184(%rbp), %rsi
callq 0xad50
movq -0x1f8(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x370(%rbp)
movsd -0x178(%rbp), %xmm0
movsd %xmm0, -0x368(%rbp)
addq $0xd8, %rdi
addq $0x18, %rdi
movslq -0x184(%rbp), %rsi
callq 0xad50
movsd -0x370(%rbp), %xmm1
movsd -0x368(%rbp), %xmm3
movsd -0x360(%rbp), %xmm0
movq %rax, %rcx
movq -0x1f8(%rbp), %rax
movsd (%rcx), %xmm2
mulsd -0x180(%rbp), %xmm2
movq %xmm2, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd 0x200(%rax), %xmm2
movq -0x18(%rbp), %rax
movsd 0x8(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rax)
movq -0x1f8(%rbp), %rax
cmpl $0x2, 0x160(%rax)
jle 0x5852
movslq -0x184(%rbp), %rsi
leaq -0xa8(%rbp), %rdi
callq 0xad50
movq -0x1f8(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x378(%rbp)
addq $0x90, %rdi
addq $0x30, %rdi
movslq -0x184(%rbp), %rsi
callq 0xad50
movq -0x1f8(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x388(%rbp)
movsd -0x178(%rbp), %xmm0
movsd %xmm0, -0x380(%rbp)
addq $0xd8, %rdi
addq $0x30, %rdi
movslq -0x184(%rbp), %rsi
callq 0xad50
movsd -0x388(%rbp), %xmm1
movsd -0x380(%rbp), %xmm3
movsd -0x378(%rbp), %xmm0
movq %rax, %rcx
movq -0x1f8(%rbp), %rax
movsd (%rcx), %xmm2
mulsd -0x180(%rbp), %xmm2
movq %xmm2, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd 0x208(%rax), %xmm2
movq -0x18(%rbp), %rax
movsd 0x10(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x10(%rax)
jmp 0x5854
movl -0x184(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x184(%rbp)
jmp 0x51fb
movq -0x1f8(%rbp), %rax
cmpl $0x1, (%rax)
jle 0x59b7
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0x390(%rbp)
callq 0x3560
movq -0x390(%rbp), %rdx
leaq 0x10902(%rip), %rsi     # 0x1619b
leaq -0x1e8(%rbp), %rdi
callq 0x4620
jmp 0x58a7
movq -0x1f8(%rbp), %rsi
leaq -0x1c8(%rbp), %rdi
leaq -0x1e8(%rbp), %rdx
callq 0x9b50
jmp 0x58c3
leaq 0xfd5f(%rip), %rdx      # 0x15629
leaq -0x1a8(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x9b00
jmp 0x58df
movq -0x1f8(%rbp), %rdi
xorl %eax, %eax
leaq -0x1a8(%rbp), %rsi
callq 0x99f0
jmp 0x58f6
leaq -0x1a8(%rbp), %rdi
callq 0x31e0
leaq -0x1c8(%rbp), %rdi
callq 0x31e0
leaq -0x1e8(%rbp), %rdi
callq 0x31e0
leaq -0x1e9(%rbp), %rdi
callq 0x3350
jmp 0x59b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x599d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x5991
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x5985
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x31e0
leaq -0x1c8(%rbp), %rdi
callq 0x31e0
leaq -0x1e8(%rbp), %rdi
callq 0x31e0
leaq -0x1e9(%rbp), %rdi
callq 0x3350
leaq -0x168(%rbp), %rdi
callq 0x7660
jmp 0x5a14
leaq -0x168(%rbp), %rdi
callq 0x7660
leaq -0x148(%rbp), %rdi
callq 0x7660
leaq -0x128(%rbp), %rdi
callq 0x7660
leaq -0x108(%rbp), %rdi
callq 0x7660
leaq -0xe8(%rbp), %rdi
callq 0x7660
leaq -0xc8(%rbp), %rdi
callq 0x7660
leaq -0xa8(%rbp), %rdi
callq 0x7660
addq $0x390, %rsp            # imm = 0x390
popq %rbp
retq
leaq -0x148(%rbp), %rdi
callq 0x7660
leaq -0x128(%rbp), %rdi
callq 0x7660
leaq -0x108(%rbp), %rdi
callq 0x7660
leaq -0xe8(%rbp), %rdi
callq 0x7660
leaq -0xc8(%rbp), %rdi
callq 0x7660
leaq -0xa8(%rbp), %rdi
callq 0x7660
movq -0x88(%rbp), %rdi
callq 0x3550
nopl (%rax,%rax)