// File: chfeder[P]turbulence_generator/./TurbGen.h
// Function: TurbGen::init_modes()
int init_modes(void) {
        // ******************************************************
        // initialise all turbulent modes information
        // ******************************************************

        if (verbose > 1) TurbGen_printf(FuncSig(__func__)+"entering.\n");

        int ikmin[3], ikmax[3], ik[3], tot_nmodes_full_sampling;
        double k[3], ka, kc, amplitude, parab_prefact;

        // applies in case of power law (spect_form == 2)
        int iang, nang;
        double rand, phi, theta;

        // this is for spect_form = 1 (paraboloid) only
        // prefactor for amplitude normalistion to 1 at kc = 0.5*(kmin+kmax)
        parab_prefact = -4.0 / pow(kmax-kmin,2.0);

        // characteristic k for scaling the amplitude below
        kc = kmin;
        if (spect_form == 1) kc = 0.5*(kmin+kmax);

        ikmin[X] = 0;
        ikmin[Y] = 0;
        ikmin[Z] = 0;

        ikmax[X] = 256;
        ikmax[Y] = 0;
        ikmax[Z] = 0;
        if ((int)ndim > 1) ikmax[Y] = 256;
        if ((int)ndim > 2) ikmax[Z] = 256;

        // determine the number of required modes (in case of full sampling)
        nmodes = 0;
        for (ik[X] = -ikmax[X]; ik[X] <= ikmax[X]; ik[X]++) {
            k[X] = 2*M_PI * ik[X] / L[X];
            for (ik[Y] = -ikmax[Y]; ik[Y] <= ikmax[Y]; ik[Y]++) {
                k[Y] = 2*M_PI * ik[Y] / L[Y];
                for (ik[Z] = -ikmax[Z]; ik[Z] <= ikmax[Z]; ik[Z]++) {
                    k[Z] = 2*M_PI * ik[Z] / L[Z];
                    ka = sqrt( k[X]*k[X] + k[Y]*k[Y] + k[Z]*k[Z] );
                    if ((ka >= kmin) && (ka <= kmax)) nmodes++;
                }
            }
        }
        tot_nmodes_full_sampling = nmodes;
        if (spect_form != 2) { // for Band (spect_form=0) and Parabola (spect_form=1)
            if (tot_nmodes_full_sampling > NameSpaceTurbGen::tgd_max_nmodes) {
                TurbGen_printf(" nmodes = %i, maxmodes = %i", nmodes, NameSpaceTurbGen::tgd_max_nmodes);
                TurbGen_printf("Too many stirring modes"); exit(-1);
            }
            if (verbose) TurbGen_printf("Generating %i turbulent modes...\n", tot_nmodes_full_sampling);
        }
        nmodes = 0; // reset

        // ===================================================================
        // === for band and parabolic spectrum, use the standard full sampling
        if (spect_form != 2) {

            // loop over all kx, ky, kz to generate turbulent modes
            for (ik[X] = -ikmax[X]; ik[X] <= ikmax[X]; ik[X]++) {
                k[X] = 2*M_PI * ik[X] / L[X];
                for (ik[Y] = -ikmax[Y]; ik[Y] <= ikmax[Y]; ik[Y]++) {
                    k[Y] = 2*M_PI * ik[Y] / L[Y];
                        for (ik[Z] = -ikmax[Z]; ik[Z] <= ikmax[Z]; ik[Z]++) {
                        k[Z] = 2*M_PI * ik[Z] / L[Z];

                        ka = sqrt( k[X]*k[X] + k[Y]*k[Y] + k[Z]*k[Z] );

                        if ((ka >= kmin) && (ka <= kmax)) {

                            if (spect_form == 0) amplitude = 1.0;                                    // Band
                            if (spect_form == 1) amplitude = fabs(parab_prefact*pow(ka-kc,2.0)+1.0); // Parabola

                            // note: power spectrum ~ amplitude^2 (1D), amplitude^2 * 2pi k (2D), amplitude^2 * 4pi k^2 (3D) 
                            amplitude = sqrt(amplitude) * pow(kc/ka,((int)ndim-1)/2.0);
                            ampl.push_back(amplitude);

                            mode[X].push_back(k[X]);
                            if ((int)ndim > 1) mode[Y].push_back(k[Y]);
                            if ((int)ndim > 2) mode[Z].push_back(k[Z]);
                            nmodes++;

                            if ((nmodes) % 1000 == 0) if (verbose) TurbGen_printf(" ... %i of total %i modes generated...\n", nmodes, tot_nmodes_full_sampling);

                        } // in k range
                    } // ikz
                } // iky
            } // ikx

        } // spect_form != 2

        // ===============================================================================
        // === for power law (spect_form=2), generate modes that are distributed randomly on the k-sphere
        // === with the number of angles growing ~ k^angles_exp
        if (spect_form == 2) {

            if (verbose) TurbGen_printf("There would be %i turbulent modes, if k-space were fully sampled (angles_exp = 2.0)...\n", tot_nmodes_full_sampling);
            if (verbose) TurbGen_printf("Here we are using angles_exp = %f\n", angles_exp);

            // initialize additional random numbers (uniformly distributed) to randomise angles
            int seed_init = -seed; // initialise Numerical Recipes rand gen (call with negative integer)
            rand = ran2(&seed_init);

            // loop between smallest and largest k
            ikmin[0] = std::max(1, (int)round(kmin*L[X]/(2*M_PI)));
            ikmax[0] =             (int)round(kmax*L[X]/(2*M_PI));

            if (verbose) TurbGen_printf("Generating turbulent modes within k = [%i, %i]\n", ikmin[0], ikmax[0]);

            for (ik[0] = ikmin[0]; ik[0] <= ikmax[0]; ik[0]++) {

                nang = pow(2.0,(int)ndim) * ceil(pow((double)ik[0],angles_exp));
                if (verbose) TurbGen_printf("ik, number of angles = %i, %i\n", ik[0], nang);

                for (iang = 1; iang <= nang; iang++) {

                    phi = 2*M_PI * ran2(&seed); // phi = [0,2pi] sample the whole sphere
                    if ((int)ndim == 1) {
                        if (phi <  M_PI) phi = 0.0; // left
                        if (phi >= M_PI) phi = M_PI; // right
                    }
                    theta = M_PI/2.0;
                    if ((int)ndim > 2) theta = acos(1.0 - 2.0*ran2(&seed)); // theta = [0,pi] sample the whole sphere

                    if (verbose > 1) TurbGen_printf("theta = %f, phi = %f\n", theta, phi);

                    rand = ik[0] + ran2(&seed) - 0.5;
                    k[X] = 2*M_PI * round(rand*sin(theta)*cos(phi)) / L[X];
                    if ((int)ndim > 1)
                        k[Y] = 2*M_PI * round(rand*sin(theta)*sin(phi)) / L[Y];
                    else
                        k[Y] = 0.0;
                    if ((int)ndim > 2)
                        k[Z] = 2*M_PI * round(rand*cos(theta)) / L[Z];
                    else
                        k[Z] = 0.0;

                    ka = sqrt( k[X]*k[X] + k[Y]*k[Y] + k[Z]*k[Z] );

                    if ((ka >= kmin) && (ka <= kmax)) {

                        if (nmodes > NameSpaceTurbGen::tgd_max_nmodes) {
                            TurbGen_printf(" nmodes = %i, maxmodes = %i", nmodes, NameSpaceTurbGen::tgd_max_nmodes);
                            TurbGen_printf("Too many stirring modes"); exit(-1);
                        }

                        amplitude = pow(ka/kc,power_law_exp); // Power law

                        if (ka >= kmid) // optional power-law section 2 (between kmid and kmax)
                            amplitude = pow(kmid/kmin,power_law_exp) * pow(ka/kmid,power_law_exp_2);

                        // note: power spectrum ~ amplitude^2 (1D), amplitude^2 * 2pi k (2D), amplitude^2 * 4pi k^2 (3D)
                        // ...and correct for the number of angles sampled relative to the full sampling (k^2 per k-shell in 3D)
                        amplitude = sqrt( amplitude * pow((double)ik[0],(int)ndim-1) / (double)(nang) * 4.0*sqrt(3.0) ) * pow(kc/ka,((int)ndim-1)/2.0);

                        nmodes++;
                        ampl.push_back(amplitude);
                        mode[X].push_back(k[X]);
                        if ((int)ndim > 1) mode[Y].push_back(k[Y]);
                        if ((int)ndim > 2) mode[Z].push_back(k[Z]);

                        if (verbose > 1) TurbGen_printf(" ... %i mode(s) generated...\n", nmodes);
                        if ((nmodes) % 1000 == 0) if (verbose) TurbGen_printf(" ... %i modes generated...\n", nmodes);

                    } // in k range

                } // loop over angles
            } // loop over k
        } // spect_form == 2

        if (verbose > 1) TurbGen_printf(FuncSig(__func__)+"exiting.\n");
        return 0;

    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x460, %rsp            # imm = 0x460
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x380(%rbp)
cmpl $0x1, (%rax)
jle 0xbab1
leaq -0x69(%rbp), %rdi
movq %rdi, -0x388(%rbp)
callq 0x3560
movq -0x388(%rbp), %rdx
leaq 0x9f37(%rip), %rsi      # 0x15918
leaq -0x68(%rbp), %rdi
callq 0x4620
jmp 0xb9ec
movq -0x380(%rbp), %rsi
leaq -0x48(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0x9b50
jmp 0xba02
leaq 0x9a52(%rip), %rdx      # 0x1545b
leaq -0x28(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x9b00
jmp 0xba18
movq -0x380(%rbp), %rdi
xorl %eax, %eax
leaq -0x28(%rbp), %rsi
callq 0x99f0
jmp 0xba2c
leaq -0x28(%rbp), %rdi
callq 0x31e0
leaq -0x48(%rbp), %rdi
callq 0x31e0
leaq -0x68(%rbp), %rdi
callq 0x31e0
leaq -0x69(%rbp), %rdi
callq 0x3350
jmp 0xbab1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xbaa3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xba9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xba91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x31e0
leaq -0x48(%rbp), %rdi
callq 0x31e0
leaq -0x68(%rbp), %rdi
callq 0x31e0
leaq -0x69(%rbp), %rdi
callq 0x3350
jmp 0xd246
movq -0x380(%rbp), %rax
movsd 0x1c0(%rax), %xmm0
subsd 0x1b8(%rax), %xmm0
movsd 0x9560(%rip), %xmm1     # 0x15030
callq 0x3540
movq -0x380(%rbp), %rax
movaps %xmm0, %xmm1
movsd 0x9599(%rip), %xmm0     # 0x15080
divsd %xmm1, %xmm0
movsd %xmm0, -0xe0(%rbp)
movsd 0x1b8(%rax), %xmm0
movsd %xmm0, -0xd0(%rbp)
cmpl $0x1, 0x16c(%rax)
jne 0xbb37
movq -0x380(%rbp), %rax
movsd 0x1b8(%rax), %xmm1
addsd 0x1c0(%rax), %xmm1
movsd 0x94e5(%rip), %xmm0     # 0x15010
mulsd %xmm1, %xmm0
movsd %xmm0, -0xd0(%rbp)
movq -0x380(%rbp), %rax
movl $0x0, -0x88(%rbp)
movl $0x0, -0x84(%rbp)
movl $0x0, -0x80(%rbp)
movl $0x100, -0x94(%rbp)     # imm = 0x100
movl $0x0, -0x90(%rbp)
movl $0x0, -0x8c(%rbp)
cvttsd2si 0x158(%rax), %eax
cmpl $0x1, %eax
jle 0xbb8e
movl $0x100, -0x90(%rbp)     # imm = 0x100
movq -0x380(%rbp), %rax
cvttsd2si 0x158(%rax), %eax
cmpl $0x2, %eax
jle 0xbbac
movl $0x100, -0x8c(%rbp)     # imm = 0x100
movq -0x380(%rbp), %rax
movl $0x0, 0x154(%rax)
xorl %eax, %eax
subl -0x94(%rbp), %eax
movl %eax, -0xa0(%rbp)
movl -0xa0(%rbp), %eax
cmpl -0x94(%rbp), %eax
jg 0xbd79
movq -0x380(%rbp), %rax
cvtsi2sdl -0xa0(%rbp), %xmm1
movsd 0x9494(%rip), %xmm0     # 0x15088
mulsd %xmm1, %xmm0
divsd 0x178(%rax), %xmm0
movsd %xmm0, -0xc0(%rbp)
xorl %eax, %eax
subl -0x90(%rbp), %eax
movl %eax, -0x9c(%rbp)
movl -0x9c(%rbp), %eax
cmpl -0x90(%rbp), %eax
jg 0xbd63
movq -0x380(%rbp), %rax
cvtsi2sdl -0x9c(%rbp), %xmm1
movsd 0x9449(%rip), %xmm0     # 0x15088
mulsd %xmm1, %xmm0
divsd 0x180(%rax), %xmm0
movsd %xmm0, -0xb8(%rbp)
xorl %eax, %eax
subl -0x8c(%rbp), %eax
movl %eax, -0x98(%rbp)
movl -0x98(%rbp), %eax
cmpl -0x8c(%rbp), %eax
jg 0xbd4d
movq -0x380(%rbp), %rax
cvtsi2sdl -0x98(%rbp), %xmm1
movsd 0x93fe(%rip), %xmm0     # 0x15088
mulsd %xmm1, %xmm0
divsd 0x188(%rax), %xmm0
movsd %xmm0, -0xb0(%rbp)
movsd -0xc0(%rbp), %xmm1
movsd -0xc0(%rbp), %xmm2
movsd -0xb8(%rbp), %xmm0
mulsd -0xb8(%rbp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0xb0(%rbp), %xmm0
movsd -0xb0(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x3250
movq -0x380(%rbp), %rax
movsd %xmm0, -0xc8(%rbp)
movsd -0xc8(%rbp), %xmm0
ucomisd 0x1b8(%rax), %xmm0
jb 0xbd37
movq -0x380(%rbp), %rax
movsd -0xc8(%rbp), %xmm1
movsd 0x1c0(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0xbd37
movq -0x380(%rbp), %rax
movl 0x154(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x154(%rax)
jmp 0xbd39
movl -0x98(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x98(%rbp)
jmp 0xbc61
jmp 0xbd4f
movl -0x9c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x9c(%rbp)
jmp 0xbc16
jmp 0xbd65
movl -0xa0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa0(%rbp)
jmp 0xbbcb
movq -0x380(%rbp), %rax
movl 0x154(%rax), %ecx
movl %ecx, -0xa4(%rbp)
cmpl $0x2, 0x16c(%rax)
je 0xbf97
cmpl $0x186a0, -0xa4(%rbp)   # imm = 0x186A0
jle 0xbee8
leaq -0x121(%rbp), %rdi
movq %rdi, -0x390(%rbp)
callq 0x3560
movq -0x390(%rbp), %rdx
leaq 0x9b59(%rip), %rsi      # 0x15923
leaq -0x120(%rbp), %rdi
callq 0x4620
jmp 0xbdd8
movq -0x380(%rbp), %rdi
movl 0x154(%rdi), %edx
xorl %eax, %eax
leaq -0x120(%rbp), %rsi
movl $0x186a0, %ecx          # imm = 0x186A0
callq 0x99f0
jmp 0xbdfa
leaq -0x120(%rbp), %rdi
callq 0x31e0
leaq -0x121(%rbp), %rdi
callq 0x3350
leaq -0x149(%rbp), %rdi
movq %rdi, -0x398(%rbp)
callq 0x3560
movq -0x398(%rbp), %rdx
leaq 0x9b0c(%rip), %rsi      # 0x1593f
leaq -0x148(%rbp), %rdi
callq 0x4620
jmp 0xbe41
movq -0x380(%rbp), %rdi
xorl %eax, %eax
leaq -0x148(%rbp), %rsi
callq 0x99f0
jmp 0xbe58
leaq -0x148(%rbp), %rdi
callq 0x31e0
leaq -0x149(%rbp), %rdi
callq 0x3350
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x33d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xbea0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x31e0
leaq -0x121(%rbp), %rdi
callq 0x3350
jmp 0xd246
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xbed7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x31e0
leaq -0x149(%rbp), %rdi
callq 0x3350
jmp 0xd246
movq -0x380(%rbp), %rax
cmpl $0x0, (%rax)
je 0xbf95
leaq -0x171(%rbp), %rdi
movq %rdi, -0x3a0(%rbp)
callq 0x3560
movq -0x3a0(%rbp), %rdx
leaq 0x9a3e(%rip), %rsi      # 0x15957
leaq -0x170(%rbp), %rdi
callq 0x4620
jmp 0xbf27
movq -0x380(%rbp), %rdi
movl -0xa4(%rbp), %edx
xorl %eax, %eax
leaq -0x170(%rbp), %rsi
callq 0x99f0
jmp 0xbf44
leaq -0x170(%rbp), %rdi
callq 0x31e0
leaq -0x171(%rbp), %rdi
callq 0x3350
jmp 0xbf95
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xbf84
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x31e0
leaq -0x171(%rbp), %rdi
callq 0x3350
jmp 0xd246
jmp 0xbf97
movq -0x380(%rbp), %rax
movl $0x0, 0x154(%rax)
cmpl $0x2, 0x16c(%rax)
je 0xc3ce
xorl %eax, %eax
subl -0x94(%rbp), %eax
movl %eax, -0xa0(%rbp)
movl -0xa0(%rbp), %eax
cmpl -0x94(%rbp), %eax
jg 0xc3cc
movq -0x380(%rbp), %rax
cvtsi2sdl -0xa0(%rbp), %xmm1
movsd 0x909c(%rip), %xmm0     # 0x15088
mulsd %xmm1, %xmm0
divsd 0x178(%rax), %xmm0
movsd %xmm0, -0xc0(%rbp)
xorl %eax, %eax
subl -0x90(%rbp), %eax
movl %eax, -0x9c(%rbp)
movl -0x9c(%rbp), %eax
cmpl -0x90(%rbp), %eax
jg 0xc3b6
movq -0x380(%rbp), %rax
cvtsi2sdl -0x9c(%rbp), %xmm1
movsd 0x9051(%rip), %xmm0     # 0x15088
mulsd %xmm1, %xmm0
divsd 0x180(%rax), %xmm0
movsd %xmm0, -0xb8(%rbp)
xorl %eax, %eax
subl -0x8c(%rbp), %eax
movl %eax, -0x98(%rbp)
movl -0x98(%rbp), %eax
cmpl -0x8c(%rbp), %eax
jg 0xc3a0
movq -0x380(%rbp), %rax
cvtsi2sdl -0x98(%rbp), %xmm1
movsd 0x9006(%rip), %xmm0     # 0x15088
mulsd %xmm1, %xmm0
divsd 0x188(%rax), %xmm0
movsd %xmm0, -0xb0(%rbp)
movsd -0xc0(%rbp), %xmm1
movsd -0xc0(%rbp), %xmm2
movsd -0xb8(%rbp), %xmm0
mulsd -0xb8(%rbp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0xb0(%rbp), %xmm0
movsd -0xb0(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x3250
movq -0x380(%rbp), %rax
movsd %xmm0, -0xc8(%rbp)
movsd -0xc8(%rbp), %xmm0
ucomisd 0x1b8(%rax), %xmm0
jb 0xc38a
movq -0x380(%rbp), %rax
movsd -0xc8(%rbp), %xmm1
movsd 0x1c0(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0xc38a
movq -0x380(%rbp), %rax
cmpl $0x0, 0x16c(%rax)
jne 0xc141
movsd 0x8edf(%rip), %xmm0     # 0x15018
movsd %xmm0, -0xd8(%rbp)
movq -0x380(%rbp), %rax
cmpl $0x1, 0x16c(%rax)
jne 0xc1ac
movsd -0xe0(%rbp), %xmm0
movsd %xmm0, -0x3a8(%rbp)
movsd -0xc8(%rbp), %xmm0
subsd -0xd0(%rbp), %xmm0
movsd 0x8eb7(%rip), %xmm1     # 0x15030
callq 0x3540
movaps %xmm0, %xmm1
movsd -0x3a8(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd 0x8e83(%rip), %xmm1     # 0x15018
addsd %xmm1, %xmm0
movaps 0x8f30(%rip), %xmm1     # 0x150d0
pand %xmm1, %xmm0
movsd %xmm0, -0xd8(%rbp)
movsd -0xd8(%rbp), %xmm0
callq 0x3250
movq -0x380(%rbp), %rax
movsd %xmm0, -0x3b0(%rbp)
movsd -0xd0(%rbp), %xmm0
divsd -0xc8(%rbp), %xmm0
cvttsd2si 0x158(%rax), %eax
subl $0x1, %eax
cvtsi2sd %eax, %xmm1
movsd 0x8e41(%rip), %xmm2     # 0x15030
divsd %xmm2, %xmm1
callq 0x3540
movq -0x380(%rbp), %rdi
movaps %xmm0, %xmm1
movsd -0x3b0(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0xd8(%rbp)
addq $0x138, %rdi            # imm = 0x138
leaq -0xd8(%rbp), %rsi
callq 0x10d20
movq -0x380(%rbp), %rdi
addq $0x48, %rdi
leaq -0xc0(%rbp), %rsi
callq 0x10d20
movq -0x380(%rbp), %rax
cvttsd2si 0x158(%rax), %eax
cmpl $0x1, %eax
jle 0xc273
movq -0x380(%rbp), %rdi
addq $0x48, %rdi
addq $0x18, %rdi
leaq -0xc0(%rbp), %rsi
addq $0x8, %rsi
callq 0x10d20
movq -0x380(%rbp), %rax
cvttsd2si 0x158(%rax), %eax
cmpl $0x2, %eax
jle 0xc2a6
movq -0x380(%rbp), %rdi
addq $0x48, %rdi
addq $0x30, %rdi
leaq -0xc0(%rbp), %rsi
addq $0x10, %rsi
callq 0x10d20
movq -0x380(%rbp), %rax
movl 0x154(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x154(%rax)
movl 0x154(%rax), %eax
movl $0x3e8, %ecx            # imm = 0x3E8
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0xc388
movq -0x380(%rbp), %rax
cmpl $0x0, (%rax)
je 0xc386
leaq -0x199(%rbp), %rdi
movq %rdi, -0x3b8(%rbp)
callq 0x3560
movq -0x3b8(%rbp), %rdx
leaq 0x9675(%rip), %rsi      # 0x15979
leaq -0x198(%rbp), %rdi
callq 0x4620
jmp 0xc312
movq -0x380(%rbp), %rdi
movl 0x154(%rdi), %edx
movl -0xa4(%rbp), %ecx
xorl %eax, %eax
leaq -0x198(%rbp), %rsi
callq 0x99f0
jmp 0xc335
leaq -0x198(%rbp), %rdi
callq 0x31e0
leaq -0x199(%rbp), %rdi
callq 0x3350
jmp 0xc386
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xc375
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x31e0
leaq -0x199(%rbp), %rdi
callq 0x3350
jmp 0xd246
jmp 0xc388
jmp 0xc38a
jmp 0xc38c
movl -0x98(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x98(%rbp)
jmp 0xc059
jmp 0xc3a2
movl -0x9c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x9c(%rbp)
jmp 0xc00e
jmp 0xc3b8
movl -0xa0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa0(%rbp)
jmp 0xbfc3
jmp 0xc3ce
movq -0x380(%rbp), %rax
cmpl $0x2, 0x16c(%rax)
jne 0xd113
movq -0x380(%rbp), %rax
cmpl $0x0, (%rax)
je 0xc48f
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0x3c0(%rbp)
callq 0x3560
movq -0x3c0(%rbp), %rdx
leaq 0x958e(%rip), %rsi      # 0x159a1
leaq -0x1c0(%rbp), %rdi
callq 0x4620
jmp 0xc421
movq -0x380(%rbp), %rdi
movl -0xa4(%rbp), %edx
xorl %eax, %eax
leaq -0x1c0(%rbp), %rsi
callq 0x99f0
jmp 0xc43e
leaq -0x1c0(%rbp), %rdi
callq 0x31e0
leaq -0x1c1(%rbp), %rdi
callq 0x3350
jmp 0xc48f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xc47e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x31e0
leaq -0x1c1(%rbp), %rdi
callq 0x3350
jmp 0xd246
movq -0x380(%rbp), %rax
cmpl $0x0, (%rax)
je 0xc53e
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0x3c8(%rbp)
callq 0x3560
movq -0x3c8(%rbp), %rdx
leaq 0x9539(%rip), %rsi      # 0x159f9
leaq -0x1e8(%rbp), %rdi
callq 0x4620
jmp 0xc4ce
movq -0x380(%rbp), %rdi
movsd 0x1f0(%rdi), %xmm0
leaq -0x1e8(%rbp), %rsi
movb $0x1, %al
callq 0x99f0
jmp 0xc4ed
leaq -0x1e8(%rbp), %rdi
callq 0x31e0
leaq -0x1e9(%rbp), %rdi
callq 0x3350
jmp 0xc53e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xc52d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x31e0
leaq -0x1e9(%rbp), %rdi
callq 0x3350
jmp 0xd246
movq -0x380(%rbp), %rdi
xorl %eax, %eax
subl 0x168(%rdi), %eax
movl %eax, -0x1f0(%rbp)
leaq -0x1f0(%rbp), %rsi
callq 0x10d90
movq -0x380(%rbp), %rax
movsd %xmm0, -0xf0(%rbp)
movl $0x1, -0x1f4(%rbp)
movsd 0x1b8(%rax), %xmm0
mulsd 0x178(%rax), %xmm0
movsd 0x8af8(%rip), %xmm1     # 0x15088
divsd %xmm1, %xmm0
callq 0x3130
cvttsd2si %xmm0, %eax
movl %eax, -0x1f8(%rbp)
leaq -0x1f4(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x10fa0
movq %rax, %rcx
movq -0x380(%rbp), %rax
movl (%rcx), %ecx
movl %ecx, -0x88(%rbp)
movsd 0x1c0(%rax), %xmm0
mulsd 0x178(%rax), %xmm0
movsd 0x8aa8(%rip), %xmm1     # 0x15088
divsd %xmm1, %xmm0
callq 0x3130
movq -0x380(%rbp), %rax
cvttsd2si %xmm0, %ecx
movl %ecx, -0x94(%rbp)
cmpl $0x0, (%rax)
je 0xc6a6
leaq -0x219(%rbp), %rdi
movq %rdi, -0x3d0(%rbp)
callq 0x3560
movq -0x3d0(%rbp), %rdx
leaq 0x93f8(%rip), %rsi      # 0x15a1c
leaq -0x218(%rbp), %rdi
callq 0x4620
jmp 0xc632
movq -0x380(%rbp), %rdi
movl -0x88(%rbp), %edx
movl -0x94(%rbp), %ecx
xorl %eax, %eax
leaq -0x218(%rbp), %rsi
callq 0x99f0
jmp 0xc655
leaq -0x218(%rbp), %rdi
callq 0x31e0
leaq -0x219(%rbp), %rdi
callq 0x3350
jmp 0xc6a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xc695
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x31e0
leaq -0x219(%rbp), %rdi
callq 0x3350
jmp 0xd246
movl -0x88(%rbp), %eax
movl %eax, -0xa0(%rbp)
movl -0xa0(%rbp), %eax
cmpl -0x94(%rbp), %eax
jg 0xd111
movq -0x380(%rbp), %rax
cvttsd2si 0x158(%rax), %eax
cvtsi2sd %eax, %xmm1
movsd 0x8951(%rip), %xmm0     # 0x15030
callq 0x3540
movq -0x380(%rbp), %rax
movsd %xmm0, -0x3d8(%rbp)
cvtsi2sdl -0xa0(%rbp), %xmm0
movsd 0x1f0(%rax), %xmm1
callq 0x3540
callq 0x3060
movq -0x380(%rbp), %rax
movaps %xmm0, %xmm1
movsd -0x3d8(%rbp), %xmm0
mulsd %xmm1, %xmm0
cvttsd2si %xmm0, %ecx
movl %ecx, -0xe8(%rbp)
cmpl $0x0, (%rax)
je 0xc7d9
leaq -0x241(%rbp), %rdi
movq %rdi, -0x3e0(%rbp)
callq 0x3560
movq -0x3e0(%rbp), %rdx
leaq 0x92f5(%rip), %rsi      # 0x15a4c
leaq -0x240(%rbp), %rdi
callq 0x4620
jmp 0xc765
movq -0x380(%rbp), %rdi
movl -0xa0(%rbp), %edx
movl -0xe8(%rbp), %ecx
xorl %eax, %eax
leaq -0x240(%rbp), %rsi
callq 0x99f0
jmp 0xc788
leaq -0x240(%rbp), %rdi
callq 0x31e0
leaq -0x241(%rbp), %rdi
callq 0x3350
jmp 0xc7d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xc7c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x31e0
leaq -0x241(%rbp), %rdi
callq 0x3350
jmp 0xd246
movl $0x1, -0xe4(%rbp)
movl -0xe4(%rbp), %eax
cmpl -0xe8(%rbp), %eax
jg 0xd0fb
movq -0x380(%rbp), %rdi
movq %rdi, %rsi
addq $0x168, %rsi            # imm = 0x168
callq 0x10d90
movq -0x380(%rbp), %rax
movaps %xmm0, %xmm1
movsd 0x886b(%rip), %xmm0     # 0x15088
mulsd %xmm1, %xmm0
movsd %xmm0, -0xf8(%rbp)
cvttsd2si 0x158(%rax), %eax
cmpl $0x1, %eax
jne 0xc87b
movsd 0x881a(%rip), %xmm0     # 0x15058
ucomisd -0xf8(%rbp), %xmm0
jbe 0xc853
xorps %xmm0, %xmm0
movsd %xmm0, -0xf8(%rbp)
movsd -0xf8(%rbp), %xmm0
movsd 0x87f5(%rip), %xmm1     # 0x15058
ucomisd %xmm1, %xmm0
jb 0xc879
movsd 0x87e7(%rip), %xmm0     # 0x15058
movsd %xmm0, -0xf8(%rbp)
jmp 0xc87b
movq -0x380(%rbp), %rax
movsd 0x8806(%rip), %xmm0     # 0x15090
movsd %xmm0, -0x100(%rbp)
cvttsd2si 0x158(%rax), %eax
cmpl $0x2, %eax
jle 0xc8d5
movq -0x380(%rbp), %rdi
movq %rdi, %rsi
addq $0x168, %rsi            # imm = 0x168
callq 0x10d90
movaps %xmm0, %xmm1
addsd %xmm1, %xmm1
movsd 0x8754(%rip), %xmm0     # 0x15018
subsd %xmm1, %xmm0
callq 0x32c0
movsd %xmm0, -0x100(%rbp)
movq -0x380(%rbp), %rax
cmpl $0x1, (%rax)
jle 0xc98c
leaq -0x269(%rbp), %rdi
movq %rdi, -0x3e8(%rbp)
callq 0x3560
movq -0x3e8(%rbp), %rdx
leaq 0x9165(%rip), %rsi      # 0x15a6b
leaq -0x268(%rbp), %rdi
callq 0x4620
jmp 0xc914
movq -0x380(%rbp), %rdi
movsd -0x100(%rbp), %xmm0
movsd -0xf8(%rbp), %xmm1
leaq -0x268(%rbp), %rsi
movb $0x2, %al
callq 0x99f0
jmp 0xc93b
leaq -0x268(%rbp), %rdi
callq 0x31e0
leaq -0x269(%rbp), %rdi
callq 0x3350
jmp 0xc98c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xc97b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x31e0
leaq -0x269(%rbp), %rdi
callq 0x3350
jmp 0xd246
movq -0x380(%rbp), %rdi
cvtsi2sdl -0xa0(%rbp), %xmm0
movsd %xmm0, -0x400(%rbp)
movq %rdi, %rsi
addq $0x168, %rsi            # imm = 0x168
callq 0x10d90
movaps %xmm0, %xmm1
movsd -0x400(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd 0x8647(%rip), %xmm1     # 0x15010
subsd %xmm1, %xmm0
movsd %xmm0, -0xf0(%rbp)
movsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0x3f8(%rbp)
movsd -0x100(%rbp), %xmm0
callq 0x30a0
movaps %xmm0, %xmm1
movsd -0x3f8(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x3f0(%rbp)
movsd -0xf8(%rbp), %xmm0
callq 0x35a0
movaps %xmm0, %xmm1
movsd -0x3f0(%rbp), %xmm0
mulsd %xmm1, %xmm0
callq 0x3130
movq -0x380(%rbp), %rax
movaps %xmm0, %xmm1
movsd 0x864c(%rip), %xmm0     # 0x15088
mulsd %xmm1, %xmm0
divsd 0x178(%rax), %xmm0
movsd %xmm0, -0xc0(%rbp)
cvttsd2si 0x158(%rax), %eax
cmpl $0x1, %eax
jle 0xcada
movsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0x410(%rbp)
movsd -0x100(%rbp), %xmm0
callq 0x30a0
movaps %xmm0, %xmm1
movsd -0x410(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x408(%rbp)
movsd -0xf8(%rbp), %xmm0
callq 0x30a0
movaps %xmm0, %xmm1
movsd -0x408(%rbp), %xmm0
mulsd %xmm1, %xmm0
callq 0x3130
movq -0x380(%rbp), %rax
movaps %xmm0, %xmm1
movsd 0x85c4(%rip), %xmm0     # 0x15088
mulsd %xmm1, %xmm0
divsd 0x180(%rax), %xmm0
movsd %xmm0, -0xb8(%rbp)
jmp 0xcae5
xorps %xmm0, %xmm0
movsd %xmm0, -0xb8(%rbp)
movq -0x380(%rbp), %rax
cvttsd2si 0x158(%rax), %eax
cmpl $0x2, %eax
jle 0xcb52
movsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0x418(%rbp)
movsd -0x100(%rbp), %xmm0
callq 0x35a0
movaps %xmm0, %xmm1
movsd -0x418(%rbp), %xmm0
mulsd %xmm1, %xmm0
callq 0x3130
movq -0x380(%rbp), %rax
movaps %xmm0, %xmm1
movsd 0x854c(%rip), %xmm0     # 0x15088
mulsd %xmm1, %xmm0
divsd 0x188(%rax), %xmm0
movsd %xmm0, -0xb0(%rbp)
jmp 0xcb5d
xorps %xmm0, %xmm0
movsd %xmm0, -0xb0(%rbp)
movsd -0xc0(%rbp), %xmm1
movsd -0xc0(%rbp), %xmm2
movsd -0xb8(%rbp), %xmm0
mulsd -0xb8(%rbp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0xb0(%rbp), %xmm0
movsd -0xb0(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x3250
movq -0x380(%rbp), %rax
movsd %xmm0, -0xc8(%rbp)
movsd -0xc8(%rbp), %xmm0
ucomisd 0x1b8(%rax), %xmm0
jb 0xd0e5
movq -0x380(%rbp), %rax
movsd -0xc8(%rbp), %xmm1
movsd 0x1c0(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0xd0e5
movq -0x380(%rbp), %rax
cmpl $0x186a0, 0x154(%rax)   # imm = 0x186A0
jle 0xcd3e
leaq -0x291(%rbp), %rdi
movq %rdi, -0x420(%rbp)
callq 0x3560
movq -0x420(%rbp), %rdx
leaq 0x8d03(%rip), %rsi      # 0x15923
leaq -0x290(%rbp), %rdi
callq 0x4620
jmp 0xcc2e
movq -0x380(%rbp), %rdi
movl 0x154(%rdi), %edx
xorl %eax, %eax
leaq -0x290(%rbp), %rsi
movl $0x186a0, %ecx          # imm = 0x186A0
callq 0x99f0
jmp 0xcc50
leaq -0x290(%rbp), %rdi
callq 0x31e0
leaq -0x291(%rbp), %rdi
callq 0x3350
leaq -0x2b9(%rbp), %rdi
movq %rdi, -0x428(%rbp)
callq 0x3560
movq -0x428(%rbp), %rdx
leaq 0x8cb6(%rip), %rsi      # 0x1593f
leaq -0x2b8(%rbp), %rdi
callq 0x4620
jmp 0xcc97
movq -0x380(%rbp), %rdi
xorl %eax, %eax
leaq -0x2b8(%rbp), %rsi
callq 0x99f0
jmp 0xccae
leaq -0x2b8(%rbp), %rdi
callq 0x31e0
leaq -0x2b9(%rbp), %rdi
callq 0x3350
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x33d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xccf6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x31e0
leaq -0x291(%rbp), %rdi
callq 0x3350
jmp 0xd246
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xcd2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x31e0
leaq -0x2b9(%rbp), %rdi
callq 0x3350
jmp 0xd246
movq -0x380(%rbp), %rax
movsd -0xc8(%rbp), %xmm0
divsd -0xd0(%rbp), %xmm0
movsd 0x1e0(%rax), %xmm1
callq 0x3540
movq -0x380(%rbp), %rax
movsd %xmm0, -0xd8(%rbp)
movsd -0xc8(%rbp), %xmm0
ucomisd 0x1c8(%rax), %xmm0
jb 0xcdea
movq -0x380(%rbp), %rax
movsd 0x1c8(%rax), %xmm0
divsd 0x1b8(%rax), %xmm0
movsd 0x1e0(%rax), %xmm1
callq 0x3540
movq -0x380(%rbp), %rax
movsd %xmm0, -0x430(%rbp)
movsd -0xc8(%rbp), %xmm0
divsd 0x1c8(%rax), %xmm0
movsd 0x1e8(%rax), %xmm1
callq 0x3540
movaps %xmm0, %xmm1
movsd -0x430(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0xd8(%rbp)
movq -0x380(%rbp), %rax
movsd -0xd8(%rbp), %xmm0
movsd %xmm0, -0x448(%rbp)
cvtsi2sdl -0xa0(%rbp), %xmm0
cvttsd2si 0x158(%rax), %eax
subl $0x1, %eax
cvtsi2sd %eax, %xmm1
callq 0x3540
movaps %xmm0, %xmm1
movsd -0x448(%rbp), %xmm0
mulsd %xmm1, %xmm0
cvtsi2sdl -0xe8(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x8258(%rip), %xmm1     # 0x15098
mulsd %xmm1, %xmm0
movsd %xmm0, -0x440(%rbp)
movsd 0x81f4(%rip), %xmm0     # 0x15048
callq 0x3250
movaps %xmm0, %xmm1
movsd -0x440(%rbp), %xmm0
mulsd %xmm1, %xmm0
callq 0x3250
movq -0x380(%rbp), %rax
movsd %xmm0, -0x438(%rbp)
movsd -0xd0(%rbp), %xmm0
divsd -0xc8(%rbp), %xmm0
cvttsd2si 0x158(%rax), %eax
subl $0x1, %eax
cvtsi2sd %eax, %xmm1
movsd 0x818d(%rip), %xmm2     # 0x15030
divsd %xmm2, %xmm1
callq 0x3540
movq -0x380(%rbp), %rdi
movaps %xmm0, %xmm1
movsd -0x438(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0xd8(%rbp)
movl 0x154(%rdi), %eax
addl $0x1, %eax
movl %eax, 0x154(%rdi)
addq $0x138, %rdi            # imm = 0x138
leaq -0xd8(%rbp), %rsi
callq 0x10d20
movq -0x380(%rbp), %rdi
addq $0x48, %rdi
leaq -0xc0(%rbp), %rsi
callq 0x10d20
movq -0x380(%rbp), %rax
cvttsd2si 0x158(%rax), %eax
cmpl $0x1, %eax
jle 0xcf36
movq -0x380(%rbp), %rdi
addq $0x48, %rdi
addq $0x18, %rdi
leaq -0xc0(%rbp), %rsi
addq $0x8, %rsi
callq 0x10d20
movq -0x380(%rbp), %rax
cvttsd2si 0x158(%rax), %eax
cmpl $0x2, %eax
jle 0xcf69
movq -0x380(%rbp), %rdi
addq $0x48, %rdi
addq $0x30, %rdi
leaq -0xc0(%rbp), %rsi
addq $0x10, %rsi
callq 0x10d20
movq -0x380(%rbp), %rax
cmpl $0x1, (%rax)
jle 0xd016
leaq -0x2e1(%rbp), %rdi
movq %rdi, -0x450(%rbp)
callq 0x3560
movq -0x450(%rbp), %rdx
leaq 0x8ae7(%rip), %rsi      # 0x15a81
leaq -0x2e0(%rbp), %rdi
callq 0x4620
jmp 0xcfa8
movq -0x380(%rbp), %rdi
movl 0x154(%rdi), %edx
xorl %eax, %eax
leaq -0x2e0(%rbp), %rsi
callq 0x99f0
jmp 0xcfc5
leaq -0x2e0(%rbp), %rdi
callq 0x31e0
leaq -0x2e1(%rbp), %rdi
callq 0x3350
jmp 0xd016
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xd005
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0x31e0
leaq -0x2e1(%rbp), %rdi
callq 0x3350
jmp 0xd246
movq -0x380(%rbp), %rax
movl 0x154(%rax), %eax
movl $0x3e8, %ecx            # imm = 0x3E8
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0xd0e3
movq -0x380(%rbp), %rax
cmpl $0x0, (%rax)
je 0xd0e1
leaq -0x309(%rbp), %rdi
movq %rdi, -0x458(%rbp)
callq 0x3560
movq -0x458(%rbp), %rdx
leaq 0x8a3a(%rip), %rsi      # 0x15a9f
leaq -0x308(%rbp), %rdi
callq 0x4620
jmp 0xd073
movq -0x380(%rbp), %rdi
movl 0x154(%rdi), %edx
xorl %eax, %eax
leaq -0x308(%rbp), %rsi
callq 0x99f0
jmp 0xd090
leaq -0x308(%rbp), %rdi
callq 0x31e0
leaq -0x309(%rbp), %rdi
callq 0x3350
jmp 0xd0e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xd0d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x308(%rbp), %rdi
callq 0x31e0
leaq -0x309(%rbp), %rdi
callq 0x3350
jmp 0xd246
jmp 0xd0e3
jmp 0xd0e5
jmp 0xd0e7
movl -0xe4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xe4(%rbp)
jmp 0xc7e3
jmp 0xd0fd
movl -0xa0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa0(%rbp)
jmp 0xc6b2
jmp 0xd113
movq -0x380(%rbp), %rax
cmpl $0x1, (%rax)
jle 0xd23b
leaq -0x371(%rbp), %rdi
movq %rdi, -0x460(%rbp)
callq 0x3560
movq -0x460(%rbp), %rdx
leaq 0x87d4(%rip), %rsi      # 0x15918
leaq -0x370(%rbp), %rdi
callq 0x4620
jmp 0xd152
movq -0x380(%rbp), %rsi
leaq -0x350(%rbp), %rdi
leaq -0x370(%rbp), %rdx
callq 0x9b50
jmp 0xd16e
leaq 0x84b4(%rip), %rdx      # 0x15629
leaq -0x330(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0x9b00
jmp 0xd18a
movq -0x380(%rbp), %rdi
xorl %eax, %eax
leaq -0x330(%rbp), %rsi
callq 0x99f0
jmp 0xd1a1
leaq -0x330(%rbp), %rdi
callq 0x31e0
leaq -0x350(%rbp), %rdi
callq 0x31e0
leaq -0x370(%rbp), %rdi
callq 0x31e0
leaq -0x371(%rbp), %rdi
callq 0x3350
jmp 0xd23b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xd22d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xd221
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xd215
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x330(%rbp), %rdi
callq 0x31e0
leaq -0x350(%rbp), %rdi
callq 0x31e0
leaq -0x370(%rbp), %rdi
callq 0x31e0
leaq -0x371(%rbp), %rdi
callq 0x3350
jmp 0xd246
xorl %eax, %eax
addq $0x460, %rsp            # imm = 0x460
popq %rbp
retq
movq -0x78(%rbp), %rdi
callq 0x3550
nop