// File: /workspace/github_cpp_makefile_star2_O2/sun98[P]Mini-DFS/mdfs.cpp
// Function: main
int main()
{
    NameServer ns(total_copy);
    DataServer ds1("data_node_1");
    DataServer ds2("data_node_2");
    DataServer ds3("data_node_3");
    DataServer ds4("data_node_4");

    ns.add(&ds1);
    ns.add(&ds2);
    ns.add(&ds3);
    ns.add(&ds4);

    std::thread th1(std::ref(ds1));
    std::thread th2(std::ref(ds2));
    std::thread th3(std::ref(ds3));
    std::thread th4(std::ref(ds4));

    th1.detach();
    th2.detach();
    th3.detach();
    th4.detach();

    ns();

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x3a0, %rsp            # imm = 0x3A0
leaq -0xb8(%rbp), %rdi
pushq $0x4
popq %rsi
callq 0x5cfc
leaq 0x28c3(%rip), %rsi      # 0x816f
leaq -0x2f8(%rbp), %rdi
leaq -0x238(%rbp), %rdx
callq 0x3110
leaq -0x3b8(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0x36dc
leaq -0x2f8(%rbp), %rdi
callq 0x3150
leaq 0x2896(%rip), %rsi      # 0x817b
leaq -0x238(%rbp), %rdi
leaq -0x178(%rbp), %rdx
callq 0x3110
leaq -0x2f8(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x36dc
leaq -0x238(%rbp), %rdi
callq 0x3150
leaq 0x2869(%rip), %rsi      # 0x8187
leaq -0x178(%rbp), %rdi
leaq -0x58(%rbp), %rdx
callq 0x3110
leaq -0x238(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x36dc
leaq -0x178(%rbp), %rdi
callq 0x3150
leaq 0x283f(%rip), %rsi      # 0x8193
leaq -0x58(%rbp), %rdi
leaq -0x28(%rbp), %rdx
callq 0x3110
leaq -0x178(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x36dc
leaq -0x58(%rbp), %rdi
callq 0x3150
leaq -0xb8(%rbp), %rdi
leaq -0x3b8(%rbp), %r12
movq %r12, %rsi
callq 0x5d58
leaq -0xb8(%rbp), %rdi
leaq -0x2f8(%rbp), %r15
movq %r15, %rsi
callq 0x5d58
leaq -0xb8(%rbp), %rdi
leaq -0x238(%rbp), %r14
movq %r14, %rsi
callq 0x5d58
leaq -0xb8(%rbp), %rdi
leaq -0x178(%rbp), %rbx
movq %rbx, %rsi
callq 0x5d58
leaq -0x28(%rbp), %rsi
movq %r12, (%rsi)
leaq -0x58(%rbp), %rdi
callq 0x5b8a
leaq -0x38(%rbp), %rsi
movq %r15, (%rsi)
leaq -0x28(%rbp), %rdi
callq 0x5b8a
leaq -0x30(%rbp), %rsi
movq %r14, (%rsi)
leaq -0x38(%rbp), %rdi
callq 0x5b8a
leaq -0x60(%rbp), %rsi
movq %rbx, (%rsi)
leaq -0x30(%rbp), %rdi
callq 0x5b8a
leaq -0x58(%rbp), %rdi
callq 0x3470
leaq -0x28(%rbp), %rdi
callq 0x3470
leaq -0x38(%rbp), %rdi
callq 0x3470
leaq -0x30(%rbp), %rdi
callq 0x3470
leaq -0xb8(%rbp), %rdi
callq 0x5e86
leaq -0x30(%rbp), %rdi
callq 0x5bfc
leaq -0x38(%rbp), %rdi
callq 0x5bfc
leaq -0x28(%rbp), %rdi
callq 0x5bfc
leaq -0x58(%rbp), %rdi
callq 0x5bfc
leaq -0x178(%rbp), %rdi
callq 0x5c0c
leaq -0x238(%rbp), %rdi
callq 0x5c0c
leaq -0x2f8(%rbp), %rdi
callq 0x5c0c
leaq -0x3b8(%rbp), %rdi
callq 0x5c0c
leaq -0xb8(%rbp), %rdi
callq 0x5c38
xorl %eax, %eax
addq $0x3a0, %rsp            # imm = 0x3A0
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x5b2b
movq %rax, %rbx
jmp 0x5b34
movq %rax, %rbx
jmp 0x5b3d
jmp 0x5b1a
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0x3150
jmp 0x5b52
movq %rax, %rbx
jmp 0x5b52
movq %rax, %rbx
leaq -0x178(%rbp), %rdi
callq 0x3150
jmp 0x5b5e
movq %rax, %rbx
jmp 0x5b5e
movq %rax, %rbx
leaq -0x238(%rbp), %rdi
callq 0x3150
jmp 0x5b6a
movq %rax, %rbx
jmp 0x5b6a
movq %rax, %rbx
leaq -0x2f8(%rbp), %rdi
callq 0x3150
jmp 0x5b76
movq %rax, %rbx
jmp 0x5b76
movq %rax, %rbx
jmp 0x5b46
movq %rax, %rbx
leaq -0x30(%rbp), %rdi
callq 0x5bfc
leaq -0x38(%rbp), %rdi
callq 0x5bfc
leaq -0x28(%rbp), %rdi
callq 0x5bfc
leaq -0x58(%rbp), %rdi
callq 0x5bfc
leaq -0x178(%rbp), %rdi
callq 0x5c0c
leaq -0x238(%rbp), %rdi
callq 0x5c0c
leaq -0x2f8(%rbp), %rdi
callq 0x5c0c
leaq -0x3b8(%rbp), %rdi
callq 0x5c0c
leaq -0xb8(%rbp), %rdi
callq 0x5c38
movq %rbx, %rdi
callq 0x3480