Program: life

x86 assembly:
	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.globl	_main                           ## -- Begin function main
	.p2align	4, 0x90
_main:                                  ## @main
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	subq	$16, %rsp
	movl	$0, -4(%rbp)
	movl	$0, -8(%rbp)
	callq	_init
	movl	$1, -12(%rbp)
LBB0_1:                                 ## =>This Inner Loop Header: Depth=1
	cmpl	$0, -12(%rbp)
	je	LBB0_5
## %bb.2:                               ##   in Loop: Header=BB0_1 Depth=1
	callq	_draw
	callq	_process
	movl	-8(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -8(%rbp)
	cmpl	$80, -8(%rbp)
	jne	LBB0_4
## %bb.3:                               ##   in Loop: Header=BB0_1 Depth=1
	movl	$0, -12(%rbp)
LBB0_4:                                 ##   in Loop: Header=BB0_1 Depth=1
	jmp	LBB0_1
LBB0_5:
	callq	_libmin_success
	xorl	%eax, %eax
	addq	$16, %rsp
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_init                           ## -- Begin function init
	.p2align	4, 0x90
_init:                                  ## @init
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	subq	$16, %rsp
	movl	$1001, %edi                     ## imm = 0x3E9
	callq	_libmin_srand
	movl	$0, -4(%rbp)
LBB1_1:                                 ## =>This Loop Header: Depth=1
                                        ##     Child Loop BB1_3 Depth 2
	cmpl	$70, -4(%rbp)
	jge	LBB1_8
## %bb.2:                               ##   in Loop: Header=BB1_1 Depth=1
	movslq	-4(%rbp), %rax
	movq	_gridVals@GOTPCREL(%rip), %rdx
	imulq	$22, %rax, %rax
	addq	%rax, %rdx
	movq	_grid(%rip), %rax
	movslq	-4(%rbp), %rcx
	movq	%rdx, (%rax,%rcx,8)
	movslq	-4(%rbp), %rax
	movq	_gridTmpVals@GOTPCREL(%rip), %rdx
	imulq	$22, %rax, %rax
	addq	%rax, %rdx
	movq	_gridTmp(%rip), %rax
	movslq	-4(%rbp), %rcx
	movq	%rdx, (%rax,%rcx,8)
	movl	$0, -8(%rbp)
LBB1_3:                                 ##   Parent Loop BB1_1 Depth=1
                                        ## =>  This Inner Loop Header: Depth=2
	cmpl	$22, -8(%rbp)
	jge	LBB1_6
## %bb.4:                               ##   in Loop: Header=BB1_3 Depth=2
	callq	_libmin_rand
	xorl	%edx, %edx
	divl	_NUM_BLOCKS(%rip)
	movl	%edx, %eax
	movl	%eax, %ecx
	leaq	_BLOCKS(%rip), %rax
	movb	(%rax,%rcx), %dl
	movq	_grid(%rip), %rax
	movslq	-4(%rbp), %rcx
	movq	(%rax,%rcx,8), %rax
	movslq	-8(%rbp), %rcx
	movb	%dl, (%rax,%rcx)
	movq	_gridTmp(%rip), %rax
	movslq	-4(%rbp), %rcx
	movq	(%rax,%rcx,8), %rax
	movslq	-8(%rbp), %rcx
	movb	$32, (%rax,%rcx)
## %bb.5:                               ##   in Loop: Header=BB1_3 Depth=2
	movl	-8(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -8(%rbp)
	jmp	LBB1_3
LBB1_6:                                 ##   in Loop: Header=BB1_1 Depth=1
	jmp	LBB1_7
LBB1_7:                                 ##   in Loop: Header=BB1_1 Depth=1
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -4(%rbp)
	jmp	LBB1_1
LBB1_8:
	leaq	L_.str(%rip), %rdi
	movb	$0, %al
	callq	_libmin_printf
	addq	$16, %rsp
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_draw                           ## -- Begin function draw
	.p2align	4, 0x90
_draw:                                  ## @draw
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	subq	$16, %rsp
	leaq	L_.str.1(%rip), %rdi
	movb	$0, %al
	callq	_libmin_printf
	movl	_evolution(%rip), %esi
	movl	%esi, %eax
	addl	$1, %eax
	movl	%eax, _evolution(%rip)
	leaq	L_.str.2(%rip), %rdi
	movb	$0, %al
	callq	_libmin_printf
	movl	$0, -4(%rbp)
LBB2_1:                                 ## =>This Loop Header: Depth=1
                                        ##     Child Loop BB2_3 Depth 2
	cmpl	$22, -4(%rbp)
	jge	LBB2_8
## %bb.2:                               ##   in Loop: Header=BB2_1 Depth=1
	movl	$0, -8(%rbp)
LBB2_3:                                 ##   Parent Loop BB2_1 Depth=1
                                        ## =>  This Inner Loop Header: Depth=2
	cmpl	$70, -8(%rbp)
	jge	LBB2_6
## %bb.4:                               ##   in Loop: Header=BB2_3 Depth=2
	movq	_grid(%rip), %rax
	movslq	-8(%rbp), %rcx
	movq	(%rax,%rcx,8), %rax
	movslq	-4(%rbp), %rcx
	movsbl	(%rax,%rcx), %esi
	leaq	L_.str.3(%rip), %rdi
	movb	$0, %al
	callq	_libmin_printf
## %bb.5:                               ##   in Loop: Header=BB2_3 Depth=2
	movl	-8(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -8(%rbp)
	jmp	LBB2_3
LBB2_6:                                 ##   in Loop: Header=BB2_1 Depth=1
	leaq	L_.str.4(%rip), %rdi
	movb	$0, %al
	callq	_libmin_printf
## %bb.7:                               ##   in Loop: Header=BB2_1 Depth=1
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -4(%rbp)
	jmp	LBB2_1
LBB2_8:
	addq	$16, %rsp
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_process                        ## -- Begin function process
	.p2align	4, 0x90
_process:                               ## @process
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	subq	$16, %rsp
	movl	$0, -4(%rbp)
LBB3_1:                                 ## =>This Loop Header: Depth=1
                                        ##     Child Loop BB3_3 Depth 2
	cmpl	$22, -4(%rbp)
	jge	LBB3_18
## %bb.2:                               ##   in Loop: Header=BB3_1 Depth=1
	movl	$0, -8(%rbp)
LBB3_3:                                 ##   Parent Loop BB3_1 Depth=1
                                        ## =>  This Inner Loop Header: Depth=2
	cmpl	$70, -8(%rbp)
	jge	LBB3_16
## %bb.4:                               ##   in Loop: Header=BB3_3 Depth=2
	movl	-8(%rbp), %edi
	movl	-4(%rbp), %esi
	callq	_getNumNeigbors
	movl	%eax, -12(%rbp)
	movq	_grid(%rip), %rax
	movslq	-8(%rbp), %rcx
	movq	(%rax,%rcx,8), %rax
	movslq	-4(%rbp), %rcx
	movsbl	(%rax,%rcx), %eax
	movsbl	_LIVE(%rip), %ecx
	cmpl	%ecx, %eax
	jne	LBB3_10
## %bb.5:                               ##   in Loop: Header=BB3_3 Depth=2
	cmpl	$2, -12(%rbp)
	jl	LBB3_7
## %bb.6:                               ##   in Loop: Header=BB3_3 Depth=2
	cmpl	$3, -12(%rbp)
	jle	LBB3_8
LBB3_7:                                 ##   in Loop: Header=BB3_3 Depth=2
	movb	_DEAD(%rip), %dl
	movq	_gridTmp(%rip), %rax
	movslq	-8(%rbp), %rcx
	movq	(%rax,%rcx,8), %rax
	movslq	-4(%rbp), %rcx
	movb	%dl, (%rax,%rcx)
	jmp	LBB3_9
LBB3_8:                                 ##   in Loop: Header=BB3_3 Depth=2
	movb	_LIVE(%rip), %dl
	movq	_gridTmp(%rip), %rax
	movslq	-8(%rbp), %rcx
	movq	(%rax,%rcx,8), %rax
	movslq	-4(%rbp), %rcx
	movb	%dl, (%rax,%rcx)
LBB3_9:                                 ##   in Loop: Header=BB3_3 Depth=2
	jmp	LBB3_14
LBB3_10:                                ##   in Loop: Header=BB3_3 Depth=2
	cmpl	$3, -12(%rbp)
	jne	LBB3_12
## %bb.11:                              ##   in Loop: Header=BB3_3 Depth=2
	movb	_LIVE(%rip), %dl
	movq	_gridTmp(%rip), %rax
	movslq	-8(%rbp), %rcx
	movq	(%rax,%rcx,8), %rax
	movslq	-4(%rbp), %rcx
	movb	%dl, (%rax,%rcx)
	jmp	LBB3_13
LBB3_12:                                ##   in Loop: Header=BB3_3 Depth=2
	movb	_DEAD(%rip), %dl
	movq	_gridTmp(%rip), %rax
	movslq	-8(%rbp), %rcx
	movq	(%rax,%rcx,8), %rax
	movslq	-4(%rbp), %rcx
	movb	%dl, (%rax,%rcx)
LBB3_13:                                ##   in Loop: Header=BB3_3 Depth=2
	jmp	LBB3_14
LBB3_14:                                ##   in Loop: Header=BB3_3 Depth=2
	movl	-8(%rbp), %edi
	movl	-4(%rbp), %esi
	callq	_processMutate
## %bb.15:                              ##   in Loop: Header=BB3_3 Depth=2
	movl	-8(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -8(%rbp)
	jmp	LBB3_3
LBB3_16:                                ##   in Loop: Header=BB3_1 Depth=1
	jmp	LBB3_17
LBB3_17:                                ##   in Loop: Header=BB3_1 Depth=1
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -4(%rbp)
	jmp	LBB3_1
LBB3_18:
	callq	_flip
	addq	$16, %rsp
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_getNumNeigbors                 ## -- Begin function getNumNeigbors
	.p2align	4, 0x90
_getNumNeigbors:                        ## @getNumNeigbors
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	%esi, -8(%rbp)
	movl	$0, -12(%rbp)
	movl	-4(%rbp), %edi
	movl	-8(%rbp), %esi
	callq	_getLeft
	movsbl	%al, %eax
	movsbl	_LIVE(%rip), %ecx
	cmpl	%ecx, %eax
	jne	LBB4_2
## %bb.1:
	movl	-12(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -12(%rbp)
LBB4_2:
	movl	-4(%rbp), %edi
	movl	-8(%rbp), %esi
	callq	_getRight
	movsbl	%al, %eax
	movsbl	_LIVE(%rip), %ecx
	cmpl	%ecx, %eax
	jne	LBB4_4
## %bb.3:
	movl	-12(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -12(%rbp)
LBB4_4:
	movl	-4(%rbp), %edi
	movl	-8(%rbp), %esi
	callq	_getUp
	movsbl	%al, %eax
	movsbl	_LIVE(%rip), %ecx
	cmpl	%ecx, %eax
	jne	LBB4_6
## %bb.5:
	movl	-12(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -12(%rbp)
LBB4_6:
	movl	-4(%rbp), %edi
	movl	-8(%rbp), %esi
	callq	_getDown
	movsbl	%al, %eax
	movsbl	_LIVE(%rip), %ecx
	cmpl	%ecx, %eax
	jne	LBB4_8
## %bb.7:
	movl	-12(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -12(%rbp)
LBB4_8:
	movl	-4(%rbp), %edi
	movl	-8(%rbp), %esi
	callq	_getUpLeft
	movsbl	%al, %eax
	movsbl	_LIVE(%rip), %ecx
	cmpl	%ecx, %eax
	jne	LBB4_10
## %bb.9:
	movl	-12(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -12(%rbp)
LBB4_10:
	movl	-4(%rbp), %edi
	movl	-8(%rbp), %esi
	callq	_getUpRight
	movsbl	%al, %eax
	movsbl	_LIVE(%rip), %ecx
	cmpl	%ecx, %eax
	jne	LBB4_12
## %bb.11:
	movl	-12(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -12(%rbp)
LBB4_12:
	movl	-4(%rbp), %edi
	movl	-8(%rbp), %esi
	callq	_getDownLeft
	movsbl	%al, %eax
	movsbl	_LIVE(%rip), %ecx
	cmpl	%ecx, %eax
	jne	LBB4_14
## %bb.13:
	movl	-12(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -12(%rbp)
LBB4_14:
	movl	-4(%rbp), %edi
	movl	-8(%rbp), %esi
	callq	_getDownRight
	movsbl	%al, %eax
	movsbl	_LIVE(%rip), %ecx
	cmpl	%ecx, %eax
	jne	LBB4_16
## %bb.15:
	movl	-12(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -12(%rbp)
LBB4_16:
	movl	-12(%rbp), %eax
	addq	$16, %rsp
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_processMutate                  ## -- Begin function processMutate
	.p2align	4, 0x90
_processMutate:                         ## @processMutate
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	%esi, -8(%rbp)
	callq	_libmin_rand
	movl	$3000, %ecx                     ## imm = 0xBB8
	xorl	%edx, %edx
	divl	%ecx
	cmpl	$2927, %edx                     ## imm = 0xB6F
	jbe	LBB5_4
## %bb.1:
	movq	_gridTmp(%rip), %rax
	movslq	-4(%rbp), %rcx
	movq	(%rax,%rcx,8), %rax
	movslq	-8(%rbp), %rcx
	movsbl	(%rax,%rcx), %eax
	movsbl	_DEAD(%rip), %ecx
	cmpl	%ecx, %eax
	jne	LBB5_3
## %bb.2:
	jmp	LBB5_3
LBB5_3:
	jmp	LBB5_4
LBB5_4:
	addq	$16, %rsp
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_flip                           ## -- Begin function flip
	.p2align	4, 0x90
_flip:                                  ## @flip
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	movq	_grid(%rip), %rax
	movq	%rax, -8(%rbp)
	movq	_gridTmp(%rip), %rax
	movq	%rax, _grid(%rip)
	movq	-8(%rbp), %rax
	movq	%rax, _gridTmp(%rip)
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_getLeft                        ## -- Begin function getLeft
	.p2align	4, 0x90
_getLeft:                               ## @getLeft
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	movl	%edi, -8(%rbp)
	movl	%esi, -12(%rbp)
	cmpl	$0, -8(%rbp)
	jne	LBB7_2
## %bb.1:
	movb	_DEAD(%rip), %al
	movb	%al, -1(%rbp)
	jmp	LBB7_3
LBB7_2:
	movq	_grid(%rip), %rax
	movl	-8(%rbp), %ecx
	subl	$1, %ecx
	movslq	%ecx, %rcx
	movq	(%rax,%rcx,8), %rax
	movslq	-12(%rbp), %rcx
	movb	(%rax,%rcx), %al
	movb	%al, -13(%rbp)
	movb	-13(%rbp), %al
	movb	%al, -1(%rbp)
LBB7_3:
	movsbl	-1(%rbp), %eax
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_getRight                       ## -- Begin function getRight
	.p2align	4, 0x90
_getRight:                              ## @getRight
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	movl	%edi, -8(%rbp)
	movl	%esi, -12(%rbp)
	cmpl	$69, -8(%rbp)
	jne	LBB8_2
## %bb.1:
	movb	_DEAD(%rip), %al
	movb	%al, -1(%rbp)
	jmp	LBB8_3
LBB8_2:
	movq	_grid(%rip), %rax
	movl	-8(%rbp), %ecx
	addl	$1, %ecx
	movslq	%ecx, %rcx
	movq	(%rax,%rcx,8), %rax
	movslq	-12(%rbp), %rcx
	movb	(%rax,%rcx), %al
	movb	%al, -13(%rbp)
	movb	-13(%rbp), %al
	movb	%al, -1(%rbp)
LBB8_3:
	movsbl	-1(%rbp), %eax
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_getUp                          ## -- Begin function getUp
	.p2align	4, 0x90
_getUp:                                 ## @getUp
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	movl	%edi, -8(%rbp)
	movl	%esi, -12(%rbp)
	cmpl	$0, -12(%rbp)
	jne	LBB9_2
## %bb.1:
	movb	_DEAD(%rip), %al
	movb	%al, -1(%rbp)
	jmp	LBB9_3
LBB9_2:
	movq	_grid(%rip), %rax
	movslq	-8(%rbp), %rcx
	movq	(%rax,%rcx,8), %rax
	movl	-12(%rbp), %ecx
	subl	$1, %ecx
	movslq	%ecx, %rcx
	movb	(%rax,%rcx), %al
	movb	%al, -13(%rbp)
	movb	-13(%rbp), %al
	movb	%al, -1(%rbp)
LBB9_3:
	movsbl	-1(%rbp), %eax
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_getDown                        ## -- Begin function getDown
	.p2align	4, 0x90
_getDown:                               ## @getDown
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	movl	%edi, -8(%rbp)
	movl	%esi, -12(%rbp)
	cmpl	$21, -12(%rbp)
	jne	LBB10_2
## %bb.1:
	movb	_DEAD(%rip), %al
	movb	%al, -1(%rbp)
	jmp	LBB10_3
LBB10_2:
	movq	_grid(%rip), %rax
	movslq	-8(%rbp), %rcx
	movq	(%rax,%rcx,8), %rax
	movl	-12(%rbp), %ecx
	addl	$1, %ecx
	movslq	%ecx, %rcx
	movb	(%rax,%rcx), %al
	movb	%al, -13(%rbp)
	movb	-13(%rbp), %al
	movb	%al, -1(%rbp)
LBB10_3:
	movsbl	-1(%rbp), %eax
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_getUpLeft                      ## -- Begin function getUpLeft
	.p2align	4, 0x90
_getUpLeft:                             ## @getUpLeft
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	movl	%edi, -8(%rbp)
	movl	%esi, -12(%rbp)
	cmpl	$0, -8(%rbp)
	je	LBB11_2
## %bb.1:
	cmpl	$0, -12(%rbp)
	jne	LBB11_3
LBB11_2:
	movb	_DEAD(%rip), %al
	movb	%al, -1(%rbp)
	jmp	LBB11_4
LBB11_3:
	movq	_grid(%rip), %rax
	movl	-8(%rbp), %ecx
	subl	$1, %ecx
	movslq	%ecx, %rcx
	movq	(%rax,%rcx,8), %rax
	movl	-12(%rbp), %ecx
	subl	$1, %ecx
	movslq	%ecx, %rcx
	movb	(%rax,%rcx), %al
	movb	%al, -13(%rbp)
	movb	-13(%rbp), %al
	movb	%al, -1(%rbp)
LBB11_4:
	movsbl	-1(%rbp), %eax
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_getUpRight                     ## -- Begin function getUpRight
	.p2align	4, 0x90
_getUpRight:                            ## @getUpRight
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	movl	%edi, -8(%rbp)
	movl	%esi, -12(%rbp)
	cmpl	$69, -8(%rbp)
	je	LBB12_2
## %bb.1:
	cmpl	$0, -12(%rbp)
	jne	LBB12_3
LBB12_2:
	movb	_DEAD(%rip), %al
	movb	%al, -1(%rbp)
	jmp	LBB12_4
LBB12_3:
	movq	_grid(%rip), %rax
	movl	-8(%rbp), %ecx
	addl	$1, %ecx
	movslq	%ecx, %rcx
	movq	(%rax,%rcx,8), %rax
	movl	-12(%rbp), %ecx
	subl	$1, %ecx
	movslq	%ecx, %rcx
	movb	(%rax,%rcx), %al
	movb	%al, -13(%rbp)
	movb	-13(%rbp), %al
	movb	%al, -1(%rbp)
LBB12_4:
	movsbl	-1(%rbp), %eax
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_getDownLeft                    ## -- Begin function getDownLeft
	.p2align	4, 0x90
_getDownLeft:                           ## @getDownLeft
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	movl	%edi, -8(%rbp)
	movl	%esi, -12(%rbp)
	cmpl	$21, -12(%rbp)
	je	LBB13_2
## %bb.1:
	cmpl	$0, -8(%rbp)
	jne	LBB13_3
LBB13_2:
	movb	_DEAD(%rip), %al
	movb	%al, -1(%rbp)
	jmp	LBB13_4
LBB13_3:
	movq	_grid(%rip), %rax
	movl	-8(%rbp), %ecx
	subl	$1, %ecx
	movslq	%ecx, %rcx
	movq	(%rax,%rcx,8), %rax
	movl	-12(%rbp), %ecx
	addl	$1, %ecx
	movslq	%ecx, %rcx
	movb	(%rax,%rcx), %al
	movb	%al, -13(%rbp)
	movb	-13(%rbp), %al
	movb	%al, -1(%rbp)
LBB13_4:
	movsbl	-1(%rbp), %eax
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_getDownRight                   ## -- Begin function getDownRight
	.p2align	4, 0x90
_getDownRight:                          ## @getDownRight
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	movl	%edi, -8(%rbp)
	movl	%esi, -12(%rbp)
	cmpl	$21, -12(%rbp)
	je	LBB14_2
## %bb.1:
	cmpl	$69, -8(%rbp)
	jne	LBB14_3
LBB14_2:
	movb	_DEAD(%rip), %al
	movb	%al, -1(%rbp)
	jmp	LBB14_4
LBB14_3:
	movq	_grid(%rip), %rax
	movl	-8(%rbp), %ecx
	addl	$1, %ecx
	movslq	%ecx, %rcx
	movq	(%rax,%rcx,8), %rax
	movl	-12(%rbp), %ecx
	addl	$1, %ecx
	movslq	%ecx, %rcx
	movb	(%rax,%rcx), %al
	movb	%al, -13(%rbp)
	movb	-13(%rbp), %al
	movb	%al, -1(%rbp)
LBB14_4:
	movsbl	-1(%rbp), %eax
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.globl	_sleep                          ## -- Begin function sleep
	.p2align	4, 0x90
_sleep:                                 ## @sleep
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	movl	%edi, -4(%rbp)
	movq	_x@GOTPCREL(%rip), %rax
	movl	$0, (%rax)
LBB15_1:                                ## =>This Inner Loop Header: Depth=1
	movq	_x@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	cmpl	$1, %eax
	jge	LBB15_3
## %bb.2:                               ##   in Loop: Header=BB15_1 Depth=1
	movq	_x@GOTPCREL(%rip), %rax
	movl	(%rax), %ecx
	addl	$1, %ecx
	movq	_x@GOTPCREL(%rip), %rax
	movl	%ecx, (%rax)
	jmp	LBB15_1
LBB15_3:
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.section	__DATA,__data
	.globl	_NUM_BLOCKS                     ## @NUM_BLOCKS
	.p2align	2
_NUM_BLOCKS:
	.long	2                               ## 0x2

	.globl	_LIVE                           ## @LIVE
_LIVE:
	.byte	42                              ## 0x2a

	.globl	_DEAD                           ## @DEAD
_DEAD:
	.byte	32                              ## 0x20

	.globl	_BLOCKS                         ## @BLOCKS
_BLOCKS:
	.ascii	" *"

	.globl	_evolution                      ## @evolution
	.p2align	2
_evolution:
	.long	1                               ## 0x1

	.comm	_gridRoots,560,4                ## @gridRoots
	.globl	_grid                           ## @grid
	.p2align	3
_grid:
	.quad	_gridRoots

	.comm	_gridTmpRoots,560,4             ## @gridTmpRoots
	.globl	_gridTmp                        ## @gridTmp
	.p2align	3
_gridTmp:
	.quad	_gridTmpRoots

	.comm	_gridVals,1540,4                ## @gridVals
	.comm	_gridTmpVals,1540,4             ## @gridTmpVals
	.section	__TEXT,__cstring,cstring_literals
L_.str:                                 ## @.str
	.asciz	"\033[2J"

L_.str.1:                               ## @.str.1
	.asciz	"\033[H"

L_.str.2:                               ## @.str.2
	.asciz	"CONWAY'S Game of Life\n\nEvolution #%d\n\n"

L_.str.3:                               ## @.str.3
	.asciz	"%c"

L_.str.4:                               ## @.str.4
	.asciz	"\n"

	.comm	_x,4,2                          ## @x
.subsections_via_symbols


ARM64 assembly:
	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.globl	_main                           ; -- Begin function main
	.p2align	2
_main:                                  ; @main
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #32
	.cfi_def_cfa_offset 32
	stp	x29, x30, [sp, #16]             ; 16-byte Folded Spill
	add	x29, sp, #16
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	stur	wzr, [x29, #-4]
	str	wzr, [sp, #8]
	bl	_init
	mov	w8, #1
	str	w8, [sp, #4]
	b	LBB0_1
LBB0_1:                                 ; =>This Inner Loop Header: Depth=1
	ldr	w8, [sp, #4]
	subs	w8, w8, #0
	cset	w8, eq
	tbnz	w8, #0, LBB0_5
	b	LBB0_2
LBB0_2:                                 ;   in Loop: Header=BB0_1 Depth=1
	bl	_draw
	bl	_process
	ldr	w8, [sp, #8]
	add	w8, w8, #1
	str	w8, [sp, #8]
	ldr	w8, [sp, #8]
	subs	w8, w8, #80
	cset	w8, ne
	tbnz	w8, #0, LBB0_4
	b	LBB0_3
LBB0_3:                                 ;   in Loop: Header=BB0_1 Depth=1
	str	wzr, [sp, #4]
	b	LBB0_4
LBB0_4:                                 ;   in Loop: Header=BB0_1 Depth=1
	b	LBB0_1
LBB0_5:
	bl	_libmin_success
	mov	w0, #0
	ldp	x29, x30, [sp, #16]             ; 16-byte Folded Reload
	add	sp, sp, #32
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_init                           ; -- Begin function init
	.p2align	2
_init:                                  ; @init
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #32
	.cfi_def_cfa_offset 32
	stp	x29, x30, [sp, #16]             ; 16-byte Folded Spill
	add	x29, sp, #16
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	mov	w0, #1001
	bl	_libmin_srand
	stur	wzr, [x29, #-4]
	b	LBB1_1
LBB1_1:                                 ; =>This Loop Header: Depth=1
                                        ;     Child Loop BB1_3 Depth 2
	ldur	w8, [x29, #-4]
	subs	w8, w8, #70
	cset	w8, ge
	tbnz	w8, #0, LBB1_8
	b	LBB1_2
LBB1_2:                                 ;   in Loop: Header=BB1_1 Depth=1
	ldursw	x8, [x29, #-4]
	mov	x9, #22
	mul	x10, x8, x9
	adrp	x8, _gridVals@GOTPAGE
	ldr	x8, [x8, _gridVals@GOTPAGEOFF]
	add	x8, x8, x10
	adrp	x10, _grid@PAGE
	ldr	x10, [x10, _grid@PAGEOFF]
	ldursw	x11, [x29, #-4]
	str	x8, [x10, x11, lsl #3]
	ldursw	x8, [x29, #-4]
	mul	x9, x8, x9
	adrp	x8, _gridTmpVals@GOTPAGE
	ldr	x8, [x8, _gridTmpVals@GOTPAGEOFF]
	add	x8, x8, x9
	adrp	x9, _gridTmp@PAGE
	ldr	x9, [x9, _gridTmp@PAGEOFF]
	ldursw	x10, [x29, #-4]
	str	x8, [x9, x10, lsl #3]
	str	wzr, [sp, #8]
	b	LBB1_3
LBB1_3:                                 ;   Parent Loop BB1_1 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	ldr	w8, [sp, #8]
	subs	w8, w8, #22
	cset	w8, ge
	tbnz	w8, #0, LBB1_6
	b	LBB1_4
LBB1_4:                                 ;   in Loop: Header=BB1_3 Depth=2
	bl	_libmin_rand
	adrp	x8, _NUM_BLOCKS@PAGE
	ldr	w9, [x8, _NUM_BLOCKS@PAGEOFF]
	udiv	w8, w0, w9
	mul	w8, w8, w9
	subs	w8, w0, w8
	mov	x9, x8
	adrp	x8, _BLOCKS@PAGE
	add	x8, x8, _BLOCKS@PAGEOFF
	add	x8, x8, x9
	ldrb	w8, [x8]
	adrp	x9, _grid@PAGE
	ldr	x9, [x9, _grid@PAGEOFF]
	ldursw	x10, [x29, #-4]
	ldr	x9, [x9, x10, lsl #3]
	ldrsw	x10, [sp, #8]
	add	x9, x9, x10
	strb	w8, [x9]
	adrp	x8, _gridTmp@PAGE
	ldr	x8, [x8, _gridTmp@PAGEOFF]
	ldursw	x9, [x29, #-4]
	ldr	x8, [x8, x9, lsl #3]
	ldrsw	x9, [sp, #8]
	add	x9, x8, x9
	mov	w8, #32
	strb	w8, [x9]
	b	LBB1_5
LBB1_5:                                 ;   in Loop: Header=BB1_3 Depth=2
	ldr	w8, [sp, #8]
	add	w8, w8, #1
	str	w8, [sp, #8]
	b	LBB1_3
LBB1_6:                                 ;   in Loop: Header=BB1_1 Depth=1
	b	LBB1_7
LBB1_7:                                 ;   in Loop: Header=BB1_1 Depth=1
	ldur	w8, [x29, #-4]
	add	w8, w8, #1
	stur	w8, [x29, #-4]
	b	LBB1_1
LBB1_8:
	adrp	x0, l_.str@PAGE
	add	x0, x0, l_.str@PAGEOFF
	bl	_libmin_printf
	ldp	x29, x30, [sp, #16]             ; 16-byte Folded Reload
	add	sp, sp, #32
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_draw                           ; -- Begin function draw
	.p2align	2
_draw:                                  ; @draw
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #32
	.cfi_def_cfa_offset 32
	stp	x29, x30, [sp, #16]             ; 16-byte Folded Spill
	add	x29, sp, #16
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	adrp	x0, l_.str.1@PAGE
	add	x0, x0, l_.str.1@PAGEOFF
	bl	_libmin_printf
	adrp	x10, _evolution@PAGE
	ldr	w9, [x10, _evolution@PAGEOFF]
                                        ; implicit-def: $x8
	mov	x8, x9
	mov	x9, x8
	add	w9, w9, #1
	str	w9, [x10, _evolution@PAGEOFF]
	mov	x9, sp
	str	x8, [x9]
	adrp	x0, l_.str.2@PAGE
	add	x0, x0, l_.str.2@PAGEOFF
	bl	_libmin_printf
	stur	wzr, [x29, #-4]
	b	LBB2_1
LBB2_1:                                 ; =>This Loop Header: Depth=1
                                        ;     Child Loop BB2_3 Depth 2
	ldur	w8, [x29, #-4]
	subs	w8, w8, #22
	cset	w8, ge
	tbnz	w8, #0, LBB2_8
	b	LBB2_2
LBB2_2:                                 ;   in Loop: Header=BB2_1 Depth=1
	str	wzr, [sp, #8]
	b	LBB2_3
LBB2_3:                                 ;   Parent Loop BB2_1 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	ldr	w8, [sp, #8]
	subs	w8, w8, #70
	cset	w8, ge
	tbnz	w8, #0, LBB2_6
	b	LBB2_4
LBB2_4:                                 ;   in Loop: Header=BB2_3 Depth=2
	adrp	x8, _grid@PAGE
	ldr	x8, [x8, _grid@PAGEOFF]
	ldrsw	x9, [sp, #8]
	ldr	x8, [x8, x9, lsl #3]
	ldursw	x9, [x29, #-4]
	ldrsb	w10, [x8, x9]
	mov	x9, sp
                                        ; implicit-def: $x8
	mov	x8, x10
	str	x8, [x9]
	adrp	x0, l_.str.3@PAGE
	add	x0, x0, l_.str.3@PAGEOFF
	bl	_libmin_printf
	b	LBB2_5
LBB2_5:                                 ;   in Loop: Header=BB2_3 Depth=2
	ldr	w8, [sp, #8]
	add	w8, w8, #1
	str	w8, [sp, #8]
	b	LBB2_3
LBB2_6:                                 ;   in Loop: Header=BB2_1 Depth=1
	adrp	x0, l_.str.4@PAGE
	add	x0, x0, l_.str.4@PAGEOFF
	bl	_libmin_printf
	b	LBB2_7
LBB2_7:                                 ;   in Loop: Header=BB2_1 Depth=1
	ldur	w8, [x29, #-4]
	add	w8, w8, #1
	stur	w8, [x29, #-4]
	b	LBB2_1
LBB2_8:
	ldp	x29, x30, [sp, #16]             ; 16-byte Folded Reload
	add	sp, sp, #32
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_process                        ; -- Begin function process
	.p2align	2
_process:                               ; @process
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #32
	.cfi_def_cfa_offset 32
	stp	x29, x30, [sp, #16]             ; 16-byte Folded Spill
	add	x29, sp, #16
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	stur	wzr, [x29, #-4]
	b	LBB3_1
LBB3_1:                                 ; =>This Loop Header: Depth=1
                                        ;     Child Loop BB3_3 Depth 2
	ldur	w8, [x29, #-4]
	subs	w8, w8, #22
	cset	w8, ge
	tbnz	w8, #0, LBB3_18
	b	LBB3_2
LBB3_2:                                 ;   in Loop: Header=BB3_1 Depth=1
	str	wzr, [sp, #8]
	b	LBB3_3
LBB3_3:                                 ;   Parent Loop BB3_1 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	ldr	w8, [sp, #8]
	subs	w8, w8, #70
	cset	w8, ge
	tbnz	w8, #0, LBB3_16
	b	LBB3_4
LBB3_4:                                 ;   in Loop: Header=BB3_3 Depth=2
	ldr	w0, [sp, #8]
	ldur	w1, [x29, #-4]
	bl	_getNumNeigbors
	str	w0, [sp, #4]
	adrp	x8, _grid@PAGE
	ldr	x8, [x8, _grid@PAGEOFF]
	ldrsw	x9, [sp, #8]
	ldr	x8, [x8, x9, lsl #3]
	ldursw	x9, [x29, #-4]
	ldrsb	w8, [x8, x9]
	adrp	x9, _LIVE@PAGE
	ldrsb	w9, [x9, _LIVE@PAGEOFF]
	subs	w8, w8, w9
	cset	w8, ne
	tbnz	w8, #0, LBB3_10
	b	LBB3_5
LBB3_5:                                 ;   in Loop: Header=BB3_3 Depth=2
	ldr	w8, [sp, #4]
	subs	w8, w8, #2
	cset	w8, lt
	tbnz	w8, #0, LBB3_7
	b	LBB3_6
LBB3_6:                                 ;   in Loop: Header=BB3_3 Depth=2
	ldr	w8, [sp, #4]
	subs	w8, w8, #3
	cset	w8, le
	tbnz	w8, #0, LBB3_8
	b	LBB3_7
LBB3_7:                                 ;   in Loop: Header=BB3_3 Depth=2
	adrp	x8, _DEAD@PAGE
	ldrb	w8, [x8, _DEAD@PAGEOFF]
	adrp	x9, _gridTmp@PAGE
	ldr	x9, [x9, _gridTmp@PAGEOFF]
	ldrsw	x10, [sp, #8]
	ldr	x9, [x9, x10, lsl #3]
	ldursw	x10, [x29, #-4]
	add	x9, x9, x10
	strb	w8, [x9]
	b	LBB3_9
LBB3_8:                                 ;   in Loop: Header=BB3_3 Depth=2
	adrp	x8, _LIVE@PAGE
	ldrb	w8, [x8, _LIVE@PAGEOFF]
	adrp	x9, _gridTmp@PAGE
	ldr	x9, [x9, _gridTmp@PAGEOFF]
	ldrsw	x10, [sp, #8]
	ldr	x9, [x9, x10, lsl #3]
	ldursw	x10, [x29, #-4]
	add	x9, x9, x10
	strb	w8, [x9]
	b	LBB3_9
LBB3_9:                                 ;   in Loop: Header=BB3_3 Depth=2
	b	LBB3_14
LBB3_10:                                ;   in Loop: Header=BB3_3 Depth=2
	ldr	w8, [sp, #4]
	subs	w8, w8, #3
	cset	w8, ne
	tbnz	w8, #0, LBB3_12
	b	LBB3_11
LBB3_11:                                ;   in Loop: Header=BB3_3 Depth=2
	adrp	x8, _LIVE@PAGE
	ldrb	w8, [x8, _LIVE@PAGEOFF]
	adrp	x9, _gridTmp@PAGE
	ldr	x9, [x9, _gridTmp@PAGEOFF]
	ldrsw	x10, [sp, #8]
	ldr	x9, [x9, x10, lsl #3]
	ldursw	x10, [x29, #-4]
	add	x9, x9, x10
	strb	w8, [x9]
	b	LBB3_13
LBB3_12:                                ;   in Loop: Header=BB3_3 Depth=2
	adrp	x8, _DEAD@PAGE
	ldrb	w8, [x8, _DEAD@PAGEOFF]
	adrp	x9, _gridTmp@PAGE
	ldr	x9, [x9, _gridTmp@PAGEOFF]
	ldrsw	x10, [sp, #8]
	ldr	x9, [x9, x10, lsl #3]
	ldursw	x10, [x29, #-4]
	add	x9, x9, x10
	strb	w8, [x9]
	b	LBB3_13
LBB3_13:                                ;   in Loop: Header=BB3_3 Depth=2
	b	LBB3_14
LBB3_14:                                ;   in Loop: Header=BB3_3 Depth=2
	ldr	w0, [sp, #8]
	ldur	w1, [x29, #-4]
	bl	_processMutate
	b	LBB3_15
LBB3_15:                                ;   in Loop: Header=BB3_3 Depth=2
	ldr	w8, [sp, #8]
	add	w8, w8, #1
	str	w8, [sp, #8]
	b	LBB3_3
LBB3_16:                                ;   in Loop: Header=BB3_1 Depth=1
	b	LBB3_17
LBB3_17:                                ;   in Loop: Header=BB3_1 Depth=1
	ldur	w8, [x29, #-4]
	add	w8, w8, #1
	stur	w8, [x29, #-4]
	b	LBB3_1
LBB3_18:
	bl	_flip
	ldp	x29, x30, [sp, #16]             ; 16-byte Folded Reload
	add	sp, sp, #32
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_getNumNeigbors                 ; -- Begin function getNumNeigbors
	.p2align	2
_getNumNeigbors:                        ; @getNumNeigbors
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #32
	.cfi_def_cfa_offset 32
	stp	x29, x30, [sp, #16]             ; 16-byte Folded Spill
	add	x29, sp, #16
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	stur	w0, [x29, #-4]
	str	w1, [sp, #8]
	str	wzr, [sp, #4]
	ldur	w0, [x29, #-4]
	ldr	w1, [sp, #8]
	bl	_getLeft
	adrp	x8, _LIVE@PAGE
	ldrsb	w8, [x8, _LIVE@PAGEOFF]
	subs	w8, w8, w0, sxtb
	cset	w8, ne
	tbnz	w8, #0, LBB4_2
	b	LBB4_1
LBB4_1:
	ldr	w8, [sp, #4]
	add	w8, w8, #1
	str	w8, [sp, #4]
	b	LBB4_2
LBB4_2:
	ldur	w0, [x29, #-4]
	ldr	w1, [sp, #8]
	bl	_getRight
	adrp	x8, _LIVE@PAGE
	ldrsb	w8, [x8, _LIVE@PAGEOFF]
	subs	w8, w8, w0, sxtb
	cset	w8, ne
	tbnz	w8, #0, LBB4_4
	b	LBB4_3
LBB4_3:
	ldr	w8, [sp, #4]
	add	w8, w8, #1
	str	w8, [sp, #4]
	b	LBB4_4
LBB4_4:
	ldur	w0, [x29, #-4]
	ldr	w1, [sp, #8]
	bl	_getUp
	adrp	x8, _LIVE@PAGE
	ldrsb	w8, [x8, _LIVE@PAGEOFF]
	subs	w8, w8, w0, sxtb
	cset	w8, ne
	tbnz	w8, #0, LBB4_6
	b	LBB4_5
LBB4_5:
	ldr	w8, [sp, #4]
	add	w8, w8, #1
	str	w8, [sp, #4]
	b	LBB4_6
LBB4_6:
	ldur	w0, [x29, #-4]
	ldr	w1, [sp, #8]
	bl	_getDown
	adrp	x8, _LIVE@PAGE
	ldrsb	w8, [x8, _LIVE@PAGEOFF]
	subs	w8, w8, w0, sxtb
	cset	w8, ne
	tbnz	w8, #0, LBB4_8
	b	LBB4_7
LBB4_7:
	ldr	w8, [sp, #4]
	add	w8, w8, #1
	str	w8, [sp, #4]
	b	LBB4_8
LBB4_8:
	ldur	w0, [x29, #-4]
	ldr	w1, [sp, #8]
	bl	_getUpLeft
	adrp	x8, _LIVE@PAGE
	ldrsb	w8, [x8, _LIVE@PAGEOFF]
	subs	w8, w8, w0, sxtb
	cset	w8, ne
	tbnz	w8, #0, LBB4_10
	b	LBB4_9
LBB4_9:
	ldr	w8, [sp, #4]
	add	w8, w8, #1
	str	w8, [sp, #4]
	b	LBB4_10
LBB4_10:
	ldur	w0, [x29, #-4]
	ldr	w1, [sp, #8]
	bl	_getUpRight
	adrp	x8, _LIVE@PAGE
	ldrsb	w8, [x8, _LIVE@PAGEOFF]
	subs	w8, w8, w0, sxtb
	cset	w8, ne
	tbnz	w8, #0, LBB4_12
	b	LBB4_11
LBB4_11:
	ldr	w8, [sp, #4]
	add	w8, w8, #1
	str	w8, [sp, #4]
	b	LBB4_12
LBB4_12:
	ldur	w0, [x29, #-4]
	ldr	w1, [sp, #8]
	bl	_getDownLeft
	adrp	x8, _LIVE@PAGE
	ldrsb	w8, [x8, _LIVE@PAGEOFF]
	subs	w8, w8, w0, sxtb
	cset	w8, ne
	tbnz	w8, #0, LBB4_14
	b	LBB4_13
LBB4_13:
	ldr	w8, [sp, #4]
	add	w8, w8, #1
	str	w8, [sp, #4]
	b	LBB4_14
LBB4_14:
	ldur	w0, [x29, #-4]
	ldr	w1, [sp, #8]
	bl	_getDownRight
	adrp	x8, _LIVE@PAGE
	ldrsb	w8, [x8, _LIVE@PAGEOFF]
	subs	w8, w8, w0, sxtb
	cset	w8, ne
	tbnz	w8, #0, LBB4_16
	b	LBB4_15
LBB4_15:
	ldr	w8, [sp, #4]
	add	w8, w8, #1
	str	w8, [sp, #4]
	b	LBB4_16
LBB4_16:
	ldr	w0, [sp, #4]
	ldp	x29, x30, [sp, #16]             ; 16-byte Folded Reload
	add	sp, sp, #32
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_processMutate                  ; -- Begin function processMutate
	.p2align	2
_processMutate:                         ; @processMutate
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #32
	.cfi_def_cfa_offset 32
	stp	x29, x30, [sp, #16]             ; 16-byte Folded Spill
	add	x29, sp, #16
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	stur	w0, [x29, #-4]
	str	w1, [sp, #8]
	bl	_libmin_rand
	mov	w9, #3000
	udiv	w8, w0, w9
	mul	w8, w8, w9
	subs	w8, w0, w8
	subs	w8, w8, #2927
	cset	w8, ls
	tbnz	w8, #0, LBB5_4
	b	LBB5_1
LBB5_1:
	adrp	x8, _gridTmp@PAGE
	ldr	x8, [x8, _gridTmp@PAGEOFF]
	ldursw	x9, [x29, #-4]
	ldr	x8, [x8, x9, lsl #3]
	ldrsw	x9, [sp, #8]
	ldrsb	w8, [x8, x9]
	adrp	x9, _DEAD@PAGE
	ldrsb	w9, [x9, _DEAD@PAGEOFF]
	subs	w8, w8, w9
	cset	w8, ne
	tbnz	w8, #0, LBB5_3
	b	LBB5_2
LBB5_2:
	b	LBB5_3
LBB5_3:
	b	LBB5_4
LBB5_4:
	ldp	x29, x30, [sp, #16]             ; 16-byte Folded Reload
	add	sp, sp, #32
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_flip                           ; -- Begin function flip
	.p2align	2
_flip:                                  ; @flip
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #16
	.cfi_def_cfa_offset 16
	adrp	x10, _grid@PAGE
	ldr	x8, [x10, _grid@PAGEOFF]
	str	x8, [sp, #8]
	adrp	x9, _gridTmp@PAGE
	ldr	x8, [x9, _gridTmp@PAGEOFF]
	str	x8, [x10, _grid@PAGEOFF]
	ldr	x8, [sp, #8]
	str	x8, [x9, _gridTmp@PAGEOFF]
	add	sp, sp, #16
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_getLeft                        ; -- Begin function getLeft
	.p2align	2
_getLeft:                               ; @getLeft
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #16
	.cfi_def_cfa_offset 16
	str	w0, [sp, #8]
	str	w1, [sp, #4]
	ldr	w8, [sp, #8]
	subs	w8, w8, #0
	cset	w8, ne
	tbnz	w8, #0, LBB7_2
	b	LBB7_1
LBB7_1:
	adrp	x8, _DEAD@PAGE
	ldrb	w8, [x8, _DEAD@PAGEOFF]
	strb	w8, [sp, #15]
	b	LBB7_3
LBB7_2:
	adrp	x8, _grid@PAGE
	ldr	x8, [x8, _grid@PAGEOFF]
	ldr	w9, [sp, #8]
	subs	w9, w9, #1
	ldr	x8, [x8, w9, sxtw #3]
	ldrsw	x9, [sp, #4]
	add	x8, x8, x9
	ldrb	w8, [x8]
	strb	w8, [sp, #3]
	ldrb	w8, [sp, #3]
	strb	w8, [sp, #15]
	b	LBB7_3
LBB7_3:
	ldrsb	w0, [sp, #15]
	add	sp, sp, #16
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_getRight                       ; -- Begin function getRight
	.p2align	2
_getRight:                              ; @getRight
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #16
	.cfi_def_cfa_offset 16
	str	w0, [sp, #8]
	str	w1, [sp, #4]
	ldr	w8, [sp, #8]
	subs	w8, w8, #69
	cset	w8, ne
	tbnz	w8, #0, LBB8_2
	b	LBB8_1
LBB8_1:
	adrp	x8, _DEAD@PAGE
	ldrb	w8, [x8, _DEAD@PAGEOFF]
	strb	w8, [sp, #15]
	b	LBB8_3
LBB8_2:
	adrp	x8, _grid@PAGE
	ldr	x8, [x8, _grid@PAGEOFF]
	ldr	w9, [sp, #8]
	add	w9, w9, #1
	ldr	x8, [x8, w9, sxtw #3]
	ldrsw	x9, [sp, #4]
	add	x8, x8, x9
	ldrb	w8, [x8]
	strb	w8, [sp, #3]
	ldrb	w8, [sp, #3]
	strb	w8, [sp, #15]
	b	LBB8_3
LBB8_3:
	ldrsb	w0, [sp, #15]
	add	sp, sp, #16
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_getUp                          ; -- Begin function getUp
	.p2align	2
_getUp:                                 ; @getUp
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #16
	.cfi_def_cfa_offset 16
	str	w0, [sp, #8]
	str	w1, [sp, #4]
	ldr	w8, [sp, #4]
	subs	w8, w8, #0
	cset	w8, ne
	tbnz	w8, #0, LBB9_2
	b	LBB9_1
LBB9_1:
	adrp	x8, _DEAD@PAGE
	ldrb	w8, [x8, _DEAD@PAGEOFF]
	strb	w8, [sp, #15]
	b	LBB9_3
LBB9_2:
	adrp	x8, _grid@PAGE
	ldr	x8, [x8, _grid@PAGEOFF]
	ldrsw	x9, [sp, #8]
	ldr	x8, [x8, x9, lsl #3]
	ldr	w9, [sp, #4]
	subs	w9, w9, #1
	add	x8, x8, w9, sxtw
	ldrb	w8, [x8]
	strb	w8, [sp, #3]
	ldrb	w8, [sp, #3]
	strb	w8, [sp, #15]
	b	LBB9_3
LBB9_3:
	ldrsb	w0, [sp, #15]
	add	sp, sp, #16
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_getDown                        ; -- Begin function getDown
	.p2align	2
_getDown:                               ; @getDown
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #16
	.cfi_def_cfa_offset 16
	str	w0, [sp, #8]
	str	w1, [sp, #4]
	ldr	w8, [sp, #4]
	subs	w8, w8, #21
	cset	w8, ne
	tbnz	w8, #0, LBB10_2
	b	LBB10_1
LBB10_1:
	adrp	x8, _DEAD@PAGE
	ldrb	w8, [x8, _DEAD@PAGEOFF]
	strb	w8, [sp, #15]
	b	LBB10_3
LBB10_2:
	adrp	x8, _grid@PAGE
	ldr	x8, [x8, _grid@PAGEOFF]
	ldrsw	x9, [sp, #8]
	ldr	x8, [x8, x9, lsl #3]
	ldr	w9, [sp, #4]
	add	w9, w9, #1
	add	x8, x8, w9, sxtw
	ldrb	w8, [x8]
	strb	w8, [sp, #3]
	ldrb	w8, [sp, #3]
	strb	w8, [sp, #15]
	b	LBB10_3
LBB10_3:
	ldrsb	w0, [sp, #15]
	add	sp, sp, #16
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_getUpLeft                      ; -- Begin function getUpLeft
	.p2align	2
_getUpLeft:                             ; @getUpLeft
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #16
	.cfi_def_cfa_offset 16
	str	w0, [sp, #8]
	str	w1, [sp, #4]
	ldr	w8, [sp, #8]
	subs	w8, w8, #0
	cset	w8, eq
	tbnz	w8, #0, LBB11_2
	b	LBB11_1
LBB11_1:
	ldr	w8, [sp, #4]
	subs	w8, w8, #0
	cset	w8, ne
	tbnz	w8, #0, LBB11_3
	b	LBB11_2
LBB11_2:
	adrp	x8, _DEAD@PAGE
	ldrb	w8, [x8, _DEAD@PAGEOFF]
	strb	w8, [sp, #15]
	b	LBB11_4
LBB11_3:
	adrp	x8, _grid@PAGE
	ldr	x8, [x8, _grid@PAGEOFF]
	ldr	w9, [sp, #8]
	subs	w9, w9, #1
	ldr	x8, [x8, w9, sxtw #3]
	ldr	w9, [sp, #4]
	subs	w9, w9, #1
	add	x8, x8, w9, sxtw
	ldrb	w8, [x8]
	strb	w8, [sp, #3]
	ldrb	w8, [sp, #3]
	strb	w8, [sp, #15]
	b	LBB11_4
LBB11_4:
	ldrsb	w0, [sp, #15]
	add	sp, sp, #16
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_getUpRight                     ; -- Begin function getUpRight
	.p2align	2
_getUpRight:                            ; @getUpRight
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #16
	.cfi_def_cfa_offset 16
	str	w0, [sp, #8]
	str	w1, [sp, #4]
	ldr	w8, [sp, #8]
	subs	w8, w8, #69
	cset	w8, eq
	tbnz	w8, #0, LBB12_2
	b	LBB12_1
LBB12_1:
	ldr	w8, [sp, #4]
	subs	w8, w8, #0
	cset	w8, ne
	tbnz	w8, #0, LBB12_3
	b	LBB12_2
LBB12_2:
	adrp	x8, _DEAD@PAGE
	ldrb	w8, [x8, _DEAD@PAGEOFF]
	strb	w8, [sp, #15]
	b	LBB12_4
LBB12_3:
	adrp	x8, _grid@PAGE
	ldr	x8, [x8, _grid@PAGEOFF]
	ldr	w9, [sp, #8]
	add	w9, w9, #1
	ldr	x8, [x8, w9, sxtw #3]
	ldr	w9, [sp, #4]
	subs	w9, w9, #1
	add	x8, x8, w9, sxtw
	ldrb	w8, [x8]
	strb	w8, [sp, #3]
	ldrb	w8, [sp, #3]
	strb	w8, [sp, #15]
	b	LBB12_4
LBB12_4:
	ldrsb	w0, [sp, #15]
	add	sp, sp, #16
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_getDownLeft                    ; -- Begin function getDownLeft
	.p2align	2
_getDownLeft:                           ; @getDownLeft
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #16
	.cfi_def_cfa_offset 16
	str	w0, [sp, #8]
	str	w1, [sp, #4]
	ldr	w8, [sp, #4]
	subs	w8, w8, #21
	cset	w8, eq
	tbnz	w8, #0, LBB13_2
	b	LBB13_1
LBB13_1:
	ldr	w8, [sp, #8]
	subs	w8, w8, #0
	cset	w8, ne
	tbnz	w8, #0, LBB13_3
	b	LBB13_2
LBB13_2:
	adrp	x8, _DEAD@PAGE
	ldrb	w8, [x8, _DEAD@PAGEOFF]
	strb	w8, [sp, #15]
	b	LBB13_4
LBB13_3:
	adrp	x8, _grid@PAGE
	ldr	x8, [x8, _grid@PAGEOFF]
	ldr	w9, [sp, #8]
	subs	w9, w9, #1
	ldr	x8, [x8, w9, sxtw #3]
	ldr	w9, [sp, #4]
	add	w9, w9, #1
	add	x8, x8, w9, sxtw
	ldrb	w8, [x8]
	strb	w8, [sp, #3]
	ldrb	w8, [sp, #3]
	strb	w8, [sp, #15]
	b	LBB13_4
LBB13_4:
	ldrsb	w0, [sp, #15]
	add	sp, sp, #16
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_getDownRight                   ; -- Begin function getDownRight
	.p2align	2
_getDownRight:                          ; @getDownRight
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #16
	.cfi_def_cfa_offset 16
	str	w0, [sp, #8]
	str	w1, [sp, #4]
	ldr	w8, [sp, #4]
	subs	w8, w8, #21
	cset	w8, eq
	tbnz	w8, #0, LBB14_2
	b	LBB14_1
LBB14_1:
	ldr	w8, [sp, #8]
	subs	w8, w8, #69
	cset	w8, ne
	tbnz	w8, #0, LBB14_3
	b	LBB14_2
LBB14_2:
	adrp	x8, _DEAD@PAGE
	ldrb	w8, [x8, _DEAD@PAGEOFF]
	strb	w8, [sp, #15]
	b	LBB14_4
LBB14_3:
	adrp	x8, _grid@PAGE
	ldr	x8, [x8, _grid@PAGEOFF]
	ldr	w9, [sp, #8]
	add	w9, w9, #1
	ldr	x8, [x8, w9, sxtw #3]
	ldr	w9, [sp, #4]
	add	w9, w9, #1
	add	x8, x8, w9, sxtw
	ldrb	w8, [x8]
	strb	w8, [sp, #3]
	ldrb	w8, [sp, #3]
	strb	w8, [sp, #15]
	b	LBB14_4
LBB14_4:
	ldrsb	w0, [sp, #15]
	add	sp, sp, #16
	ret
	.cfi_endproc
                                        ; -- End function
	.globl	_sleep                          ; -- Begin function sleep
	.p2align	2
_sleep:                                 ; @sleep
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #16
	.cfi_def_cfa_offset 16
	adrp	x8, _x@GOTPAGE
	ldr	x8, [x8, _x@GOTPAGEOFF]
	str	x8, [sp]                        ; 8-byte Folded Spill
	str	w0, [sp, #12]
	str	wzr, [x8]
	b	LBB15_1
LBB15_1:                                ; =>This Inner Loop Header: Depth=1
	ldr	x8, [sp]                        ; 8-byte Folded Reload
	ldr	w8, [x8]
	subs	w8, w8, #1
	cset	w8, ge
	tbnz	w8, #0, LBB15_3
	b	LBB15_2
LBB15_2:                                ;   in Loop: Header=BB15_1 Depth=1
	ldr	x9, [sp]                        ; 8-byte Folded Reload
	ldr	w8, [x9]
	add	w8, w8, #1
	str	w8, [x9]
	b	LBB15_1
LBB15_3:
	add	sp, sp, #16
	ret
	.cfi_endproc
                                        ; -- End function
	.section	__DATA,__data
	.globl	_NUM_BLOCKS                     ; @NUM_BLOCKS
	.p2align	2
_NUM_BLOCKS:
	.long	2                               ; 0x2

	.globl	_LIVE                           ; @LIVE
_LIVE:
	.byte	42                              ; 0x2a

	.globl	_DEAD                           ; @DEAD
_DEAD:
	.byte	32                              ; 0x20

	.globl	_BLOCKS                         ; @BLOCKS
_BLOCKS:
	.ascii	" *"

	.globl	_evolution                      ; @evolution
	.p2align	2
_evolution:
	.long	1                               ; 0x1

	.comm	_gridRoots,560,3                ; @gridRoots
	.globl	_grid                           ; @grid
	.p2align	3
_grid:
	.quad	_gridRoots

	.comm	_gridTmpRoots,560,3             ; @gridTmpRoots
	.globl	_gridTmp                        ; @gridTmp
	.p2align	3
_gridTmp:
	.quad	_gridTmpRoots

	.comm	_gridVals,1540,0                ; @gridVals
	.comm	_gridTmpVals,1540,0             ; @gridTmpVals
	.section	__TEXT,__cstring,cstring_literals
l_.str:                                 ; @.str
	.asciz	"\033[2J"

l_.str.1:                               ; @.str.1
	.asciz	"\033[H"

l_.str.2:                               ; @.str.2
	.asciz	"CONWAY'S Game of Life\n\nEvolution #%d\n\n"

l_.str.3:                               ; @.str.3
	.asciz	"%c"

l_.str.4:                               ; @.str.4
	.asciz	"\n"

	.comm	_x,4,2                          ; @x
.subsections_via_symbols