// File: /workspace/github_cpp_makefile_star2_O1/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 0x6a05
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 0x69f4
movq -0x60(%rbp), %rax
movq (%rax), %rax
movb (%rax,%r14), %r12b
movzbl %r12b, %eax
movl %r15d, %ecx
leaq 0x5a45(%rip), %rdx      # 0xc104
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
xorl %r15d, %r15d
cmpb $0x7b, %r12b
sete %r15b
jmp 0x69f4
movl $0x4, %r15d
cmpl $0x4f, %eax
je 0x69f4
cmpl $0x7b, %eax
je 0x69f4
cmpl $0x7d, %eax
jne 0x67b5
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 0x6a42
movslq %eax, %rcx
cmpq %rax, %rcx
leaq -0x40(%rbp), %r13
jne 0x6a36
movl (%r15), %ecx
cmpl $0x22, %ecx
je 0x6a36
testl %ecx, %ecx
jne 0x6761
movl -0x2c(%rbp), %ecx
movl %ecx, (%r15)
movq -0x58(%rbp), %rcx
movl %eax, 0xa4(%rcx)
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x6779
callq 0x3260
movq %r13, -0x50(%rbp)
movq %rbx, %r15
movq %rbx, %rdi
leaq 0x5ef9(%rip), %rdx      # 0xc683
movq %rdx, %rsi
callq 0x3bfa
leaq -0x240(%rbp), %rdi
movq %r15, %rsi
callq 0x33e0
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x67af
callq 0x3260
movl $0x5, %r15d
movb %r12b, -0x50(%rbp)
movl $0x1, %edx
leaq -0x248(%rbp), %rdi
movq %rbx, %rsi
callq 0x3310
jmp 0x69f4
movl $0x2, %r15d
cmpl $0x4d, %eax
je 0x69f4
cmpl $0x7b, %eax
je 0x69f4
cmpl $0x7d, %eax
jne 0x69a8
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 0x7952
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x6835
callq 0x3260
movq %r13, -0x50(%rbp)
movq %rbx, %rdi
leaq 0x5e40(%rip), %rdx      # 0xc683
movq %rdx, %rsi
callq 0x3bfa
leaq -0x240(%rbp), %rdi
movq %rbx, %rsi
callq 0x33e0
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x6868
callq 0x3260
movl $0x3, %r15d
jmp 0x69f4
movl $0x3, %r15d
cmpl $0x42, %eax
je 0x69f4
cmpl $0x7b, %eax
je 0x69f4
cmpl $0x7d, %eax
jne 0x69c2
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 0x7db0
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x68d3
callq 0x3260
movq %r13, -0x50(%rbp)
movq %rbx, %rdi
leaq 0x5da2(%rip), %rdx      # 0xc683
movq %rdx, %rsi
callq 0x3bfa
leaq -0x240(%rbp), %rdi
movq %rbx, %rsi
callq 0x33e0
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x6906
callq 0x3260
movl $0x4, %r15d
jmp 0x69f4
movl $0x1, %r15d
cmpl $0x50, %eax
je 0x69f4
cmpl $0x7b, %eax
je 0x69f4
cmpl $0x7d, %eax
jne 0x69dc
leaq -0xd0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x3410
movq -0x68(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x765e
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0x696d
callq 0x3260
movq %r13, -0x50(%rbp)
movq %rbx, %rdi
leaq 0x5d08(%rip), %rdx      # 0xc683
movq %rdx, %rsi
callq 0x3bfa
leaq -0x240(%rbp), %rdi
movq %rbx, %rsi
callq 0x33e0
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x69a0
callq 0x3260
movl $0x2, %r15d
jmp 0x69f4
movb %r12b, -0x50(%rbp)
movl $0x1, %edx
leaq -0x248(%rbp), %rdi
movq %rbx, %rsi
callq 0x3310
jmp 0x69f4
movb %r12b, -0x50(%rbp)
movl $0x1, %edx
leaq -0x248(%rbp), %rdi
movq %rbx, %rsi
callq 0x3310
jmp 0x69f4
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 0x669c
movq 0xa5b4(%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 0x5d05(%rip), %rdi      # 0xc742
callq 0x33c0
leaq 0x5cf9(%rip), %rdi      # 0xc742
callq 0x31b0
jmp 0x6a90
jmp 0x6ac5
movq %rax, %rbx
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
jmp 0x6ab9
jmp 0x6a90
jmp 0x6ac5
movq %rax, %rbx
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
jmp 0x6ab9
jmp 0x6a90
jmp 0x6ac5
movq %rax, %rbx
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
jmp 0x6ab9
movq %rax, %rbx
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
jne 0x6abe
jmp 0x6ac8
jmp 0x6ac5
jmp 0x6ac5
movq %rax, %rbx
cmpl $0x0, (%r15)
jne 0x6ab1
movl -0x2c(%rbp), %eax
movl %eax, (%r15)
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x6ac8
callq 0x3260
jmp 0x6ac8
movq %rax, %rbx
movq 0xa4f1(%rip), %rsi      # 0x10fc0
leaq -0x248(%rbp), %rdi
callq 0x3180
leaq -0x1d8(%rbp), %rdi
callq 0x30f0
movq %rbx, %rdi
callq 0x3480
nop