	.file	"215200.c"
	.intel_syntax noprefix
	.text
	.globl	clearUnsolvedCells
	.type	clearUnsolvedCells, @function
clearUnsolvedCells:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	BYTE PTR -1[rbp], 0
	jmp	.L2
.L3:
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -1[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rcx
	mov	rsi, QWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -1[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	add	rax, rsi
	mov	BYTE PTR [rax], 0
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, 1
	mov	BYTE PTR -1[rbp], al
.L2:
	movzx	edx, BYTE PTR -1[rbp]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jle	.L3
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	clearUnsolvedCells, .-clearUnsolvedCells
	.globl	isInsertable
	.type	isInsertable, @function
isInsertable:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	eax, edx
	mov	QWORD PTR -40[rbp], rcx
	mov	edx, edi
	mov	BYTE PTR -20[rbp], dl
	mov	edx, esi
	mov	BYTE PTR -24[rbp], dl
	mov	BYTE PTR -28[rbp], al
	cmp	BYTE PTR -20[rbp], 0
	je	.L5
	cmp	BYTE PTR -20[rbp], 9
	jbe	.L6
.L5:
	mov	eax, 0
	jmp	.L7
.L6:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -28[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -20[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	xor	eax, 1
	test	al, al
	je	.L8
	mov	eax, 0
	jmp	.L7
.L8:
	movzx	ecx, BYTE PTR -24[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	mov	BYTE PTR -24[rbp], dl
	movzx	ecx, BYTE PTR -28[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	mov	BYTE PTR -28[rbp], dl
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -28[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -20[rbp]
	mov	BYTE PTR [rdx], al
	mov	BYTE PTR -7[rbp], 0
	mov	BYTE PTR -6[rbp], 0
	mov	BYTE PTR -5[rbp], 0
	movzx	eax, BYTE PTR -24[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	mov	BYTE PTR -6[rbp], al
	movzx	eax, BYTE PTR -28[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	mov	BYTE PTR -5[rbp], al
	jmp	.L9
.L11:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -6[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -5[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	BYTE PTR -20[rbp], al
	jne	.L10
	mov	eax, 0
	jmp	.L7
.L10:
	movzx	eax, BYTE PTR -7[rbp]
	add	eax, 1
	mov	BYTE PTR -7[rbp], al
	movzx	eax, BYTE PTR -24[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	lea	ecx, [rax+rdx]
	movzx	eax, BYTE PTR -7[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	add	eax, ecx
	mov	BYTE PTR -6[rbp], al
	movzx	eax, BYTE PTR -28[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	lea	esi, [rax+rdx]
	movzx	ecx, BYTE PTR -7[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	lea	eax, [rsi+rdx]
	mov	BYTE PTR -5[rbp], al
.L9:
	movzx	esi, BYTE PTR -7[rbp]
	movzx	ecx, BYTE PTR -24[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	edx, dl
	mov	eax, edx
	add	eax, eax
	lea	edi, [rax+rdx]
	movzx	ecx, BYTE PTR -28[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	add	eax, edi
	cmp	esi, eax
	jl	.L11
	movzx	eax, BYTE PTR -7[rbp]
	add	eax, 1
	mov	BYTE PTR -7[rbp], al
	jmp	.L12
.L14:
	movzx	eax, BYTE PTR -24[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	lea	ecx, [rax+rdx]
	movzx	eax, BYTE PTR -7[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	add	eax, ecx
	mov	BYTE PTR -6[rbp], al
	movzx	eax, BYTE PTR -28[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	lea	esi, [rax+rdx]
	movzx	ecx, BYTE PTR -7[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	lea	eax, [rsi+rdx]
	mov	BYTE PTR -5[rbp], al
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -6[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -5[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	BYTE PTR -20[rbp], al
	jne	.L13
	mov	eax, 0
	jmp	.L7
.L13:
	movzx	eax, BYTE PTR -7[rbp]
	add	eax, 1
	mov	BYTE PTR -7[rbp], al
.L12:
	cmp	BYTE PTR -7[rbp], 8
	jbe	.L14
	mov	BYTE PTR -4[rbp], 0
	jmp	.L15
.L17:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -4[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -28[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	BYTE PTR -20[rbp], al
	jne	.L16
	mov	eax, 0
	jmp	.L7
.L16:
	movzx	eax, BYTE PTR -4[rbp]
	add	eax, 1
	mov	BYTE PTR -4[rbp], al
.L15:
	movzx	eax, BYTE PTR -4[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	ecx, eax
	shr	cl
	movzx	eax, BYTE PTR -24[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	cmp	cl, al
	jb	.L17
	movzx	eax, BYTE PTR -24[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	lea	edx, 1[rax]
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	mov	BYTE PTR -3[rbp], al
	jmp	.L18
.L20:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -3[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -28[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	BYTE PTR -20[rbp], al
	jne	.L19
	mov	eax, 0
	jmp	.L7
.L19:
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, 1
	mov	BYTE PTR -3[rbp], al
.L18:
	cmp	BYTE PTR -3[rbp], 8
	jbe	.L20
	mov	BYTE PTR -2[rbp], 0
	jmp	.L21
.L23:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -2[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	BYTE PTR -20[rbp], al
	jne	.L22
	mov	eax, 0
	jmp	.L7
.L22:
	movzx	eax, BYTE PTR -2[rbp]
	add	eax, 1
	mov	BYTE PTR -2[rbp], al
.L21:
	movzx	eax, BYTE PTR -2[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	ecx, eax
	shr	cl
	movzx	eax, BYTE PTR -28[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	cmp	cl, al
	jb	.L23
	movzx	eax, BYTE PTR -28[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	lea	edx, 1[rax]
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	mov	BYTE PTR -1[rbp], al
	jmp	.L24
.L26:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -1[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	BYTE PTR -20[rbp], al
	jne	.L25
	mov	eax, 0
	jmp	.L7
.L25:
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, 1
	mov	BYTE PTR -1[rbp], al
.L24:
	cmp	BYTE PTR -1[rbp], 8
	jbe	.L26
	mov	eax, 1
.L7:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	isInsertable, .-isInsertable
	.section	.rodata
.LC0:
	.string	"the_stack_data/215200.c"
.LC1:
	.string	"index0<81"
.LC2:
	.string	"index1<81"
	.text
	.globl	areRelatedCells
	.type	areRelatedCells, @function
areRelatedCells:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	edx, edi
	mov	eax, esi
	mov	BYTE PTR -4[rbp], dl
	mov	BYTE PTR -8[rbp], al
	cmp	BYTE PTR -4[rbp], 80
	jbe	.L28
	lea	rcx, __PRETTY_FUNCTION__.10[rip]
	mov	edx, 93
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L28:
	cmp	BYTE PTR -8[rbp], 80
	jbe	.L29
	lea	rcx, __PRETTY_FUNCTION__.10[rip]
	mov	edx, 94
	lea	rsi, .LC0[rip]
	lea	rdi, .LC2[rip]
	call	__assert_fail@PLT
.L29:
	movzx	eax, BYTE PTR -4[rbp]
	cmp	al, BYTE PTR -8[rbp]
	jne	.L30
	mov	eax, 0
	jmp	.L31
.L30:
	movzx	eax, BYTE PTR -4[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	ecx, eax
	shr	cl
	movzx	eax, BYTE PTR -8[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	cmp	cl, al
	jne	.L32
	mov	eax, 1
	jmp	.L31
.L32:
	movzx	esi, BYTE PTR -4[rbp]
	movzx	edx, sil
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	ecx, eax
	shr	cl
	mov	eax, ecx
	sal	eax, 3
	add	eax, ecx
	sub	esi, eax
	mov	ecx, esi
	movzx	esi, BYTE PTR -8[rbp]
	movzx	edx, sil
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	esi, eax
	mov	edx, esi
	cmp	cl, dl
	jne	.L33
	mov	eax, 1
	jmp	.L31
.L33:
	movzx	eax, BYTE PTR -4[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	shr	ax, 8
	mov	ecx, eax
	shr	cl
	movzx	eax, BYTE PTR -8[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	shr	ax, 8
	shr	al
	cmp	cl, al
	jne	.L34
	movzx	ecx, BYTE PTR -4[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	edx, dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	esi, eax
	shr	sil
	movzx	ecx, BYTE PTR -8[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	edx, dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	cmp	sil, al
	jne	.L34
	mov	eax, 1
	jmp	.L31
.L34:
	mov	eax, 0
.L31:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	areRelatedCells, .-areRelatedCells
	.globl	connectionCount
	.type	connectionCount, @function
connectionCount:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	ecx, edi
	mov	eax, esi
	mov	QWORD PTR -32[rbp], rdx
	mov	edx, ecx
	mov	BYTE PTR -20[rbp], dl
	mov	BYTE PTR -24[rbp], al
	movzx	edx, BYTE PTR -24[rbp]
	movzx	eax, BYTE PTR -20[rbp]
	mov	esi, edx
	mov	edi, eax
	call	areRelatedCells
	xor	eax, 1
	test	al, al
	je	.L36
	mov	eax, 0
	jmp	.L37
.L36:
	mov	BYTE PTR -2[rbp], 0
	mov	BYTE PTR -1[rbp], 0
	jmp	.L38
.L40:
	mov	rax, QWORD PTR -32[rbp]
	mov	rcx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -20[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rcx
	mov	rsi, QWORD PTR [rax]
	movzx	ecx, BYTE PTR -20[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	sal	rax, 3
	add	rax, rsi
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -1[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L39
	mov	rax, QWORD PTR -32[rbp]
	mov	rcx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -24[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rcx
	mov	rsi, QWORD PTR [rax]
	movzx	ecx, BYTE PTR -24[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	sal	rax, 3
	add	rax, rsi
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -1[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L39
	movzx	eax, BYTE PTR -2[rbp]
	add	eax, 1
	mov	BYTE PTR -2[rbp], al
.L39:
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, 1
	mov	BYTE PTR -1[rbp], al
.L38:
	cmp	BYTE PTR -1[rbp], 8
	jbe	.L40
	movzx	eax, BYTE PTR -2[rbp]
.L37:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	connectionCount, .-connectionCount
	.globl	connectionCountWithSetOfIndexes
	.type	connectionCountWithSetOfIndexes, @function
connectionCountWithSetOfIndexes:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	eax, edx
	mov	QWORD PTR -40[rbp], rcx
	mov	edx, edi
	mov	BYTE PTR -20[rbp], dl
	mov	edx, esi
	mov	BYTE PTR -24[rbp], dl
	mov	BYTE PTR -28[rbp], al
	mov	BYTE PTR -2[rbp], 0
	movzx	eax, BYTE PTR -24[rbp]
	mov	BYTE PTR -1[rbp], al
	jmp	.L42
.L43:
	movzx	ecx, BYTE PTR -20[rbp]
	movzx	eax, BYTE PTR -1[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	esi, ecx
	mov	edi, eax
	call	connectionCount
	add	BYTE PTR -2[rbp], al
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, 1
	mov	BYTE PTR -1[rbp], al
.L42:
	movzx	eax, BYTE PTR -1[rbp]
	cmp	al, BYTE PTR -28[rbp]
	jbe	.L43
	movzx	eax, BYTE PTR -2[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	connectionCountWithSetOfIndexes, .-connectionCountWithSetOfIndexes
	.globl	cellPossibleValuesCount
	.type	cellPossibleValuesCount, @function
cellPossibleValuesCount:
.LFB11:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	eax, edi
	mov	QWORD PTR -32[rbp], rsi
	mov	BYTE PTR -20[rbp], al
	mov	BYTE PTR -2[rbp], 0
	mov	BYTE PTR -1[rbp], 0
	jmp	.L46
.L48:
	mov	rax, QWORD PTR -32[rbp]
	mov	rcx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -20[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rcx
	mov	rsi, QWORD PTR [rax]
	movzx	ecx, BYTE PTR -20[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	sal	rax, 3
	add	rax, rsi
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -1[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L47
	movzx	eax, BYTE PTR -2[rbp]
	add	eax, 1
	mov	BYTE PTR -2[rbp], al
.L47:
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, 1
	mov	BYTE PTR -1[rbp], al
.L46:
	cmp	BYTE PTR -1[rbp], 8
	jbe	.L48
	movzx	eax, BYTE PTR -2[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	cellPossibleValuesCount, .-cellPossibleValuesCount
	.section	.rodata
	.align 8
.LC3:
	.string	"endIndex: %i    unsolvedCellsIndex: %u\n"
	.align 8
.LC4:
	.string	"endIndex<=puzzle->unsolvedCellsIndex"
	.align 8
.LC5:
	.string	"startIndex: %i   endIndex: %i\n"
.LC6:
	.string	"index>0"
	.text
	.globl	sortEmptyCellsArray
	.type	sortEmptyCellsArray, @function
sortEmptyCellsArray:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	ecx, edi
	mov	eax, esi
	mov	QWORD PTR -32[rbp], rdx
	mov	edx, ecx
	mov	BYTE PTR -20[rbp], dl
	mov	BYTE PTR -24[rbp], al
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR 33[rax]
	cmp	BYTE PTR -24[rbp], al
	jle	.L51
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	edx, al
	movsx	eax, BYTE PTR -24[rbp]
	mov	esi, eax
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	printf@PLT
.L51:
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR 33[rax]
	cmp	BYTE PTR -24[rbp], al
	jle	.L52
	lea	rcx, __PRETTY_FUNCTION__.9[rip]
	mov	edx, 143
	lea	rsi, .LC0[rip]
	lea	rdi, .LC4[rip]
	call	__assert_fail@PLT
.L52:
	movzx	eax, BYTE PTR -20[rbp]
	cmp	al, BYTE PTR -24[rbp]
	jle	.L53
	movsx	edx, BYTE PTR -24[rbp]
	movsx	eax, BYTE PTR -20[rbp]
	mov	esi, eax
	lea	rdi, .LC5[rip]
	mov	eax, 0
	call	printf@PLT
.L53:
	mov	BYTE PTR -4[rbp], 0
	mov	BYTE PTR -10[rbp], 0
	mov	BYTE PTR -3[rbp], 0
	mov	BYTE PTR -2[rbp], 0
	cmp	BYTE PTR -20[rbp], 0
	jne	.L54
	mov	BYTE PTR -9[rbp], -1
	mov	BYTE PTR -8[rbp], 0
	mov	BYTE PTR -1[rbp], 0
	mov	BYTE PTR -7[rbp], 0
	jmp	.L55
.L57:
	movzx	eax, BYTE PTR -7[rbp]
	mov	rdx, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	cellPossibleValuesCount
	mov	BYTE PTR -1[rbp], al
	movzx	eax, BYTE PTR -1[rbp]
	cmp	al, BYTE PTR -9[rbp]
	jnb	.L56
	movzx	eax, BYTE PTR -1[rbp]
	mov	BYTE PTR -9[rbp], al
	movzx	eax, BYTE PTR -7[rbp]
	mov	BYTE PTR -8[rbp], al
.L56:
	movzx	eax, BYTE PTR -7[rbp]
	add	eax, 1
	mov	BYTE PTR -7[rbp], al
.L55:
	movzx	edx, BYTE PTR -7[rbp]
	movsx	eax, BYTE PTR -24[rbp]
	cmp	edx, eax
	jle	.L57
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -8[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -2[rbp], al
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rdx, QWORD PTR -32[rbp]
	mov	rcx, QWORD PTR 24[rdx]
	movzx	edx, BYTE PTR -8[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 24[rax]
	movzx	edx, BYTE PTR -2[rbp]
	mov	BYTE PTR [rax], dl
	mov	BYTE PTR -20[rbp], 1
.L54:
	movzx	eax, BYTE PTR -20[rbp]
	mov	BYTE PTR -6[rbp], al
	jmp	.L58
.L63:
	mov	BYTE PTR -4[rbp], 0
	cmp	BYTE PTR -6[rbp], 0
	jne	.L59
	lea	rcx, __PRETTY_FUNCTION__.9[rip]
	mov	edx, 201
	lea	rsi, .LC0[rip]
	lea	rdi, .LC6[rip]
	call	__assert_fail@PLT
.L59:
	movzx	eax, BYTE PTR -6[rbp]
	mov	BYTE PTR -10[rbp], al
	movzx	eax, BYTE PTR -6[rbp]
	mov	BYTE PTR -5[rbp], al
	jmp	.L60
.L62:
	movzx	eax, BYTE PTR -6[rbp]
	sub	eax, 1
	movzx	edx, al
	movzx	eax, BYTE PTR -5[rbp]
	mov	rcx, QWORD PTR -32[rbp]
	mov	esi, 0
	mov	edi, eax
	call	connectionCountWithSetOfIndexes
	mov	BYTE PTR -3[rbp], al
	movzx	eax, BYTE PTR -3[rbp]
	cmp	al, BYTE PTR -4[rbp]
	jbe	.L61
	movzx	eax, BYTE PTR -5[rbp]
	mov	BYTE PTR -10[rbp], al
.L61:
	movzx	eax, BYTE PTR -5[rbp]
	add	eax, 1
	mov	BYTE PTR -5[rbp], al
.L60:
	movzx	edx, BYTE PTR -5[rbp]
	movsx	eax, BYTE PTR -24[rbp]
	cmp	edx, eax
	jle	.L62
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -6[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -2[rbp], al
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -10[rbp]
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -6[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR [rcx]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -10[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -2[rbp]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -6[rbp]
	add	eax, 1
	mov	BYTE PTR -6[rbp], al
.L58:
	movzx	edx, BYTE PTR -6[rbp]
	movsx	eax, BYTE PTR -24[rbp]
	cmp	edx, eax
	jle	.L63
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	sortEmptyCellsArray, .-sortEmptyCellsArray
	.section	.rodata
	.align 8
.LC7:
	.string	"puzzle->unsolvedCellsIndex==puzzle->emptyCellsCount"
	.text
	.globl	createEmptyCellMatrix
	.type	createEmptyCellMatrix, @function
createEmptyCellMatrix:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 32[rax], 0
	mov	BYTE PTR -4[rbp], 0
	jmp	.L65
.L69:
	mov	BYTE PTR -3[rbp], 0
	jmp	.L66
.L68:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -4[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -3[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L67
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 32[rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 32[rax], dl
.L67:
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, 1
	mov	BYTE PTR -3[rbp], al
.L66:
	cmp	BYTE PTR -3[rbp], 8
	jbe	.L68
	movzx	eax, BYTE PTR -4[rbp]
	add	eax, 1
	mov	BYTE PTR -4[rbp], al
.L65:
	cmp	BYTE PTR -4[rbp], 8
	jbe	.L69
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 32[rax]
	movzx	eax, al
	mov	rdi, rax
	call	malloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 24[rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 33[rax], 0
	mov	BYTE PTR -2[rbp], 0
	jmp	.L70
.L74:
	mov	BYTE PTR -1[rbp], 0
	jmp	.L71
.L73:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -2[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -1[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L72
	movzx	edx, BYTE PTR -2[rbp]
	mov	eax, edx
	sal	eax, 3
	lea	ecx, [rax+rdx]
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	rax, al
	add	rax, rdx
	movzx	edx, BYTE PTR -1[rbp]
	add	edx, ecx
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 33[rax]
	add	eax, 1
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 33[rax], dl
.L72:
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, 1
	mov	BYTE PTR -1[rbp], al
.L71:
	cmp	BYTE PTR -1[rbp], 8
	jbe	.L73
	movzx	eax, BYTE PTR -2[rbp]
	add	eax, 1
	mov	BYTE PTR -2[rbp], al
.L70:
	cmp	BYTE PTR -2[rbp], 8
	jbe	.L74
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	edx, al
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 32[rax]
	movzx	eax, al
	cmp	edx, eax
	je	.L75
	lea	rcx, __PRETTY_FUNCTION__.8[rip]
	mov	edx, 248
	lea	rsi, .LC0[rip]
	lea	rdi, .LC7[rip]
	call	__assert_fail@PLT
.L75:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 33[rax]
	sub	eax, 1
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 33[rax], dl
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	createEmptyCellMatrix, .-createEmptyCellMatrix
	.section	.rodata
.LC8:
	.string	"\n[%d]\n"
.LC9:
	.string	"_____________________"
.LC10:
	.string	"|%u"
.LC11:
	.string	"|"
	.text
	.globl	printPossibilitiesMatrix
	.type	printPossibilitiesMatrix, @function
printPossibilitiesMatrix:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	eax, esi
	mov	BYTE PTR -28[rbp], al
	movzx	eax, BYTE PTR -28[rbp]
	mov	esi, eax
	lea	rdi, .LC8[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC9[rip]
	call	puts@PLT
	mov	BYTE PTR -3[rbp], 0
	jmp	.L77
.L86:
	mov	BYTE PTR -2[rbp], 0
	jmp	.L78
.L82:
	movzx	ecx, BYTE PTR -2[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	mov	edx, eax
	add	edx, edx
	add	edx, eax
	mov	eax, ecx
	sub	eax, edx
	test	al, al
	jne	.L79
	mov	edi, 124
	call	putchar@PLT
.L79:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -3[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -2[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -28[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L80
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -3[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -2[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -28[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC10[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L81
.L80:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -3[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -2[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -28[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC10[rip]
	mov	eax, 0
	call	printf@PLT
.L81:
	movzx	eax, BYTE PTR -2[rbp]
	add	eax, 1
	mov	BYTE PTR -2[rbp], al
.L78:
	cmp	BYTE PTR -2[rbp], 8
	jbe	.L82
	lea	rdi, .LC11[rip]
	call	puts@PLT
	cmp	BYTE PTR -3[rbp], 0
	je	.L83
	movzx	ecx, BYTE PTR -3[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	cmp	dl, 2
	jne	.L83
	mov	BYTE PTR -1[rbp], 0
	jmp	.L84
.L85:
	mov	edi, 862
	call	putchar@PLT
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, 1
	mov	BYTE PTR -1[rbp], al
.L84:
	cmp	BYTE PTR -1[rbp], 20
	jbe	.L85
	mov	edi, 10
	call	putchar@PLT
.L83:
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, 1
	mov	BYTE PTR -3[rbp], al
.L77:
	cmp	BYTE PTR -3[rbp], 8
	jbe	.L86
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	printPossibilitiesMatrix, .-printPossibilitiesMatrix
	.section	.rodata
.LC12:
	.string	"| "
	.text
	.globl	printMatrix
	.type	printMatrix, @function
printMatrix:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	lea	rdi, .LC9[rip]
	call	puts@PLT
	mov	BYTE PTR -3[rbp], 0
	jmp	.L88
.L97:
	mov	BYTE PTR -2[rbp], 0
	jmp	.L89
.L93:
	cmp	BYTE PTR -2[rbp], 0
	je	.L90
	movzx	ecx, BYTE PTR -2[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	mov	edx, eax
	add	edx, edx
	add	edx, eax
	mov	eax, ecx
	sub	eax, edx
	test	al, al
	jne	.L90
	mov	edi, 124
	call	putchar@PLT
.L90:
	movzx	eax, BYTE PTR -3[rbp]
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -2[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L91
	movzx	eax, BYTE PTR -3[rbp]
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -2[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC10[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L92
.L91:
	lea	rdi, .LC12[rip]
	mov	eax, 0
	call	printf@PLT
.L92:
	movzx	eax, BYTE PTR -2[rbp]
	add	eax, 1
	mov	BYTE PTR -2[rbp], al
.L89:
	cmp	BYTE PTR -2[rbp], 8
	jbe	.L93
	lea	rdi, .LC11[rip]
	call	puts@PLT
	cmp	BYTE PTR -3[rbp], 0
	je	.L94
	movzx	ecx, BYTE PTR -3[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	cmp	dl, 2
	jne	.L94
	mov	BYTE PTR -1[rbp], 0
	jmp	.L95
.L96:
	mov	edi, 862
	call	putchar@PLT
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, 1
	mov	BYTE PTR -1[rbp], al
.L95:
	cmp	BYTE PTR -1[rbp], 20
	jbe	.L96
	mov	edi, 10
	call	putchar@PLT
.L94:
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, 1
	mov	BYTE PTR -3[rbp], al
.L88:
	cmp	BYTE PTR -3[rbp], 8
	jbe	.L97
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	printMatrix, .-printMatrix
	.section	.rodata
.LC13:
	.string	"Initial Puzzle"
.LC14:
	.string	"Working Solution"
	.text
	.globl	printPuzzle
	.type	printPuzzle, @function
printPuzzle:
.LFB16:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	lea	rdi, .LC13[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	printMatrix
	lea	rdi, .LC14[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	rdi, rax
	call	printMatrix
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	printPuzzle, .-printPuzzle
	.section	.rodata
	.align 8
.LC15:
	.string	"puzzle->possibilitiesMatrix[row][col][value-1]"
.LC16:
	.string	"boxCounter==8"
.LC17:
	.string	"colCounter==6"
	.align 8
.LC18:
	.string	"puzzle->possibilitiesMatrix[row][index][value-1]==false"
.LC19:
	.string	"rowCounter==6"
	.text
	.globl	insertValueAndSetPossibilities
	.type	insertValueAndSetPossibilities, @function
insertValueAndSetPossibilities:
.LFB17:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	eax, edx
	mov	QWORD PTR -40[rbp], rcx
	mov	edx, edi
	mov	BYTE PTR -20[rbp], dl
	mov	edx, esi
	mov	BYTE PTR -24[rbp], dl
	mov	BYTE PTR -28[rbp], al
	movzx	ecx, BYTE PTR -20[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 2
	add	eax, edx
	sal	eax, 3
	add	eax, edx
	lea	edx, 0[0+rax*4]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl, 3
	mov	eax, edx
	sal	eax, 2
	add	eax, edx
	add	eax, eax
	sub	ecx, eax
	mov	edx, ecx
	mov	BYTE PTR -20[rbp], dl
	cmp	BYTE PTR -20[rbp], 0
	je	.L123
	movzx	ecx, BYTE PTR -24[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	mov	BYTE PTR -24[rbp], dl
	movzx	ecx, BYTE PTR -28[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	mov	BYTE PTR -28[rbp], dl
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -28[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -20[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L102
	lea	rcx, __PRETTY_FUNCTION__.7[rip]
	mov	edx, 328
	lea	rsi, .LC0[rip]
	lea	rdi, .LC15[rip]
	call	__assert_fail@PLT
.L102:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -28[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -20[rbp]
	mov	BYTE PTR [rdx], al
	mov	BYTE PTR -12[rbp], 0
	jmp	.L103
.L104:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -28[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -12[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	movzx	eax, BYTE PTR -12[rbp]
	add	eax, 1
	mov	BYTE PTR -12[rbp], al
.L103:
	movzx	eax, BYTE PTR -12[rbp]
	movzx	edx, BYTE PTR -20[rbp]
	sub	edx, 1
	cmp	eax, edx
	jl	.L104
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -28[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -20[rbp]
	sub	rax, 1
	add	rax, rdx
	mov	BYTE PTR [rax], 1
	movzx	eax, BYTE PTR -20[rbp]
	mov	BYTE PTR -11[rbp], al
	jmp	.L105
.L106:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -28[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -11[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	movzx	eax, BYTE PTR -11[rbp]
	add	eax, 1
	mov	BYTE PTR -11[rbp], al
.L105:
	cmp	BYTE PTR -11[rbp], 8
	jbe	.L106
	mov	BYTE PTR -10[rbp], 0
	mov	BYTE PTR -9[rbp], 0
	mov	BYTE PTR -8[rbp], 0
	mov	BYTE PTR -7[rbp], 0
	movzx	eax, BYTE PTR -24[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	mov	BYTE PTR -9[rbp], al
	movzx	eax, BYTE PTR -28[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	mov	BYTE PTR -8[rbp], al
	jmp	.L107
.L108:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -9[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -8[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -20[rbp]
	sub	rax, 1
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	movzx	eax, BYTE PTR -10[rbp]
	add	eax, 1
	mov	BYTE PTR -10[rbp], al
	movzx	eax, BYTE PTR -24[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	lea	ecx, [rax+rdx]
	movzx	eax, BYTE PTR -10[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	add	eax, ecx
	mov	BYTE PTR -9[rbp], al
	movzx	eax, BYTE PTR -28[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	lea	esi, [rax+rdx]
	movzx	ecx, BYTE PTR -10[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	lea	eax, [rsi+rdx]
	mov	BYTE PTR -8[rbp], al
	movzx	eax, BYTE PTR -7[rbp]
	add	eax, 1
	mov	BYTE PTR -7[rbp], al
.L107:
	movzx	esi, BYTE PTR -10[rbp]
	movzx	ecx, BYTE PTR -24[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	edx, dl
	mov	eax, edx
	add	eax, eax
	lea	edi, [rax+rdx]
	movzx	ecx, BYTE PTR -28[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	add	eax, edi
	cmp	esi, eax
	jl	.L108
	movzx	eax, BYTE PTR -10[rbp]
	add	eax, 1
	mov	BYTE PTR -10[rbp], al
	jmp	.L109
.L110:
	movzx	eax, BYTE PTR -24[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	lea	ecx, [rax+rdx]
	movzx	eax, BYTE PTR -10[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	add	eax, ecx
	mov	BYTE PTR -9[rbp], al
	movzx	eax, BYTE PTR -28[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	lea	esi, [rax+rdx]
	movzx	ecx, BYTE PTR -10[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	lea	eax, [rsi+rdx]
	mov	BYTE PTR -8[rbp], al
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -9[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -8[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -20[rbp]
	sub	rax, 1
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	movzx	eax, BYTE PTR -10[rbp]
	add	eax, 1
	mov	BYTE PTR -10[rbp], al
	movzx	eax, BYTE PTR -7[rbp]
	add	eax, 1
	mov	BYTE PTR -7[rbp], al
.L109:
	cmp	BYTE PTR -10[rbp], 8
	jbe	.L110
	cmp	BYTE PTR -7[rbp], 8
	je	.L111
	lea	rcx, __PRETTY_FUNCTION__.7[rip]
	mov	edx, 368
	lea	rsi, .LC0[rip]
	lea	rdi, .LC16[rip]
	call	__assert_fail@PLT
.L111:
	mov	BYTE PTR -6[rbp], 0
	mov	BYTE PTR -5[rbp], 0
	jmp	.L112
.L113:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -5[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -28[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -20[rbp]
	sub	rax, 1
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	movzx	eax, BYTE PTR -6[rbp]
	add	eax, 1
	mov	BYTE PTR -6[rbp], al
	movzx	eax, BYTE PTR -5[rbp]
	add	eax, 1
	mov	BYTE PTR -5[rbp], al
.L112:
	movzx	eax, BYTE PTR -5[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	ecx, eax
	shr	cl
	movzx	eax, BYTE PTR -24[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	cmp	cl, al
	jb	.L113
	movzx	eax, BYTE PTR -24[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	lea	edx, 1[rax]
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	mov	BYTE PTR -4[rbp], al
	jmp	.L114
.L115:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -4[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -28[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -20[rbp]
	sub	rax, 1
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	movzx	eax, BYTE PTR -6[rbp]
	add	eax, 1
	mov	BYTE PTR -6[rbp], al
	movzx	eax, BYTE PTR -4[rbp]
	add	eax, 1
	mov	BYTE PTR -4[rbp], al
.L114:
	cmp	BYTE PTR -4[rbp], 8
	jbe	.L115
	cmp	BYTE PTR -6[rbp], 6
	je	.L116
	lea	rcx, __PRETTY_FUNCTION__.7[rip]
	mov	edx, 383
	lea	rsi, .LC0[rip]
	lea	rdi, .LC17[rip]
	call	__assert_fail@PLT
.L116:
	mov	BYTE PTR -3[rbp], 0
	mov	BYTE PTR -2[rbp], 0
	jmp	.L117
.L119:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -2[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -20[rbp]
	sub	rax, 1
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -2[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -20[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	xor	eax, 1
	test	al, al
	jne	.L118
	lea	rcx, __PRETTY_FUNCTION__.7[rip]
	mov	edx, 389
	lea	rsi, .LC0[rip]
	lea	rdi, .LC18[rip]
	call	__assert_fail@PLT
.L118:
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, 1
	mov	BYTE PTR -3[rbp], al
	movzx	eax, BYTE PTR -2[rbp]
	add	eax, 1
	mov	BYTE PTR -2[rbp], al
.L117:
	movzx	eax, BYTE PTR -2[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	ecx, eax
	shr	cl
	movzx	eax, BYTE PTR -28[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	cmp	cl, al
	jb	.L119
	movzx	eax, BYTE PTR -28[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	lea	edx, 1[rax]
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	mov	BYTE PTR -1[rbp], al
	jmp	.L120
.L122:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -1[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -20[rbp]
	sub	rax, 1
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -1[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -20[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	xor	eax, 1
	test	al, al
	jne	.L121
	lea	rcx, __PRETTY_FUNCTION__.7[rip]
	mov	edx, 396
	lea	rsi, .LC0[rip]
	lea	rdi, .LC18[rip]
	call	__assert_fail@PLT
.L121:
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, 1
	mov	BYTE PTR -3[rbp], al
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, 1
	mov	BYTE PTR -1[rbp], al
.L120:
	cmp	BYTE PTR -1[rbp], 8
	jbe	.L122
	cmp	BYTE PTR -3[rbp], 6
	je	.L99
	lea	rcx, __PRETTY_FUNCTION__.7[rip]
	mov	edx, 399
	lea	rsi, .LC0[rip]
	lea	rdi, .LC19[rip]
	call	__assert_fail@PLT
.L123:
	nop
.L99:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	insertValueAndSetPossibilities, .-insertValueAndSetPossibilities
	.globl	copyInitialPuzzleToSolutionMatrix
	.type	copyInitialPuzzleToSolutionMatrix, @function
copyInitialPuzzleToSolutionMatrix:
.LFB18:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	BYTE PTR -2[rbp], 0
	jmp	.L125
.L128:
	mov	BYTE PTR -1[rbp], 0
	jmp	.L126
.L127:
	movzx	edx, BYTE PTR -1[rbp]
	movzx	esi, BYTE PTR -2[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -2[rbp]
	sal	rax, 3
	add	rax, rcx
	mov	rcx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -1[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	rcx, QWORD PTR -24[rbp]
	mov	edi, eax
	call	insertValueAndSetPossibilities
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, 1
	mov	BYTE PTR -1[rbp], al
.L126:
	cmp	BYTE PTR -1[rbp], 8
	jbe	.L127
	movzx	eax, BYTE PTR -2[rbp]
	add	eax, 1
	mov	BYTE PTR -2[rbp], al
.L125:
	cmp	BYTE PTR -2[rbp], 8
	jbe	.L128
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	copyInitialPuzzleToSolutionMatrix, .-copyInitialPuzzleToSolutionMatrix
	.section	.rodata
.LC20:
	.string	"puzzle"
.LC21:
	.string	"puzzle->initialPuzzle"
	.text
	.globl	newPuzzle
	.type	newPuzzle, @function
newPuzzle:
.LFB19:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 24
	.cfi_offset 3, -24
	mov	edi, 40
	call	malloc@PLT
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	jne	.L130
	lea	rcx, __PRETTY_FUNCTION__.6[rip]
	mov	edx, 419
	lea	rsi, .LC0[rip]
	lea	rdi, .LC20[rip]
	call	__assert_fail@PLT
.L130:
	mov	edi, 72
	call	malloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L131
	lea	rcx, __PRETTY_FUNCTION__.6[rip]
	mov	edx, 422
	lea	rsi, .LC0[rip]
	lea	rdi, .LC21[rip]
	call	__assert_fail@PLT
.L131:
	mov	edi, 72
	call	malloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	edi, 72
	call	malloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 16[rax], rdx
	mov	BYTE PTR -27[rbp], 0
	jmp	.L132
.L137:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -27[rbp]
	sal	rax, 3
	lea	rbx, [rdx+rax]
	mov	edi, 9
	call	malloc@PLT
	mov	QWORD PTR [rbx], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -27[rbp]
	sal	rax, 3
	lea	rbx, [rdx+rax]
	mov	edi, 9
	call	malloc@PLT
	mov	QWORD PTR [rbx], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -27[rbp]
	sal	rax, 3
	lea	rbx, [rdx+rax]
	mov	edi, 72
	call	malloc@PLT
	mov	QWORD PTR [rbx], rax
	mov	BYTE PTR -26[rbp], 0
	jmp	.L133
.L136:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -27[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -26[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -27[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -26[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -27[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -26[rbp]
	sal	rax, 3
	lea	rbx, [rdx+rax]
	mov	edi, 9
	call	malloc@PLT
	mov	QWORD PTR [rbx], rax
	mov	BYTE PTR -25[rbp], 0
	jmp	.L134
.L135:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -27[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -26[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -25[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 1
	movzx	eax, BYTE PTR -25[rbp]
	add	eax, 1
	mov	BYTE PTR -25[rbp], al
.L134:
	cmp	BYTE PTR -25[rbp], 8
	jbe	.L135
	movzx	eax, BYTE PTR -26[rbp]
	add	eax, 1
	mov	BYTE PTR -26[rbp], al
.L133:
	cmp	BYTE PTR -26[rbp], 8
	jbe	.L136
	movzx	eax, BYTE PTR -27[rbp]
	add	eax, 1
	mov	BYTE PTR -27[rbp], al
.L132:
	cmp	BYTE PTR -27[rbp], 8
	jbe	.L137
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 32[rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 33[rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 24[rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	newPuzzle, .-newPuzzle
	.globl	zeroPuzzle
	.type	zeroPuzzle, @function
zeroPuzzle:
.LFB20:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	BYTE PTR -4[rbp], 0
	jmp	.L140
.L145:
	mov	BYTE PTR -3[rbp], 0
	jmp	.L141
.L144:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -4[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -3[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -4[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -3[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	mov	BYTE PTR -2[rbp], 0
	jmp	.L142
.L143:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -4[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -3[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -2[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	movzx	eax, BYTE PTR -2[rbp]
	add	eax, 1
	mov	BYTE PTR -2[rbp], al
.L142:
	cmp	BYTE PTR -2[rbp], 8
	jbe	.L143
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, 1
	mov	BYTE PTR -3[rbp], al
.L141:
	cmp	BYTE PTR -3[rbp], 8
	jbe	.L144
	movzx	eax, BYTE PTR -4[rbp]
	add	eax, 1
	mov	BYTE PTR -4[rbp], al
.L140:
	cmp	BYTE PTR -4[rbp], 8
	jbe	.L145
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 24[rax]
	test	rax, rax
	je	.L146
	mov	BYTE PTR -1[rbp], 0
	jmp	.L147
.L148:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -1[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, 1
	mov	BYTE PTR -1[rbp], al
.L147:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 32[rax]
	cmp	BYTE PTR -1[rbp], al
	jb	.L148
.L146:
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 32[rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 33[rax], 0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	zeroPuzzle, .-zeroPuzzle
	.section	.rodata
.LC22:
	.string	"flag13"
.LC23:
	.string	"puzzle->emptyCells"
.LC24:
	.string	"flag14"
.LC25:
	.string	"puzzle->initialPuzzle[0]"
	.align 8
.LC26:
	.string	"(*puzzle).initialPuzzle[row]!=NULL"
	.text
	.globl	freePuzzle
	.type	freePuzzle, @function
freePuzzle:
.LFB21:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	zeroPuzzle
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 24[rax]
	test	rax, rax
	je	.L150
	lea	rdi, .LC22[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 24[rax]
	test	rax, rax
	jne	.L151
	lea	rcx, __PRETTY_FUNCTION__.5[rip]
	mov	edx, 489
	lea	rsi, .LC0[rip]
	lea	rdi, .LC23[rip]
	call	__assert_fail@PLT
.L151:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rdi, rax
	call	free@PLT
	lea	rdi, .LC24[rip]
	call	puts@PLT
.L150:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L152
	lea	rcx, __PRETTY_FUNCTION__.5[rip]
	mov	edx, 495
	lea	rsi, .LC0[rip]
	lea	rdi, .LC25[rip]
	call	__assert_fail@PLT
.L152:
	mov	BYTE PTR -2[rbp], 0
	jmp	.L153
.L157:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -2[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L154
	lea	rcx, __PRETTY_FUNCTION__.5[rip]
	mov	edx, 498
	lea	rsi, .LC0[rip]
	lea	rdi, .LC26[rip]
	call	__assert_fail@PLT
.L154:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -2[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -2[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
	mov	BYTE PTR -1[rbp], 0
	jmp	.L155
.L156:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -2[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -1[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, 1
	mov	BYTE PTR -1[rbp], al
.L155:
	cmp	BYTE PTR -1[rbp], 8
	jbe	.L156
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -2[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
	movzx	eax, BYTE PTR -2[rbp]
	add	eax, 1
	mov	BYTE PTR -2[rbp], al
.L153:
	cmp	BYTE PTR -2[rbp], 8
	jbe	.L157
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	free@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	freePuzzle, .-freePuzzle
	.section	.rodata
	.align 8
.LC27:
	.string	"Didn't need to check other cells. [%d][%d]=%d\n"
.LC28:
	.string	"count>0"
.LC29:
	.string	"value<=9"
	.align 8
.LC30:
	.string	"Only %d possible in box. [%d][%d]\n"
	.align 8
.LC31:
	.string	"Only %d possible in the column. [%d][%d]\n"
.LC32:
	.string	"Only %d possible in the row.\n"
	.text
	.globl	onlyPossibility
	.type	onlyPossibility, @function
onlyPossibility:
.LFB22:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	ecx, edi
	mov	eax, esi
	mov	QWORD PTR -32[rbp], rdx
	mov	edx, ecx
	mov	BYTE PTR -20[rbp], dl
	mov	BYTE PTR -24[rbp], al
	mov	BYTE PTR -11[rbp], 0
	mov	BYTE PTR -10[rbp], 1
	mov	BYTE PTR -9[rbp], 0
	movzx	ecx, BYTE PTR -20[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	mov	BYTE PTR -20[rbp], dl
	movzx	ecx, BYTE PTR -24[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	mov	BYTE PTR -24[rbp], dl
	jmp	.L159
.L161:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -20[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -10[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L160
	movzx	eax, BYTE PTR -10[rbp]
	mov	BYTE PTR -9[rbp], al
	movzx	eax, BYTE PTR -11[rbp]
	add	eax, 1
	mov	BYTE PTR -11[rbp], al
.L160:
	movzx	eax, BYTE PTR -10[rbp]
	add	eax, 1
	mov	BYTE PTR -10[rbp], al
.L159:
	cmp	BYTE PTR -10[rbp], 9
	jbe	.L161
	cmp	BYTE PTR -11[rbp], 1
	jne	.L162
	movzx	ecx, BYTE PTR -9[rbp]
	movzx	edx, BYTE PTR -24[rbp]
	movzx	eax, BYTE PTR -20[rbp]
	mov	esi, eax
	lea	rdi, .LC27[rip]
	mov	eax, 0
	call	printf@PLT
	movzx	edx, BYTE PTR -9[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	printPossibilitiesMatrix
	movzx	eax, BYTE PTR -9[rbp]
	jmp	.L163
.L162:
	mov	BYTE PTR -8[rbp], 0
	mov	BYTE PTR -7[rbp], 0
	mov	BYTE PTR -6[rbp], 0
	mov	BYTE PTR -5[rbp], 0
	mov	BYTE PTR -10[rbp], 1
	jmp	.L164
.L165:
	movzx	eax, BYTE PTR -10[rbp]
	add	eax, 1
	mov	BYTE PTR -10[rbp], al
.L164:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -20[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -10[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	xor	eax, 1
	test	al, al
	jne	.L165
	cmp	BYTE PTR -11[rbp], 0
	jne	.L167
	lea	rcx, __PRETTY_FUNCTION__.4[rip]
	mov	edx, 557
	lea	rsi, .LC0[rip]
	lea	rdi, .LC28[rip]
	call	__assert_fail@PLT
.L197:
	cmp	BYTE PTR -10[rbp], 9
	jbe	.L168
	lea	rcx, __PRETTY_FUNCTION__.4[rip]
	mov	edx, 560
	lea	rsi, .LC0[rip]
	lea	rdi, .LC29[rip]
	call	__assert_fail@PLT
.L168:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -20[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -10[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L169
	mov	BYTE PTR -8[rbp], 0
	mov	BYTE PTR -5[rbp], 1
	movzx	eax, BYTE PTR -20[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	mov	BYTE PTR -7[rbp], al
	movzx	eax, BYTE PTR -24[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	mov	BYTE PTR -6[rbp], al
	jmp	.L170
.L173:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -7[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -6[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -10[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L171
	mov	BYTE PTR -5[rbp], 0
.L171:
	movzx	eax, BYTE PTR -8[rbp]
	add	eax, 1
	mov	BYTE PTR -8[rbp], al
	movzx	eax, BYTE PTR -20[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	lea	ecx, [rax+rdx]
	movzx	eax, BYTE PTR -8[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	add	eax, ecx
	mov	BYTE PTR -7[rbp], al
	movzx	eax, BYTE PTR -24[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	lea	esi, [rax+rdx]
	movzx	ecx, BYTE PTR -8[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	lea	eax, [rsi+rdx]
	mov	BYTE PTR -6[rbp], al
.L170:
	movzx	esi, BYTE PTR -8[rbp]
	movzx	ecx, BYTE PTR -20[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	edx, dl
	mov	eax, edx
	add	eax, eax
	lea	edi, [rax+rdx]
	movzx	ecx, BYTE PTR -24[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	add	eax, edi
	cmp	esi, eax
	jge	.L172
	cmp	BYTE PTR -5[rbp], 0
	jne	.L173
.L172:
	movzx	eax, BYTE PTR -8[rbp]
	add	eax, 1
	mov	BYTE PTR -8[rbp], al
	jmp	.L174
.L177:
	movzx	eax, BYTE PTR -20[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	lea	ecx, [rax+rdx]
	movzx	eax, BYTE PTR -8[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	shr	al
	add	eax, ecx
	mov	BYTE PTR -7[rbp], al
	movzx	eax, BYTE PTR -24[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	lea	esi, [rax+rdx]
	movzx	ecx, BYTE PTR -8[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	lea	eax, [rsi+rdx]
	mov	BYTE PTR -6[rbp], al
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -7[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -6[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -10[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L175
	mov	BYTE PTR -5[rbp], 0
.L175:
	movzx	eax, BYTE PTR -8[rbp]
	add	eax, 1
	mov	BYTE PTR -8[rbp], al
.L174:
	cmp	BYTE PTR -8[rbp], 8
	ja	.L176
	cmp	BYTE PTR -5[rbp], 0
	jne	.L177
.L176:
	cmp	BYTE PTR -5[rbp], 0
	je	.L178
	movzx	ecx, BYTE PTR -24[rbp]
	movzx	edx, BYTE PTR -20[rbp]
	movzx	eax, BYTE PTR -10[rbp]
	mov	esi, eax
	lea	rdi, .LC30[rip]
	mov	eax, 0
	call	printf@PLT
	movzx	edx, BYTE PTR -10[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	printPossibilitiesMatrix
	movzx	eax, BYTE PTR -10[rbp]
	jmp	.L163
.L178:
	mov	BYTE PTR -5[rbp], 1
	mov	BYTE PTR -4[rbp], 0
	jmp	.L179
.L182:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -4[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -10[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L180
	mov	BYTE PTR -5[rbp], 0
.L180:
	movzx	eax, BYTE PTR -4[rbp]
	add	eax, 1
	mov	BYTE PTR -4[rbp], al
.L179:
	movzx	eax, BYTE PTR -4[rbp]
	cmp	al, BYTE PTR -20[rbp]
	jnb	.L181
	cmp	BYTE PTR -5[rbp], 0
	jne	.L182
.L181:
	movzx	eax, BYTE PTR -20[rbp]
	add	eax, 1
	mov	BYTE PTR -3[rbp], al
	jmp	.L183
.L186:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -3[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -24[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -10[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L184
	mov	BYTE PTR -5[rbp], 0
.L184:
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, 1
	mov	BYTE PTR -3[rbp], al
.L183:
	cmp	BYTE PTR -3[rbp], 8
	ja	.L185
	cmp	BYTE PTR -5[rbp], 0
	jne	.L186
.L185:
	cmp	BYTE PTR -5[rbp], 0
	je	.L187
	movzx	ecx, BYTE PTR -24[rbp]
	movzx	edx, BYTE PTR -20[rbp]
	movzx	eax, BYTE PTR -10[rbp]
	mov	esi, eax
	lea	rdi, .LC31[rip]
	mov	eax, 0
	call	printf@PLT
	movzx	edx, BYTE PTR -10[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	printPossibilitiesMatrix
	movzx	eax, BYTE PTR -10[rbp]
	jmp	.L163
.L187:
	mov	BYTE PTR -5[rbp], 1
	mov	BYTE PTR -2[rbp], 0
	jmp	.L188
.L191:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -20[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -2[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -10[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L189
	mov	BYTE PTR -5[rbp], 0
.L189:
	movzx	eax, BYTE PTR -2[rbp]
	add	eax, 1
	mov	BYTE PTR -2[rbp], al
.L188:
	movzx	eax, BYTE PTR -2[rbp]
	cmp	al, BYTE PTR -24[rbp]
	jnb	.L190
	cmp	BYTE PTR -5[rbp], 0
	jne	.L191
.L190:
	movzx	eax, BYTE PTR -24[rbp]
	add	eax, 1
	mov	BYTE PTR -1[rbp], al
	jmp	.L192
.L195:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -20[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -1[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -10[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L193
	mov	BYTE PTR -5[rbp], 0
.L193:
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, 1
	mov	BYTE PTR -1[rbp], al
.L192:
	cmp	BYTE PTR -1[rbp], 8
	ja	.L194
	cmp	BYTE PTR -5[rbp], 0
	jne	.L195
.L194:
	cmp	BYTE PTR -5[rbp], 0
	je	.L196
	movzx	eax, BYTE PTR -10[rbp]
	mov	esi, eax
	lea	rdi, .LC32[rip]
	mov	eax, 0
	call	printf@PLT
	movzx	eax, BYTE PTR -10[rbp]
	jmp	.L163
.L196:
	movzx	eax, BYTE PTR -11[rbp]
	sub	eax, 1
	mov	BYTE PTR -11[rbp], al
.L169:
	movzx	eax, BYTE PTR -10[rbp]
	add	eax, 1
	mov	BYTE PTR -10[rbp], al
.L167:
	cmp	BYTE PTR -11[rbp], 0
	jne	.L197
	mov	eax, 0
.L163:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	onlyPossibility, .-onlyPossibility
	.section	.rodata
.LC33:
	.string	"Solution: [%d][%d] : %d\n"
	.align 8
.LC34:
	.string	"puzzle->possibilitiesMatrix[row][col][insertValue-1]"
	.text
	.globl	singlePossibleSolutions
	.type	singlePossibleSolutions, @function
singlePossibleSolutions:
.LFB23:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	BYTE PTR -5[rbp], 0
	mov	BYTE PTR -4[rbp], 0
	mov	BYTE PTR -3[rbp], 0
	mov	BYTE PTR -2[rbp], 0
	mov	BYTE PTR -1[rbp], 0
	jmp	.L199
.L203:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -4[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	mov	BYTE PTR -2[rbp], al
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -4[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	mov	BYTE PTR -1[rbp], al
	movzx	edx, BYTE PTR -1[rbp]
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	mov	BYTE PTR -1[rbp], dl
	movzx	ecx, BYTE PTR -1[rbp]
	movzx	eax, BYTE PTR -2[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	esi, ecx
	mov	edi, eax
	call	onlyPossibility
	mov	BYTE PTR -3[rbp], al
	movzx	ecx, BYTE PTR -3[rbp]
	movzx	edx, BYTE PTR -1[rbp]
	movzx	eax, BYTE PTR -2[rbp]
	mov	esi, eax
	lea	rdi, .LC33[rip]
	mov	eax, 0
	call	printf@PLT
	cmp	BYTE PTR -3[rbp], 0
	je	.L200
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 16[rax]
	movzx	eax, BYTE PTR -2[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -1[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -3[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L200
	lea	rcx, __PRETTY_FUNCTION__.3[rip]
	mov	edx, 647
	lea	rsi, .LC0[rip]
	lea	rdi, .LC34[rip]
	call	__assert_fail@PLT
.L200:
	movzx	edx, BYTE PTR -1[rbp]
	movzx	esi, BYTE PTR -2[rbp]
	movzx	eax, BYTE PTR -3[rbp]
	mov	rcx, QWORD PTR -24[rbp]
	mov	edi, eax
	call	insertValueAndSetPossibilities
	cmp	BYTE PTR -3[rbp], 0
	je	.L201
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	rax, al
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -4[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR [rcx]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 33[rax]
	sub	eax, 1
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 33[rax], dl
	mov	BYTE PTR -5[rbp], 0
	movzx	edx, BYTE PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jge	.L202
	movzx	eax, BYTE PTR -4[rbp]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	lea	ecx, 1[rax]
	mov	eax, edx
	cdq
	idiv	ecx
	mov	eax, edx
	mov	BYTE PTR -4[rbp], al
	jmp	.L199
.L202:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 33[rax]
	mov	BYTE PTR -4[rbp], al
	jmp	.L199
.L201:
	movzx	eax, BYTE PTR -5[rbp]
	add	eax, 1
	mov	BYTE PTR -5[rbp], al
	movzx	eax, BYTE PTR -4[rbp]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	lea	ecx, 1[rax]
	mov	eax, edx
	cdq
	idiv	ecx
	mov	eax, edx
	mov	BYTE PTR -4[rbp], al
.L199:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	edx, al
	movzx	eax, BYTE PTR -5[rbp]
	cmp	edx, eax
	jge	.L203
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	singlePossibleSolutions, .-singlePossibleSolutions
	.section	.rodata
	.align 8
.LC35:
	.string	"puzzle->unsolvedCellsIndex!=-1"
	.align 8
.LC36:
	.string	"index<=puzzle->unsolvedCellsIndex"
	.align 8
.LC37:
	.string	"puzzle->unsolvedCellsIndex<puzzle->emptyCellsCount"
.LC38:
	.string	"puzzle->emptyCells[index]<=80"
	.align 8
.LC39:
	.string	"puzzle->possibilitiesMatrix[puzzle->emptyCells[index]/9][puzzle->emptyCells[index]%9][value-1]"
.LC40:
	.string	"puzzle->unsolvedCellsIndex>=0"
	.align 8
.LC41:
	.string	"\nIndex: %d  unsolvedCellsIndex: %d  (upSolve) counter: %lu counter0: %lu\n"
	.text
	.globl	upSolve
	.type	upSolve, @function
upSolve:
.LFB24:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	BYTE PTR -18[rbp], 0
	mov	BYTE PTR -17[rbp], 1
	mov	QWORD PTR -16[rbp], 0
	mov	QWORD PTR -8[rbp], 0
	jmp	.L205
.L221:
	add	QWORD PTR -16[rbp], 1
	cmp	QWORD PTR -16[rbp], 0
	jne	.L206
	add	QWORD PTR -8[rbp], 1
.L206:
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 33[rax]
	cmp	al, -1
	jne	.L207
	lea	rcx, __PRETTY_FUNCTION__.2[rip]
	mov	edx, 693
	lea	rsi, .LC0[rip]
	lea	rdi, .LC35[rip]
	call	__assert_fail@PLT
.L207:
	movzx	edx, BYTE PTR -18[rbp]
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jle	.L208
	lea	rcx, __PRETTY_FUNCTION__.2[rip]
	mov	edx, 694
	lea	rsi, .LC0[rip]
	lea	rdi, .LC36[rip]
	call	__assert_fail@PLT
.L208:
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	edx, al
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 32[rax]
	movzx	eax, al
	cmp	edx, eax
	jl	.L209
	lea	rcx, __PRETTY_FUNCTION__.2[rip]
	mov	edx, 695
	lea	rsi, .LC0[rip]
	lea	rdi, .LC37[rip]
	call	__assert_fail@PLT
.L209:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	edi, dl
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	esi, al
	movzx	eax, BYTE PTR -17[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rcx, rdx
	mov	edx, edi
	mov	edi, eax
	call	isInsertable
	test	al, al
	je	.L210
	movzx	edx, BYTE PTR -18[rbp]
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jle	.L211
	lea	rcx, __PRETTY_FUNCTION__.2[rip]
	mov	edx, 699
	lea	rsi, .LC0[rip]
	lea	rdi, .LC36[rip]
	call	__assert_fail@PLT
.L211:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 80
	jbe	.L212
	lea	rcx, __PRETTY_FUNCTION__.2[rip]
	mov	edx, 700
	lea	rsi, .LC0[rip]
	lea	rdi, .LC38[rip]
	call	__assert_fail@PLT
.L212:
	mov	rax, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rcx
	mov	rsi, QWORD PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	sal	rax, 3
	add	rax, rsi
	mov	rdx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -17[rbp]
	sub	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L213
	lea	rcx, __PRETTY_FUNCTION__.2[rip]
	mov	edx, 701
	lea	rsi, .LC0[rip]
	lea	rdi, .LC39[rip]
	call	__assert_fail@PLT
.L213:
	mov	rax, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rcx
	mov	rsi, QWORD PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	lea	rdx, [rsi+rax]
	movzx	eax, BYTE PTR -17[rbp]
	mov	BYTE PTR [rdx], al
	movzx	edx, BYTE PTR -18[rbp]
	mov	rax, QWORD PTR -48[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -17[rbp]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -18[rbp]
	add	eax, 1
	mov	BYTE PTR -18[rbp], al
	mov	BYTE PTR -17[rbp], 1
	jmp	.L205
.L210:
	movzx	eax, BYTE PTR -17[rbp]
	add	eax, 1
	mov	BYTE PTR -17[rbp], al
	jmp	.L214
.L220:
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 33[rax]
	test	al, al
	jns	.L215
	lea	rcx, __PRETTY_FUNCTION__.2[rip]
	mov	edx, 715
	lea	rsi, .LC0[rip]
	lea	rdi, .LC40[rip]
	call	__assert_fail@PLT
.L215:
	movzx	edx, BYTE PTR -18[rbp]
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jg	.L216
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 80
	jbe	.L217
	lea	rcx, __PRETTY_FUNCTION__.2[rip]
	mov	edx, 718
	lea	rsi, .LC0[rip]
	lea	rdi, .LC38[rip]
	call	__assert_fail@PLT
.L217:
	mov	rax, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rcx
	mov	rsi, QWORD PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	add	rax, rsi
	mov	BYTE PTR [rax], 0
	movzx	edx, BYTE PTR -18[rbp]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
.L216:
	movzx	eax, BYTE PTR -18[rbp]
	sub	eax, 1
	mov	BYTE PTR -18[rbp], al
	movzx	edx, BYTE PTR -18[rbp]
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jle	.L218
	lea	rcx, __PRETTY_FUNCTION__.2[rip]
	mov	edx, 724
	lea	rsi, .LC0[rip]
	lea	rdi, .LC36[rip]
	call	__assert_fail@PLT
.L218:
	movzx	edx, BYTE PTR -18[rbp]
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jg	.L214
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 80
	jbe	.L219
	lea	rcx, __PRETTY_FUNCTION__.2[rip]
	mov	edx, 727
	lea	rsi, .LC0[rip]
	lea	rdi, .LC38[rip]
	call	__assert_fail@PLT
.L219:
	mov	rax, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rcx
	mov	rsi, QWORD PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	add	rax, rsi
	movzx	eax, BYTE PTR [rax]
	add	eax, 1
	mov	BYTE PTR -17[rbp], al
.L214:
	cmp	BYTE PTR -17[rbp], 9
	ja	.L220
.L205:
	movzx	edx, BYTE PTR -18[rbp]
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jle	.L221
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	edx, al
	movzx	eax, BYTE PTR -18[rbp]
	mov	rsi, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR -16[rbp]
	mov	r8, rsi
	mov	esi, eax
	lea	rdi, .LC41[rip]
	mov	eax, 0
	call	printf@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.size	upSolve, .-upSolve
	.section	.rodata
	.align 8
.LC42:
	.string	"Index: %d  unsolvedCellsIndex: %d  (downSolve) counter: %lu counter0: %lu\n"
	.text
	.globl	downSolve
	.type	downSolve, @function
downSolve:
.LFB25:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	BYTE PTR -18[rbp], 0
	mov	BYTE PTR -17[rbp], 9
	mov	QWORD PTR -16[rbp], 0
	mov	QWORD PTR -8[rbp], 0
	jmp	.L223
.L229:
	add	QWORD PTR -16[rbp], 1
	cmp	QWORD PTR -16[rbp], 0
	jne	.L224
	add	QWORD PTR -8[rbp], 1
.L224:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	edi, dl
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	esi, al
	movzx	eax, BYTE PTR -17[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rcx, rdx
	mov	edx, edi
	mov	edi, eax
	call	isInsertable
	test	al, al
	je	.L225
	mov	rax, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rcx
	mov	rsi, QWORD PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	lea	rdx, [rsi+rax]
	movzx	eax, BYTE PTR -17[rbp]
	mov	BYTE PTR [rdx], al
	movzx	edx, BYTE PTR -18[rbp]
	mov	rax, QWORD PTR -48[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -17[rbp]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -18[rbp]
	add	eax, 1
	mov	BYTE PTR -18[rbp], al
	mov	BYTE PTR -17[rbp], 9
	jmp	.L223
.L225:
	movzx	eax, BYTE PTR -17[rbp]
	sub	eax, 1
	mov	BYTE PTR -17[rbp], al
	jmp	.L226
.L228:
	movzx	edx, BYTE PTR -18[rbp]
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jg	.L227
	mov	rax, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rcx
	mov	rsi, QWORD PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	add	rax, rsi
	mov	BYTE PTR [rax], 0
	movzx	edx, BYTE PTR -18[rbp]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
.L227:
	movzx	eax, BYTE PTR -18[rbp]
	sub	eax, 1
	mov	BYTE PTR -18[rbp], al
	movzx	edx, BYTE PTR -18[rbp]
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jg	.L226
	mov	rax, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rcx
	mov	rsi, QWORD PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -18[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	add	rax, rsi
	movzx	eax, BYTE PTR [rax]
	sub	eax, 1
	mov	BYTE PTR -17[rbp], al
.L226:
	cmp	BYTE PTR -17[rbp], 9
	ja	.L228
	cmp	BYTE PTR -17[rbp], 0
	je	.L228
.L223:
	movzx	edx, BYTE PTR -18[rbp]
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jle	.L229
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	edx, al
	movzx	eax, BYTE PTR -18[rbp]
	mov	rsi, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR -16[rbp]
	mov	r8, rsi
	mov	esi, eax
	lea	rdi, .LC42[rip]
	mov	eax, 0
	call	printf@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE25:
	.size	downSolve, .-downSolve
	.section	.rodata
	.align 8
.LC43:
	.string	"full solve, unsolved cells:  %d\n"
.LC44:
	.string	"last similarity index: %i\n"
.LC45:
	.string	"Up-solving"
.LC46:
	.string	"Down-solving"
	.align 8
.LC47:
	.string	"\n Before rearrengement\n up-solve array"
.LC48:
	.string	"[%d]"
.LC49:
	.string	"\n down-solve array"
	.align 8
.LC50:
	.string	"indexPointer<=puzzle->unsolvedCellsIndex"
.LC51:
	.string	"[%d][%d]=%d\n"
.LC52:
	.string	"indexPointer!=0"
	.align 8
.LC53:
	.string	"\n After rearrengement\n up-solve array"
	.align 8
.LC54:
	.string	"\n After sorting\n up-solve array"
	.align 8
.LC55:
	.string	"Similarity count: %d   unsolved cells: %d\n"
	.align 8
.LC56:
	.string	"print current solution anyways:"
.LC57:
	.string	"About to free solvearrays"
.LC58:
	.string	"Freed solvearrays"
	.text
	.globl	fullSolve
	.type	fullSolve, @function
fullSolve:
.LFB26:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -56[rbp], rdi
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	test	al, al
	jns	.L231
	lea	rcx, __PRETTY_FUNCTION__.1[rip]
	mov	edx, 784
	lea	rsi, .LC0[rip]
	lea	rdi, .LC40[rip]
	call	__assert_fail@PLT
.L231:
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	add	eax, 1
	mov	esi, eax
	lea	rdi, .LC43[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	mov	BYTE PTR -47[rbp], al
	mov	BYTE PTR -27[rbp], 0
	mov	BYTE PTR -46[rbp], 0
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	add	eax, 1
	cdqe
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	add	eax, 1
	cdqe
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	add	eax, 1
	mov	BYTE PTR -26[rbp], al
	mov	edi, 81
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	BYTE PTR -45[rbp], 1
	mov	BYTE PTR -44[rbp], 0
	jmp	.L232
.L233:
	movzx	edx, BYTE PTR -44[rbp]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	movzx	eax, BYTE PTR -44[rbp]
	add	eax, 1
	mov	BYTE PTR -44[rbp], al
.L232:
	cmp	BYTE PTR -44[rbp], 80
	jbe	.L233
	mov	BYTE PTR -43[rbp], 0
	jmp	.L234
.L235:
	movzx	edx, BYTE PTR -43[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	movzx	edx, BYTE PTR -43[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	movzx	eax, BYTE PTR -43[rbp]
	add	eax, 1
	mov	BYTE PTR -43[rbp], al
.L234:
	movzx	eax, BYTE PTR -43[rbp]
	cmp	al, BYTE PTR -26[rbp]
	jb	.L235
	jmp	.L236
.L288:
	movsx	eax, BYTE PTR -47[rbp]
	mov	esi, eax
	lea	rdi, .LC44[rip]
	mov	eax, 0
	call	printf@PLT
	mov	BYTE PTR -42[rbp], 0
	jmp	.L237
.L238:
	movzx	edx, BYTE PTR -42[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	movzx	edx, BYTE PTR -42[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	movzx	eax, BYTE PTR -42[rbp]
	add	eax, 1
	mov	BYTE PTR -42[rbp], al
.L237:
	movzx	eax, BYTE PTR -42[rbp]
	cmp	al, BYTE PTR -26[rbp]
	jb	.L238
	lea	rdi, .LC45[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	upSolve
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	rdi, rax
	call	printMatrix
	cmp	BYTE PTR -45[rbp], 0
	je	.L239
	mov	BYTE PTR -41[rbp], 0
	jmp	.L240
.L241:
	mov	rax, QWORD PTR -56[rbp]
	mov	rcx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -41[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rcx
	mov	rsi, QWORD PTR [rax]
	movzx	ecx, BYTE PTR -41[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	add	rax, rsi
	movzx	ecx, BYTE PTR -41[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -41[rbp]
	add	eax, 1
	mov	BYTE PTR -41[rbp], al
.L240:
	cmp	BYTE PTR -41[rbp], 80
	jbe	.L241
	mov	BYTE PTR -45[rbp], 0
.L239:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	clearUnsolvedCells
	lea	rdi, .LC46[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	downSolve
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	rdi, rax
	call	printMatrix
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	clearUnsolvedCells
	mov	BYTE PTR -40[rbp], 0
	lea	rdi, .LC47[rip]
	call	puts@PLT
	mov	BYTE PTR -39[rbp], 0
	jmp	.L242
.L244:
	movzx	edx, BYTE PTR -39[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC48[rip]
	mov	eax, 0
	call	printf@PLT
	movzx	edx, BYTE PTR -39[rbp]
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jne	.L243
	mov	edi, 124
	call	putchar@PLT
.L243:
	movzx	eax, BYTE PTR -39[rbp]
	add	eax, 1
	mov	BYTE PTR -39[rbp], al
.L242:
	movzx	eax, BYTE PTR -39[rbp]
	cmp	al, BYTE PTR -26[rbp]
	jb	.L244
	lea	rdi, .LC49[rip]
	call	puts@PLT
	mov	BYTE PTR -38[rbp], 0
	jmp	.L245
.L247:
	movzx	edx, BYTE PTR -38[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC48[rip]
	mov	eax, 0
	call	printf@PLT
	movzx	edx, BYTE PTR -38[rbp]
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jne	.L246
	mov	edi, 124
	call	putchar@PLT
.L246:
	movzx	eax, BYTE PTR -38[rbp]
	add	eax, 1
	mov	BYTE PTR -38[rbp], al
.L245:
	movzx	eax, BYTE PTR -38[rbp]
	cmp	al, BYTE PTR -26[rbp]
	jb	.L247
	mov	edi, 10
	call	putchar@PLT
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	test	al, al
	jns	.L248
	lea	rcx, __PRETTY_FUNCTION__.1[rip]
	mov	edx, 855
	lea	rsi, .LC0[rip]
	lea	rdi, .LC40[rip]
	call	__assert_fail@PLT
.L248:
	movsx	rdx, BYTE PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	movsx	rcx, BYTE PTR -40[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	cmp	dl, al
	je	.L250
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	cmp	BYTE PTR -40[rbp], al
	jle	.L250
	lea	rcx, __PRETTY_FUNCTION__.1[rip]
	mov	edx, 858
	lea	rsi, .LC0[rip]
	lea	rdi, .LC50[rip]
	call	__assert_fail@PLT
.L252:
	movsx	rdx, BYTE PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edi, al
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movsx	rax, BYTE PTR -40[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	esi, dl
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movsx	rax, BYTE PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	mov	ecx, edi
	mov	edx, esi
	mov	esi, eax
	lea	rdi, .LC51[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movsx	rax, BYTE PTR -40[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	edi, dl
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movsx	rax, BYTE PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	esi, al
	movsx	rdx, BYTE PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	rdx, QWORD PTR -56[rbp]
	mov	rcx, rdx
	mov	edx, edi
	mov	edi, eax
	call	insertValueAndSetPossibilities
	movzx	eax, BYTE PTR -40[rbp]
	add	eax, 1
	mov	BYTE PTR -40[rbp], al
.L250:
	movsx	rdx, BYTE PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	movsx	rcx, BYTE PTR -40[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	cmp	dl, al
	jne	.L251
	movzx	eax, BYTE PTR -40[rbp]
	cmp	al, BYTE PTR -47[rbp]
	jle	.L252
.L251:
	mov	BYTE PTR -25[rbp], 0
	movzx	eax, BYTE PTR -40[rbp]
	sub	eax, 1
	mov	BYTE PTR -40[rbp], al
	mov	BYTE PTR -46[rbp], 0
	movzx	eax, BYTE PTR -40[rbp]
	add	eax, 1
	mov	BYTE PTR -37[rbp], al
	jmp	.L253
.L255:
	movzx	edx, BYTE PTR -37[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	movzx	ecx, BYTE PTR -37[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	cmp	dl, al
	jne	.L254
	movzx	eax, BYTE PTR -46[rbp]
	add	eax, 1
	mov	BYTE PTR -46[rbp], al
.L254:
	movzx	eax, BYTE PTR -37[rbp]
	add	eax, 1
	mov	BYTE PTR -37[rbp], al
.L253:
	movzx	edx, BYTE PTR -37[rbp]
	movsx	eax, BYTE PTR -47[rbp]
	cmp	edx, eax
	jle	.L255
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	test	al, al
	jns	.L256
	lea	rcx, __PRETTY_FUNCTION__.1[rip]
	mov	edx, 885
	lea	rsi, .LC0[rip]
	lea	rdi, .LC40[rip]
	call	__assert_fail@PLT
.L256:
	mov	BYTE PTR -36[rbp], 0
	jmp	.L257
.L261:
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	edx, al
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 32[rax]
	movzx	eax, al
	cmp	edx, eax
	jl	.L258
	lea	rcx, __PRETTY_FUNCTION__.1[rip]
	mov	edx, 895
	lea	rsi, .LC0[rip]
	lea	rdi, .LC37[rip]
	call	__assert_fail@PLT
.L258:
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	test	al, al
	jns	.L259
	lea	rcx, __PRETTY_FUNCTION__.1[rip]
	mov	edx, 896
	lea	rsi, .LC0[rip]
	lea	rdi, .LC40[rip]
	call	__assert_fail@PLT
.L259:
	cmp	BYTE PTR -40[rbp], 0
	jne	.L260
	lea	rcx, __PRETTY_FUNCTION__.1[rip]
	mov	edx, 897
	lea	rsi, .LC0[rip]
	lea	rdi, .LC52[rip]
	call	__assert_fail@PLT
.L260:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -36[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -25[rbp], al
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	rax, al
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -36[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR [rcx]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	rax, al
	add	rdx, rax
	movzx	eax, BYTE PTR -25[rbp]
	mov	BYTE PTR [rdx], al
	movzx	edx, BYTE PTR -36[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -25[rbp], al
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	rdx, al
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR -36[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	rdx, al
	mov	rax, QWORD PTR -24[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -25[rbp]
	mov	BYTE PTR [rdx], al
	movzx	edx, BYTE PTR -36[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -25[rbp], al
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	rdx, al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR -36[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	rdx, al
	mov	rax, QWORD PTR -16[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -25[rbp]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	sub	eax, 1
	mov	edx, eax
	mov	rax, QWORD PTR -56[rbp]
	mov	BYTE PTR 33[rax], dl
	movzx	eax, BYTE PTR -36[rbp]
	add	eax, 1
	mov	BYTE PTR -36[rbp], al
.L257:
	movzx	edx, BYTE PTR -36[rbp]
	movsx	eax, BYTE PTR -40[rbp]
	cmp	edx, eax
	jle	.L261
	lea	rdi, .LC53[rip]
	call	puts@PLT
	mov	BYTE PTR -35[rbp], 0
	jmp	.L262
.L264:
	movzx	edx, BYTE PTR -35[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC48[rip]
	mov	eax, 0
	call	printf@PLT
	movzx	edx, BYTE PTR -35[rbp]
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jne	.L263
	mov	edi, 124
	call	putchar@PLT
.L263:
	movzx	eax, BYTE PTR -35[rbp]
	add	eax, 1
	mov	BYTE PTR -35[rbp], al
.L262:
	movzx	eax, BYTE PTR -35[rbp]
	cmp	al, BYTE PTR -26[rbp]
	jb	.L264
	lea	rdi, .LC49[rip]
	call	puts@PLT
	mov	BYTE PTR -34[rbp], 0
	jmp	.L265
.L267:
	movzx	edx, BYTE PTR -34[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC48[rip]
	mov	eax, 0
	call	printf@PLT
	movzx	edx, BYTE PTR -34[rbp]
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jne	.L266
	mov	edi, 124
	call	putchar@PLT
.L266:
	movzx	eax, BYTE PTR -34[rbp]
	add	eax, 1
	mov	BYTE PTR -34[rbp], al
.L265:
	movzx	eax, BYTE PTR -34[rbp]
	cmp	al, BYTE PTR -26[rbp]
	jb	.L267
	mov	edi, 10
	call	putchar@PLT
	mov	BYTE PTR -33[rbp], 1
	jmp	.L268
.L271:
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	edx, al
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 32[rax]
	movzx	eax, al
	cmp	edx, eax
	jl	.L269
	lea	rcx, __PRETTY_FUNCTION__.1[rip]
	mov	edx, 941
	lea	rsi, .LC0[rip]
	lea	rdi, .LC37[rip]
	call	__assert_fail@PLT
.L269:
	movzx	eax, BYTE PTR -33[rbp]
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	movzx	eax, BYTE PTR -33[rbp]
	lea	rcx, -1[rax]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	cmp	dl, al
	je	.L270
	movzx	edx, BYTE PTR -33[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	movzx	ecx, BYTE PTR -33[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	cmp	dl, al
	jne	.L270
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -33[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -25[rbp], al
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -33[rbp]
	sub	rax, 1
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -33[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR [rcx]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -33[rbp]
	sub	rax, 1
	add	rdx, rax
	movzx	eax, BYTE PTR -25[rbp]
	mov	BYTE PTR [rdx], al
	movzx	edx, BYTE PTR -33[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -25[rbp], al
	movzx	eax, BYTE PTR -33[rbp]
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR -33[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -33[rbp]
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -25[rbp]
	mov	BYTE PTR [rdx], al
	movzx	edx, BYTE PTR -33[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -25[rbp], al
	movzx	eax, BYTE PTR -33[rbp]
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR -33[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -33[rbp]
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -16[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -25[rbp]
	mov	BYTE PTR [rdx], al
	sub	BYTE PTR -33[rbp], 2
.L270:
	movzx	eax, BYTE PTR -33[rbp]
	add	eax, 1
	mov	BYTE PTR -33[rbp], al
.L268:
	movzx	edx, BYTE PTR -33[rbp]
	movsx	eax, BYTE PTR -47[rbp]
	cmp	edx, eax
	jle	.L271
	mov	BYTE PTR -32[rbp], 0
	jmp	.L272
.L275:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -32[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	movzx	ecx, BYTE PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	cmp	dl, al
	je	.L273
	movzx	edx, BYTE PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	movzx	ecx, BYTE PTR -32[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	cmp	dl, al
	jne	.L273
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -32[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -25[rbp], al
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movsx	rax, BYTE PTR -46[rbp]
	sub	rax, 1
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movzx	eax, BYTE PTR -32[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR [rcx]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	movsx	rax, BYTE PTR -46[rbp]
	sub	rax, 1
	add	rdx, rax
	movzx	eax, BYTE PTR -25[rbp]
	mov	BYTE PTR [rdx], al
	movzx	edx, BYTE PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -25[rbp], al
	movsx	rax, BYTE PTR -46[rbp]
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR -32[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	movsx	rax, BYTE PTR -46[rbp]
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -25[rbp]
	mov	BYTE PTR [rdx], al
	movzx	edx, BYTE PTR -32[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -25[rbp], al
	movsx	rax, BYTE PTR -46[rbp]
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR -32[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	movsx	rax, BYTE PTR -46[rbp]
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -16[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -25[rbp]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -46[rbp]
	sub	eax, 1
	mov	BYTE PTR -46[rbp], al
	jmp	.L272
.L273:
	movzx	eax, BYTE PTR -32[rbp]
	add	eax, 1
	mov	BYTE PTR -32[rbp], al
.L272:
	movzx	edx, BYTE PTR -32[rbp]
	movsx	eax, BYTE PTR -46[rbp]
	cmp	edx, eax
	jl	.L275
	movzx	eax, BYTE PTR -46[rbp]
	sub	eax, 1
	mov	BYTE PTR -47[rbp], al
	lea	rdi, .LC54[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	cmp	al, -1
	jne	.L276
	mov	edi, 124
	call	putchar@PLT
.L276:
	cmp	BYTE PTR -47[rbp], -1
	jne	.L277
	mov	edi, 124
	call	putchar@PLT
.L277:
	mov	BYTE PTR -31[rbp], 0
	jmp	.L278
.L281:
	movzx	edx, BYTE PTR -31[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC48[rip]
	mov	eax, 0
	call	printf@PLT
	movzx	edx, BYTE PTR -31[rbp]
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jne	.L279
	mov	edi, 124
	call	putchar@PLT
.L279:
	movzx	edx, BYTE PTR -31[rbp]
	movsx	eax, BYTE PTR -47[rbp]
	cmp	edx, eax
	jne	.L280
	mov	edi, 124
	call	putchar@PLT
.L280:
	movzx	eax, BYTE PTR -31[rbp]
	add	eax, 1
	mov	BYTE PTR -31[rbp], al
.L278:
	movzx	eax, BYTE PTR -31[rbp]
	cmp	al, BYTE PTR -26[rbp]
	jb	.L281
	lea	rdi, .LC49[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	cmp	al, -1
	jne	.L282
	mov	edi, 124
	call	putchar@PLT
.L282:
	cmp	BYTE PTR -47[rbp], -1
	jne	.L283
	mov	edi, 124
	call	putchar@PLT
.L283:
	mov	BYTE PTR -30[rbp], 0
	jmp	.L284
.L287:
	movzx	edx, BYTE PTR -30[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC48[rip]
	mov	eax, 0
	call	printf@PLT
	movzx	edx, BYTE PTR -30[rbp]
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	cmp	edx, eax
	jne	.L285
	mov	edi, 124
	call	putchar@PLT
.L285:
	movzx	edx, BYTE PTR -30[rbp]
	movsx	eax, BYTE PTR -47[rbp]
	cmp	edx, eax
	jne	.L286
	mov	edi, 124
	call	putchar@PLT
.L286:
	movzx	eax, BYTE PTR -30[rbp]
	add	eax, 1
	mov	BYTE PTR -30[rbp], al
.L284:
	movzx	eax, BYTE PTR -30[rbp]
	cmp	al, BYTE PTR -26[rbp]
	jb	.L287
	mov	edi, 10
	call	putchar@PLT
	movsx	eax, BYTE PTR -47[rbp]
	mov	rdx, QWORD PTR -56[rbp]
	mov	esi, eax
	mov	edi, 0
	call	sortEmptyCellsArray
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	ecx, al
	movzx	eax, BYTE PTR -47[rbp]
	add	eax, 1
	movsx	eax, al
	mov	rdx, QWORD PTR -56[rbp]
	mov	esi, ecx
	mov	edi, eax
	call	sortEmptyCellsArray
	mov	BYTE PTR -25[rbp], 0
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR 33[rax]
	movsx	eax, al
	lea	edx, 1[rax]
	movsx	eax, BYTE PTR -46[rbp]
	mov	esi, eax
	lea	rdi, .LC55[rip]
	mov	eax, 0
	call	printf@PLT
.L236:
	cmp	BYTE PTR -47[rbp], 0
	jns	.L288
	lea	rdi, .LC56[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	rdi, rax
	call	printMatrix
	mov	BYTE PTR -29[rbp], 0
	jmp	.L289
.L290:
	movzx	edx, BYTE PTR -29[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	movzx	edx, BYTE PTR -29[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	movzx	eax, BYTE PTR -29[rbp]
	add	eax, 1
	mov	BYTE PTR -29[rbp], al
.L289:
	movzx	eax, BYTE PTR -29[rbp]
	cmp	al, BYTE PTR -26[rbp]
	jb	.L290
	mov	BYTE PTR -28[rbp], 0
	jmp	.L291
.L292:
	movzx	edx, BYTE PTR -28[rbp]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	movzx	eax, BYTE PTR -28[rbp]
	add	eax, 1
	mov	BYTE PTR -28[rbp], al
.L291:
	cmp	BYTE PTR -28[rbp], 80
	jbe	.L292
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
	lea	rdi, .LC57[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	free@PLT
	lea	rdi, .LC58[rip]
	call	puts@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE26:
	.size	fullSolve, .-fullSolve
	.globl	solve
	.type	solve, @function
solve:
.LFB27:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	cmp	QWORD PTR -24[rbp], 0
	je	.L307
	mov	BYTE PTR -12[rbp], 0
	jmp	.L296
.L298:
	movzx	eax, BYTE PTR -12[rbp]
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	je	.L308
	movzx	eax, BYTE PTR -12[rbp]
	add	eax, 1
	mov	BYTE PTR -12[rbp], al
.L296:
	cmp	BYTE PTR -12[rbp], 8
	jbe	.L298
	mov	eax, 0
	call	newPuzzle
	mov	QWORD PTR -8[rbp], rax
	mov	BYTE PTR -11[rbp], 0
	jmp	.L299
.L300:
	movzx	eax, BYTE PTR -11[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	rsi, QWORD PTR [rax]
	movzx	ecx, BYTE PTR -11[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	sal	rax, 2
	add	rax, rsi
	mov	eax, DWORD PTR [rax]
	movsx	rdx, eax
	imul	rdx, rdx, 954437177
	shr	rdx, 32
	sar	edx
	mov	esi, eax
	sar	esi, 31
	mov	ecx, edx
	sub	ecx, esi
	mov	edx, ecx
	sal	edx, 3
	add	edx, ecx
	sub	eax, edx
	mov	ecx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, QWORD PTR [rax]
	movzx	eax, BYTE PTR -11[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rsi
	mov	rdi, QWORD PTR [rax]
	movzx	esi, BYTE PTR -11[rbp]
	movzx	edx, sil
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	esi, eax
	mov	edx, esi
	movzx	eax, dl
	add	rax, rdi
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	movzx	eax, BYTE PTR -11[rbp]
	add	eax, 1
	mov	BYTE PTR -11[rbp], al
.L299:
	cmp	BYTE PTR -11[rbp], 80
	jbe	.L300
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	copyInitialPuzzleToSolutionMatrix
	mov	BYTE PTR -10[rbp], 0
	jmp	.L301
.L303:
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -10[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rcx
	mov	rsi, QWORD PTR [rax]
	movzx	ecx, BYTE PTR -10[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	add	rax, rsi
	movzx	esi, BYTE PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -10[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rcx
	mov	rdi, QWORD PTR [rax]
	movzx	ecx, BYTE PTR -10[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	add	rax, rdi
	movzx	eax, BYTE PTR [rax]
	cmp	sil, al
	je	.L302
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	freePuzzle
	jmp	.L293
.L302:
	movzx	eax, BYTE PTR -10[rbp]
	add	eax, 1
	mov	BYTE PTR -10[rbp], al
.L301:
	cmp	BYTE PTR -10[rbp], 80
	jbe	.L303
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	createEmptyCellMatrix
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	singlePossibleSolutions
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	fullSolve
	mov	BYTE PTR -9[rbp], 0
	jmp	.L304
.L306:
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR [rax]
	movzx	eax, BYTE PTR -9[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rcx
	mov	rsi, QWORD PTR [rax]
	movzx	ecx, BYTE PTR -9[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	add	rax, rsi
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L305
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR 8[rax]
	movzx	eax, BYTE PTR -9[rbp]
	movzx	edx, al
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	shr	al
	movzx	eax, al
	sal	rax, 3
	add	rax, rcx
	mov	rsi, QWORD PTR [rax]
	movzx	ecx, BYTE PTR -9[rbp]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, dl
	add	rax, rsi
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, cl
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	sal	eax, 3
	add	eax, edx
	shr	ax, 8
	mov	edx, eax
	shr	dl
	mov	eax, edx
	sal	eax, 3
	add	eax, edx
	sub	ecx, eax
	mov	edx, ecx
	movzx	eax, BYTE PTR -9[rbp]
	movzx	ecx, al
	mov	eax, ecx
	sal	eax, 3
	sub	eax, ecx
	sal	eax, 3
	add	eax, ecx
	shr	ax, 8
	shr	al
	movzx	eax, al
	lea	rcx, 0[0+rax*8]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	mov	rdi, QWORD PTR [rax]
	movzx	esi, BYTE PTR -9[rbp]
	movzx	ecx, sil
	mov	eax, ecx
	sal	eax, 3
	sub	eax, ecx
	sal	eax, 3
	add	eax, ecx
	shr	ax, 8
	mov	ecx, eax
	shr	cl
	mov	eax, ecx
	sal	eax, 3
	add	eax, ecx
	sub	esi, eax
	mov	ecx, esi
	movzx	eax, cl
	sal	rax, 2
	lea	rcx, [rdi+rax]
	movzx	eax, dl
	mov	DWORD PTR [rcx], eax
.L305:
	movzx	eax, BYTE PTR -9[rbp]
	add	eax, 1
	mov	BYTE PTR -9[rbp], al
.L304:
	cmp	BYTE PTR -9[rbp], 80
	jbe	.L306
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	freePuzzle
	jmp	.L293
.L307:
	nop
	jmp	.L293
.L308:
	nop
.L293:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE27:
	.size	solve, .-solve
	.section	.rodata
.LC59:
	.string	"p"
.LC60:
	.string	"p->initialPuzzle"
.LC61:
	.string	"Full Solve"
	.text
	.globl	main
	.type	main, @function
main:
.LFB28:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	eax, 0
	call	newPuzzle
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L310
	lea	rcx, __PRETTY_FUNCTION__.0[rip]
	mov	edx, 1081
	lea	rsi, .LC0[rip]
	lea	rdi, .LC59[rip]
	call	__assert_fail@PLT
.L310:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L311
	lea	rcx, __PRETTY_FUNCTION__.0[rip]
	mov	edx, 1082
	lea	rsi, .LC0[rip]
	lea	rdi, .LC60[rip]
	call	__assert_fail@PLT
.L311:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR [rax]
	mov	BYTE PTR [rax], 8
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR [rax]
	add	rax, 1
	mov	BYTE PTR [rax], 4
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR [rax]
	add	rax, 3
	mov	BYTE PTR [rax], 3
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	add	rax, 8
	mov	rax, QWORD PTR [rax]
	add	rax, 1
	mov	BYTE PTR [rax], 6
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	add	rax, 8
	mov	rax, QWORD PTR [rax]
	add	rax, 3
	mov	BYTE PTR [rax], 7
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	add	rax, 8
	mov	rax, QWORD PTR [rax]
	add	rax, 6
	mov	BYTE PTR [rax], 9
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	add	rax, 16
	mov	rax, QWORD PTR [rax]
	add	rax, 4
	mov	BYTE PTR [rax], 5
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	add	rax, 32
	mov	rax, QWORD PTR [rax]
	add	rax, 8
	mov	BYTE PTR [rax], 9
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	add	rax, 48
	mov	rax, QWORD PTR [rax]
	add	rax, 4
	mov	BYTE PTR [rax], 1
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	add	rax, 56
	mov	rax, QWORD PTR [rax]
	add	rax, 2
	mov	BYTE PTR [rax], 1
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	add	rax, 56
	mov	rax, QWORD PTR [rax]
	add	rax, 5
	mov	BYTE PTR [rax], 2
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	add	rax, 56
	mov	rax, QWORD PTR [rax]
	add	rax, 7
	mov	BYTE PTR [rax], 4
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	add	rax, 64
	mov	rax, QWORD PTR [rax]
	add	rax, 5
	mov	BYTE PTR [rax], 6
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	add	rax, 64
	mov	rax, QWORD PTR [rax]
	add	rax, 7
	mov	BYTE PTR [rax], 1
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	add	rax, 64
	mov	rax, QWORD PTR [rax]
	add	rax, 8
	mov	BYTE PTR [rax], 8
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	copyInitialPuzzleToSolutionMatrix
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	createEmptyCellMatrix
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	singlePossibleSolutions
	lea	rdi, .LC61[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	fullSolve
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	printPuzzle
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	freePuzzle
	mov	eax, 0
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE28:
	.size	main, .-main
	.section	.rodata
	.align 16
	.type	__PRETTY_FUNCTION__.10, @object
	.size	__PRETTY_FUNCTION__.10, 16
__PRETTY_FUNCTION__.10:
	.string	"areRelatedCells"
	.align 16
	.type	__PRETTY_FUNCTION__.9, @object
	.size	__PRETTY_FUNCTION__.9, 20
__PRETTY_FUNCTION__.9:
	.string	"sortEmptyCellsArray"
	.align 16
	.type	__PRETTY_FUNCTION__.8, @object
	.size	__PRETTY_FUNCTION__.8, 22
__PRETTY_FUNCTION__.8:
	.string	"createEmptyCellMatrix"
	.align 16
	.type	__PRETTY_FUNCTION__.7, @object
	.size	__PRETTY_FUNCTION__.7, 31
__PRETTY_FUNCTION__.7:
	.string	"insertValueAndSetPossibilities"
	.align 8
	.type	__PRETTY_FUNCTION__.6, @object
	.size	__PRETTY_FUNCTION__.6, 10
__PRETTY_FUNCTION__.6:
	.string	"newPuzzle"
	.align 8
	.type	__PRETTY_FUNCTION__.5, @object
	.size	__PRETTY_FUNCTION__.5, 11
__PRETTY_FUNCTION__.5:
	.string	"freePuzzle"
	.align 16
	.type	__PRETTY_FUNCTION__.4, @object
	.size	__PRETTY_FUNCTION__.4, 16
__PRETTY_FUNCTION__.4:
	.string	"onlyPossibility"
	.align 16
	.type	__PRETTY_FUNCTION__.3, @object
	.size	__PRETTY_FUNCTION__.3, 24
__PRETTY_FUNCTION__.3:
	.string	"singlePossibleSolutions"
	.align 8
	.type	__PRETTY_FUNCTION__.2, @object
	.size	__PRETTY_FUNCTION__.2, 8
__PRETTY_FUNCTION__.2:
	.string	"upSolve"
	.align 8
	.type	__PRETTY_FUNCTION__.1, @object
	.size	__PRETTY_FUNCTION__.1, 10
__PRETTY_FUNCTION__.1:
	.string	"fullSolve"
	.type	__PRETTY_FUNCTION__.0, @object
	.size	__PRETTY_FUNCTION__.0, 5
__PRETTY_FUNCTION__.0:
	.string	"main"
	.ident	"GCC: (Ubuntu 10.5.0-1ubuntu1~20.04) 10.5.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 6
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"215200.c"
	.text
	.align	2
	.global	clearUnsolvedCells
	.syntax unified
	.arm
	.fpu softvfp
	.type	clearUnsolvedCells, %function
clearUnsolvedCells:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	mov	r3, #0
	strb	r3, [fp, #-5]
	b	.L2
.L3:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	ldr	r1, [r3, #12]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r1, .L4
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r0, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, .L4
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, r0, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-5]
.L2:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	ble	.L3
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L5:
	.align	2
.L4:
	.word	954437177
	.size	clearUnsolvedCells, .-clearUnsolvedCells
	.align	2
	.global	isInsertable
	.syntax unified
	.arm
	.fpu softvfp
	.type	isInsertable, %function
isInsertable:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r3, [fp, #-20]
	mov	r3, r0
	strb	r3, [fp, #-13]
	mov	r3, r1
	strb	r3, [fp, #-14]
	mov	r3, r2
	strb	r3, [fp, #-15]
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L7
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	cmp	r3, #9
	bls	.L8
.L7:
	mov	r3, #0
	b	.L9
.L8:
	ldr	r3, [fp, #-20]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	eor	r3, r3, #1
	and	r3, r3, #255
	cmp	r3, #0
	beq	.L10
	mov	r3, #0
	b	.L9
.L10:
	ldrb	r2, [fp, #-14]	@ zero_extendqisi2
	ldr	r3, .L29
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	strb	r3, [fp, #-14]
	ldrb	r2, [fp, #-15]	@ zero_extendqisi2
	ldr	r3, .L29
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	strb	r3, [fp, #-15]
	ldr	r3, [fp, #-20]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r2, [fp, #-13]
	strb	r2, [r3]
	mov	r3, #0
	strb	r3, [fp, #-11]
	mov	r3, #0
	strb	r3, [fp, #-10]
	mov	r3, #0
	strb	r3, [fp, #-9]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	ldr	r2, .L29+4
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	strb	r3, [fp, #-10]
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	ldr	r2, .L29+4
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	strb	r3, [fp, #-9]
	b	.L11
.L13:
	ldr	r3, [fp, #-20]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-13]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L12
	mov	r3, #0
	b	.L9
.L12:
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-11]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	ldr	r2, .L29+4
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	and	r2, r3, #255
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	ldr	r1, .L29+4
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	add	r3, r2, r3
	strb	r3, [fp, #-10]
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	ldr	r2, .L29+4
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	and	r0, r3, #255
	ldrb	r2, [fp, #-11]	@ zero_extendqisi2
	ldr	r3, .L29+4
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, r0, r3
	strb	r3, [fp, #-9]
.L11:
	ldrb	r0, [fp, #-11]	@ zero_extendqisi2
	ldrb	r2, [fp, #-14]	@ zero_extendqisi2
	ldr	r3, .L29+4
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #1
	add	ip, r3, r2
	ldrb	r2, [fp, #-15]	@ zero_extendqisi2
	ldr	r3, .L29+4
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, ip, r3
	cmp	r0, r3
	blt	.L13
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-11]
	b	.L14
.L16:
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	ldr	r2, .L29+4
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	and	r2, r3, #255
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	ldr	r1, .L29+4
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	add	r3, r2, r3
	strb	r3, [fp, #-10]
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	ldr	r2, .L29+4
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	and	r0, r3, #255
	ldrb	r2, [fp, #-11]	@ zero_extendqisi2
	ldr	r3, .L29+4
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, r0, r3
	strb	r3, [fp, #-9]
	ldr	r3, [fp, #-20]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-13]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L15
	mov	r3, #0
	b	.L9
.L15:
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-11]
.L14:
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L16
	mov	r3, #0
	strb	r3, [fp, #-8]
	b	.L17
.L19:
	ldr	r3, [fp, #-20]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-13]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L18
	mov	r3, #0
	b	.L9
.L18:
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-8]
.L17:
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	ldr	r2, .L29+4
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r2, r3, #255
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	ldr	r1, .L29+4
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	cmp	r2, r3
	bcc	.L19
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	ldr	r2, .L29+4
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	add	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	strb	r3, [fp, #-7]
	b	.L20
.L22:
	ldr	r3, [fp, #-20]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-13]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L21
	mov	r3, #0
	b	.L9
.L21:
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-7]
.L20:
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L22
	mov	r3, #0
	strb	r3, [fp, #-6]
	b	.L23
.L25:
	ldr	r3, [fp, #-20]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-13]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L24
	mov	r3, #0
	b	.L9
.L24:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-6]
.L23:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	ldr	r2, .L29+4
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r2, r3, #255
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	ldr	r1, .L29+4
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	cmp	r2, r3
	bcc	.L25
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	ldr	r2, .L29+4
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	add	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	strb	r3, [fp, #-5]
	b	.L26
.L28:
	ldr	r3, [fp, #-20]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-13]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L27
	mov	r3, #0
	b	.L9
.L27:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-5]
.L26:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L28
	mov	r3, #1
.L9:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L30:
	.align	2
.L29:
	.word	954437177
	.word	-1431655765
	.size	isInsertable, .-isInsertable
	.section	.rodata
	.align	2
.LC0:
	.ascii	"the_stack_data/215200.c\000"
	.align	2
.LC1:
	.ascii	"index0<81\000"
	.align	2
.LC2:
	.ascii	"index1<81\000"
	.text
	.align	2
	.global	areRelatedCells
	.syntax unified
	.arm
	.fpu softvfp
	.type	areRelatedCells, %function
areRelatedCells:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	mov	r3, r0
	mov	r2, r1
	strb	r3, [fp, #-5]
	mov	r3, r2
	strb	r3, [fp, #-6]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #80
	bls	.L32
	ldr	r3, .L39
	mov	r2, #93
	ldr	r1, .L39+4
	ldr	r0, .L39+8
	bl	__assert_fail
.L32:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	cmp	r3, #80
	bls	.L33
	ldr	r3, .L39
	mov	r2, #94
	ldr	r1, .L39+4
	ldr	r0, .L39+12
	bl	__assert_fail
.L33:
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L34
	mov	r3, #0
	b	.L35
.L34:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	ldr	r2, .L39+16
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r2, r3, #255
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	ldr	r1, .L39+16
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	cmp	r2, r3
	bne	.L36
	mov	r3, #1
	b	.L35
.L36:
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	ldr	r3, .L39+16
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r0, r3, #255
	ldrb	r2, [fp, #-6]	@ zero_extendqisi2
	ldr	r3, .L39+16
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	cmp	r0, r3
	bne	.L37
	mov	r3, #1
	b	.L35
.L37:
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	ldr	r3, .L39+20
	umull	r1, r3, r2, r3
	sub	r2, r2, r3
	lsr	r2, r2, #1
	add	r3, r3, r2
	lsr	r3, r3, #4
	and	r1, r3, #255
	ldrb	r2, [fp, #-6]	@ zero_extendqisi2
	ldr	r3, .L39+20
	umull	r0, r3, r2, r3
	sub	r2, r2, r3
	lsr	r2, r2, #1
	add	r3, r3, r2
	lsr	r3, r3, #4
	and	r3, r3, #255
	cmp	r1, r3
	bne	.L38
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	ldr	r3, .L39+16
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	ldr	r2, .L39+24
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r0, r3, #255
	ldrb	r2, [fp, #-6]	@ zero_extendqisi2
	ldr	r3, .L39+16
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	ldr	r2, .L39+24
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	cmp	r0, r3
	bne	.L38
	mov	r3, #1
	b	.L35
.L38:
	mov	r3, #0
.L35:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L40:
	.align	2
.L39:
	.word	__PRETTY_FUNCTION__.5202
	.word	.LC0
	.word	.LC1
	.word	.LC2
	.word	954437177
	.word	795364315
	.word	-1431655765
	.size	areRelatedCells, .-areRelatedCells
	.align	2
	.global	connectionCount
	.syntax unified
	.arm
	.fpu softvfp
	.type	connectionCount, %function
connectionCount:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	mov	r3, r0
	str	r2, [fp, #-20]
	strb	r3, [fp, #-13]
	mov	r3, r1
	strb	r3, [fp, #-14]
	ldrb	r2, [fp, #-14]	@ zero_extendqisi2
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	mov	r1, r2
	mov	r0, r3
	bl	areRelatedCells
	mov	r3, r0
	eor	r3, r3, #1
	and	r3, r3, #255
	cmp	r3, #0
	beq	.L42
	mov	r3, #0
	b	.L43
.L42:
	mov	r3, #0
	strb	r3, [fp, #-6]
	mov	r3, #0
	strb	r3, [fp, #-5]
	b	.L44
.L46:
	ldr	r3, [fp, #-20]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	ldr	r1, .L47
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r0, [r3]
	ldrb	r2, [fp, #-13]	@ zero_extendqisi2
	ldr	r3, .L47
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r0, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L45
	ldr	r3, [fp, #-20]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	ldr	r1, .L47
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r0, [r3]
	ldrb	r2, [fp, #-14]	@ zero_extendqisi2
	ldr	r3, .L47
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r0, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L45
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-6]
.L45:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-5]
.L44:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L46
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
.L43:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L48:
	.align	2
.L47:
	.word	954437177
	.size	connectionCount, .-connectionCount
	.align	2
	.global	connectionCountWithSetOfIndexes
	.syntax unified
	.arm
	.fpu softvfp
	.type	connectionCountWithSetOfIndexes, %function
connectionCountWithSetOfIndexes:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r3, [fp, #-20]
	mov	r3, r0
	strb	r3, [fp, #-13]
	mov	r3, r1
	strb	r3, [fp, #-14]
	mov	r3, r2
	strb	r3, [fp, #-15]
	mov	r3, #0
	strb	r3, [fp, #-6]
	ldrb	r3, [fp, #-14]
	strb	r3, [fp, #-5]
	b	.L50
.L51:
	ldrb	r1, [fp, #-13]	@ zero_extendqisi2
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	ldr	r2, [fp, #-20]
	mov	r0, r3
	bl	connectionCount
	mov	r3, r0
	mov	r2, r3
	ldrb	r3, [fp, #-6]
	add	r3, r2, r3
	strb	r3, [fp, #-6]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-5]
.L50:
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	cmp	r2, r3
	bls	.L51
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	connectionCountWithSetOfIndexes, .-connectionCountWithSetOfIndexes
	.align	2
	.global	cellPossibleValuesCount
	.syntax unified
	.arm
	.fpu softvfp
	.type	cellPossibleValuesCount, %function
cellPossibleValuesCount:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	mov	r3, r0
	str	r1, [fp, #-20]
	strb	r3, [fp, #-13]
	mov	r3, #0
	strb	r3, [fp, #-6]
	mov	r3, #0
	strb	r3, [fp, #-5]
	b	.L54
.L56:
	ldr	r3, [fp, #-20]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	ldr	r1, .L58
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r0, [r3]
	ldrb	r2, [fp, #-13]	@ zero_extendqisi2
	ldr	r3, .L58
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r0, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L55
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-6]
.L55:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-5]
.L54:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L56
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L59:
	.align	2
.L58:
	.word	954437177
	.size	cellPossibleValuesCount, .-cellPossibleValuesCount
	.section	.rodata
	.align	2
.LC3:
	.ascii	"endIndex: %i    unsolvedCellsIndex: %u\012\000"
	.align	2
.LC4:
	.ascii	"endIndex<=puzzle->unsolvedCellsIndex\000"
	.align	2
.LC5:
	.ascii	"startIndex: %i   endIndex: %i\012\000"
	.align	2
.LC6:
	.ascii	"index>0\000"
	.text
	.align	2
	.global	sortEmptyCellsArray
	.syntax unified
	.arm
	.fpu softvfp
	.type	sortEmptyCellsArray, %function
sortEmptyCellsArray:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	mov	r3, r0
	str	r2, [fp, #-28]
	strb	r3, [fp, #-21]
	mov	r3, r1
	strb	r3, [fp, #-22]
	ldr	r3, [fp, #-28]
	ldrsb	r3, [r3, #17]
	ldrsb	r2, [fp, #-22]
	cmp	r2, r3
	ble	.L61
	ldrsb	r1, [fp, #-22]
	ldr	r3, [fp, #-28]
	ldrsb	r3, [r3, #17]
	mov	r2, r3
	ldr	r0, .L74
	bl	printf
.L61:
	ldr	r3, [fp, #-28]
	ldrsb	r3, [r3, #17]
	ldrsb	r2, [fp, #-22]
	cmp	r2, r3
	ble	.L62
	ldr	r3, .L74+4
	mov	r2, #143
	ldr	r1, .L74+8
	ldr	r0, .L74+12
	bl	__assert_fail
.L62:
	ldrsb	r2, [fp, #-21]
	ldrsb	r3, [fp, #-22]
	cmp	r2, r3
	ble	.L63
	ldrsb	r3, [fp, #-21]
	ldrsb	r2, [fp, #-22]
	mov	r1, r3
	ldr	r0, .L74+16
	bl	printf
.L63:
	mov	r3, #0
	strb	r3, [fp, #-8]
	mov	r3, #0
	strb	r3, [fp, #-14]
	mov	r3, #0
	strb	r3, [fp, #-7]
	mov	r3, #0
	strb	r3, [fp, #-6]
	ldrsb	r3, [fp, #-21]
	cmp	r3, #0
	bne	.L64
	mvn	r3, #0
	strb	r3, [fp, #-13]
	mov	r3, #0
	strb	r3, [fp, #-12]
	mov	r3, #0
	strb	r3, [fp, #-5]
	mov	r3, #0
	strb	r3, [fp, #-11]
	b	.L65
.L67:
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	ldr	r1, [fp, #-28]
	mov	r0, r3
	bl	cellPossibleValuesCount
	mov	r3, r0
	strb	r3, [fp, #-5]
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	cmp	r2, r3
	bcs	.L66
	ldrb	r3, [fp, #-5]
	strb	r3, [fp, #-13]
	ldrb	r3, [fp, #-11]
	strb	r3, [fp, #-12]
.L66:
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-11]
.L65:
	ldrb	r2, [fp, #-11]	@ zero_extendqisi2
	ldrsb	r3, [fp, #-22]
	cmp	r2, r3
	ble	.L67
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]
	strb	r3, [fp, #-6]
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-28]
	ldr	r1, [r3, #12]
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-28]
	ldr	r3, [r3, #12]
	ldrb	r2, [fp, #-6]
	strb	r2, [r3]
	mov	r3, #1
	strb	r3, [fp, #-21]
.L64:
	ldrb	r3, [fp, #-21]
	strb	r3, [fp, #-10]
	b	.L68
.L73:
	mov	r3, #0
	strb	r3, [fp, #-8]
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L69
	ldr	r3, .L74+4
	mov	r2, #201
	ldr	r1, .L74+8
	ldr	r0, .L74+20
	bl	__assert_fail
.L69:
	ldrb	r3, [fp, #-10]
	strb	r3, [fp, #-14]
	ldrb	r3, [fp, #-10]
	strb	r3, [fp, #-9]
	b	.L70
.L72:
	ldrb	r3, [fp, #-10]
	sub	r3, r3, #1
	and	r2, r3, #255
	ldrb	r0, [fp, #-9]	@ zero_extendqisi2
	ldr	r3, [fp, #-28]
	mov	r1, #0
	bl	connectionCountWithSetOfIndexes
	mov	r3, r0
	strb	r3, [fp, #-7]
	ldrb	r2, [fp, #-7]	@ zero_extendqisi2
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	cmp	r2, r3
	bls	.L71
	ldrb	r3, [fp, #-9]
	strb	r3, [fp, #-14]
.L71:
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-9]
.L70:
	ldrb	r2, [fp, #-9]	@ zero_extendqisi2
	ldrsb	r3, [fp, #-22]
	cmp	r2, r3
	ble	.L72
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]
	strb	r3, [fp, #-6]
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	add	r2, r2, r3
	ldr	r3, [fp, #-28]
	ldr	r1, [r3, #12]
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r2, [fp, #-6]
	strb	r2, [r3]
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-10]
.L68:
	ldrb	r2, [fp, #-10]	@ zero_extendqisi2
	ldrsb	r3, [fp, #-22]
	cmp	r2, r3
	ble	.L73
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L75:
	.align	2
.L74:
	.word	.LC3
	.word	__PRETTY_FUNCTION__.5238
	.word	.LC0
	.word	.LC4
	.word	.LC5
	.word	.LC6
	.size	sortEmptyCellsArray, .-sortEmptyCellsArray
	.section	.rodata
	.align	2
.LC7:
	.ascii	"puzzle->unsolvedCellsIndex==puzzle->emptyCellsCount"
	.ascii	"\000"
	.text
	.align	2
	.global	createEmptyCellMatrix
	.syntax unified
	.arm
	.fpu softvfp
	.type	createEmptyCellMatrix, %function
createEmptyCellMatrix:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	mov	r2, #0
	strb	r2, [r3, #16]
	mov	r3, #0
	strb	r3, [fp, #-8]
	b	.L77
.L81:
	mov	r3, #0
	strb	r3, [fp, #-7]
	b	.L78
.L80:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L79
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3, #16]	@ zero_extendqisi2
	add	r3, r3, #1
	and	r2, r3, #255
	ldr	r3, [fp, #-16]
	strb	r2, [r3, #16]
.L79:
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-7]
.L78:
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L80
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-8]
.L77:
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L81
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3, #16]	@ zero_extendqisi2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-16]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-16]
	mov	r2, #0
	strb	r2, [r3, #17]
	mov	r3, #0
	strb	r3, [fp, #-6]
	b	.L82
.L86:
	mov	r3, #0
	strb	r3, [fp, #-5]
	b	.L83
.L85:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L84
	ldrb	r3, [fp, #-6]
	mov	r2, r3
	lsl	r2, r2, #3
	add	r3, r2, r3
	and	r1, r3, #255
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #12]
	ldr	r2, [fp, #-16]
	ldrsb	r2, [r2, #17]
	add	r3, r3, r2
	ldrb	r2, [fp, #-5]
	add	r2, r1, r2
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	ldrsb	r3, [r3, #17]
	and	r3, r3, #255
	add	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-16]
	strb	r2, [r3, #17]
.L84:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-5]
.L83:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L85
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-6]
.L82:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L86
	ldr	r3, [fp, #-16]
	ldrsb	r3, [r3, #17]
	mov	r2, r3
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3, #16]	@ zero_extendqisi2
	cmp	r2, r3
	beq	.L87
	ldr	r3, .L88
	mov	r2, #248
	ldr	r1, .L88+4
	ldr	r0, .L88+8
	bl	__assert_fail
.L87:
	ldr	r3, [fp, #-16]
	ldrsb	r3, [r3, #17]
	and	r3, r3, #255
	sub	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-16]
	strb	r2, [r3, #17]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L89:
	.align	2
.L88:
	.word	__PRETTY_FUNCTION__.5277
	.word	.LC0
	.word	.LC7
	.size	createEmptyCellMatrix, .-createEmptyCellMatrix
	.section	.rodata
	.align	2
.LC8:
	.ascii	"\012[%d]\012\000"
	.align	2
.LC9:
	.ascii	"_____________________\000"
	.align	2
.LC10:
	.ascii	"|%u\000"
	.align	2
.LC11:
	.ascii	"|\000"
	.text
	.align	2
	.global	printPossibilitiesMatrix
	.syntax unified
	.arm
	.fpu softvfp
	.type	printPossibilitiesMatrix, %function
printPossibilitiesMatrix:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, r1
	strb	r3, [fp, #-17]
	ldrb	r3, [fp, #-17]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L101
	bl	printf
	ldr	r0, .L101+4
	bl	puts
	mov	r3, #0
	strb	r3, [fp, #-7]
	b	.L91
.L100:
	mov	r3, #0
	strb	r3, [fp, #-6]
	b	.L92
.L96:
	ldrb	r2, [fp, #-6]	@ zero_extendqisi2
	ldr	r3, .L101+8
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	cmp	r3, #0
	bne	.L93
	mov	r0, #124
	bl	putchar
.L93:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-17]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L94
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-17]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L101+12
	bl	printf
	b	.L95
.L94:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-17]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L101+12
	bl	printf
.L95:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-6]
.L92:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L96
	ldr	r0, .L101+16
	bl	puts
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L97
	ldrb	r2, [fp, #-7]	@ zero_extendqisi2
	ldr	r3, .L101+8
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	cmp	r3, #2
	bne	.L97
	mov	r3, #0
	strb	r3, [fp, #-5]
	b	.L98
.L99:
	ldr	r0, .L101+20
	bl	putchar
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-5]
.L98:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #20
	bls	.L99
	mov	r0, #10
	bl	putchar
.L97:
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-7]
.L91:
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L100
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L102:
	.align	2
.L101:
	.word	.LC8
	.word	.LC9
	.word	-1431655765
	.word	.LC10
	.word	.LC11
	.word	862
	.size	printPossibilitiesMatrix, .-printPossibilitiesMatrix
	.section	.rodata
	.align	2
.LC12:
	.ascii	"| \000"
	.text
	.align	2
	.global	printMatrix
	.syntax unified
	.arm
	.fpu softvfp
	.type	printMatrix, %function
printMatrix:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r0, .L114
	bl	puts
	mov	r3, #0
	strb	r3, [fp, #-7]
	b	.L104
.L113:
	mov	r3, #0
	strb	r3, [fp, #-6]
	b	.L105
.L109:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L106
	ldrb	r2, [fp, #-6]	@ zero_extendqisi2
	ldr	r3, .L114+4
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	cmp	r3, #0
	bne	.L106
	mov	r0, #124
	bl	putchar
.L106:
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	lsl	r3, r3, #2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L107
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	lsl	r3, r3, #2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L114+8
	bl	printf
	b	.L108
.L107:
	ldr	r0, .L114+12
	bl	printf
.L108:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-6]
.L105:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L109
	ldr	r0, .L114+16
	bl	puts
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L110
	ldrb	r2, [fp, #-7]	@ zero_extendqisi2
	ldr	r3, .L114+4
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	cmp	r3, #2
	bne	.L110
	mov	r3, #0
	strb	r3, [fp, #-5]
	b	.L111
.L112:
	ldr	r0, .L114+20
	bl	putchar
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-5]
.L111:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #20
	bls	.L112
	mov	r0, #10
	bl	putchar
.L110:
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-7]
.L104:
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L113
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L115:
	.align	2
.L114:
	.word	.LC9
	.word	-1431655765
	.word	.LC10
	.word	.LC12
	.word	.LC11
	.word	862
	.size	printMatrix, .-printMatrix
	.section	.rodata
	.align	2
.LC13:
	.ascii	"Initial Puzzle\000"
	.align	2
.LC14:
	.ascii	"Working Solution\000"
	.text
	.align	2
	.global	printPuzzle
	.syntax unified
	.arm
	.fpu softvfp
	.type	printPuzzle, %function
printPuzzle:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r0, .L117
	bl	puts
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	mov	r0, r3
	bl	printMatrix
	ldr	r0, .L117+4
	bl	puts
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	printMatrix
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L118:
	.align	2
.L117:
	.word	.LC13
	.word	.LC14
	.size	printPuzzle, .-printPuzzle
	.section	.rodata
	.align	2
.LC15:
	.ascii	"puzzle->possibilitiesMatrix[row][col][value-1]\000"
	.align	2
.LC16:
	.ascii	"boxCounter==8\000"
	.align	2
.LC17:
	.ascii	"colCounter==6\000"
	.align	2
.LC18:
	.ascii	"puzzle->possibilitiesMatrix[row][index][value-1]==f"
	.ascii	"alse\000"
	.align	2
.LC19:
	.ascii	"rowCounter==6\000"
	.text
	.align	2
	.global	insertValueAndSetPossibilities
	.syntax unified
	.arm
	.fpu softvfp
	.type	insertValueAndSetPossibilities, %function
insertValueAndSetPossibilities:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r3, [fp, #-28]
	mov	r3, r0
	strb	r3, [fp, #-21]
	mov	r3, r1
	strb	r3, [fp, #-22]
	mov	r3, r2
	strb	r3, [fp, #-23]
	ldrb	r2, [fp, #-21]	@ zero_extendqisi2
	ldr	r3, .L144
	umull	r1, r3, r2, r3
	lsr	r1, r3, #3
	mov	r3, r1
	lsl	r3, r3, #2
	add	r3, r3, r1
	lsl	r3, r3, #1
	sub	r3, r2, r3
	strb	r3, [fp, #-21]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L143
	ldrb	r2, [fp, #-22]	@ zero_extendqisi2
	ldr	r3, .L144+4
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	strb	r3, [fp, #-22]
	ldrb	r2, [fp, #-23]	@ zero_extendqisi2
	ldr	r3, .L144+4
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	strb	r3, [fp, #-23]
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L122
	ldr	r3, .L144+8
	mov	r2, #328
	ldr	r1, .L144+12
	ldr	r0, .L144+16
	bl	__assert_fail
.L122:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r2, [fp, #-21]
	strb	r2, [r3]
	mov	r3, #0
	strb	r3, [fp, #-16]
	b	.L123
.L124:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-16]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-16]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-16]
.L123:
	ldrb	r2, [fp, #-16]	@ zero_extendqisi2
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	sub	r3, r3, #1
	cmp	r2, r3
	blt	.L124
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	mov	r2, #1
	strb	r2, [r3]
	ldrb	r3, [fp, #-21]
	strb	r3, [fp, #-15]
	b	.L125
.L126:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-15]
.L125:
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L126
	mov	r3, #0
	strb	r3, [fp, #-14]
	mov	r3, #0
	strb	r3, [fp, #-13]
	mov	r3, #0
	strb	r3, [fp, #-12]
	mov	r3, #0
	strb	r3, [fp, #-11]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldr	r2, .L144+20
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	strb	r3, [fp, #-13]
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	ldr	r2, .L144+20
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	strb	r3, [fp, #-12]
	b	.L127
.L128:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-14]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldr	r2, .L144+20
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	and	r2, r3, #255
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	ldr	r1, .L144+20
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	add	r3, r2, r3
	strb	r3, [fp, #-13]
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	ldr	r2, .L144+20
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	and	r0, r3, #255
	ldrb	r2, [fp, #-14]	@ zero_extendqisi2
	ldr	r3, .L144+20
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, r0, r3
	strb	r3, [fp, #-12]
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-11]
.L127:
	ldrb	r0, [fp, #-14]	@ zero_extendqisi2
	ldrb	r2, [fp, #-22]	@ zero_extendqisi2
	ldr	r3, .L144+20
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #1
	add	ip, r3, r2
	ldrb	r2, [fp, #-23]	@ zero_extendqisi2
	ldr	r3, .L144+20
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, ip, r3
	cmp	r0, r3
	blt	.L128
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-14]
	b	.L129
.L130:
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldr	r2, .L144+20
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	and	r2, r3, #255
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	ldr	r1, .L144+20
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	add	r3, r2, r3
	strb	r3, [fp, #-13]
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	ldr	r2, .L144+20
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	and	r0, r3, #255
	ldrb	r2, [fp, #-14]	@ zero_extendqisi2
	ldr	r3, .L144+20
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, r0, r3
	strb	r3, [fp, #-12]
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-14]
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-11]
.L129:
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L130
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	cmp	r3, #8
	beq	.L131
	ldr	r3, .L144+8
	mov	r2, #368
	ldr	r1, .L144+12
	ldr	r0, .L144+24
	bl	__assert_fail
.L131:
	mov	r3, #0
	strb	r3, [fp, #-10]
	mov	r3, #0
	strb	r3, [fp, #-9]
	b	.L132
.L133:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-10]
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-9]
.L132:
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	ldr	r2, .L144+20
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r2, r3, #255
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldr	r1, .L144+20
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	cmp	r2, r3
	bcc	.L133
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldr	r2, .L144+20
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	add	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	strb	r3, [fp, #-8]
	b	.L134
.L135:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-10]
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-8]
.L134:
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L135
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	cmp	r3, #6
	beq	.L136
	ldr	r3, .L144+8
	ldr	r2, .L144+28
	ldr	r1, .L144+12
	ldr	r0, .L144+32
	bl	__assert_fail
.L136:
	mov	r3, #0
	strb	r3, [fp, #-7]
	mov	r3, #0
	strb	r3, [fp, #-6]
	b	.L137
.L139:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	eor	r3, r3, #1
	and	r3, r3, #255
	cmp	r3, #0
	bne	.L138
	ldr	r3, .L144+8
	ldr	r2, .L144+36
	ldr	r1, .L144+12
	ldr	r0, .L144+40
	bl	__assert_fail
.L138:
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-7]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-6]
.L137:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	ldr	r2, .L144+20
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r2, r3, #255
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	ldr	r1, .L144+20
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	cmp	r2, r3
	bcc	.L139
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	ldr	r2, .L144+20
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	add	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	strb	r3, [fp, #-5]
	b	.L140
.L142:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	eor	r3, r3, #1
	and	r3, r3, #255
	cmp	r3, #0
	bne	.L141
	ldr	r3, .L144+8
	mov	r2, #396
	ldr	r1, .L144+12
	ldr	r0, .L144+40
	bl	__assert_fail
.L141:
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-7]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-5]
.L140:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L142
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	cmp	r3, #6
	beq	.L119
	ldr	r3, .L144+8
	ldr	r2, .L144+44
	ldr	r1, .L144+12
	ldr	r0, .L144+48
	bl	__assert_fail
.L143:
	nop
.L119:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L145:
	.align	2
.L144:
	.word	-858993459
	.word	954437177
	.word	__PRETTY_FUNCTION__.5318
	.word	.LC0
	.word	.LC15
	.word	-1431655765
	.word	.LC16
	.word	383
	.word	.LC17
	.word	389
	.word	.LC18
	.word	399
	.word	.LC19
	.size	insertValueAndSetPossibilities, .-insertValueAndSetPossibilities
	.align	2
	.global	copyInitialPuzzleToSolutionMatrix
	.syntax unified
	.arm
	.fpu softvfp
	.type	copyInitialPuzzleToSolutionMatrix, %function
copyInitialPuzzleToSolutionMatrix:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	strb	r3, [fp, #-6]
	b	.L147
.L150:
	mov	r3, #0
	strb	r3, [fp, #-5]
	b	.L148
.L149:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r0, [r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	ldrb	r1, [fp, #-6]	@ zero_extendqisi2
	ldr	r3, [fp, #-16]
	bl	insertValueAndSetPossibilities
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-5]
.L148:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L149
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-6]
.L147:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L150
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	copyInitialPuzzleToSolutionMatrix, .-copyInitialPuzzleToSolutionMatrix
	.section	.rodata
	.align	2
.LC20:
	.ascii	"puzzle\000"
	.align	2
.LC21:
	.ascii	"puzzle->initialPuzzle\000"
	.text
	.align	2
	.global	newPuzzle
	.syntax unified
	.arm
	.fpu softvfp
	.type	newPuzzle, %function
newPuzzle:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #12
	mov	r0, #20
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L152
	ldr	r3, .L161
	ldr	r2, .L161+4
	ldr	r1, .L161+8
	ldr	r0, .L161+12
	bl	__assert_fail
.L152:
	mov	r0, #36
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-16]
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L153
	ldr	r3, .L161
	ldr	r2, .L161+16
	ldr	r1, .L161+8
	ldr	r0, .L161+20
	bl	__assert_fail
.L153:
	mov	r0, #36
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-16]
	str	r2, [r3, #4]
	mov	r0, #36
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-16]
	str	r2, [r3, #8]
	mov	r3, #0
	strb	r3, [fp, #-19]
	b	.L154
.L159:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3]
	ldrb	r3, [fp, #-19]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r4, r2, r3
	mov	r0, #9
	bl	malloc
	mov	r3, r0
	str	r3, [r4]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-19]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r4, r2, r3
	mov	r0, #9
	bl	malloc
	mov	r3, r0
	str	r3, [r4]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-19]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r4, r2, r3
	mov	r0, #36
	bl	malloc
	mov	r3, r0
	str	r3, [r4]
	mov	r3, #0
	strb	r3, [fp, #-18]
	b	.L155
.L158:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3]
	ldrb	r3, [fp, #-19]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-19]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-19]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r4, r2, r3
	mov	r0, #9
	bl	malloc
	mov	r3, r0
	str	r3, [r4]
	mov	r3, #0
	strb	r3, [fp, #-17]
	b	.L156
.L157:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-19]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-17]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, #1
	strb	r2, [r3]
	ldrb	r3, [fp, #-17]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-17]
.L156:
	ldrb	r3, [fp, #-17]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L157
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-18]
.L155:
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L158
	ldrb	r3, [fp, #-19]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-19]
.L154:
	ldrb	r3, [fp, #-19]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L159
	ldr	r3, [fp, #-16]
	mov	r2, #0
	strb	r2, [r3, #16]
	ldr	r3, [fp, #-16]
	mov	r2, #0
	strb	r2, [r3, #17]
	ldr	r3, [fp, #-16]
	mov	r2, #0
	str	r2, [r3, #12]
	ldr	r3, [fp, #-16]
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L162:
	.align	2
.L161:
	.word	__PRETTY_FUNCTION__.5369
	.word	419
	.word	.LC0
	.word	.LC20
	.word	422
	.word	.LC21
	.size	newPuzzle, .-newPuzzle
	.align	2
	.global	zeroPuzzle
	.syntax unified
	.arm
	.fpu softvfp
	.type	zeroPuzzle, %function
zeroPuzzle:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	mov	r3, #0
	strb	r3, [fp, #-8]
	b	.L164
.L169:
	mov	r3, #0
	strb	r3, [fp, #-7]
	b	.L165
.L168:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3]
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	mov	r3, #0
	strb	r3, [fp, #-6]
	b	.L166
.L167:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-6]
.L166:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L167
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-7]
.L165:
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L168
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-8]
.L164:
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L169
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #12]
	cmp	r3, #0
	beq	.L170
	mov	r3, #0
	strb	r3, [fp, #-5]
	b	.L171
.L172:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-5]
.L171:
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3, #16]	@ zero_extendqisi2
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	cmp	r2, r3
	bcc	.L172
.L170:
	ldr	r3, [fp, #-16]
	mov	r2, #0
	strb	r2, [r3, #16]
	ldr	r3, [fp, #-16]
	mov	r2, #0
	strb	r2, [r3, #17]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	zeroPuzzle, .-zeroPuzzle
	.section	.rodata
	.align	2
.LC22:
	.ascii	"flag13\000"
	.align	2
.LC23:
	.ascii	"puzzle->emptyCells\000"
	.align	2
.LC24:
	.ascii	"flag14\000"
	.align	2
.LC25:
	.ascii	"puzzle->initialPuzzle[0]\000"
	.align	2
.LC26:
	.ascii	"(*puzzle).initialPuzzle[row]!=NULL\000"
	.text
	.align	2
	.global	freePuzzle
	.syntax unified
	.arm
	.fpu softvfp
	.type	freePuzzle, %function
freePuzzle:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r0, [fp, #-16]
	bl	zeroPuzzle
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #12]
	cmp	r3, #0
	beq	.L174
	ldr	r0, .L182
	bl	puts
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #12]
	cmp	r3, #0
	bne	.L175
	ldr	r3, .L182+4
	ldr	r2, .L182+8
	ldr	r1, .L182+12
	ldr	r0, .L182+16
	bl	__assert_fail
.L175:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #12]
	mov	r0, r3
	bl	free
	ldr	r0, .L182+20
	bl	puts
.L174:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L176
	ldr	r3, .L182+4
	ldr	r2, .L182+24
	ldr	r1, .L182+12
	ldr	r0, .L182+28
	bl	__assert_fail
.L176:
	mov	r3, #0
	strb	r3, [fp, #-6]
	b	.L177
.L181:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L178
	ldr	r3, .L182+4
	ldr	r2, .L182+32
	ldr	r1, .L182+12
	ldr	r0, .L182+36
	bl	__assert_fail
.L178:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	mov	r3, #0
	strb	r3, [fp, #-5]
	b	.L179
.L180:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-5]
.L179:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L180
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-6]
.L177:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L181
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	free
	ldr	r0, [fp, #-16]
	bl	free
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L183:
	.align	2
.L182:
	.word	.LC22
	.word	__PRETTY_FUNCTION__.5404
	.word	489
	.word	.LC0
	.word	.LC23
	.word	.LC24
	.word	495
	.word	.LC25
	.word	498
	.word	.LC26
	.size	freePuzzle, .-freePuzzle
	.section	.rodata
	.align	2
.LC27:
	.ascii	"Didn't need to check other cells. [%d][%d]=%d\012\000"
	.align	2
.LC28:
	.ascii	"count>0\000"
	.align	2
.LC29:
	.ascii	"value<=9\000"
	.align	2
.LC30:
	.ascii	"Only %d possible in box. [%d][%d]\012\000"
	.align	2
.LC31:
	.ascii	"Only %d possible in the column. [%d][%d]\012\000"
	.align	2
.LC32:
	.ascii	"Only %d possible in the row.\012\000"
	.text
	.align	2
	.global	onlyPossibility
	.syntax unified
	.arm
	.fpu softvfp
	.type	onlyPossibility, %function
onlyPossibility:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	mov	r3, r0
	str	r2, [fp, #-28]
	strb	r3, [fp, #-21]
	mov	r3, r1
	strb	r3, [fp, #-22]
	mov	r3, #0
	strb	r3, [fp, #-15]
	mov	r3, #1
	strb	r3, [fp, #-14]
	mov	r3, #0
	strb	r3, [fp, #-13]
	ldrb	r2, [fp, #-21]	@ zero_extendqisi2
	ldr	r3, .L224
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	strb	r3, [fp, #-21]
	ldrb	r2, [fp, #-22]	@ zero_extendqisi2
	ldr	r3, .L224
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	strb	r3, [fp, #-22]
	b	.L185
.L187:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L186
	ldrb	r3, [fp, #-14]
	strb	r3, [fp, #-13]
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-15]
.L186:
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-14]
.L185:
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	cmp	r3, #9
	bls	.L187
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	cmp	r3, #1
	bne	.L188
	ldrb	r1, [fp, #-21]	@ zero_extendqisi2
	ldrb	r2, [fp, #-22]	@ zero_extendqisi2
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	ldr	r0, .L224+4
	bl	printf
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, [fp, #-28]
	bl	printPossibilitiesMatrix
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	b	.L189
.L188:
	mov	r3, #0
	strb	r3, [fp, #-12]
	mov	r3, #0
	strb	r3, [fp, #-11]
	mov	r3, #0
	strb	r3, [fp, #-10]
	mov	r3, #0
	strb	r3, [fp, #-9]
	mov	r3, #1
	strb	r3, [fp, #-14]
	b	.L190
.L191:
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-14]
.L190:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	eor	r3, r3, #1
	and	r3, r3, #255
	cmp	r3, #0
	bne	.L191
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L193
	ldr	r3, .L224+8
	ldr	r2, .L224+12
	ldr	r1, .L224+16
	ldr	r0, .L224+20
	bl	__assert_fail
.L223:
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	cmp	r3, #9
	bls	.L194
	ldr	r3, .L224+8
	mov	r2, #560
	ldr	r1, .L224+16
	ldr	r0, .L224+24
	bl	__assert_fail
.L194:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L195
	mov	r3, #0
	strb	r3, [fp, #-12]
	mov	r3, #1
	strb	r3, [fp, #-9]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	ldr	r2, .L224+28
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	strb	r3, [fp, #-11]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldr	r2, .L224+28
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	strb	r3, [fp, #-10]
	b	.L196
.L199:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L197
	mov	r3, #0
	strb	r3, [fp, #-9]
.L197:
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-12]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	ldr	r2, .L224+28
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	and	r2, r3, #255
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	ldr	r1, .L224+28
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	add	r3, r2, r3
	strb	r3, [fp, #-11]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldr	r2, .L224+28
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	and	r0, r3, #255
	ldrb	r2, [fp, #-12]	@ zero_extendqisi2
	ldr	r3, .L224+28
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, r0, r3
	strb	r3, [fp, #-10]
.L196:
	ldrb	r0, [fp, #-12]	@ zero_extendqisi2
	ldrb	r2, [fp, #-21]	@ zero_extendqisi2
	ldr	r3, .L224+28
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #1
	add	ip, r3, r2
	ldrb	r2, [fp, #-22]	@ zero_extendqisi2
	ldr	r3, .L224+28
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, ip, r3
	cmp	r0, r3
	bge	.L198
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L199
.L198:
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-12]
	b	.L200
.L203:
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	ldr	r2, .L224+28
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	and	r2, r3, #255
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	ldr	r1, .L224+28
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	add	r3, r2, r3
	strb	r3, [fp, #-11]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldr	r2, .L224+28
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #1
	add	r3, r2, r3
	and	r0, r3, #255
	ldrb	r2, [fp, #-12]	@ zero_extendqisi2
	ldr	r3, .L224+28
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, r0, r3
	strb	r3, [fp, #-10]
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L201
	mov	r3, #0
	strb	r3, [fp, #-9]
.L201:
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-12]
.L200:
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	cmp	r3, #8
	bhi	.L202
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L203
.L202:
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L204
	ldrb	r1, [fp, #-14]	@ zero_extendqisi2
	ldrb	r2, [fp, #-21]	@ zero_extendqisi2
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldr	r0, .L224+32
	bl	printf
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, [fp, #-28]
	bl	printPossibilitiesMatrix
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	b	.L189
.L204:
	mov	r3, #1
	strb	r3, [fp, #-9]
	mov	r3, #0
	strb	r3, [fp, #-8]
	b	.L205
.L208:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L206
	mov	r3, #0
	strb	r3, [fp, #-9]
.L206:
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-8]
.L205:
	ldrb	r2, [fp, #-8]	@ zero_extendqisi2
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	cmp	r2, r3
	bcs	.L207
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L208
.L207:
	ldrb	r3, [fp, #-21]
	add	r3, r3, #1
	strb	r3, [fp, #-7]
	b	.L209
.L212:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L210
	mov	r3, #0
	strb	r3, [fp, #-9]
.L210:
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-7]
.L209:
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	cmp	r3, #8
	bhi	.L211
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L212
.L211:
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L213
	ldrb	r1, [fp, #-14]	@ zero_extendqisi2
	ldrb	r2, [fp, #-21]	@ zero_extendqisi2
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldr	r0, .L224+36
	bl	printf
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, [fp, #-28]
	bl	printPossibilitiesMatrix
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	b	.L189
.L213:
	mov	r3, #1
	strb	r3, [fp, #-9]
	mov	r3, #0
	strb	r3, [fp, #-6]
	b	.L214
.L217:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L215
	mov	r3, #0
	strb	r3, [fp, #-9]
.L215:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-6]
.L214:
	ldrb	r2, [fp, #-6]	@ zero_extendqisi2
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	cmp	r2, r3
	bcs	.L216
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L217
.L216:
	ldrb	r3, [fp, #-22]
	add	r3, r3, #1
	strb	r3, [fp, #-5]
	b	.L218
.L221:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L219
	mov	r3, #0
	strb	r3, [fp, #-9]
.L219:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-5]
.L218:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #8
	bhi	.L220
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L221
.L220:
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L222
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L224+40
	bl	printf
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	b	.L189
.L222:
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	sub	r3, r3, #1
	strb	r3, [fp, #-15]
.L195:
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-14]
.L193:
	ldrb	r3, [fp, #-15]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L223
	mov	r3, #0
.L189:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L225:
	.align	2
.L224:
	.word	954437177
	.word	.LC27
	.word	__PRETTY_FUNCTION__.5431
	.word	557
	.word	.LC0
	.word	.LC28
	.word	.LC29
	.word	-1431655765
	.word	.LC30
	.word	.LC31
	.word	.LC32
	.size	onlyPossibility, .-onlyPossibility
	.section	.rodata
	.align	2
.LC33:
	.ascii	"Solution: [%d][%d] : %d\012\000"
	.align	2
.LC34:
	.ascii	"puzzle->possibilitiesMatrix[row][col][insertValue-1"
	.ascii	"]\000"
	.global	__aeabi_idivmod
	.text
	.align	2
	.global	singlePossibleSolutions
	.syntax unified
	.arm
	.fpu softvfp
	.type	singlePossibleSolutions, %function
singlePossibleSolutions:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	strb	r3, [fp, #-9]
	mov	r3, #0
	strb	r3, [fp, #-8]
	mov	r3, #0
	strb	r3, [fp, #-7]
	mov	r3, #0
	strb	r3, [fp, #-6]
	mov	r3, #0
	strb	r3, [fp, #-5]
	b	.L227
.L231:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r2, .L232
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	strb	r3, [fp, #-6]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, .L232
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	strb	r3, [fp, #-5]
	ldrb	r1, [fp, #-5]	@ zero_extendqisi2
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	mov	r0, r3
	bl	onlyPossibility
	mov	r3, r0
	strb	r3, [fp, #-7]
	ldrb	r1, [fp, #-6]	@ zero_extendqisi2
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	ldr	r0, .L232+4
	bl	printf
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L228
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #8]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L228
	ldr	r3, .L232+8
	ldr	r2, .L232+12
	ldr	r1, .L232+16
	ldr	r0, .L232+20
	bl	__assert_fail
.L228:
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	ldrb	r1, [fp, #-6]	@ zero_extendqisi2
	ldrb	r0, [fp, #-7]	@ zero_extendqisi2
	ldr	r3, [fp, #-16]
	bl	insertValueAndSetPossibilities
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L229
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #12]
	ldr	r2, [fp, #-16]
	ldrsb	r2, [r2, #17]
	add	r2, r3, r2
	ldr	r3, [fp, #-16]
	ldr	r1, [r3, #12]
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	ldrsb	r3, [r3, #17]
	and	r3, r3, #255
	sub	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-16]
	strb	r2, [r3, #17]
	mov	r3, #0
	strb	r3, [fp, #-9]
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	bge	.L230
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	add	r2, r3, #1
	ldr	r3, [fp, #-16]
	ldrsb	r3, [r3, #17]
	add	r3, r3, #1
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_idivmod
	mov	r3, r1
	strb	r3, [fp, #-8]
	b	.L227
.L230:
	ldr	r3, [fp, #-16]
	ldrsb	r3, [r3, #17]
	strb	r3, [fp, #-8]
	b	.L227
.L229:
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-9]
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	add	r2, r3, #1
	ldr	r3, [fp, #-16]
	ldrsb	r3, [r3, #17]
	add	r3, r3, #1
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_idivmod
	mov	r3, r1
	strb	r3, [fp, #-8]
.L227:
	ldr	r3, [fp, #-16]
	ldrsb	r3, [r3, #17]
	mov	r2, r3
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	cmp	r2, r3
	bge	.L231
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L233:
	.align	2
.L232:
	.word	954437177
	.word	.LC33
	.word	__PRETTY_FUNCTION__.5465
	.word	647
	.word	.LC0
	.word	.LC34
	.size	singlePossibleSolutions, .-singlePossibleSolutions
	.section	.rodata
	.align	2
.LC35:
	.ascii	"puzzle->unsolvedCellsIndex!=-1\000"
	.align	2
.LC36:
	.ascii	"index<=puzzle->unsolvedCellsIndex\000"
	.align	2
.LC37:
	.ascii	"puzzle->unsolvedCellsIndex<puzzle->emptyCellsCount\000"
	.align	2
.LC38:
	.ascii	"puzzle->emptyCells[index]<=80\000"
	.align	2
.LC39:
	.ascii	"puzzle->possibilitiesMatrix[puzzle->emptyCells[inde"
	.ascii	"x]/9][puzzle->emptyCells[index]%9][value-1]\000"
	.align	2
.LC40:
	.ascii	"puzzle->unsolvedCellsIndex>=0\000"
	.align	2
.LC41:
	.ascii	"\012Index: %d  unsolvedCellsIndex: %d  (upSolve) co"
	.ascii	"unter: %lu counter0: %lu\012\000"
	.text
	.align	2
	.global	upSolve
	.syntax unified
	.arm
	.fpu softvfp
	.type	upSolve, %function
upSolve:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #48
	str	r0, [fp, #-48]
	str	r1, [fp, #-52]
	mov	r3, #0
	strb	r3, [fp, #-38]
	mov	r3, #1
	strb	r3, [fp, #-37]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	b	.L235
.L251:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	str	r4, [fp, #-36]
	str	r5, [fp, #-32]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L236
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	adds	r6, r2, #1
	adc	r7, r3, #0
	str	r6, [fp, #-28]
	str	r7, [fp, #-24]
.L236:
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	cmn	r3, #1
	bne	.L237
	ldr	r3, .L252
	ldr	r2, .L252+4
	ldr	r1, .L252+8
	ldr	r0, .L252+12
	bl	__assert_fail
.L237:
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	ble	.L238
	ldr	r3, .L252
	ldr	r2, .L252+16
	ldr	r1, .L252+8
	ldr	r0, .L252+20
	bl	__assert_fail
.L238:
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	mov	r2, r3
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3, #16]	@ zero_extendqisi2
	cmp	r2, r3
	blt	.L239
	ldr	r3, .L252
	ldr	r2, .L252+24
	ldr	r1, .L252+8
	ldr	r0, .L252+28
	bl	__assert_fail
.L239:
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r2, .L252+32
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	ip, r3, #255
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, .L252+32
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r2, r3, #255
	ldrb	r0, [fp, #-37]	@ zero_extendqisi2
	ldr	r3, [fp, #-48]
	mov	r1, ip
	bl	isInsertable
	mov	r3, r0
	cmp	r3, #0
	beq	.L240
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	ble	.L241
	ldr	r3, .L252
	ldr	r2, .L252+36
	ldr	r1, .L252+8
	ldr	r0, .L252+20
	bl	__assert_fail
.L241:
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #80
	bls	.L242
	ldr	r3, .L252
	mov	r2, #700
	ldr	r1, .L252+8
	ldr	r0, .L252+40
	bl	__assert_fail
.L242:
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-48]
	ldr	r1, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r1, .L252+32
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r0, [r3]
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, .L252+32
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r0, r3
	ldr	r2, [r3]
	ldrb	r3, [fp, #-37]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L243
	ldr	r3, .L252
	ldr	r2, .L252+44
	ldr	r1, .L252+8
	ldr	r0, .L252+48
	bl	__assert_fail
.L243:
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-48]
	ldr	r1, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r1, .L252+32
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r0, [r3]
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, .L252+32
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, r0, r3
	ldrb	r2, [fp, #-37]
	strb	r2, [r3]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	ldr	r2, [fp, #-52]
	add	r3, r2, r3
	ldrb	r2, [fp, #-37]
	strb	r2, [r3]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-38]
	mov	r3, #1
	strb	r3, [fp, #-37]
	b	.L235
.L240:
	ldrb	r3, [fp, #-37]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-37]
	b	.L244
.L250:
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	cmp	r3, #0
	bge	.L245
	ldr	r3, .L252
	ldr	r2, .L252+52
	ldr	r1, .L252+8
	ldr	r0, .L252+56
	bl	__assert_fail
.L245:
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	bgt	.L246
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #80
	bls	.L247
	ldr	r3, .L252
	ldr	r2, .L252+60
	ldr	r1, .L252+8
	ldr	r0, .L252+40
	bl	__assert_fail
.L247:
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-48]
	ldr	r1, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r1, .L252+32
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r0, [r3]
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, .L252+32
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, r0, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	ldr	r2, [fp, #-52]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
.L246:
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	sub	r3, r3, #1
	strb	r3, [fp, #-38]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	ble	.L248
	ldr	r3, .L252
	mov	r2, #724
	ldr	r1, .L252+8
	ldr	r0, .L252+20
	bl	__assert_fail
.L248:
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	bgt	.L244
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #80
	bls	.L249
	ldr	r3, .L252
	ldr	r2, .L252+64
	ldr	r1, .L252+8
	ldr	r0, .L252+40
	bl	__assert_fail
.L249:
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-48]
	ldr	r1, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r1, .L252+32
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r0, [r3]
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, .L252+32
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, r0, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-37]
.L244:
	ldrb	r3, [fp, #-37]	@ zero_extendqisi2
	cmp	r3, #9
	bhi	.L250
.L235:
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	ble	.L251
	ldrb	r1, [fp, #-38]	@ zero_extendqisi2
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	mov	r0, r3
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r0
	ldr	r0, .L252+68
	bl	printf
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L253:
	.align	2
.L252:
	.word	__PRETTY_FUNCTION__.5477
	.word	693
	.word	.LC0
	.word	.LC35
	.word	694
	.word	.LC36
	.word	695
	.word	.LC37
	.word	954437177
	.word	699
	.word	.LC38
	.word	701
	.word	.LC39
	.word	715
	.word	.LC40
	.word	718
	.word	727
	.word	.LC41
	.size	upSolve, .-upSolve
	.section	.rodata
	.align	2
.LC42:
	.ascii	"Index: %d  unsolvedCellsIndex: %d  (downSolve) coun"
	.ascii	"ter: %lu counter0: %lu\012\000"
	.text
	.align	2
	.global	downSolve
	.syntax unified
	.arm
	.fpu softvfp
	.type	downSolve, %function
downSolve:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #48
	str	r0, [fp, #-48]
	str	r1, [fp, #-52]
	mov	r3, #0
	strb	r3, [fp, #-38]
	mov	r3, #9
	strb	r3, [fp, #-37]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	b	.L255
.L261:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	str	r4, [fp, #-36]
	str	r5, [fp, #-32]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L256
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	adds	r6, r2, #1
	adc	r7, r3, #0
	str	r6, [fp, #-28]
	str	r7, [fp, #-24]
.L256:
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r2, .L262
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	ip, r3, #255
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, .L262
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r2, r3, #255
	ldrb	r0, [fp, #-37]	@ zero_extendqisi2
	ldr	r3, [fp, #-48]
	mov	r1, ip
	bl	isInsertable
	mov	r3, r0
	cmp	r3, #0
	beq	.L257
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-48]
	ldr	r1, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r1, .L262
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r0, [r3]
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, .L262
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, r0, r3
	ldrb	r2, [fp, #-37]
	strb	r2, [r3]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	ldr	r2, [fp, #-52]
	add	r3, r2, r3
	ldrb	r2, [fp, #-37]
	strb	r2, [r3]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-38]
	mov	r3, #9
	strb	r3, [fp, #-37]
	b	.L255
.L257:
	ldrb	r3, [fp, #-37]	@ zero_extendqisi2
	sub	r3, r3, #1
	strb	r3, [fp, #-37]
	b	.L258
.L260:
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	bgt	.L259
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-48]
	ldr	r1, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r1, .L262
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r0, [r3]
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, .L262
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, r0, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	ldr	r2, [fp, #-52]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
.L259:
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	sub	r3, r3, #1
	strb	r3, [fp, #-38]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	bgt	.L258
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-48]
	ldr	r1, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r1, .L262
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r0, [r3]
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, .L262
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, r0, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r3, r3, #1
	strb	r3, [fp, #-37]
.L258:
	ldrb	r3, [fp, #-37]	@ zero_extendqisi2
	cmp	r3, #9
	bhi	.L260
	ldrb	r3, [fp, #-37]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L260
.L255:
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	ble	.L261
	ldrb	r1, [fp, #-38]	@ zero_extendqisi2
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	mov	r0, r3
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r0
	ldr	r0, .L262+4
	bl	printf
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L263:
	.align	2
.L262:
	.word	954437177
	.word	.LC42
	.size	downSolve, .-downSolve
	.section	.rodata
	.align	2
.LC43:
	.ascii	"full solve, unsolved cells:  %d\012\000"
	.align	2
.LC44:
	.ascii	"last similarity index: %i\012\000"
	.align	2
.LC45:
	.ascii	"Up-solving\000"
	.align	2
.LC46:
	.ascii	"Down-solving\000"
	.align	2
.LC47:
	.ascii	"\012 Before rearrengement\012 up-solve array\000"
	.align	2
.LC48:
	.ascii	"[%d]\000"
	.align	2
.LC49:
	.ascii	"\012 down-solve array\000"
	.align	2
.LC50:
	.ascii	"indexPointer<=puzzle->unsolvedCellsIndex\000"
	.align	2
.LC51:
	.ascii	"[%d][%d]=%d\012\000"
	.align	2
.LC52:
	.ascii	"indexPointer!=0\000"
	.align	2
.LC53:
	.ascii	"\012 After rearrengement\012 up-solve array\000"
	.align	2
.LC54:
	.ascii	"\012 After sorting\012 up-solve array\000"
	.align	2
.LC55:
	.ascii	"Similarity count: %d   unsolved cells: %d\012\000"
	.align	2
.LC56:
	.ascii	"print current solution anyways:\000"
	.align	2
.LC57:
	.ascii	"About to free solvearrays\000"
	.align	2
.LC58:
	.ascii	"Freed solvearrays\000"
	.text
	.align	2
	.global	fullSolve
	.syntax unified
	.arm
	.fpu softvfp
	.type	fullSolve, %function
fullSolve:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-48]
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	cmp	r3, #0
	bge	.L265
	ldr	r3, .L327
	mov	r2, #784
	ldr	r1, .L327+4
	ldr	r0, .L327+8
	bl	__assert_fail
.L265:
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	add	r3, r3, #1
	mov	r1, r3
	ldr	r0, .L327+12
	bl	printf
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3, #17]
	strb	r3, [fp, #-39]
	mov	r3, #0
	strb	r3, [fp, #-19]
	mov	r3, #0
	strb	r3, [fp, #-38]
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	add	r3, r3, #1
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	add	r3, r3, #1
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	and	r3, r3, #255
	add	r3, r3, #1
	strb	r3, [fp, #-18]
	mov	r0, #81
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	mov	r3, #1
	strb	r3, [fp, #-37]
	mov	r3, #0
	strb	r3, [fp, #-36]
	b	.L266
.L267:
	ldrb	r3, [fp, #-36]	@ zero_extendqisi2
	ldr	r2, [fp, #-8]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-36]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-36]
.L266:
	ldrb	r3, [fp, #-36]	@ zero_extendqisi2
	cmp	r3, #80
	bls	.L267
	mov	r3, #0
	strb	r3, [fp, #-35]
	b	.L268
.L269:
	ldrb	r3, [fp, #-35]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-35]	@ zero_extendqisi2
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-35]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-35]
.L268:
	ldrb	r2, [fp, #-35]	@ zero_extendqisi2
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	cmp	r2, r3
	bcc	.L269
	b	.L270
.L322:
	ldrsb	r3, [fp, #-39]
	mov	r1, r3
	ldr	r0, .L327+16
	bl	printf
	mov	r3, #0
	strb	r3, [fp, #-34]
	b	.L271
.L272:
	ldrb	r3, [fp, #-34]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-34]	@ zero_extendqisi2
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-34]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-34]
.L271:
	ldrb	r2, [fp, #-34]	@ zero_extendqisi2
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	cmp	r2, r3
	bcc	.L272
	ldr	r0, .L327+20
	bl	puts
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-48]
	bl	upSolve
	ldr	r3, [fp, #-48]
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	printMatrix
	ldrb	r3, [fp, #-37]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L273
	mov	r3, #0
	strb	r3, [fp, #-33]
	b	.L274
.L275:
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-33]	@ zero_extendqisi2
	ldr	r1, .L327+24
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r0, [r3]
	ldrb	r2, [fp, #-33]	@ zero_extendqisi2
	ldr	r3, .L327+24
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r2, r0, r3
	ldrb	r3, [fp, #-33]	@ zero_extendqisi2
	ldr	r1, [fp, #-8]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-33]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-33]
.L274:
	ldrb	r3, [fp, #-33]	@ zero_extendqisi2
	cmp	r3, #80
	bls	.L275
	mov	r3, #0
	strb	r3, [fp, #-37]
.L273:
	ldr	r0, [fp, #-48]
	bl	clearUnsolvedCells
	ldr	r0, .L327+28
	bl	puts
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-48]
	bl	downSolve
	ldr	r3, [fp, #-48]
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	printMatrix
	ldr	r0, [fp, #-48]
	bl	clearUnsolvedCells
	mov	r3, #0
	strb	r3, [fp, #-32]
	ldr	r0, .L327+32
	bl	puts
	mov	r3, #0
	strb	r3, [fp, #-31]
	b	.L276
.L278:
	ldrb	r3, [fp, #-31]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L327+36
	bl	printf
	ldrb	r3, [fp, #-31]	@ zero_extendqisi2
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	bne	.L277
	mov	r0, #124
	bl	putchar
.L277:
	ldrb	r3, [fp, #-31]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-31]
.L276:
	ldrb	r2, [fp, #-31]	@ zero_extendqisi2
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	cmp	r2, r3
	bcc	.L278
	ldr	r0, .L327+40
	bl	puts
	mov	r3, #0
	strb	r3, [fp, #-30]
	b	.L279
.L281:
	ldrb	r3, [fp, #-30]	@ zero_extendqisi2
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L327+36
	bl	printf
	ldrb	r3, [fp, #-30]	@ zero_extendqisi2
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	bne	.L280
	mov	r0, #124
	bl	putchar
.L280:
	ldrb	r3, [fp, #-30]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-30]
.L279:
	ldrb	r2, [fp, #-30]	@ zero_extendqisi2
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	cmp	r2, r3
	bcc	.L281
	mov	r0, #10
	bl	putchar
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	cmp	r3, #0
	bge	.L282
	ldr	r3, .L327
	ldr	r2, .L327+44
	ldr	r1, .L327+4
	ldr	r0, .L327+8
	bl	__assert_fail
.L282:
	ldrsb	r3, [fp, #-32]
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldrsb	r3, [fp, #-32]
	ldr	r1, [fp, #-12]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	beq	.L284
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	ldrsb	r2, [fp, #-32]
	cmp	r2, r3
	ble	.L284
	ldr	r3, .L327
	ldr	r2, .L327+48
	ldr	r1, .L327+4
	ldr	r0, .L327+52
	bl	__assert_fail
.L286:
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrsb	r3, [fp, #-32]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r2, .L327+24
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	mov	r0, r3
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrsb	r3, [fp, #-32]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, .L327+24
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	mov	r1, r3
	ldrsb	r3, [fp, #-32]
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r1
	mov	r1, r0
	ldr	r0, .L327+56
	bl	printf
	ldrsb	r3, [fp, #-32]
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r0, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrsb	r3, [fp, #-32]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r2, .L327+24
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	ip, r3, #255
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrsb	r3, [fp, #-32]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, .L327+24
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r2, r3, #255
	ldr	r3, [fp, #-48]
	mov	r1, ip
	bl	insertValueAndSetPossibilities
	ldrsb	r3, [fp, #-32]
	and	r3, r3, #255
	add	r3, r3, #1
	and	r3, r3, #255
	strb	r3, [fp, #-32]
.L284:
	ldrsb	r3, [fp, #-32]
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldrsb	r3, [fp, #-32]
	ldr	r1, [fp, #-12]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L285
	ldrsb	r2, [fp, #-32]
	ldrsb	r3, [fp, #-39]
	cmp	r2, r3
	ble	.L286
.L285:
	mov	r3, #0
	strb	r3, [fp, #-17]
	ldrsb	r3, [fp, #-32]
	and	r3, r3, #255
	sub	r3, r3, #1
	and	r3, r3, #255
	strb	r3, [fp, #-32]
	mov	r3, #0
	strb	r3, [fp, #-38]
	ldrb	r3, [fp, #-32]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-29]
	b	.L287
.L289:
	ldrb	r3, [fp, #-29]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldrb	r3, [fp, #-29]	@ zero_extendqisi2
	ldr	r1, [fp, #-12]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L288
	ldrsb	r3, [fp, #-38]
	and	r3, r3, #255
	add	r3, r3, #1
	and	r3, r3, #255
	strb	r3, [fp, #-38]
.L288:
	ldrb	r3, [fp, #-29]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-29]
.L287:
	ldrb	r2, [fp, #-29]	@ zero_extendqisi2
	ldrsb	r3, [fp, #-39]
	cmp	r2, r3
	ble	.L289
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	cmp	r3, #0
	bge	.L290
	ldr	r3, .L327
	ldr	r2, .L327+60
	ldr	r1, .L327+4
	ldr	r0, .L327+8
	bl	__assert_fail
.L290:
	mov	r3, #0
	strb	r3, [fp, #-28]
	b	.L291
.L295:
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	mov	r2, r3
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3, #16]	@ zero_extendqisi2
	cmp	r2, r3
	blt	.L292
	ldr	r3, .L327
	ldr	r2, .L327+64
	ldr	r1, .L327+4
	ldr	r0, .L327+68
	bl	__assert_fail
.L292:
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	cmp	r3, #0
	bge	.L293
	ldr	r3, .L327
	mov	r2, #896
	ldr	r1, .L327+4
	ldr	r0, .L327+8
	bl	__assert_fail
.L293:
	ldrsb	r3, [fp, #-32]
	cmp	r3, #0
	bne	.L294
	ldr	r3, .L327
	ldr	r2, .L327+72
	ldr	r1, .L327+4
	ldr	r0, .L327+76
	bl	__assert_fail
.L294:
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-28]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]
	strb	r3, [fp, #-17]
	ldr	r3, [fp, #-48]
	ldr	r3, [r3, #12]
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	add	r2, r3, r2
	ldr	r3, [fp, #-48]
	ldr	r1, [r3, #12]
	ldrb	r3, [fp, #-28]	@ zero_extendqisi2
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-48]
	ldr	r3, [r3, #12]
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	add	r3, r3, r2
	ldrb	r2, [fp, #-17]
	strb	r2, [r3]
	ldrb	r3, [fp, #-28]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r3, [r3]
	strb	r3, [fp, #-17]
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r2, r3, r2
	ldrb	r3, [fp, #-28]	@ zero_extendqisi2
	ldr	r1, [fp, #-16]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	ldrb	r2, [fp, #-17]
	strb	r2, [r3]
	ldrb	r3, [fp, #-28]	@ zero_extendqisi2
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	ldrb	r3, [r3]
	strb	r3, [fp, #-17]
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	mov	r2, r3
	ldr	r3, [fp, #-12]
	add	r2, r3, r2
	ldrb	r3, [fp, #-28]	@ zero_extendqisi2
	ldr	r1, [fp, #-12]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	mov	r2, r3
	ldr	r3, [fp, #-12]
	add	r3, r3, r2
	ldrb	r2, [fp, #-17]
	strb	r2, [r3]
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	and	r3, r3, #255
	sub	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-48]
	strb	r2, [r3, #17]
	ldrb	r3, [fp, #-28]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-28]
.L291:
	ldrb	r2, [fp, #-28]	@ zero_extendqisi2
	ldrsb	r3, [fp, #-32]
	cmp	r2, r3
	ble	.L295
	ldr	r0, .L327+80
	bl	puts
	mov	r3, #0
	strb	r3, [fp, #-27]
	b	.L296
.L298:
	ldrb	r3, [fp, #-27]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L327+36
	bl	printf
	ldrb	r3, [fp, #-27]	@ zero_extendqisi2
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	bne	.L297
	mov	r0, #124
	bl	putchar
.L297:
	ldrb	r3, [fp, #-27]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-27]
.L296:
	ldrb	r2, [fp, #-27]	@ zero_extendqisi2
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	cmp	r2, r3
	bcc	.L298
	ldr	r0, .L327+40
	bl	puts
	mov	r3, #0
	strb	r3, [fp, #-26]
	b	.L299
.L301:
	ldrb	r3, [fp, #-26]	@ zero_extendqisi2
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L327+36
	bl	printf
	ldrb	r3, [fp, #-26]	@ zero_extendqisi2
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	bne	.L300
	mov	r0, #124
	bl	putchar
.L300:
	ldrb	r3, [fp, #-26]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-26]
.L299:
	ldrb	r2, [fp, #-26]	@ zero_extendqisi2
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	cmp	r2, r3
	bcc	.L301
	mov	r0, #10
	bl	putchar
	mov	r3, #1
	strb	r3, [fp, #-25]
	b	.L302
.L305:
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	mov	r2, r3
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3, #16]	@ zero_extendqisi2
	cmp	r2, r3
	blt	.L303
	ldr	r3, .L327
	ldr	r2, .L327+84
	ldr	r1, .L327+4
	ldr	r0, .L327+68
	bl	__assert_fail
.L303:
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	sub	r3, r3, #1
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	sub	r3, r3, #1
	ldr	r1, [fp, #-12]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	beq	.L304
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	ldr	r1, [fp, #-12]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L304
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]
	strb	r3, [fp, #-17]
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r2, r2, r3
	ldr	r3, [fp, #-48]
	ldr	r1, [r3, #12]
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r2, [fp, #-17]
	strb	r2, [r3]
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r3, [r3]
	strb	r3, [fp, #-17]
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	sub	r3, r3, #1
	ldr	r2, [fp, #-16]
	add	r2, r2, r3
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	ldr	r1, [fp, #-16]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	sub	r3, r3, #1
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r2, [fp, #-17]
	strb	r2, [r3]
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	ldrb	r3, [r3]
	strb	r3, [fp, #-17]
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	sub	r3, r3, #1
	ldr	r2, [fp, #-12]
	add	r2, r2, r3
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	ldr	r1, [fp, #-12]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	sub	r3, r3, #1
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	ldrb	r2, [fp, #-17]
	strb	r2, [r3]
	ldrb	r3, [fp, #-25]
	sub	r3, r3, #2
	strb	r3, [fp, #-25]
.L304:
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-25]
.L302:
	ldrb	r2, [fp, #-25]	@ zero_extendqisi2
	ldrsb	r3, [fp, #-39]
	cmp	r2, r3
	ble	.L305
	mov	r3, #0
	strb	r3, [fp, #-24]
	b	.L306
.L309:
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-8]
	add	r3, r3, r2
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	ldr	r1, [fp, #-16]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	beq	.L307
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	ldr	r1, [fp, #-12]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L307
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	add	r3, r2, r3
	ldrb	r3, [r3]
	strb	r3, [fp, #-17]
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrsb	r3, [fp, #-38]
	sub	r3, r3, #1
	add	r2, r2, r3
	ldr	r3, [fp, #-48]
	ldr	r1, [r3, #12]
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-48]
	ldr	r2, [r3, #12]
	ldrsb	r3, [fp, #-38]
	sub	r3, r3, #1
	add	r3, r2, r3
	ldrb	r2, [fp, #-17]
	strb	r2, [r3]
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r3, [r3]
	strb	r3, [fp, #-17]
	ldrsb	r3, [fp, #-38]
	sub	r3, r3, #1
	ldr	r2, [fp, #-16]
	add	r2, r2, r3
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	ldr	r1, [fp, #-16]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrsb	r3, [fp, #-38]
	sub	r3, r3, #1
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r2, [fp, #-17]
	strb	r2, [r3]
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	ldrb	r3, [r3]
	strb	r3, [fp, #-17]
	ldrsb	r3, [fp, #-38]
	sub	r3, r3, #1
	ldr	r2, [fp, #-12]
	add	r2, r2, r3
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	ldr	r1, [fp, #-12]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrsb	r3, [fp, #-38]
	sub	r3, r3, #1
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	ldrb	r2, [fp, #-17]
	strb	r2, [r3]
	ldrsb	r3, [fp, #-38]
	and	r3, r3, #255
	sub	r3, r3, #1
	and	r3, r3, #255
	strb	r3, [fp, #-38]
	b	.L306
.L307:
	ldrb	r3, [fp, #-24]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-24]
.L306:
	ldrb	r2, [fp, #-24]	@ zero_extendqisi2
	ldrsb	r3, [fp, #-38]
	cmp	r2, r3
	blt	.L309
	ldrb	r3, [fp, #-38]	@ zero_extendqisi2
	sub	r3, r3, #1
	and	r3, r3, #255
	strb	r3, [fp, #-39]
	ldr	r0, .L327+88
	bl	puts
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	cmn	r3, #1
	bne	.L310
	mov	r0, #124
	bl	putchar
.L310:
	ldrsb	r3, [fp, #-39]
	cmn	r3, #1
	bne	.L311
	mov	r0, #124
	bl	putchar
.L311:
	mov	r3, #0
	strb	r3, [fp, #-23]
	b	.L312
.L315:
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L327+36
	bl	printf
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	bne	.L313
	mov	r0, #124
	bl	putchar
.L313:
	ldrb	r2, [fp, #-23]	@ zero_extendqisi2
	ldrsb	r3, [fp, #-39]
	cmp	r2, r3
	bne	.L314
	mov	r0, #124
	bl	putchar
.L314:
	ldrb	r3, [fp, #-23]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-23]
.L312:
	ldrb	r2, [fp, #-23]	@ zero_extendqisi2
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	cmp	r2, r3
	bcc	.L315
	ldr	r0, .L327+40
	bl	puts
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	cmn	r3, #1
	bne	.L316
	mov	r0, #124
	bl	putchar
.L316:
	ldrsb	r3, [fp, #-39]
	cmn	r3, #1
	bne	.L317
	mov	r0, #124
	bl	putchar
.L317:
	mov	r3, #0
	strb	r3, [fp, #-22]
	b	.L318
.L321:
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L327+36
	bl	printf
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldr	r2, [fp, #-48]
	ldrsb	r2, [r2, #17]
	cmp	r3, r2
	bne	.L319
	mov	r0, #124
	bl	putchar
.L319:
	ldrb	r2, [fp, #-22]	@ zero_extendqisi2
	ldrsb	r3, [fp, #-39]
	cmp	r2, r3
	bne	.L320
	mov	r0, #124
	bl	putchar
.L320:
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-22]
.L318:
	ldrb	r2, [fp, #-22]	@ zero_extendqisi2
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	cmp	r2, r3
	bcc	.L321
	mov	r0, #10
	bl	putchar
	ldrsb	r3, [fp, #-39]
	ldr	r2, [fp, #-48]
	mov	r1, r3
	mov	r0, #0
	bl	sortEmptyCellsArray
	ldrb	r3, [fp, #-39]	@ zero_extendqisi2
	add	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r0, r3, #24
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	ldr	r2, [fp, #-48]
	mov	r1, r3
	bl	sortEmptyCellsArray
	mov	r3, #0
	strb	r3, [fp, #-17]
	ldrsb	r1, [fp, #-38]
	ldr	r3, [fp, #-48]
	ldrsb	r3, [r3, #17]
	add	r3, r3, #1
	mov	r2, r3
	ldr	r0, .L327+92
	bl	printf
.L270:
	ldrsb	r3, [fp, #-39]
	cmp	r3, #0
	bge	.L322
	ldr	r0, .L327+96
	bl	puts
	ldr	r3, [fp, #-48]
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	printMatrix
	mov	r3, #0
	strb	r3, [fp, #-21]
	b	.L323
.L324:
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-21]
.L323:
	ldrb	r2, [fp, #-21]	@ zero_extendqisi2
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	cmp	r2, r3
	bcc	.L324
	mov	r3, #0
	strb	r3, [fp, #-20]
	b	.L325
.L326:
	ldrb	r3, [fp, #-20]	@ zero_extendqisi2
	ldr	r2, [fp, #-8]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-20]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-20]
.L325:
	ldrb	r3, [fp, #-20]	@ zero_extendqisi2
	cmp	r3, #80
	bls	.L326
	ldr	r0, [fp, #-8]
	bl	free
	ldr	r0, .L327+100
	bl	puts
	ldr	r0, [fp, #-16]
	bl	free
	ldr	r0, [fp, #-12]
	bl	free
	ldr	r0, .L327+104
	bl	puts
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L328:
	.align	2
.L327:
	.word	__PRETTY_FUNCTION__.5501
	.word	.LC0
	.word	.LC40
	.word	.LC43
	.word	.LC44
	.word	.LC45
	.word	954437177
	.word	.LC46
	.word	.LC47
	.word	.LC48
	.word	.LC49
	.word	855
	.word	858
	.word	.LC50
	.word	.LC51
	.word	885
	.word	895
	.word	.LC37
	.word	897
	.word	.LC52
	.word	.LC53
	.word	941
	.word	.LC54
	.word	.LC55
	.word	.LC56
	.word	.LC57
	.word	.LC58
	.size	fullSolve, .-fullSolve
	.align	2
	.global	solve
	.syntax unified
	.arm
	.fpu softvfp
	.type	solve, %function
solve:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L343
	mov	r3, #0
	strb	r3, [fp, #-12]
	b	.L332
.L334:
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	lsl	r3, r3, #2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L344
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-12]
.L332:
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	cmp	r3, #8
	bls	.L334
	bl	newPuzzle
	str	r0, [fp, #-8]
	mov	r3, #0
	strb	r3, [fp, #-11]
	b	.L335
.L336:
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	ldr	r2, .L345
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldr	r0, [r3]
	ldrb	r2, [fp, #-11]	@ zero_extendqisi2
	ldr	r3, .L345
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r0, r3
	ldr	r1, [r3]
	ldr	r3, .L345
	smull	r2, r3, r1, r3
	asr	r2, r3, #1
	asr	r3, r1, #31
	sub	r2, r2, r3
	mov	r3, r2
	lsl	r3, r3, #3
	add	r3, r3, r2
	sub	r2, r1, r3
	ldr	r3, [fp, #-8]
	ldr	r1, [r3]
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	ldr	r0, .L345
	umull	ip, r3, r0, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	ip, [r3]
	ldrb	r1, [fp, #-11]	@ zero_extendqisi2
	ldr	r3, .L345
	umull	r0, r3, r1, r3
	lsr	r0, r3, #1
	mov	r3, r0
	lsl	r3, r3, #3
	add	r3, r3, r0
	sub	r3, r1, r3
	and	r3, r3, #255
	add	r3, ip, r3
	and	r2, r2, #255
	strb	r2, [r3]
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-11]
.L335:
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	cmp	r3, #80
	bls	.L336
	ldr	r0, [fp, #-8]
	bl	copyInitialPuzzleToSolutionMatrix
	mov	r3, #0
	strb	r3, [fp, #-10]
	b	.L337
.L339:
	ldr	r3, [fp, #-8]
	ldr	r2, [r3]
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	ldr	r1, .L345
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r0, [r3]
	ldrb	r2, [fp, #-10]	@ zero_extendqisi2
	ldr	r3, .L345
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, r0, r3
	ldrb	r0, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	ldr	r1, .L345
	umull	ip, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	ip, [r3]
	ldrb	r2, [fp, #-10]	@ zero_extendqisi2
	ldr	r3, .L345
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, ip, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r0, r3
	beq	.L338
	ldr	r0, [fp, #-8]
	bl	freePuzzle
	b	.L329
.L338:
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-10]
.L337:
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	cmp	r3, #80
	bls	.L339
	ldr	r0, [fp, #-8]
	bl	createEmptyCellMatrix
	ldr	r0, [fp, #-8]
	bl	singlePossibleSolutions
	ldr	r0, [fp, #-8]
	bl	fullSolve
	mov	r3, #0
	strb	r3, [fp, #-9]
	b	.L340
.L342:
	ldr	r3, [fp, #-8]
	ldr	r2, [r3]
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	ldr	r1, .L345
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r0, [r3]
	ldrb	r2, [fp, #-9]	@ zero_extendqisi2
	ldr	r3, .L345
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, r0, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L341
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #4]
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	ldr	r1, .L345
	umull	r0, r3, r1, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r0, [r3]
	ldrb	r2, [fp, #-9]	@ zero_extendqisi2
	ldr	r3, .L345
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	add	r3, r0, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, .L345
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	ip, r3, #255
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	ldr	r2, .L345
	umull	r1, r3, r2, r3
	lsr	r3, r3, #1
	and	r3, r3, #255
	lsl	r3, r3, #2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldr	r0, [r3]
	ldrb	r2, [fp, #-9]	@ zero_extendqisi2
	ldr	r3, .L345
	umull	r1, r3, r2, r3
	lsr	r1, r3, #1
	mov	r3, r1
	lsl	r3, r3, #3
	add	r3, r3, r1
	sub	r3, r2, r3
	and	r3, r3, #255
	lsl	r3, r3, #2
	add	r3, r0, r3
	mov	r2, ip
	str	r2, [r3]
.L341:
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-9]
.L340:
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	cmp	r3, #80
	bls	.L342
	ldr	r0, [fp, #-8]
	bl	freePuzzle
	b	.L329
.L343:
	nop
	b	.L329
.L344:
	nop
.L329:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L346:
	.align	2
.L345:
	.word	954437177
	.size	solve, .-solve
	.section	.rodata
	.align	2
.LC59:
	.ascii	"p\000"
	.align	2
.LC60:
	.ascii	"p->initialPuzzle\000"
	.align	2
.LC61:
	.ascii	"Full Solve\000"
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	bl	newPuzzle
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L348
	ldr	r3, .L351
	ldr	r2, .L351+4
	ldr	r1, .L351+8
	ldr	r0, .L351+12
	bl	__assert_fail
.L348:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L349
	ldr	r3, .L351
	ldr	r2, .L351+16
	ldr	r1, .L351+8
	ldr	r0, .L351+20
	bl	__assert_fail
.L349:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	ldr	r3, [r3]
	mov	r2, #8
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r3, r3, #1
	mov	r2, #4
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r3, r3, #3
	mov	r2, #3
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	add	r3, r3, #4
	ldr	r3, [r3]
	add	r3, r3, #1
	mov	r2, #6
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	add	r3, r3, #4
	ldr	r3, [r3]
	add	r3, r3, #3
	mov	r2, #7
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	add	r3, r3, #4
	ldr	r3, [r3]
	add	r3, r3, #6
	mov	r2, #9
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	add	r3, r3, #8
	ldr	r3, [r3]
	add	r3, r3, #4
	mov	r2, #5
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	add	r3, r3, #16
	ldr	r3, [r3]
	add	r3, r3, #8
	mov	r2, #9
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	add	r3, r3, #24
	ldr	r3, [r3]
	add	r3, r3, #4
	mov	r2, #1
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	add	r3, r3, #28
	ldr	r3, [r3]
	add	r3, r3, #2
	mov	r2, #1
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	add	r3, r3, #28
	ldr	r3, [r3]
	add	r3, r3, #5
	mov	r2, #2
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	add	r3, r3, #28
	ldr	r3, [r3]
	add	r3, r3, #7
	mov	r2, #4
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	add	r3, r3, #32
	ldr	r3, [r3]
	add	r3, r3, #5
	mov	r2, #6
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	add	r3, r3, #32
	ldr	r3, [r3]
	add	r3, r3, #7
	mov	r2, #1
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	add	r3, r3, #32
	ldr	r3, [r3]
	add	r3, r3, #8
	mov	r2, #8
	strb	r2, [r3]
	ldr	r0, [fp, #-8]
	bl	copyInitialPuzzleToSolutionMatrix
	ldr	r0, [fp, #-8]
	bl	createEmptyCellMatrix
	ldr	r0, [fp, #-8]
	bl	singlePossibleSolutions
	ldr	r0, .L351+24
	bl	puts
	ldr	r0, [fp, #-8]
	bl	fullSolve
	ldr	r0, [fp, #-8]
	bl	printPuzzle
	ldr	r0, [fp, #-8]
	bl	freePuzzle
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L352:
	.align	2
.L351:
	.word	__PRETTY_FUNCTION__.5606
	.word	1081
	.word	.LC0
	.word	.LC59
	.word	1082
	.word	.LC60
	.word	.LC61
	.size	main, .-main
	.section	.rodata
	.align	2
	.type	__PRETTY_FUNCTION__.5202, %object
	.size	__PRETTY_FUNCTION__.5202, 16
__PRETTY_FUNCTION__.5202:
	.ascii	"areRelatedCells\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5238, %object
	.size	__PRETTY_FUNCTION__.5238, 20
__PRETTY_FUNCTION__.5238:
	.ascii	"sortEmptyCellsArray\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5277, %object
	.size	__PRETTY_FUNCTION__.5277, 22
__PRETTY_FUNCTION__.5277:
	.ascii	"createEmptyCellMatrix\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5318, %object
	.size	__PRETTY_FUNCTION__.5318, 31
__PRETTY_FUNCTION__.5318:
	.ascii	"insertValueAndSetPossibilities\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5369, %object
	.size	__PRETTY_FUNCTION__.5369, 10
__PRETTY_FUNCTION__.5369:
	.ascii	"newPuzzle\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5404, %object
	.size	__PRETTY_FUNCTION__.5404, 11
__PRETTY_FUNCTION__.5404:
	.ascii	"freePuzzle\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5431, %object
	.size	__PRETTY_FUNCTION__.5431, 16
__PRETTY_FUNCTION__.5431:
	.ascii	"onlyPossibility\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5465, %object
	.size	__PRETTY_FUNCTION__.5465, 24
__PRETTY_FUNCTION__.5465:
	.ascii	"singlePossibleSolutions\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5477, %object
	.size	__PRETTY_FUNCTION__.5477, 8
__PRETTY_FUNCTION__.5477:
	.ascii	"upSolve\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5501, %object
	.size	__PRETTY_FUNCTION__.5501, 10
__PRETTY_FUNCTION__.5501:
	.ascii	"fullSolve\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5606, %object
	.size	__PRETTY_FUNCTION__.5606, 5
__PRETTY_FUNCTION__.5606:
	.ascii	"main\000"
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
