// File: /workspace/github_cpp_makefile_star2_O3/Leeingnyo[P]newPuyoC/game.cpp
// Function: VSRemoteGame::GameInit()
bool VSRemoteGame::GameInit() {
    int input;

    Console::ScreenClear();
    std::cout << Console::GotoXY(X(0), X(0));
    std::cout << "하실 것을 골라주세요" << std::endl;
    std::cout << "0. 돌아가기" << std::endl;
    std::cout << "1. 서버" << std::endl;
    std::cout << "2. 클라" << std::endl;
    input = getch();

    switch (input) {
        case '0': return false;
        case '1': break;
        case '2': break;
        default: return false;
    }

    Console::ScreenClear();
    // 서버 인지 클라 인지
    int seed;
    if (input == '1') {
        socket = std::make_shared<ServerSocket>();
        auto server_socket = std::dynamic_pointer_cast<ServerSocket>(socket);
        // 서버 일 경우 연결을 만들고 자기 아이피 주소를 보여줌
        std::cout << Console::white
            << "안녕하세요. 당신은 서버 역할입니다." << std::endl
            << "클라이언트 역할의 분께 당신의 IP를 알려드려야 합니다." << std::endl
            << "혹시 공유기를 사용하시고 계시다면 포트 포워딩이 필요합니다." << std::endl
            << "ip는 http://www.myipaddress.com/show-my-ip-address/ 나" << std::endl
            << "shell 에서 (linux, MaxOS) ifconfig 명령어, 혹은 (Windows) ipconfig 명령어 를 사용하시면 됩니다." << std::endl
            << "포트는 9595를 사용하므로 열려있으면 닫아주세요" << std::endl;
        if (server_socket->Bind("0.0.0.0", 9595)) {
            std::cout << Console::red
                << "9595 포트에 Bind 실패했습니다. 이미 사용 중인지 확인해주세요." << std::endl
                << "3초 뒤 화면으로 돌아갑니다." << std::endl;
            Console::Sleep(3000);
            return false;
        }
        if (server_socket->Listen(5)) {
            std::cout << Console::red
                << "Listen 실패했습니다." << std::endl
                << "3초 뒤 화면으로 돌아갑니다." << std::endl;
            Console::Sleep(3000);
            return false;
        }
        if (server_socket->Accept()) {
            std::cout << Console::red
                << "Accept 실패했습니다." << std::endl
                << "3초 뒤 화면으로 돌아갑니다." << std::endl;
            Console::Sleep(3000);
            return false;
        }

        int generated_seed = rand();
        server_socket->Send(std::to_string(generated_seed));
        seed = generated_seed;
    }
    else {
        socket = std::make_shared<ClientSocket>();
        auto client_socket = std::dynamic_pointer_cast<ClientSocket>(socket);
        // 클라일 경우 IP 주소 입력받게 함
        std::string ip_address;
        std::cout << Console::white
            << "안녕하세요. 당신은 클라이언트 역할입니다." << std::endl
            << "서버 역할의 분께서 당신에게 IP를 알려드릴 겁니다." << std::endl
            << "그것을 입력해주시기 바랍니다." << std::endl
            << "예시) 127.0.0.1" << std::endl;
        std::cin >> ip_address;
        if (client_socket->Connect(ip_address, 9595)) {
            std::cout << Console::red
                << "Connect 실패했습니다. 올바른 IP인지 확인해주세요." << std::endl
                << "3초 뒤 화면으로 돌아갑니다." << std::endl;
            Console::Sleep(3000);
            return false;
        }
        seed = std::stoi(client_socket->Recv());
    }

    my_bipuyo_generator = std::make_shared<BiPuyoGenerator>(seed);
    my_board = std::make_shared<Board>();
    my_board->SetNextBiPuyo(my_bipuyo_generator->GenerateBipuyo());
    my_next_bipuyo = my_bipuyo_generator->GenerateBipuyo();

    other_board = std::make_shared<Board>();
    other_board->SetNextBiPuyo(BiPuyoGenerator::GenerateEmptyBipuyo());
    other_next_bipuyo = BiPuyoGenerator::GenerateEmptyBipuyo();

    Console::ScreenClear();
    std::cout << Console::GotoXY(X(0), X(0));
    std::cout << "Loading..." << std::endl;
    Console::Sleep(500);
    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %rdi, %r14
callq 0x3dd8
leaq -0x50(%rbp), %rsi
movq $0x0, (%rsi)
movq 0xbe42(%rip), %rbx      # 0x10fd0
movq %rbx, %rdi
callq 0x3e76
leaq 0x70ec(%rip), %rsi      # 0xc289
movl $0x1d, %edx
movq %rbx, %rdi
callq 0x3310
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
leaq 0x70cf(%rip), %rsi      # 0xc2a7
movl $0xf, %edx
movq %rbx, %rdi
callq 0x3310
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
leaq 0x70a4(%rip), %rsi      # 0xc2b7
movl $0x9, %edx
movq %rbx, %rdi
callq 0x3310
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
leaq 0x7073(%rip), %rsi      # 0xc2c1
movl $0x9, %edx
movq %rbx, %rdi
callq 0x3310
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
callq 0x3d57
movl %eax, %r15d
leal -0x31(%r15), %eax
cmpl $0x1, %eax
ja 0x5afb
callq 0x3dd8
leaq -0x48(%rbp), %rdi
cmpl $0x31, %r15d
jne 0x536c
movq $0x0, -0x8(%rdi)
leaq -0x50(%rbp), %r15
leaq -0x80(%rbp), %rdx
movq %r15, %rsi
callq 0x9e2c
movq (%r15), %rdi
movq 0x8(%r15), %rcx
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq %rdi, 0x90(%r14)
movq 0x98(%r14), %rax
movq %rcx, 0x98(%r14)
testq %rax, %rax
je 0x5307
movq %rax, %rdi
callq 0x7f4e
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x5300
callq 0x7f4e
movq 0x90(%r14), %rdi
testq %rdi, %rdi
je 0x5424
leaq 0xb5e1(%rip), %rsi      # 0x108f8
leaq 0xb622(%rip), %rdx      # 0x10940
movq $0x0, -0x30(%rbp)
xorl %ecx, %ecx
callq 0x32f0
movl $0x0, %r12d
testq %rax, %rax
je 0x5463
movq 0x98(%r14), %rdx
movq %rdx, -0x30(%rbp)
testq %rdx, %rdx
je 0x5441
movq 0xbc71(%rip), %rcx      # 0x10fc8
cmpb $0x0, (%rcx)
je 0x5458
movq -0x30(%rbp), %rcx
incl 0x8(%rcx)
jmp 0x5460
movq $0x0, -0x8(%rdi)
leaq -0x50(%rbp), %r15
leaq -0x80(%rbp), %rdx
movq %r15, %rsi
callq 0x9f24
movq (%r15), %rdi
movq 0x8(%r15), %rcx
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq %rdi, 0x90(%r14)
movq 0x98(%r14), %rax
movq %rcx, 0x98(%r14)
testq %rax, %rax
je 0x53c9
movq %rax, %rdi
callq 0x7f4e
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x53c2
callq 0x7f4e
movq 0x90(%r14), %rdi
testq %rdi, %rdi
je 0x5431
leaq 0xb523(%rip), %rsi      # 0x108f8
leaq 0xb5b4(%rip), %rdx      # 0x10990
xorl %r12d, %r12d
xorl %ecx, %ecx
callq 0x32f0
movl $0x0, %ecx
movq %rcx, -0x30(%rbp)
testq %rax, %rax
je 0x5828
movq 0x98(%r14), %rdx
movq %rdx, -0x30(%rbp)
testq %rdx, %rdx
je 0x544b
movq 0xbbb9(%rip), %rcx      # 0x10fc8
cmpb $0x0, (%rcx)
je 0x581d
movq -0x30(%rbp), %rcx
incl 0x8(%rcx)
jmp 0x5825
movq $0x0, -0x30(%rbp)
xorl %r12d, %r12d
jmp 0x5463
xorl %r12d, %r12d
movq $0x0, -0x30(%rbp)
jmp 0x5828
movq $0x0, -0x30(%rbp)
jmp 0x5460
movq $0x0, -0x30(%rbp)
jmp 0x5825
movq -0x30(%rbp), %rcx
lock
incl 0x8(%rcx)
movq %rax, %r12
movq 0xbb66(%rip), %rdi      # 0x10fd0
leaq 0xbe53(%rip), %rsi      # 0x112c4
callq 0x3e2f
movq %rax, %r13
leaq 0x6e4b(%rip), %rsi      # 0xc2cb
movl $0x32, %edx
movq %rax, %rdi
callq 0x3310
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movq %rax, %r13
leaq 0x6e3f(%rip), %rsi      # 0xc2fe
movl $0x4b, %edx
movq %rax, %rdi
callq 0x3310
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movq %rax, %r13
leaq 0x6e4c(%rip), %rsi      # 0xc34a
movl $0x55, %edx
movq %rax, %rdi
callq 0x3310
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movq %rax, %r13
leaq 0x6e63(%rip), %rsi      # 0xc3a0
movl $0x38, %edx
movq %rax, %rdi
callq 0x3310
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movq %rax, %r13
leaq 0x6e5d(%rip), %rsi      # 0xc3d9
movl $0x72, %edx
movq %rax, %rdi
callq 0x3310
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movq %rax, %r13
leaq 0x6e91(%rip), %rsi      # 0xc44c
movl $0x41, %edx
movq %rax, %rdi
callq 0x3310
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
leaq -0xb0(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x6e8c(%rip), %rsi      # 0xc48e
leaq 0x6e8c(%rip), %rdx      # 0xc495
leaq -0xc0(%rbp), %rdi
callq 0x3bec
leaq -0xc0(%rbp), %rsi
movq %r12, %rdi
movl $0x257b, %edx           # imm = 0x257B
callq 0x384c
movl %eax, %r13d
movq -0xc0(%rbp), %rdi
cmpq %r15, %rdi
je 0x563d
callq 0x3260
testl %r13d, %r13d
je 0x56c7
movq 0xb983(%rip), %rdi      # 0x10fd0
leaq 0xbc64(%rip), %rsi      # 0x112b8
callq 0x3e2f
movq %rax, %rbx
leaq 0x6e33(%rip), %rsi      # 0xc496
movl $0x53, %edx
movq %rax, %rdi
callq 0x3310
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movq %rax, %rbx
leaq 0x6e49(%rip), %rsi      # 0xc4ea
movl $0x26, %edx
movq %rax, %rdi
callq 0x3310
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3290
jmp 0x57e9
movq %r12, %rdi
movl $0x5, %esi
callq 0x38ac
testl %eax, %eax
je 0x575d
movq 0xb8ed(%rip), %rdi      # 0x10fd0
leaq 0xbbce(%rip), %rsi      # 0x112b8
callq 0x3e2f
movq %rax, %rbx
leaq 0x6e18(%rip), %rsi      # 0xc511
movl $0x1a, %edx
movq %rax, %rdi
callq 0x3310
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movq %rax, %rbx
leaq 0x6db3(%rip), %rsi      # 0xc4ea
movl $0x26, %edx
movq %rax, %rdi
callq 0x3310
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3290
jmp 0x57e9
movq %r12, %rdi
callq 0x38e6
testl %eax, %eax
je 0x5b0f
movq 0xb85c(%rip), %rdi      # 0x10fd0
leaq 0xbb3d(%rip), %rsi      # 0x112b8
callq 0x3e2f
movq %rax, %rbx
leaq 0x6da2(%rip), %rsi      # 0xc52c
movl $0x1a, %edx
movq %rax, %rdi
callq 0x3310
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movq %rax, %rbx
leaq 0x6d22(%rip), %rsi      # 0xc4ea
movl $0x26, %edx
movq %rax, %rdi
callq 0x3310
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movl $0xbb8, %edi            # imm = 0xBB8
callq 0x3dc8
movq -0x30(%rbp), %rdi
testq %rdi, %rdi
je 0x5afb
callq 0x7f4e
jmp 0x5afb
movq -0x30(%rbp), %rcx
lock
incl 0x8(%rcx)
movq %rax, %r12
leaq -0x40(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0xb78e(%rip), %rdi      # 0x10fd0
leaq 0xba7b(%rip), %rsi      # 0x112c4
callq 0x3e2f
movq %rax, %r13
leaq 0x6cef(%rip), %rsi      # 0xc547
movl $0x3b, %edx
movq %rax, %rdi
callq 0x3310
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movq %rax, %r13
leaq 0x6cec(%rip), %rsi      # 0xc583
movl $0x45, %edx
movq %rax, %rdi
callq 0x3310
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movq %rax, %r13
leaq 0x6cf3(%rip), %rsi      # 0xc5c9
movl $0x2a, %edx
movq %rax, %rdi
callq 0x3310
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movq %rax, %r13
leaq 0x6cdf(%rip), %rsi      # 0xc5f4
movl $0x11, %edx
movq %rax, %rdi
callq 0x3310
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movq 0xb68f(%rip), %rdi      # 0x10fe0
leaq -0x50(%rbp), %rsi
callq 0x3350
leaq -0x90(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
addq %rsi, %rdx
leaq -0xa0(%rbp), %rdi
callq 0x95ca
leaq -0xa0(%rbp), %rsi
movq %r12, %rdi
movl $0x257b, %edx           # imm = 0x257B
callq 0x3a30
movl %eax, %r13d
movq -0xa0(%rbp), %rdi
cmpq %r15, %rdi
je 0x59a4
callq 0x3260
testl %r13d, %r13d
je 0x5a4d
movq 0xb61c(%rip), %rdi      # 0x10fd0
leaq 0xb8fd(%rip), %rsi      # 0x112b8
callq 0x3e2f
movq %rax, %r12
leaq 0x6c3c(%rip), %rsi      # 0xc606
movl $0x42, %edx
movq %rax, %rdi
callq 0x3310
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movq %rax, %r12
leaq 0x6ae1(%rip), %rsi      # 0xc4ea
movl $0x26, %edx
movq %rax, %rdi
callq 0x3310
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movl $0xbb8, %edi            # imm = 0xBB8
callq 0x3dc8
jmp 0x5ad6
movl %r13d, -0x5c(%rbp)
movq (%r12), %rax
leaq -0x80(%rbp), %rdi
movq %r12, %rsi
callq *0x10(%rax)
movq -0x80(%rbp), %r15
callq 0x3040
movq %rax, %r12
movl (%rax), %eax
movl %eax, -0x54(%rbp)
movl $0x0, (%r12)
leaq -0xe8(%rbp), %r13
movq %r15, %rdi
movq %r13, %rsi
movl $0xa, %edx
callq 0x33a0
cmpq %r15, (%r13)
je 0x5dd9
movslq %eax, %rcx
cmpq %rax, %rcx
jne 0x5de5
movl (%r12), %ecx
cmpl $0x22, %ecx
je 0x5de5
testl %ecx, %ecx
movl -0x5c(%rbp), %r13d
jne 0x5ac1
movl -0x54(%rbp), %ecx
movl %ecx, (%r12)
movl %eax, -0x58(%rbp)
leaq -0x70(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5ad6
callq 0x3260
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x5ae8
callq 0x3260
movq -0x30(%rbp), %rdi
testq %rdi, %rdi
je 0x5af6
callq 0x7f4e
testl %r13d, %r13d
je 0x5b5d
xorl %eax, %eax
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x30a0
movl %eax, %r13d
leaq -0xe0(%rbp), %rdi
movl %eax, %esi
callq 0x71fe
movq (%r12), %rax
leaq -0xe0(%rbp), %rsi
movq %r12, %rdi
callq *0x18(%rax)
leaq -0xd0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5b4b
callq 0x3260
movl %r13d, -0x58(%rbp)
movq -0x30(%rbp), %rdi
testq %rdi, %rdi
je 0x5b5d
callq 0x7f4e
leaq -0x48(%rbp), %rdi
movq $0x0, -0x8(%rdi)
leaq -0x50(%rbp), %r15
leaq -0x80(%rbp), %rdx
leaq -0x58(%rbp), %rcx
movq %r15, %rsi
callq 0x9c3c
movaps (%r15), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, (%r15)
movq 0x18(%r14), %rdi
movups %xmm0, 0x10(%r14)
testq %rdi, %rdi
je 0x5ba9
callq 0x7f4e
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x5ba9
callq 0x7f4e
leaq -0x48(%rbp), %rdi
movq $0x0, -0x8(%rdi)
leaq -0x80(%rbp), %rdx
movq %r15, %rsi
callq 0x9b26
movaps (%r15), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, (%r15)
movq 0x28(%r14), %rdi
movups %xmm0, 0x20(%r14)
testq %rdi, %rdi
je 0x5bed
callq 0x7f4e
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x5bed
callq 0x7f4e
movq 0x20(%r14), %r12
movq 0x10(%r14), %rsi
movq %r15, %rdi
callq 0x6ee8
movq (%r15), %rax
movq %rax, 0x50(%r12)
leaq 0x58(%r12), %rdi
leaq -0x48(%rbp), %r15
movq %r15, %rsi
callq 0x7fc8
movabsq $0x100000002, %rax      # imm = 0x100000002
movq %rax, 0x60(%r12)
movl $0x0, 0x68(%r12)
movq (%r15), %rdi
testq %rdi, %rdi
je 0x5c3b
callq 0x7f4e
movq 0x10(%r14), %rsi
leaq -0x50(%rbp), %r15
movq %r15, %rdi
callq 0x6ee8
movaps (%r15), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, (%r15)
movq 0x38(%r14), %rdi
movups %xmm0, 0x30(%r14)
testq %rdi, %rdi
je 0x5c77
callq 0x7f4e
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x5c77
callq 0x7f4e
leaq -0x48(%rbp), %rdi
movq $0x0, -0x8(%rdi)
leaq -0x80(%rbp), %rdx
movq %r15, %rsi
callq 0x9b26
movaps (%r15), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, (%r15)
movq 0x68(%r14), %rdi
movups %xmm0, 0x60(%r14)
testq %rdi, %rdi
je 0x5cbb
callq 0x7f4e
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x5cbb
callq 0x7f4e
movq 0x60(%r14), %r13
leaq -0x48(%rbp), %r15
movl $0x18, %edi
callq 0x32a0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xadbe(%rip), %rcx      # 0x10aa0
movq %rcx, (%rax)
leaq 0x10(%rax), %rcx
movw $0x0, 0x10(%rax)
xorl %r12d, %r12d
movl %r12d, 0x14(%rax)
movq %rax, (%r15)
movq %rcx, -0x8(%r15)
movq %rcx, 0x50(%r13)
leaq 0x58(%r13), %rdi
movq %r15, %rsi
callq 0x7fc8
movabsq $0x100000002, %rax      # imm = 0x100000002
movq %rax, 0x60(%r13)
movl %r12d, 0x68(%r13)
movq (%r15), %rdi
testq %rdi, %rdi
je 0x5d2c
callq 0x7f4e
movl $0x18, %edi
callq 0x32a0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xad55(%rip), %rcx      # 0x10aa0
movq %rcx, (%rax)
leaq 0x10(%rax), %rcx
movw $0x0, 0x10(%rax)
movl $0x0, 0x14(%rax)
movq %rcx, 0x70(%r14)
movq 0x78(%r14), %rdi
movq %rax, 0x78(%r14)
testq %rdi, %rdi
je 0x5d75
callq 0x7f4e
callq 0x3dd8
leaq -0x50(%rbp), %rsi
movq $0x0, (%rsi)
movq %rbx, %rdi
callq 0x3e76
leaq 0x643c(%rip), %rsi      # 0xc1d0
movl $0xa, %edx
movq %rbx, %rdi
callq 0x3310
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movl $0x1f4, %edi            # imm = 0x1F4
callq 0x3dc8
movb $0x1, %al
jmp 0x5afd
leaq 0x6942(%rip), %rdi      # 0xc722
callq 0x31b0
leaq 0x6936(%rip), %rdi      # 0xc722
callq 0x33c0
movq %rax, %rbx
leaq -0xd0(%rbp), %rax
movq -0x10(%rax), %rdi
jmp 0x5e59
jmp 0x5e65
jmp 0x5e4e
movq %rax, %rbx
cmpl $0x0, (%r12)
jne 0x5e16
movl -0x54(%rbp), %eax
movl %eax, (%r12)
leaq -0x70(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x5e47
jmp 0x5e51
movq %rax, %rbx
movq -0xc0(%rbp), %rdi
cmpq %r15, %rdi
jne 0x5e5e
jmp 0x5e68
jmp 0x5e65
movq %rax, %rbx
movq -0xa0(%rbp), %rdi
cmpq %r15, %rdi
je 0x5e51
callq 0x3260
jmp 0x5e51
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x5e68
callq 0x3260
jmp 0x5e68
movq %rax, %rbx
cmpq $0x0, -0x30(%rbp)
je 0x5e78
movq -0x30(%rbp), %rdi
callq 0x7f4e
movq %rbx, %rdi
callq 0x3480