// File: 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
subq $0x3a0, %rsp            # imm = 0x3A0
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x1c0(%rbp)
callq 0x5250
leaq -0x1c(%rbp), %rdi
movq %rdi, -0x1b8(%rbp)
xorl %edx, %edx
movl %edx, %esi
callq 0x8790
movq -0x1b8(%rbp), %rsi
movq 0x217c7(%rip), %rdi     # 0x27fc8
movq %rdi, -0x1b0(%rbp)
callq 0x5300
movq -0x1b0(%rbp), %rdi
leaq 0x139fe(%rip), %rsi     # 0x1a219
callq 0x42d0
movq %rax, %rdi
movq 0x2177e(%rip), %rsi     # 0x27fa8
movq %rsi, -0x1a8(%rbp)
callq 0x4320
movq -0x1b0(%rbp), %rdi
leaq 0x139f3(%rip), %rsi     # 0x1a237
callq 0x42d0
movq -0x1a8(%rbp), %rsi
movq %rax, %rdi
callq 0x4320
movq -0x1b0(%rbp), %rdi
leaq 0x139e1(%rip), %rsi     # 0x1a247
callq 0x42d0
movq -0x1a8(%rbp), %rsi
movq %rax, %rdi
callq 0x4320
movq -0x1b0(%rbp), %rdi
leaq 0x139c9(%rip), %rsi     # 0x1a251
callq 0x42d0
movq -0x1a8(%rbp), %rsi
movq %rax, %rdi
callq 0x4320
callq 0x51d0
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x19c(%rbp)
subl $0x30, %eax
je 0x68ce
jmp 0x68b4
movl -0x19c(%rbp), %eax
subl $0x31, %eax
je 0x68d7
jmp 0x68c1
movl -0x19c(%rbp), %eax
subl $0x32, %eax
je 0x68d9
jmp 0x68db
movb $0x0, -0x1(%rbp)
jmp 0x73e0
jmp 0x68e4
jmp 0x68e4
movb $0x0, -0x1(%rbp)
jmp 0x73e0
callq 0x5250
cmpl $0x31, -0x14(%rbp)
jne 0x6e30
leaq -0x30(%rbp), %rdi
movq %rdi, -0x1d8(%rbp)
callq 0x9380
movq -0x1c0(%rbp), %rdi
movq -0x1d8(%rbp), %rsi
addq $0x90, %rdi
movq %rdi, -0x1d0(%rbp)
callq 0x93f0
movq -0x1d8(%rbp), %rdi
callq 0x9420
movq -0x1d0(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x9440
movq 0x21681(%rip), %rdi     # 0x27fc8
leaq 0x219c6(%rip), %rsi     # 0x28314
callq 0x52b0
movq %rax, -0x1c8(%rbp)
jmp 0x695c
movq -0x1c8(%rbp), %rdi
leaq 0x138f1(%rip), %rsi     # 0x1a25b
callq 0x42d0
movq %rax, -0x1e0(%rbp)
jmp 0x6978
movq -0x1e0(%rbp), %rdi
movq 0x21622(%rip), %rsi     # 0x27fa8
callq 0x4320
movq %rax, -0x1e8(%rbp)
jmp 0x6994
movq -0x1e8(%rbp), %rdi
leaq 0x138ec(%rip), %rsi     # 0x1a28e
callq 0x42d0
movq %rax, -0x1f0(%rbp)
jmp 0x69b0
movq -0x1f0(%rbp), %rdi
movq 0x215ea(%rip), %rsi     # 0x27fa8
callq 0x4320
movq %rax, -0x1f8(%rbp)
jmp 0x69cc
movq -0x1f8(%rbp), %rdi
leaq 0x13900(%rip), %rsi     # 0x1a2da
callq 0x42d0
movq %rax, -0x200(%rbp)
jmp 0x69e8
movq -0x200(%rbp), %rdi
movq 0x215b2(%rip), %rsi     # 0x27fa8
callq 0x4320
movq %rax, -0x208(%rbp)
jmp 0x6a04
movq -0x208(%rbp), %rdi
leaq 0x1391e(%rip), %rsi     # 0x1a330
callq 0x42d0
movq %rax, -0x210(%rbp)
jmp 0x6a20
movq -0x210(%rbp), %rdi
movq 0x2157a(%rip), %rsi     # 0x27fa8
callq 0x4320
movq %rax, -0x218(%rbp)
jmp 0x6a3c
movq -0x218(%rbp), %rdi
leaq 0x1391f(%rip), %rsi     # 0x1a369
callq 0x42d0
movq %rax, -0x220(%rbp)
jmp 0x6a58
movq -0x220(%rbp), %rdi
movq 0x21542(%rip), %rsi     # 0x27fa8
callq 0x4320
movq %rax, -0x228(%rbp)
jmp 0x6a74
movq -0x228(%rbp), %rdi
leaq 0x1395a(%rip), %rsi     # 0x1a3dc
callq 0x42d0
movq %rax, -0x230(%rbp)
jmp 0x6a90
movq -0x230(%rbp), %rdi
movq 0x2150a(%rip), %rsi     # 0x27fa8
callq 0x4320
jmp 0x6aa5
leaq -0x40(%rbp), %rdi
callq 0x94d0
movq %rax, -0x240(%rbp)
leaq -0x71(%rbp), %rdi
movq %rdi, -0x238(%rbp)
callq 0x4500
movq -0x238(%rbp), %rdx
leaq 0x1394b(%rip), %rsi     # 0x1a41e
leaq -0x70(%rbp), %rdi
callq 0x43f0
jmp 0x6ade
movq -0x240(%rbp), %rdi
leaq -0x70(%rbp), %rsi
movl $0x257b, %edx           # imm = 0x257B
callq 0x4a10
movl %eax, -0x244(%rbp)
jmp 0x6afb
leaq -0x70(%rbp), %rdi
callq 0x41f0
leaq -0x71(%rbp), %rdi
callq 0x4330
movl -0x244(%rbp), %eax
cmpl $0x0, %eax
je 0x6bff
movq 0x214a5(%rip), %rdi     # 0x27fc8
leaq 0x217de(%rip), %rsi     # 0x28308
callq 0x52b0
movq %rax, -0x250(%rbp)
jmp 0x6b38
movq -0x250(%rbp), %rdi
leaq 0x138e0(%rip), %rsi     # 0x1a426
callq 0x42d0
movq %rax, -0x258(%rbp)
jmp 0x6b54
movq -0x258(%rbp), %rdi
movq 0x21446(%rip), %rsi     # 0x27fa8
callq 0x4320
movq %rax, -0x260(%rbp)
jmp 0x6b70
movq -0x260(%rbp), %rdi
leaq 0x138fc(%rip), %rsi     # 0x1a47a
callq 0x42d0
movq %rax, -0x268(%rbp)
jmp 0x6b8c
movq -0x268(%rbp), %rdi
movq 0x2140e(%rip), %rsi     # 0x27fa8
callq 0x4320
jmp 0x6ba1
movl $0xbb8, %edi            # imm = 0xBB8
callq 0x5230
jmp 0x6bad
movb $0x0, -0x1(%rbp)
movl $0x1, -0x78(%rbp)
jmp 0x6dee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x6e22
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x6bf1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x41f0
leaq -0x71(%rbp), %rdi
callq 0x4330
jmp 0x6e22
leaq -0x40(%rbp), %rdi
callq 0x94d0
movq %rax, %rdi
movl $0x5, %esi
callq 0x4ac0
movl %eax, -0x26c(%rbp)
jmp 0x6c1d
movl -0x26c(%rbp), %eax
cmpl $0x0, %eax
je 0x6ccd
movq 0x21395(%rip), %rdi     # 0x27fc8
leaq 0x216ce(%rip), %rsi     # 0x28308
callq 0x52b0
movq %rax, -0x278(%rbp)
jmp 0x6c48
movq -0x278(%rbp), %rdi
leaq 0x1384b(%rip), %rsi     # 0x1a4a1
callq 0x42d0
movq %rax, -0x280(%rbp)
jmp 0x6c64
movq -0x280(%rbp), %rdi
movq 0x21336(%rip), %rsi     # 0x27fa8
callq 0x4320
movq %rax, -0x288(%rbp)
jmp 0x6c80
movq -0x288(%rbp), %rdi
leaq 0x137ec(%rip), %rsi     # 0x1a47a
callq 0x42d0
movq %rax, -0x290(%rbp)
jmp 0x6c9c
movq -0x290(%rbp), %rdi
movq 0x212fe(%rip), %rsi     # 0x27fa8
callq 0x4320
jmp 0x6cb1
movl $0xbb8, %edi            # imm = 0xBB8
callq 0x5230
jmp 0x6cbd
movb $0x0, -0x1(%rbp)
movl $0x1, -0x78(%rbp)
jmp 0x6dee
leaq -0x40(%rbp), %rdi
callq 0x94d0
movq %rax, %rdi
callq 0x4b30
movl %eax, -0x294(%rbp)
jmp 0x6ce6
movl -0x294(%rbp), %eax
cmpl $0x0, %eax
je 0x6d93
movq 0x212cc(%rip), %rdi     # 0x27fc8
leaq 0x21605(%rip), %rsi     # 0x28308
callq 0x52b0
movq %rax, -0x2a0(%rbp)
jmp 0x6d11
movq -0x2a0(%rbp), %rdi
leaq 0x1379d(%rip), %rsi     # 0x1a4bc
callq 0x42d0
movq %rax, -0x2a8(%rbp)
jmp 0x6d2d
movq -0x2a8(%rbp), %rdi
movq 0x2126d(%rip), %rsi     # 0x27fa8
callq 0x4320
movq %rax, -0x2b0(%rbp)
jmp 0x6d49
movq -0x2b0(%rbp), %rdi
leaq 0x13723(%rip), %rsi     # 0x1a47a
callq 0x42d0
movq %rax, -0x2b8(%rbp)
jmp 0x6d65
movq -0x2b8(%rbp), %rdi
movq 0x21235(%rip), %rsi     # 0x27fa8
callq 0x4320
jmp 0x6d7a
movl $0xbb8, %edi            # imm = 0xBB8
callq 0x5230
jmp 0x6d86
movb $0x0, -0x1(%rbp)
movl $0x1, -0x78(%rbp)
jmp 0x6dee
callq 0x40b0
movl %eax, -0x7c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x94d0
movq %rax, -0x2c0(%rbp)
movl -0x7c(%rbp), %esi
leaq -0xa0(%rbp), %rdi
callq 0x94f0
jmp 0x6dbc
movq -0x2c0(%rbp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
leaq -0xa0(%rbp), %rsi
callq *%rax
jmp 0x6dd5
leaq -0xa0(%rbp), %rdi
callq 0x41f0
movl -0x7c(%rbp), %eax
movl %eax, -0x20(%rbp)
movl $0x0, -0x78(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x9420
movl -0x78(%rbp), %eax
testl %eax, %eax
je 0x6e05
jmp 0x6e00
jmp 0x73e0
jmp 0x7182
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x41f0
leaq -0x40(%rbp), %rdi
callq 0x9420
jmp 0x73ee
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x2d8(%rbp)
callq 0x9610
movq -0x1c0(%rbp), %rdi
movq -0x2d8(%rbp), %rsi
addq $0x90, %rdi
movq %rdi, -0x2d0(%rbp)
callq 0x9680
movq -0x2d8(%rbp), %rdi
callq 0x96b0
movq -0x2d0(%rbp), %rsi
leaq -0xc0(%rbp), %rdi
callq 0x96d0
leaq -0xe0(%rbp), %rdi
callq 0x4400
movq 0x21132(%rip), %rdi     # 0x27fc8
leaq 0x21477(%rip), %rsi     # 0x28314
callq 0x52b0
movq %rax, -0x2c8(%rbp)
jmp 0x6eab
movq -0x2c8(%rbp), %rdi
leaq 0x1361e(%rip), %rsi     # 0x1a4d7
callq 0x42d0
movq %rax, -0x2e0(%rbp)
jmp 0x6ec7
movq -0x2e0(%rbp), %rdi
movq 0x210d3(%rip), %rsi     # 0x27fa8
callq 0x4320
movq %rax, -0x2e8(%rbp)
jmp 0x6ee3
movq -0x2e8(%rbp), %rdi
leaq 0x13622(%rip), %rsi     # 0x1a513
callq 0x42d0
movq %rax, -0x2f0(%rbp)
jmp 0x6eff
movq -0x2f0(%rbp), %rdi
movq 0x2109b(%rip), %rsi     # 0x27fa8
callq 0x4320
movq %rax, -0x2f8(%rbp)
jmp 0x6f1b
movq -0x2f8(%rbp), %rdi
leaq 0x13630(%rip), %rsi     # 0x1a559
callq 0x42d0
movq %rax, -0x300(%rbp)
jmp 0x6f37
movq -0x300(%rbp), %rdi
movq 0x21063(%rip), %rsi     # 0x27fa8
callq 0x4320
movq %rax, -0x308(%rbp)
jmp 0x6f53
movq -0x308(%rbp), %rdi
leaq 0x13623(%rip), %rsi     # 0x1a584
callq 0x42d0
movq %rax, -0x310(%rbp)
jmp 0x6f6f
movq -0x310(%rbp), %rdi
movq 0x2102b(%rip), %rsi     # 0x27fa8
callq 0x4320
jmp 0x6f84
movq 0x21055(%rip), %rdi     # 0x27fe0
leaq -0xe0(%rbp), %rsi
callq 0x43d0
jmp 0x6f99
leaq -0xc0(%rbp), %rdi
callq 0x9760
movq %rax, -0x318(%rbp)
leaq -0x100(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x4140
jmp 0x6fc1
movq -0x318(%rbp), %rdi
leaq -0x100(%rbp), %rsi
movl $0x257b, %edx           # imm = 0x257B
callq 0x4da0
movl %eax, -0x31c(%rbp)
jmp 0x6fe1
leaq -0x100(%rbp), %rdi
callq 0x41f0
movl -0x31c(%rbp), %eax
cmpl $0x0, %eax
je 0x70cb
movq 0x20fc5(%rip), %rdi     # 0x27fc8
leaq 0x212fe(%rip), %rsi     # 0x28308
callq 0x52b0
movq %rax, -0x328(%rbp)
jmp 0x7018
movq -0x328(%rbp), %rdi
leaq 0x13570(%rip), %rsi     # 0x1a596
callq 0x42d0
movq %rax, -0x330(%rbp)
jmp 0x7034
movq -0x330(%rbp), %rdi
movq 0x20f66(%rip), %rsi     # 0x27fa8
callq 0x4320
movq %rax, -0x338(%rbp)
jmp 0x7050
movq -0x338(%rbp), %rdi
leaq 0x1341c(%rip), %rsi     # 0x1a47a
callq 0x42d0
movq %rax, -0x340(%rbp)
jmp 0x706c
movq -0x340(%rbp), %rdi
movq 0x20f2e(%rip), %rsi     # 0x27fa8
callq 0x4320
jmp 0x7081
movl $0xbb8, %edi            # imm = 0xBB8
callq 0x5230
jmp 0x708d
movb $0x0, -0x1(%rbp)
movl $0x1, -0x78(%rbp)
jmp 0x7125
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x7165
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x41f0
jmp 0x7165
leaq -0xc0(%rbp), %rdi
callq 0x9760
movq %rax, %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq -0x120(%rbp), %rdi
callq *%rax
jmp 0x70ec
xorl %eax, %eax
movl %eax, %esi
leaq -0x120(%rbp), %rdi
movl $0xa, %edx
callq 0x9780
movl %eax, -0x344(%rbp)
jmp 0x7109
movl -0x344(%rbp), %eax
movl %eax, -0x20(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x41f0
movl $0x0, -0x78(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x41f0
leaq -0xc0(%rbp), %rdi
callq 0x96b0
movl -0x78(%rbp), %eax
testl %eax, %eax
je 0x714b
jmp 0x7146
jmp 0x73e0
jmp 0x7182
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x41f0
leaq -0xe0(%rbp), %rdi
callq 0x41f0
leaq -0xc0(%rbp), %rdi
callq 0x96b0
jmp 0x73ee
leaq -0x130(%rbp), %rdi
movq %rdi, -0x378(%rbp)
leaq -0x20(%rbp), %rsi
callq 0x92a0
movq -0x378(%rbp), %rsi
movq -0x1c0(%rbp), %rdi
addq $0x10, %rdi
movq %rdi, -0x360(%rbp)
callq 0x8aa0
movq -0x378(%rbp), %rdi
callq 0x8ad0
leaq -0x140(%rbp), %rdi
movq %rdi, -0x370(%rbp)
callq 0x8af0
movq -0x1c0(%rbp), %rdi
movq -0x370(%rbp), %rsi
addq $0x20, %rdi
movq %rdi, -0x368(%rbp)
callq 0x8b60
movq -0x370(%rbp), %rdi
callq 0x8b90
movq -0x368(%rbp), %rdi
callq 0x87b0
movq -0x360(%rbp), %rdi
movq %rax, -0x358(%rbp)
callq 0x8c00
movq %rax, %rsi
leaq -0x150(%rbp), %rdi
movq %rdi, -0x350(%rbp)
callq 0x8c20
movq -0x358(%rbp), %rdi
movq -0x350(%rbp), %rsi
callq 0x8bb0
jmp 0x724a
leaq -0x150(%rbp), %rdi
callq 0x8ca0
movq -0x1c0(%rbp), %rdi
addq $0x10, %rdi
callq 0x8c00
movq %rax, %rsi
leaq -0x160(%rbp), %rdi
movq %rdi, -0x3a0(%rbp)
callq 0x8c20
movq -0x3a0(%rbp), %rsi
movq -0x1c0(%rbp), %rdi
addq $0x30, %rdi
callq 0x8cc0
movq -0x3a0(%rbp), %rdi
callq 0x8ca0
leaq -0x170(%rbp), %rdi
movq %rdi, -0x398(%rbp)
callq 0x8af0
movq -0x1c0(%rbp), %rdi
movq -0x398(%rbp), %rsi
addq $0x60, %rdi
movq %rdi, -0x390(%rbp)
callq 0x8b60
movq -0x398(%rbp), %rdi
callq 0x8b90
movq -0x390(%rbp), %rdi
callq 0x87b0
movq %rax, -0x388(%rbp)
leaq -0x180(%rbp), %rdi
movq %rdi, -0x380(%rbp)
callq 0x97c0
movq -0x388(%rbp), %rdi
movq -0x380(%rbp), %rsi
callq 0x8bb0
jmp 0x7317
leaq -0x180(%rbp), %rdi
callq 0x8ca0
leaq -0x190(%rbp), %rdi
callq 0x97c0
movq -0x1c0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x190(%rbp), %rsi
callq 0x8cc0
leaq -0x190(%rbp), %rdi
callq 0x8ca0
callq 0x5250
leaq -0x198(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x8790
movq 0x20c5a(%rip), %rdi     # 0x27fc8
leaq -0x198(%rbp), %rsi
callq 0x5300
movq 0x20c47(%rip), %rdi     # 0x27fc8
leaq 0x12dd8(%rip), %rsi     # 0x1a160
callq 0x42d0
movq %rax, %rdi
movq 0x20c11(%rip), %rsi     # 0x27fa8
callq 0x4320
movl $0x1f4, %edi            # imm = 0x1F4
callq 0x5230
movb $0x1, -0x1(%rbp)
jmp 0x73e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x8ca0
jmp 0x73ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x8ca0
jmp 0x73ee
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x3a0, %rsp            # imm = 0x3A0
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x44f0
nopw (%rax,%rax)