// File: /workspace/github_cpp_makefile_star2_O2/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 $0x218, %rsp            # imm = 0x218
movq %rsi, %rbx
movq %rdi, %r14
leaq -0x240(%rbp), %rdi
callq 0x3360
movq %rbx, %rdi
movq %r14, -0x38(%rbp)
leaq 0x80(%r14), %rax
movq %rax, -0x60(%rbp)
xorl %esi, %esi
leaq -0xc8(%rbp), %r14
leaq -0xa8(%rbp), %rbx
xorl %r15d, %r15d
movq %rdi, -0x68(%rbp)
cmpq %rsi, 0x8(%rdi)
jbe 0x5908
movq %rsi, %r13
callq 0x3490
cmpl $0x4, %r15d
ja 0x58f9
movzbl (%rax), %r12d
movl %r15d, %eax
leaq 0x49cf(%rip), %rcx      # 0xa05c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorl %r15d, %r15d
cmpl $0x7b, %r12d
sete %r15b
jmp 0x58f9
pushq $0x4
popq %r15
cmpl $0x4f, %r12d
je 0x58f9
cmpl $0x7b, %r12d
je 0x58f9
cmpl $0x7d, %r12d
jne 0x5724
leaq -0x58(%rbp), %r15
movq %r15, %rdi
leaq -0x238(%rbp), %rsi
callq 0x3400
movq %r15, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0x611a
movq -0x38(%rbp), %rcx
movl %eax, 0xa4(%rcx)
movq %r15, %rdi
callq 0x3140
movq %r15, %rdi
leaq 0x4f23(%rip), %rsi      # 0xa623
leaq -0x29(%rbp), %rdx
callq 0x3100
leaq -0x238(%rbp), %rdi
movq %r15, %rsi
callq 0x33e0
movq %r15, %rdi
callq 0x3140
pushq $0x5
popq %r15
movsbl %r12b, %esi
leaq -0x240(%rbp), %rdi
callq 0x3310
jmp 0x58f9
pushq $0x2
popq %r15
cmpl $0x4d, %r12d
je 0x58f9
cmpl $0x7b, %r12d
je 0x58f9
cmpl $0x7d, %r12d
jne 0x58c5
movq -0x38(%rbp), %rax
movq 0x60(%rax), %r12
movq %r14, %rdi
leaq -0x238(%rbp), %rsi
callq 0x3400
movq %r12, %rdi
movq %r14, %r15
movq %r14, %rsi
callq 0x650c
movq %r15, %rdi
callq 0x3140
leaq -0x58(%rbp), %r15
movq %r15, %rdi
leaq 0x4e8d(%rip), %rsi      # 0xa623
leaq -0x29(%rbp), %rdx
callq 0x3100
leaq -0x238(%rbp), %rdi
movq %r15, %rsi
callq 0x33e0
movq %r15, %rdi
callq 0x3140
pushq $0x3
jmp 0x58c1
pushq $0x3
popq %r15
cmpl $0x42, %r12d
je 0x58f9
cmpl $0x7b, %r12d
je 0x58f9
cmpl $0x7d, %r12d
jne 0x58d7
movq -0x38(%rbp), %rax
movq 0x70(%rax), %r12
movq %rbx, %rdi
leaq -0x238(%rbp), %rsi
callq 0x3400
movq %r12, %rdi
movq %rbx, %r15
movq %rbx, %rsi
callq 0x6744
movq %r15, %rdi
callq 0x3140
leaq -0x58(%rbp), %r15
movq %r15, %rdi
leaq 0x4e09(%rip), %rsi      # 0xa623
leaq -0x29(%rbp), %rdx
callq 0x3100
leaq -0x238(%rbp), %rdi
movq %r15, %rsi
callq 0x33e0
movq %r15, %rdi
callq 0x3140
pushq $0x4
jmp 0x58c1
pushq $0x1
popq %r15
cmpl $0x50, %r12d
je 0x58f9
cmpl $0x7b, %r12d
je 0x58f9
cmpl $0x7d, %r12d
jne 0x58e9
leaq -0x88(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x3400
movq -0x60(%rbp), %rdi
leaq -0x88(%rbp), %r15
movq %r15, %rsi
callq 0x63ea
movq %r15, %rdi
callq 0x3140
leaq -0x58(%rbp), %r15
movq %r15, %rdi
leaq 0x4d84(%rip), %rsi      # 0xa623
leaq -0x29(%rbp), %rdx
callq 0x3100
leaq -0x238(%rbp), %rdi
movq %r15, %rsi
callq 0x33e0
movq %r15, %rdi
callq 0x3140
pushq $0x2
popq %r15
jmp 0x58f9
movsbl %r12b, %esi
leaq -0x240(%rbp), %rdi
callq 0x3310
jmp 0x58f9
movsbl %r12b, %esi
leaq -0x240(%rbp), %rdi
callq 0x3310
jmp 0x58f9
movsbl %r12b, %esi
leaq -0x240(%rbp), %rdi
callq 0x3310
movq %r13, %rsi
incq %rsi
movq -0x68(%rbp), %rdi
jmp 0x5663
leaq -0x240(%rbp), %rdi
callq 0x3080
addq $0x218, %rsp            # imm = 0x218
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0xc8(%rbp), %rdi
jmp 0x595f
jmp 0x5958
jmp 0x596a
movq %rax, %rbx
leaq -0x88(%rbp), %rdi
jmp 0x595f
jmp 0x596a
jmp 0x5958
jmp 0x596a
jmp 0x5958
jmp 0x5958
movq %rax, %rbx
leaq -0xa8(%rbp), %rdi
jmp 0x595f
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0x3140
jmp 0x596d
jmp 0x596a
jmp 0x596a
movq %rax, %rbx
leaq -0x240(%rbp), %rdi
callq 0x3080
movq %rbx, %rdi
callq 0x3470
nop