// File: grogers0[P]dots_and_boxes/./Board.h
// Function: EdgeIterator::operator++()
EdgeIterator &operator++()
        {
            if (edge.dir == HORIZ) {
                if (edge.x < width) {
                    if (edge.y <= height) {
                        ++edge.y;
                    } else {
                        ++edge.x;
                        edge.y = 0;
                    }
                } else {
                    edge.dir = VERT;
                    edge.x = 0;
                    edge.y = 0;
                }
            } else {
                if (edge.x <= width) {
                    if (edge.y < height) {
                        ++edge.y;
                    } else {
                        ++edge.x;
                        edge.y = 0;
                    }
                } else {
                    edge.dir = HORIZ;
                    edge.x = -1;
                    edge.y = -1;
                }
            }
            return *this;
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
movw (%rax), %ax
andw $0x1, %ax
movzwl %ax, %eax
cmpl $0x0, %eax
jne 0x8189
movq -0x10(%rbp), %rcx
movw (%rcx), %ax
shlw $0x8, %ax
sarw $0x9, %ax
cwtl
cmpl 0x4(%rcx), %eax
jge 0x8154
movq -0x10(%rbp), %rcx
movw (%rcx), %ax
sarw $0x8, %ax
cwtl
cmpl 0x8(%rcx), %eax
jg 0x8116
movq -0x10(%rbp), %rax
movw (%rax), %cx
sarw $0x8, %cx
movswl %cx, %ecx
addl $0x1, %ecx
movw %cx, %dx
movw (%rax), %cx
andw $0xff, %dx
shlw $0x8, %dx
andw $0xff, %cx
orw %dx, %cx
movw %cx, (%rax)
jmp 0x8152
movq -0x10(%rbp), %rax
movw (%rax), %cx
shlw $0x8, %cx
sarw $0x9, %cx
movswl %cx, %ecx
addl $0x1, %ecx
movw %cx, %dx
movw (%rax), %cx
andw $0x7f, %dx
shlw %dx
andw $0xff01, %cx            # imm = 0xFF01
orw %dx, %cx
movw %cx, (%rax)
movw (%rax), %cx
andw $0xff, %cx
orw $0x0, %cx
movw %cx, (%rax)
jmp 0x8184
movq -0x10(%rbp), %rax
movw (%rax), %cx
andw $-0x2, %cx
orw $0x1, %cx
movw %cx, (%rax)
movw (%rax), %cx
andw $0xff01, %cx            # imm = 0xFF01
orw $0x0, %cx
movw %cx, (%rax)
movw (%rax), %cx
andw $0xff, %cx
orw $0x0, %cx
movw %cx, (%rax)
jmp 0x824e
movq -0x10(%rbp), %rcx
movw (%rcx), %ax
shlw $0x8, %ax
sarw $0x9, %ax
cwtl
cmpl 0x4(%rcx), %eax
jg 0x821a
movq -0x10(%rbp), %rcx
movw (%rcx), %ax
sarw $0x8, %ax
cwtl
cmpl 0x8(%rcx), %eax
jge 0x81dc
movq -0x10(%rbp), %rax
movw (%rax), %cx
sarw $0x8, %cx
movswl %cx, %ecx
addl $0x1, %ecx
movw %cx, %dx
movw (%rax), %cx
andw $0xff, %dx
shlw $0x8, %dx
andw $0xff, %cx
orw %dx, %cx
movw %cx, (%rax)
jmp 0x8218
movq -0x10(%rbp), %rax
movw (%rax), %cx
shlw $0x8, %cx
sarw $0x9, %cx
movswl %cx, %ecx
addl $0x1, %ecx
movw %cx, %dx
movw (%rax), %cx
andw $0x7f, %dx
shlw %dx
andw $0xff01, %cx            # imm = 0xFF01
orw %dx, %cx
movw %cx, (%rax)
movw (%rax), %cx
andw $0xff, %cx
orw $0x0, %cx
movw %cx, (%rax)
jmp 0x824c
movq -0x10(%rbp), %rax
movw (%rax), %cx
andw $-0x2, %cx
orw $0x0, %cx
movw %cx, (%rax)
movw (%rax), %cx
andw $0xff01, %cx            # imm = 0xFF01
orw $0xfe, %cx
movw %cx, (%rax)
movw (%rax), %cx
andw $0xff, %cx
orw $0xff00, %cx            # imm = 0xFF00
movw %cx, (%rax)
jmp 0x824e
movq -0x10(%rbp), %rax
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop