// File: /workspace/github_cpp_makefile_star2_O3/Leeingnyo[P]newPuyoC/game.cpp
// Function: VSRemoteGame::Deserialize(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void VSRemoteGame::Deserialize(std::string data) {
    int state = 0;
    std::ostringstream buffer;
    for (int i = 0; i < data.length(); i++) {
        char token = data.at(i);
        switch (state) {
            case 0: {
                if (token == 'G') continue;
                if (token == '{') state = 1;
            } break;
            case 1: {
                if (token == 'P') continue;
                if (token == '{') continue;
                if (token == '}') {
                    other_info.Deserialize(buffer.str());
                    buffer.str("");
                    state = 2;
                    continue;
                }
                buffer << token;
            } break;
            case 2: {
                if (token == 'M') continue;
                if (token == '{') continue;
                if (token == '}') {
                    other_board->Deserialize(buffer.str());
                    buffer.str("");
                    state = 3;
                    continue;
                }
                buffer << token;
            } break;
            case 3: {
                if (token == 'B') continue;
                if (token == '{') continue;
                if (token == '}') {
                    other_next_bipuyo->Deserialize(buffer.str());
                    buffer.str("");
                    state = 4;
                    continue;
                }
                buffer << token;
            } break;
            case 4: {
                if (token == 'O') continue;
                if (token == '{') continue;
                if (token == '}') {
                    obstacle_to_take = std::stoi(buffer.str());
                    buffer.str("");
                    state = 5;
                }
                buffer << token;
            } break;
            case 5: {
                continue;
            } break;
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x228, %rsp            # imm = 0x228
movq %rsi, %rbx
movq %rdi, -0x58(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x3360
movq %rbx, -0x60(%rbp)
cmpq $0x0, 0x8(%rbx)
je 0x69d7
leaq -0x40(%rbp), %r13
movq -0x58(%rbp), %rax
addq $0x80, %rax
movq %rax, -0x68(%rbp)
xorl %r14d, %r14d
leaq -0x50(%rbp), %rbx
xorl %r15d, %r15d
cmpl $0x4, %r15d
ja 0x69c6
movq -0x60(%rbp), %rax
movq (%rax), %rax
movb (%rax,%r14), %r12b
movzbl %r12b, %eax
movl %r15d, %ecx
leaq 0x5a53(%rip), %rdx      # 0xc0e4
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
xorl %r15d, %r15d
cmpb $0x7b, %r12b
sete %r15b
jmp 0x69c6
movl $0x4, %r15d
cmpl $0x4f, %eax
je 0x69c6
cmpl $0x7b, %eax
je 0x69c6
cmpl $0x7d, %eax
jne 0x6787
movq %rbx, %rdi
leaq -0x240(%rbp), %rsi
callq 0x3410
movq -0x50(%rbp), %r13
callq 0x3040
movq %rax, %r15
movl (%rax), %eax
movl %eax, -0x2c(%rbp)
movl $0x0, (%r15)
movq %r13, %rdi
leaq -0x70(%rbp), %rsi
movl $0xa, %edx
callq 0x33a0
cmpq %r13, -0x70(%rbp)
je 0x6a14
movslq %eax, %rcx
cmpq %rax, %rcx
leaq -0x40(%rbp), %r13
jne 0x6a08
movl (%r15), %ecx
cmpl $0x22, %ecx
je 0x6a08
testl %ecx, %ecx
jne 0x6733
movl -0x2c(%rbp), %ecx
movl %ecx, (%r15)
movq -0x58(%rbp), %rcx
movl %eax, 0xa4(%rcx)
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x674b
callq 0x3260
movq %r13, -0x50(%rbp)
movq %rbx, %r15
movq %rbx, %rdi
leaq 0x5f07(%rip), %rdx      # 0xc663
movq %rdx, %rsi
callq 0x3bec
leaq -0x240(%rbp), %rdi
movq %r15, %rsi
callq 0x33e0
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x6781
callq 0x3260
movl $0x5, %r15d
movb %r12b, -0x50(%rbp)
movl $0x1, %edx
leaq -0x248(%rbp), %rdi
movq %rbx, %rsi
callq 0x3310
jmp 0x69c6
movl $0x2, %r15d
cmpl $0x4d, %eax
je 0x69c6
cmpl $0x7b, %eax
je 0x69c6
cmpl $0x7d, %eax
jne 0x697a
movq -0x58(%rbp), %rax
movq 0x60(%rax), %r15
leaq -0xb0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x3410
movq %r15, %rdi
leaq -0xb0(%rbp), %rsi
callq 0x78ea
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x6807
callq 0x3260
movq %r13, -0x50(%rbp)
movq %rbx, %rdi
leaq 0x5e4e(%rip), %rdx      # 0xc663
movq %rdx, %rsi
callq 0x3bec
leaq -0x240(%rbp), %rdi
movq %rbx, %rsi
callq 0x33e0
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x683a
callq 0x3260
movl $0x3, %r15d
jmp 0x69c6
movl $0x3, %r15d
cmpl $0x42, %eax
je 0x69c6
cmpl $0x7b, %eax
je 0x69c6
cmpl $0x7d, %eax
jne 0x6994
movq -0x58(%rbp), %rax
movq 0x70(%rax), %r15
leaq -0x90(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x3410
movq %r15, %rdi
leaq -0x90(%rbp), %rsi
callq 0x7d4a
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x68a5
callq 0x3260
movq %r13, -0x50(%rbp)
movq %rbx, %rdi
leaq 0x5db0(%rip), %rdx      # 0xc663
movq %rdx, %rsi
callq 0x3bec
leaq -0x240(%rbp), %rdi
movq %rbx, %rsi
callq 0x33e0
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x68d8
callq 0x3260
movl $0x4, %r15d
jmp 0x69c6
movl $0x1, %r15d
cmpl $0x50, %eax
je 0x69c6
cmpl $0x7b, %eax
je 0x69c6
cmpl $0x7d, %eax
jne 0x69ae
leaq -0xd0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x3410
movq -0x68(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x75f6
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0x693f
callq 0x3260
movq %r13, -0x50(%rbp)
movq %rbx, %rdi
leaq 0x5d16(%rip), %rdx      # 0xc663
movq %rdx, %rsi
callq 0x3bec
leaq -0x240(%rbp), %rdi
movq %rbx, %rsi
callq 0x33e0
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x6972
callq 0x3260
movl $0x2, %r15d
jmp 0x69c6
movb %r12b, -0x50(%rbp)
movl $0x1, %edx
leaq -0x248(%rbp), %rdi
movq %rbx, %rsi
callq 0x3310
jmp 0x69c6
movb %r12b, -0x50(%rbp)
movl $0x1, %edx
leaq -0x248(%rbp), %rdi
movq %rbx, %rsi
callq 0x3310
jmp 0x69c6
movb %r12b, -0x50(%rbp)
movl $0x1, %edx
leaq -0x248(%rbp), %rdi
movq %rbx, %rsi
callq 0x3310
incq %r14
movq -0x60(%rbp), %rax
cmpq %r14, 0x8(%rax)
ja 0x666e
movq 0xa5e2(%rip), %rsi      # 0x10fc0
leaq -0x248(%rbp), %rdi
callq 0x3180
leaq -0x1d8(%rbp), %rdi
callq 0x30f0
addq $0x228, %rsp            # imm = 0x228
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x5d13(%rip), %rdi      # 0xc722
callq 0x33c0
leaq 0x5d07(%rip), %rdi      # 0xc722
callq 0x31b0
jmp 0x6a62
jmp 0x6a97
movq %rax, %rbx
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
jmp 0x6a8b
jmp 0x6a62
jmp 0x6a97
movq %rax, %rbx
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
jmp 0x6a8b
jmp 0x6a62
jmp 0x6a97
movq %rax, %rbx
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
jmp 0x6a8b
movq %rax, %rbx
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
jne 0x6a90
jmp 0x6a9a
jmp 0x6a97
jmp 0x6a97
movq %rax, %rbx
cmpl $0x0, (%r15)
jne 0x6a83
movl -0x2c(%rbp), %eax
movl %eax, (%r15)
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x6a9a
callq 0x3260
jmp 0x6a9a
movq %rax, %rbx
movq 0xa51f(%rip), %rsi      # 0x10fc0
leaq -0x248(%rbp), %rdi
callq 0x3180
leaq -0x1d8(%rbp), %rdi
callq 0x30f0
movq %rbx, %rdi
callq 0x3480
nop