// File: sgielen[P]clife/./clife.hpp
// Function: GameOfLifeField<SimpleValue<(char)-128, (char)0>, true>::nextState()
void nextState() {
		std::vector<ValueType> new_field(width * height, ValueType());
		std::vector<ValueType> neighbors;
		for(int y = 0; y < height; ++y) {
			for(int x = 0; x < width; ++x) {
				neighbors.clear();
				neighbors_set(y, x, neighbors);
				int num = neighbors.size();
				bool set = is_set(y, x);
				if(set && (num == 2 || num == 3)) {
					new_field[y * width + x] = field[y * width + x];
					new_field[y * width + x].age_once();
				} else if(num == 3) {
					new_field[y * width + x] = ValueType(neighbors);
				}
			}
		}
		field = new_field;
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x98(%rbp)
movl 0x18(%rax), %ecx
movl 0x1c(%rax), %eax
imull %ecx, %eax
cltq
movq %rax, -0x90(%rbp)
leaq -0x21(%rbp), %rdi
movq %rdi, -0x88(%rbp)
callq 0x8870
leaq -0x22(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0x8890
movq -0x90(%rbp), %rsi
movq -0x88(%rbp), %rdx
movq -0x80(%rbp), %rcx
leaq -0x20(%rbp), %rdi
callq 0x88b0
jmp 0x7a56
leaq -0x22(%rbp), %rdi
callq 0x8000
leaq -0x50(%rbp), %rdi
callq 0x8d40
movl $0x0, -0x54(%rbp)
movq -0x98(%rbp), %rcx
movl -0x54(%rbp), %eax
cmpl 0x18(%rcx), %eax
jge 0x7c51
movl $0x0, -0x58(%rbp)
movq -0x98(%rbp), %rcx
movl -0x58(%rbp), %eax
cmpl 0x1c(%rcx), %eax
jge 0x7c41
leaq -0x50(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x8d60
movq -0x98(%rbp), %rdi
movq -0xa0(%rbp), %rcx
movl -0x54(%rbp), %esi
movl -0x58(%rbp), %edx
callq 0x8d80
jmp 0x7ac7
leaq -0x50(%rbp), %rdi
callq 0x7f40
movq -0x98(%rbp), %rdi
movl %eax, -0x5c(%rbp)
movl -0x54(%rbp), %esi
movl -0x58(%rbp), %edx
callq 0x8c10
movb %al, -0xa1(%rbp)
jmp 0x7aed
movb -0xa1(%rbp), %al
andb $0x1, %al
movb %al, -0x5d(%rbp)
testb $0x1, -0x5d(%rbp)
je 0x7bc7
cmpl $0x2, -0x5c(%rbp)
je 0x7b12
cmpl $0x3, -0x5c(%rbp)
jne 0x7bc7
movq -0x98(%rbp), %rdi
movl -0x54(%rbp), %eax
movl 0x1c(%rdi), %ecx
imull %ecx, %eax
movl -0x58(%rbp), %ecx
addl %ecx, %eax
movslq %eax, %rsi
callq 0x8bb0
movq -0x98(%rbp), %rcx
movq %rax, -0xb8(%rbp)
movl -0x54(%rbp), %eax
movl 0x1c(%rcx), %ecx
imull %ecx, %eax
movl -0x58(%rbp), %ecx
addl %ecx, %eax
movslq %eax, %rsi
leaq -0x20(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0x8bb0
movq -0xb8(%rbp), %rdx
movq -0x98(%rbp), %rcx
movq -0xb0(%rbp), %rdi
movb (%rdx), %dl
movb %dl, (%rax)
movl -0x54(%rbp), %eax
movl 0x1c(%rcx), %ecx
imull %ecx, %eax
movl -0x58(%rbp), %ecx
addl %ecx, %eax
movslq %eax, %rsi
callq 0x8bb0
movq %rax, %rdi
callq 0x8e60
jmp 0x7b97
jmp 0x7c31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x22(%rbp), %rdi
callq 0x8000
jmp 0x7c90
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x7c7e
cmpl $0x3, -0x5c(%rbp)
jne 0x7c2f
leaq -0x78(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x7e50
jmp 0x7bdc
leaq -0x5e(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x8e70
jmp 0x7beb
movq -0x98(%rbp), %rcx
movl -0x54(%rbp), %eax
imull 0x1c(%rcx), %eax
addl -0x58(%rbp), %eax
movslq %eax, %rsi
leaq -0x20(%rbp), %rdi
callq 0x8bb0
movb -0x5e(%rbp), %cl
movb %cl, (%rax)
leaq -0x78(%rbp), %rdi
callq 0x8630
jmp 0x7c2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x8630
jmp 0x7c7e
jmp 0x7c31
jmp 0x7c33
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x7a89
jmp 0x7c43
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x7a6f
movq -0x98(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x8e90
jmp 0x7c63
leaq -0x50(%rbp), %rdi
callq 0x8630
leaq -0x20(%rbp), %rdi
callq 0x8630
addq $0xc0, %rsp
popq %rbp
retq
leaq -0x50(%rbp), %rdi
callq 0x8630
leaq -0x20(%rbp), %rdi
callq 0x8630
movq -0x30(%rbp), %rdi
callq 0x2220
nopl (%rax)