// File: /workspace/github_cpp_makefile_star2_O1/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 0x6ca4
leaq -0x230(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x2a74(%rip), %rsi      # 0x919f
leaq 0x2a78(%rip), %rdx      # 0x91aa
leaq -0x240(%rbp), %rdi
callq 0x54e0
leaq -0x3c0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x374c
movq -0x240(%rbp), %rdi
cmpq %r14, %rdi
je 0x6762
callq 0x3270
leaq -0x170(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x2a37(%rip), %rsi      # 0x91ab
leaq 0x2a3b(%rip), %rdx      # 0x91b6
leaq -0x180(%rbp), %rdi
callq 0x54e0
leaq -0x240(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x374c
movq -0x180(%rbp), %rdi
cmpq %r14, %rdi
je 0x67ab
callq 0x3270
leaq -0x2f0(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x29fa(%rip), %rsi      # 0x91b7
leaq 0x29fe(%rip), %rdx      # 0x91c2
leaq -0x300(%rbp), %rdi
callq 0x54e0
leaq -0x180(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x374c
movq -0x300(%rbp), %rdi
cmpq %r13, %rdi
je 0x67f4
callq 0x3270
leaq -0x50(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x29c0(%rip), %rsi      # 0x91c3
leaq 0x29c4(%rip), %rdx      # 0x91ce
leaq -0x60(%rbp), %rdi
callq 0x54e0
leaq -0x300(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x374c
movq -0x60(%rbp), %rdi
cmpq %r14, %rdi
je 0x6831
callq 0x3270
leaq -0xc0(%rbp), %rdi
leaq -0x3c0(%rbp), %r12
movq %r12, %rsi
callq 0x6d06
leaq -0xc0(%rbp), %rdi
leaq -0x240(%rbp), %r15
movq %r15, %rsi
callq 0x6d06
leaq -0xc0(%rbp), %rdi
leaq -0x180(%rbp), %r14
movq %r14, %rsi
callq 0x6d06
leaq -0xc0(%rbp), %rdi
leaq -0x300(%rbp), %rbx
movq %rbx, %rsi
callq 0x6d06
leaq -0x40(%rbp), %rsi
movq %r12, (%rsi)
leaq -0x60(%rbp), %rdi
callq 0x6b1e
leaq -0x38(%rbp), %rsi
movq %r15, (%rsi)
leaq -0x40(%rbp), %rdi
callq 0x6b1e
leaq -0x30(%rbp), %rsi
movq %r14, (%rsi)
leaq -0x38(%rbp), %rdi
callq 0x6b1e
leaq -0x68(%rbp), %rsi
movq %rbx, (%rsi)
leaq -0x30(%rbp), %rdi
callq 0x6b1e
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 0x6eb2
cmpq $0x0, -0x30(%rbp)
jne 0x6b19
cmpq $0x0, -0x38(%rbp)
jne 0x6b19
cmpq $0x0, -0x40(%rbp)
jne 0x6b19
cmpq $0x0, -0x60(%rbp)
jne 0x6b19
leaq -0x270(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x693a
callq 0x3270
leaq -0x2b0(%rbp), %rbx
movq %rbx, %rdi
callq 0x34c0
movq -0x50(%rbx), %rdi
cmpq %r13, %rdi
je 0x6957
callq 0x3270
leaq -0xf0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
leaq -0x230(%rbp), %r14
je 0x6973
callq 0x3270
leaq -0x130(%rbp), %rbx
movq %rbx, %rdi
callq 0x34c0
movq -0x50(%rbx), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x6997
callq 0x3270
leaq -0x1b0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x69ac
callq 0x3270
leaq -0x1f0(%rbp), %rbx
movq %rbx, %rdi
callq 0x34c0
movq -0x50(%rbx), %rdi
cmpq %r14, %rdi
je 0x69c9
callq 0x3270
leaq -0x330(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x69de
callq 0x3270
leaq -0x370(%rbp), %rbx
movq %rbx, %rdi
callq 0x34c0
movq -0x50(%rbx), %rdi
leaq -0x3b0(%rbp), %rax
cmpq %rax, %rdi
je 0x6a02
callq 0x3270
leaq -0x98(%rbp), %rbx
movq %rbx, %rdi
callq 0x6c10
movq -0x28(%rbx), %rdi
testq %rdi, %rdi
je 0x6a1f
callq 0x3270
xorl %eax, %eax
addq $0x398, %rsp            # imm = 0x398
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x6b01
movq %rax, %rbx
jmp 0x6b0b
movq %rax, %rbx
jmp 0x6b12
jmp 0x6ab3
movq %rax, %rbx
movq -0x60(%rbp), %rdi
cmpq %r14, %rdi
je 0x6ac2
callq 0x3270
jmp 0x6ac2
movq %rax, %rbx
jmp 0x6ac2
movq %rax, %rbx
movq -0x300(%rbp), %rdi
cmpq %r13, %rdi
je 0x6ace
callq 0x3270
jmp 0x6ace
movq %rax, %rbx
jmp 0x6ace
movq %rax, %rbx
movq -0x180(%rbp), %rdi
cmpq %r14, %rdi
je 0x6ada
callq 0x3270
jmp 0x6ada
movq %rax, %rbx
jmp 0x6ada
movq %rax, %rbx
movq -0x240(%rbp), %rdi
cmpq %r14, %rdi
je 0x6ae6
callq 0x3270
jmp 0x6ae6
movq %rax, %rbx
jmp 0x6ae6
movq %rax, %rbx
leaq -0x300(%rbp), %rdi
callq 0x6ba4
leaq -0x180(%rbp), %rdi
callq 0x6ba4
leaq -0x240(%rbp), %rdi
callq 0x6ba4
leaq -0x3c0(%rbp), %rdi
callq 0x6ba4
leaq -0xc0(%rbp), %rdi
callq 0x6be8
movq %rbx, %rdi
callq 0x34a0
cmpq $0x0, -0x30(%rbp)
jne 0x6b19
movq %rax, %rbx
cmpq $0x0, -0x38(%rbp)
jne 0x6b19
cmpq $0x0, -0x40(%rbp)
jne 0x6b19
cmpq $0x0, -0x60(%rbp)
je 0x6ab6
callq 0x30d0