// File: /workspace/github_cpp_makefile_star2_O3/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, 0x8c(%rsp)
movl %edx, 0x88(%rsp)
movq %rdi, %r14
movl %esi, 0xc(%rsp)
leaq 0x30(%rdi), %r12
xorpd %xmm0, %xmm0
movapd %xmm0, 0x50(%rsp)
movq $0x0, 0x60(%rsp)
movq %r12, %rdi
callq 0x1c18e
leaq 0xc0(%r14), %rdi
leaq 0xc(%rsp), %rsi
movq %rdi, 0x30(%rsp)
callq 0xd94a
leaq 0x120(%r14), %rbx
movl $0x1, (%rax)
leaq 0xc(%rsp), %rsi
movq %rbx, %rdi
callq 0xd94a
leaq 0x288(%r14), %rdi
movl $0x0, (%rax)
movq 0x2b8(%r14), %rax
movq 0x2c8(%r14), %rcx
addq $-0x4, %rcx
cmpq %rcx, %rax
movq %rdi, 0x78(%rsp)
je 0x1190d
movl 0xc(%rsp), %ecx
movl %ecx, (%rax)
addq $0x4, %rax
movq %rax, 0x2b8(%r14)
jmp 0x1191e
leaq 0xc(%rsp), %rsi
callq 0x75be
movq 0x2b8(%r14), %rax
leaq 0x90(%r14), %rcx
movq %rcx, 0x70(%rsp)
movq %r14, 0x80(%rsp)
movq 0x298(%r14), %rcx
cmpq %rcx, %rax
movq %r12, 0x28(%rsp)
je 0x11ae1
leaq 0x14(%rsp), %r13
leaq 0x10(%rsp), %rbp
movl (%rcx), %eax
movl %eax, 0x14(%rsp)
movq 0x78(%rsp), %rdi
callq 0xddae
movq 0x58(%rsp), %rsi
cmpq 0x60(%rsp), %rsi
je 0x1197e
movl 0x14(%rsp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x58(%rsp)
jmp 0x1198b
leaq 0x50(%rsp), %rdi
movq %r13, %rdx
callq 0x6f14
xorl %r14d, %r14d
movq %r12, %rdi
movq %r13, %rsi
callq 0x126b8
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r14, %rcx
jbe 0x11ac5
movq %r12, %rdi
movq %r13, %rsi
callq 0x126b8
movq (%rax), %rax
movl (%rax,%r14,4), %eax
movl %eax, 0x10(%rsp)
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xd94a
cmpl $0x0, (%rax)
jns 0x11a31
movq 0x80(%rsp), %rdx
movq 0x2b8(%rdx), %rax
movq 0x2c8(%rdx), %rcx
addq $-0x4, %rcx
cmpq %rcx, %rax
je 0x11a05
movl 0x10(%rsp), %ecx
movl %ecx, (%rax)
addq $0x4, %rax
movq %rax, 0x2b8(%rdx)
jmp 0x11a12
movq 0x78(%rsp), %rdi
movq %rbp, %rsi
callq 0x75be
movq %rbx, %rdi
movq %r13, %rsi
callq 0xd94a
movl (%rax), %r15d
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xd94a
incl %r15d
movl %r15d, (%rax)
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xd94a
movl (%rax), %r15d
movq %rbx, %rdi
movq %r13, %rsi
callq 0xd94a
movl (%rax), %eax
incl %eax
cmpl %eax, %r15d
jne 0x11ab8
movq 0x30(%rsp), %rdi
movq %rbp, %rsi
callq 0xd94a
movl (%rax), %r15d
movq 0x30(%rsp), %rdi
movq %r13, %rsi
callq 0xd94a
movl (%rax), %r12d
movq 0x30(%rsp), %rdi
movq %rbp, %rsi
callq 0xd94a
addl %r15d, %r12d
movl %r12d, (%rax)
movq 0x70(%rsp), %rdi
movq %rbp, %rsi
callq 0xd984
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x11aad
movl 0x14(%rsp), %ecx
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
jmp 0x11ab8
movq %rax, %rdi
movq %r13, %rdx
callq 0x6f14
incq %r14
movq 0x28(%rsp), %r12
jmp 0x1198e
movq 0x80(%rsp), %rax
movq 0x298(%rax), %rcx
cmpq %rcx, 0x2b8(%rax)
jne 0x11951
movq 0x80(%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 0x11f64
movl %eax, %ecx
leaq 0x14(%rsp), %r14
movq 0x50(%rsp), %rax
movq %rcx, 0x90(%rsp)
movl (%rax,%rcx,4), %ecx
movl %ecx, 0x14(%rsp)
movl 0xc(%rsp), %esi
movq 0x8(%rbp), %rdi
movq 0x10(%rbp), %r8
movq %rsi, %rax
xorl %edx, %edx
divq %r8
movq (%rdi,%rdx,8), %rax
testq %rax, %rax
je 0x11c3f
cmpl (%rax), %esi
je 0x11b5d
movq 0x20(%rax), %rax
jmp 0x11b4a
movq (%rdi,%r8,8), %r9
cmpq %r9, %rax
je 0x11c3f
movq %rcx, %rax
xorl %edx, %edx
divq %r8
movq (%rdi,%rdx,8), %rax
testq %rax, %rax
je 0x11c3f
cmpl (%rax), %ecx
je 0x11b89
movq 0x20(%rax), %rax
jmp 0x11b76
cmpq %r9, %rax
je 0x11c3f
cmpl %ecx, %esi
je 0x11c3f
movq %rbp, %rdi
leaq 0xc(%rsp), %rsi
callq 0x6088
movq (%rax), %r13
movq %rbp, %rdi
leaq 0xc(%rsp), %rsi
callq 0x6088
movq 0x8(%rax), %rax
xorl %ecx, %ecx
cmpq %rax, %r13
je 0x11bcc
addl (%r13), %ecx
addq $0x4, %r13
jmp 0x11bbd
movl %ecx, 0x18(%rsp)
movq %rbp, %rdi
movq %r14, %rsi
callq 0x6088
movq (%rax), %r15
movq %rbp, %rdi
movq %r14, %rsi
callq 0x6088
movq 0x8(%rax), %rax
xorl %r13d, %r13d
cmpq %rax, %r15
je 0x11bfe
addl (%r15), %r13d
addq $0x4, %r15
jmp 0x11bf0
movq 0x38(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq %r15, %rdi
movq %r14, %rsi
callq 0xd8ce
imull 0x18(%rsp), %r13d
xorps %xmm0, %xmm0
cvtsi2sd %r13d, %xmm0
movsd 0x20(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, (%rax)
xorl %r13d, %r13d
movq 0x70(%rsp), %rdi
movq %r14, %rsi
callq 0xd984
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r13, %rcx
jbe 0x11e0f
movq 0x70(%rsp), %rdi
movq %r14, %rsi
callq 0xd984
movq (%rax), %rax
movl (%rax,%r13,4), %eax
movl %eax, 0x10(%rsp)
movq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xd94a
movl (%rax), %r15d
movq 0x30(%rsp), %rdi
movq %r14, %rsi
callq 0xd94a
xorps %xmm0, %xmm0
cvtsi2sdl (%rax), %xmm0
movsd %xmm0, 0x18(%rsp)
movq 0x40(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x48(%rsp)
movq 0x40(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xd8ce
xorps %xmm0, %xmm0
cvtsi2sd %r15d, %xmm0
divsd 0x18(%rsp), %xmm0
movsd 0x48(%rsp), %xmm1
addsd 0x1e32e(%rip), %xmm1    # 0x30030
movsd %xmm0, 0x18(%rsp)
mulsd %xmm0, %xmm1
addsd 0x20(%rsp), %xmm1
movsd %xmm1, (%rax)
movl 0xc(%rsp), %ecx
movq 0x8(%rbp), %rsi
movq 0x10(%rbp), %rdi
movq %rcx, %rax
xorl %edx, %edx
divq %rdi
movq (%rsi,%rdx,8), %rax
testq %rax, %rax
je 0x11e07
cmpl (%rax), %ecx
je 0x11d41
movq 0x20(%rax), %rax
jmp 0x11d2e
cmpq (%rsi,%rdi,8), %rax
je 0x11e07
movq 0x38(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x38(%rsp), %rdi
movq %r14, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x48(%rsp)
movq 0x38(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xd8ce
movsd 0x48(%rsp), %xmm0
mulsd 0x18(%rsp), %xmm0
addsd 0x20(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0xd0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x38(%rsp), %rdi
movq %r14, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x48(%rsp)
movq 0xd0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xd8ce
movsd 0x18(%rsp), %xmm0
mulsd 0x48(%rsp), %xmm0
mulsd 0x1e247(%rip), %xmm0    # 0x30040
movsd 0x20(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, (%rax)
incq %r13
jmp 0x11c42
movl 0xc(%rsp), %ecx
cmpl 0x14(%rsp), %ecx
je 0x11e7a
movq 0xd0(%rsp), %rdi
movq %r14, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x18(%rsp)
movq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0xd0(%rsp), %rdi
movq %r14, %rsi
callq 0xd8ce
movsd 0x20(%rsp), %xmm1
mulsd 0x1e1d8(%rip), %xmm1    # 0x30040
movsd 0x18(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movl 0xc(%rsp), %ecx
movl %ecx, %eax
movq 0x8(%rbp), %rsi
movq 0x10(%rbp), %rdi
xorl %edx, %edx
divq %rdi
movq (%rsi,%rdx,8), %rax
testq %rax, %rax
je 0x11f4c
cmpl (%rax), %ecx
je 0x11ea0
movq 0x20(%rax), %rax
jmp 0x11e8d
cmpq (%rsi,%rdi,8), %rax
je 0x11f4c
movq %rbp, %rdi
leaq 0xc(%rsp), %rsi
callq 0x6088
movq (%rax), %r15
movq %rbp, %rdi
leaq 0xc(%rsp), %rsi
callq 0x6088
movq 0x8(%rax), %rax
cmpq %rax, %r15
je 0x11ee7
xorl %ecx, %ecx
addl (%r15), %ecx
addq $0x4, %r15
cmpq %rax, %r15
jne 0x11ed2
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
jmp 0x11eeb
xorpd %xmm0, %xmm0
movsd %xmm0, 0x18(%rsp)
movq 0xd0(%rsp), %rdi
movq %r14, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x48(%rsp)
movq 0xd0(%rsp), %rdi
movq %r14, %rsi
callq 0xd8ce
movsd 0x48(%rsp), %xmm1
mulsd 0x18(%rsp), %xmm1
movsd 0x20(%rsp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movq 0x90(%rsp), %rcx
leaq -0x1(%rcx), %rax
testq %rcx, %rcx
movq %rax, %rcx
jg 0x11b1e
movq %r12, %rdi
movl 0x88(%rsp), %esi
movl 0x8c(%rsp), %edx
callq 0x1c320
movq %r12, %rdi
callq 0x1c18e
leaq 0xc(%rsp), %rsi
movq 0x30(%rsp), %rdi
callq 0xd94a
movl $0x1, (%rax)
leaq 0xc(%rsp), %rsi
movq %rbx, %rdi
callq 0xd94a
movl $0x0, (%rax)
movq 0x2b8(%rbp), %rax
movq 0x2c8(%rbp), %rcx
addq $-0x4, %rcx
cmpq %rcx, %rax
je 0x11fd4
movl 0xc(%rsp), %ecx
movl %ecx, (%rax)
addq $0x4, %rax
movq %rax, 0x2b8(%rbp)
jmp 0x11fe3
leaq 0xc(%rsp), %rsi
movq 0x78(%rsp), %rdi
callq 0x75be
movq 0x50(%rsp), %rax
cmpq %rax, 0x58(%rsp)
je 0x11ff4
movq %rax, 0x58(%rsp)
movq 0x298(%rbp), %rcx
movq %rax, %rdx
cmpq %rcx, 0x2b8(%rbp)
je 0x121ad
leaq 0x14(%rsp), %r13
leaq 0x10(%rsp), %r14
movl (%rcx), %eax
movl %eax, 0x14(%rsp)
movq 0x78(%rsp), %rdi
callq 0xddae
movq 0x58(%rsp), %rsi
cmpq 0x60(%rsp), %rsi
je 0x12042
movl 0x14(%rsp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x58(%rsp)
jmp 0x1204f
leaq 0x50(%rsp), %rdi
movq %r13, %rdx
callq 0x6f14
xorl %r15d, %r15d
movq %r12, %rdi
movq %r13, %rsi
callq 0x126b8
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r15, %rcx
jbe 0x12187
movq %r12, %rdi
movq %r13, %rsi
callq 0x126b8
movq (%rax), %rax
movl (%rax,%r15,4), %eax
movl %eax, 0x10(%rsp)
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd94a
cmpl $0x0, (%rax)
jns 0x120f5
movq 0x80(%rsp), %rdx
movq 0x2b8(%rdx), %rax
movq 0x2c8(%rdx), %rcx
addq $-0x4, %rcx
cmpq %rcx, %rax
je 0x120c9
movl 0x10(%rsp), %ecx
movl %ecx, (%rax)
addq $0x4, %rax
movq %rax, 0x2b8(%rdx)
jmp 0x120d6
movq 0x78(%rsp), %rdi
movq %r14, %rsi
callq 0x75be
movq %rbx, %rdi
movq %r13, %rsi
callq 0xd94a
movl (%rax), %r12d
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd94a
incl %r12d
movl %r12d, (%rax)
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd94a
movl (%rax), %r12d
movq %rbx, %rdi
movq %r13, %rsi
callq 0xd94a
movl (%rax), %eax
incl %eax
cmpl %eax, %r12d
jne 0x1217a
movq 0x30(%rsp), %rdi
movq %r14, %rsi
callq 0xd94a
movl (%rax), %r12d
movq 0x30(%rsp), %rdi
movq %r13, %rsi
callq 0xd94a
movl (%rax), %ebp
movq 0x30(%rsp), %rdi
movq %r14, %rsi
callq 0xd94a
addl %r12d, %ebp
movl %ebp, (%rax)
movq 0x70(%rsp), %rdi
movq %r14, %rsi
callq 0xd984
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x1216f
movl 0x14(%rsp), %ecx
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
jmp 0x1217a
movq %rax, %rdi
movq %r13, %rdx
callq 0x6f14
incq %r15
movq 0x28(%rsp), %r12
jmp 0x12052
movq 0x80(%rsp), %rbp
movq 0x298(%rbp), %rcx
cmpq %rcx, 0x2b8(%rbp)
jne 0x12015
movq 0x50(%rsp), %rax
movq 0x58(%rsp), %rdx
subq %rax, %rdx
shrq $0x2, %rdx
decl %edx
js 0x125f6
movl %edx, %ecx
leaq 0x14(%rsp), %rbx
leaq 0x10(%rsp), %r14
movq 0x50(%rsp), %rax
movq %rcx, 0x48(%rsp)
movl (%rax,%rcx,4), %ecx
movl %ecx, 0x14(%rsp)
movl 0xc(%rsp), %esi
movq 0x8(%rbp), %rdi
movq 0x10(%rbp), %r8
movq %rsi, %rax
xorl %edx, %edx
divq %r8
movq (%rdi,%rdx,8), %rax
testq %rax, %rax
je 0x122e6
cmpl (%rax), %esi
je 0x12204
movq 0x20(%rax), %rax
jmp 0x121f1
movq (%rdi,%r8,8), %r9
cmpq %r9, %rax
je 0x122e6
movq %rcx, %rax
xorl %edx, %edx
divq %r8
movq (%rdi,%rdx,8), %rax
testq %rax, %rax
je 0x122e6
cmpl (%rax), %ecx
je 0x12230
movq 0x20(%rax), %rax
jmp 0x1221d
cmpq %r9, %rax
je 0x122e6
cmpl %ecx, %esi
je 0x122e6
movq %rbp, %rdi
leaq 0xc(%rsp), %rsi
callq 0x6088
movq (%rax), %r13
movq %rbp, %rdi
leaq 0xc(%rsp), %rsi
callq 0x6088
movq 0x8(%rax), %rax
xorl %ecx, %ecx
cmpq %rax, %r13
je 0x12273
addl (%r13), %ecx
addq $0x4, %r13
jmp 0x12264
movl %ecx, 0x28(%rsp)
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x6088
movq (%rax), %r15
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x6088
movq 0x8(%rax), %rax
xorl %r13d, %r13d
cmpq %rax, %r15
je 0x122a5
addl (%r15), %r13d
addq $0x4, %r15
jmp 0x12297
movq 0x38(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x18(%rsp)
movq %r15, %rdi
movq %rbx, %rsi
callq 0xd8ce
imull 0x28(%rsp), %r13d
xorps %xmm0, %xmm0
cvtsi2sd %r13d, %xmm0
movsd 0x18(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, (%rax)
xorl %r13d, %r13d
movq 0x70(%rsp), %rdi
movq %rbx, %rsi
callq 0xd984
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r13, %rcx
jbe 0x124a8
movq 0x70(%rsp), %rdi
movq %rbx, %rsi
callq 0xd984
movq (%rax), %rax
movl (%rax,%r13,4), %eax
movl %eax, 0x10(%rsp)
movq 0x30(%rsp), %rdi
movq %r14, %rsi
callq 0xd94a
movl (%rax), %r15d
movq 0x30(%rsp), %rdi
movq %rbx, %rsi
callq 0xd94a
xorps %xmm0, %xmm0
cvtsi2sdl (%rax), %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x18(%rsp)
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0xd8ce
xorps %xmm0, %xmm0
cvtsi2sd %r15d, %xmm0
divsd 0x28(%rsp), %xmm0
movsd 0x20(%rsp), %xmm1
addsd 0x1dc8d(%rip), %xmm1    # 0x30030
movsd %xmm0, 0x28(%rsp)
mulsd %xmm0, %xmm1
addsd 0x18(%rsp), %xmm1
movsd %xmm1, (%rax)
movl 0xc(%rsp), %ecx
movq 0x8(%rbp), %rsi
movq 0x10(%rbp), %rdi
movq %rcx, %rax
xorl %edx, %edx
divq %rdi
movq (%rsi,%rdx,8), %rax
testq %rax, %rax
je 0x124a0
cmpl (%rax), %ecx
je 0x123e2
movq 0x20(%rax), %rax
jmp 0x123cf
cmpq (%rsi,%rdi,8), %rax
je 0x124a0
movq 0x38(%rsp), %rdi
movq %r14, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x18(%rsp)
movq 0x38(%rsp), %rdi
movq %rbx, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x38(%rsp), %rdi
movq %r14, %rsi
callq 0xd8ce
movsd 0x20(%rsp), %xmm0
mulsd 0x28(%rsp), %xmm0
addsd 0x18(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0xd0(%rsp), %rdi
movq %r14, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x18(%rsp)
movq 0x38(%rsp), %rdi
movq %rbx, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0xd0(%rsp), %rdi
movq %r14, %rsi
callq 0xd8ce
movsd 0x28(%rsp), %xmm0
mulsd 0x20(%rsp), %xmm0
mulsd 0x1dba6(%rip), %xmm0    # 0x30038
movsd 0x18(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, (%rax)
incq %r13
jmp 0x122e9
movl 0xc(%rsp), %ecx
cmpl 0x14(%rsp), %ecx
je 0x12513
movq 0xd0(%rsp), %rdi
movq %rbx, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x18(%rsp)
movq 0xd0(%rsp), %rdi
movq %rbx, %rsi
callq 0xd8ce
movsd 0x18(%rsp), %xmm1
mulsd 0x1db37(%rip), %xmm1    # 0x30038
movsd 0x28(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movl 0xc(%rsp), %ecx
movl %ecx, %eax
movq 0x8(%rbp), %rsi
movq 0x10(%rbp), %rdi
xorl %edx, %edx
divq %rdi
movq (%rsi,%rdx,8), %rax
testq %rax, %rax
je 0x125e1
cmpl (%rax), %ecx
je 0x12539
movq 0x20(%rax), %rax
jmp 0x12526
cmpq (%rsi,%rdi,8), %rax
je 0x125e1
movq %rbp, %rdi
leaq 0xc(%rsp), %rsi
callq 0x6088
movq (%rax), %r15
movq %rbp, %rdi
leaq 0xc(%rsp), %rsi
callq 0x6088
movq 0x8(%rax), %rax
cmpq %rax, %r15
je 0x12580
xorl %ecx, %ecx
addl (%r15), %ecx
addq $0x4, %r15
cmpq %rax, %r15
jne 0x1256b
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
jmp 0x12584
xorpd %xmm0, %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0xd0(%rsp), %rdi
movq %rbx, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x18(%rsp)
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0xd8ce
movsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0xd0(%rsp), %rdi
movq %rbx, %rsi
callq 0xd8ce
movsd 0x20(%rsp), %xmm0
mulsd 0x28(%rsp), %xmm0
addsd 0x18(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0x48(%rsp), %rcx
leaq -0x1(%rcx), %rax
testq %rcx, %rcx
movq %rax, %rcx
jg 0x121c8
movq %r12, %rdi
movl 0x88(%rsp), %esi
movl 0x8c(%rsp), %edx
callq 0x1c416
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x12623
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x2250
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
jmp 0x1265d
movq %rax, %rbx
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x12677
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x2250
movq %rbx, %rdi
callq 0x23b0
nop