// File: /workspace/github_cpp_makefile_star2_O1/kmyk[P]procon26/procon26.cpp
// Function: board::shrink()
void board::shrink() {
    m_offset = { 0, 0 };
    m_size = { N, N };
    shrink_cell(m_cell, m_offset, m_size, 1);
    repeat (y,board_size) {
        m_skips[y][board_size-1] = 1;
        for (int x = board_size - 2; x >= 0; -- x) {
            m_skips[y][x] = m_cell[y][x+1] == 0 ? 1 : m_skips[y][x+1] + 1;
        }
    }
    m_stone_offset = { 0, 0 };
    m_stone_size = { N, N };
    shrink_cell(m_cell, m_stone_offset, m_stone_size, [](int n) -> bool { return n <= 1; });
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x1000(%rdi), %rsi
movaps 0x3a1c(%rip), %xmm0     # 0xb240
movups %xmm0, 0x1000(%rdi)
leaq 0x1008(%rdi), %rdx
leaq 0x4(%rsp), %rcx
movl $0x1, (%rcx)
callq 0x9491
leaq 0x102c(%rbx), %rax
leaq 0x10a8(%rbx), %rcx
xorl %edx, %edx
movq %rdx, %rsi
shlq $0x7, %rsi
movl $0x1, 0x7c(%rax,%rsi)
xorl %esi, %esi
cmpl $0x0, -0x102c(%rcx,%rsi,4)
je 0x7874
movl (%rcx,%rsi,4), %edi
incl %edi
jmp 0x7879
movl $0x1, %edi
movl %edi, -0x4(%rcx,%rsi,4)
decq %rsi
cmpq $-0x1f, %rsi
jne 0x7863
incq %rdx
subq $-0x80, %rcx
cmpq $0x20, %rdx
jne 0x7852
movaps 0x39a6(%rip), %xmm0     # 0xb240
movups %xmm0, 0x1014(%rbx)
xorl %ecx, %ecx
xorl %eax, %eax
cmpl $0x2, (%rbx)
jl 0x7904
movl 0x101c(%rbx), %edx
leaq 0x80(%rbx), %rsi
movq $-0x1, %rcx
movq %rsi, %rdi
cmpq $0x1e, %rcx
je 0x78dc
incq %rcx
cmpl $0x1, (%rdi)
leaq 0x80(%rdi), %rdi
jg 0x78c1
cmpq $0x1f, %rcx
jb 0x78fe
leaq 0x1(%rax), %rcx
movl %ecx, 0x1014(%rbx)
decl %edx
movl %edx, 0x101c(%rbx)
addq $0x4, %rsi
cmpl $0x1, 0x4(%rbx,%rax,4)
movq %rcx, %rax
jg 0x78b7
jmp 0x7901
movq %rax, %rcx
movq %rcx, %rax
movl 0x101c(%rbx), %edx
movl 0x1020(%rbx), %esi
movslq %edx, %rdi
movslq 0x1018(%rbx), %r8
movq %r8, %r9
shlq $0x7, %r9
leaq (%r9,%rax,4), %r9
addq %rbx, %r9
addq $0x4, %r9
movq %rdx, %r10
decq %r10
testl %edx, %edx
jle 0x7962
movq %r8, %r11
shlq $0x7, %r11
addq %rbx, %r11
cmpl $0x2, (%r11,%rax,4)
jl 0x797a
xorl %r11d, %r11d
cmpq %r11, %r10
je 0x7962
leaq 0x1(%r11), %r14
cmpl $0x1, (%r9,%r11,4)
movq %r14, %r11
jg 0x794a
cmpq %rdi, %r14
jl 0x797a
incq %r8
movl %r8d, 0x1018(%rbx)
decl %esi
movl %esi, 0x1020(%rbx)
subq $-0x80, %r9
jmp 0x7932
movl 0x101c(%rbx), %edx
movl 0x1020(%rbx), %esi
movslq %esi, %rdi
movslq 0x1018(%rbx), %r8
shlq $0x7, %r8
leaq (%r8,%rbx), %r9
addq $0x80, %r9
movl %ecx, %r10d
decl %ecx
addl %edx, %r10d
decl %r10d
movq %rsi, %r11
decq %r11
addq %rbx, %r8
testl %esi, %esi
jle 0x79e8
leal (%rcx,%rdx), %ebp
movslq %ebp, %r14
cmpl $0x2, (%r8,%r14,4)
jl 0x79f6
movslq %r10d, %r14
leaq (%r9,%r14,4), %r14
xorl %r15d, %r15d
cmpq %r15, %r11
je 0x79e8
incq %r15
cmpl $0x1, (%r14)
leaq 0x80(%r14), %r14
jg 0x79ce
cmpq %rdi, %r15
jl 0x79f6
decq %rdx
movl %edx, 0x101c(%rbx)
decl %r10d
jmp 0x79b3
movslq %edx, %rcx
movl 0x1018(%rbx), %r9d
movl 0x1020(%rbx), %esi
leaq (%rbx,%rax,4), %rdi
addq $0x4, %rdi
leal (%r9,%rsi), %r8d
decl %r8d
decl %r9d
movl %ecx, %r10d
decq %r10
testl %edx, %edx
jle 0x7a5c
leal (%r9,%rsi), %r11d
movslq %r11d, %r11
shlq $0x7, %r11
addq %rbx, %r11
cmpl $0x2, (%r11,%rax,4)
jl 0x7a6a
movslq %r8d, %r11
shlq $0x7, %r11
addq %rdi, %r11
xorl %r14d, %r14d
cmpq %r14, %r10
je 0x7a5c
leaq 0x1(%r14), %r15
cmpl $0x1, (%r11,%r14,4)
movq %r15, %r14
jg 0x7a44
cmpq %rcx, %r15
jl 0x7a6a
decq %rsi
movl %esi, 0x1020(%rbx)
decl %r8d
jmp 0x7a1e
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop