// File: fjamour[P]icentral/src/unit_tests.h
// Function: timing__Update_BC_mem(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>, int, int, int, int)
void timing__Update_BC_mem(
            vector<string>  path_vec,       //paths of the graphs
            int             num_edges,      //number of random edges
            int             rand_seed,      //seed for srand(...)
            int             num_sources,    //
            int             algo_flag       //what algorithms to evaluate
        )
{
    vector<vector<edge_t> > edge_vec2;
    
    //generate random edges
    for(int p = 0; p < path_vec.size(); ++p) {
        string graph_path = path_vec[p];
        graph_t graph;
        graph.read_graph(graph_path);
        graph.graph_name = extract_graph_name(graph_path);
        vector<edge_t> edge_vec;
        gen_rand_edges(num_edges, graph, edge_vec);
        edge_vec2.push_back(edge_vec);
    }
    
    for(int p = 0; p < path_vec.size(); ++p) {
        string graph_path = path_vec[p];
        graph_t graph;
        graph.read_graph(graph_path);
        graph.graph_name = extract_graph_name(graph_path);
        timing__Update_BC_mem_graph(graph, edge_vec2[p], -1, 1);
    }
}

// Assembly:
subq $0x3e8, %rsp            # imm = 0x3E8
movq %rdi, 0x28(%rsp)
movq %rdi, 0x3e0(%rsp)
movl %esi, 0x3dc(%rsp)
movl %edx, 0x3d8(%rsp)
movl %ecx, 0x3d4(%rsp)
movl %r8d, 0x3d0(%rsp)
leaq 0x3b8(%rsp), %rdi
callq 0x5f0e0
movl $0x0, 0x3b4(%rsp)
movq 0x28(%rsp), %rdi
movslq 0x3b4(%rsp), %rax
movq %rax, 0x20(%rsp)
callq 0x5f0f0
movq %rax, %rcx
movq 0x20(%rsp), %rax
cmpq %rcx, %rax
jae 0x5b9ed
movq 0x28(%rsp), %rdi
movslq 0x3b4(%rsp), %rsi
callq 0x5f110
movq %rax, %rsi
leaq 0x390(%rsp), %rdi
callq 0x9270
jmp 0x5b7f5
leaq 0x258(%rsp), %rdi
callq 0x5eda0
jmp 0x5b804
leaq 0x238(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x9270
jmp 0x5b81b
leaq 0x258(%rsp), %rdi
leaq 0x238(%rsp), %rsi
callq 0x56b50
jmp 0x5b832
leaq 0x238(%rsp), %rdi
callq 0x9410
leaq 0x1f8(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x9270
jmp 0x5b856
leaq 0x218(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
callq 0x789e0
jmp 0x5b86d
leaq 0x360(%rsp), %rdi
leaq 0x218(%rsp), %rsi
movq %rsi, 0x10(%rsp)
callq 0x98e0
movq 0x10(%rsp), %rdi
callq 0x9410
leaq 0x1f8(%rsp), %rdi
callq 0x9410
leaq 0x1e0(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x4db80
movq 0x18(%rsp), %rdx
movl 0x3dc(%rsp), %edi
leaq 0x258(%rsp), %rsi
callq 0x47910
jmp 0x5b8cb
leaq 0x3b8(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x5f130
jmp 0x5b8e2
leaq 0x1e0(%rsp), %rdi
callq 0x4dc40
leaq 0x258(%rsp), %rdi
callq 0x5efc0
leaq 0x390(%rsp), %rdi
callq 0x9410
movl 0x3b4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x3b4(%rsp)
jmp 0x5b7a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x388(%rsp)
movl %eax, 0x384(%rsp)
jmp 0x5bbd6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x388(%rsp)
movl %eax, 0x384(%rsp)
jmp 0x5b9db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x388(%rsp)
movl %eax, 0x384(%rsp)
jmp 0x5b9ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x388(%rsp)
movl %eax, 0x384(%rsp)
leaq 0x238(%rsp), %rdi
callq 0x9410
jmp 0x5b9ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x388(%rsp)
movl %eax, 0x384(%rsp)
leaq 0x1f8(%rsp), %rdi
callq 0x9410
jmp 0x5b9ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x388(%rsp)
movl %eax, 0x384(%rsp)
leaq 0x1e0(%rsp), %rdi
callq 0x4dc40
leaq 0x258(%rsp), %rdi
callq 0x5efc0
leaq 0x390(%rsp), %rdi
callq 0x9410
jmp 0x5bbd6
movl $0x0, 0x1dc(%rsp)
movq 0x28(%rsp), %rdi
movslq 0x1dc(%rsp), %rax
movq %rax, 0x8(%rsp)
callq 0x5f0f0
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0x5bbc1
movq 0x28(%rsp), %rdi
movslq 0x1dc(%rsp), %rsi
callq 0x5f110
movq %rax, %rsi
leaq 0x1b8(%rsp), %rdi
callq 0x9270
jmp 0x5ba44
leaq 0x90(%rsp), %rdi
callq 0x5eda0
jmp 0x5ba53
leaq 0x70(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x9270
jmp 0x5ba67
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x56b50
jmp 0x5ba7b
leaq 0x70(%rsp), %rdi
callq 0x9410
leaq 0x30(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x9270
jmp 0x5ba99
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x789e0
jmp 0x5baaa
leaq 0x198(%rsp), %rdi
leaq 0x50(%rsp), %rsi
movq %rsi, (%rsp)
callq 0x98e0
movq (%rsp), %rdi
callq 0x9410
leaq 0x30(%rsp), %rdi
callq 0x9410
movslq 0x1dc(%rsp), %rsi
leaq 0x3b8(%rsp), %rdi
callq 0x58990
movq %rax, %rsi
leaq 0x90(%rsp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl $0x1, %r8d
xorps %xmm0, %xmm0
movl %r8d, %ecx
callq 0x5b180
jmp 0x5bb0b
leaq 0x90(%rsp), %rdi
callq 0x5efc0
leaq 0x1b8(%rsp), %rdi
callq 0x9410
movl 0x1dc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1dc(%rsp)
jmp 0x5b9f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x388(%rsp)
movl %eax, 0x384(%rsp)
jmp 0x5bbb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x388(%rsp)
movl %eax, 0x384(%rsp)
jmp 0x5bba5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x388(%rsp)
movl %eax, 0x384(%rsp)
leaq 0x70(%rsp), %rdi
callq 0x9410
jmp 0x5bba5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x388(%rsp)
movl %eax, 0x384(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x9410
leaq 0x90(%rsp), %rdi
callq 0x5efc0
leaq 0x1b8(%rsp), %rdi
callq 0x9410
jmp 0x5bbd6
leaq 0x3b8(%rsp), %rdi
callq 0x5f1a0
addq $0x3e8, %rsp            # imm = 0x3E8
retq
leaq 0x3b8(%rsp), %rdi
callq 0x5f1a0
movq 0x388(%rsp), %rdi
callq 0x9cf0