// File: /workspace/github_cpp_makefile_star2_O3/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 %r13
pushq %r12
pushq %rbx
subq $0x398, %rsp            # imm = 0x398
leaq -0xc0(%rbp), %rdi
movl $0x4, %esi
callq 0x6c44
leaq -0x230(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x2ac4(%rip), %rsi      # 0x919f
leaq 0x2ac8(%rip), %rdx      # 0x91aa
leaq -0x240(%rbp), %rdi
callq 0x54ce
leaq -0x3c0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x374c
movq -0x240(%rbp), %rdi
cmpq %r14, %rdi
je 0x6712
callq 0x3270
leaq -0x170(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x2a87(%rip), %rsi      # 0x91ab
leaq 0x2a8b(%rip), %rdx      # 0x91b6
leaq -0x180(%rbp), %rdi
callq 0x54ce
leaq -0x240(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x374c
movq -0x180(%rbp), %rdi
cmpq %r14, %rdi
je 0x675b
callq 0x3270
leaq -0x2f0(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x2a4a(%rip), %rsi      # 0x91b7
leaq 0x2a4e(%rip), %rdx      # 0x91c2
leaq -0x300(%rbp), %rdi
callq 0x54ce
leaq -0x180(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x374c
movq -0x300(%rbp), %rdi
cmpq %r13, %rdi
je 0x67a4
callq 0x3270
leaq -0x50(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x2a10(%rip), %rsi      # 0x91c3
leaq 0x2a14(%rip), %rdx      # 0x91ce
leaq -0x60(%rbp), %rdi
callq 0x54ce
leaq -0x300(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x374c
movq -0x60(%rbp), %rdi
cmpq %r14, %rdi
je 0x67e1
callq 0x3270
leaq -0xc0(%rbp), %rdi
leaq -0x3c0(%rbp), %r12
movq %r12, %rsi
callq 0x6ca6
leaq -0xc0(%rbp), %rdi
leaq -0x240(%rbp), %r15
movq %r15, %rsi
callq 0x6ca6
leaq -0xc0(%rbp), %rdi
leaq -0x180(%rbp), %r14
movq %r14, %rsi
callq 0x6ca6
leaq -0xc0(%rbp), %rdi
leaq -0x300(%rbp), %rbx
movq %rbx, %rsi
callq 0x6ca6
leaq -0x40(%rbp), %rsi
movq %r12, (%rsi)
leaq -0x60(%rbp), %rdi
callq 0x6ace
leaq -0x38(%rbp), %rsi
movq %r15, (%rsi)
leaq -0x40(%rbp), %rdi
callq 0x6ace
leaq -0x30(%rbp), %rsi
movq %r14, (%rsi)
leaq -0x38(%rbp), %rdi
callq 0x6ace
leaq -0x68(%rbp), %rsi
movq %rbx, (%rsi)
leaq -0x30(%rbp), %rdi
callq 0x6ace
leaq -0x60(%rbp), %rdi
callq 0x3490
leaq -0x40(%rbp), %rdi
callq 0x3490
leaq -0x38(%rbp), %rdi
callq 0x3490
leaq -0x30(%rbp), %rdi
callq 0x3490
leaq -0xc0(%rbp), %rdi
callq 0x6e52
cmpq $0x0, -0x30(%rbp)
jne 0x6ac9
cmpq $0x0, -0x38(%rbp)
jne 0x6ac9
cmpq $0x0, -0x40(%rbp)
jne 0x6ac9
cmpq $0x0, -0x60(%rbp)
jne 0x6ac9
leaq -0x270(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x68ea
callq 0x3270
leaq -0x2b0(%rbp), %rbx
movq %rbx, %rdi
callq 0x34c0
movq -0x50(%rbx), %rdi
cmpq %r13, %rdi
je 0x6907
callq 0x3270
leaq -0xf0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
leaq -0x230(%rbp), %r14
je 0x6923
callq 0x3270
leaq -0x130(%rbp), %rbx
movq %rbx, %rdi
callq 0x34c0
movq -0x50(%rbx), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x6947
callq 0x3270
leaq -0x1b0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x695c
callq 0x3270
leaq -0x1f0(%rbp), %rbx
movq %rbx, %rdi
callq 0x34c0
movq -0x50(%rbx), %rdi
cmpq %r14, %rdi
je 0x6979
callq 0x3270
leaq -0x330(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x698e
callq 0x3270
leaq -0x370(%rbp), %rbx
movq %rbx, %rdi
callq 0x34c0
movq -0x50(%rbx), %rdi
leaq -0x3b0(%rbp), %rax
cmpq %rax, %rdi
je 0x69b2
callq 0x3270
leaq -0x98(%rbp), %rbx
movq %rbx, %rdi
callq 0x6bb0
movq -0x28(%rbx), %rdi
testq %rdi, %rdi
je 0x69cf
callq 0x3270
xorl %eax, %eax
addq $0x398, %rsp            # imm = 0x398
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x6ab1
movq %rax, %rbx
jmp 0x6abb
movq %rax, %rbx
jmp 0x6ac2
jmp 0x6a63
movq %rax, %rbx
movq -0x60(%rbp), %rdi
cmpq %r14, %rdi
je 0x6a72
callq 0x3270
jmp 0x6a72
movq %rax, %rbx
jmp 0x6a72
movq %rax, %rbx
movq -0x300(%rbp), %rdi
cmpq %r13, %rdi
je 0x6a7e
callq 0x3270
jmp 0x6a7e
movq %rax, %rbx
jmp 0x6a7e
movq %rax, %rbx
movq -0x180(%rbp), %rdi
cmpq %r14, %rdi
je 0x6a8a
callq 0x3270
jmp 0x6a8a
movq %rax, %rbx
jmp 0x6a8a
movq %rax, %rbx
movq -0x240(%rbp), %rdi
cmpq %r14, %rdi
je 0x6a96
callq 0x3270
jmp 0x6a96
movq %rax, %rbx
jmp 0x6a96
movq %rax, %rbx
leaq -0x300(%rbp), %rdi
callq 0x6b44
leaq -0x180(%rbp), %rdi
callq 0x6b44
leaq -0x240(%rbp), %rdi
callq 0x6b44
leaq -0x3c0(%rbp), %rdi
callq 0x6b44
leaq -0xc0(%rbp), %rdi
callq 0x6b88
movq %rbx, %rdi
callq 0x34a0
cmpq $0x0, -0x30(%rbp)
jne 0x6ac9
movq %rax, %rbx
cmpq $0x0, -0x38(%rbp)
jne 0x6ac9
cmpq $0x0, -0x40(%rbp)
jne 0x6ac9
cmpq $0x0, -0x60(%rbp)
je 0x6a66
callq 0x30d0