// File: /workspace/github_cpp_makefile_star2_O2/fjamour[P]icentral/src/bcc_delta.cc
// Function: bcc_delta_t::dbg_iteration(unsigned int, unsigned int, unsigned int, int, int, std::tr1::unordered_map<unsigned int, double, std::tr1::hash<unsigned int>, std::equal_to<unsigned int>, std::allocator<std::pair<unsigned int const, double>>>&)
void bcc_delta_t::dbg_iteration(node_id_t s,
                        node_id_t src,
                        node_id_t dst,
                        int d_src,
                        int d_dst,
                        tr1_map_t(double)& bc_map)
{
        tr1_map_t(vector<node_id_t> )&  P = bcc_subgraph.P; 
        tr1_map_t(int)&                 path_cnt_map = bcc_subgraph.path_cnt_vec;
        tr1_map_t(int)&                 dist_map = bcc_subgraph.dist_vec;
        tr1_map_t(double)&              pair_dep_map = bcc_subgraph.pair_dep_vec;
        tr1_map_t(double)&              sigma_t_map = bcc_subgraph.sigma_t_map;
        queue<node_id_t>&               Q = bcc_subgraph.Q;
        vector<node_id_t>               S;
        
        bcc_subgraph.init_maps();           
        path_cnt_map[s] = 1;
        dist_map[s] = 0;
        Q.push(s);
        while(!Q.empty()) {
            node_id_t v_i = Q.front(); Q.pop();
            S.push_back(v_i);
            for(int i = 0; i < bcc_subgraph.nodes_map[v_i].nbrs_vec.size(); ++i) {
                node_id_t v_n = bcc_subgraph.nodes_map[v_i].nbrs_vec[i];
                if(dist_map[v_n] < 0) {
                    Q.push(v_n);
                    dist_map[v_n] = dist_map[v_i] + 1;
                }
                if(dist_map[v_n] == dist_map[v_i] + 1) {
                    path_cnt_map[v_n] = path_cnt_map[v_n] + path_cnt_map[v_i];
                    P[v_n].push_back(v_i);
                }
            }
        }
        //RBFS to subtract old pair dependency
        for(int i = S.size()-1; i >= 0; --i) {
            node_id_t v_n = S[i];
            if(   art_pt_map.find(s) != art_pt_map.end()
               && art_pt_map.find(v_n) != art_pt_map.end()
               && s != v_n) {
                int VG_s, VG_n;
                VG_s = accumulate(art_pt_map[s].begin(), art_pt_map[s].end(), 0);
                VG_n = accumulate(art_pt_map[v_n].begin(), art_pt_map[v_n].end(), 0);
                int c_t = VG_s*VG_n;
                sigma_t_map[v_n] =  sigma_t_map[v_n] + c_t;
                /*this guy must not change!*/
                //bc_map[v_n] = bc_map[v_n] - c_t;
            }
            for(int i = 0; i < P[v_n].size(); ++i) {
                node_id_t v_p = P[v_n][i];
                double sp_sn = ((double)path_cnt_map[v_p]/path_cnt_map[v_n]);
                pair_dep_map[v_p] = pair_dep_map[v_p] + sp_sn*(1+pair_dep_map[v_n]);
                if(art_pt_map.find(s) != art_pt_map.end()) {
                    sigma_t_map[v_p] = sigma_t_map[v_p] + sigma_t_map[v_n]*sp_sn;
                    bc_map[v_p] = bc_map[v_p] - sigma_t_map[v_n]*sp_sn/2.0;
                }
            }
            if(s != v_n) {
                bc_map[v_n] = bc_map[v_n] - pair_dep_map[v_n]/2.0;
            }
            if(art_pt_map.find(s) != art_pt_map.end()) {
                int VG_s = accumulate(art_pt_map[s].begin(), art_pt_map[s].end(), 0);
                bc_map[v_n] = bc_map[v_n] - pair_dep_map[v_n]*VG_s;
            }
        }
        
        bcc_subgraph.insert_edge(src, dst);
        bcc_subgraph.init_maps();
        path_cnt_map[s] = 1;
        dist_map[s] = 0;
        Q.push(s);
        S.clear();
        while(!Q.empty()) {
            node_id_t v_i = Q.front(); Q.pop();
            S.push_back(v_i);
            for(int i = 0; i < bcc_subgraph.nodes_map[v_i].nbrs_vec.size(); ++i) {
                node_id_t v_n = bcc_subgraph.nodes_map[v_i].nbrs_vec[i];
                if(dist_map[v_n] < 0) {
                    Q.push(v_n);
                    dist_map[v_n] = dist_map[v_i] + 1;
                }
                if(dist_map[v_n] == dist_map[v_i] + 1) {
                    path_cnt_map[v_n] = path_cnt_map[v_n] + path_cnt_map[v_i];
                    P[v_n].push_back(v_i);
                }
            }
        }
        
        //DBG
//        printf("===========================\nSource: %d\n", s);
//        for(tr1_map_t(double)::iterator it = pair_dep_map.begin();
//                it != pair_dep_map.end();
//                ++it) {
//            printf("pd[%d]: %f           ", it->first, it->second);
//            printf("# parents: %d\n", P[it->first].size());
//        }
        //////
        
        for(int i = S.size()-1; i >= 0; --i) {
            node_id_t v_n = S[i];
            if(   art_pt_map.find(s) != art_pt_map.end()
               && art_pt_map.find(v_n) != art_pt_map.end()
               && s != v_n) {
                int VG_s, VG_n;
                VG_s = accumulate(art_pt_map[s].begin(), art_pt_map[s].end(), 0);
                VG_n = accumulate(art_pt_map[v_n].begin(), art_pt_map[v_n].end(), 0);
                int c_t = VG_s*VG_n;
                sigma_t_map[v_n] =  sigma_t_map[v_n] + c_t;
                /*this guy must not change!*/
                //bc_map[v_n] = bc_map[v_n] + c_t;
            }
            for(int i = 0; i < P[v_n].size(); ++i) {
                node_id_t v_p = P[v_n][i];
                double sp_sn = ((double)path_cnt_map[v_p]/path_cnt_map[v_n]);
                pair_dep_map[v_p] = pair_dep_map[v_p] + sp_sn*(1+pair_dep_map[v_n]);
                if(art_pt_map.find(s) != art_pt_map.end()) {
                    sigma_t_map[v_p] = sigma_t_map[v_p] + sigma_t_map[v_n]*sp_sn;
                    bc_map[v_p] = bc_map[v_p] + sigma_t_map[v_n]*sp_sn/2.0;
                }
            }
            if(s != v_n) {
                bc_map[v_n] = bc_map[v_n] + pair_dep_map[v_n]/2.0;
            }
            if(art_pt_map.find(s) != art_pt_map.end()) {
                int VG_s = accumulate(art_pt_map[s].begin(), art_pt_map[s].end(), 0);
                bc_map[v_n] = bc_map[v_n] + pair_dep_map[v_n]*VG_s;
            }
        }
        
        //DBG
//        printf("===========================\nSource: %d\n", s);
//        for(tr1_map_t(int)::iterator it = path_cnt_map.begin();
//                it != path_cnt_map.end();
//                ++it) {
//            printf("cnt[%d]: %d           ", it->first, it->second);
//            printf("# parents: %d\n", P[it->first].size());
//        }
        /////
        
        //DBG
//        printf("========================\nSource: %d\n", s);
//        for(int i = S.size()-1; i >= 0; --i) {
//            printf("%d\n", S[i]);
//        }
        //////
        
        //DBG print all:
//        printf("===========================\nSource: %d\n", s);
//        for(tr1_map_t(int)::iterator it = path_cnt_map.begin();
//                it != path_cnt_map.end();
//                ++it) {
//            printf("cnt[%d]: %d\n", it->first, it->second);
//            for(int i = 0; i < P[it->first].size(); ++i) {
//                printf("        P[%d][%d]: %d\n", it->first, i, P[it->first][i]);
//            }
//        }
//        printf("S:  ");
//        for(int i = S.size()-1; i >= 0; --i) {
//            printf("%d  ", S[i]);
//        }
//        printf("\n");
        ///////////
        

        bcc_subgraph.remove_edge(src, dst);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movl %ecx, 0x6c(%rsp)
movl %edx, 0x68(%rsp)
movl %esi, 0x4(%rsp)
movq %rdi, 0x18(%rsp)
leaq 0x30(%rdi), %r12
xorpd %xmm0, %xmm0
movapd %xmm0, 0x70(%rsp)
andq $0x0, 0x80(%rsp)
movq %r12, %rdi
callq 0x173d2
movq 0x18(%rsp), %rax
leaq 0xc0(%rax), %rdi
leaq 0x4(%rsp), %rsi
movq %rdi, 0x38(%rsp)
callq 0xb180
movq 0x18(%rsp), %rcx
leaq 0x120(%rcx), %r14
movl $0x1, (%rax)
leaq 0x4(%rsp), %rsi
movq %r14, %rdi
callq 0xb180
movq 0x18(%rsp), %rcx
leaq 0x288(%rcx), %rdi
andl $0x0, (%rax)
leaq 0x4(%rsp), %rsi
movq %rdi, 0x60(%rsp)
callq 0x62da
movq 0x18(%rsp), %rax
leaq 0x90(%rax), %rcx
movq %rcx, 0x58(%rsp)
leaq 0x150(%rax), %rcx
movq %rcx, 0x48(%rsp)
addq $0x1e0, %rax            # imm = 0x1E0
movq %rax, 0x40(%rsp)
leaq 0x14(%rsp), %r13
leaq 0x2c(%rsp), %rbx
movq %r12, 0x30(%rsp)
movq 0x18(%rsp), %rcx
movq 0x298(%rcx), %rax
cmpq %rax, 0x2b8(%rcx)
je 0xe700
movl (%rax), %eax
movl %eax, 0x14(%rsp)
movq 0x60(%rsp), %rdi
callq 0x650e
leaq 0x70(%rsp), %rdi
movq %r13, %rsi
callq 0x478c
xorl %ebp, %ebp
movq %r12, %rdi
movq %r13, %rsi
callq 0xf182
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbp, %rcx
jbe 0xe5e2
movq %r12, %rdi
movq %r13, %rsi
callq 0xf182
movq (%rax), %rax
movl (%rax,%rbp,4), %eax
movl %eax, 0x2c(%rsp)
movq %r14, %rdi
movq %rbx, %rsi
callq 0xb180
cmpl $0x0, (%rax)
jns 0xe686
movq 0x60(%rsp), %rdi
movq %rbx, %rsi
callq 0x62da
movq %r14, %rdi
movq %r13, %rsi
callq 0xb180
movl (%rax), %r15d
movq %r14, %rdi
movq %rbx, %rsi
callq 0xb180
incl %r15d
movl %r15d, (%rax)
movq %r14, %rdi
movq %rbx, %rsi
callq 0xb180
movl (%rax), %r15d
movq %r14, %rdi
movq %r13, %rsi
callq 0xb180
movl (%rax), %eax
incl %eax
cmpl %eax, %r15d
jne 0xe6f3
movq 0x38(%rsp), %rdi
movq %rbx, %rsi
callq 0xb180
movl (%rax), %r15d
movq 0x38(%rsp), %rdi
movq %r13, %rsi
callq 0xb180
movl (%rax), %r12d
movq 0x38(%rsp), %rdi
movq %rbx, %rsi
callq 0xb180
addl %r15d, %r12d
movl %r12d, (%rax)
movq 0x58(%rsp), %rdi
movq %rbx, %rsi
callq 0xb1de
movq %rax, %rdi
movq %r13, %rsi
callq 0x478c
incq %rbp
movq 0x30(%rsp), %r12
jmp 0xe61a
movq 0x78(%rsp), %rax
subq 0x70(%rsp), %rax
shrq $0x2, %rax
movl %eax, %eax
leaq 0x14(%rsp), %r13
leaq 0x2c(%rsp), %rbx
decq %rax
testl %eax, %eax
js 0xeb1b
movq %rax, 0x90(%rsp)
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq 0x70(%rsp), %rcx
movl (%rcx,%rax,4), %eax
movl %eax, 0x14(%rsp)
movq 0x18(%rsp), %r15
movq %r15, %rdi
leaq 0x4(%rsp), %rsi
callq 0x4a5c
movq 0x8(%r15), %rcx
movq 0x10(%r15), %rdx
cmpq (%rcx,%rdx,8), %rax
je 0xe848
movq 0x18(%rsp), %r15
movq %r15, %rdi
movq %r13, %rsi
callq 0x4a5c
movq 0x8(%r15), %rcx
movq 0x10(%r15), %rdx
cmpq (%rcx,%rdx,8), %rax
je 0xe848
movl 0x4(%rsp), %eax
cmpl 0x14(%rsp), %eax
je 0xe848
movq 0x18(%rsp), %rbp
movq %rbp, %rdi
leaq 0x4(%rsp), %rsi
callq 0x4aaa
movq (%rax), %r15
movq %rbp, %rdi
leaq 0x4(%rsp), %rsi
callq 0x4aaa
movq 0x8(%rax), %rax
movl $0x0, 0x8(%rsp)
cmpq %rax, %r15
je 0xe7d6
movl 0x8(%rsp), %ecx
addl (%r15), %ecx
movl %ecx, 0x8(%rsp)
addq $0x4, %r15
jmp 0xe7c0
movq 0x18(%rsp), %r15
movq %r15, %rdi
movq %r13, %rsi
callq 0x4aaa
movq (%rax), %rbp
movq %r15, %rdi
movq %r13, %rsi
callq 0x4aaa
movq 0x8(%rax), %rax
xorl %r15d, %r15d
cmpq %rax, %rbp
je 0xe80a
addl (%rbp), %r15d
addq $0x4, %rbp
jmp 0xe7fb
movq 0x40(%rsp), %rbp
movq %rbp, %rdi
movq %r13, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq %rbp, %rdi
movq %r13, %rsi
callq 0xb00c
imull 0x8(%rsp), %r15d
cvtsi2sd %r15d, %xmm0
movsd 0x20(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, (%rax)
xorl %ebp, %ebp
movq 0x58(%rsp), %rdi
movq %r13, %rsi
callq 0xb1de
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbp, %rcx
jbe 0xe9f1
movq 0x58(%rsp), %rdi
movq %r13, %rsi
callq 0xb1de
movq (%rax), %rax
movl (%rax,%rbp,4), %eax
movl %eax, 0x2c(%rsp)
movq 0x38(%rsp), %rdi
movq %rbx, %rsi
callq 0xb180
movl (%rax), %r15d
movq 0x38(%rsp), %rdi
movq %r13, %rsi
callq 0xb180
cvtsi2sdl (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x48(%rsp), %rdi
movq %rbx, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x48(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
movq 0x48(%rsp), %rdi
movq %rbx, %rsi
callq 0xb00c
cvtsi2sd %r15d, %xmm0
divsd 0x8(%rsp), %xmm0
movsd 0x50(%rsp), %xmm1
addsd 0x19743(%rip), %xmm1    # 0x28040
movsd %xmm0, 0x8(%rsp)
mulsd %xmm0, %xmm1
addsd 0x20(%rsp), %xmm1
movsd %xmm1, (%rax)
movq 0x18(%rsp), %r15
movq %r15, %rdi
leaq 0x4(%rsp), %rsi
callq 0x4a5c
movq 0x8(%r15), %rcx
movq 0x10(%r15), %rdx
cmpq (%rcx,%rdx,8), %rax
je 0xe9e9
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x40(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0xb00c
movsd 0x50(%rsp), %xmm0
mulsd 0x8(%rsp), %xmm0
addsd 0x20(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0xd0(%rsp), %rdi
movq %rbx, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x40(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
movq 0xd0(%rsp), %rdi
movq %rbx, %rsi
callq 0xb00c
movsd 0x8(%rsp), %xmm0
mulsd 0x50(%rsp), %xmm0
mulsd 0x1965d(%rip), %xmm0    # 0x28038
movsd 0x20(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, (%rax)
incq %rbp
jmp 0xe84a
movl 0x4(%rsp), %eax
cmpl 0x14(%rsp), %eax
je 0xea58
movq 0xd0(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x48(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0xd0(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
movsd 0x20(%rsp), %xmm1
mulsd 0x195ee(%rip), %xmm1    # 0x28038
movsd 0x8(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movq 0x18(%rsp), %r15
movq %r15, %rdi
leaq 0x4(%rsp), %rsi
callq 0x4a5c
movq 0x8(%r15), %rcx
movq 0x10(%r15), %rdx
cmpq (%rcx,%rdx,8), %rax
je 0xeb0e
movq 0x18(%rsp), %rdi
leaq 0x4(%rsp), %rsi
callq 0x4aaa
movq (%rax), %r15
movq 0x18(%rsp), %rdi
leaq 0x4(%rsp), %rsi
callq 0x4aaa
movq 0x8(%rax), %rax
xorl %ebp, %ebp
cmpq %rax, %r15
je 0xeab1
addl (%r15), %ebp
addq $0x4, %r15
jmp 0xeaa3
movq 0xd0(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x48(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0xd0(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
cvtsi2sd %ebp, %xmm0
movsd 0x20(%rsp), %xmm1
mulsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movq 0x90(%rsp), %rax
jmp 0xe71a
movq %r12, %rdi
movl 0x68(%rsp), %esi
movl 0x6c(%rsp), %edx
callq 0x1756e
movq %r12, %rdi
callq 0x173d2
leaq 0x4(%rsp), %rsi
movq 0x38(%rsp), %rdi
callq 0xb180
movl $0x1, (%rax)
leaq 0x4(%rsp), %rsi
movq %r14, %rdi
callq 0xb180
andl $0x0, (%rax)
leaq 0x4(%rsp), %rsi
movq 0x60(%rsp), %rdi
callq 0x62da
movq 0x70(%rsp), %rax
cmpq %rax, 0x78(%rsp)
je 0xeb78
movq %rax, 0x78(%rsp)
leaq 0x14(%rsp), %r13
leaq 0x2c(%rsp), %rbx
movq 0x18(%rsp), %rcx
movq 0x298(%rcx), %rax
cmpq %rax, 0x2b8(%rcx)
je 0xeca0
movl (%rax), %eax
movl %eax, 0x14(%rsp)
movq 0x60(%rsp), %rdi
callq 0x650e
leaq 0x70(%rsp), %rdi
movq %r13, %rsi
callq 0x478c
xorl %ebp, %ebp
movq %r12, %rdi
movq %r13, %rsi
callq 0xf182
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbp, %rcx
jbe 0xeb82
movq %r12, %rdi
movq %r13, %rsi
callq 0xf182
movq (%rax), %rax
movl (%rax,%rbp,4), %eax
movl %eax, 0x2c(%rsp)
movq %r14, %rdi
movq %rbx, %rsi
callq 0xb180
cmpl $0x0, (%rax)
jns 0xec26
movq 0x60(%rsp), %rdi
movq %rbx, %rsi
callq 0x62da
movq %r14, %rdi
movq %r13, %rsi
callq 0xb180
movl (%rax), %r15d
movq %r14, %rdi
movq %rbx, %rsi
callq 0xb180
incl %r15d
movl %r15d, (%rax)
movq %r14, %rdi
movq %rbx, %rsi
callq 0xb180
movl (%rax), %r15d
movq %r14, %rdi
movq %r13, %rsi
callq 0xb180
movl (%rax), %eax
incl %eax
cmpl %eax, %r15d
jne 0xec93
movq 0x38(%rsp), %rdi
movq %rbx, %rsi
callq 0xb180
movl (%rax), %r15d
movq 0x38(%rsp), %rdi
movq %r13, %rsi
callq 0xb180
movl (%rax), %r12d
movq 0x38(%rsp), %rdi
movq %rbx, %rsi
callq 0xb180
addl %r15d, %r12d
movl %r12d, (%rax)
movq 0x58(%rsp), %rdi
movq %rbx, %rsi
callq 0xb1de
movq %rax, %rdi
movq %r13, %rsi
callq 0x478c
incq %rbp
movq 0x30(%rsp), %r12
jmp 0xebba
movq 0x78(%rsp), %rax
subq 0x70(%rsp), %rax
shrq $0x2, %rax
movl %eax, %r15d
leaq 0x14(%rsp), %r13
leaq 0x2c(%rsp), %rbx
movq 0x18(%rsp), %r14
decq %r15
testl %r15d, %r15d
js 0xf094
movl %r15d, %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq 0x70(%rsp), %rcx
movl (%rcx,%rax,4), %eax
movl %eax, 0x14(%rsp)
movq %r14, %rdi
leaq 0x4(%rsp), %rsi
callq 0x4a5c
movq 0x8(%r14), %rcx
movq 0x10(%r14), %rdx
cmpq (%rcx,%rdx,8), %rax
movq %r15, 0x50(%rsp)
je 0xedd4
movq %r14, %rdi
movq %r13, %rsi
callq 0x4a5c
movq 0x8(%r14), %rcx
movq 0x10(%r14), %rdx
cmpq (%rcx,%rdx,8), %rax
je 0xedd4
movl 0x4(%rsp), %eax
cmpl 0x14(%rsp), %eax
je 0xedd4
movq %r14, %rdi
leaq 0x4(%rsp), %rsi
callq 0x4aaa
movq (%rax), %r15
movq %r14, %rdi
leaq 0x4(%rsp), %rsi
callq 0x4aaa
movq 0x8(%rax), %rax
xorl %ebp, %ebp
cmpq %rax, %r15
je 0xed60
addl (%r15), %ebp
addq $0x4, %r15
jmp 0xed52
movq %r14, %rdi
movq %r13, %rsi
callq 0x4aaa
movq %r14, %rdi
movq (%rax), %r14
movq %r13, %rsi
callq 0x4aaa
movq 0x8(%rax), %rax
xorl %r15d, %r15d
cmpq %rax, %r14
je 0xed8e
addl (%r14), %r15d
addq $0x4, %r14
jmp 0xed80
movq 0x40(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq %r14, %rdi
movq %r13, %rsi
callq 0xb00c
imull %ebp, %r15d
cvtsi2sd %r15d, %xmm0
movsd 0x8(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, (%rax)
movq 0x18(%rsp), %r14
movq 0x50(%rsp), %r15
xorl %ebp, %ebp
movq 0x58(%rsp), %rdi
movq %r13, %rsi
callq 0xb1de
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %rbp, %rcx
jbe 0xef7d
movq 0x58(%rsp), %rdi
movq %r13, %rsi
callq 0xb1de
movq (%rax), %rax
movl (%rax,%rbp,4), %eax
movl %eax, 0x2c(%rsp)
movq 0x38(%rsp), %rdi
movq %rbx, %rsi
callq 0xb180
movl (%rax), %r15d
movq 0x38(%rsp), %rdi
movq %r13, %rsi
callq 0xb180
cvtsi2sdl (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x48(%rsp), %rdi
movq %rbx, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x30(%rsp)
movq 0x48(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x48(%rsp), %rdi
movq %rbx, %rsi
callq 0xb00c
cvtsi2sd %r15d, %xmm0
divsd 0x8(%rsp), %xmm0
movsd 0x20(%rsp), %xmm1
addsd 0x191b7(%rip), %xmm1    # 0x28040
movsd %xmm0, 0x8(%rsp)
mulsd %xmm0, %xmm1
addsd 0x30(%rsp), %xmm1
movsd %xmm1, (%rax)
movq %r14, %rdi
leaq 0x4(%rsp), %rsi
callq 0x4a5c
movq 0x8(%r14), %rcx
movq 0x10(%r14), %rdx
cmpq (%rcx,%rdx,8), %rax
je 0xef70
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x30(%rsp)
movq 0x40(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0xb00c
movsd 0x20(%rsp), %xmm0
mulsd 0x8(%rsp), %xmm0
addsd 0x30(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0xd0(%rsp), %rdi
movq %rbx, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x30(%rsp)
movq 0x40(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0xd0(%rsp), %rdi
movq %rbx, %rsi
callq 0xb00c
movsd 0x8(%rsp), %xmm0
mulsd 0x20(%rsp), %xmm0
mulsd 0x190ce(%rip), %xmm0    # 0x28030
movsd 0x30(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, (%rax)
incq %rbp
movq 0x50(%rsp), %r15
jmp 0xedd6
movl 0x4(%rsp), %eax
cmpl 0x14(%rsp), %eax
je 0xefe4
movq 0xd0(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x48(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x30(%rsp)
movq 0xd0(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
movsd 0x30(%rsp), %xmm1
mulsd 0x1905a(%rip), %xmm1    # 0x28030
movsd 0x8(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movq %r14, %rdi
leaq 0x4(%rsp), %rsi
callq 0x4a5c
movq 0x8(%r14), %rcx
movq 0x10(%r14), %rdx
cmpq (%rcx,%rdx,8), %rax
je 0xecc0
movq %r14, %rdi
leaq 0x4(%rsp), %rsi
callq 0x4aaa
movq (%rax), %r14
movq 0x18(%rsp), %rdi
leaq 0x4(%rsp), %rsi
callq 0x4aaa
movq 0x8(%rax), %rax
xorl %ebp, %ebp
cmpq %rax, %r14
je 0xf036
addl (%r14), %ebp
addq $0x4, %r14
jmp 0xf028
movq 0xd0(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x48(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
movsd (%rax), %xmm0
movsd %xmm0, 0x30(%rsp)
movq 0xd0(%rsp), %rdi
movq %r13, %rsi
callq 0xb00c
cvtsi2sd %ebp, %xmm0
movsd 0x30(%rsp), %xmm1
mulsd %xmm0, %xmm1
addsd 0x8(%rsp), %xmm1
movsd %xmm1, (%rax)
jmp 0xecbb
movq %r12, %rdi
movl 0x68(%rsp), %esi
movl 0x6c(%rsp), %edx
callq 0x1762e
leaq 0x70(%rsp), %rdi
callq 0x56ec
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
jmp 0xf0f8
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x56ec
movq %rbx, %rdi
callq 0x23d0
nop