// File: /workspace/github_cpp_makefile_star2_O1/huiwenliuge[P]EmoAnaer/src/RNNet.cpp
// Function: RNNet::_Backward_CROSSENTROPY(sentence*)
void RNNet::_Backward_CROSSENTROPY(Sentence sen){
    int t,i,j,k;
    t=sen->tlen-1;
    for(i=0;i<EMOTIONNUM;++i)
        sen->DLDo[t][i]=-(sen->stdAns[i]-sen->energy[t][i]);

    for(t=sen->tlen-2;t>-1;--t){
        for(i=0;i<EMOTIONNUM;++i){
            sen->DLDo[t][i]=-(sen->stdAns[i]-sen->energy[t][i]);
            for(k=0;k<EMOTIONNUM;++k){
                for(j=0;j<hidlayerNUM;++j){
                    sen->DLDo[t][i]+=sen->DLDo[t+1][k]\
                            *k2out[k][j]*dsigm(sen->hidLay[t+1][j])\
                            *ro2h[j][i];
                }
            }
        }
    }
    
    t=sen->tlen-1;
    for(i=0;i<hidlayerNUM;++i){
        sen->DLDh[t][i]=0.0;
        for(j=0;j<EMOTIONNUM;++j){
            sen->DLDh[t][i]+=sen->DLDo[t][j]*k2out[j][i]\
                    *dsigm(sen->hidLay[t][i]);
        }
    }
    for(t=sen->tlen-2;t>-1;--t){
        for(i=0;i<hidlayerNUM;++i){
            sen->DLDh[t][i]=0.0;
            for(j=0;j<EMOTIONNUM;++j){
                sen->DLDh[t][i]+=sen->DLDo[t][j]*k2out[j][i]\
                        *dsigm(sen->hidLay[t][i]);
            }
            for(j=0;j<hidlayerNUM;++j){
                sen->DLDh[t][i]+=sen->DLDh[t+1][j]*rh2h[j][i]\
                        *dsigm(sen->hidLay[t+1][i]);
            }
        }
    }
    
    t=sen->tlen-1;
    for(i=0;i<featureNUM;++i){
        sen->DLDx[t][i]=0.0;
        for(j=0;j<hidlayerNUM;++j){
            sen->DLDx[t][i]+=sen->DLDh[t][j]*in2hid[j][i];
        }
    }
    for(t=sen->tlen-2;t>-1;--t){
        for(i=0;i<featureNUM;++i){
            sen->DLDx[t][i]=0.0;
            for(j=0;j<hidlayerNUM;++j){
                sen->DLDx[t][i]+=sen->DLDh[t][j]*in2hid[j][i];
                for(k=0;k<hidlayerNUM;++k){
                    sen->DLDx[t][i]+=sen->DLDh[t+1][j]*rh2h[j][k]\
                        *dsigm(sen->hidLay[t][k])*in2hid[k][i];
                }
            }
            // for(j=0;j<hidlayerNUM;++j){
            //     for(k=0;k<hidlayerNUM;++k){
            //         sen->DLDx[t][i]+=sen->DLDh[t+1][j]*rh2h[j][k]\
            //             *dsigm(sen->hidLay[t][k])*in2hid[k][i];
            //     }
            // }
        }
    }
    
    double plnrt = lnrt/sen->tlen;
    static std::mutex g_mutex;
    g_mutex.lock();
    upgradeDict(ccdict,sen->schar,sen->DLDx,featureNUM,plnrt);    
    g_mutex.unlock();
    double pder;
    for(i=0;i<EMOTIONNUM;++i){
        for(j=0;j<hidlayerNUM;++j){
            pder=0.0;
            for(t=0;t<sen->tlen;++t){
                pder+=sen->DLDo[t][i]*sen->kLayer[t][j];
            }
            pder/=sen->tlen;
            g_mutex.lock();
            DLDk2out[i][j]=pder/sen->tlen;
            g_mutex.unlock();
        }
    }
    
    for(i=0;i<hidlayerNUM;++i){
        for(j=0;j<featureNUM;++j){
            pder=0.0;
            for(t=0;t<sen->tlen;++t){
                pder+=sen->DLDh[t][i]*sen->inVec[t][j];
            }
            pder/=sen->tlen;
            g_mutex.lock();
            DLDin2hid[i][j]+=pder;
            g_mutex.unlock();
        }
    }

    for(i=0;i<hidlayerNUM;++i){
        for(j=0;j<hidlayerNUM;++j){
            pder=0.0;
            for(t=1;t<sen->tlen;++t){
                pder+=sen->DLDh[t][i]*sen->kLayer[t-1][j];
            }
            pder/=sen->tlen;
            g_mutex.lock();
            DLDrh2h[i][j]+=pder;
            g_mutex.unlock();
        }
    }

    for(i=0;i<hidlayerNUM;++i){
        for(j=0;j<EMOTIONNUM;++j){
            pder=0.0;
            for(t=1;t<sen->tlen;++t){
                pder+=sen->DLDh[t][i]*sen->outLay[t-1][j];
            }
            pder/=sen->tlen;
            g_mutex.lock();
            DLDro2h[i][j]+=pder;
            g_mutex.unlock();
        }
    }
    
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %rbx
movq %rdi, %r11
movslq 0x10(%rsi), %rax
movq 0x38(%rsi), %rdx
movq 0x48(%rsi), %rcx
movq -0x8(%rdx,%rax,8), %rdx
movq 0x58(%rsi), %rsi
movq -0x8(%rsi,%rax,8), %rsi
xorl %edi, %edi
movapd 0x2469(%rip), %xmm2     # 0x6010
movsd (%rcx,%rdi,8), %xmm0
subsd (%rdx,%rdi,8), %xmm0
xorpd %xmm2, %xmm0
movlpd %xmm0, (%rsi,%rdi,8)
incq %rdi
cmpq $0x7, %rdi
jne 0x3ba7
cmpl $0x2, %eax
movq %r11, -0x38(%rbp)
jl 0x3d02
leal -0x2(%rax), %r15d
xorl %r12d, %r12d
movq 0x38(%rbx), %rax
movq 0x48(%rbx), %rcx
movsd (%rcx,%r12,8), %xmm0
movq (%rax,%r15,8), %rax
subsd (%rax,%r12,8), %xmm0
xorpd %xmm2, %xmm0
movq 0x58(%rbx), %rax
movq (%rax,%r15,8), %rax
movlpd %xmm0, (%rax,%r12,8)
xorl %r13d, %r13d
cmpl $0x0, 0x34(%r11)
jle 0x3cd8
xorl %r14d, %r14d
movq 0x58(%rbx), %rax
movq 0x8(%rax,%r15,8), %rax
movsd (%rax,%r13,8), %xmm0
movq 0x18(%r11), %rax
movq (%rax,%r13,8), %rax
mulsd (%rax,%r14,8), %xmm0
movsd %xmm0, -0x30(%rbp)
movq 0x20(%rbx), %rax
movq 0x8(%rax,%r15,8), %rax
movsd (%rax,%r14,8), %xmm0
xorpd %xmm2, %xmm0
movapd %xmm0, -0x50(%rbp)
callq 0x2270
addsd 0x23c7(%rip), %xmm0     # 0x6020
movsd 0x23bf(%rip), %xmm1     # 0x6020
divsd %xmm0, %xmm1
movsd %xmm1, -0x40(%rbp)
movapd -0x50(%rbp), %xmm0
callq 0x2270
movsd 0x23a4(%rip), %xmm3     # 0x6020
movapd 0x238c(%rip), %xmm2     # 0x6010
movq -0x38(%rbp), %r11
addsd %xmm3, %xmm0
movapd %xmm3, %xmm1
divsd %xmm0, %xmm1
movapd %xmm3, %xmm0
subsd %xmm1, %xmm0
movq 0x28(%r11), %rax
mulsd -0x40(%rbp), %xmm0
movq (%rax,%r14,8), %rax
movq 0x58(%rbx), %rcx
movq (%rcx,%r15,8), %rcx
mulsd -0x30(%rbp), %xmm0
mulsd (%rax,%r12,8), %xmm0
addsd (%rcx,%r12,8), %xmm0
movsd %xmm0, (%rcx,%r12,8)
incq %r14
movslq 0x34(%r11), %rax
cmpq %rax, %r14
jl 0x3c12
incq %r13
cmpq $0x7, %r13
jne 0x3c04
incq %r12
cmpq $0x7, %r12
jne 0x3bd7
leaq -0x1(%r15), %rax
testq %r15, %r15
movq %rax, %r15
jg 0x3bd4
cmpl $0x0, 0x34(%r11)
jle 0x3dee
movslq 0x10(%rbx), %r15
xorl %r12d, %r12d
movq 0x60(%rbx), %rax
movq -0x8(%rax,%r15,8), %rax
movq $0x0, (%rax,%r12,8)
xorl %r14d, %r14d
movq 0x58(%rbx), %rax
movq -0x8(%rax,%r15,8), %rax
movsd (%rax,%r14,8), %xmm0
movq 0x18(%r11), %rax
movq (%rax,%r14,8), %rax
mulsd (%rax,%r12,8), %xmm0
movsd %xmm0, -0x30(%rbp)
movq 0x20(%rbx), %rax
movq -0x8(%rax,%r15,8), %rax
movsd (%rax,%r12,8), %xmm0
xorpd %xmm2, %xmm0
movapd %xmm0, -0x50(%rbp)
callq 0x2270
addsd 0x22b1(%rip), %xmm0     # 0x6020
movsd 0x22a9(%rip), %xmm1     # 0x6020
divsd %xmm0, %xmm1
movsd %xmm1, -0x40(%rbp)
movapd -0x50(%rbp), %xmm0
callq 0x2270
movsd 0x228e(%rip), %xmm3     # 0x6020
movapd 0x2276(%rip), %xmm2     # 0x6010
movq -0x38(%rbp), %r11
addsd %xmm3, %xmm0
movapd %xmm3, %xmm1
divsd %xmm0, %xmm1
movapd %xmm3, %xmm0
subsd %xmm1, %xmm0
mulsd -0x40(%rbp), %xmm0
mulsd -0x30(%rbp), %xmm0
movq 0x60(%rbx), %rax
movq -0x8(%rax,%r15,8), %rax
addsd (%rax,%r12,8), %xmm0
movsd %xmm0, (%rax,%r12,8)
incq %r14
cmpq $0x7, %r14
jne 0x3d28
incq %r12
movslq 0x34(%r11), %rax
cmpq %rax, %r12
jl 0x3d14
movl 0x10(%rbx), %r15d
cmpl $0x2, %r15d
jl 0x3fba
addl $-0x2, %r15d
cmpl $0x0, 0x34(%r11)
jle 0x3faa
xorl %r12d, %r12d
movq 0x60(%rbx), %rax
movq (%rax,%r15,8), %rax
movq $0x0, (%rax,%r12,8)
xorl %r14d, %r14d
movq 0x58(%rbx), %rax
movq (%rax,%r15,8), %rax
movsd (%rax,%r14,8), %xmm0
movq 0x18(%r11), %rax
movq (%rax,%r14,8), %rax
mulsd (%rax,%r12,8), %xmm0
movsd %xmm0, -0x30(%rbp)
movq 0x20(%rbx), %rax
movq (%rax,%r15,8), %rax
movsd (%rax,%r12,8), %xmm0
xorpd %xmm2, %xmm0
movapd %xmm0, -0x50(%rbp)
callq 0x2270
addsd 0x21ba(%rip), %xmm0     # 0x6020
movsd 0x21b2(%rip), %xmm1     # 0x6020
divsd %xmm0, %xmm1
movsd %xmm1, -0x40(%rbp)
movapd -0x50(%rbp), %xmm0
callq 0x2270
movsd 0x2197(%rip), %xmm3     # 0x6020
movapd 0x217f(%rip), %xmm2     # 0x6010
movq -0x38(%rbp), %r11
addsd %xmm3, %xmm0
movapd %xmm3, %xmm1
divsd %xmm0, %xmm1
movapd %xmm3, %xmm0
subsd %xmm1, %xmm0
mulsd -0x40(%rbp), %xmm0
mulsd -0x30(%rbp), %xmm0
movq 0x60(%rbx), %rax
movq (%rax,%r15,8), %rax
addsd (%rax,%r12,8), %xmm0
movsd %xmm0, (%rax,%r12,8)
incq %r14
cmpq $0x7, %r14
jne 0x3e21
cmpl $0x0, 0x34(%r11)
jle 0x3f9a
xorl %r14d, %r14d
movq 0x60(%rbx), %rax
movq 0x8(%rax,%r15,8), %rax
movsd (%rax,%r14,8), %xmm0
movq 0x20(%r11), %rax
movq (%rax,%r14,8), %rax
mulsd (%rax,%r12,8), %xmm0
movsd %xmm0, -0x30(%rbp)
movq 0x20(%rbx), %rax
movq 0x8(%rax,%r15,8), %rax
movsd (%rax,%r12,8), %xmm0
xorpd %xmm2, %xmm0
movapd %xmm0, -0x50(%rbp)
callq 0x2270
addsd 0x20f7(%rip), %xmm0     # 0x6020
movsd 0x20ef(%rip), %xmm1     # 0x6020
divsd %xmm0, %xmm1
movsd %xmm1, -0x40(%rbp)
movapd -0x50(%rbp), %xmm0
callq 0x2270
movsd 0x20d4(%rip), %xmm3     # 0x6020
movapd 0x20bc(%rip), %xmm2     # 0x6010
movq -0x38(%rbp), %r11
addsd %xmm3, %xmm0
movapd %xmm3, %xmm1
divsd %xmm0, %xmm1
movapd %xmm3, %xmm0
subsd %xmm1, %xmm0
mulsd -0x40(%rbp), %xmm0
mulsd -0x30(%rbp), %xmm0
movq 0x60(%rbx), %rax
movq (%rax,%r15,8), %rax
addsd (%rax,%r12,8), %xmm0
movsd %xmm0, (%rax,%r12,8)
incq %r14
movslq 0x34(%r11), %rax
cmpq %rax, %r14
jl 0x3ee2
incq %r12
movslq 0x34(%r11), %rax
cmpq %rax, %r12
jl 0x3e0e
leaq -0x1(%r15), %rax
testq %r15, %r15
movq %rax, %r15
jg 0x3e00
movslq 0x10(%rbx), %r15
movslq 0x30(%r11), %rax
testq %rax, %rax
jle 0x4020
movq 0x68(%rbx), %rcx
movq -0x8(%rcx,%r15,8), %rcx
movl 0x34(%r11), %edx
movq 0x10(%r11), %rsi
xorl %edi, %edi
movq $0x0, (%rcx,%rdi,8)
testl %edx, %edx
jle 0x4018
movq 0x60(%rbx), %r8
movq -0x8(%r8,%r15,8), %r8
movsd (%rcx,%rdi,8), %xmm0
xorl %r9d, %r9d
movsd (%r8,%r9,8), %xmm1
movq (%rsi,%r9,8), %r10
mulsd (%r10,%rdi,8), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, (%rcx,%rdi,8)
incq %r9
cmpq %r9, %rdx
jne 0x3ff7
incq %rdi
cmpq %rax, %rdi
jne 0x3fda
cmpl $0x2, %r15d
jl 0x418d
addl $-0x2, %r15d
cmpl $0x0, 0x30(%r11)
jle 0x417d
xorl %r12d, %r12d
movq 0x68(%rbx), %rax
movq (%rax,%r15,8), %rax
movq $0x0, (%rax,%r12,8)
cmpl $0x0, 0x34(%r11)
jle 0x416d
xorl %r13d, %r13d
movq 0x60(%rbx), %rax
movq 0x68(%rbx), %rcx
movq (%rax,%r15,8), %rax
movsd (%rax,%r13,8), %xmm0
movq 0x10(%r11), %rax
movq (%rax,%r13,8), %rax
movq (%rcx,%r15,8), %rcx
mulsd (%rax,%r12,8), %xmm0
addsd (%rcx,%r12,8), %xmm0
movsd %xmm0, (%rcx,%r12,8)
cmpl $0x0, 0x34(%r11)
jle 0x415d
xorl %r14d, %r14d
movq 0x60(%rbx), %rax
movq 0x8(%rax,%r15,8), %rax
movsd (%rax,%r13,8), %xmm0
movq 0x20(%r11), %rax
movq (%rax,%r13,8), %rax
mulsd (%rax,%r14,8), %xmm0
movsd %xmm0, -0x30(%rbp)
movq 0x20(%rbx), %rax
movq (%rax,%r15,8), %rax
movsd (%rax,%r14,8), %xmm0
xorpd %xmm2, %xmm0
movapd %xmm0, -0x50(%rbp)
callq 0x2270
addsd 0x1f42(%rip), %xmm0     # 0x6020
movsd 0x1f3a(%rip), %xmm1     # 0x6020
divsd %xmm0, %xmm1
movsd %xmm1, -0x40(%rbp)
movapd -0x50(%rbp), %xmm0
callq 0x2270
movsd 0x1f1f(%rip), %xmm3     # 0x6020
movapd 0x1f07(%rip), %xmm2     # 0x6010
movq -0x38(%rbp), %r11
addsd %xmm3, %xmm0
movapd %xmm3, %xmm1
divsd %xmm0, %xmm1
movapd %xmm3, %xmm0
subsd %xmm1, %xmm0
movq 0x10(%r11), %rax
mulsd -0x40(%rbp), %xmm0
movq (%rax,%r14,8), %rax
movq 0x68(%rbx), %rcx
movq (%rcx,%r15,8), %rcx
mulsd -0x30(%rbp), %xmm0
mulsd (%rax,%r12,8), %xmm0
addsd (%rcx,%r12,8), %xmm0
movsd %xmm0, (%rcx,%r12,8)
incq %r14
movslq 0x34(%r11), %rax
cmpq %rax, %r14
jl 0x4098
incq %r13
movslq 0x34(%r11), %rax
cmpq %rax, %r13
jl 0x405a
incq %r12
movslq 0x30(%r11), %rax
cmpq %rax, %r12
jl 0x403c
leaq -0x1(%r15), %rax
testq %r15, %r15
movq %rax, %r15
jg 0x402e
movsd 0x40(%r11), %xmm0
movsd %xmm0, -0x30(%rbp)
movl 0x10(%rbx), %r14d
leaq 0x3fd5(%rip), %rdi      # 0x8178
movq %r11, %r13
callq 0x2210
testl %eax, %eax
jne 0x44f8
xorps %xmm1, %xmm1
cvtsi2sd %r14d, %xmm1
movsd -0x30(%rbp), %xmm0
divsd %xmm1, %xmm0
movq (%r13), %rdi
movq 0x8(%rbx), %rsi
movq 0x68(%rbx), %rdx
movl 0x30(%r13), %ecx
callq 0x57df
leaq 0x3f98(%rip), %r15      # 0x8178
movq %r15, %rdi
callq 0x20f0
xorl %r12d, %r12d
movq %r13, %rcx
cmpl $0x0, 0x34(%rcx)
jle 0x4297
xorl %r13d, %r13d
movslq 0x10(%rbx), %r14
testq %r14, %r14
jle 0x4234
movq 0x28(%rbx), %rax
movq 0x58(%rbx), %rcx
xorpd %xmm1, %xmm1
xorl %edx, %edx
movq (%rcx,%rdx,8), %rsi
movsd (%rsi,%r12,8), %xmm0
movq (%rax,%rdx,8), %rsi
mulsd (%rsi,%r13,8), %xmm0
addsd %xmm0, %xmm1
incq %rdx
cmpq %rdx, %r14
jne 0x4212
jmp 0x4238
xorpd %xmm1, %xmm1
movsd %xmm1, -0x30(%rbp)
movq %r15, %rdi
callq 0x2210
testl %eax, %eax
jne 0x44f8
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd -0x30(%rbp), %xmm1
divsd %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtsi2sdl 0x10(%rbx), %xmm0
divsd %xmm0, %xmm1
movq -0x38(%rbp), %r14
movq 0x60(%r14), %rax
movq (%rax,%r12,8), %rax
movsd %xmm1, (%rax,%r13,8)
movq %r15, %rdi
callq 0x20f0
movq %r14, %rcx
incq %r13
movslq 0x34(%r14), %rax
cmpq %rax, %r13
jl 0x41fb
incq %r12
cmpq $0x7, %r12
jne 0x41ee
cmpl $0x0, 0x34(%rcx)
jle 0x436b
xorl %r12d, %r12d
leaq 0x3ec0(%rip), %r15      # 0x8178
cmpl $0x0, 0x30(%rcx)
jle 0x435b
xorl %r13d, %r13d
movslq 0x10(%rbx), %r14
testq %r14, %r14
jle 0x42fe
movq 0x18(%rbx), %rax
movq 0x60(%rbx), %rcx
xorpd %xmm1, %xmm1
xorl %edx, %edx
movq (%rcx,%rdx,8), %rsi
movsd (%rsi,%r12,8), %xmm0
movq (%rax,%rdx,8), %rsi
mulsd (%rsi,%r13,8), %xmm0
addsd %xmm0, %xmm1
incq %rdx
cmpq %rdx, %r14
jne 0x42dc
jmp 0x4302
xorpd %xmm1, %xmm1
movsd %xmm1, -0x30(%rbp)
movq %r15, %rdi
callq 0x2210
testl %eax, %eax
jne 0x44f8
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd -0x30(%rbp), %xmm1
divsd %xmm0, %xmm1
movq -0x38(%rbp), %r14
movq 0x58(%r14), %rax
movq (%rax,%r12,8), %rax
addsd (%rax,%r13,8), %xmm1
movsd %xmm1, (%rax,%r13,8)
movq %r15, %rdi
callq 0x20f0
movq %r14, %rcx
incq %r13
movslq 0x30(%r14), %rax
cmpq %rax, %r13
jl 0x42c5
incq %r12
movslq 0x34(%rcx), %rax
cmpq %rax, %r12
jl 0x42b8
cmpl $0x0, 0x34(%rcx)
jle 0x4432
xorl %r12d, %r12d
leaq 0x3df9(%rip), %r15      # 0x8178
cmpl $0x0, 0x34(%rcx)
jle 0x4422
xorl %r13d, %r13d
movslq 0x10(%rbx), %r14
xorpd %xmm1, %xmm1
cmpq $0x2, %r14
jl 0x43c9
movq 0x28(%rbx), %rax
movq 0x60(%rbx), %rcx
leaq -0x1(%r14), %rdx
xorl %esi, %esi
movq 0x8(%rcx,%rsi,8), %rdi
movsd (%rdi,%r12,8), %xmm0
movq (%rax,%rsi,8), %rdi
mulsd (%rdi,%r13,8), %xmm0
addsd %xmm0, %xmm1
incq %rsi
cmpq %rsi, %rdx
jne 0x43a8
movsd %xmm1, -0x30(%rbp)
movq %r15, %rdi
callq 0x2210
testl %eax, %eax
jne 0x44f8
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd -0x30(%rbp), %xmm1
divsd %xmm0, %xmm1
movq -0x38(%rbp), %r14
movq 0x68(%r14), %rax
movq (%rax,%r12,8), %rax
addsd (%rax,%r13,8), %xmm1
movsd %xmm1, (%rax,%r13,8)
movq %r15, %rdi
callq 0x20f0
movq %r14, %rcx
incq %r13
movslq 0x34(%r14), %rax
cmpq %rax, %r13
jl 0x438c
incq %r12
movslq 0x34(%rcx), %rax
cmpq %rax, %r12
jl 0x437f
cmpl $0x0, 0x34(%rcx)
jle 0x44e9
xorl %r12d, %r12d
leaq 0x3d32(%rip), %r15      # 0x8178
xorl %r13d, %r13d
movslq 0x10(%rbx), %r14
xorpd %xmm1, %xmm1
cmpq $0x2, %r14
jl 0x4486
movq 0x30(%rbx), %rax
movq 0x60(%rbx), %rcx
leaq -0x1(%r14), %rdx
xorl %esi, %esi
movq 0x8(%rcx,%rsi,8), %rdi
movsd (%rdi,%r12,8), %xmm0
movq (%rax,%rsi,8), %rdi
mulsd (%rdi,%r13,8), %xmm0
addsd %xmm0, %xmm1
incq %rsi
cmpq %rsi, %rdx
jne 0x4465
movsd %xmm1, -0x30(%rbp)
movq %r15, %rdi
callq 0x2210
testl %eax, %eax
jne 0x44f8
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd -0x30(%rbp), %xmm1
divsd %xmm0, %xmm1
movq -0x38(%rbp), %rax
movq 0x70(%rax), %rax
movq (%rax,%r12,8), %rax
addsd (%rax,%r13,8), %xmm1
movsd %xmm1, (%rax,%r13,8)
movq %r15, %rdi
callq 0x20f0
incq %r13
cmpq $0x7, %r13
jne 0x4449
incq %r12
movq -0x38(%rbp), %rax
movslq 0x34(%rax), %rax
cmpq %rax, %r12
jl 0x4446
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl %eax, %edi
callq 0x20d0
nop