// File: 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
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
subl $0x1, %eax
movl %eax, -0x14(%rbp)
movl $0x0, -0x18(%rbp)
cmpl $0x7, -0x18(%rbp)
jge 0x43d7
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
subsd (%rax,%rcx,8), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x436c
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
subl $0x2, %eax
movl %eax, -0x14(%rbp)
cmpl $-0x1, -0x14(%rbp)
jle 0x4569
movl $0x0, -0x18(%rbp)
cmpl $0x7, -0x18(%rbp)
jge 0x4559
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
subsd (%rax,%rcx,8), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl $0x0, -0x20(%rbp)
cmpl $0x7, -0x20(%rbp)
jge 0x4549
movl $0x0, -0x1c(%rbp)
movq -0x38(%rbp), %rcx
movl -0x1c(%rbp), %eax
cmpl 0x34(%rcx), %eax
jge 0x4539
movq -0x38(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x20(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x18(%rdi), %rax
movslq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
mulsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x40(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
callq 0x5b50
movq -0x38(%rbp), %rax
movaps %xmm0, %xmm1
movsd -0x40(%rbp), %xmm0
mulsd %xmm1, %xmm0
movq 0x28(%rax), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x4471
jmp 0x453b
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x4460
jmp 0x454b
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x43f5
jmp 0x455b
movl -0x14(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x43e4
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
subl $0x1, %eax
movl %eax, -0x14(%rbp)
movl $0x0, -0x18(%rbp)
movq -0x38(%rbp), %rcx
movl -0x18(%rbp), %eax
cmpl 0x34(%rcx), %eax
jge 0x465b
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl $0x0, -0x1c(%rbp)
cmpl $0x7, -0x1c(%rbp)
jge 0x464b
movq -0x38(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x18(%rdi), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
mulsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x48(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
callq 0x5b50
movaps %xmm0, %xmm2
movsd -0x48(%rbp), %xmm0
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x45b0
jmp 0x464d
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x457d
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
subl $0x2, %eax
movl %eax, -0x14(%rbp)
cmpl $-0x1, -0x14(%rbp)
jle 0x4819
movl $0x0, -0x18(%rbp)
movq -0x38(%rbp), %rcx
movl -0x18(%rbp), %eax
cmpl 0x34(%rcx), %eax
jge 0x4809
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl $0x0, -0x1c(%rbp)
cmpl $0x7, -0x1c(%rbp)
jge 0x4747
movq -0x38(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x18(%rdi), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
mulsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x50(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
callq 0x5b50
movaps %xmm0, %xmm2
movsd -0x50(%rbp), %xmm0
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x46ac
movl $0x0, -0x1c(%rbp)
movq -0x38(%rbp), %rcx
movl -0x1c(%rbp), %eax
cmpl 0x34(%rcx), %eax
jge 0x47f9
movq -0x38(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x20(%rdi), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
mulsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x58(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
callq 0x5b50
movaps %xmm0, %xmm2
movsd -0x58(%rbp), %xmm0
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x474e
jmp 0x47fb
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x4679
jmp 0x480b
movl -0x14(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x4668
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
subl $0x1, %eax
movl %eax, -0x14(%rbp)
movl $0x0, -0x18(%rbp)
movq -0x38(%rbp), %rcx
movl -0x18(%rbp), %eax
cmpl 0x30(%rcx), %eax
jge 0x48df
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl $0x0, -0x1c(%rbp)
movq -0x38(%rbp), %rcx
movl -0x1c(%rbp), %eax
cmpl 0x34(%rcx), %eax
jge 0x48cf
movq -0x38(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x60(%rcx), %rcx
movslq -0x14(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x1c(%rbp), %rdx
movsd (%rcx,%rdx,8), %xmm0
movq 0x10(%rax), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x4860
jmp 0x48d1
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x482d
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
subl $0x2, %eax
movl %eax, -0x14(%rbp)
cmpl $-0x1, -0x14(%rbp)
jle 0x4a92
movl $0x0, -0x18(%rbp)
movq -0x38(%rbp), %rcx
movl -0x18(%rbp), %eax
cmpl 0x30(%rcx), %eax
jge 0x4a82
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl $0x0, -0x1c(%rbp)
movq -0x38(%rbp), %rcx
movl -0x1c(%rbp), %eax
cmpl 0x34(%rcx), %eax
jge 0x4a72
movq -0x38(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x60(%rcx), %rcx
movslq -0x14(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x1c(%rbp), %rdx
movsd (%rcx,%rdx,8), %xmm0
movq 0x10(%rax), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl $0x0, -0x20(%rbp)
movq -0x38(%rbp), %rcx
movl -0x20(%rbp), %eax
cmpl 0x34(%rcx), %eax
jge 0x4a62
movq -0x38(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x20(%rdi), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x20(%rbp), %rcx
mulsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x60(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x20(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
callq 0x5b50
movq -0x38(%rbp), %rax
movaps %xmm0, %xmm1
movsd -0x60(%rbp), %xmm0
mulsd %xmm1, %xmm0
movq 0x10(%rax), %rax
movslq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x499f
jmp 0x4a64
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x4930
jmp 0x4a74
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x48fd
jmp 0x4a84
movl -0x14(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x48ec
movq -0x38(%rbp), %rax
movsd 0x40(%rax), %xmm0
movq -0x10(%rbp), %rax
cvtsi2sdl 0x10(%rax), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
leaq 0x66ac(%rip), %rdi      # 0xb160
callq 0x5bb0
movq -0x38(%rbp), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rcx
movq 0x8(%rcx), %rsi
movq -0x10(%rbp), %rcx
movq 0x68(%rcx), %rdx
movl 0x30(%rax), %ecx
movsd -0x28(%rbp), %xmm0
callq 0x7620
leaq 0x667c(%rip), %rdi      # 0xb160
callq 0x5be0
movl $0x0, -0x18(%rbp)
cmpl $0x7, -0x18(%rbp)
jge 0x4bf3
movl $0x0, -0x1c(%rbp)
movq -0x38(%rbp), %rcx
movl -0x1c(%rbp), %eax
cmpl 0x34(%rcx), %eax
jge 0x4be3
xorps %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x4b7b
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd -0x30(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x4b20
movq -0x10(%rbp), %rax
cvtsi2sdl 0x10(%rax), %xmm1
movsd -0x30(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
leaq 0x65c7(%rip), %rdi      # 0xb160
callq 0x5bb0
movq -0x38(%rbp), %rax
movsd -0x30(%rbp), %xmm0
movq -0x10(%rbp), %rcx
cvtsi2sdl 0x10(%rcx), %xmm1
divsd %xmm1, %xmm0
movq 0x60(%rax), %rax
movslq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
leaq 0x6590(%rip), %rdi      # 0xb160
callq 0x5be0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x4b01
jmp 0x4be5
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x4af0
movl $0x0, -0x18(%rbp)
movq -0x38(%rbp), %rcx
movl -0x18(%rbp), %eax
cmpl 0x34(%rcx), %eax
jge 0x4cfb
movl $0x0, -0x1c(%rbp)
movq -0x38(%rbp), %rcx
movl -0x1c(%rbp), %eax
cmpl 0x30(%rcx), %eax
jge 0x4ceb
xorps %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x4c8b
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd -0x30(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x4c30
movq -0x10(%rbp), %rax
cvtsi2sdl 0x10(%rax), %xmm1
movsd -0x30(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
leaq 0x64b7(%rip), %rdi      # 0xb160
callq 0x5bb0
movq -0x38(%rbp), %rax
movsd -0x30(%rbp), %xmm0
movq 0x58(%rax), %rax
movslq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
leaq 0x6488(%rip), %rdi      # 0xb160
callq 0x5be0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x4c11
jmp 0x4ced
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x4bfa
movl $0x0, -0x18(%rbp)
movq -0x38(%rbp), %rcx
movl -0x18(%rbp), %eax
cmpl 0x34(%rcx), %eax
jge 0x4e08
movl $0x0, -0x1c(%rbp)
movq -0x38(%rbp), %rcx
movl -0x1c(%rbp), %eax
cmpl 0x34(%rcx), %eax
jge 0x4df8
xorps %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
movl $0x1, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x4d98
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movl -0x14(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd -0x30(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x4d38
movq -0x10(%rbp), %rax
cvtsi2sdl 0x10(%rax), %xmm1
movsd -0x30(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
leaq 0x63aa(%rip), %rdi      # 0xb160
callq 0x5bb0
movq -0x38(%rbp), %rax
movsd -0x30(%rbp), %xmm0
movq 0x68(%rax), %rax
movslq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
leaq 0x637b(%rip), %rdi      # 0xb160
callq 0x5be0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x4d19
jmp 0x4dfa
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x4d02
movl $0x0, -0x18(%rbp)
movq -0x38(%rbp), %rcx
movl -0x18(%rbp), %eax
cmpl 0x34(%rcx), %eax
jge 0x4f0f
movl $0x0, -0x1c(%rbp)
cmpl $0x7, -0x1c(%rbp)
jge 0x4eff
xorps %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
movl $0x1, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x4e9f
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x18(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x14(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd -0x30(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x4e3f
movq -0x10(%rbp), %rax
cvtsi2sdl 0x10(%rax), %xmm1
movsd -0x30(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
leaq 0x62a3(%rip), %rdi      # 0xb160
callq 0x5bb0
movq -0x38(%rbp), %rax
movsd -0x30(%rbp), %xmm0
movq 0x70(%rax), %rax
movslq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
leaq 0x6274(%rip), %rdi      # 0xb160
callq 0x5be0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x4e26
jmp 0x4f01
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x4e0f
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)