// File: /workspace/github_c_makefile_star2_O0/SimpleDoger[P]Darknet_CPU_Only/iseg_layer.c
// Function: forward_iseg_layer
void forward_iseg_layer(const layer l, network net)
{

    double time = what_time_is_it_now();
    int i,b,j,k;
    int ids = l.extra;
    memcpy(l.output, net.input, l.outputs*l.batch*sizeof(float));
    memset(l.delta, 0, l.outputs * l.batch * sizeof(float));

    for (b = 0; b < l.batch; ++b){
        int index = b*l.outputs;
        activate_array(l.output + index, l.classes*l.w*l.h, LOGISTIC);
    }

    for (b = 0; b < l.batch; ++b){
        // a priori, each pixel has no class
        for(i = 0; i < l.classes; ++i){
            for(k = 0; k < l.w*l.h; ++k){
                int index = b*l.outputs + i*l.w*l.h + k;
                l.delta[index] = 0 - l.output[index];
            }
        }

        // a priori, embedding should be small magnitude
        for(i = 0; i < ids; ++i){
            for(k = 0; k < l.w*l.h; ++k){
                int index = b*l.outputs + (i+l.classes)*l.w*l.h + k;
                l.delta[index] = .1 * (0 - l.output[index]);
            }
        }


        memset(l.counts, 0, 90*sizeof(int));
        for(i = 0; i < 90; ++i){
            fill_cpu(ids, 0, l.sums[i], 1);
            
            int c = net.truth[b*l.truths + i*(l.w*l.h+1)];
            if(c < 0) break;
            // add up metric embeddings for each instance
            for(k = 0; k < l.w*l.h; ++k){
                int index = b*l.outputs + c*l.w*l.h + k;
                float v = net.truth[b*l.truths + i*(l.w*l.h + 1) + 1 + k];
                if(v){
                    l.delta[index] = v - l.output[index];
                    axpy_cpu(ids, 1, l.output + b*l.outputs + l.classes*l.w*l.h + k, l.w*l.h, l.sums[i], 1);
                    ++l.counts[i];
                }
            }
        }

        float *mse = calloc(90, sizeof(float));
        for(i = 0; i < 90; ++i){
            int c = net.truth[b*l.truths + i*(l.w*l.h+1)];
            if(c < 0) break;
            for(k = 0; k < l.w*l.h; ++k){
                float v = net.truth[b*l.truths + i*(l.w*l.h + 1) + 1 + k];
                if(v){
                    int z;
                    float sum = 0;
                    for(z = 0; z < ids; ++z){
                        int index = b*l.outputs + (l.classes + z)*l.w*l.h + k;
                        sum += pow(l.sums[i][z]/l.counts[i] - l.output[index], 2);
                    }
                    mse[i] += sum;
                }
            }
            mse[i] /= l.counts[i];
        }

        // Calculate average embedding
        for(i = 0; i < 90; ++i){
            if(!l.counts[i]) continue;
            scal_cpu(ids, 1.f/l.counts[i], l.sums[i], 1);
            if(b == 0 && net.gpu_index == 0){
                printf("%4d, %6.3f, ", l.counts[i], mse[i]);
                for(j = 0; j < ids; ++j){
                    printf("%6.3f,", l.sums[i][j]);
                }
                printf("\n");
            }
        }
        free(mse);

        // Calculate embedding loss
        for(i = 0; i < 90; ++i){
            if(!l.counts[i]) continue;
            for(k = 0; k < l.w*l.h; ++k){
                float v = net.truth[b*l.truths + i*(l.w*l.h + 1) + 1 + k];
                if(v){
                    for(j = 0; j < 90; ++j){
                        if(!l.counts[j])continue;
                        int z;
                        for(z = 0; z < ids; ++z){
                            int index = b*l.outputs + (l.classes + z)*l.w*l.h + k;
                            float diff = l.sums[j][z] - l.output[index];
                            if (j == i) l.delta[index] +=   diff < 0? -.1 : .1;
                            else        l.delta[index] += -(diff < 0? -.1 : .1);
                        }
                    }
                }
            }
        }

        for(i = 0; i < ids; ++i){
            for(k = 0; k < l.w*l.h; ++k){
                int index = b*l.outputs + (i+l.classes)*l.w*l.h + k;
                l.delta[index] *= .01;
            }
        }
    }

    *(l.cost) = pow(mag_array(l.delta, l.outputs * l.batch), 2);
    printf("took %lf sec\n", what_time_is_it_now() - time);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
leaq 0x4b0(%rbp), %rax
movq %rax, -0x78(%rbp)
leaq 0x10(%rbp), %rax
movq %rax, -0x70(%rbp)
movb $0x0, %al
callq 0x3f10
movq -0x78(%rbp), %rax
movq -0x70(%rbp), %rcx
movsd %xmm0, -0x8(%rbp)
movl 0x64(%rcx), %edx
movl %edx, -0x1c(%rbp)
movq 0x268(%rcx), %rdi
movq 0xd8(%rax), %rsi
movl 0x58(%rcx), %eax
imull 0x48(%rcx), %eax
movslq %eax, %rdx
shlq $0x2, %rdx
callq 0x3280
movq -0x70(%rbp), %rcx
movq 0x260(%rcx), %rdi
movl 0x58(%rcx), %eax
imull 0x48(%rcx), %eax
movslq %eax, %rdx
shlq $0x2, %rdx
xorl %esi, %esi
callq 0x3190
movl $0x0, -0x10(%rbp)
movq -0x70(%rbp), %rcx
movl -0x10(%rbp), %eax
cmpl 0x48(%rcx), %eax
jge 0x53b0c
movq -0x70(%rbp), %rax
movl -0x10(%rbp), %ecx
imull 0x58(%rax), %ecx
movl %ecx, -0x20(%rbp)
movq 0x268(%rax), %rdi
movslq -0x20(%rbp), %rcx
shlq $0x2, %rcx
addq %rcx, %rdi
movl 0xfc(%rax), %esi
imull 0x70(%rax), %esi
imull 0x6c(%rax), %esi
xorl %edx, %edx
callq 0x2dfa0
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x53ac0
movl $0x0, -0x10(%rbp)
movq -0x70(%rbp), %rcx
movl -0x10(%rbp), %eax
cmpl 0x48(%rcx), %eax
jge 0x54424
movl $0x0, -0xc(%rbp)
movq -0x70(%rbp), %rcx
movl -0xc(%rbp), %eax
cmpl 0xfc(%rcx), %eax
jge 0x53bae
movl $0x0, -0x18(%rbp)
movq -0x70(%rbp), %rdx
movl -0x18(%rbp), %eax
movl 0x70(%rdx), %ecx
imull 0x6c(%rdx), %ecx
cmpl %ecx, %eax
jge 0x53b9e
movq -0x70(%rbp), %rax
movl -0x10(%rbp), %ecx
imull 0x58(%rax), %ecx
movl -0xc(%rbp), %edx
imull 0x70(%rax), %edx
imull 0x6c(%rax), %edx
addl %edx, %ecx
addl -0x18(%rbp), %ecx
movl %ecx, -0x24(%rbp)
movq 0x268(%rax), %rcx
movslq -0x24(%rbp), %rdx
xorps %xmm0, %xmm0
subss (%rcx,%rdx,4), %xmm0
movq 0x260(%rax), %rax
movslq -0x24(%rbp), %rcx
movss %xmm0, (%rax,%rcx,4)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x53b40
jmp 0x53ba0
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x53b2a
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x53c50
movl $0x0, -0x18(%rbp)
movq -0x70(%rbp), %rdx
movl -0x18(%rbp), %eax
movl 0x70(%rdx), %ecx
imull 0x6c(%rdx), %ecx
cmpl %ecx, %eax
jge 0x53c40
movq -0x70(%rbp), %rax
movl -0x10(%rbp), %ecx
imull 0x58(%rax), %ecx
movl -0xc(%rbp), %edx
addl 0xfc(%rax), %edx
imull 0x70(%rax), %edx
imull 0x6c(%rax), %edx
addl %edx, %ecx
addl -0x18(%rbp), %ecx
movl %ecx, -0x28(%rbp)
movq 0x268(%rax), %rcx
movslq -0x28(%rbp), %rdx
xorps %xmm0, %xmm0
subss (%rcx,%rdx,4), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x2049b(%rip), %xmm0    # 0x740b8
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq 0x260(%rax), %rax
movslq -0x28(%rbp), %rcx
movss %xmm0, (%rax,%rcx,4)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x53bc8
jmp 0x53c42
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x53bb5
movq -0x70(%rbp), %rax
movq 0x1c0(%rax), %rdi
xorl %esi, %esi
movl $0x168, %edx            # imm = 0x168
callq 0x3190
movl $0x0, -0xc(%rbp)
cmpl $0x5a, -0xc(%rbp)
jge 0x53e27
movq -0x70(%rbp), %rax
movl -0x1c(%rbp), %edi
movq 0x1c8(%rax), %rax
movslq -0xc(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
xorps %xmm0, %xmm0
movl $0x1, %edx
callq 0x2f740
movq -0x78(%rbp), %rax
movq -0x70(%rbp), %rdi
movq 0xe0(%rax), %rax
movl -0x10(%rbp), %ecx
imull 0x68(%rdi), %ecx
movl -0xc(%rbp), %edx
movl 0x70(%rdi), %esi
imull 0x6c(%rdi), %esi
addl $0x1, %esi
imull %esi, %edx
addl %edx, %ecx
movslq %ecx, %rcx
cvttss2si (%rax,%rcx,4), %eax
movl %eax, -0x2c(%rbp)
cmpl $0x0, -0x2c(%rbp)
jge 0x53cd9
jmp 0x53e27
movl $0x0, -0x18(%rbp)
movq -0x70(%rbp), %rdx
movl -0x18(%rbp), %eax
movl 0x70(%rdx), %ecx
imull 0x6c(%rdx), %ecx
cmpl %ecx, %eax
jge 0x53e17
movq -0x70(%rbp), %rdi
movq -0x78(%rbp), %rax
movl -0x10(%rbp), %ecx
imull 0x58(%rdi), %ecx
movl -0x2c(%rbp), %edx
imull 0x70(%rdi), %edx
imull 0x6c(%rdi), %edx
addl %edx, %ecx
addl -0x18(%rbp), %ecx
movl %ecx, -0x30(%rbp)
movq 0xe0(%rax), %rax
movl -0x10(%rbp), %ecx
imull 0x68(%rdi), %ecx
movl -0xc(%rbp), %edx
movl 0x70(%rdi), %esi
imull 0x6c(%rdi), %esi
addl $0x1, %esi
imull %esi, %edx
addl %edx, %ecx
addl $0x1, %ecx
addl -0x18(%rbp), %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss %xmm0, -0x34(%rbp)
movss -0x34(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x53d5f
jp 0x53d5f
jmp 0x53e07
movq -0x70(%rbp), %rax
movss -0x34(%rbp), %xmm0
movq 0x268(%rax), %rcx
movslq -0x30(%rbp), %rdx
subss (%rcx,%rdx,4), %xmm0
movq 0x260(%rax), %rcx
movslq -0x30(%rbp), %rdx
movss %xmm0, (%rcx,%rdx,4)
movl -0x1c(%rbp), %edi
movq 0x268(%rax), %rsi
movl -0x10(%rbp), %ecx
imull 0x58(%rax), %ecx
movslq %ecx, %rcx
shlq $0x2, %rcx
addq %rcx, %rsi
movl 0xfc(%rax), %ecx
imull 0x70(%rax), %ecx
imull 0x6c(%rax), %ecx
movslq %ecx, %rcx
shlq $0x2, %rcx
addq %rcx, %rsi
movslq -0x18(%rbp), %rcx
shlq $0x2, %rcx
addq %rcx, %rsi
movl 0x70(%rax), %edx
imull 0x6c(%rax), %edx
movq 0x1c8(%rax), %rax
movslq -0xc(%rbp), %rcx
movq (%rax,%rcx,8), %rcx
movss 0x1d228(%rip), %xmm0    # 0x7100c
movl $0x1, %r8d
callq 0x2f680
movq -0x70(%rbp), %rax
movq 0x1c0(%rax), %rax
movslq -0xc(%rbp), %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
jmp 0x53e09
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x53ce0
jmp 0x53e19
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x53c6e
movl $0x5a, %edi
movl $0x4, %esi
callq 0x3220
movq %rax, -0x40(%rbp)
movl $0x0, -0xc(%rbp)
cmpl $0x5a, -0xc(%rbp)
jge 0x54007
movq -0x70(%rbp), %rdi
movq -0x78(%rbp), %rax
movq 0xe0(%rax), %rax
movl -0x10(%rbp), %ecx
imull 0x68(%rdi), %ecx
movl -0xc(%rbp), %edx
movl 0x70(%rdi), %esi
imull 0x6c(%rdi), %esi
addl $0x1, %esi
imull %esi, %edx
addl %edx, %ecx
movslq %ecx, %rcx
cvttss2si (%rax,%rcx,4), %eax
movl %eax, -0x44(%rbp)
cmpl $0x0, -0x44(%rbp)
jge 0x53e89
jmp 0x54007
movl $0x0, -0x18(%rbp)
movq -0x70(%rbp), %rdx
movl -0x18(%rbp), %eax
movl 0x70(%rdx), %ecx
imull 0x6c(%rdx), %ecx
cmpl %ecx, %eax
jge 0x53fcf
movq -0x70(%rbp), %rdi
movq -0x78(%rbp), %rax
movq 0xe0(%rax), %rax
movl -0x10(%rbp), %ecx
imull 0x68(%rdi), %ecx
movl -0xc(%rbp), %edx
movl 0x70(%rdi), %esi
imull 0x6c(%rdi), %esi
addl $0x1, %esi
imull %esi, %edx
addl %edx, %ecx
addl $0x1, %ecx
addl -0x18(%rbp), %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss %xmm0, -0x48(%rbp)
movss -0x48(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x53ef5
jp 0x53ef5
jmp 0x53fbf
xorps %xmm0, %xmm0
movss %xmm0, -0x50(%rbp)
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x53fa8
movq -0x70(%rbp), %rax
movl -0x10(%rbp), %ecx
imull 0x58(%rax), %ecx
movl 0xfc(%rax), %edx
addl -0x4c(%rbp), %edx
imull 0x70(%rax), %edx
imull 0x6c(%rax), %edx
addl %edx, %ecx
addl -0x18(%rbp), %ecx
movl %ecx, -0x54(%rbp)
movq 0x1c8(%rax), %rcx
movslq -0xc(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x4c(%rbp), %rdx
movss (%rcx,%rdx,4), %xmm0
movq 0x1c0(%rax), %rcx
movslq -0xc(%rbp), %rdx
cvtsi2ssl (%rcx,%rdx,4), %xmm1
divss %xmm1, %xmm0
movq 0x268(%rax), %rax
movslq -0x54(%rbp), %rcx
subss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x1d0dc(%rip), %xmm1    # 0x71058
callq 0x30e0
movaps %xmm0, %xmm1
movss -0x50(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x50(%rbp)
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x53f04
movss -0x50(%rbp), %xmm0
movq -0x40(%rbp), %rax
movslq -0xc(%rbp), %rcx
addss (%rax,%rcx,4), %xmm0
movss %xmm0, (%rax,%rcx,4)
jmp 0x53fc1
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x53e90
movq -0x70(%rbp), %rax
movq 0x1c0(%rax), %rax
movslq -0xc(%rbp), %rcx
cvtsi2ssl (%rax,%rcx,4), %xmm1
movq -0x40(%rbp), %rax
movslq -0xc(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
divss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x53e41
movl $0x0, -0xc(%rbp)
cmpl $0x5a, -0xc(%rbp)
jge 0x54120
movq -0x70(%rbp), %rax
movq 0x1c0(%rax), %rax
movslq -0xc(%rbp), %rcx
cmpl $0x0, (%rax,%rcx,4)
jne 0x54032
jmp 0x54112
movq -0x70(%rbp), %rax
movl -0x1c(%rbp), %edi
movq 0x1c0(%rax), %rcx
movslq -0xc(%rbp), %rdx
cvtsi2ssl (%rcx,%rdx,4), %xmm1
movss 0x1cfbb(%rip), %xmm0    # 0x7100c
divss %xmm1, %xmm0
movq 0x1c8(%rax), %rax
movslq -0xc(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
movl $0x1, %edx
callq 0x2f6f0
cmpl $0x0, -0x10(%rbp)
jne 0x54110
movq -0x78(%rbp), %rax
cmpl $0x0, 0xc8(%rax)
jne 0x54110
movq -0x70(%rbp), %rax
movq 0x1c0(%rax), %rax
movslq -0xc(%rbp), %rcx
movl (%rax,%rcx,4), %esi
movq -0x40(%rbp), %rax
movslq -0xc(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x2168b(%rip), %rdi     # 0x7573e
movb $0x1, %al
callq 0x3130
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x54102
movq -0x70(%rbp), %rax
movq 0x1c8(%rax), %rax
movslq -0xc(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x14(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x2165b(%rip), %rdi     # 0x7574b
movb $0x1, %al
callq 0x3130
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x540c1
leaq 0x21ca5(%rip), %rdi     # 0x75dae
movb $0x0, %al
callq 0x3130
jmp 0x54112
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x5400e
movq -0x40(%rbp), %rdi
callq 0x3030
movl $0x0, -0xc(%rbp)
cmpl $0x5a, -0xc(%rbp)
jge 0x54380
movq -0x70(%rbp), %rax
movq 0x1c0(%rax), %rax
movslq -0xc(%rbp), %rcx
cmpl $0x0, (%rax,%rcx,4)
jne 0x54154
jmp 0x54372
movl $0x0, -0x18(%rbp)
movq -0x70(%rbp), %rdx
movl -0x18(%rbp), %eax
movl 0x70(%rdx), %ecx
imull 0x6c(%rdx), %ecx
cmpl %ecx, %eax
jge 0x54370
movq -0x70(%rbp), %rdi
movq -0x78(%rbp), %rax
movq 0xe0(%rax), %rax
movl -0x10(%rbp), %ecx
imull 0x68(%rdi), %ecx
movl -0xc(%rbp), %edx
movl 0x70(%rdi), %esi
imull 0x6c(%rdi), %esi
addl $0x1, %esi
imull %esi, %edx
addl %edx, %ecx
addl $0x1, %ecx
addl -0x18(%rbp), %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movss %xmm0, -0x58(%rbp)
movss -0x58(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x541c0
jp 0x541c0
jmp 0x54360
movl $0x0, -0x14(%rbp)
cmpl $0x5a, -0x14(%rbp)
jge 0x5435e
movq -0x70(%rbp), %rax
movq 0x1c0(%rax), %rax
movslq -0x14(%rbp), %rcx
cmpl $0x0, (%rax,%rcx,4)
jne 0x541eb
jmp 0x54350
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x5434e
movq -0x70(%rbp), %rax
movl -0x10(%rbp), %ecx
imull 0x58(%rax), %ecx
movl 0xfc(%rax), %edx
addl -0x5c(%rbp), %edx
imull 0x70(%rax), %edx
imull 0x6c(%rax), %edx
addl %edx, %ecx
addl -0x18(%rbp), %ecx
movl %ecx, -0x60(%rbp)
movq 0x1c8(%rax), %rcx
movslq -0x14(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x5c(%rbp), %rdx
movss (%rcx,%rdx,4), %xmm0
movq 0x268(%rax), %rax
movslq -0x60(%rbp), %rcx
subss (%rax,%rcx,4), %xmm0
movss %xmm0, -0x64(%rbp)
movl -0x14(%rbp), %eax
cmpl -0xc(%rbp), %eax
jne 0x542bd
movss -0x64(%rbp), %xmm2
xorps %xmm1, %xmm1
movsd 0x214c9(%rip), %xmm0    # 0x75730
movsd 0x1fe49(%rip), %xmm3    # 0x740b8
movsd %xmm3, -0x88(%rbp)
ucomiss %xmm2, %xmm1
movsd %xmm0, -0x80(%rbp)
ja 0x5428e
movsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movq -0x70(%rbp), %rax
movsd -0x80(%rbp), %xmm1
movq 0x260(%rax), %rax
movslq -0x60(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, (%rax,%rcx,4)
jmp 0x5433e
movss -0x64(%rbp), %xmm2
xorps %xmm1, %xmm1
movsd 0x21463(%rip), %xmm0    # 0x75730
movsd 0x1fde3(%rip), %xmm3    # 0x740b8
movsd %xmm3, -0x98(%rbp)
ucomiss %xmm2, %xmm1
movsd %xmm0, -0x90(%rbp)
ja 0x542fa
movsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movq -0x70(%rbp), %rax
movsd -0x90(%rbp), %xmm0
movq %xmm0, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm1
movq 0x260(%rax), %rax
movslq -0x60(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, (%rax,%rcx,4)
jmp 0x54340
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x541f2
jmp 0x54350
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x541c7
jmp 0x54360
jmp 0x54362
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x5415b
jmp 0x54372
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x54130
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x54414
movl $0x0, -0x18(%rbp)
movq -0x70(%rbp), %rdx
movl -0x18(%rbp), %eax
movl 0x70(%rdx), %ecx
imull 0x6c(%rdx), %ecx
cmpl %ecx, %eax
jge 0x54404
movq -0x70(%rbp), %rax
movl -0x10(%rbp), %ecx
imull 0x58(%rax), %ecx
movl -0xc(%rbp), %edx
addl 0xfc(%rax), %edx
imull 0x70(%rax), %edx
imull 0x6c(%rax), %edx
addl %edx, %ecx
addl -0x18(%rbp), %ecx
movl %ecx, -0x68(%rbp)
movq 0x260(%rax), %rax
movslq -0x68(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x1fcc4(%rip), %xmm1    # 0x740b0
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, (%rax,%rcx,4)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x5439a
jmp 0x54406
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x54387
jmp 0x54416
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x53b13
movq -0x70(%rbp), %rax
movq 0x260(%rax), %rdi
movl 0x58(%rax), %esi
imull 0x48(%rax), %esi
callq 0x59b0
cvtss2sd %xmm0, %xmm0
movsd 0x1cc11(%rip), %xmm1    # 0x71058
callq 0x30e0
movq -0x70(%rbp), %rax
cvtsd2ss %xmm0, %xmm0
movq 0x1d8(%rax), %rax
movss %xmm0, (%rax)
movb $0x0, %al
callq 0x3f10
subsd -0x8(%rbp), %xmm0
leaq 0x212e0(%rip), %rdi     # 0x75752
movb $0x1, %al
callq 0x3130
addq $0xa0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)