// File: kmyk[P]procon26/procon26.cpp
// Function: block::block(block_t const&)
block::block(block_t const & a) {
    for (flip_t f : { H, T }) {
        for (rot_t r : { R0, R90, R180, R270 }) {
            m_offset[f][r] = { 0, 0 };
            m_size[f][r] = { N, N };
        }
    }
    // > 石は 1 個以上かつ，16 個以下のブロックにより構成され，
    m_area = area_cell(a.a, true);
    assert (1 <= m_area and m_area <= 16);
    // > 石操作の順番として，はじめに石の裏表を決め，そのあとに回転させる。
    copy_cell(a.a, m_cell[H][R0]);
    copy_cell_flip(m_cell[H][R0], m_cell[T][R0]);
    for (flip_t f : { H, T }) {
        for (rot_t r : { R0, R90, R180 }) {
            copy_cell_rot90(m_cell[f][r], m_cell[f][rot90(r)]);
        }
    }
    for (flip_t f : { H, T }) {
        for (rot_t r : { R0, R90, R180, R270 }) {
            shrink_cell(m_cell[f][r], m_offset[f][r], m_size[f][r], false);
            m_stones[f][r] = collect_cell(m_cell[f][r], m_offset[f][r], m_size[f][r]);
            // skipが効きやすく
            std::sort(m_stones[f][r].begin(), m_stones[f][r].end(), [](point_t const & a, point_t const & b) {
                return std::make_pair(- a.x, - a.y) < std::make_pair(- b.x, - b.y);
            });
        }
    }
    for (flip_t f : { H, T }) {
        for (rot_t r : { R0, R90, R180, R270 }) {
            m_skips[f][r].resize(m_area);
            repeat (i, m_area) {
                point_t p = m_stones[f][r][i];
                m_skips[f][r][i] = 0;
                while (is_on_board(p) and m_cell[f][r][p.y][p.x]) {
                    p.x -= 1;
                    m_skips[f][r][i] += 1;
                }
            }
        }
    }
    std::set<uint64_t> sigs;
    for (flip_t f : { H, T }) {
        for (rot_t r : { R0, R90, R180, R270 }) {
            uint64_t sig = signature_block(m_cell[f][r], m_offset[f][r]);
            m_duplicated[f][r] = sigs.count(sig);
            sigs.insert(sig);
        }
    }
    m_signature = *sigs.begin();
    m_circumference = 0;
    repeat (i, m_area) {
        point_t p = m_stones[H][R0][i];
        repeat (j,4) {
            auto q = p + dp[j];
            m_circumference +=
                not is_on_board(q) ? 1 :
                m_cell[H][R0][q.y][q.x] == 0 ? 1 :
                0;
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3f0, %rsp            # imm = 0x3F0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x348(%rbp)
addq $0x290, %rax            # imm = 0x290
movq %rax, -0x340(%rbp)
movq %rax, %rcx
addq $0xc0, %rcx
movq %rcx, -0x338(%rbp)
movq %rax, -0x330(%rbp)
movq -0x330(%rbp), %rdi
movq %rdi, -0x350(%rbp)
callq 0x7f10
movq -0x350(%rbp), %rax
movq -0x338(%rbp), %rcx
addq $0x18, %rax
cmpq %rcx, %rax
movq %rax, -0x330(%rbp)
jne 0x185b3
movq -0x348(%rbp), %rax
addq $0x350, %rax            # imm = 0x350
movq %rax, -0x368(%rbp)
movq %rax, %rcx
addq $0xc0, %rcx
movq %rcx, -0x360(%rbp)
movq %rax, -0x358(%rbp)
movq -0x358(%rbp), %rdi
movq %rdi, -0x370(%rbp)
callq 0x5a20
movq -0x370(%rbp), %rax
movq -0x360(%rbp), %rcx
addq $0x18, %rax
cmpq %rcx, %rax
movq %rax, -0x358(%rbp)
jne 0x18610
movl $0x0, -0x30(%rbp)
movl $0x1, -0x2c(%rbp)
leaq -0x30(%rbp), %rax
movq %rax, -0x28(%rbp)
movq $0x2, -0x20(%rbp)
leaq -0x28(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x1b2f0
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rdi
callq 0x1b310
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
cmpq -0x40(%rbp), %rax
je 0x18799
movq -0x38(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x44(%rbp)
movl $0x0, -0x70(%rbp)
movl $0x1, -0x6c(%rbp)
movl $0x2, -0x68(%rbp)
movl $0x3, -0x64(%rbp)
leaq -0x70(%rbp), %rax
movq %rax, -0x60(%rbp)
movq $0x4, -0x58(%rbp)
leaq -0x60(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
callq 0x1b350
movq %rax, -0x78(%rbp)
movq -0x50(%rbp), %rdi
callq 0x1b370
movq %rax, -0x80(%rbp)
movq -0x78(%rbp), %rax
cmpq -0x80(%rbp), %rax
je 0x18786
movq -0x348(%rbp), %rax
movq -0x78(%rbp), %rcx
movl (%rcx), %ecx
movl %ecx, -0x84(%rbp)
movl $0x0, -0x8c(%rbp)
movl $0x0, -0x88(%rbp)
movq %rax, %rcx
addq $0x200, %rcx            # imm = 0x200
movl -0x44(%rbp), %edx
shlq $0x5, %rdx
addq %rdx, %rcx
movl -0x84(%rbp), %edx
movq -0x8c(%rbp), %rsi
movq %rsi, (%rcx,%rdx,8)
movl $0x8, -0x94(%rbp)
movl $0x8, -0x90(%rbp)
addq $0x240, %rax            # imm = 0x240
movl -0x44(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movl -0x84(%rbp), %ecx
movq -0x94(%rbp), %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x78(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x78(%rbp)
jmp 0x186e6
jmp 0x18788
movq -0x38(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x38(%rbp)
jmp 0x18681
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x1b3b0
movl %eax, -0x374(%rbp)
jmp 0x187af
movq -0x348(%rbp), %rdx
movl -0x374(%rbp), %eax
movl %eax, 0x280(%rdx)
xorl %eax, %eax
movl $0x1, %ecx
cmpl 0x280(%rdx), %ecx
movb %al, -0x375(%rbp)
jg 0x187ee
movq -0x348(%rbp), %rax
cmpl $0x10, 0x280(%rax)
setle %al
movb %al, -0x375(%rbp)
movb -0x375(%rbp), %al
testb $0x1, %al
jne 0x187fa
jmp 0x187fc
jmp 0x18832
leaq 0x8a91(%rip), %rdi      # 0x21294
leaq 0x8aa7(%rip), %rsi      # 0x212b1
movl $0x10f, %edx            # imm = 0x10F
leaq 0x8aa8(%rip), %rcx      # 0x212be
callq 0x20d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x19389
movq -0x348(%rbp), %rsi
movq -0x10(%rbp), %rdi
callq 0x1b440
jmp 0x18844
movq -0x348(%rbp), %rdi
movq %rdi, %rsi
addq $0x100, %rsi            # imm = 0x100
callq 0x1b4b0
jmp 0x1885c
movl $0x0, -0xc8(%rbp)
movl $0x1, -0xc4(%rbp)
leaq -0xc8(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq $0x2, -0xb8(%rbp)
leaq -0xc0(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rdi
callq 0x1b2f0
movq %rax, -0xd0(%rbp)
movq -0xb0(%rbp), %rdi
callq 0x1b310
movq %rax, -0xd8(%rbp)
movq -0xd0(%rbp), %rax
cmpq -0xd8(%rbp), %rax
je 0x18a02
movq -0xd0(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xdc(%rbp)
movl $0x0, -0x104(%rbp)
movl $0x1, -0x100(%rbp)
movl $0x2, -0xfc(%rbp)
leaq -0x104(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq $0x3, -0xf0(%rbp)
leaq -0xf8(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rdi
callq 0x1b350
movq %rax, -0x110(%rbp)
movq -0xe8(%rbp), %rdi
callq 0x1b370
movq %rax, -0x118(%rbp)
movq -0x110(%rbp), %rax
cmpq -0x118(%rbp), %rax
je 0x189e9
movq -0x348(%rbp), %rax
movq -0x110(%rbp), %rcx
movl (%rcx), %ecx
movl %ecx, -0x11c(%rbp)
movl -0xdc(%rbp), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq %rax, -0x390(%rbp)
movl -0x11c(%rbp), %ecx
movl %ecx, %edi
shlq $0x6, %rcx
addq %rcx, %rax
movq %rax, -0x388(%rbp)
callq 0x1e8f0
movl %eax, -0x37c(%rbp)
jmp 0x189ac
movq -0x388(%rbp), %rdi
movq -0x390(%rbp), %rsi
movl -0x37c(%rbp), %eax
movl %eax, %eax
shlq $0x6, %rax
addq %rax, %rsi
callq 0x1b530
jmp 0x189d0
jmp 0x189d2
movq -0x110(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x110(%rbp)
jmp 0x1894b
jmp 0x189eb
movq -0xd0(%rbp), %rax
addq $0x4, %rax
movq %rax, -0xd0(%rbp)
jmp 0x188bd
movl $0x0, -0x140(%rbp)
movl $0x1, -0x13c(%rbp)
leaq -0x140(%rbp), %rax
movq %rax, -0x138(%rbp)
movq $0x2, -0x130(%rbp)
leaq -0x138(%rbp), %rax
movq %rax, -0x128(%rbp)
movq -0x128(%rbp), %rdi
callq 0x1b2f0
movq %rax, -0x148(%rbp)
movq -0x128(%rbp), %rdi
callq 0x1b310
movq %rax, -0x150(%rbp)
movq -0x148(%rbp), %rax
cmpq -0x150(%rbp), %rax
je 0x18cbd
movq -0x148(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x154(%rbp)
movl $0x0, -0x180(%rbp)
movl $0x1, -0x17c(%rbp)
movl $0x2, -0x178(%rbp)
movl $0x3, -0x174(%rbp)
leaq -0x180(%rbp), %rax
movq %rax, -0x170(%rbp)
movq $0x4, -0x168(%rbp)
leaq -0x170(%rbp), %rax
movq %rax, -0x160(%rbp)
movq -0x160(%rbp), %rdi
callq 0x1b350
movq %rax, -0x188(%rbp)
movq -0x160(%rbp), %rdi
callq 0x1b370
movq %rax, -0x190(%rbp)
movq -0x188(%rbp), %rax
cmpq -0x190(%rbp), %rax
je 0x18ca4
movq -0x348(%rbp), %rax
movq -0x188(%rbp), %rcx
movl (%rcx), %ecx
movl %ecx, -0x194(%rbp)
movl -0x154(%rbp), %ecx
movl %ecx, %edx
movq %rdx, %rcx
shlq $0x8, %rcx
movq %rax, %rdi
addq %rcx, %rdi
movl -0x194(%rbp), %ecx
movq %rcx, %rsi
shlq $0x6, %rsi
addq %rsi, %rdi
shlq $0x5, %rdx
addq %rdx, %rax
leaq 0x200(%rax,%rcx,8), %rsi
leaq 0x240(%rax,%rcx,8), %rdx
xorl %ecx, %ecx
callq 0x1b5b0
jmp 0x18b6a
movq -0x348(%rbp), %rax
movl -0x154(%rbp), %ecx
movl %ecx, %edx
movq %rdx, %rcx
shlq $0x8, %rcx
movq %rax, %rsi
addq %rcx, %rsi
movl -0x194(%rbp), %ecx
movq %rcx, %rdi
shlq $0x6, %rdi
addq %rdi, %rsi
shlq $0x5, %rdx
addq %rdx, %rax
leaq 0x200(%rax,%rcx,8), %rdx
leaq 0x240(%rax,%rcx,8), %rcx
leaq -0x1b0(%rbp), %rdi
callq 0x1b5f0
jmp 0x18bbb
movq -0x348(%rbp), %rax
movl -0x154(%rbp), %ecx
leaq (%rcx,%rcx,2), %rcx
shlq $0x5, %rcx
leaq 0x290(%rax,%rcx), %rax
movl -0x194(%rbp), %ecx
leaq (%rcx,%rcx,2), %rcx
leaq (%rax,%rcx,8), %rdi
leaq -0x1b0(%rbp), %rsi
movq %rsi, -0x398(%rbp)
callq 0x1b6f0
movq -0x398(%rbp), %rdi
callq 0x7180
movq -0x348(%rbp), %rax
movl -0x154(%rbp), %ecx
leaq (%rcx,%rcx,2), %rcx
shlq $0x5, %rcx
leaq 0x290(%rax,%rcx), %rax
movl -0x194(%rbp), %ecx
leaq (%rcx,%rcx,2), %rcx
leaq (%rax,%rcx,8), %rdi
callq 0x8030
movq %rax, %rcx
movq -0x348(%rbp), %rax
movq %rcx, -0x1b8(%rbp)
movl -0x154(%rbp), %ecx
leaq (%rcx,%rcx,2), %rcx
shlq $0x5, %rcx
leaq 0x290(%rax,%rcx), %rax
movl -0x194(%rbp), %ecx
leaq (%rcx,%rcx,2), %rcx
leaq (%rax,%rcx,8), %rdi
callq 0x8060
movq %rax, -0x1c0(%rbp)
movq -0x1b8(%rbp), %rdi
movq -0x1c0(%rbp), %rsi
callq 0x19430
jmp 0x18c8b
jmp 0x18c8d
movq -0x188(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x188(%rbp)
jmp 0x18afb
jmp 0x18ca6
movq -0x148(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x148(%rbp)
jmp 0x18a63
movl $0x0, -0x1e8(%rbp)
movl $0x1, -0x1e4(%rbp)
leaq -0x1e8(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movq $0x2, -0x1d8(%rbp)
leaq -0x1e0(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movq -0x1d0(%rbp), %rdi
callq 0x1b2f0
movq %rax, -0x1f0(%rbp)
movq -0x1d0(%rbp), %rdi
callq 0x1b310
movq %rax, -0x1f8(%rbp)
movq -0x1f0(%rbp), %rax
cmpq -0x1f8(%rbp), %rax
je 0x18fba
movq -0x1f0(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x1fc(%rbp)
movl $0x0, -0x228(%rbp)
movl $0x1, -0x224(%rbp)
movl $0x2, -0x220(%rbp)
movl $0x3, -0x21c(%rbp)
leaq -0x228(%rbp), %rax
movq %rax, -0x218(%rbp)
movq $0x4, -0x210(%rbp)
leaq -0x218(%rbp), %rax
movq %rax, -0x208(%rbp)
movq -0x208(%rbp), %rdi
callq 0x1b350
movq %rax, -0x230(%rbp)
movq -0x208(%rbp), %rdi
callq 0x1b370
movq %rax, -0x238(%rbp)
movq -0x230(%rbp), %rax
cmpq -0x238(%rbp), %rax
je 0x18fa1
movq -0x348(%rbp), %rax
movq -0x230(%rbp), %rcx
movl (%rcx), %ecx
movl %ecx, -0x23c(%rbp)
movl -0x1fc(%rbp), %ecx
leaq (%rcx,%rcx,2), %rdx
shlq $0x5, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movl -0x23c(%rbp), %edx
leaq (%rdx,%rdx,2), %rdx
leaq 0x350(%rcx,%rdx,8), %rdi
movslq 0x280(%rax), %rsi
callq 0x7490
jmp 0x18e14
movl $0x0, -0x240(%rbp)
movq -0x348(%rbp), %rcx
movl -0x240(%rbp), %eax
cmpl 0x280(%rcx), %eax
jge 0x18f88
movq -0x348(%rbp), %rdi
addq $0x290, %rdi            # imm = 0x290
movl -0x1fc(%rbp), %eax
imulq $0x60, %rax, %rax
addq %rax, %rdi
movl -0x23c(%rbp), %eax
imulq $0x18, %rax, %rax
addq %rax, %rdi
movslq -0x240(%rbp), %rsi
callq 0x8420
movq -0x348(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x248(%rbp)
addq $0x350, %rdi            # imm = 0x350
movl -0x1fc(%rbp), %eax
imulq $0x60, %rax, %rax
addq %rax, %rdi
movl -0x23c(%rbp), %eax
imulq $0x18, %rax, %rax
addq %rax, %rdi
movslq -0x240(%rbp), %rsi
callq 0x53a0
movl $0x0, (%rax)
leaq -0x248(%rbp), %rdi
callq 0x1ecd0
movb %al, -0x399(%rbp)
jmp 0x18ec3
movb -0x399(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x39a(%rbp)
jne 0x18ed8
jmp 0x18f17
movq -0x348(%rbp), %rax
movl -0x1fc(%rbp), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movl -0x23c(%rbp), %ecx
shlq $0x6, %rcx
addq %rcx, %rax
movslq -0x244(%rbp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x248(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x39a(%rbp)
movb -0x39a(%rbp), %al
testb $0x1, %al
jne 0x18f23
jmp 0x18f72
movq -0x348(%rbp), %rdi
movl -0x248(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x248(%rbp)
addq $0x350, %rdi            # imm = 0x350
movl -0x1fc(%rbp), %eax
imulq $0x60, %rax, %rax
addq %rax, %rdi
movl -0x23c(%rbp), %eax
imulq $0x18, %rax, %rax
addq %rax, %rdi
movslq -0x240(%rbp), %rsi
callq 0x53a0
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
jmp 0x18eaf
jmp 0x18f74
movl -0x240(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x240(%rbp)
jmp 0x18e1e
jmp 0x18f8a
movq -0x230(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x230(%rbp)
jmp 0x18db6
jmp 0x18fa3
movq -0x1f0(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x1f0(%rbp)
jmp 0x18d1e
leaq -0x278(%rbp), %rdi
callq 0x1b720
movl $0x0, -0x298(%rbp)
movl $0x1, -0x294(%rbp)
leaq -0x298(%rbp), %rax
movq %rax, -0x290(%rbp)
movq $0x2, -0x288(%rbp)
leaq -0x290(%rbp), %rax
movq %rax, -0x280(%rbp)
movq -0x280(%rbp), %rdi
callq 0x1b2f0
movq %rax, -0x2a0(%rbp)
movq -0x280(%rbp), %rdi
callq 0x1b310
movq %rax, -0x2a8(%rbp)
movq -0x2a0(%rbp), %rax
cmpq -0x2a8(%rbp), %rax
je 0x191fd
movq -0x2a0(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x2ac(%rbp)
movl $0x0, -0x2d8(%rbp)
movl $0x1, -0x2d4(%rbp)
movl $0x2, -0x2d0(%rbp)
movl $0x3, -0x2cc(%rbp)
leaq -0x2d8(%rbp), %rax
movq %rax, -0x2c8(%rbp)
movq $0x4, -0x2c0(%rbp)
leaq -0x2c8(%rbp), %rax
movq %rax, -0x2b8(%rbp)
movq -0x2b8(%rbp), %rdi
callq 0x1b350
movq %rax, -0x2e0(%rbp)
movq -0x2b8(%rbp), %rdi
callq 0x1b370
movq %rax, -0x2e8(%rbp)
movq -0x2e0(%rbp), %rax
cmpq -0x2e8(%rbp), %rax
je 0x191e4
movq -0x348(%rbp), %rax
movq -0x2e0(%rbp), %rcx
movl (%rcx), %ecx
movl %ecx, -0x2ec(%rbp)
movl -0x2ac(%rbp), %ecx
movl %ecx, %edx
movq %rdx, %rcx
shlq $0x8, %rcx
movq %rax, %rdi
addq %rcx, %rdi
movl -0x2ec(%rbp), %ecx
movq %rcx, %rsi
shlq $0x6, %rsi
addq %rsi, %rdi
shlq $0x5, %rdx
addq %rdx, %rax
leaq 0x200(%rax,%rcx,8), %rsi
callq 0x17180
movq %rax, -0x2f8(%rbp)
leaq -0x278(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0x1b740
movq %rax, -0x3a8(%rbp)
jmp 0x19145
movq -0x348(%rbp), %rax
movq -0x3a8(%rbp), %rcx
testq %rcx, %rcx
movl -0x2ac(%rbp), %ecx
leaq (%rax,%rcx,4), %rcx
movl -0x2ec(%rbp), %eax
setne 0x288(%rax,%rcx)
leaq -0x278(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0x1b7a0
movb %dl, -0x3b1(%rbp)
movq %rax, -0x3b0(%rbp)
jmp 0x19190
movb -0x3b1(%rbp), %al
movq -0x3b0(%rbp), %rcx
movq %rcx, -0x308(%rbp)
movb %al, -0x300(%rbp)
movq -0x2e0(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x2e0(%rbp)
jmp 0x190bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x1b840
jmp 0x19389
jmp 0x191e6
movq -0x2a0(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x2a0(%rbp)
jmp 0x19027
leaq -0x278(%rbp), %rdi
callq 0x1b7f0
movq %rax, -0x310(%rbp)
leaq -0x310(%rbp), %rdi
callq 0x1b820
movq %rax, %rcx
movq -0x348(%rbp), %rax
movq (%rcx), %rcx
movq %rcx, 0x410(%rax)
movl $0x0, 0x284(%rax)
movl $0x0, -0x314(%rbp)
movq -0x348(%rbp), %rcx
movl -0x314(%rbp), %eax
cmpl 0x280(%rcx), %eax
jge 0x19374
movq -0x348(%rbp), %rdi
addq $0x290, %rdi            # imm = 0x290
movslq -0x314(%rbp), %rsi
callq 0x8420
movq (%rax), %rax
movq %rax, -0x31c(%rbp)
movl $0x0, -0x320(%rbp)
cmpl $0x4, -0x320(%rbp)
jge 0x1935e
movslq -0x320(%rbp), %rcx
leaq 0x7f8a(%rip), %rax      # 0x21230
leaq (%rax,%rcx,8), %rsi
leaq -0x31c(%rbp), %rdi
callq 0x7e80
movq %rax, -0x3c0(%rbp)
jmp 0x192bf
movq -0x3c0(%rbp), %rax
movq %rax, -0x328(%rbp)
leaq -0x328(%rbp), %rdi
callq 0x1ecd0
movb %al, -0x3c1(%rbp)
jmp 0x192e1
movb -0x3c1(%rbp), %al
testb $0x1, %al
jne 0x192fa
jmp 0x192ed
movl $0x1, %eax
movl %eax, -0x3c8(%rbp)
jmp 0x19331
movq -0x348(%rbp), %rax
movslq -0x324(%rbp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movslq -0x328(%rbp), %rcx
movb (%rax,%rcx), %al
andb $0x1, %al
movzbl %al, %edx
xorl %eax, %eax
movl $0x1, %ecx
cmpl $0x0, %edx
cmovel %ecx, %eax
movl %eax, -0x3c8(%rbp)
movq -0x348(%rbp), %rax
movl -0x3c8(%rbp), %ecx
addl 0x284(%rax), %ecx
movl %ecx, 0x284(%rax)
movl -0x320(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x320(%rbp)
jmp 0x1928b
jmp 0x19360
movl -0x314(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x314(%rbp)
jmp 0x19244
leaq -0x278(%rbp), %rdi
callq 0x1b840
addq $0x3f0, %rsp            # imm = 0x3F0
popq %rbp
retq
movq -0x368(%rbp), %rax
addq $0xc0, %rax
movq %rax, -0x3d0(%rbp)
movq -0x3d0(%rbp), %rdi
addq $-0x18, %rdi
movq %rdi, -0x3d8(%rbp)
callq 0x6cf0
movq -0x368(%rbp), %rcx
movq -0x3d8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x3d0(%rbp)
jne 0x1939d
movq -0x340(%rbp), %rax
addq $0xc0, %rax
movq %rax, -0x3e0(%rbp)
movq -0x3e0(%rbp), %rdi
addq $-0x18, %rdi
movq %rdi, -0x3e8(%rbp)
callq 0x7180
movq -0x340(%rbp), %rcx
movq -0x3e8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x3e0(%rbp)
jne 0x193e2
jmp 0x19415
movq -0xa0(%rbp), %rdi
callq 0x2260
nopw %cs:(%rax,%rax)