// File: 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:
subq $0x7a8, %rsp            # imm = 0x7A8
movq 0x7b0(%rsp), %rax
movq %rdi, 0x7a0(%rsp)
movl %esi, 0x79c(%rsp)
movl %edx, 0x798(%rsp)
movl %ecx, 0x794(%rsp)
movl %r8d, 0x790(%rsp)
movl %r9d, 0x78c(%rsp)
movq 0x7a0(%rsp), %rax
movq %rax, 0x548(%rsp)
movq %rax, %rcx
addq $0x30, %rcx
movq %rcx, 0x550(%rsp)
movq %rax, %rcx
addq $0x90, %rcx
movq %rcx, 0x780(%rsp)
movq %rax, %rcx
addq $0xc0, %rcx
movq %rcx, 0x778(%rsp)
movq %rax, %rcx
addq $0x120, %rcx            # imm = 0x120
movq %rcx, 0x770(%rsp)
movq %rax, %rcx
addq $0x150, %rcx            # imm = 0x150
movq %rcx, 0x768(%rsp)
movq %rax, %rcx
addq $0x1e0, %rcx            # imm = 0x1E0
movq %rcx, 0x760(%rsp)
addq $0x288, %rax            # imm = 0x288
movq %rax, 0x758(%rsp)
leaq 0x740(%rsp), %rdi
callq 0xfcd0
movq 0x550(%rsp), %rdi
callq 0x52170
jmp 0x38fff
movq 0x778(%rsp), %rdi
leaq 0x79c(%rsp), %rsi
callq 0x2d870
movq %rax, 0x540(%rsp)
jmp 0x3901e
movq 0x540(%rsp), %rax
movl $0x1, (%rax)
movq 0x770(%rsp), %rdi
leaq 0x79c(%rsp), %rsi
callq 0x2d870
movq %rax, 0x538(%rsp)
jmp 0x3904b
movq 0x538(%rsp), %rax
movl $0x0, (%rax)
movq 0x758(%rsp), %rdi
leaq 0x79c(%rsp), %rsi
callq 0x105b0
jmp 0x39070
jmp 0x39072
movq 0x758(%rsp), %rdi
callq 0x105e0
movb %al, 0x537(%rsp)
jmp 0x39088
movb 0x537(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x3909a
jmp 0x393b2
movq 0x758(%rsp), %rdi
callq 0x10600
movq %rax, 0x528(%rsp)
jmp 0x390b1
movq 0x528(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x730(%rsp)
movq 0x758(%rsp), %rdi
callq 0x10610
jmp 0x390d1
leaq 0x740(%rsp), %rdi
leaq 0x730(%rsp), %rsi
callq 0xfce0
jmp 0x390e8
movl $0x0, 0x72c(%rsp)
movq 0x548(%rsp), %rdi
movslq 0x72c(%rsp), %rax
movq %rax, 0x518(%rsp)
addq $0x30, %rdi
leaq 0x730(%rsp), %rsi
callq 0x3afc0
movq %rax, 0x520(%rsp)
jmp 0x39126
movq 0x520(%rsp), %rdi
callq 0xfd50
movq %rax, %rcx
movq 0x518(%rsp), %rax
cmpq %rcx, %rax
jae 0x393ad
movq 0x548(%rsp), %rdi
addq $0x30, %rdi
leaq 0x730(%rsp), %rsi
callq 0x3afc0
movq %rax, 0x510(%rsp)
jmp 0x3916a
movq 0x510(%rsp), %rdi
movslq 0x72c(%rsp), %rsi
callq 0xfbc0
movl (%rax), %eax
movl %eax, 0x728(%rsp)
movq 0x770(%rsp), %rdi
leaq 0x728(%rsp), %rsi
callq 0x2d870
movq %rax, 0x508(%rsp)
jmp 0x391a7
movq 0x508(%rsp), %rax
cmpl $0x0, (%rax)
jge 0x39259
movq 0x758(%rsp), %rdi
leaq 0x728(%rsp), %rsi
callq 0x105b0
jmp 0x391cf
movq 0x770(%rsp), %rdi
leaq 0x730(%rsp), %rsi
callq 0x2d870
movq %rax, 0x500(%rsp)
jmp 0x391ee
movq 0x500(%rsp), %rax
movl (%rax), %eax
incl %eax
movl %eax, 0x4f4(%rsp)
movq 0x770(%rsp), %rdi
leaq 0x728(%rsp), %rsi
callq 0x2d870
movq %rax, 0x4f8(%rsp)
jmp 0x39220
movq 0x4f8(%rsp), %rax
movl 0x4f4(%rsp), %ecx
movl %ecx, (%rax)
jmp 0x39259
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x738(%rsp)
movl %eax, 0x734(%rsp)
leaq 0x740(%rsp), %rdi
callq 0x10520
jmp 0x3ac9c
movq 0x770(%rsp), %rdi
leaq 0x728(%rsp), %rsi
callq 0x2d870
movq %rax, 0x4e8(%rsp)
jmp 0x39278
movq 0x4e8(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x4dc(%rsp)
movq 0x770(%rsp), %rdi
leaq 0x730(%rsp), %rsi
callq 0x2d870
movq %rax, 0x4e0(%rsp)
jmp 0x392a8
movl 0x4dc(%rsp), %eax
movq 0x4e0(%rsp), %rcx
movl (%rcx), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jne 0x39395
movq 0x778(%rsp), %rdi
leaq 0x728(%rsp), %rsi
callq 0x2d870
movq %rax, 0x4d0(%rsp)
jmp 0x392e3
movq 0x4d0(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x4c4(%rsp)
movq 0x778(%rsp), %rdi
leaq 0x730(%rsp), %rsi
callq 0x2d870
movq %rax, 0x4c8(%rsp)
jmp 0x39313
movl 0x4c4(%rsp), %eax
movq 0x4c8(%rsp), %rcx
movl (%rcx), %ecx
addl %ecx, %eax
movl %eax, 0x4b4(%rsp)
movq 0x778(%rsp), %rdi
leaq 0x728(%rsp), %rsi
callq 0x2d870
movq %rax, 0x4b8(%rsp)
jmp 0x3934c
movq 0x4b8(%rsp), %rax
movl 0x4b4(%rsp), %ecx
movl %ecx, (%rax)
movq 0x780(%rsp), %rdi
leaq 0x728(%rsp), %rsi
callq 0x2d980
movq %rax, 0x4a8(%rsp)
jmp 0x3937c
movq 0x4a8(%rsp), %rdi
leaq 0x730(%rsp), %rsi
callq 0xfce0
jmp 0x39393
jmp 0x39395
jmp 0x39397
movl 0x72c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x72c(%rsp)
jmp 0x390f3
jmp 0x39072
leaq 0x740(%rsp), %rdi
callq 0xfd50
subq $0x1, %rax
movl %eax, 0x724(%rsp)
cmpl $0x0, 0x724(%rsp)
jl 0x39e56
movslq 0x724(%rsp), %rsi
leaq 0x740(%rsp), %rdi
callq 0xfbc0
movq 0x548(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x720(%rsp)
leaq 0x79c(%rsp), %rsi
callq 0x10650
movq %rdx, 0x498(%rsp)
movq %rax, 0x4a0(%rsp)
jmp 0x3941d
movq 0x548(%rsp), %rdi
movq 0x498(%rsp), %rax
movq 0x4a0(%rsp), %rcx
movq %rcx, 0x710(%rsp)
movq %rax, 0x718(%rsp)
callq 0x10710
movq %rdx, 0x488(%rsp)
movq %rax, 0x490(%rsp)
jmp 0x3945c
movq 0x488(%rsp), %rax
movq 0x490(%rsp), %rcx
movq %rcx, 0x700(%rsp)
movq %rax, 0x708(%rsp)
leaq 0x710(%rsp), %rdi
leaq 0x700(%rsp), %rsi
callq 0x10630
movb %al, 0x487(%rsp)
jmp 0x3949a
movb 0x487(%rsp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x486(%rsp)
jne 0x394b4
jmp 0x39587
movq 0x548(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x10650
movq %rdx, 0x470(%rsp)
movq %rax, 0x478(%rsp)
jmp 0x394db
movq 0x548(%rsp), %rdi
movq 0x470(%rsp), %rax
movq 0x478(%rsp), %rcx
movq %rcx, 0x6f0(%rsp)
movq %rax, 0x6f8(%rsp)
callq 0x10710
movq %rdx, 0x460(%rsp)
movq %rax, 0x468(%rsp)
jmp 0x3951a
movq 0x460(%rsp), %rax
movq 0x468(%rsp), %rcx
movq %rcx, 0x6e0(%rsp)
movq %rax, 0x6e8(%rsp)
leaq 0x6f0(%rsp), %rdi
leaq 0x6e0(%rsp), %rsi
callq 0x10630
movb %al, 0x45f(%rsp)
jmp 0x39558
movb 0x45f(%rsp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x486(%rsp)
jne 0x3956f
jmp 0x39587
movl 0x79c(%rsp), %eax
cmpl 0x720(%rsp), %eax
setne %al
movb %al, 0x486(%rsp)
movb 0x486(%rsp), %al
testb $0x1, %al
jne 0x39597
jmp 0x39750
movq 0x548(%rsp), %rdi
leaq 0x79c(%rsp), %rsi
callq 0x107b0
movq %rax, 0x450(%rsp)
jmp 0x395b6
movq 0x450(%rsp), %rdi
callq 0x109f0
movq 0x548(%rsp), %rdi
movq %rax, 0x6d0(%rsp)
leaq 0x79c(%rsp), %rsi
callq 0x107b0
movq %rax, 0x448(%rsp)
jmp 0x395ea
movq 0x448(%rsp), %rdi
callq 0x10a20
movq %rax, 0x6c8(%rsp)
movq 0x6d0(%rsp), %rdi
movq 0x6c8(%rsp), %rsi
xorl %edx, %edx
callq 0x10750
movl %eax, 0x444(%rsp)
jmp 0x3961f
movq 0x548(%rsp), %rdi
movl 0x444(%rsp), %eax
movl %eax, 0x6dc(%rsp)
leaq 0x720(%rsp), %rsi
callq 0x107b0
movq %rax, 0x438(%rsp)
jmp 0x3964c
movq 0x438(%rsp), %rdi
callq 0x109f0
movq 0x548(%rsp), %rdi
movq %rax, 0x6c0(%rsp)
leaq 0x720(%rsp), %rsi
callq 0x107b0
movq %rax, 0x430(%rsp)
jmp 0x39680
movq 0x430(%rsp), %rdi
callq 0x10a20
movq %rax, 0x6b8(%rsp)
movq 0x6c0(%rsp), %rdi
movq 0x6b8(%rsp), %rsi
xorl %edx, %edx
callq 0x10750
movl %eax, 0x42c(%rsp)
jmp 0x396b5
movl 0x42c(%rsp), %eax
movl %eax, 0x6d8(%rsp)
movl 0x6dc(%rsp), %eax
movl 0x6d8(%rsp), %ecx
imull %ecx, %eax
movl %eax, 0x6b4(%rsp)
movq 0x760(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x2d310
movq %rax, 0x420(%rsp)
jmp 0x396fa
movq 0x420(%rsp), %rax
movsd (%rax), %xmm0
cvtsi2sdl 0x6b4(%rsp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, 0x410(%rsp)
movq 0x760(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x2d310
movq %rax, 0x418(%rsp)
jmp 0x3973b
movq 0x418(%rsp), %rax
movsd 0x410(%rsp), %xmm0
movsd %xmm0, (%rax)
movl $0x0, 0x6b0(%rsp)
movslq 0x6b0(%rsp), %rax
movq %rax, 0x400(%rsp)
movq 0x780(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x2d980
movq %rax, 0x408(%rsp)
jmp 0x3978a
movq 0x408(%rsp), %rdi
callq 0xfd50
movq %rax, %rcx
movq 0x400(%rsp), %rax
cmpq %rcx, %rax
jae 0x39b75
movq 0x780(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x2d980
movq %rax, 0x3f8(%rsp)
jmp 0x397ca
movq 0x3f8(%rsp), %rdi
movslq 0x6b0(%rsp), %rsi
callq 0xfbc0
movl (%rax), %eax
movl %eax, 0x6ac(%rsp)
movq 0x778(%rsp), %rdi
leaq 0x6ac(%rsp), %rsi
callq 0x2d870
movq %rax, 0x3f0(%rsp)
jmp 0x39807
movq 0x3f0(%rsp), %rax
cvtsi2sdl (%rax), %xmm0
movsd %xmm0, 0x3e0(%rsp)
movq 0x778(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x2d870
movq %rax, 0x3e8(%rsp)
jmp 0x3983b
movsd 0x3e0(%rsp), %xmm0
movq 0x3e8(%rsp), %rax
cvtsi2sdl (%rax), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x6a0(%rsp)
movq 0x768(%rsp), %rdi
leaq 0x6ac(%rsp), %rsi
callq 0x2d310
movq %rax, 0x3d8(%rsp)
jmp 0x3987c
movq 0x3d8(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x3c0(%rsp)
movsd 0x6a0(%rsp), %xmm0
movsd %xmm0, 0x3c8(%rsp)
movq 0x768(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x2d310
movq %rax, 0x3d0(%rsp)
jmp 0x398c2
movsd 0x3c0(%rsp), %xmm1
movsd 0x3c8(%rsp), %xmm0
movq 0x3d0(%rsp), %rax
movsd (%rax), %xmm2
movsd 0x41728(%rip), %xmm3    # 0x7b010
addsd %xmm3, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x3b0(%rsp)
movq 0x768(%rsp), %rdi
leaq 0x6ac(%rsp), %rsi
callq 0x2d310
movq %rax, 0x3b8(%rsp)
jmp 0x3991c
movq 0x548(%rsp), %rdi
movq 0x3b8(%rsp), %rax
movsd 0x3b0(%rsp), %xmm0
movsd %xmm0, (%rax)
leaq 0x79c(%rsp), %rsi
callq 0x10650
movq %rdx, 0x3a0(%rsp)
movq %rax, 0x3a8(%rsp)
jmp 0x39958
movq 0x548(%rsp), %rdi
movq 0x3a0(%rsp), %rax
movq 0x3a8(%rsp), %rcx
movq %rcx, 0x690(%rsp)
movq %rax, 0x698(%rsp)
callq 0x10710
movq %rdx, 0x390(%rsp)
movq %rax, 0x398(%rsp)
jmp 0x39997
movq 0x390(%rsp), %rax
movq 0x398(%rsp), %rcx
movq %rcx, 0x680(%rsp)
movq %rax, 0x688(%rsp)
leaq 0x690(%rsp), %rdi
leaq 0x680(%rsp), %rsi
callq 0x10630
movb %al, 0x38f(%rsp)
jmp 0x399d5
movb 0x38f(%rsp), %al
testb $0x1, %al
jne 0x399e5
jmp 0x39b5d
movq 0x760(%rsp), %rdi
leaq 0x6ac(%rsp), %rsi
callq 0x2d310
movq %rax, 0x380(%rsp)
jmp 0x39a04
movq 0x380(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x370(%rsp)
movq 0x760(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x2d310
movq %rax, 0x378(%rsp)
jmp 0x39a38
movsd 0x370(%rsp), %xmm1
movq 0x378(%rsp), %rax
movsd (%rax), %xmm0
movsd 0x6a0(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x360(%rsp)
movq 0x760(%rsp), %rdi
leaq 0x6ac(%rsp), %rsi
callq 0x2d310
movq %rax, 0x368(%rsp)
jmp 0x39a86
movq 0x368(%rsp), %rax
movsd 0x360(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0x7b0(%rsp), %rdi
leaq 0x6ac(%rsp), %rsi
callq 0x2d310
movq %rax, 0x358(%rsp)
jmp 0x39aba
movq 0x358(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x348(%rsp)
movq 0x760(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x2d310
movq %rax, 0x350(%rsp)
jmp 0x39aee
movsd 0x348(%rsp), %xmm0
movq 0x350(%rsp), %rax
movsd (%rax), %xmm1
movsd 0x6a0(%rsp), %xmm2
mulsd %xmm2, %xmm1
movsd 0x41750(%rip), %xmm2    # 0x7b268
mulsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, 0x338(%rsp)
movq 0x7b0(%rsp), %rdi
leaq 0x6ac(%rsp), %rsi
callq 0x2d310
movq %rax, 0x340(%rsp)
jmp 0x39b48
movq 0x340(%rsp), %rax
movsd 0x338(%rsp), %xmm0
movsd %xmm0, (%rax)
jmp 0x39b5f
movl 0x6b0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x6b0(%rsp)
jmp 0x3975b
movl 0x79c(%rsp), %eax
cmpl 0x720(%rsp), %eax
je 0x39c3e
movq 0x7b0(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x2d310
movq %rax, 0x330(%rsp)
jmp 0x39ba8
movq 0x330(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x320(%rsp)
movq 0x768(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x2d310
movq %rax, 0x328(%rsp)
jmp 0x39bdc
movsd 0x320(%rsp), %xmm0
movq 0x328(%rsp), %rax
movsd (%rax), %xmm1
movsd 0x4166f(%rip), %xmm2    # 0x7b268
mulsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, 0x310(%rsp)
movq 0x7b0(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x2d310
movq %rax, 0x318(%rsp)
jmp 0x39c29
movq 0x318(%rsp), %rax
movsd 0x310(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0x548(%rsp), %rdi
leaq 0x79c(%rsp), %rsi
callq 0x10650
movq %rdx, 0x300(%rsp)
movq %rax, 0x308(%rsp)
jmp 0x39c65
movq 0x548(%rsp), %rdi
movq 0x300(%rsp), %rax
movq 0x308(%rsp), %rcx
movq %rcx, 0x670(%rsp)
movq %rax, 0x678(%rsp)
callq 0x10710
movq %rdx, 0x2f0(%rsp)
movq %rax, 0x2f8(%rsp)
jmp 0x39ca4
movq 0x2f0(%rsp), %rax
movq 0x2f8(%rsp), %rcx
movq %rcx, 0x660(%rsp)
movq %rax, 0x668(%rsp)
leaq 0x670(%rsp), %rdi
leaq 0x660(%rsp), %rsi
callq 0x10630
movb %al, 0x2ef(%rsp)
jmp 0x39ce2
movb 0x2ef(%rsp), %al
testb $0x1, %al
jne 0x39cf2
jmp 0x39e3e
movq 0x548(%rsp), %rdi
leaq 0x79c(%rsp), %rsi
callq 0x107b0
movq %rax, 0x2e0(%rsp)
jmp 0x39d11
movq 0x2e0(%rsp), %rdi
callq 0x109f0
movq 0x548(%rsp), %rdi
movq %rax, 0x650(%rsp)
leaq 0x79c(%rsp), %rsi
callq 0x107b0
movq %rax, 0x2d8(%rsp)
jmp 0x39d45
movq 0x2d8(%rsp), %rdi
callq 0x10a20
movq %rax, 0x648(%rsp)
movq 0x650(%rsp), %rdi
movq 0x648(%rsp), %rsi
xorl %edx, %edx
callq 0x10750
movl %eax, 0x2d4(%rsp)
jmp 0x39d7a
movl 0x2d4(%rsp), %eax
movl %eax, 0x65c(%rsp)
movq 0x7b0(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x2d310
movq %rax, 0x2c8(%rsp)
jmp 0x39da7
movq 0x2c8(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x2b8(%rsp)
movq 0x768(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x2d310
movq %rax, 0x2c0(%rsp)
jmp 0x39ddb
movsd 0x2b8(%rsp), %xmm0
movq 0x2c0(%rsp), %rax
movsd (%rax), %xmm1
cvtsi2sdl 0x65c(%rsp), %xmm2
mulsd %xmm2, %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, 0x2a8(%rsp)
movq 0x7b0(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x2d310
movq %rax, 0x2b0(%rsp)
jmp 0x39e29
movq 0x2b0(%rsp), %rax
movsd 0x2a8(%rsp), %xmm0
movsd %xmm0, (%rax)
jmp 0x39e40
movl 0x724(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x724(%rsp)
jmp 0x393ca
movq 0x548(%rsp), %rdi
addq $0x30, %rdi
movl 0x798(%rsp), %esi
movl 0x794(%rsp), %edx
callq 0x52420
jmp 0x39e77
movq 0x548(%rsp), %rdi
addq $0x30, %rdi
callq 0x52170
jmp 0x39e8a
movq 0x778(%rsp), %rdi
leaq 0x79c(%rsp), %rsi
callq 0x2d870
movq %rax, 0x2a0(%rsp)
jmp 0x39ea9
movq 0x2a0(%rsp), %rax
movl $0x1, (%rax)
movq 0x770(%rsp), %rdi
leaq 0x79c(%rsp), %rsi
callq 0x2d870
movq %rax, 0x298(%rsp)
jmp 0x39ed6
movq 0x298(%rsp), %rax
movl $0x0, (%rax)
movq 0x758(%rsp), %rdi
leaq 0x79c(%rsp), %rsi
callq 0x105b0
jmp 0x39efb
leaq 0x740(%rsp), %rdi
callq 0x10a50
movq 0x758(%rsp), %rdi
callq 0x105e0
movb %al, 0x297(%rsp)
jmp 0x39f1e
movb 0x297(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x39f30
jmp 0x3a21c
movq 0x758(%rsp), %rdi
callq 0x10600
movq %rax, 0x288(%rsp)
jmp 0x39f47
movq 0x288(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x644(%rsp)
movq 0x758(%rsp), %rdi
callq 0x10610
jmp 0x39f67
leaq 0x740(%rsp), %rdi
leaq 0x644(%rsp), %rsi
callq 0xfce0
jmp 0x39f7e
movl $0x0, 0x640(%rsp)
movq 0x548(%rsp), %rdi
movslq 0x640(%rsp), %rax
movq %rax, 0x278(%rsp)
addq $0x30, %rdi
leaq 0x644(%rsp), %rsi
callq 0x3afc0
movq %rax, 0x280(%rsp)
jmp 0x39fbc
movq 0x280(%rsp), %rdi
callq 0xfd50
movq %rax, %rcx
movq 0x278(%rsp), %rax
cmpq %rcx, %rax
jae 0x3a217
movq 0x548(%rsp), %rdi
addq $0x30, %rdi
leaq 0x644(%rsp), %rsi
callq 0x3afc0
movq %rax, 0x270(%rsp)
jmp 0x3a000
movq 0x270(%rsp), %rdi
movslq 0x640(%rsp), %rsi
callq 0xfbc0
movl (%rax), %eax
movl %eax, 0x63c(%rsp)
movq 0x770(%rsp), %rdi
leaq 0x63c(%rsp), %rsi
callq 0x2d870
movq %rax, 0x268(%rsp)
jmp 0x3a03d
movq 0x268(%rsp), %rax
cmpl $0x0, (%rax)
jge 0x3a0c3
movq 0x758(%rsp), %rdi
leaq 0x63c(%rsp), %rsi
callq 0x105b0
jmp 0x3a061
movq 0x770(%rsp), %rdi
leaq 0x644(%rsp), %rsi
callq 0x2d870
movq %rax, 0x260(%rsp)
jmp 0x3a080
movq 0x260(%rsp), %rax
movl (%rax), %eax
incl %eax
movl %eax, 0x254(%rsp)
movq 0x770(%rsp), %rdi
leaq 0x63c(%rsp), %rsi
callq 0x2d870
movq %rax, 0x258(%rsp)
jmp 0x3a0b2
movq 0x258(%rsp), %rax
movl 0x254(%rsp), %ecx
movl %ecx, (%rax)
movq 0x770(%rsp), %rdi
leaq 0x63c(%rsp), %rsi
callq 0x2d870
movq %rax, 0x248(%rsp)
jmp 0x3a0e2
movq 0x248(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x23c(%rsp)
movq 0x770(%rsp), %rdi
leaq 0x644(%rsp), %rsi
callq 0x2d870
movq %rax, 0x240(%rsp)
jmp 0x3a112
movl 0x23c(%rsp), %eax
movq 0x240(%rsp), %rcx
movl (%rcx), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jne 0x3a1ff
movq 0x778(%rsp), %rdi
leaq 0x63c(%rsp), %rsi
callq 0x2d870
movq %rax, 0x230(%rsp)
jmp 0x3a14d
movq 0x230(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x224(%rsp)
movq 0x778(%rsp), %rdi
leaq 0x644(%rsp), %rsi
callq 0x2d870
movq %rax, 0x228(%rsp)
jmp 0x3a17d
movl 0x224(%rsp), %eax
movq 0x228(%rsp), %rcx
movl (%rcx), %ecx
addl %ecx, %eax
movl %eax, 0x214(%rsp)
movq 0x778(%rsp), %rdi
leaq 0x63c(%rsp), %rsi
callq 0x2d870
movq %rax, 0x218(%rsp)
jmp 0x3a1b6
movq 0x218(%rsp), %rax
movl 0x214(%rsp), %ecx
movl %ecx, (%rax)
movq 0x780(%rsp), %rdi
leaq 0x63c(%rsp), %rsi
callq 0x2d980
movq %rax, 0x208(%rsp)
jmp 0x3a1e6
movq 0x208(%rsp), %rdi
leaq 0x644(%rsp), %rsi
callq 0xfce0
jmp 0x3a1fd
jmp 0x3a1ff
jmp 0x3a201
movl 0x640(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x640(%rsp)
jmp 0x39f89
jmp 0x39f08
leaq 0x740(%rsp), %rdi
callq 0xfd50
subq $0x1, %rax
movl %eax, 0x638(%rsp)
cmpl $0x0, 0x638(%rsp)
jl 0x3ac66
movslq 0x638(%rsp), %rsi
leaq 0x740(%rsp), %rdi
callq 0xfbc0
movq 0x548(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x634(%rsp)
leaq 0x79c(%rsp), %rsi
callq 0x10650
movq %rdx, 0x1f8(%rsp)
movq %rax, 0x200(%rsp)
jmp 0x3a287
movq 0x548(%rsp), %rdi
movq 0x1f8(%rsp), %rax
movq 0x200(%rsp), %rcx
movq %rcx, 0x620(%rsp)
movq %rax, 0x628(%rsp)
callq 0x10710
movq %rdx, 0x1e8(%rsp)
movq %rax, 0x1f0(%rsp)
jmp 0x3a2c6
movq 0x1e8(%rsp), %rax
movq 0x1f0(%rsp), %rcx
movq %rcx, 0x610(%rsp)
movq %rax, 0x618(%rsp)
leaq 0x620(%rsp), %rdi
leaq 0x610(%rsp), %rsi
callq 0x10630
movb %al, 0x1e7(%rsp)
jmp 0x3a304
movb 0x1e7(%rsp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x1e6(%rsp)
jne 0x3a31e
jmp 0x3a3f1
movq 0x548(%rsp), %rdi
leaq 0x634(%rsp), %rsi
callq 0x10650
movq %rdx, 0x1d0(%rsp)
movq %rax, 0x1d8(%rsp)
jmp 0x3a345
movq 0x548(%rsp), %rdi
movq 0x1d0(%rsp), %rax
movq 0x1d8(%rsp), %rcx
movq %rcx, 0x600(%rsp)
movq %rax, 0x608(%rsp)
callq 0x10710
movq %rdx, 0x1c0(%rsp)
movq %rax, 0x1c8(%rsp)
jmp 0x3a384
movq 0x1c0(%rsp), %rax
movq 0x1c8(%rsp), %rcx
movq %rcx, 0x5f0(%rsp)
movq %rax, 0x5f8(%rsp)
leaq 0x600(%rsp), %rdi
leaq 0x5f0(%rsp), %rsi
callq 0x10630
movb %al, 0x1bf(%rsp)
jmp 0x3a3c2
movb 0x1bf(%rsp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x1e6(%rsp)
jne 0x3a3d9
jmp 0x3a3f1
movl 0x79c(%rsp), %eax
cmpl 0x634(%rsp), %eax
setne %al
movb %al, 0x1e6(%rsp)
movb 0x1e6(%rsp), %al
testb $0x1, %al
jne 0x3a401
jmp 0x3a5ba
movq 0x548(%rsp), %rdi
leaq 0x79c(%rsp), %rsi
callq 0x107b0
movq %rax, 0x1b0(%rsp)
jmp 0x3a420
movq 0x1b0(%rsp), %rdi
callq 0x109f0
movq 0x548(%rsp), %rdi
movq %rax, 0x5e0(%rsp)
leaq 0x79c(%rsp), %rsi
callq 0x107b0
movq %rax, 0x1a8(%rsp)
jmp 0x3a454
movq 0x1a8(%rsp), %rdi
callq 0x10a20
movq %rax, 0x5d8(%rsp)
movq 0x5e0(%rsp), %rdi
movq 0x5d8(%rsp), %rsi
xorl %edx, %edx
callq 0x10750
movl %eax, 0x1a4(%rsp)
jmp 0x3a489
movq 0x548(%rsp), %rdi
movl 0x1a4(%rsp), %eax
movl %eax, 0x5ec(%rsp)
leaq 0x634(%rsp), %rsi
callq 0x107b0
movq %rax, 0x198(%rsp)
jmp 0x3a4b6
movq 0x198(%rsp), %rdi
callq 0x109f0
movq 0x548(%rsp), %rdi
movq %rax, 0x5d0(%rsp)
leaq 0x634(%rsp), %rsi
callq 0x107b0
movq %rax, 0x190(%rsp)
jmp 0x3a4ea
movq 0x190(%rsp), %rdi
callq 0x10a20
movq %rax, 0x5c8(%rsp)
movq 0x5d0(%rsp), %rdi
movq 0x5c8(%rsp), %rsi
xorl %edx, %edx
callq 0x10750
movl %eax, 0x18c(%rsp)
jmp 0x3a51f
movl 0x18c(%rsp), %eax
movl %eax, 0x5e8(%rsp)
movl 0x5ec(%rsp), %eax
movl 0x5e8(%rsp), %ecx
imull %ecx, %eax
movl %eax, 0x5c4(%rsp)
movq 0x760(%rsp), %rdi
leaq 0x634(%rsp), %rsi
callq 0x2d310
movq %rax, 0x180(%rsp)
jmp 0x3a564
movq 0x180(%rsp), %rax
movsd (%rax), %xmm0
cvtsi2sdl 0x5c4(%rsp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, 0x170(%rsp)
movq 0x760(%rsp), %rdi
leaq 0x634(%rsp), %rsi
callq 0x2d310
movq %rax, 0x178(%rsp)
jmp 0x3a5a5
movq 0x178(%rsp), %rax
movsd 0x170(%rsp), %xmm0
movsd %xmm0, (%rax)
movl $0x0, 0x5c0(%rsp)
movslq 0x5c0(%rsp), %rax
movq %rax, 0x160(%rsp)
movq 0x780(%rsp), %rdi
leaq 0x634(%rsp), %rsi
callq 0x2d980
movq %rax, 0x168(%rsp)
jmp 0x3a5f4
movq 0x168(%rsp), %rdi
callq 0xfd50
movq %rax, %rcx
movq 0x160(%rsp), %rax
cmpq %rcx, %rax
jae 0x3a9df
movq 0x780(%rsp), %rdi
leaq 0x634(%rsp), %rsi
callq 0x2d980
movq %rax, 0x158(%rsp)
jmp 0x3a634
movq 0x158(%rsp), %rdi
movslq 0x5c0(%rsp), %rsi
callq 0xfbc0
movl (%rax), %eax
movl %eax, 0x5bc(%rsp)
movq 0x778(%rsp), %rdi
leaq 0x5bc(%rsp), %rsi
callq 0x2d870
movq %rax, 0x150(%rsp)
jmp 0x3a671
movq 0x150(%rsp), %rax
cvtsi2sdl (%rax), %xmm0
movsd %xmm0, 0x140(%rsp)
movq 0x778(%rsp), %rdi
leaq 0x634(%rsp), %rsi
callq 0x2d870
movq %rax, 0x148(%rsp)
jmp 0x3a6a5
movsd 0x140(%rsp), %xmm0
movq 0x148(%rsp), %rax
cvtsi2sdl (%rax), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x5b0(%rsp)
movq 0x768(%rsp), %rdi
leaq 0x5bc(%rsp), %rsi
callq 0x2d310
movq %rax, 0x138(%rsp)
jmp 0x3a6e6
movq 0x138(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x120(%rsp)
movsd 0x5b0(%rsp), %xmm0
movsd %xmm0, 0x128(%rsp)
movq 0x768(%rsp), %rdi
leaq 0x634(%rsp), %rsi
callq 0x2d310
movq %rax, 0x130(%rsp)
jmp 0x3a72c
movsd 0x120(%rsp), %xmm1
movsd 0x128(%rsp), %xmm0
movq 0x130(%rsp), %rax
movsd (%rax), %xmm2
movsd 0x408be(%rip), %xmm3    # 0x7b010
addsd %xmm3, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x110(%rsp)
movq 0x768(%rsp), %rdi
leaq 0x5bc(%rsp), %rsi
callq 0x2d310
movq %rax, 0x118(%rsp)
jmp 0x3a786
movq 0x548(%rsp), %rdi
movq 0x118(%rsp), %rax
movsd 0x110(%rsp), %xmm0
movsd %xmm0, (%rax)
leaq 0x79c(%rsp), %rsi
callq 0x10650
movq %rdx, 0x100(%rsp)
movq %rax, 0x108(%rsp)
jmp 0x3a7c2
movq 0x548(%rsp), %rdi
movq 0x100(%rsp), %rax
movq 0x108(%rsp), %rcx
movq %rcx, 0x5a0(%rsp)
movq %rax, 0x5a8(%rsp)
callq 0x10710
movq %rdx, 0xf0(%rsp)
movq %rax, 0xf8(%rsp)
jmp 0x3a801
movq 0xf0(%rsp), %rax
movq 0xf8(%rsp), %rcx
movq %rcx, 0x590(%rsp)
movq %rax, 0x598(%rsp)
leaq 0x5a0(%rsp), %rdi
leaq 0x590(%rsp), %rsi
callq 0x10630
movb %al, 0xef(%rsp)
jmp 0x3a83f
movb 0xef(%rsp), %al
testb $0x1, %al
jne 0x3a84f
jmp 0x3a9c7
movq 0x760(%rsp), %rdi
leaq 0x5bc(%rsp), %rsi
callq 0x2d310
movq %rax, 0xe0(%rsp)
jmp 0x3a86e
movq 0xe0(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0xd0(%rsp)
movq 0x760(%rsp), %rdi
leaq 0x634(%rsp), %rsi
callq 0x2d310
movq %rax, 0xd8(%rsp)
jmp 0x3a8a2
movsd 0xd0(%rsp), %xmm1
movq 0xd8(%rsp), %rax
movsd (%rax), %xmm0
movsd 0x5b0(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0xc0(%rsp)
movq 0x760(%rsp), %rdi
leaq 0x5bc(%rsp), %rsi
callq 0x2d310
movq %rax, 0xc8(%rsp)
jmp 0x3a8f0
movq 0xc8(%rsp), %rax
movsd 0xc0(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0x7b0(%rsp), %rdi
leaq 0x5bc(%rsp), %rsi
callq 0x2d310
movq %rax, 0xb8(%rsp)
jmp 0x3a924
movq 0xb8(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0xa8(%rsp)
movq 0x760(%rsp), %rdi
leaq 0x634(%rsp), %rsi
callq 0x2d310
movq %rax, 0xb0(%rsp)
jmp 0x3a958
movsd 0xa8(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movsd (%rax), %xmm1
movsd 0x5b0(%rsp), %xmm2
mulsd %xmm2, %xmm1
movsd 0x408be(%rip), %xmm2    # 0x7b240
mulsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, 0x98(%rsp)
movq 0x7b0(%rsp), %rdi
leaq 0x5bc(%rsp), %rsi
callq 0x2d310
movq %rax, 0xa0(%rsp)
jmp 0x3a9b2
movq 0xa0(%rsp), %rax
movsd 0x98(%rsp), %xmm0
movsd %xmm0, (%rax)
jmp 0x3a9c9
movl 0x5c0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x5c0(%rsp)
jmp 0x3a5c5
movl 0x79c(%rsp), %eax
cmpl 0x634(%rsp), %eax
je 0x3aa9c
movq 0x7b0(%rsp), %rdi
leaq 0x634(%rsp), %rsi
callq 0x2d310
movq %rax, 0x90(%rsp)
jmp 0x3aa12
movq 0x90(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x80(%rsp)
movq 0x768(%rsp), %rdi
leaq 0x634(%rsp), %rsi
callq 0x2d310
movq %rax, 0x88(%rsp)
jmp 0x3aa46
movsd 0x80(%rsp), %xmm0
movq 0x88(%rsp), %rax
movsd (%rax), %xmm1
movsd 0x407dd(%rip), %xmm2    # 0x7b240
mulsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, 0x70(%rsp)
movq 0x7b0(%rsp), %rdi
leaq 0x634(%rsp), %rsi
callq 0x2d310
movq %rax, 0x78(%rsp)
jmp 0x3aa8d
movq 0x78(%rsp), %rax
movsd 0x70(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0x548(%rsp), %rdi
leaq 0x79c(%rsp), %rsi
callq 0x10650
movq %rdx, 0x60(%rsp)
movq %rax, 0x68(%rsp)
jmp 0x3aabd
movq 0x548(%rsp), %rdi
movq 0x60(%rsp), %rax
movq 0x68(%rsp), %rcx
movq %rcx, 0x580(%rsp)
movq %rax, 0x588(%rsp)
callq 0x10710
movq %rdx, 0x50(%rsp)
movq %rax, 0x58(%rsp)
jmp 0x3aaf0
movq 0x50(%rsp), %rax
movq 0x58(%rsp), %rcx
movq %rcx, 0x570(%rsp)
movq %rax, 0x578(%rsp)
leaq 0x580(%rsp), %rdi
leaq 0x570(%rsp), %rsi
callq 0x10630
movb %al, 0x4f(%rsp)
jmp 0x3ab25
movb 0x4f(%rsp), %al
testb $0x1, %al
jne 0x3ab32
jmp 0x3ac4e
movq 0x548(%rsp), %rdi
leaq 0x79c(%rsp), %rsi
callq 0x107b0
movq %rax, 0x40(%rsp)
jmp 0x3ab4e
movq 0x40(%rsp), %rdi
callq 0x109f0
movq 0x548(%rsp), %rdi
movq %rax, 0x560(%rsp)
leaq 0x79c(%rsp), %rsi
callq 0x107b0
movq %rax, 0x38(%rsp)
jmp 0x3ab7c
movq 0x38(%rsp), %rdi
callq 0x10a20
movq %rax, 0x558(%rsp)
movq 0x560(%rsp), %rdi
movq 0x558(%rsp), %rsi
xorl %edx, %edx
callq 0x10750
movl %eax, 0x34(%rsp)
jmp 0x3abab
movl 0x34(%rsp), %eax
movl %eax, 0x56c(%rsp)
movq 0x7b0(%rsp), %rdi
leaq 0x634(%rsp), %rsi
callq 0x2d310
movq %rax, 0x28(%rsp)
jmp 0x3abd2
movq 0x28(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x18(%rsp)
movq 0x768(%rsp), %rdi
leaq 0x634(%rsp), %rsi
callq 0x2d310
movq %rax, 0x20(%rsp)
jmp 0x3abfd
movsd 0x18(%rsp), %xmm1
movq 0x20(%rsp), %rax
movsd (%rax), %xmm0
cvtsi2sdl 0x56c(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x7b0(%rsp), %rdi
leaq 0x634(%rsp), %rsi
callq 0x2d310
movq %rax, 0x10(%rsp)
jmp 0x3ac3f
movq 0x10(%rsp), %rax
movsd 0x8(%rsp), %xmm0
movsd %xmm0, (%rax)
jmp 0x3ac50
movl 0x638(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x638(%rsp)
jmp 0x3a234
movq 0x548(%rsp), %rdi
addq $0x30, %rdi
movl 0x798(%rsp), %esi
movl 0x794(%rsp), %edx
callq 0x52580
jmp 0x3ac87
leaq 0x740(%rsp), %rdi
callq 0x10520
addq $0x7a8, %rsp            # imm = 0x7A8
retq
movq 0x738(%rsp), %rdi
callq 0x9cf0
nopl (%rax)