// File: Leeingnyo[P]newPuyoC/./board.h
// Function: Board::Deserialize(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void Deserialize(std::string data) {
        for (int i = 0; i < MAP_HEIGHT; i++) {
            for (int j = 0; j < MAP_WIDTH; j++) {
                map[i][j].Deserialize(data.at(i * MAP_WIDTH + j));
            }
        }
        int stateInteger = std::stoi(data.substr(MAP_HEIGHT * MAP_WIDTH, 1));
        state = static_cast<State>(stateInteger);
        if (data.length() > MAP_HEIGHT * MAP_WIDTH + 1) {
            if (bipuyo == nullptr) {
                bipuyo = BiPuyoGenerator::GenerateEmptyBipuyo();
            }
            bipuyo->Deserialize(data.substr(MAP_HEIGHT * MAP_WIDTH + 1, 3));

            std::string buf;
            std::stringstream ss(data.substr(MAP_HEIGHT * MAP_WIDTH + 1 + 3));
            std::vector<std::string> tokens;
            while (ss >> buf)
                tokens.push_back(buf);
            bipuyo_x = std::stoi(tokens[0]);
            bipuyo_y = std::stoi(tokens[1]);
        }
        else {
            bipuyo.reset();
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2c0, %rsp            # imm = 0x2C0
movq %rsi, -0x270(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x268(%rbp)
movl $0x0, -0x14(%rbp)
cmpl $0xd, -0x14(%rbp)
jge 0xa00c
movl $0x0, -0x18(%rbp)
cmpl $0x6, -0x18(%rbp)
jge 0x9fff
movq -0x270(%rbp), %rdi
movq -0x268(%rbp), %rax
movslq -0x14(%rbp), %rcx
imulq $0x6, %rcx, %rcx
addq %rcx, %rax
movslq -0x18(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x278(%rbp)
imull $0x6, -0x14(%rbp), %eax
addl -0x18(%rbp), %eax
movslq %eax, %rsi
callq 0x4530
movq -0x278(%rbp), %rdi
movsbl (%rax), %esi
callq 0x11ca0
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x9fa9
jmp 0xa001
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x9f9c
movq -0x270(%rbp), %rsi
leaq -0x40(%rbp), %rdi
movq %rdi, -0x288(%rbp)
movl $0x4e, %edx
movl $0x1, %ecx
callq 0x4310
movq -0x288(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x9780
movl %eax, -0x27c(%rbp)
jmp 0xa04a
leaq -0x40(%rbp), %rdi
callq 0x41f0
movl -0x27c(%rbp), %ecx
movq -0x268(%rbp), %rax
movq -0x270(%rbp), %rdi
movl %ecx, -0x1c(%rbp)
movl -0x1c(%rbp), %ecx
movl %ecx, 0x68(%rax)
callq 0x4470
cmpq $0x4f, %rax
jbe 0xa31e
movq -0x268(%rbp), %rdi
addq $0x50, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x11cd0
testb $0x1, %al
jne 0xa099
jmp 0xa0db
leaq -0x60(%rbp), %rdi
callq 0x97c0
movq -0x268(%rbp), %rdi
addq $0x50, %rdi
leaq -0x60(%rbp), %rsi
callq 0x8cc0
leaq -0x60(%rbp), %rdi
callq 0x8ca0
jmp 0xa0db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x41f0
jmp 0xa337
movq -0x268(%rbp), %rdi
addq $0x50, %rdi
callq 0x8930
movq -0x270(%rbp), %rsi
movq %rax, -0x298(%rbp)
leaq -0x80(%rbp), %rdi
movq %rdi, -0x290(%rbp)
movl $0x4f, %edx
movl $0x3, %ecx
callq 0x4310
movq -0x298(%rbp), %rdi
movq -0x290(%rbp), %rsi
callq 0xa340
jmp 0xa128
leaq -0x80(%rbp), %rdi
callq 0x41f0
leaq -0xa0(%rbp), %rdi
callq 0x4400
movq -0x270(%rbp), %rsi
leaq -0x248(%rbp), %rdi
movl $0x52, %edx
movq $-0x1, %rcx
callq 0x4310
jmp 0xa15e
movl $0x10, %edi
movl $0x8, %esi
callq 0x11050
movl %eax, %edx
leaq -0x228(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x4490
jmp 0xa184
leaq -0x248(%rbp), %rdi
callq 0x41f0
leaq -0x260(%rbp), %rdi
callq 0x11070
leaq -0x228(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x43d0
movq %rax, -0x2a0(%rbp)
jmp 0xa1b8
movq -0x2a0(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x43b0
movb %al, -0x2a1(%rbp)
jmp 0xa1d6
movb -0x2a1(%rbp), %al
testb $0x1, %al
jne 0xa1e5
jmp 0xa26d
leaq -0x260(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x11090
jmp 0xa1fa
jmp 0xa19c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x41f0
jmp 0xa337
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xa310
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x41f0
jmp 0xa310
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x11120
leaq -0x228(%rbp), %rdi
callq 0x4220
jmp 0xa310
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0x2b0(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x11100
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
movl $0xa, %edx
callq 0x9780
movl %eax, -0x2a8(%rbp)
jmp 0xa2a0
movq -0x268(%rbp), %rax
movl -0x2a8(%rbp), %ecx
movl %ecx, 0x60(%rax)
leaq -0x260(%rbp), %rdi
movl $0x1, %esi
callq 0x11100
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x9780
movl %eax, -0x2b4(%rbp)
jmp 0xa2da
movq -0x268(%rbp), %rax
movl -0x2b4(%rbp), %ecx
movl %ecx, 0x64(%rax)
leaq -0x260(%rbp), %rdi
callq 0x11120
leaq -0x228(%rbp), %rdi
callq 0x4220
leaq -0xa0(%rbp), %rdi
callq 0x41f0
jmp 0xa32e
leaq -0xa0(%rbp), %rdi
callq 0x41f0
jmp 0xa337
movq -0x268(%rbp), %rdi
addq $0x50, %rdi
callq 0xc820
addq $0x2c0, %rsp            # imm = 0x2C0
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x44f0