// File: /workspace/github_cpp_makefile_star2_O1/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 $0x88, %rsp
movl %ecx, 0x7c(%rsp)
movl %edx, 0x78(%rsp)
movq %rdi, %rbx
movl %esi, (%rsp)
addq $0x30, %rdi
xorpd %xmm0, %xmm0
movapd %xmm0, 0x50(%rsp)
movq $0x0, 0x60(%rsp)
movq %rdi, 0x48(%rsp)
callq 0x1c296
leaq 0xc0(%rbx), %rdi
movq %rsp, %rsi
movq %rdi, 0x30(%rsp)
callq 0xd8ec
leaq 0x120(%rbx), %r14
movl $0x1, (%rax)
movq %rsp, %rsi
movq %r14, %rdi
callq 0xd8ec
leaq 0x288(%rbx), %rdi
movl $0x0, (%rax)
movq 0x2b8(%rbx), %rax
movq 0x2c8(%rbx), %rcx
addq $-0x4, %rcx
cmpq %rcx, %rax
movq %rdi, 0x70(%rsp)
je 0x11945
movl (%rsp), %ecx
movl %ecx, (%rax)
addq $0x4, %rax
movq %rax, 0x2b8(%rbx)
jmp 0x1194d
movq %rsp, %rsi
callq 0x7644
leaq 0x90(%rbx), %rax
movq %rax, 0x68(%rsp)
movq 0x298(%rbx), %rax
movq %rbx, 0x28(%rsp)
cmpq %rax, 0x2b8(%rbx)
je 0x11b03
leaq 0x4(%rsp), %r13
leaq 0x1c(%rsp), %rbp
movl (%rax), %eax
movl %eax, 0x4(%rsp)
movq 0x70(%rsp), %rdi
callq 0xdd72
movq 0x58(%rsp), %rsi
cmpq 0x60(%rsp), %rsi
je 0x119a9
movl 0x4(%rsp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x58(%rsp)
jmp 0x119b6
leaq 0x50(%rsp), %rdi
movq %r13, %rdx
callq 0x6f98
xorl %r15d, %r15d
movq 0x48(%rsp), %rdi
movq %r13, %rsi
callq 0x12762
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r15, %rcx
jbe 0x11aea
movq 0x48(%rsp), %rdi
movq %r13, %rsi
callq 0x12762
movq (%rax), %rax
movl (%rax,%r15,4), %eax
movl %eax, 0x1c(%rsp)
movq %r14, %rdi
movq %rbp, %rsi
callq 0xd8ec
cmpl $0x0, (%rax)
jns 0x11a5d
movq 0x28(%rsp), %rdx
movq 0x2b8(%rdx), %rax
movq 0x2c8(%rdx), %rcx
addq $-0x4, %rcx
cmpq %rcx, %rax
je 0x11a31
movl 0x1c(%rsp), %ecx
movl %ecx, (%rax)
addq $0x4, %rax
movq %rax, 0x2b8(%rdx)
jmp 0x11a3e
movq 0x70(%rsp), %rdi
movq %rbp, %rsi
callq 0x7644
movq %r14, %rdi
movq %r13, %rsi
callq 0xd8ec
movl (%rax), %r12d
movq %r14, %rdi
movq %rbp, %rsi
callq 0xd8ec
incl %r12d
movl %r12d, (%rax)
movq %r14, %rdi
movq %rbp, %rsi
callq 0xd8ec
movl (%rax), %r12d
movq %r14, %rdi
movq %r13, %rsi
callq 0xd8ec
movl (%rax), %eax
incl %eax
cmpl %eax, %r12d
jne 0x11ae2
movq 0x30(%rsp), %rdi
movq %rbp, %rsi
callq 0xd8ec
movl (%rax), %r12d
movq 0x30(%rsp), %rdi
movq %r13, %rsi
callq 0xd8ec
movl (%rax), %ebx
movq 0x30(%rsp), %rdi
movq %rbp, %rsi
callq 0xd8ec
addl %r12d, %ebx
movl %ebx, (%rax)
movq 0x68(%rsp), %rdi
movq %rbp, %rsi
callq 0xd93e
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x11ad7
movl 0x4(%rsp), %ecx
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
jmp 0x11ae2
movq %rax, %rdi
movq %r13, %rdx
callq 0x6f98
incq %r15
jmp 0x119b9
movq 0x28(%rsp), %rcx
movq 0x298(%rcx), %rax
cmpq %rax, 0x2b8(%rcx)
jne 0x1197c
movq 0x28(%rsp), %rbp
leaq 0x150(%rbp), %rax
movq %rax, 0x40(%rsp)
leaq 0x1e0(%rbp), %rax
movq %rax, 0x38(%rsp)
movq 0x58(%rsp), %rax
subq 0x50(%rsp), %rax
shrq $0x2, %rax
decl %eax
js 0x11fe2
movl %eax, %r12d
leaq 0x4(%rsp), %r13
leaq 0x1c(%rsp), %rbx
movq 0x50(%rsp), %rax
movl (%rax,%r12,4), %ecx
movl %ecx, 0x4(%rsp)
movl (%rsp), %esi
movq 0x8(%rbp), %rdi
movq 0x10(%rbp), %r8
movq %rsi, %rax
xorl %edx, %edx
divq %r8
movq (%rdi,%rdx,8), %rax
movl $0x0, %edx
testq %rax, %rax
je 0x11b85
cmpl (%rax), %esi
je 0x11b82
movq 0x20(%rax), %rax
testq %rax, %rax
jne 0x11b71
xorl %edx, %edx
jmp 0x11b85
movq %rax, %rdx
testq %rdx, %rdx
jne 0x11b8e
movq (%rdi,%r8,8), %rdx
movq (%rdi,%r8,8), %r9
cmpq %r9, %rdx
movq %r12, 0x80(%rsp)
je 0x11ca0
movq %rcx, %rax
xorl %edx, %edx
divq %r8
movq (%rdi,%rdx,8), %rax
movl $0x0, %edx
testq %rax, %rax
je 0x11bcd
cmpl (%rax), %ecx
je 0x11bca
movq 0x20(%rax), %rax
testq %rax, %rax
jne 0x11bb9
xorl %edx, %edx
jmp 0x11bcd
movq %rax, %rdx
testq %rdx, %rdx
je 0x11ca0
cmpq %r9, %rdx
je 0x11ca0
cmpl %ecx, %esi
je 0x11ca0
movq %rbp, %rdi
movq %rsp, %rsi
callq 0x6106
movq (%rax), %r12
movq %rbp, %rdi
movq %rsp, %rsi
callq 0x6106
movq 0x8(%rax), %rax
xorl %r15d, %r15d
cmpq %rax, %r12
je 0x11c20
movq 0x28(%rsp), %rbp
addl (%r12), %r15d
addq $0x4, %r12
cmpq %rax, %r12
jne 0x11c11
jmp 0x11c25
movq 0x28(%rsp), %rbp
movq %rbp, %rdi
movq %r13, %rsi
callq 0x6106
movq %rbp, %rdi
movq (%rax), %rbp
movq %r13, %rsi
callq 0x6106
movq 0x8(%rax), %rax
xorl %r12d, %r12d
cmpq %rax, %rbp
je 0x11c54
addl (%rbp), %r12d
addq $0x4, %rbp
jmp 0x11c45
movq 0x38(%rsp), %rbp
movq %rbp, %rdi
movq %r13, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq %rbp, %rdi
movq %r13, %rsi
callq 0xd85a
imull %r15d, %r12d
xorps %xmm0, %xmm0
cvtsi2sd %r12d, %xmm0
movsd 0x8(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, (%rax)
movq 0x28(%rsp), %rbp
movq 0x80(%rsp), %r12
xorl %r15d, %r15d
movq 0x68(%rsp), %rdi
movq %r13, %rsi
callq 0xd93e
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r15, %rcx
jbe 0x11e85
movq 0x68(%rsp), %rdi
movq %r13, %rsi
callq 0xd93e
movq (%rax), %rax
movl (%rax,%r15,4), %eax
movl %eax, 0x1c(%rsp)
movq 0x30(%rsp), %rdi
movq %rbx, %rsi
callq 0xd8ec
movl (%rax), %r12d
movq 0x30(%rsp), %rdi
movq %r13, %rsi
callq 0xd8ec
xorps %xmm0, %xmm0
cvtsi2sdl (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0x40(%rsp), %rdi
movq %r13, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0xd85a
xorps %xmm0, %xmm0
cvtsi2sd %r12d, %xmm0
divsd 0x8(%rsp), %xmm0
movsd 0x20(%rsp), %xmm1
addsd 0x1f2d3(%rip), %xmm1    # 0x31030
movsd %xmm0, 0x8(%rsp)
mulsd %xmm0, %xmm1
addsd 0x10(%rsp), %xmm1
movsd %xmm1, (%rax)
movl (%rsp), %ecx
movq 0x8(%rbp), %rsi
movq 0x10(%rbp), %rdi
movq %rcx, %rax
xorl %edx, %edx
divq %rdi
movq (%rsi,%rdx,8), %rax
movl $0x0, %edx
testq %rax, %rax
je 0x11da6
cmpl (%rax), %ecx
je 0x11da3
movq 0x20(%rax), %rax
testq %rax, %rax
jne 0x11d92
xorl %edx, %edx
jmp 0x11da6
movq %rax, %rdx
testq %rdx, %rdx
movq 0x80(%rsp), %r12
jne 0x11db7
movq (%rsi,%rdi,8), %rdx
cmpq (%rsi,%rdi,8), %rdx
je 0x11e7d
movq 0x38(%rsp), %rdi
movq %rbx, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0x38(%rsp), %rdi
movq %r13, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x38(%rsp), %rdi
movq %rbx, %rsi
callq 0xd85a
movsd 0x20(%rsp), %xmm0
mulsd 0x8(%rsp), %xmm0
addsd 0x10(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0xc0(%rsp), %rdi
movq %rbx, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0x38(%rsp), %rdi
movq %r13, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0xc0(%rsp), %rdi
movq %rbx, %rsi
callq 0xd85a
movsd 0x8(%rsp), %xmm0
mulsd 0x20(%rsp), %xmm0
mulsd 0x1f1d9(%rip), %xmm0    # 0x31040
movsd 0x10(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, (%rax)
movq 0x80(%rsp), %r12
incq %r15
jmp 0x11ca3
movl (%rsp), %eax
cmpl 0x4(%rsp), %eax
je 0x11eeb
movq 0xc0(%rsp), %rdi
movq %r13, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x40(%rsp), %rdi
movq %r13, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0xc0(%rsp), %rdi
movq %r13, %rsi
callq 0xd85a
movsd 0x10(%rsp), %xmm1
mulsd 0x1f163(%rip), %xmm1    # 0x31040
movsd 0x8(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movl (%rsp), %ecx
movq 0x8(%rbp), %rsi
movq 0x10(%rbp), %rdi
movq %rcx, %rax
xorl %edx, %edx
divq %rdi
movq (%rsi,%rdx,8), %rax
movl $0x0, %edx
testq %rax, %rax
je 0x11f20
cmpl (%rax), %ecx
je 0x11f1d
movq 0x20(%rax), %rax
testq %rax, %rax
jne 0x11f0c
xorl %edx, %edx
jmp 0x11f20
movq %rax, %rdx
testq %rdx, %rdx
jne 0x11f29
movq (%rsi,%rdi,8), %rdx
cmpq (%rsi,%rdi,8), %rdx
je 0x11fd1
movq %rbp, %rdi
movq %rsp, %rsi
callq 0x6106
movq (%rax), %r15
movq %rbp, %rdi
movq %rsp, %rsi
callq 0x6106
movq 0x8(%rax), %rax
cmpq %rax, %r15
je 0x11f6c
xorl %ecx, %ecx
addl (%r15), %ecx
addq $0x4, %r15
cmpq %rax, %r15
jne 0x11f57
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
jmp 0x11f70
xorpd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0xc0(%rsp), %rdi
movq %r13, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0x40(%rsp), %rdi
movq %r13, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0xc0(%rsp), %rdi
movq %r13, %rsi
callq 0xd85a
movsd 0x20(%rsp), %xmm1
mulsd 0x8(%rsp), %xmm1
movsd 0x10(%rsp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax)
leaq -0x1(%r12), %rax
testq %r12, %r12
movq %rax, %r12
jg 0x11b43
movq 0x48(%rsp), %rdi
movl 0x78(%rsp), %esi
movl 0x7c(%rsp), %edx
callq 0x1c440
movq 0x48(%rsp), %rdi
callq 0x1c296
movq %rsp, %rsi
movq 0x30(%rsp), %rdi
callq 0xd8ec
movl $0x1, (%rax)
movq %rsp, %rsi
movq %r14, %rdi
callq 0xd8ec
movl $0x0, (%rax)
movq 0x2b8(%rbp), %rax
movq 0x2c8(%rbp), %rcx
addq $-0x4, %rcx
cmpq %rcx, %rax
je 0x1204b
movl (%rsp), %ecx
movl %ecx, (%rax)
addq $0x4, %rax
movq %rax, 0x2b8(%rbp)
jmp 0x12058
movq %rsp, %rsi
movq 0x70(%rsp), %rdi
callq 0x7644
movq 0x50(%rsp), %rax
cmpq %rax, 0x58(%rsp)
je 0x12069
movq %rax, 0x58(%rsp)
movq 0x298(%rbp), %rax
cmpq %rax, 0x2b8(%rbp)
je 0x1220a
leaq 0x4(%rsp), %r13
leaq 0x1c(%rsp), %rbx
movl (%rax), %eax
movl %eax, 0x4(%rsp)
movq 0x70(%rsp), %rdi
callq 0xdd72
movq 0x58(%rsp), %rsi
cmpq 0x60(%rsp), %rsi
je 0x120b4
movl 0x4(%rsp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x58(%rsp)
jmp 0x120c1
leaq 0x50(%rsp), %rdi
movq %r13, %rdx
callq 0x6f98
xorl %r15d, %r15d
movq 0x48(%rsp), %rdi
movq %r13, %rsi
callq 0x12762
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r15, %rcx
jbe 0x121f1
movq 0x48(%rsp), %rdi
movq %r13, %rsi
callq 0x12762
movq (%rax), %rax
movl (%rax,%r15,4), %eax
movl %eax, 0x1c(%rsp)
movq %r14, %rdi
movq %rbx, %rsi
callq 0xd8ec
cmpl $0x0, (%rax)
jns 0x12165
movq 0x28(%rsp), %rdx
movq 0x2b8(%rdx), %rax
movq 0x2c8(%rdx), %rcx
addq $-0x4, %rcx
cmpq %rcx, %rax
je 0x1213c
movl 0x1c(%rsp), %ecx
movl %ecx, (%rax)
addq $0x4, %rax
movq %rax, 0x2b8(%rdx)
jmp 0x12149
movq 0x70(%rsp), %rdi
movq %rbx, %rsi
callq 0x7644
movq %r14, %rdi
movq %r13, %rsi
callq 0xd8ec
movl (%rax), %ebp
movq %r14, %rdi
movq %rbx, %rsi
callq 0xd8ec
incl %ebp
movl %ebp, (%rax)
movq %r14, %rdi
movq %rbx, %rsi
callq 0xd8ec
movl (%rax), %ebp
movq %r14, %rdi
movq %r13, %rsi
callq 0xd8ec
movl (%rax), %eax
incl %eax
cmpl %eax, %ebp
jne 0x121e9
movq 0x30(%rsp), %rdi
movq %rbx, %rsi
callq 0xd8ec
movl (%rax), %ebp
movq 0x30(%rsp), %rdi
movq %r13, %rsi
callq 0xd8ec
movl (%rax), %r12d
movq 0x30(%rsp), %rdi
movq %rbx, %rsi
callq 0xd8ec
addl %ebp, %r12d
movl %r12d, (%rax)
movq 0x68(%rsp), %rdi
movq %rbx, %rsi
callq 0xd93e
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x121de
movl 0x4(%rsp), %ecx
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
jmp 0x121e9
movq %rax, %rdi
movq %r13, %rdx
callq 0x6f98
incq %r15
jmp 0x120c4
movq 0x28(%rsp), %rbp
movq 0x298(%rbp), %rax
cmpq %rax, 0x2b8(%rbp)
jne 0x12087
movq 0x58(%rsp), %rax
subq 0x50(%rsp), %rax
shrq $0x2, %rax
decl %eax
js 0x126a5
movl %eax, %ebx
leaq 0x4(%rsp), %r14
leaq 0x1c(%rsp), %r13
movq 0x50(%rsp), %rax
movl (%rax,%rbx,4), %ecx
movl %ecx, 0x4(%rsp)
movl (%rsp), %esi
movq 0x8(%rbp), %rdi
movq 0x10(%rbp), %r8
movq %rsi, %rax
xorl %edx, %edx
divq %r8
movq (%rdi,%rdx,8), %rax
movl $0x0, %edx
testq %rax, %rax
je 0x1226d
cmpl (%rax), %esi
je 0x1226a
movq 0x20(%rax), %rax
testq %rax, %rax
jne 0x12259
xorl %edx, %edx
jmp 0x1226d
movq %rax, %rdx
testq %rdx, %rdx
jne 0x12276
movq (%rdi,%r8,8), %rdx
movq (%rdi,%r8,8), %r9
cmpq %r9, %rdx
je 0x12378
movq %rcx, %rax
xorl %edx, %edx
divq %r8
movq (%rdi,%rdx,8), %rax
movl $0x0, %edx
testq %rax, %rax
je 0x122ad
cmpl (%rax), %ecx
je 0x122aa
movq 0x20(%rax), %rax
testq %rax, %rax
jne 0x12299
xorl %edx, %edx
jmp 0x122ad
movq %rax, %rdx
testq %rdx, %rdx
je 0x12378
cmpq %r9, %rdx
je 0x12378
cmpl %ecx, %esi
je 0x12378
movq %rbp, %rdi
movq %rsp, %rsi
callq 0x6106
movq (%rax), %r12
movq %rbp, %rdi
movq %rsp, %rsi
callq 0x6106
movq 0x8(%rax), %rax
xorl %r15d, %r15d
cmpq %rax, %r12
je 0x12300
movq 0x28(%rsp), %rbp
addl (%r12), %r15d
addq $0x4, %r12
cmpq %rax, %r12
jne 0x122f1
jmp 0x12305
movq 0x28(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
callq 0x6106
movq %rbp, %rdi
movq (%rax), %rbp
movq %r14, %rsi
callq 0x6106
movq 0x8(%rax), %rax
xorl %r12d, %r12d
cmpq %rax, %rbp
je 0x12334
addl (%rbp), %r12d
addq $0x4, %rbp
jmp 0x12325
movq 0x38(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq %rbp, %rdi
movq %r14, %rsi
callq 0xd85a
imull %r15d, %r12d
xorps %xmm0, %xmm0
cvtsi2sd %r12d, %xmm0
movsd 0x8(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, (%rax)
movq 0x28(%rsp), %rbp
xorl %r15d, %r15d
movq 0x68(%rsp), %rdi
movq %r14, %rsi
callq 0xd93e
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r15, %rcx
jbe 0x1254d
movq 0x68(%rsp), %rdi
movq %r14, %rsi
callq 0xd93e
movq (%rax), %rax
movl (%rax,%r15,4), %eax
movl %eax, 0x1c(%rsp)
movq 0x30(%rsp), %rdi
movq %r13, %rsi
callq 0xd8ec
movl (%rax), %r12d
movq 0x30(%rsp), %rdi
movq %r14, %rsi
callq 0xd8ec
xorps %xmm0, %xmm0
cvtsi2sdl (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x40(%rsp), %rdi
movq %r13, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x40(%rsp), %rdi
movq %r13, %rsi
callq 0xd85a
xorps %xmm0, %xmm0
cvtsi2sd %r12d, %xmm0
divsd 0x8(%rsp), %xmm0
movsd 0x20(%rsp), %xmm1
addsd 0x1ebfb(%rip), %xmm1    # 0x31030
movsd %xmm0, 0x8(%rsp)
mulsd %xmm0, %xmm1
addsd 0x10(%rsp), %xmm1
movsd %xmm1, (%rax)
movl (%rsp), %ecx
movq 0x8(%rbp), %rsi
movq 0x10(%rbp), %rdi
movq %rcx, %rax
xorl %edx, %edx
divq %rdi
movq (%rsi,%rdx,8), %rax
movl $0x0, %edx
testq %rax, %rax
je 0x1247e
cmpl (%rax), %ecx
je 0x1247b
movq 0x20(%rax), %rax
testq %rax, %rax
jne 0x1246a
xorl %edx, %edx
jmp 0x1247e
movq %rax, %rdx
testq %rdx, %rdx
jne 0x12487
movq (%rsi,%rdi,8), %rdx
cmpq (%rsi,%rdi,8), %rdx
je 0x12545
movq 0x38(%rsp), %rdi
movq %r13, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0x38(%rsp), %rdi
movq %r14, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x38(%rsp), %rdi
movq %r13, %rsi
callq 0xd85a
movsd 0x20(%rsp), %xmm0
mulsd 0x8(%rsp), %xmm0
addsd 0x10(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0xc0(%rsp), %rdi
movq %r13, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0x38(%rsp), %rdi
movq %r14, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0xc0(%rsp), %rdi
movq %r13, %rsi
callq 0xd85a
movsd 0x8(%rsp), %xmm0
mulsd 0x20(%rsp), %xmm0
mulsd 0x1eb01(%rip), %xmm0    # 0x31038
movsd 0x10(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, (%rax)
incq %r15
jmp 0x1237b
movl (%rsp), %eax
cmpl 0x4(%rsp), %eax
je 0x125b3
movq 0xc0(%rsp), %rdi
movq %r14, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0xc0(%rsp), %rdi
movq %r14, %rsi
callq 0xd85a
movsd 0x10(%rsp), %xmm1
mulsd 0x1ea93(%rip), %xmm1    # 0x31038
movsd 0x8(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movl (%rsp), %ecx
movq 0x8(%rbp), %rsi
movq 0x10(%rbp), %rdi
movq %rcx, %rax
xorl %edx, %edx
divq %rdi
movq (%rsi,%rdx,8), %rax
movl $0x0, %edx
testq %rax, %rax
je 0x125e8
cmpl (%rax), %ecx
je 0x125e5
movq 0x20(%rax), %rax
testq %rax, %rax
jne 0x125d4
xorl %edx, %edx
jmp 0x125e8
movq %rax, %rdx
testq %rdx, %rdx
jne 0x125f1
movq (%rsi,%rdi,8), %rdx
cmpq (%rsi,%rdi,8), %rdx
je 0x12695
movq %rbp, %rdi
movq %rsp, %rsi
callq 0x6106
movq (%rax), %r15
movq %rbp, %rdi
movq %rsp, %rsi
callq 0x6106
movq 0x8(%rax), %rax
cmpq %rax, %r15
je 0x12634
xorl %ecx, %ecx
addl (%r15), %ecx
addq $0x4, %r15
cmpq %rax, %r15
jne 0x1261f
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
jmp 0x12638
xorpd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0xc0(%rsp), %rdi
movq %r14, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0xd85a
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0xc0(%rsp), %rdi
movq %r14, %rsi
callq 0xd85a
movsd 0x20(%rsp), %xmm0
mulsd 0x8(%rsp), %xmm0
addsd 0x10(%rsp), %xmm0
movsd %xmm0, (%rax)
leaq -0x1(%rbx), %rax
testq %rbx, %rbx
movq %rax, %rbx
jg 0x1222c
movq 0x48(%rsp), %rdi
movl 0x78(%rsp), %esi
movl 0x7c(%rsp), %edx
callq 0x1c538
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x126ce
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x2250
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
jmp 0x12708
movq %rax, %rbx
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x12722
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x2250
movq %rbx, %rdi
callq 0x23b0