// File: fjamour[P]icentral/src/experiments.cc
// Function: speedup_info_lbcc(graph_t&, int)
void speedup_info_lbcc(graph_t& graph, int num_edges_to_insert)
{
    printf("==========================================================\n");
    printf("Graph: \t\t\t%s\n", graph.graph_name.c_str());
    printf("Graph # nodes: \t\t%d\n", graph.size());
    printf("Graph # edges: \t\t%d\n", graph.edge_set.size());
//    graph_hash_t g;
//    g.fill_graph(graph);
    vector<graph_hash_t> bcc_vec;
    graph.find_bicon_comp(bcc_vec);
    
    //find the bcc with the largest number of nodes
    int lbcc_i = 0;
    int lbcc_s = bcc_vec[0].size() + bcc_vec[0].edge_set.size();
    if(bcc_vec.size() > 1) {
        for(int i = 1; i < bcc_vec.size(); ++i) {
            if(bcc_vec[i].size() + bcc_vec[i].edge_set.size() > lbcc_s) {
                lbcc_s = bcc_vec[i].size() + bcc_vec[i].edge_set.size();
                lbcc_i = i;
            }
        }
    }
    
    int G_s = graph.size() + graph.edge_set.size();
    printf("\n");
    printf("LBCC # nodes:\t\t%d\n", bcc_vec[lbcc_i].size());
    printf("LBCC # edges:\t\t%d\n", bcc_vec[lbcc_i].edge_set.size());
    printf("\n");
    printf("LBCC size fraction:\t%f\n", (double)lbcc_s/G_s);
    printf("LBCC node fraction:\t%f\n", (double)bcc_vec[lbcc_i].size()/graph.size());
    printf("\n");
    
    vector<edge_t> rand_edge_vec;
    printf("Generating edges...\n");
    for(int i = 0; i < num_edges_to_insert; ++i) {
        edge_t rand_edge;
        node_id_t src, dst;
        do {
            src = rand()%graph.size();
            dst = rand()%graph.size();
            rand_edge.first    = src;
            rand_edge.second   = dst;
        } while(!bcc_vec[lbcc_i].has_edge(rand_edge.first, rand_edge.second) ||
                find(rand_edge_vec.begin(), rand_edge_vec.end(), rand_edge) != rand_edge_vec.end());
        rand_edge_vec.push_back(rand_edge);
    }
    
    printf("\n");
    vector<int> d0_vec, d1_vec, d2_vec;
    vector<double> d0_frac_vec;
    for(int i = 0; i < rand_edge_vec.size(); ++i) {
        node_id_t src, dst;
        src = rand_edge_vec[i].first;
        dst = rand_edge_vec[i].second;
        int d0, d1, d2;
        bcc_vec[lbcc_i].find_pruning_counts_exp(src, dst, d0, d1, d2);
        d0_vec.push_back(d0);
        d1_vec.push_back(d1);
        d2_vec.push_back(d2);
        d0_frac_vec.push_back((double)d0/bcc_vec[lbcc_i].size());
        
        printf("d0:[%*d][%f]   d1:[%*d]    d2:[%*d] -- Edge(%d, %d)\n",
                8,
                d0, (double)d0/bcc_vec[lbcc_i].size(),
                8,
                d1,
                8,
                d2,
                rand_edge_vec[i].first,
                rand_edge_vec[i].second);
    }
    printf("\n");
    
    double min, max, median;
    double mean, stddev;
    simple_stats(d0_frac_vec, mean, stddev, median, min, max);
    printf("\n");
    printf("Mean[%f] Stddev[%f] Median[%f] Min[%f] Max[%f]\n",
        mean, stddev, median, min, max);
    
    
    int lbcc_n                 = bcc_vec[lbcc_i].size();
    int G_n                    = graph.size();
    double iter_frac_median    = 1.0 - median;
    double iter_frac_mean      = 1.0 - mean;
    double iter_frac_min       = 1.0 - min;
    double iter_frac_max       = 1.0 - max;
    double iter_frac_stddev    = 1.0 - stddev;
    
    
    double est_median_speedup = 1.0/(((double)lbcc_n/G_n) * iter_frac_median * ((double)lbcc_s/G_s));
    double est_mean_speedup   = 1.0/(((double)lbcc_n/G_n) * iter_frac_mean * ((double)lbcc_s/G_s));
    double est_min_speedup    = 1.0/(((double)lbcc_n/G_n) * iter_frac_min * ((double)lbcc_s/G_s));
    double est_max_speedup    = 1.0/(((double)lbcc_n/G_n) * iter_frac_max * ((double)lbcc_s/G_s));
    double est_stddev_speedup = 1.0/(((double)lbcc_n/G_n) * iter_frac_stddev * ((double)lbcc_s/G_s));
    
    //estimate of the time it takes to do my long delta iteration
    //to the time it takes the normal iteration
    double long_iter_perc;
    long_iter_perc = 120.0;
    printf("\n");
    printf("Estimate ideal speedups: (delta iter to orig iter [%f])\n",
        long_iter_perc);
    printf("Mean[%f] Stddev[%f] Median[%f] Min[%f] Max[%f]\n",
        est_mean_speedup * (100/long_iter_perc),
        est_stddev_speedup * (100/long_iter_perc),
        est_median_speedup * (100/long_iter_perc),
        est_min_speedup * (100/long_iter_perc),
        est_max_speedup * (100/long_iter_perc));
    
    long_iter_perc = 100.0;
    printf("Estimate ideal speedups: (delta iter to orig iter [%f])\n",
        long_iter_perc);
    printf("Mean[%f] Stddev[%f] Median[%f] Min[%f] Max[%f]\n",
        est_mean_speedup * (100/long_iter_perc),
        est_stddev_speedup * (100/long_iter_perc),
        est_median_speedup * (100/long_iter_perc),
        est_min_speedup * (100/long_iter_perc),
        est_max_speedup * (100/long_iter_perc));
    
}

// Assembly:
subq $0x2c8, %rsp            # imm = 0x2C8
movq %rdi, 0x2c0(%rsp)
movl %esi, 0x2bc(%rsp)
leaq 0x2fd63(%rip), %rdi     # 0x7b2e0
xorl %eax, %eax
movb %al, 0x107(%rsp)
callq 0x9040
movq 0x2c0(%rsp), %rdi
addq $0x108, %rdi            # imm = 0x108
callq 0x9250
movq %rax, %rsi
movb 0x107(%rsp), %al
leaq 0x2fd6c(%rip), %rdi     # 0x7b31c
callq 0x9040
movq 0x2c0(%rsp), %rdi
callq 0x56b40
movq %rax, %rsi
movb 0x107(%rsp), %al
leaq 0x2fd57(%rip), %rdi     # 0x7b32a
callq 0x9040
movq 0x2c0(%rsp), %rdi
addq $0x30, %rdi
callq 0x4dbe0
movq %rax, %rsi
movb 0x107(%rsp), %al
leaq 0x2fd45(%rip), %rdi     # 0x7b33f
callq 0x9040
leaq 0x2a0(%rsp), %rdi
movq %rdi, 0x108(%rsp)
callq 0x42080
movq 0x108(%rsp), %rsi
movq 0x2c0(%rsp), %rdi
callq 0x40080
jmp 0x4b62b
movl $0x0, 0x290(%rsp)
xorl %eax, %eax
movl %eax, %esi
leaq 0x2a0(%rsp), %rdi
callq 0x420b0
movq %rax, %rdi
callq 0x52790
movq %rax, 0xf8(%rsp)
jmp 0x4b659
leaq 0x2a0(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x420b0
movq %rax, %rdi
addq $0x30, %rdi
callq 0x4dbe0
movq %rax, %rcx
movq 0xf8(%rsp), %rax
addq %rcx, %rax
movl %eax, 0x28c(%rsp)
leaq 0x2a0(%rsp), %rdi
callq 0x42090
cmpq $0x1, %rax
jbe 0x4b7e5
movl $0x1, 0x288(%rsp)
movslq 0x288(%rsp), %rax
movq %rax, 0xf0(%rsp)
leaq 0x2a0(%rsp), %rdi
callq 0x42090
movq %rax, %rcx
movq 0xf0(%rsp), %rax
cmpq %rcx, %rax
jae 0x4b7e3
movslq 0x288(%rsp), %rsi
leaq 0x2a0(%rsp), %rdi
callq 0x420b0
movq %rax, %rdi
callq 0x52790
movq %rax, 0xe8(%rsp)
jmp 0x4b705
movslq 0x288(%rsp), %rsi
leaq 0x2a0(%rsp), %rdi
callq 0x420b0
movq %rax, %rdi
addq $0x30, %rdi
callq 0x4dbe0
movq %rax, %rcx
movq 0xe8(%rsp), %rax
addq %rcx, %rax
movslq 0x28c(%rsp), %rcx
cmpq %rcx, %rax
jbe 0x4b7cb
movslq 0x288(%rsp), %rsi
leaq 0x2a0(%rsp), %rdi
callq 0x420b0
movq %rax, %rdi
callq 0x52790
movq %rax, 0xe0(%rsp)
jmp 0x4b76c
movslq 0x288(%rsp), %rsi
leaq 0x2a0(%rsp), %rdi
callq 0x420b0
movq %rax, %rdi
addq $0x30, %rdi
callq 0x4dbe0
movq %rax, %rcx
movq 0xe0(%rsp), %rax
addq %rcx, %rax
movl %eax, 0x28c(%rsp)
movl 0x288(%rsp), %eax
movl %eax, 0x290(%rsp)
jmp 0x4b7cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x298(%rsp)
movl %eax, 0x294(%rsp)
jmp 0x4c3d2
jmp 0x4b7cd
movl 0x288(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x288(%rsp)
jmp 0x4b6ad
jmp 0x4b7e5
movq 0x2c0(%rsp), %rdi
callq 0x56b40
movq %rax, 0xd8(%rsp)
jmp 0x4b7fc
movq 0x2c0(%rsp), %rdi
addq $0x30, %rdi
callq 0x4dbe0
movq %rax, %rcx
movq 0xd8(%rsp), %rax
addl %ecx, %eax
movl %eax, 0x284(%rsp)
leaq 0x305fa(%rip), %rdi     # 0x7be22
xorl %eax, %eax
callq 0x9040
jmp 0x4b831
movslq 0x290(%rsp), %rsi
leaq 0x2a0(%rsp), %rdi
callq 0x420b0
movq %rax, %rdi
callq 0x52790
movq %rax, 0xd0(%rsp)
jmp 0x4b858
movq 0xd0(%rsp), %rsi
leaq 0x3036c(%rip), %rdi     # 0x7bbd3
xorl %eax, %eax
callq 0x9040
jmp 0x4b870
movslq 0x290(%rsp), %rsi
leaq 0x2a0(%rsp), %rdi
callq 0x420b0
movq %rax, %rdi
addq $0x30, %rdi
callq 0x4dbe0
movq %rax, %rsi
leaq 0x3034c(%rip), %rdi     # 0x7bbe7
xorl %eax, %eax
callq 0x9040
jmp 0x4b8a4
leaq 0x30577(%rip), %rdi     # 0x7be22
xorl %eax, %eax
callq 0x9040
jmp 0x4b8b4
cvtsi2sdl 0x28c(%rsp), %xmm0
cvtsi2sdl 0x284(%rsp), %xmm1
divsd %xmm1, %xmm0
leaq 0x300ea(%rip), %rdi     # 0x7b9bb
movb $0x1, %al
callq 0x9040
jmp 0x4b8da
movslq 0x290(%rsp), %rsi
leaq 0x2a0(%rsp), %rdi
callq 0x420b0
movq %rax, %rdi
callq 0x52790
movq %rax, 0xc8(%rsp)
jmp 0x4b901
movq 0xc8(%rsp), %rax
movq %rax, %xmm0
movaps 0x2f99b(%rip), %xmm1    # 0x7b2b0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x2f99f(%rip), %xmm1    # 0x7b2c0
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd %xmm0, 0xb8(%rsp)
movq 0x2c0(%rsp), %rdi
callq 0x56b40
movq %rax, 0xc0(%rsp)
jmp 0x4b950
movsd 0xb8(%rsp), %xmm0
movq 0xc0(%rsp), %rax
movq %rax, %xmm1
movaps 0x2f943(%rip), %xmm2    # 0x7b2b0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x2f947(%rip), %xmm2    # 0x7b2c0
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
leaq 0x30040(%rip), %rdi     # 0x7b9d3
movb $0x1, %al
callq 0x9040
jmp 0x4b99c
leaq 0x3047f(%rip), %rdi     # 0x7be22
xorl %eax, %eax
callq 0x9040
jmp 0x4b9ac
leaq 0x268(%rsp), %rdi
callq 0x4db80
leaq 0x2fa96(%rip), %rdi     # 0x7b456
xorl %eax, %eax
callq 0x9040
jmp 0x4b9c9
movl $0x0, 0x264(%rsp)
movl 0x264(%rsp), %eax
cmpl 0x2bc(%rsp), %eax
jge 0x4bbdc
leaq 0x25c(%rsp), %rdi
callq 0x41760
jmp 0x4b9f7
jmp 0x4b9f9
callq 0x91a0
cltq
movq %rax, 0xa8(%rsp)
movq 0x2c0(%rsp), %rdi
callq 0x56b40
movq %rax, 0xb0(%rsp)
jmp 0x4ba1f
movq 0xb0(%rsp), %rcx
movq 0xa8(%rsp), %rax
xorl %edx, %edx
divq %rcx
movl %edx, %eax
movl %eax, 0x258(%rsp)
callq 0x91a0
cltq
movq %rax, 0x98(%rsp)
movq 0x2c0(%rsp), %rdi
callq 0x56b40
movq %rax, 0xa0(%rsp)
jmp 0x4ba63
movq 0xa0(%rsp), %rcx
movq 0x98(%rsp), %rax
xorl %edx, %edx
divq %rcx
movl %edx, %eax
movl %eax, 0x254(%rsp)
movl 0x258(%rsp), %eax
movl %eax, 0x25c(%rsp)
movl 0x254(%rsp), %eax
movl %eax, 0x260(%rsp)
movslq 0x290(%rsp), %rsi
leaq 0x2a0(%rsp), %rdi
callq 0x420b0
movq %rax, %rdi
movl 0x25c(%rsp), %esi
movl 0x260(%rsp), %edx
callq 0x52960
movb %al, 0x97(%rsp)
jmp 0x4bad1
movb 0x97(%rsp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x96(%rsp)
jne 0x4baeb
jmp 0x4bb85
leaq 0x268(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x47550
movq 0x80(%rsp), %rdi
movq %rax, 0x240(%rsp)
callq 0x473d0
movq %rax, 0x238(%rsp)
movq 0x240(%rsp), %rdi
movq 0x238(%rsp), %rsi
leaq 0x25c(%rsp), %rdx
callq 0x4db20
movq %rax, 0x88(%rsp)
jmp 0x4bb44
movq 0x88(%rsp), %rax
movq %rax, 0x248(%rsp)
leaq 0x268(%rsp), %rdi
callq 0x473d0
movq %rax, 0x230(%rsp)
leaq 0x248(%rsp), %rdi
leaq 0x230(%rsp), %rsi
callq 0x4dae0
movb %al, 0x96(%rsp)
movb 0x96(%rsp), %al
testb $0x1, %al
jne 0x4b9f9
leaq 0x268(%rsp), %rdi
leaq 0x25c(%rsp), %rsi
callq 0x42130
jmp 0x4bbab
jmp 0x4bbad
movl 0x264(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x264(%rsp)
jmp 0x4b9d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x298(%rsp)
movl %eax, 0x294(%rsp)
jmp 0x4c3c5
leaq 0x3023f(%rip), %rdi     # 0x7be22
xorl %eax, %eax
callq 0x9040
jmp 0x4bbec
leaq 0x218(%rsp), %rdi
callq 0xfc40
leaq 0x200(%rsp), %rdi
callq 0xfc40
leaq 0x1e8(%rsp), %rdi
callq 0xfc40
leaq 0x1d0(%rsp), %rdi
callq 0xfa00
movl $0x0, 0x1cc(%rsp)
movslq 0x1cc(%rsp), %rax
movq %rax, 0x78(%rsp)
leaq 0x268(%rsp), %rdi
callq 0x47680
movq %rax, %rcx
movq 0x78(%rsp), %rax
cmpq %rcx, %rax
jae 0x4bed7
movslq 0x1cc(%rsp), %rsi
leaq 0x268(%rsp), %rdi
movq %rdi, 0x70(%rsp)
callq 0x4dbc0
movq 0x70(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x1c8(%rsp)
movslq 0x1cc(%rsp), %rsi
callq 0x4dbc0
movl 0x4(%rax), %eax
movl %eax, 0x1c4(%rsp)
movslq 0x290(%rsp), %rsi
leaq 0x2a0(%rsp), %rdi
callq 0x420b0
movq %rax, %rdi
movl 0x1c8(%rsp), %esi
movl 0x1c4(%rsp), %edx
leaq 0x1c0(%rsp), %rcx
leaq 0x1bc(%rsp), %r8
leaq 0x1b8(%rsp), %r9
callq 0x53700
jmp 0x4bcda
leaq 0x218(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
callq 0x3ae40
jmp 0x4bcf1
leaq 0x200(%rsp), %rdi
leaq 0x1bc(%rsp), %rsi
callq 0x3ae40
jmp 0x4bd08
leaq 0x1e8(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x3ae40
jmp 0x4bd1f
cvtsi2sdl 0x1c0(%rsp), %xmm0
movsd %xmm0, 0x60(%rsp)
movslq 0x290(%rsp), %rsi
leaq 0x2a0(%rsp), %rdi
callq 0x420b0
movq %rax, %rdi
callq 0x52790
movq %rax, 0x68(%rsp)
jmp 0x4bd52
movsd 0x60(%rsp), %xmm0
movq 0x68(%rsp), %rax
movq %rax, %xmm1
movaps 0x2f547(%rip), %xmm2    # 0x7b2b0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x2f54b(%rip), %xmm2    # 0x7b2c0
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x1b0(%rsp)
leaq 0x1d0(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
callq 0x4e170
jmp 0x4bda8
movl 0x1c0(%rsp), %eax
movl %eax, 0x4c(%rsp)
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x50(%rsp)
movslq 0x290(%rsp), %rsi
leaq 0x2a0(%rsp), %rdi
callq 0x420b0
movq %rax, %rdi
callq 0x52790
movq %rax, 0x58(%rsp)
jmp 0x4bde1
movsd 0x50(%rsp), %xmm0
movq 0x58(%rsp), %rax
movq %rax, %xmm1
movaps 0x2f4b8(%rip), %xmm2    # 0x7b2b0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x2f4bc(%rip), %xmm2    # 0x7b2c0
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x40(%rsp)
movl 0x1bc(%rsp), %eax
movl %eax, 0x48(%rsp)
movl 0x1b8(%rsp), %eax
movl %eax, 0x3c(%rsp)
movslq 0x1cc(%rsp), %rsi
leaq 0x268(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x4dbc0
movq 0x30(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x38(%rsp)
movslq 0x1cc(%rsp), %rsi
callq 0x4dbc0
movl 0x38(%rsp), %esi
movl 0x3c(%rsp), %ecx
movl 0x4c(%rsp), %edx
movsd 0x40(%rsp), %xmm0
movl 0x48(%rsp), %r8d
movl 0x4(%rax), %edi
movq %rsp, %rax
movl %edi, 0x10(%rax)
movl %esi, 0x8(%rax)
movl %ecx, (%rax)
leaq 0x2fb5a(%rip), %rdi     # 0x7b9eb
movl $0x8, %r9d
movb $0x1, %al
movl %r9d, %esi
movl %r9d, %ecx
callq 0x9040
jmp 0x4bea6
jmp 0x4bea8
movl 0x1cc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1cc(%rsp)
jmp 0x4bc2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x298(%rsp)
movl %eax, 0x294(%rsp)
jmp 0x4c391
leaq 0x2ff44(%rip), %rdi     # 0x7be22
xorl %eax, %eax
callq 0x9040
jmp 0x4bee7
leaq 0x170(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
callq 0x4de90
jmp 0x4befe
leaq 0x170(%rsp), %rdi
leaq 0x190(%rsp), %rsi
leaq 0x188(%rsp), %rdx
leaq 0x198(%rsp), %rcx
leaq 0x1a8(%rsp), %r8
leaq 0x1a0(%rsp), %r9
callq 0x78710
jmp 0x4bf35
leaq 0x170(%rsp), %rdi
callq 0xfa50
leaq 0x2fed9(%rip), %rdi     # 0x7be22
xorl %eax, %eax
callq 0x9040
jmp 0x4bf52
movsd 0x190(%rsp), %xmm0
movsd 0x188(%rsp), %xmm1
movsd 0x198(%rsp), %xmm2
movsd 0x1a8(%rsp), %xmm3
movsd 0x1a0(%rsp), %xmm4
leaq 0x2fa9a(%rip), %rdi     # 0x7ba20
movb $0x5, %al
callq 0x9040
jmp 0x4bf8f
movslq 0x290(%rsp), %rsi
leaq 0x2a0(%rsp), %rdi
callq 0x420b0
movq %rax, %rdi
callq 0x52790
movq %rax, 0x28(%rsp)
jmp 0x4bfb3
movq 0x28(%rsp), %rax
movl %eax, 0x16c(%rsp)
movq 0x2c0(%rsp), %rdi
callq 0x56b40
movq %rax, 0x20(%rsp)
jmp 0x4bfd3
movq 0x20(%rsp), %rax
movl %eax, 0x168(%rsp)
movsd 0x198(%rsp), %xmm2
movsd 0x2f020(%rip), %xmm0    # 0x7b010
movsd %xmm0, 0x18(%rsp)
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
movsd %xmm1, 0x160(%rsp)
movsd 0x190(%rsp), %xmm2
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
movsd %xmm1, 0x158(%rsp)
movsd 0x1a8(%rsp), %xmm2
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
movsd %xmm1, 0x150(%rsp)
movsd 0x1a0(%rsp), %xmm2
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
movsd %xmm1, 0x148(%rsp)
movsd 0x188(%rsp), %xmm2
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
movsd %xmm1, 0x140(%rsp)
cvtsi2sdl 0x16c(%rsp), %xmm2
cvtsi2sdl 0x168(%rsp), %xmm1
divsd %xmm1, %xmm2
movsd 0x160(%rsp), %xmm1
mulsd %xmm1, %xmm2
cvtsi2sdl 0x28c(%rsp), %xmm1
cvtsi2sdl 0x284(%rsp), %xmm3
divsd %xmm3, %xmm1
mulsd %xmm1, %xmm2
movaps %xmm0, %xmm1
divsd %xmm2, %xmm1
movsd %xmm1, 0x138(%rsp)
cvtsi2sdl 0x16c(%rsp), %xmm2
cvtsi2sdl 0x168(%rsp), %xmm1
divsd %xmm1, %xmm2
movsd 0x158(%rsp), %xmm1
mulsd %xmm1, %xmm2
cvtsi2sdl 0x28c(%rsp), %xmm1
cvtsi2sdl 0x284(%rsp), %xmm3
divsd %xmm3, %xmm1
mulsd %xmm1, %xmm2
movaps %xmm0, %xmm1
divsd %xmm2, %xmm1
movsd %xmm1, 0x130(%rsp)
cvtsi2sdl 0x16c(%rsp), %xmm2
cvtsi2sdl 0x168(%rsp), %xmm1
divsd %xmm1, %xmm2
movsd 0x150(%rsp), %xmm1
mulsd %xmm1, %xmm2
cvtsi2sdl 0x28c(%rsp), %xmm1
cvtsi2sdl 0x284(%rsp), %xmm3
divsd %xmm3, %xmm1
mulsd %xmm1, %xmm2
movaps %xmm0, %xmm1
divsd %xmm2, %xmm1
movsd %xmm1, 0x128(%rsp)
cvtsi2sdl 0x16c(%rsp), %xmm2
cvtsi2sdl 0x168(%rsp), %xmm1
divsd %xmm1, %xmm2
movsd 0x148(%rsp), %xmm1
mulsd %xmm1, %xmm2
cvtsi2sdl 0x28c(%rsp), %xmm1
cvtsi2sdl 0x284(%rsp), %xmm3
divsd %xmm3, %xmm1
mulsd %xmm1, %xmm2
movaps %xmm0, %xmm1
divsd %xmm2, %xmm1
movsd %xmm1, 0x120(%rsp)
cvtsi2sdl 0x16c(%rsp), %xmm1
cvtsi2sdl 0x168(%rsp), %xmm2
divsd %xmm2, %xmm1
movsd 0x140(%rsp), %xmm2
mulsd %xmm2, %xmm1
cvtsi2sdl 0x28c(%rsp), %xmm2
cvtsi2sdl 0x284(%rsp), %xmm3
divsd %xmm3, %xmm2
mulsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x118(%rsp)
movabsq $0x405e000000000000, %rax # imm = 0x405E000000000000
movq %rax, 0x110(%rsp)
leaq 0x2fc21(%rip), %rdi     # 0x7be22
xorl %eax, %eax
callq 0x9040
jmp 0x4c20a
movsd 0x110(%rsp), %xmm0
leaq 0x2f836(%rip), %rdi     # 0x7ba50
movb $0x1, %al
callq 0x9040
jmp 0x4c223
movsd 0x130(%rsp), %xmm0
movsd 0x110(%rsp), %xmm1
movsd 0x2f05b(%rip), %xmm5    # 0x7b298
divsd %xmm1, %xmm5
mulsd %xmm5, %xmm0
movsd 0x118(%rsp), %xmm1
mulsd %xmm5, %xmm1
movsd 0x138(%rsp), %xmm2
mulsd %xmm5, %xmm2
movsd 0x128(%rsp), %xmm3
mulsd %xmm5, %xmm3
movsd 0x120(%rsp), %xmm4
mulsd %xmm5, %xmm4
leaq 0x2f7a0(%rip), %rdi     # 0x7ba20
movb $0x5, %al
callq 0x9040
jmp 0x4c289
movabsq $0x4059000000000000, %rax # imm = 0x4059000000000000
movq %rax, 0x110(%rsp)
movsd 0x110(%rsp), %xmm0
leaq 0x2f7a5(%rip), %rdi     # 0x7ba50
movb $0x1, %al
callq 0x9040
jmp 0x4c2b4
movsd 0x130(%rsp), %xmm0
movsd 0x110(%rsp), %xmm1
movsd 0x2efca(%rip), %xmm5    # 0x7b298
divsd %xmm1, %xmm5
mulsd %xmm5, %xmm0
movsd 0x118(%rsp), %xmm1
mulsd %xmm5, %xmm1
movsd 0x138(%rsp), %xmm2
mulsd %xmm5, %xmm2
movsd 0x128(%rsp), %xmm3
mulsd %xmm5, %xmm3
movsd 0x120(%rsp), %xmm4
mulsd %xmm5, %xmm4
leaq 0x2f70f(%rip), %rdi     # 0x7ba20
movb $0x5, %al
callq 0x9040
jmp 0x4c31a
leaq 0x1d0(%rsp), %rdi
callq 0xfa50
leaq 0x1e8(%rsp), %rdi
callq 0xfc70
leaq 0x200(%rsp), %rdi
callq 0xfc70
leaq 0x218(%rsp), %rdi
callq 0xfc70
leaq 0x268(%rsp), %rdi
callq 0x4dc40
leaq 0x2a0(%rsp), %rdi
callq 0x421a0
addq $0x2c8, %rsp            # imm = 0x2C8
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x298(%rsp)
movl %eax, 0x294(%rsp)
leaq 0x170(%rsp), %rdi
callq 0xfa50
leaq 0x1d0(%rsp), %rdi
callq 0xfa50
leaq 0x1e8(%rsp), %rdi
callq 0xfc70
leaq 0x200(%rsp), %rdi
callq 0xfc70
leaq 0x218(%rsp), %rdi
callq 0xfc70
leaq 0x268(%rsp), %rdi
callq 0x4dc40
leaq 0x2a0(%rsp), %rdi
callq 0x421a0
movq 0x298(%rsp), %rdi
callq 0x9cf0
nopl (%rax)