// File: fjamour[P]icentral/src/bcc_scratch.cc
// Function: bcc_scratch_t::bc_iter(unsigned 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_scratch_t::bc_iter(node_id_t s, tr1::unordered_map<node_id_t,double>& bc_map) {
    vector<vector<node_id_t> >&  P = bcc_fast_subgraph.P;
    vector<int>&                 path_cnt_map = bcc_fast_subgraph.path_cnt_vec;
    vector<int>&                 dist_map = bcc_fast_subgraph.dist_vec;
    vector<double>&              pair_dep_map = bcc_fast_subgraph.pair_dep_vec;
    vector<double>&              sigma_t_map = bcc_fast_subgraph.sigma_t_map;
    queue<node_id_t>&            Q = bcc_fast_subgraph.Q;
    stack<node_id_t>             S;

    bcc_fast_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(v_i);
        for(int i = 0; i < bcc_fast_subgraph.nodes_vec[v_i].size(); ++i) {
            node_id_t v_n = bcc_fast_subgraph.nodes_vec[v_i][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);
            }
        }
    }
    while (!S.empty()) {
        node_id_t v_n = S.top();
        S.pop();
        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;
            
            node_id_t new_v_n = bcc_fast_subgraph.inout_label_map[v_n];
            bc_map[new_v_n] = bc_map[new_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;
                
                node_id_t new_v_p = bcc_fast_subgraph.inout_label_map[v_p];
                bc_map[new_v_p] = bc_map[new_v_p] + sigma_t_map[v_n] * sp_sn;
            }
        }
        if (s != v_n) {
            node_id_t new_v_n = bcc_fast_subgraph.inout_label_map[v_n];
            bc_map[new_v_n] = bc_map[new_v_n] + pair_dep_map[v_n];
        }
        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);
            
            node_id_t new_v_n = bcc_fast_subgraph.inout_label_map[v_n];
            bc_map[new_v_n] = bc_map[new_v_n] + pair_dep_map[v_n] * VG_s * 2;
        }
    }    
}

// Assembly:
subq $0x388, %rsp            # imm = 0x388
movq %rdi, 0x380(%rsp)
movl %esi, 0x37c(%rsp)
movq %rdx, 0x370(%rsp)
movq 0x380(%rsp), %rax
movq %rax, 0x1d8(%rsp)
movq %rax, %rcx
addq $0x2d8, %rcx            # imm = 0x2D8
movq %rcx, 0x1e0(%rsp)
movq %rax, %rcx
addq $0x368, %rcx            # imm = 0x368
movq %rcx, 0x368(%rsp)
movq %rax, %rcx
addq $0x380, %rcx            # imm = 0x380
movq %rcx, 0x360(%rsp)
movq %rax, %rcx
addq $0x3b0, %rcx            # imm = 0x3B0
movq %rcx, 0x358(%rsp)
movq %rax, %rcx
addq $0x3c8, %rcx            # imm = 0x3C8
movq %rcx, 0x350(%rsp)
movq %rax, %rcx
addq $0x410, %rcx            # imm = 0x410
movq %rcx, 0x348(%rsp)
addq $0x480, %rax            # imm = 0x480
movq %rax, 0x340(%rsp)
leaq 0x2f0(%rsp), %rdi
callq 0x21da0
movq 0x1e0(%rsp), %rdi
callq 0x76f80
jmp 0x3ec14
movq 0x360(%rsp), %rdi
movl 0x37c(%rsp), %eax
movl %eax, %esi
callq 0xfc50
movl $0x1, (%rax)
movq 0x358(%rsp), %rdi
movl 0x37c(%rsp), %eax
movl %eax, %esi
callq 0xfc50
movl $0x0, (%rax)
movq 0x340(%rsp), %rdi
leaq 0x37c(%rsp), %rsi
callq 0x105b0
jmp 0x3ec63
jmp 0x3ec65
movq 0x340(%rsp), %rdi
callq 0x105e0
movb %al, 0x1d7(%rsp)
jmp 0x3ec7b
movb 0x1d7(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x3ec8d
jmp 0x3ef00
movq 0x340(%rsp), %rdi
callq 0x10600
movq %rax, 0x1c8(%rsp)
jmp 0x3eca4
movq 0x1c8(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x2e0(%rsp)
movq 0x340(%rsp), %rdi
callq 0x10610
jmp 0x3ecc4
leaq 0x2f0(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0x21d50
jmp 0x3ecdb
movl $0x0, 0x2dc(%rsp)
movq 0x1d8(%rsp), %rdi
movslq 0x2dc(%rsp), %rax
movq %rax, 0x1c0(%rsp)
addq $0x2d8, %rdi            # imm = 0x2D8
movl 0x2e0(%rsp), %eax
movl %eax, %esi
callq 0x100e0
movq %rax, %rdi
callq 0xfd50
movq %rax, %rcx
movq 0x1c0(%rsp), %rax
cmpq %rcx, %rax
jae 0x3eefb
movq 0x1d8(%rsp), %rdi
addq $0x2d8, %rdi            # imm = 0x2D8
movl 0x2e0(%rsp), %eax
movl %eax, %esi
callq 0x100e0
movq %rax, %rdi
movslq 0x2dc(%rsp), %rsi
callq 0xfbc0
movl (%rax), %eax
movl %eax, 0x2d8(%rsp)
movq 0x358(%rsp), %rdi
movl 0x2d8(%rsp), %eax
movl %eax, %esi
callq 0xfc50
cmpl $0x0, (%rax)
jge 0x3ee04
movq 0x340(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
callq 0x105b0
jmp 0x3ed9b
movq 0x358(%rsp), %rdi
movl 0x2e0(%rsp), %eax
movl %eax, %esi
callq 0xfc50
movl (%rax), %eax
addl $0x1, %eax
movl %eax, 0x1bc(%rsp)
movq 0x358(%rsp), %rdi
movl 0x2d8(%rsp), %eax
movl %eax, %esi
callq 0xfc50
movl 0x1bc(%rsp), %ecx
movl %ecx, (%rax)
jmp 0x3ee04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
leaq 0x2f0(%rsp), %rdi
callq 0x21e40
jmp 0x3f961
movq 0x358(%rsp), %rdi
movl 0x2d8(%rsp), %eax
movl %eax, %esi
callq 0xfc50
movl (%rax), %eax
movl %eax, 0x1b8(%rsp)
movq 0x358(%rsp), %rdi
movl 0x2e0(%rsp), %eax
movl %eax, %esi
callq 0xfc50
movq %rax, %rcx
movl 0x1b8(%rsp), %eax
movl (%rcx), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jne 0x3eee3
movq 0x360(%rsp), %rdi
movl 0x2d8(%rsp), %eax
movl %eax, %esi
callq 0xfc50
movl (%rax), %eax
movl %eax, 0x1b0(%rsp)
movq 0x360(%rsp), %rdi
movl 0x2e0(%rsp), %eax
movl %eax, %esi
callq 0xfc50
movq %rax, %rcx
movl 0x1b0(%rsp), %eax
movl (%rcx), %ecx
addl %ecx, %eax
movl %eax, 0x1b4(%rsp)
movq 0x360(%rsp), %rdi
movl 0x2d8(%rsp), %eax
movl %eax, %esi
callq 0xfc50
movl 0x1b4(%rsp), %ecx
movl %ecx, (%rax)
movq 0x368(%rsp), %rdi
movl 0x2d8(%rsp), %eax
movl %eax, %esi
callq 0x100e0
movq %rax, %rdi
leaq 0x2e0(%rsp), %rsi
callq 0xfce0
jmp 0x3eee1
jmp 0x3eee3
jmp 0x3eee5
movl 0x2dc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2dc(%rsp)
jmp 0x3ece6
jmp 0x3ec65
jmp 0x3ef02
leaq 0x2f0(%rsp), %rdi
callq 0x21ee0
movb %al, 0x1af(%rsp)
jmp 0x3ef18
movb 0x1af(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x3ef2a
jmp 0x3f94c
leaq 0x2f0(%rsp), %rdi
callq 0x21f00
movq %rax, 0x1a0(%rsp)
jmp 0x3ef41
movq 0x1a0(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x2d4(%rsp)
leaq 0x2f0(%rsp), %rdi
callq 0x21f10
jmp 0x3ef61
movq 0x1d8(%rsp), %rdi
leaq 0x37c(%rsp), %rsi
callq 0x10650
movq %rdx, 0x190(%rsp)
movq %rax, 0x198(%rsp)
jmp 0x3ef88
movq 0x1d8(%rsp), %rdi
movq 0x190(%rsp), %rax
movq 0x198(%rsp), %rcx
movq %rcx, 0x2c0(%rsp)
movq %rax, 0x2c8(%rsp)
callq 0x10710
movq %rdx, 0x180(%rsp)
movq %rax, 0x188(%rsp)
jmp 0x3efc7
movq 0x180(%rsp), %rax
movq 0x188(%rsp), %rcx
movq %rcx, 0x2b0(%rsp)
movq %rax, 0x2b8(%rsp)
leaq 0x2c0(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
callq 0x10630
movb %al, 0x17f(%rsp)
jmp 0x3f005
movb 0x17f(%rsp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x17e(%rsp)
jne 0x3f01f
jmp 0x3f0f2
movq 0x1d8(%rsp), %rdi
leaq 0x2d4(%rsp), %rsi
callq 0x10650
movq %rdx, 0x168(%rsp)
movq %rax, 0x170(%rsp)
jmp 0x3f046
movq 0x1d8(%rsp), %rdi
movq 0x168(%rsp), %rax
movq 0x170(%rsp), %rcx
movq %rcx, 0x2a0(%rsp)
movq %rax, 0x2a8(%rsp)
callq 0x10710
movq %rdx, 0x158(%rsp)
movq %rax, 0x160(%rsp)
jmp 0x3f085
movq 0x158(%rsp), %rax
movq 0x160(%rsp), %rcx
movq %rcx, 0x290(%rsp)
movq %rax, 0x298(%rsp)
leaq 0x2a0(%rsp), %rdi
leaq 0x290(%rsp), %rsi
callq 0x10630
movb %al, 0x157(%rsp)
jmp 0x3f0c3
movb 0x157(%rsp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x17e(%rsp)
jne 0x3f0da
jmp 0x3f0f2
movl 0x37c(%rsp), %eax
cmpl 0x2d4(%rsp), %eax
setne %al
movb %al, 0x17e(%rsp)
movb 0x17e(%rsp), %al
testb $0x1, %al
jne 0x3f102
jmp 0x3f334
movq 0x1d8(%rsp), %rdi
leaq 0x37c(%rsp), %rsi
callq 0x107b0
movq %rax, 0x148(%rsp)
jmp 0x3f121
movq 0x148(%rsp), %rdi
callq 0x109f0
movq 0x1d8(%rsp), %rdi
movq %rax, 0x280(%rsp)
leaq 0x37c(%rsp), %rsi
callq 0x107b0
movq %rax, 0x140(%rsp)
jmp 0x3f155
movq 0x140(%rsp), %rdi
callq 0x10a20
movq %rax, 0x278(%rsp)
movq 0x280(%rsp), %rdi
movq 0x278(%rsp), %rsi
xorl %edx, %edx
callq 0x10750
movl %eax, 0x13c(%rsp)
jmp 0x3f18a
movq 0x1d8(%rsp), %rdi
movl 0x13c(%rsp), %eax
movl %eax, 0x28c(%rsp)
leaq 0x2d4(%rsp), %rsi
callq 0x107b0
movq %rax, 0x130(%rsp)
jmp 0x3f1b7
movq 0x130(%rsp), %rdi
callq 0x109f0
movq 0x1d8(%rsp), %rdi
movq %rax, 0x270(%rsp)
leaq 0x2d4(%rsp), %rsi
callq 0x107b0
movq %rax, 0x128(%rsp)
jmp 0x3f1eb
movq 0x128(%rsp), %rdi
callq 0x10a20
movq %rax, 0x268(%rsp)
movq 0x270(%rsp), %rdi
movq 0x268(%rsp), %rsi
xorl %edx, %edx
callq 0x10750
movl %eax, 0x124(%rsp)
jmp 0x3f220
movl 0x124(%rsp), %eax
movl %eax, 0x288(%rsp)
movl 0x28c(%rsp), %eax
movl 0x288(%rsp), %ecx
imull %ecx, %eax
movl %eax, 0x264(%rsp)
movq 0x348(%rsp), %rdi
movl 0x2d4(%rsp), %eax
movl %eax, %esi
callq 0xfa30
movsd (%rax), %xmm0
cvtsi2sdl 0x264(%rsp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, 0x110(%rsp)
movq 0x348(%rsp), %rdi
movl 0x2d4(%rsp), %eax
movl %eax, %esi
callq 0xfa30
movsd 0x110(%rsp), %xmm0
movq 0x1d8(%rsp), %rdi
movsd %xmm0, (%rax)
addq $0x320, %rdi            # imm = 0x320
movl 0x2d4(%rsp), %eax
movl %eax, %esi
callq 0xfbc0
movl (%rax), %eax
movl %eax, 0x260(%rsp)
movq 0x370(%rsp), %rdi
leaq 0x260(%rsp), %rsi
callq 0x2d310
movq %rax, 0x118(%rsp)
jmp 0x3f2de
movq 0x118(%rsp), %rax
movsd (%rax), %xmm0
cvtsi2sdl 0x264(%rsp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, 0x100(%rsp)
movq 0x370(%rsp), %rdi
leaq 0x260(%rsp), %rsi
callq 0x2d310
movq %rax, 0x108(%rsp)
jmp 0x3f31f
movq 0x108(%rsp), %rax
movsd 0x100(%rsp), %xmm0
movsd %xmm0, (%rax)
movl $0x0, 0x25c(%rsp)
movslq 0x25c(%rsp), %rax
movq %rax, 0xf8(%rsp)
movq 0x368(%rsp), %rdi
movl 0x2d4(%rsp), %eax
movl %eax, %esi
callq 0x100e0
movq %rax, %rdi
callq 0xfd50
movq %rax, %rcx
movq 0xf8(%rsp), %rax
cmpq %rcx, %rax
jae 0x3f6be
movq 0x368(%rsp), %rdi
movl 0x2d4(%rsp), %eax
movl %eax, %esi
callq 0x100e0
movq %rax, %rdi
movslq 0x25c(%rsp), %rsi
callq 0xfbc0
movl (%rax), %eax
movl %eax, 0x258(%rsp)
movq 0x360(%rsp), %rdi
movl 0x258(%rsp), %eax
movl %eax, %esi
callq 0xfc50
cvtsi2sdl (%rax), %xmm0
movsd %xmm0, 0xc8(%rsp)
movq 0x360(%rsp), %rdi
movl 0x2d4(%rsp), %eax
movl %eax, %esi
callq 0xfc50
movsd 0xc8(%rsp), %xmm0
cvtsi2sdl (%rax), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x250(%rsp)
movq 0x350(%rsp), %rdi
movl 0x258(%rsp), %eax
movl %eax, %esi
callq 0xfa30
movsd (%rax), %xmm0
movsd %xmm0, 0xd8(%rsp)
movsd 0x250(%rsp), %xmm0
movsd %xmm0, 0xd0(%rsp)
movq 0x350(%rsp), %rdi
movl 0x2d4(%rsp), %eax
movl %eax, %esi
callq 0xfa30
movsd 0xd0(%rsp), %xmm0
movsd 0xd8(%rsp), %xmm1
movsd (%rax), %xmm2
movsd 0x3bba4(%rip), %xmm3    # 0x7b010
addsd %xmm3, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0xe0(%rsp)
movq 0x350(%rsp), %rdi
movl 0x258(%rsp), %eax
movl %eax, %esi
callq 0xfa30
movsd 0xe0(%rsp), %xmm0
movq 0x1d8(%rsp), %rdi
movsd %xmm0, (%rax)
leaq 0x37c(%rsp), %rsi
callq 0x10650
movq %rdx, 0xe8(%rsp)
movq %rax, 0xf0(%rsp)
jmp 0x3f4cb
movq 0x1d8(%rsp), %rdi
movq 0xe8(%rsp), %rax
movq 0xf0(%rsp), %rcx
movq %rcx, 0x240(%rsp)
movq %rax, 0x248(%rsp)
callq 0x10710
movq %rdx, 0xb8(%rsp)
movq %rax, 0xc0(%rsp)
jmp 0x3f50a
movq 0xb8(%rsp), %rax
movq 0xc0(%rsp), %rcx
movq %rcx, 0x230(%rsp)
movq %rax, 0x238(%rsp)
leaq 0x240(%rsp), %rdi
leaq 0x230(%rsp), %rsi
callq 0x10630
movb %al, 0xb7(%rsp)
jmp 0x3f548
movb 0xb7(%rsp), %al
testb $0x1, %al
jne 0x3f558
jmp 0x3f6a6
movq 0x348(%rsp), %rdi
movl 0x258(%rsp), %eax
movl %eax, %esi
callq 0xfa30
movsd (%rax), %xmm0
movsd %xmm0, 0x98(%rsp)
movq 0x348(%rsp), %rdi
movl 0x2d4(%rsp), %eax
movl %eax, %esi
callq 0xfa30
movsd 0x98(%rsp), %xmm1
movsd (%rax), %xmm0
movsd 0x250(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0xa0(%rsp)
movq 0x348(%rsp), %rdi
movl 0x258(%rsp), %eax
movl %eax, %esi
callq 0xfa30
movsd 0xa0(%rsp), %xmm0
movq 0x1d8(%rsp), %rdi
movsd %xmm0, (%rax)
addq $0x320, %rdi            # imm = 0x320
movl 0x258(%rsp), %eax
movl %eax, %esi
callq 0xfbc0
movl (%rax), %eax
movl %eax, 0x22c(%rsp)
movq 0x370(%rsp), %rdi
leaq 0x22c(%rsp), %rsi
callq 0x2d310
movq %rax, 0xa8(%rsp)
jmp 0x3f620
movq 0xa8(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x80(%rsp)
movq 0x348(%rsp), %rdi
movl 0x2d4(%rsp), %eax
movl %eax, %esi
callq 0xfa30
movsd 0x80(%rsp), %xmm1
movsd (%rax), %xmm0
movsd 0x250(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x88(%rsp)
movq 0x370(%rsp), %rdi
leaq 0x22c(%rsp), %rsi
callq 0x2d310
movq %rax, 0x90(%rsp)
jmp 0x3f691
movq 0x90(%rsp), %rax
movsd 0x88(%rsp), %xmm0
movsd %xmm0, (%rax)
jmp 0x3f6a8
movl 0x25c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x25c(%rsp)
jmp 0x3f33f
movl 0x37c(%rsp), %eax
cmpl 0x2d4(%rsp), %eax
je 0x3f778
movq 0x1d8(%rsp), %rdi
addq $0x320, %rdi            # imm = 0x320
movl 0x2d4(%rsp), %eax
movl %eax, %esi
callq 0xfbc0
movl (%rax), %eax
movl %eax, 0x228(%rsp)
movq 0x370(%rsp), %rdi
leaq 0x228(%rsp), %rsi
callq 0x2d310
movq %rax, 0x78(%rsp)
jmp 0x3f714
movq 0x78(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x60(%rsp)
movq 0x350(%rsp), %rdi
movl 0x2d4(%rsp), %eax
movl %eax, %esi
callq 0xfa30
movsd 0x60(%rsp), %xmm0
movsd (%rax), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, 0x68(%rsp)
movq 0x370(%rsp), %rdi
leaq 0x228(%rsp), %rsi
callq 0x2d310
movq %rax, 0x70(%rsp)
jmp 0x3f769
movq 0x70(%rsp), %rax
movsd 0x68(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0x1d8(%rsp), %rdi
leaq 0x37c(%rsp), %rsi
callq 0x10650
movq %rdx, 0x50(%rsp)
movq %rax, 0x58(%rsp)
jmp 0x3f799
movq 0x1d8(%rsp), %rdi
movq 0x50(%rsp), %rax
movq 0x58(%rsp), %rcx
movq %rcx, 0x218(%rsp)
movq %rax, 0x220(%rsp)
callq 0x10710
movq %rdx, 0x40(%rsp)
movq %rax, 0x48(%rsp)
jmp 0x3f7cc
movq 0x40(%rsp), %rax
movq 0x48(%rsp), %rcx
movq %rcx, 0x208(%rsp)
movq %rax, 0x210(%rsp)
leaq 0x218(%rsp), %rdi
leaq 0x208(%rsp), %rsi
callq 0x10630
movb %al, 0x3f(%rsp)
jmp 0x3f801
movb 0x3f(%rsp), %al
testb $0x1, %al
jne 0x3f80e
jmp 0x3f947
movq 0x1d8(%rsp), %rdi
leaq 0x37c(%rsp), %rsi
callq 0x107b0
movq %rax, 0x30(%rsp)
jmp 0x3f82a
movq 0x30(%rsp), %rdi
callq 0x109f0
movq 0x1d8(%rsp), %rdi
movq %rax, 0x1f8(%rsp)
leaq 0x37c(%rsp), %rsi
callq 0x107b0
movq %rax, 0x28(%rsp)
jmp 0x3f858
movq 0x28(%rsp), %rdi
callq 0x10a20
movq %rax, 0x1f0(%rsp)
movq 0x1f8(%rsp), %rdi
movq 0x1f0(%rsp), %rsi
xorl %edx, %edx
callq 0x10750
movl %eax, 0x24(%rsp)
jmp 0x3f887
movq 0x1d8(%rsp), %rdi
movl 0x24(%rsp), %eax
movl %eax, 0x204(%rsp)
addq $0x320, %rdi            # imm = 0x320
movl 0x2d4(%rsp), %eax
movl %eax, %esi
callq 0xfbc0
movl (%rax), %eax
movl %eax, 0x1ec(%rsp)
movq 0x370(%rsp), %rdi
leaq 0x1ec(%rsp), %rsi
callq 0x2d310
movq %rax, 0x18(%rsp)
jmp 0x3f8d4
movq 0x18(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
movq 0x350(%rsp), %rdi
movl 0x2d4(%rsp), %eax
movl %eax, %esi
callq 0xfa30
movsd (%rsp), %xmm1
movsd (%rax), %xmm0
cvtsi2sdl 0x204(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x370(%rsp), %rdi
leaq 0x1ec(%rsp), %rsi
callq 0x2d310
movq %rax, 0x10(%rsp)
jmp 0x3f938
movq 0x10(%rsp), %rax
movsd 0x8(%rsp), %xmm0
movsd %xmm0, (%rax)
jmp 0x3ef02
leaq 0x2f0(%rsp), %rdi
callq 0x21e40
addq $0x388, %rsp            # imm = 0x388
retq
movq 0x2e8(%rsp), %rdi
callq 0x9cf0
nop