	.file	"428906.c"
	.intel_syntax noprefix
	.text
	.section	.rodata
.LC0:
	.string	"BUG: %s.\n"
	.text
	.globl	exitf
	.type	exitf, @function
exitf:
.LFB6:
	.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
	mov	rax, QWORD PTR stderr[rip]
	mov	rdx, QWORD PTR -8[rbp]
	lea	rsi, .LC0[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
	.cfi_endproc
.LFE6:
	.size	exitf, .-exitf
	.section	.rodata
.LC1:
	.string	"unreachable code was reached"
	.text
	.globl	unreachable
	.type	unreachable, @function
unreachable:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	lea	rdi, .LC1[rip]
	call	exitf
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	unreachable, .-unreachable
	.section	.rodata
.LC2:
	.string	"Error code: %d\n"
.LC3:
	.string	"incorrect use of Z3"
	.text
	.globl	error_handler
	.type	error_handler, @function
error_handler:
.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	QWORD PTR -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	mov	eax, DWORD PTR -12[rbp]
	mov	esi, eax
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC3[rip]
	call	exitf
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	error_handler, .-error_handler
	.local	g_catch_buffer
	.comm	g_catch_buffer,200,32
	.globl	throw_z3_error
	.type	throw_z3_error, @function
throw_z3_error:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	mov	eax, DWORD PTR -12[rbp]
	mov	esi, eax
	lea	rdi, g_catch_buffer[rip]
	call	longjmp@PLT
	.cfi_endproc
.LFE9:
	.size	throw_z3_error, .-throw_z3_error
	.globl	nothrow_z3_error
	.type	nothrow_z3_error, @function
nothrow_z3_error:
.LFB10:
	.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 -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	nothrow_z3_error, .-nothrow_z3_error
	.section	.rodata
.LC4:
	.string	"true"
.LC5:
	.string	"model"
	.text
	.globl	mk_context_custom
	.type	mk_context_custom, @function
mk_context_custom:
.LFB11:
	.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	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR -24[rbp]
	lea	rdx, .LC4[rip]
	lea	rsi, .LC5[rip]
	mov	rdi, rax
	call	Z3_set_param_value@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	Z3_mk_context@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_set_error_handler@PLT
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	mk_context_custom, .-mk_context_custom
	.globl	mk_solver
	.type	mk_solver, @function
mk_solver:
.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	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	Z3_mk_solver@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_inc_ref@PLT
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	mk_solver, .-mk_solver
	.globl	del_solver
	.type	del_solver, @function
del_solver:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_dec_ref@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	del_solver, .-del_solver
	.globl	mk_context
	.type	mk_context, @function
mk_context:
.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, 16
	call	Z3_mk_config@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	lea	rsi, error_handler[rip]
	mov	rdi, rax
	call	mk_context_custom
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	Z3_del_config@PLT
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	mk_context, .-mk_context
	.section	.rodata
.LC6:
	.string	"proof"
	.text
	.globl	mk_proof_context
	.type	mk_proof_context, @function
mk_proof_context:
.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, 16
	call	Z3_mk_config@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, .LC4[rip]
	lea	rsi, .LC6[rip]
	mov	rdi, rax
	call	Z3_set_param_value@PLT
	mov	rax, QWORD PTR -16[rbp]
	lea	rsi, throw_z3_error[rip]
	mov	rdi, rax
	call	mk_context_custom
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	Z3_del_config@PLT
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	mk_proof_context, .-mk_proof_context
	.globl	mk_var
	.type	mk_var, @function
mk_var:
.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, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_const@PLT
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	mk_var, .-mk_var
	.globl	mk_bool_var
	.type	mk_bool_var, @function
mk_bool_var:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	Z3_mk_bool_sort@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_var
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	mk_bool_var, .-mk_bool_var
	.globl	mk_int_var
	.type	mk_int_var, @function
mk_int_var:
.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	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	Z3_mk_int_sort@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_var
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	mk_int_var, .-mk_int_var
	.globl	mk_int
	.type	mk_int, @function
mk_int:
.LFB19:
	.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	DWORD PTR -28[rbp], esi
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	Z3_mk_int_sort@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -8[rbp]
	mov	ecx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	Z3_mk_int@PLT
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	mk_int, .-mk_int
	.globl	mk_real_var
	.type	mk_real_var, @function
mk_real_var:
.LFB20:
	.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	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	Z3_mk_real_sort@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_var
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	mk_real_var, .-mk_real_var
	.globl	mk_unary_app
	.type	mk_unary_app, @function
mk_unary_app:
.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, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR -16[rbp], rax
	lea	rdx, -16[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L27
	call	__stack_chk_fail@PLT
.L27:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	mk_unary_app, .-mk_unary_app
	.globl	mk_binary_app
	.type	mk_binary_app, @function
mk_binary_app:
.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, 64
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	QWORD PTR -56[rbp], rdx
	mov	QWORD PTR -64[rbp], rcx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	mov	QWORD PTR -24[rbp], rax
	lea	rdx, -32[rbp]
	mov	rsi, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L30
	call	__stack_chk_fail@PLT
.L30:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	mk_binary_app, .-mk_binary_app
	.section	.rodata
.LC7:
	.string	"unsat"
.LC8:
	.string	"unknown"
.LC9:
	.string	"potential model:\n%s\n"
.LC10:
	.string	"sat\n%s\n"
.LC11:
	.string	"unexpected result"
	.text
	.globl	check
	.type	check, @function
check:
.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, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -36[rbp], edx
	mov	QWORD PTR -8[rbp], 0
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_check@PLT
	mov	DWORD PTR -12[rbp], eax
	cmp	DWORD PTR -12[rbp], 1
	je	.L32
	cmp	DWORD PTR -12[rbp], 1
	jg	.L33
	cmp	DWORD PTR -12[rbp], -1
	je	.L34
	cmp	DWORD PTR -12[rbp], 0
	je	.L35
	jmp	.L33
.L34:
	lea	rdi, .LC7[rip]
	call	puts@PLT
	jmp	.L33
.L35:
	lea	rdi, .LC8[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_get_model@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L36
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_inc_ref@PLT
.L36:
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC9[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L33
.L32:
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_get_model@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L37
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_inc_ref@PLT
.L37:
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC10[rip]
	mov	eax, 0
	call	printf@PLT
	nop
.L33:
	mov	eax, DWORD PTR -12[rbp]
	cmp	eax, DWORD PTR -36[rbp]
	je	.L38
	lea	rdi, .LC11[rip]
	call	exitf
.L38:
	cmp	QWORD PTR -8[rbp], 0
	je	.L40
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_dec_ref@PLT
.L40:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	check, .-check
	.section	.rodata
.LC12:
	.string	"valid"
.LC13:
	.string	"potential counterexample:\n%s\n"
.LC14:
	.string	"invalid"
.LC15:
	.string	"counterexample:\n%s\n"
	.text
	.globl	prove
	.type	prove, @function
prove:
.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 -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	eax, ecx
	mov	BYTE PTR -44[rbp], al
	mov	QWORD PTR -16[rbp], 0
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_push@PLT
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_check@PLT
	cmp	eax, 1
	je	.L42
	cmp	eax, 1
	jg	.L43
	cmp	eax, -1
	je	.L44
	test	eax, eax
	je	.L45
	jmp	.L43
.L44:
	lea	rdi, .LC12[rip]
	call	puts@PLT
	movzx	eax, BYTE PTR -44[rbp]
	xor	eax, 1
	test	al, al
	je	.L52
	lea	rdi, .LC11[rip]
	call	exitf
	jmp	.L52
.L45:
	lea	rdi, .LC8[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_get_model@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	je	.L47
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_inc_ref@PLT
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC13[rip]
	mov	eax, 0
	call	printf@PLT
.L47:
	cmp	BYTE PTR -44[rbp], 0
	je	.L53
	lea	rdi, .LC11[rip]
	call	exitf
	jmp	.L53
.L42:
	lea	rdi, .LC14[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_get_model@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	je	.L49
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_inc_ref@PLT
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC15[rip]
	mov	eax, 0
	call	printf@PLT
.L49:
	cmp	BYTE PTR -44[rbp], 0
	je	.L54
	lea	rdi, .LC11[rip]
	call	exitf
	jmp	.L54
.L52:
	nop
	jmp	.L43
.L53:
	nop
	jmp	.L43
.L54:
	nop
.L43:
	cmp	QWORD PTR -16[rbp], 0
	je	.L51
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_dec_ref@PLT
.L51:
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_pop@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.size	prove, .-prove
	.section	.rodata
.LC16:
	.string	"failed to create inj axiom"
.LC17:
	.string	"inv"
.LC18:
	.string	"pattern: %s\n"
.LC19:
	.string	"assert axiom:\n%s\n"
	.text
	.globl	assert_inj_axiom
	.type	assert_inj_axiom, @function
assert_inj_axiom:
.LFB25:
	.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, 152
	.cfi_offset 3, -24
	mov	QWORD PTR -136[rbp], rdi
	mov	QWORD PTR -144[rbp], rsi
	mov	QWORD PTR -152[rbp], rdx
	mov	DWORD PTR -156[rbp], ecx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	mov	rdx, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_domain_size@PLT
	mov	DWORD PTR -124[rbp], eax
	mov	eax, DWORD PTR -156[rbp]
	cmp	eax, DWORD PTR -124[rbp]
	jb	.L56
	lea	rdi, .LC16[rip]
	call	exitf
.L56:
	mov	rdx, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_range@PLT
	mov	QWORD PTR -120[rbp], rax
	mov	edx, DWORD PTR -156[rbp]
	mov	rcx, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_get_domain@PLT
	mov	QWORD PTR -96[rbp], rax
	mov	rcx, QWORD PTR -96[rbp]
	lea	rdx, -120[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 1
	lea	rsi, .LC17[rip]
	mov	rdi, rax
	call	Z3_mk_fresh_func_decl@PLT
	mov	QWORD PTR -88[rbp], rax
	mov	eax, DWORD PTR -124[rbp]
	sal	rax, 3
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -80[rbp], rax
	mov	eax, DWORD PTR -124[rbp]
	sal	rax, 3
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -72[rbp], rax
	mov	eax, DWORD PTR -124[rbp]
	sal	rax, 3
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	DWORD PTR -128[rbp], 0
	jmp	.L57
.L58:
	mov	eax, DWORD PTR -128[rbp]
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -80[rbp]
	lea	rbx, [rdx+rax]
	mov	edx, DWORD PTR -128[rbp]
	mov	rcx, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_get_domain@PLT
	mov	QWORD PTR [rbx], rax
	add	DWORD PTR -128[rbp], 1
.L57:
	mov	eax, DWORD PTR -128[rbp]
	cmp	eax, DWORD PTR -124[rbp]
	jb	.L58
	mov	DWORD PTR -128[rbp], 0
	jmp	.L59
.L60:
	mov	edx, DWORD PTR -128[rbp]
	mov	eax, DWORD PTR -128[rbp]
	lea	rcx, 0[0+rax*8]
	mov	rax, QWORD PTR -72[rbp]
	lea	rbx, [rcx+rax]
	mov	rax, QWORD PTR -136[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	Z3_mk_int_symbol@PLT
	mov	QWORD PTR [rbx], rax
	add	DWORD PTR -128[rbp], 1
.L59:
	mov	eax, DWORD PTR -128[rbp]
	cmp	eax, DWORD PTR -124[rbp]
	jb	.L60
	mov	DWORD PTR -128[rbp], 0
	jmp	.L61
.L62:
	mov	eax, DWORD PTR -128[rbp]
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -128[rbp]
	lea	rcx, 0[0+rax*8]
	mov	rax, QWORD PTR -64[rbp]
	lea	rbx, [rcx+rax]
	mov	ecx, DWORD PTR -128[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	Z3_mk_bound@PLT
	mov	QWORD PTR [rbx], rax
	add	DWORD PTR -128[rbp], 1
.L61:
	mov	eax, DWORD PTR -128[rbp]
	cmp	eax, DWORD PTR -124[rbp]
	jb	.L62
	mov	eax, DWORD PTR -156[rbp]
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -56[rbp], rax
	mov	rcx, QWORD PTR -64[rbp]
	mov	edx, DWORD PTR -124[rbp]
	mov	rsi, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -112[rbp], rax
	mov	rdx, QWORD PTR -112[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR -56[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -40[rbp], rax
	lea	rdx, -112[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	Z3_mk_pattern@PLT
	mov	QWORD PTR -104[rbp], rax
	mov	rdx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_pattern_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC18[rip]
	mov	eax, 0
	call	printf@PLT
	mov	edi, 10
	call	putchar@PLT
	mov	rsi, QWORD PTR -80[rbp]
	mov	ecx, DWORD PTR -124[rbp]
	lea	rdx, -104[rbp]
	mov	rax, QWORD PTR -136[rbp]
	push	QWORD PTR -40[rbp]
	push	QWORD PTR -72[rbp]
	mov	r9, rsi
	mov	r8d, ecx
	mov	rcx, rdx
	mov	edx, 1
	mov	esi, 0
	mov	rdi, rax
	call	Z3_mk_forall@PLT
	add	rsp, 16
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC19[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR -32[rbp]
	mov	rcx, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rax, QWORD PTR -80[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	free@PLT
	nop
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L63
	call	__stack_chk_fail@PLT
.L63:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE25:
	.size	assert_inj_axiom, .-assert_inj_axiom
	.section	.rodata
	.align 8
.LC20:
	.string	"function must be binary, and argument types must be equal to return type"
.LC21:
	.string	"f"
.LC22:
	.string	"T"
	.align 8
.LC23:
	.string	"(assert (forall ((x T) (y T)) (= (f x y) (f y x))))"
	.text
	.globl	assert_comm_axiom
	.type	assert_comm_axiom, @function
assert_comm_axiom:
.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, 80
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	mov	QWORD PTR -72[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rdx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_range@PLT
	mov	QWORD PTR -40[rbp], rax
	mov	rdx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_domain_size@PLT
	cmp	eax, 2
	jne	.L65
	mov	rcx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_get_domain@PLT
	mov	rdx, QWORD PTR -40[rbp]
	cmp	rax, rdx
	jne	.L65
	mov	rcx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_get_domain@PLT
	mov	rdx, QWORD PTR -40[rbp]
	cmp	rax, rdx
	je	.L66
.L65:
	lea	rdi, .LC20[rip]
	call	exitf
.L66:
	mov	rax, QWORD PTR -56[rbp]
	lea	rsi, .LC21[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	lea	rsi, .LC22[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -24[rbp], rax
	lea	rsi, -40[rbp]
	lea	rdx, -24[rbp]
	mov	rax, QWORD PTR -56[rbp]
	lea	rcx, -72[rbp]
	push	rcx
	lea	rcx, -32[rbp]
	push	rcx
	mov	r9d, 1
	mov	r8, rsi
	mov	rcx, rdx
	mov	edx, 1
	lea	rsi, .LC23[rip]
	mov	rdi, rax
	call	Z3_parse_smtlib2_string@PLT
	add	rsp, 16
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_vector_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC19[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -44[rbp], 0
	jmp	.L67
.L68:
	mov	edx, DWORD PTR -44[rbp]
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_ast_vector_get@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	add	DWORD PTR -44[rbp], 1
.L67:
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_vector_size@PLT
	cmp	DWORD PTR -44[rbp], eax
	jb	.L68
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L69
	call	__stack_chk_fail@PLT
.L69:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE26:
	.size	assert_comm_axiom, .-assert_comm_axiom
	.section	.rodata
.LC24:
	.string	"argument must be a tuple"
	.align 8
.LC25:
	.string	"invalid tuple update, index is too big"
	.text
	.globl	mk_tuple_update
	.type	mk_tuple_update, @function
mk_tuple_update:
.LFB27:
	.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, 88
	.cfi_offset 3, -24
	mov	QWORD PTR -72[rbp], rdi
	mov	QWORD PTR -80[rbp], rsi
	mov	DWORD PTR -84[rbp], edx
	mov	QWORD PTR -96[rbp], rcx
	mov	rdx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_sort@PLT
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_sort_kind@PLT
	cmp	eax, 6
	je	.L71
	lea	rdi, .LC24[rip]
	call	exitf
.L71:
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_tuple_sort_num_fields@PLT
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -84[rbp]
	cmp	eax, DWORD PTR -60[rbp]
	jb	.L72
	lea	rdi, .LC25[rip]
	call	exitf
.L72:
	mov	eax, DWORD PTR -60[rbp]
	sal	rax, 3
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	DWORD PTR -64[rbp], 0
	jmp	.L73
.L76:
	mov	eax, DWORD PTR -84[rbp]
	cmp	eax, DWORD PTR -64[rbp]
	jne	.L74
	mov	eax, DWORD PTR -64[rbp]
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -48[rbp]
	add	rdx, rax
	mov	rax, QWORD PTR -96[rbp]
	mov	QWORD PTR [rdx], rax
	jmp	.L75
.L74:
	mov	edx, DWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_get_tuple_sort_field_decl@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	eax, DWORD PTR -64[rbp]
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -48[rbp]
	lea	rbx, [rdx+rax]
	mov	rdx, QWORD PTR -80[rbp]
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	QWORD PTR [rbx], rax
.L75:
	add	DWORD PTR -64[rbp], 1
.L73:
	mov	eax, DWORD PTR -64[rbp]
	cmp	eax, DWORD PTR -60[rbp]
	jb	.L76
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_tuple_sort_mk_decl@PLT
	mov	QWORD PTR -40[rbp], rax
	mov	rcx, QWORD PTR -48[rbp]
	mov	edx, DWORD PTR -60[rbp]
	mov	rsi, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -32[rbp]
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE27:
	.size	mk_tuple_update, .-mk_tuple_update
	.section	.rodata
.LC26:
	.string	"#%d"
	.text
	.globl	display_symbol
	.type	display_symbol, @function
display_symbol:
.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, 32
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_symbol_kind@PLT
	test	eax, eax
	je	.L79
	cmp	eax, 1
	je	.L80
	jmp	.L83
.L79:
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_symbol_int@PLT
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	lea	rsi, .LC26[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	jmp	.L82
.L80:
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_symbol_string@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rax
	mov	rdi, rdx
	call	fputs@PLT
	jmp	.L82
.L83:
	mov	eax, 0
	call	unreachable
	nop
.L82:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE28:
	.size	display_symbol, .-display_symbol
	.section	.rodata
.LC27:
	.string	"bool"
.LC28:
	.string	"int"
.LC29:
	.string	"real"
.LC30:
	.string	"bv%d"
.LC31:
	.string	"->"
.LC32:
	.string	", "
.LC33:
	.string	"unknown["
	.text
	.globl	display_sort
	.type	display_sort, @function
display_sort:
.LFB29:
	.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 -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_sort_kind@PLT
	cmp	eax, 6
	ja	.L85
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L87[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L87[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L87:
	.long	.L93-.L87
	.long	.L92-.L87
	.long	.L91-.L87
	.long	.L90-.L87
	.long	.L89-.L87
	.long	.L88-.L87
	.long	.L86-.L87
	.text
.L93:
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_sort_name@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_symbol
	jmp	.L94
.L92:
	mov	rax, QWORD PTR -32[rbp]
	mov	rcx, rax
	mov	edx, 4
	mov	esi, 1
	lea	rdi, .LC27[rip]
	call	fwrite@PLT
	jmp	.L94
.L91:
	mov	rax, QWORD PTR -32[rbp]
	mov	rcx, rax
	mov	edx, 3
	mov	esi, 1
	lea	rdi, .LC28[rip]
	call	fwrite@PLT
	jmp	.L94
.L90:
	mov	rax, QWORD PTR -32[rbp]
	mov	rcx, rax
	mov	edx, 4
	mov	esi, 1
	lea	rdi, .LC29[rip]
	call	fwrite@PLT
	jmp	.L94
.L89:
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_bv_sort_size@PLT
	mov	edx, eax
	mov	rax, QWORD PTR -32[rbp]
	lea	rsi, .LC30[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	jmp	.L94
.L88:
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rax
	mov	edi, 91
	call	fputc@PLT
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_array_sort_domain@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_sort
	mov	rax, QWORD PTR -32[rbp]
	mov	rcx, rax
	mov	edx, 2
	mov	esi, 1
	lea	rdi, .LC31[rip]
	call	fwrite@PLT
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_array_sort_range@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_sort
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rax
	mov	edi, 93
	call	fputc@PLT
	jmp	.L94
.L86:
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_datatype_sort_num_constructors@PLT
	cmp	eax, 1
	je	.L95
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_sort_to_string@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rax
	mov	rdi, rdx
	call	fputs@PLT
	jmp	.L94
.L95:
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_tuple_sort_num_fields@PLT
	mov	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rax
	mov	edi, 40
	call	fputc@PLT
	mov	DWORD PTR -16[rbp], 0
	jmp	.L96
.L98:
	mov	edx, DWORD PTR -16[rbp]
	mov	rcx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_get_tuple_sort_field_decl@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	DWORD PTR -16[rbp], 0
	je	.L97
	mov	rax, QWORD PTR -32[rbp]
	mov	rcx, rax
	mov	edx, 2
	mov	esi, 1
	lea	rdi, .LC32[rip]
	call	fwrite@PLT
.L97:
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_range@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_sort
	add	DWORD PTR -16[rbp], 1
.L96:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -12[rbp]
	jb	.L98
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rax
	mov	edi, 41
	call	fputc@PLT
	jmp	.L94
.L85:
	mov	rax, QWORD PTR -32[rbp]
	mov	rcx, rax
	mov	edx, 8
	mov	esi, 1
	lea	rdi, .LC33[rip]
	call	fwrite@PLT
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_sort_name@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_symbol
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rax
	mov	edi, 93
	call	fputc@PLT
	nop
.L94:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE29:
	.size	display_sort, .-display_sort
	.section	.rodata
.LC34:
	.string	"quantifier"
.LC35:
	.string	"#unknown"
	.text
	.globl	display_ast
	.type	display_ast, @function
display_ast:
.LFB30:
	.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 -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	QWORD PTR -56[rbp], rdx
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_ast_kind@PLT
	cmp	eax, 3
	je	.L100
	cmp	eax, 3
	ja	.L101
	test	eax, eax
	je	.L102
	cmp	eax, 1
	je	.L103
	jmp	.L101
.L102:
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_numeral_string@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rax
	mov	rdi, rdx
	call	fputs@PLT
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_sort@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rax
	mov	edi, 58
	call	fputc@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_sort
	jmp	.L104
.L103:
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_to_app@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_app_num_args@PLT
	mov	DWORD PTR -28[rbp], eax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_app_decl@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_decl_to_string@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rax
	mov	rdi, rdx
	call	fputs@PLT
	cmp	DWORD PTR -28[rbp], 0
	je	.L109
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rax
	mov	edi, 91
	call	fputc@PLT
	mov	DWORD PTR -32[rbp], 0
	jmp	.L106
.L108:
	cmp	DWORD PTR -32[rbp], 0
	je	.L107
	mov	rax, QWORD PTR -48[rbp]
	mov	rcx, rax
	mov	edx, 2
	mov	esi, 1
	lea	rdi, .LC32[rip]
	call	fwrite@PLT
.L107:
	mov	edx, DWORD PTR -32[rbp]
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_get_app_arg@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_ast
	add	DWORD PTR -32[rbp], 1
.L106:
	mov	eax, DWORD PTR -32[rbp]
	cmp	eax, DWORD PTR -28[rbp]
	jb	.L108
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rax
	mov	edi, 93
	call	fputc@PLT
	jmp	.L109
.L100:
	mov	rax, QWORD PTR -48[rbp]
	mov	rcx, rax
	mov	edx, 10
	mov	esi, 1
	lea	rdi, .LC34[rip]
	call	fwrite@PLT
.L101:
	mov	rax, QWORD PTR -48[rbp]
	mov	rcx, rax
	mov	edx, 8
	mov	esi, 1
	lea	rdi, .LC35[rip]
	call	fwrite@PLT
	jmp	.L110
.L109:
	nop
.L104:
.L110:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE30:
	.size	display_ast, .-display_ast
	.section	.rodata
.LC36:
	.string	"function interpretations:\n"
.LC37:
	.string	" = {"
.LC38:
	.string	"|->"
.LC39:
	.string	"(else|->"
.LC40:
	.string	")}\n"
	.text
	.globl	display_function_interpretations
	.type	display_function_interpretations, @function
display_function_interpretations:
.LFB31:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -72[rbp], rdi
	mov	QWORD PTR -80[rbp], rsi
	mov	QWORD PTR -88[rbp], rdx
	mov	rax, QWORD PTR -80[rbp]
	mov	rcx, rax
	mov	edx, 26
	mov	esi, 1
	lea	rdi, .LC36[rip]
	call	fwrite@PLT
	mov	rdx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_get_num_funcs@PLT
	mov	DWORD PTR -48[rbp], eax
	mov	DWORD PTR -64[rbp], 0
	jmp	.L112
.L121:
	mov	DWORD PTR -60[rbp], 0
	mov	edx, DWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_model_get_func_decl@PLT
	mov	QWORD PTR -40[rbp], rax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_model_get_func_interp@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_interp_inc_ref@PLT
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_decl_name@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_symbol
	mov	rax, QWORD PTR -80[rbp]
	mov	rcx, rax
	mov	edx, 4
	mov	esi, 1
	lea	rdi, .LC37[rip]
	call	fwrite@PLT
	cmp	QWORD PTR -32[rbp], 0
	je	.L113
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_interp_get_num_entries@PLT
	mov	DWORD PTR -60[rbp], eax
.L113:
	mov	DWORD PTR -56[rbp], 0
	jmp	.L114
.L119:
	mov	edx, DWORD PTR -56[rbp]
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_func_interp_get_entry@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_entry_inc_ref@PLT
	cmp	DWORD PTR -56[rbp], 0
	je	.L115
	mov	rax, QWORD PTR -80[rbp]
	mov	rcx, rax
	mov	edx, 2
	mov	esi, 1
	lea	rdi, .LC32[rip]
	call	fwrite@PLT
.L115:
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_entry_get_num_args@PLT
	mov	DWORD PTR -44[rbp], eax
	mov	rax, QWORD PTR -80[rbp]
	mov	rsi, rax
	mov	edi, 40
	call	fputc@PLT
	mov	DWORD PTR -52[rbp], 0
	jmp	.L116
.L118:
	cmp	DWORD PTR -52[rbp], 0
	je	.L117
	mov	rax, QWORD PTR -80[rbp]
	mov	rcx, rax
	mov	edx, 2
	mov	esi, 1
	lea	rdi, .LC32[rip]
	call	fwrite@PLT
.L117:
	mov	edx, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_func_entry_get_arg@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_ast
	add	DWORD PTR -52[rbp], 1
.L116:
	mov	eax, DWORD PTR -52[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jb	.L118
	mov	rax, QWORD PTR -80[rbp]
	mov	rcx, rax
	mov	edx, 3
	mov	esi, 1
	lea	rdi, .LC38[rip]
	call	fwrite@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_entry_get_value@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_ast
	mov	rax, QWORD PTR -80[rbp]
	mov	rsi, rax
	mov	edi, 41
	call	fputc@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_entry_dec_ref@PLT
	add	DWORD PTR -56[rbp], 1
.L114:
	mov	eax, DWORD PTR -56[rbp]
	cmp	eax, DWORD PTR -60[rbp]
	jb	.L119
	cmp	DWORD PTR -60[rbp], 0
	je	.L120
	mov	rax, QWORD PTR -80[rbp]
	mov	rcx, rax
	mov	edx, 2
	mov	esi, 1
	lea	rdi, .LC32[rip]
	call	fwrite@PLT
.L120:
	mov	rax, QWORD PTR -80[rbp]
	mov	rcx, rax
	mov	edx, 8
	mov	esi, 1
	lea	rdi, .LC39[rip]
	call	fwrite@PLT
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_interp_get_else@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_ast
	mov	rax, QWORD PTR -80[rbp]
	mov	rcx, rax
	mov	edx, 3
	mov	esi, 1
	lea	rdi, .LC40[rip]
	call	fwrite@PLT
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_interp_dec_ref@PLT
	add	DWORD PTR -64[rbp], 1
.L112:
	mov	eax, DWORD PTR -64[rbp]
	cmp	eax, DWORD PTR -48[rbp]
	jb	.L121
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE31:
	.size	display_function_interpretations, .-display_function_interpretations
	.section	.rodata
.LC41:
	.string	" = "
	.text
	.globl	display_model
	.type	display_model, @function
display_model:
.LFB32:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -72[rbp], rdi
	mov	QWORD PTR -80[rbp], rsi
	mov	QWORD PTR -88[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -88[rbp], 0
	je	.L128
	mov	rdx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_get_num_consts@PLT
	mov	DWORD PTR -44[rbp], eax
	mov	DWORD PTR -48[rbp], 0
	jmp	.L125
.L126:
	mov	edx, DWORD PTR -48[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_model_get_const_decl@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_decl_name@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_symbol
	mov	rax, QWORD PTR -80[rbp]
	mov	rcx, rax
	mov	edx, 3
	mov	esi, 1
	lea	rdi, .LC41[rip]
	call	fwrite@PLT
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR -40[rbp], rax
	lea	rcx, -40[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	rsi, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	r8, rcx
	mov	ecx, 1
	mov	rdi, rax
	call	Z3_model_eval@PLT
	mov	BYTE PTR -49[rbp], al
	mov	rdx, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_ast
	mov	rax, QWORD PTR -80[rbp]
	mov	rsi, rax
	mov	edi, 10
	call	fputc@PLT
	add	DWORD PTR -48[rbp], 1
.L125:
	mov	eax, DWORD PTR -48[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jb	.L126
	mov	rdx, QWORD PTR -88[rbp]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_function_interpretations
	jmp	.L122
.L128:
	nop
.L122:
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L127
	call	__stack_chk_fail@PLT
.L127:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE32:
	.size	display_model, .-display_model
	.section	.rodata
.LC42:
	.string	"potential model:"
.LC43:
	.string	"sat"
	.text
	.globl	check2
	.type	check2, @function
check2:
.LFB33:
	.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 -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -36[rbp], edx
	mov	QWORD PTR -8[rbp], 0
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_check@PLT
	mov	DWORD PTR -12[rbp], eax
	cmp	DWORD PTR -12[rbp], 1
	je	.L130
	cmp	DWORD PTR -12[rbp], 1
	jg	.L131
	cmp	DWORD PTR -12[rbp], -1
	je	.L132
	cmp	DWORD PTR -12[rbp], 0
	je	.L133
	jmp	.L131
.L132:
	lea	rdi, .LC7[rip]
	call	puts@PLT
	jmp	.L131
.L133:
	lea	rdi, .LC8[rip]
	call	puts@PLT
	lea	rdi, .LC42[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_get_model@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L134
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_inc_ref@PLT
.L134:
	mov	rcx, QWORD PTR stdout[rip]
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_model
	jmp	.L131
.L130:
	lea	rdi, .LC43[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_get_model@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L135
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_inc_ref@PLT
.L135:
	mov	rcx, QWORD PTR stdout[rip]
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_model
	nop
.L131:
	mov	eax, DWORD PTR -12[rbp]
	cmp	eax, DWORD PTR -36[rbp]
	je	.L136
	lea	rdi, .LC11[rip]
	call	exitf
.L136:
	cmp	QWORD PTR -8[rbp], 0
	je	.L138
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_dec_ref@PLT
.L138:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE33:
	.size	check2, .-check2
	.section	.rodata
.LC44:
	.string	"Z3 %d.%d.%d.%d\n"
	.text
	.globl	display_version
	.type	display_version, @function
display_version:
.LFB34:
	.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	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rcx, -12[rbp]
	lea	rdx, -16[rbp]
	lea	rsi, -20[rbp]
	lea	rax, -24[rbp]
	mov	rdi, rax
	call	Z3_get_version@PLT
	mov	esi, DWORD PTR -12[rbp]
	mov	ecx, DWORD PTR -16[rbp]
	mov	edx, DWORD PTR -20[rbp]
	mov	eax, DWORD PTR -24[rbp]
	mov	r8d, esi
	mov	esi, eax
	lea	rdi, .LC44[rip]
	mov	eax, 0
	call	printf@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L140
	call	__stack_chk_fail@PLT
.L140:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE34:
	.size	display_version, .-display_version
	.section	.rodata
.LC45:
	.string	"simple_example"
.LC46:
	.string	"\nsimple_example"
	.text
	.globl	simple_example
	.type	simple_example, @function
simple_example:
.LFB35:
	.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
	lea	rdi, .LC45[rip]
	call	Z3_append_log@PLT
	lea	rdi, .LC46[rip]
	call	puts@PLT
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE35:
	.size	simple_example, .-simple_example
	.section	.rodata
.LC47:
	.string	"\nDeMorgan"
.LC48:
	.string	"DeMorgan"
.LC49:
	.string	"DeMorgan is valid"
.LC50:
	.string	"Undef"
.LC51:
	.string	"DeMorgan is not valid"
	.text
	.globl	demorgan
	.type	demorgan, @function
demorgan:
.LFB36:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 160
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdi, .LC47[rip]
	call	puts@PLT
	lea	rdi, .LC48[rip]
	call	Z3_append_log@PLT
	call	Z3_mk_config@PLT
	mov	QWORD PTR -152[rbp], rax
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	Z3_mk_context@PLT
	mov	QWORD PTR -144[rbp], rax
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	Z3_del_config@PLT
	mov	rax, QWORD PTR -144[rbp]
	mov	rdi, rax
	call	Z3_mk_bool_sort@PLT
	mov	QWORD PTR -136[rbp], rax
	mov	rax, QWORD PTR -144[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	Z3_mk_int_symbol@PLT
	mov	QWORD PTR -128[rbp], rax
	mov	rax, QWORD PTR -144[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	Z3_mk_int_symbol@PLT
	mov	QWORD PTR -120[rbp], rax
	mov	rdx, QWORD PTR -136[rbp]
	mov	rcx, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_const@PLT
	mov	QWORD PTR -112[rbp], rax
	mov	rdx, QWORD PTR -136[rbp]
	mov	rcx, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_const@PLT
	mov	QWORD PTR -104[rbp], rax
	mov	rdx, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -96[rbp], rax
	mov	rdx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -88[rbp], rax
	mov	rax, QWORD PTR -112[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -104[rbp]
	mov	QWORD PTR -24[rbp], rax
	lea	rdx, -32[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_and@PLT
	mov	QWORD PTR -80[rbp], rax
	mov	rdx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	QWORD PTR -24[rbp], rax
	lea	rdx, -32[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_or@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	rdx, QWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_iff@PLT
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -144[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -40[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rcx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_check@PLT
	cmp	eax, 1
	je	.L143
	cmp	eax, 1
	jg	.L144
	cmp	eax, -1
	je	.L145
	test	eax, eax
	je	.L146
	jmp	.L144
.L145:
	lea	rdi, .LC49[rip]
	call	puts@PLT
	jmp	.L144
.L146:
	lea	rdi, .LC50[rip]
	call	puts@PLT
	jmp	.L144
.L143:
	lea	rdi, .LC51[rip]
	call	puts@PLT
	nop
.L144:
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -144[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L147
	call	__stack_chk_fail@PLT
.L147:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE36:
	.size	demorgan, .-demorgan
	.section	.rodata
.LC52:
	.string	"\nfind_model_example1"
.LC53:
	.string	"find_model_example1"
.LC54:
	.string	"x"
.LC55:
	.string	"y"
.LC56:
	.string	"model for: x xor y"
	.text
	.globl	find_model_example1
	.type	find_model_example1, @function
find_model_example1:
.LFB37:
	.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
	lea	rdi, .LC52[rip]
	call	puts@PLT
	lea	rdi, .LC53[rip]
	call	Z3_append_log@PLT
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	mk_bool_var
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	mk_bool_var
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_xor@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	lea	rdi, .LC56[rip]
	call	puts@PLT
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	check
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE37:
	.size	find_model_example1, .-find_model_example1
	.section	.rodata
.LC57:
	.string	"\nfind_model_example2"
.LC58:
	.string	"find_model_example2"
.LC59:
	.string	"model for: x < y + 1, x > 2"
	.align 8
.LC60:
	.string	"model for: x < y + 1, x > 2, not(x = y)"
	.text
	.globl	find_model_example2
	.type	find_model_example2, @function
find_model_example2:
.LFB38:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	add	rsp, -128
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdi, .LC57[rip]
	call	puts@PLT
	lea	rdi, .LC58[rip]
	call	Z3_append_log@PLT
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -120[rbp], rax
	mov	rax, QWORD PTR -120[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -112[rbp], rax
	mov	rax, QWORD PTR -120[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -104[rbp], rax
	mov	rax, QWORD PTR -120[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -96[rbp], rax
	mov	rax, QWORD PTR -120[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	mk_int
	mov	QWORD PTR -88[rbp], rax
	mov	rax, QWORD PTR -120[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	mk_int
	mov	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	QWORD PTR -24[rbp], rax
	lea	rdx, -32[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_add@PLT
	mov	QWORD PTR -72[rbp], rax
	mov	rdx, QWORD PTR -72[rbp]
	mov	rcx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_lt@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	rdx, QWORD PTR -80[rbp]
	mov	rcx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_gt@PLT
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rdx, QWORD PTR -56[rbp]
	mov	rcx, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	lea	rdi, .LC59[rip]
	call	puts@PLT
	mov	rcx, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	check
	mov	rdx, QWORD PTR -96[rbp]
	mov	rcx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -40[rbp], rax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	lea	rdi, .LC60[rip]
	call	puts@PLT
	mov	rcx, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	check
	mov	rdx, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -120[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L150
	call	__stack_chk_fail@PLT
.L150:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE38:
	.size	find_model_example2, .-find_model_example2
	.section	.rodata
.LC61:
	.string	"\nprove_example1"
.LC62:
	.string	"prove_example1"
.LC63:
	.string	"U"
.LC64:
	.string	"g"
	.align 8
.LC65:
	.string	"prove: x = y implies g(x) = g(y)"
	.align 8
.LC66:
	.string	"disprove: x = y implies g(g(x)) = g(y)"
	.text
	.globl	prove_example1
	.type	prove_example1, @function
prove_example1:
.LFB39:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 144
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdi, .LC61[rip]
	call	puts@PLT
	lea	rdi, .LC62[rip]
	call	Z3_append_log@PLT
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -136[rbp], rax
	mov	rax, QWORD PTR -136[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -128[rbp], rax
	mov	rax, QWORD PTR -136[rbp]
	lea	rsi, .LC63[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -120[rbp], rax
	mov	rdx, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_uninterpreted_sort@PLT
	mov	QWORD PTR -112[rbp], rax
	mov	rax, QWORD PTR -136[rbp]
	lea	rsi, .LC64[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -104[rbp], rax
	mov	rax, QWORD PTR -112[rbp]
	mov	QWORD PTR -16[rbp], rax
	mov	rcx, QWORD PTR -112[rbp]
	lea	rdx, -16[rbp]
	mov	rsi, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_func_decl@PLT
	mov	QWORD PTR -96[rbp], rax
	mov	rax, QWORD PTR -136[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -88[rbp], rax
	mov	rax, QWORD PTR -136[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -80[rbp], rax
	mov	rdx, QWORD PTR -112[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_const@PLT
	mov	QWORD PTR -72[rbp], rax
	mov	rdx, QWORD PTR -112[rbp]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_const@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	rdx, QWORD PTR -72[rbp]
	mov	rcx, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -40[rbp], rax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rdx, QWORD PTR -48[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -32[rbp], rax
	lea	rdi, .LC65[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -32[rbp]
	mov	rsi, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -56[rbp]
	mov	rcx, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	QWORD PTR -24[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -32[rbp], rax
	lea	rdi, .LC66[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -32[rbp]
	mov	rsi, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	ecx, 0
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -136[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L152
	call	__stack_chk_fail@PLT
.L152:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE39:
	.size	prove_example1, .-prove_example1
	.section	.rodata
.LC67:
	.string	"\nprove_example2"
.LC68:
	.string	"prove_example2"
.LC69:
	.string	"z"
	.align 8
.LC70:
	.string	"prove: not(g(g(x) - g(y)) = g(z)), x + z <= y <= x implies z < 0"
	.align 8
.LC71:
	.string	"disprove: not(g(g(x) - g(y)) = g(z)), x + z <= y <= x implies z < -1"
	.text
	.globl	prove_example2
	.type	prove_example2, @function
prove_example2:
.LFB40:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 208
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdi, .LC67[rip]
	call	puts@PLT
	lea	rdi, .LC68[rip]
	call	Z3_append_log@PLT
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -208[rbp], rax
	mov	rax, QWORD PTR -208[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -200[rbp], rax
	mov	rax, QWORD PTR -208[rbp]
	mov	rdi, rax
	call	Z3_mk_int_sort@PLT
	mov	QWORD PTR -192[rbp], rax
	mov	rax, QWORD PTR -208[rbp]
	lea	rsi, .LC64[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -184[rbp], rax
	mov	rax, QWORD PTR -192[rbp]
	mov	QWORD PTR -40[rbp], rax
	mov	rcx, QWORD PTR -192[rbp]
	lea	rdx, -40[rbp]
	mov	rsi, QWORD PTR -184[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_func_decl@PLT
	mov	QWORD PTR -176[rbp], rax
	mov	rax, QWORD PTR -208[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -168[rbp], rax
	mov	rax, QWORD PTR -208[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -160[rbp], rax
	mov	rax, QWORD PTR -208[rbp]
	lea	rsi, .LC69[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -152[rbp], rax
	mov	rdx, QWORD PTR -168[rbp]
	mov	rcx, QWORD PTR -176[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	QWORD PTR -144[rbp], rax
	mov	rdx, QWORD PTR -160[rbp]
	mov	rcx, QWORD PTR -176[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	QWORD PTR -136[rbp], rax
	mov	rdx, QWORD PTR -152[rbp]
	mov	rcx, QWORD PTR -176[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	QWORD PTR -128[rbp], rax
	mov	rax, QWORD PTR -208[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	mk_int
	mov	QWORD PTR -120[rbp], rax
	mov	rax, QWORD PTR -144[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -136[rbp]
	mov	QWORD PTR -24[rbp], rax
	lea	rdx, -32[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_sub@PLT
	mov	QWORD PTR -112[rbp], rax
	mov	rdx, QWORD PTR -112[rbp]
	mov	rcx, QWORD PTR -176[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	QWORD PTR -104[rbp], rax
	mov	rdx, QWORD PTR -128[rbp]
	mov	rcx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -96[rbp], rax
	mov	rdx, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -88[rbp], rax
	mov	rdx, QWORD PTR -88[rbp]
	mov	rcx, QWORD PTR -200[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rax, QWORD PTR -168[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -152[rbp]
	mov	QWORD PTR -24[rbp], rax
	lea	rdx, -32[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_add@PLT
	mov	QWORD PTR -80[rbp], rax
	mov	rdx, QWORD PTR -160[rbp]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_le@PLT
	mov	QWORD PTR -72[rbp], rax
	mov	rdx, QWORD PTR -72[rbp]
	mov	rcx, QWORD PTR -200[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rdx, QWORD PTR -168[rbp]
	mov	rcx, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_le@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	rdx, QWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -200[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rdx, QWORD PTR -120[rbp]
	mov	rcx, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_lt@PLT
	mov	QWORD PTR -56[rbp], rax
	lea	rdi, .LC70[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -56[rbp]
	mov	rsi, QWORD PTR -200[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rax, QWORD PTR -208[rbp]
	mov	esi, -1
	mov	rdi, rax
	call	mk_int
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rcx, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_lt@PLT
	mov	QWORD PTR -56[rbp], rax
	lea	rdi, .LC71[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -56[rbp]
	mov	rsi, QWORD PTR -200[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	ecx, 0
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -200[rbp]
	mov	rax, QWORD PTR -208[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -208[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L154
	call	__stack_chk_fail@PLT
.L154:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE40:
	.size	prove_example2, .-prove_example2
	.section	.rodata
.LC72:
	.string	"\npush_pop_example1"
.LC73:
	.string	"push_pop_example1"
	.align 8
.LC74:
	.string	"1000000000000000000000000000000000000000000000000000000"
.LC75:
	.string	"3"
.LC76:
	.string	"assert: x >= 'big number'"
.LC77:
	.string	"push"
.LC78:
	.string	"number of scopes: %d\n"
.LC79:
	.string	"assert: x <= 3"
.LC80:
	.string	"pop"
.LC81:
	.string	"assert: y > x"
	.text
	.globl	push_pop_example1
	.type	push_pop_example1, @function
push_pop_example1:
.LFB41:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	lea	rdi, .LC72[rip]
	call	puts@PLT
	lea	rdi, .LC73[rip]
	call	Z3_append_log@PLT
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -96[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -88[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	mov	rdi, rax
	call	Z3_mk_int_sort@PLT
	mov	QWORD PTR -80[rbp], rax
	mov	rdx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -96[rbp]
	lea	rsi, .LC74[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	QWORD PTR -72[rbp], rax
	mov	rdx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -96[rbp]
	lea	rsi, .LC75[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -80[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_const@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR -72[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_ge@PLT
	mov	QWORD PTR -40[rbp], rax
	lea	rdi, .LC76[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	lea	rdi, .LC77[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_push@PLT
	mov	rdx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_get_num_scopes@PLT
	mov	esi, eax
	lea	rdi, .LC78[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_le@PLT
	mov	QWORD PTR -32[rbp], rax
	lea	rdi, .LC79[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -32[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	edx, -1
	mov	rsi, rcx
	mov	rdi, rax
	call	check2
	lea	rdi, .LC80[rip]
	call	puts@PLT
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_pop@PLT
	mov	rdx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_get_num_scopes@PLT
	mov	esi, eax
	lea	rdi, .LC78[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	check2
	mov	rax, QWORD PTR -96[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rdx, QWORD PTR -80[rbp]
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_const@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_gt@PLT
	mov	QWORD PTR -8[rbp], rax
	lea	rdi, .LC81[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	check2
	mov	rdx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -96[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE41:
	.size	push_pop_example1, .-push_pop_example1
	.section	.rodata
.LC82:
	.string	"\nquantifier_example1"
.LC83:
	.string	"quantifier_example1"
.LC84:
	.string	"10"
.LC85:
	.string	"smt.mbqi.max_iterations"
.LC86:
	.string	"v"
.LC87:
	.string	"w"
	.align 8
.LC88:
	.string	"prove: f(x, y) = f(w, v) implies y = v"
	.align 8
.LC89:
	.string	"disprove: f(x, y) = f(w, v) implies x = w"
	.align 8
.LC90:
	.string	"that is: not(f(x, y) = f(w, v) implies x = w) is satisfiable"
.LC91:
	.string	"reason for last failure: %s\n"
	.text
	.globl	quantifier_example1
	.type	quantifier_example1, @function
quantifier_example1:
.LFB42:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 160
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdi, .LC82[rip]
	call	puts@PLT
	lea	rdi, .LC83[rip]
	call	Z3_append_log@PLT
	call	Z3_mk_config@PLT
	mov	QWORD PTR -160[rbp], rax
	lea	rsi, .LC84[rip]
	lea	rdi, .LC85[rip]
	call	Z3_global_param_set@PLT
	mov	rax, QWORD PTR -160[rbp]
	lea	rsi, error_handler[rip]
	mov	rdi, rax
	call	mk_context_custom
	mov	QWORD PTR -152[rbp], rax
	mov	rax, QWORD PTR -160[rbp]
	mov	rdi, rax
	call	Z3_del_config@PLT
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -144[rbp], rax
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	Z3_mk_int_sort@PLT
	mov	QWORD PTR -136[rbp], rax
	mov	rax, QWORD PTR -152[rbp]
	lea	rsi, .LC21[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -128[rbp], rax
	mov	rax, QWORD PTR -136[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -136[rbp]
	mov	QWORD PTR -24[rbp], rax
	mov	rcx, QWORD PTR -136[rbp]
	lea	rdx, -32[rbp]
	mov	rsi, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_mk_func_decl@PLT
	mov	QWORD PTR -120[rbp], rax
	mov	rdx, QWORD PTR -120[rbp]
	mov	rsi, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	assert_inj_axiom
	mov	rax, QWORD PTR -152[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -112[rbp], rax
	mov	rax, QWORD PTR -152[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -104[rbp], rax
	mov	rax, QWORD PTR -152[rbp]
	lea	rsi, .LC86[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -96[rbp], rax
	mov	rax, QWORD PTR -152[rbp]
	lea	rsi, .LC87[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -88[rbp], rax
	mov	rcx, QWORD PTR -104[rbp]
	mov	rdx, QWORD PTR -112[rbp]
	mov	rsi, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -80[rbp], rax
	mov	rcx, QWORD PTR -96[rbp]
	mov	rdx, QWORD PTR -88[rbp]
	mov	rsi, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -72[rbp], rax
	mov	rdx, QWORD PTR -72[rbp]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	rdx, QWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rdx, QWORD PTR -96[rbp]
	mov	rcx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -56[rbp], rax
	lea	rdi, .LC88[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -56[rbp]
	mov	rsi, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -88[rbp]
	mov	rcx, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -40[rbp], rax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	lea	rdi, .LC89[rip]
	call	puts@PLT
	lea	rdi, .LC90[rip]
	call	puts@PLT
	mov	rcx, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	check2
	mov	rdx, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_get_reason_unknown@PLT
	mov	rsi, rax
	lea	rdi, .LC91[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -152[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -152[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	call	Z3_global_param_reset_all@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L157
	call	__stack_chk_fail@PLT
.L157:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE42:
	.size	quantifier_example1, .-quantifier_example1
	.section	.rodata
.LC92:
	.string	"\narray_example1"
.LC93:
	.string	"array_example1"
.LC94:
	.string	"a1"
.LC95:
	.string	"a2"
.LC96:
	.string	"i1"
.LC97:
	.string	"i2"
.LC98:
	.string	"i3"
.LC99:
	.string	"v1"
.LC100:
	.string	"v2"
	.align 8
.LC101:
	.string	"prove: store(a1, i1, v1) = store(a2, i2, v2) implies (i1 = i3 or i2 = i3 or select(a1, i3) = select(a2, i3))"
	.text
	.globl	array_example1
	.type	array_example1, @function
array_example1:
.LFB43:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 176
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -176[rbp], rax
	mov	rax, QWORD PTR -176[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -168[rbp], rax
	lea	rdi, .LC92[rip]
	call	puts@PLT
	lea	rdi, .LC93[rip]
	call	Z3_append_log@PLT
	mov	rax, QWORD PTR -176[rbp]
	mov	rdi, rax
	call	Z3_mk_int_sort@PLT
	mov	QWORD PTR -160[rbp], rax
	mov	rdx, QWORD PTR -160[rbp]
	mov	rcx, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_array_sort@PLT
	mov	QWORD PTR -152[rbp], rax
	mov	rdx, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR -176[rbp]
	lea	rsi, .LC94[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -144[rbp], rax
	mov	rdx, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR -176[rbp]
	lea	rsi, .LC95[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -136[rbp], rax
	mov	rdx, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR -176[rbp]
	lea	rsi, .LC96[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -128[rbp], rax
	mov	rdx, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR -176[rbp]
	lea	rsi, .LC97[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -120[rbp], rax
	mov	rdx, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR -176[rbp]
	lea	rsi, .LC98[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -112[rbp], rax
	mov	rdx, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR -176[rbp]
	lea	rsi, .LC99[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -104[rbp], rax
	mov	rdx, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR -176[rbp]
	lea	rsi, .LC100[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -96[rbp], rax
	mov	rcx, QWORD PTR -104[rbp]
	mov	rdx, QWORD PTR -128[rbp]
	mov	rsi, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rdi, rax
	call	Z3_mk_store@PLT
	mov	QWORD PTR -88[rbp], rax
	mov	rcx, QWORD PTR -96[rbp]
	mov	rdx, QWORD PTR -120[rbp]
	mov	rsi, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rdi, rax
	call	Z3_mk_store@PLT
	mov	QWORD PTR -80[rbp], rax
	mov	rdx, QWORD PTR -112[rbp]
	mov	rcx, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_select@PLT
	mov	QWORD PTR -72[rbp], rax
	mov	rdx, QWORD PTR -112[rbp]
	mov	rcx, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_select@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	rdx, QWORD PTR -80[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -112[rbp]
	mov	rcx, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -112[rbp]
	mov	rcx, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rdx, QWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -16[rbp], rax
	lea	rdx, -32[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	esi, 3
	mov	rdi, rax
	call	Z3_mk_or@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_implies@PLT
	mov	QWORD PTR -40[rbp], rax
	lea	rdi, .LC101[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rdi, rax
	call	puts@PLT
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -168[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -168[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -176[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L159
	call	__stack_chk_fail@PLT
.L159:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE43:
	.size	array_example1, .-array_example1
	.section	.rodata
.LC102:
	.string	"\narray_example2"
.LC103:
	.string	"array_example2"
.LC104:
	.string	"n = %d\n"
	.text
	.globl	array_example2
	.type	array_example2, @function
array_example2:
.LFB44:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 112
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdi, .LC102[rip]
	call	puts@PLT
	lea	rdi, .LC103[rip]
	call	Z3_append_log@PLT
	mov	DWORD PTR -100[rbp], 2
	jmp	.L161
.L166:
	mov	eax, DWORD PTR -100[rbp]
	mov	esi, eax
	lea	rdi, .LC104[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -96[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -88[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	mov	rdi, rax
	call	Z3_mk_bool_sort@PLT
	mov	QWORD PTR -80[rbp], rax
	mov	rdx, QWORD PTR -80[rbp]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_array_sort@PLT
	mov	QWORD PTR -72[rbp], rax
	mov	DWORD PTR -104[rbp], 0
	jmp	.L162
.L163:
	mov	edx, DWORD PTR -104[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	Z3_mk_int_symbol@PLT
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -72[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_const@PLT
	mov	edx, DWORD PTR -104[rbp]
	mov	QWORD PTR -48[rbp+rdx*8], rax
	add	DWORD PTR -104[rbp], 1
.L162:
	mov	eax, DWORD PTR -104[rbp]
	cmp	eax, DWORD PTR -100[rbp]
	jb	.L163
	lea	rdx, -48[rbp]
	mov	ecx, DWORD PTR -100[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	Z3_mk_distinct@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	rdx, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rdi, rax
	call	puts@PLT
	mov	rdx, QWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	cmp	DWORD PTR -100[rbp], 4
	ja	.L164
	mov	edx, 1
	jmp	.L165
.L164:
	mov	edx, -1
.L165:
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	check2
	mov	rdx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -96[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	add	DWORD PTR -100[rbp], 1
.L161:
	cmp	DWORD PTR -100[rbp], 5
	jbe	.L166
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L167
	call	__stack_chk_fail@PLT
.L167:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE44:
	.size	array_example2, .-array_example2
	.section	.rodata
.LC105:
	.string	"\narray_example3"
.LC106:
	.string	"array_example3"
.LC107:
	.string	"type must be an array type"
.LC108:
	.string	"domain: "
.LC109:
	.string	"range:  "
.LC110:
	.string	"invalid array type"
	.text
	.globl	array_example3
	.type	array_example3, @function
array_example3:
.LFB45:
	.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	eax, 0
	call	mk_context
	mov	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -48[rbp], rax
	lea	rdi, .LC105[rip]
	call	puts@PLT
	lea	rdi, .LC106[rip]
	call	Z3_append_log@PLT
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	Z3_mk_bool_sort@PLT
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	Z3_mk_int_sort@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_array_sort@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_sort_kind@PLT
	cmp	eax, 5
	je	.L169
	lea	rdi, .LC107[rip]
	call	exitf
.L169:
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_array_sort_domain@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_array_sort_range@PLT
	mov	QWORD PTR -8[rbp], rax
	lea	rdi, .LC108[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rcx, QWORD PTR stdout[rip]
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_sort
	mov	edi, 10
	call	putchar@PLT
	lea	rdi, .LC109[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rcx, QWORD PTR stdout[rip]
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_sort
	mov	edi, 10
	call	putchar@PLT
	mov	rax, QWORD PTR -32[rbp]
	cmp	rax, QWORD PTR -16[rbp]
	jne	.L170
	mov	rax, QWORD PTR -40[rbp]
	cmp	rax, QWORD PTR -8[rbp]
	je	.L171
.L170:
	lea	rdi, .LC110[rip]
	call	exitf
.L171:
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE45:
	.size	array_example3, .-array_example3
	.section	.rodata
.LC111:
	.string	"\ntuple_example1"
.LC112:
	.string	"tuple_example1"
.LC113:
	.string	"mk_pair"
.LC114:
	.string	"get_x"
.LC115:
	.string	"get_y"
.LC116:
	.string	"tuple_sort: "
.LC117:
	.string	"1"
	.align 8
.LC118:
	.string	"prove: get_x(mk_pair(x, y)) = 1 implies x = 1"
	.align 8
.LC119:
	.string	"disprove: get_x(mk_pair(x, y)) = 1 implies y = 1"
.LC120:
	.string	"p1"
.LC121:
	.string	"p2"
	.align 8
.LC122:
	.string	"prove: get_x(p1) = get_x(p2) and get_y(p1) = get_y(p2) implies p1 = p2"
	.align 8
.LC123:
	.string	"disprove: get_x(p1) = get_x(p2) implies p1 = p2"
	.align 8
.LC124:
	.string	"prove: p2 = update(p1, 0, 10) implies get_x(p2) = 10"
	.align 8
.LC125:
	.string	"disprove: p2 = update(p1, 0, 10) implies get_y(p2) = 10"
	.text
	.globl	tuple_example1
	.type	tuple_example1, @function
tuple_example1:
.LFB46:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 368
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -360[rbp], rax
	mov	rax, QWORD PTR -360[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -352[rbp], rax
	lea	rdi, .LC111[rip]
	call	puts@PLT
	lea	rdi, .LC112[rip]
	call	Z3_append_log@PLT
	mov	rax, QWORD PTR -360[rbp]
	mov	rdi, rax
	call	Z3_mk_real_sort@PLT
	mov	QWORD PTR -344[rbp], rax
	mov	rax, QWORD PTR -360[rbp]
	lea	rsi, .LC113[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -336[rbp], rax
	mov	rax, QWORD PTR -360[rbp]
	lea	rsi, .LC114[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -360[rbp]
	lea	rsi, .LC115[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -344[rbp]
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -344[rbp]
	mov	QWORD PTR -56[rbp], rax
	lea	r8, -368[rbp]
	lea	rdi, -64[rbp]
	lea	rdx, -80[rbp]
	mov	rsi, QWORD PTR -336[rbp]
	mov	rax, QWORD PTR -360[rbp]
	sub	rsp, 8
	lea	rcx, -48[rbp]
	push	rcx
	mov	r9, r8
	mov	r8, rdi
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_mk_tuple_sort@PLT
	add	rsp, 16
	mov	QWORD PTR -328[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	QWORD PTR -320[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR -312[rbp], rax
	lea	rdi, .LC116[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rcx, QWORD PTR stdout[rip]
	mov	rdx, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_sort
	mov	edi, 10
	call	putchar@PLT
	mov	rax, QWORD PTR -360[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	mk_real_var
	mov	QWORD PTR -304[rbp], rax
	mov	rax, QWORD PTR -360[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	mk_real_var
	mov	QWORD PTR -296[rbp], rax
	mov	rsi, QWORD PTR -368[rbp]
	mov	rcx, QWORD PTR -296[rbp]
	mov	rdx, QWORD PTR -304[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -288[rbp], rax
	mov	rdx, QWORD PTR -288[rbp]
	mov	rcx, QWORD PTR -320[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	QWORD PTR -280[rbp], rax
	mov	rdx, QWORD PTR -344[rbp]
	mov	rax, QWORD PTR -360[rbp]
	lea	rsi, .LC117[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	QWORD PTR -272[rbp], rax
	mov	rdx, QWORD PTR -272[rbp]
	mov	rcx, QWORD PTR -280[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -264[rbp], rax
	mov	rdx, QWORD PTR -272[rbp]
	mov	rcx, QWORD PTR -304[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -256[rbp], rax
	mov	rdx, QWORD PTR -256[rbp]
	mov	rcx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_implies@PLT
	mov	QWORD PTR -248[rbp], rax
	lea	rdi, .LC118[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -248[rbp]
	mov	rsi, QWORD PTR -352[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -272[rbp]
	mov	rcx, QWORD PTR -296[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -240[rbp], rax
	mov	rdx, QWORD PTR -240[rbp]
	mov	rcx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_implies@PLT
	mov	QWORD PTR -248[rbp], rax
	lea	rdi, .LC119[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -248[rbp]
	mov	rsi, QWORD PTR -352[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	ecx, 0
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -360[rbp]
	lea	rsi, .LC120[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -232[rbp], rax
	mov	rdx, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -360[rbp]
	lea	rsi, .LC121[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -224[rbp], rax
	mov	rdx, QWORD PTR -232[rbp]
	mov	rcx, QWORD PTR -320[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	QWORD PTR -216[rbp], rax
	mov	rdx, QWORD PTR -232[rbp]
	mov	rcx, QWORD PTR -312[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	QWORD PTR -208[rbp], rax
	mov	rdx, QWORD PTR -224[rbp]
	mov	rcx, QWORD PTR -320[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	QWORD PTR -200[rbp], rax
	mov	rdx, QWORD PTR -224[rbp]
	mov	rcx, QWORD PTR -312[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	QWORD PTR -192[rbp], rax
	mov	rdx, QWORD PTR -200[rbp]
	mov	rcx, QWORD PTR -216[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -192[rbp]
	mov	rcx, QWORD PTR -208[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -24[rbp], rax
	lea	rdx, -32[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_and@PLT
	mov	QWORD PTR -184[rbp], rax
	mov	rdx, QWORD PTR -224[rbp]
	mov	rcx, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -176[rbp], rax
	mov	rdx, QWORD PTR -176[rbp]
	mov	rcx, QWORD PTR -184[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_implies@PLT
	mov	QWORD PTR -168[rbp], rax
	lea	rdi, .LC122[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -168[rbp]
	mov	rsi, QWORD PTR -352[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rcx, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR -176[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_implies@PLT
	mov	QWORD PTR -168[rbp], rax
	lea	rdi, .LC123[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -168[rbp]
	mov	rsi, QWORD PTR -352[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	ecx, 0
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -360[rbp]
	lea	rsi, .LC120[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -160[rbp], rax
	mov	rdx, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -360[rbp]
	lea	rsi, .LC121[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -152[rbp], rax
	mov	rdx, QWORD PTR -344[rbp]
	mov	rax, QWORD PTR -360[rbp]
	lea	rsi, .LC117[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	QWORD PTR -144[rbp], rax
	mov	rdx, QWORD PTR -344[rbp]
	mov	rax, QWORD PTR -360[rbp]
	lea	rsi, .LC84[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	QWORD PTR -136[rbp], rax
	mov	rdx, QWORD PTR -136[rbp]
	mov	rsi, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rcx, rdx
	mov	edx, 0
	mov	rdi, rax
	call	mk_tuple_update
	mov	QWORD PTR -128[rbp], rax
	mov	rdx, QWORD PTR -128[rbp]
	mov	rcx, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -120[rbp], rax
	mov	rdx, QWORD PTR -152[rbp]
	mov	rcx, QWORD PTR -320[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	QWORD PTR -112[rbp], rax
	mov	rdx, QWORD PTR -136[rbp]
	mov	rcx, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -104[rbp], rax
	mov	rdx, QWORD PTR -104[rbp]
	mov	rcx, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_implies@PLT
	mov	QWORD PTR -96[rbp], rax
	lea	rdi, .LC124[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -96[rbp]
	mov	rsi, QWORD PTR -352[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -152[rbp]
	mov	rcx, QWORD PTR -312[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	QWORD PTR -88[rbp], rax
	mov	rdx, QWORD PTR -136[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -104[rbp], rax
	mov	rdx, QWORD PTR -104[rbp]
	mov	rcx, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_implies@PLT
	mov	QWORD PTR -96[rbp], rax
	lea	rdi, .LC125[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -96[rbp]
	mov	rsi, QWORD PTR -352[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	ecx, 0
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -352[rbp]
	mov	rax, QWORD PTR -360[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -360[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L173
	call	__stack_chk_fail@PLT
.L173:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE46:
	.size	tuple_example1, .-tuple_example1
	.section	.rodata
.LC126:
	.string	"\nbitvector_example1"
.LC127:
	.string	"bitvector_example1"
.LC128:
	.string	"0"
	.align 8
.LC129:
	.string	"disprove: x - 10 <= 0 IFF x <= 10 for (32-bit) machine integers"
	.text
	.globl	bitvector_example1
	.type	bitvector_example1, @function
bitvector_example1:
.LFB47:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -80[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -72[rbp], rax
	lea	rdi, .LC126[rip]
	call	puts@PLT
	lea	rdi, .LC127[rip]
	call	Z3_append_log@PLT
	mov	rax, QWORD PTR -80[rbp]
	mov	esi, 32
	mov	rdi, rax
	call	Z3_mk_bv_sort@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	rdx, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -80[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -80[rbp]
	lea	rsi, .LC128[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -80[rbp]
	lea	rsi, .LC84[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	QWORD PTR -40[rbp], rax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_bvsub@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_bvsle@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_bvsle@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_iff@PLT
	mov	QWORD PTR -8[rbp], rax
	lea	rdi, .LC129[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	rsi, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	ecx, 0
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -80[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE47:
	.size	bitvector_example1, .-bitvector_example1
	.section	.rodata
.LC130:
	.string	"103"
.LC131:
	.string	"\nbitvector_example2"
.LC132:
	.string	"bitvector_example2"
	.align 8
.LC133:
	.string	"find values of x and y, such that x ^ y - 103 == x * y"
	.text
	.globl	bitvector_example2
	.type	bitvector_example2, @function
bitvector_example2:
.LFB48:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -80[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -80[rbp]
	mov	esi, 32
	mov	rdi, rax
	call	Z3_mk_bv_sort@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	rdx, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -80[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -80[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_bvxor@PLT
	mov	QWORD PTR -40[rbp], rax
	mov	rdx, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -80[rbp]
	lea	rsi, .LC130[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rcx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_bvsub@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_bvmul@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -8[rbp], rax
	lea	rdi, .LC131[rip]
	call	puts@PLT
	lea	rdi, .LC132[rip]
	call	Z3_append_log@PLT
	lea	rdi, .LC133[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rcx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	check
	mov	rdx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -80[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -80[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE48:
	.size	bitvector_example2, .-bitvector_example2
	.section	.rodata
.LC134:
	.string	"\neval_example1"
.LC135:
	.string	"eval_example1"
.LC136:
	.string	"MODEL:\n%s"
.LC137:
	.string	"\nevaluating x+y"
.LC138:
	.string	"result = "
.LC139:
	.string	"failed to evaluate: x+y"
	.align 8
.LC140:
	.string	"the constraints are satisfiable"
	.text
	.globl	eval_example1
	.type	eval_example1, @function
eval_example1:
.LFB49:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 112
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -96[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -88[rbp], rax
	mov	QWORD PTR -104[rbp], 0
	lea	rdi, .LC134[rip]
	call	puts@PLT
	lea	rdi, .LC135[rip]
	call	Z3_append_log@PLT
	mov	rax, QWORD PTR -96[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	mk_int
	mov	QWORD PTR -64[rbp], rax
	mov	rdx, QWORD PTR -72[rbp]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_lt@PLT
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -56[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rdx, QWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_gt@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rdx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_check@PLT
	cmp	eax, 1
	jne	.L177
	mov	rax, QWORD PTR -80[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	QWORD PTR -24[rbp], rax
	mov	rdx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_get_model@PLT
	mov	QWORD PTR -104[rbp], rax
	cmp	QWORD PTR -104[rbp], 0
	je	.L178
	mov	rdx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_inc_ref@PLT
.L178:
	mov	rdx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC136[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdx, -32[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_add@PLT
	mov	QWORD PTR -40[rbp], rax
	lea	rdi, .LC137[rip]
	call	puts@PLT
	lea	rcx, -112[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	r8, rcx
	mov	ecx, 1
	mov	rdi, rax
	call	Z3_model_eval@PLT
	test	al, al
	je	.L179
	lea	rdi, .LC138[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR -112[rbp]
	mov	rcx, QWORD PTR stdout[rip]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_ast
	mov	edi, 10
	call	putchar@PLT
	jmp	.L181
.L179:
	lea	rdi, .LC139[rip]
	call	exitf
	jmp	.L181
.L177:
	lea	rdi, .LC140[rip]
	call	exitf
.L181:
	cmp	QWORD PTR -104[rbp], 0
	je	.L182
	mov	rdx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_dec_ref@PLT
.L182:
	mov	rdx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -96[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L183
	call	__stack_chk_fail@PLT
.L183:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE49:
	.size	eval_example1, .-eval_example1
	.section	.rodata
.LC141:
	.string	"\ntwo_contexts_example1"
.LC142:
	.string	"two_contexts_example1"
	.text
	.globl	two_contexts_example1
	.type	two_contexts_example1, @function
two_contexts_example1:
.LFB50:
	.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, 40
	.cfi_offset 3, -24
	lea	rdi, .LC141[rip]
	call	puts@PLT
	lea	rdi, .LC142[rip]
	call	Z3_append_log@PLT
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -48[rbp], rax
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	Z3_mk_bool_sort@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -48[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	Z3_mk_int_symbol@PLT
	mov	rcx, rax
	mov	rax, QWORD PTR -48[rbp]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_const@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	Z3_mk_bool_sort@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	Z3_mk_int_symbol@PLT
	mov	rcx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_const@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rdi, rax
	call	puts@PLT
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE50:
	.size	two_contexts_example1, .-two_contexts_example1
	.section	.rodata
.LC143:
	.string	"\nerror_code_example1"
.LC144:
	.string	"error_code_example11"
	.align 8
.LC145:
	.string	"did not obtain value for declaration.\n"
.LC146:
	.string	"last call succeeded."
.LC147:
	.string	"last call failed."
	.text
	.globl	error_code_example1
	.type	error_code_example1, @function
error_code_example1:
.LFB51:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdi, .LC143[rip]
	call	puts@PLT
	lea	rdi, .LC144[rip]
	call	Z3_append_log@PLT
	call	Z3_mk_config@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	mk_context_custom
	mov	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	Z3_del_config@PLT
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	mk_bool_var
	mov	QWORD PTR -40[rbp], rax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_to_app@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_app_decl@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_check@PLT
	cmp	eax, 1
	je	.L186
	lea	rdi, .LC11[rip]
	call	exitf
.L186:
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_get_model@PLT
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	je	.L187
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_inc_ref@PLT
.L187:
	lea	rcx, -72[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	r8, rcx
	mov	ecx, 1
	mov	rdi, rax
	call	Z3_model_eval@PLT
	xor	eax, 1
	test	al, al
	je	.L188
	lea	rdi, .LC145[rip]
	call	exitf
.L188:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	Z3_get_error_code@PLT
	test	eax, eax
	jne	.L189
	lea	rdi, .LC146[rip]
	call	puts@PLT
.L189:
	mov	rdx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_numeral_string@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	Z3_get_error_code@PLT
	test	eax, eax
	je	.L190
	lea	rdi, .LC147[rip]
	call	puts@PLT
.L190:
	cmp	QWORD PTR -24[rbp], 0
	je	.L191
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_dec_ref@PLT
.L191:
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L192
	call	__stack_chk_fail@PLT
.L192:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE51:
	.size	error_code_example1, .-error_code_example1
	.section	.rodata
.LC148:
	.string	"\nerror_code_example2"
.LC149:
	.string	"error_code_example2"
.LC150:
	.string	"before Z3_mk_iff"
.LC151:
	.string	"Z3 error: %s.\n"
	.text
	.globl	error_code_example2
	.type	error_code_example2, @function
error_code_example2:
.LFB52:
	.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], 0
	lea	rdi, .LC148[rip]
	call	puts@PLT
	lea	rdi, .LC149[rip]
	call	Z3_append_log@PLT
	call	Z3_mk_config@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	lea	rsi, nothrow_z3_error[rip]
	mov	rdi, rax
	call	mk_context_custom
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	Z3_del_config@PLT
	mov	rax, QWORD PTR -40[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	mk_bool_var
	mov	QWORD PTR -16[rbp], rax
	lea	rdi, .LC150[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_iff@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	Z3_get_error_code@PLT
	mov	DWORD PTR -44[rbp], eax
	cmp	DWORD PTR -44[rbp], 0
	jne	.L198
	mov	eax, 0
	call	unreachable
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	jmp	.L199
.L198:
	nop
.L195:
	mov	edx, DWORD PTR -44[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	Z3_get_error_msg@PLT
	mov	rsi, rax
	lea	rdi, .LC151[rip]
	mov	eax, 0
	call	printf@PLT
	cmp	QWORD PTR -40[rbp], 0
	je	.L199
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
.L199:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE52:
	.size	error_code_example2, .-error_code_example2
	.section	.rodata
.LC152:
	.string	"\nparser_example2"
.LC153:
	.string	"parser_example2"
.LC154:
	.string	"a"
.LC155:
	.string	"b"
.LC156:
	.string	"(assert (> a b))"
.LC157:
	.string	"formula: %s\n"
	.text
	.globl	parser_example2
	.type	parser_example2, @function
parser_example2:
.LFB53:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -88[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -80[rbp], rax
	lea	rdi, .LC152[rip]
	call	puts@PLT
	lea	rdi, .LC153[rip]
	call	Z3_append_log@PLT
	mov	rax, QWORD PTR -88[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -72[rbp], rax
	mov	rdx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_to_app@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_app_decl@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -64[rbp], rax
	mov	rdx, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_to_app@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_get_app_decl@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	lea	rsi, .LC154[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	lea	rsi, .LC155[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	lea	rdx, -32[rbp]
	push	rdx
	lea	rdx, -48[rbp]
	push	rdx
	mov	r9d, 2
	mov	r8d, 0
	mov	ecx, 0
	mov	edx, 0
	lea	rsi, .LC156[rip]
	mov	rdi, rax
	call	Z3_parse_smtlib2_string@PLT
	add	rsp, 16
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_vector_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC157[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_vector_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC19[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -92[rbp], 0
	jmp	.L201
.L202:
	mov	edx, DWORD PTR -92[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_ast_vector_get@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	add	DWORD PTR -92[rbp], 1
.L201:
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_vector_size@PLT
	cmp	DWORD PTR -92[rbp], eax
	jb	.L202
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	check
	mov	rdx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L203
	call	__stack_chk_fail@PLT
.L203:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE53:
	.size	parser_example2, .-parser_example2
	.section	.rodata
.LC158:
	.string	"\nparser_example3"
.LC159:
	.string	"parser_example3"
	.align 8
.LC160:
	.string	"(assert (forall ((x Int) (y Int)) (=> (= x y) (= (g x 0) (g 0 y)))))"
	.text
	.globl	parser_example3
	.type	parser_example3, @function
parser_example3:
.LFB54:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdi, .LC158[rip]
	call	puts@PLT
	lea	rdi, .LC159[rip]
	call	Z3_append_log@PLT
	call	Z3_mk_config@PLT
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, .LC4[rip]
	lea	rsi, .LC5[rip]
	mov	rdi, rax
	call	Z3_set_param_value@PLT
	mov	rax, QWORD PTR -72[rbp]
	lea	rsi, error_handler[rip]
	mov	rdi, rax
	call	mk_context_custom
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	Z3_del_config@PLT
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	Z3_mk_int_sort@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	lea	rsi, .LC64[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -88[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	QWORD PTR -24[rbp], rax
	mov	rsi, QWORD PTR -88[rbp]
	mov	rcx, QWORD PTR -48[rbp]
	lea	rdx, -32[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_mk_func_decl@PLT
	mov	QWORD PTR -80[rbp], rax
	mov	rdx, QWORD PTR -80[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	assert_comm_axiom
	mov	rax, QWORD PTR -64[rbp]
	lea	rdx, -80[rbp]
	push	rdx
	lea	rdx, -88[rbp]
	push	rdx
	mov	r9d, 1
	mov	r8d, 0
	mov	ecx, 0
	mov	edx, 0
	lea	rsi, .LC160[rip]
	mov	rdi, rax
	call	Z3_parse_smtlib2_string@PLT
	add	rsp, 16
	mov	QWORD PTR -40[rbp], rax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_vector_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC157[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rcx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_ast_vector_get@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L205
	call	__stack_chk_fail@PLT
.L205:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE54:
	.size	parser_example3, .-parser_example3
	.section	.rodata
.LC161:
	.string	"\nparser_example5"
.LC162:
	.string	"parser_example5"
	.align 8
.LC163:
	.string	"(declare-const x Int) declare-const y Int) (assert (and (> x y) (> x 0)))"
	.text
	.globl	parser_example5
	.type	parser_example5, @function
parser_example5:
.LFB55:
	.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], 0
	mov	QWORD PTR -16[rbp], 0
	lea	rdi, .LC161[rip]
	call	puts@PLT
	lea	rdi, .LC162[rip]
	call	Z3_append_log@PLT
	call	Z3_mk_config@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, nothrow_z3_error[rip]
	mov	rdi, rax
	call	mk_context_custom
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	Z3_del_config@PLT
	mov	rax, QWORD PTR -24[rbp]
	push	0
	push	0
	mov	r9d, 0
	mov	r8d, 0
	mov	ecx, 0
	mov	edx, 0
	lea	rsi, .LC163[rip]
	mov	rdi, rax
	call	Z3_parse_smtlib2_string@PLT
	add	rsp, 16
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	Z3_get_error_code@PLT
	mov	DWORD PTR -28[rbp], eax
	cmp	DWORD PTR -28[rbp], 0
	jne	.L211
	mov	eax, 0
	call	unreachable
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	jmp	.L212
.L211:
	nop
.L208:
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	Z3_get_error_msg@PLT
	mov	rsi, rax
	lea	rdi, .LC151[rip]
	mov	eax, 0
	call	printf@PLT
	cmp	QWORD PTR -24[rbp], 0
	je	.L212
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
.L212:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE55:
	.size	parser_example5, .-parser_example5
	.section	.rodata
.LC164:
	.string	"\nnumeral_example"
.LC165:
	.string	"numeral_example"
.LC166:
	.string	"1/2"
.LC167:
	.string	"0.5"
.LC168:
	.string	"Numerals n1:%s"
.LC169:
	.string	" n2:%s\n"
.LC170:
	.string	"-1/3"
	.align 8
.LC171:
	.string	"-0.33333333333333333333333333333333333333333333333333"
	.text
	.globl	numeral_example
	.type	numeral_example, @function
numeral_example:
.LFB56:
	.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
	lea	rdi, .LC164[rip]
	call	puts@PLT
	lea	rdi, .LC165[rip]
	call	Z3_append_log@PLT
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	Z3_mk_real_sort@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	lea	rsi, .LC166[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	lea	rsi, .LC167[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC168[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC169[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	lea	rsi, .LC170[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	lea	rsi, .LC171[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC168[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC169[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE56:
	.size	numeral_example, .-numeral_example
	.section	.rodata
.LC172:
	.string	"\nite_example"
.LC173:
	.string	"ite_example"
.LC174:
	.string	"term: %s\n"
	.text
	.globl	ite_example
	.type	ite_example, @function
ite_example:
.LFB57:
	.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
	lea	rdi, .LC172[rip]
	call	puts@PLT
	lea	rdi, .LC173[rip]
	call	Z3_append_log@PLT
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	Z3_mk_false@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	mk_int
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	mk_int
	mov	QWORD PTR -16[rbp], rax
	mov	rcx, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	Z3_mk_ite@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC174[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE57:
	.size	ite_example, .-ite_example
	.section	.rodata
.LC175:
	.string	"fruit"
.LC176:
	.string	"\nenum_example"
.LC177:
	.string	"enum_example"
.LC178:
	.string	"apple"
.LC179:
	.string	"banana"
.LC180:
	.string	"orange"
.LC181:
	.string	"fruity"
	.text
	.globl	enum_example
	.type	enum_example, @function
enum_example:
.LFB58:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 192
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -176[rbp], rax
	mov	rax, QWORD PTR -176[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -168[rbp], rax
	mov	rax, QWORD PTR -176[rbp]
	lea	rsi, .LC175[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -160[rbp], rax
	lea	rdi, .LC176[rip]
	call	puts@PLT
	lea	rdi, .LC177[rip]
	call	Z3_append_log@PLT
	mov	rax, QWORD PTR -176[rbp]
	lea	rsi, .LC178[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -128[rbp], rax
	mov	rax, QWORD PTR -176[rbp]
	lea	rsi, .LC179[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -120[rbp], rax
	mov	rax, QWORD PTR -176[rbp]
	lea	rsi, .LC180[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -112[rbp], rax
	lea	rdi, -64[rbp]
	lea	rcx, -96[rbp]
	lea	rdx, -128[rbp]
	mov	rsi, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	r9, rdi
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 3
	mov	rdi, rax
	call	Z3_mk_enumeration_sort@PLT
	mov	QWORD PTR -152[rbp], rax
	mov	rdx, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_decl_to_string@PLT
	mov	rdi, rax
	call	puts@PLT
	mov	rdx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_decl_to_string@PLT
	mov	rdi, rax
	call	puts@PLT
	mov	rdx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_decl_to_string@PLT
	mov	rdi, rax
	call	puts@PLT
	mov	rdx, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_decl_to_string@PLT
	mov	rdi, rax
	call	puts@PLT
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_decl_to_string@PLT
	mov	rdi, rax
	call	puts@PLT
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_decl_to_string@PLT
	mov	rdi, rax
	call	puts@PLT
	mov	rsi, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -192[rbp], rax
	mov	rsi, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -144[rbp], rax
	mov	rsi, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -184[rbp], rax
	mov	rdx, QWORD PTR -184[rbp]
	mov	rcx, QWORD PTR -192[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -168[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rsi, QWORD PTR -64[rbp]
	lea	rdx, -192[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -168[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rsi, QWORD PTR -64[rbp]
	lea	rdx, -184[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -168[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	ecx, 0
	mov	rdi, rax
	call	prove
	mov	rsi, QWORD PTR -64[rbp]
	lea	rdx, -184[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -168[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR -176[rbp]
	lea	rsi, .LC181[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -136[rbp], rax
	mov	rdx, QWORD PTR -192[rbp]
	mov	rcx, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -144[rbp]
	mov	rcx, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rdx, QWORD PTR -184[rbp]
	mov	rcx, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -16[rbp], rax
	lea	rdx, -32[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	esi, 3
	mov	rdi, rax
	call	Z3_mk_or@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -168[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -168[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -176[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L216
	call	__stack_chk_fail@PLT
.L216:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE58:
	.size	enum_example, .-enum_example
	.section	.rodata
.LC182:
	.string	"\nlist_example"
.LC183:
	.string	"list_example"
.LC184:
	.string	"int_list"
.LC185:
	.string	"u"
.LC186:
	.string	"Formula %s\n"
	.text
	.globl	list_example
	.type	list_example, @function
list_example:
.LFB59:
	.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, 200
	.cfi_offset 3, -24
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -144[rbp], rax
	mov	rax, QWORD PTR -144[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -136[rbp], rax
	lea	rdi, .LC182[rip]
	call	puts@PLT
	lea	rdi, .LC183[rip]
	call	Z3_append_log@PLT
	mov	rax, QWORD PTR -144[rbp]
	mov	rdi, rax
	call	Z3_mk_int_sort@PLT
	mov	QWORD PTR -128[rbp], rax
	mov	rax, QWORD PTR -144[rbp]
	lea	rsi, .LC184[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rdi, rax
	lea	r9, -184[rbp]
	lea	r8, -192[rbp]
	lea	rcx, -200[rbp]
	mov	rdx, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -144[rbp]
	sub	rsp, 8
	lea	rsi, -160[rbp]
	push	rsi
	lea	rsi, -168[rbp]
	push	rsi
	lea	rsi, -176[rbp]
	push	rsi
	mov	rsi, rdi
	mov	rdi, rax
	call	Z3_mk_list_sort@PLT
	add	rsp, 32
	mov	QWORD PTR -120[rbp], rax
	mov	rsi, QWORD PTR -200[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -112[rbp], rax
	mov	rax, QWORD PTR -144[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	mk_int
	mov	rdi, rax
	mov	rsi, QWORD PTR -184[rbp]
	mov	rdx, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rcx, rdx
	mov	rdx, rdi
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -104[rbp], rax
	mov	rax, QWORD PTR -144[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	mk_int
	mov	rdi, rax
	mov	rsi, QWORD PTR -184[rbp]
	mov	rdx, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rcx, rdx
	mov	rdx, rdi
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -96[rbp], rax
	mov	rdx, QWORD PTR -104[rbp]
	mov	rcx, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -96[rbp]
	mov	rcx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -144[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -88[rbp], rax
	mov	rdx, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -144[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -80[rbp], rax
	mov	rsi, QWORD PTR -184[rbp]
	mov	rcx, QWORD PTR -112[rbp]
	mov	rdx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -104[rbp], rax
	mov	rsi, QWORD PTR -184[rbp]
	mov	rcx, QWORD PTR -112[rbp]
	mov	rdx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -96[rbp], rax
	mov	rdx, QWORD PTR -80[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rbx, rax
	mov	rdx, QWORD PTR -96[rbp]
	mov	rcx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rcx, rax
	mov	rax, QWORD PTR -144[rbp]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_implies@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR -144[rbp]
	lea	rsi, .LC185[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -152[rbp], rax
	mov	rdx, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR -144[rbp]
	lea	rsi, .LC86[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -72[rbp], rax
	mov	rcx, QWORD PTR -152[rbp]
	mov	rsi, QWORD PTR -184[rbp]
	mov	rdx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -104[rbp], rax
	mov	rsi, QWORD PTR -184[rbp]
	mov	rcx, QWORD PTR -72[rbp]
	mov	rdx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -96[rbp], rax
	mov	rcx, QWORD PTR -152[rbp]
	mov	rdx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rbx, rax
	mov	rdx, QWORD PTR -96[rbp]
	mov	rcx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rcx, rax
	mov	rax, QWORD PTR -144[rbp]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_implies@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -80[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rbx, rax
	mov	rdx, QWORD PTR -96[rbp]
	mov	rcx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rcx, rax
	mov	rax, QWORD PTR -144[rbp]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_implies@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rsi, QWORD PTR -192[rbp]
	lea	rdx, -152[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	rsi, QWORD PTR -176[rbp]
	lea	rdx, -152[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -40[rbp], rax
	lea	rdx, -48[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_or@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rcx, QWORD PTR -152[rbp]
	mov	rdx, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -152[rbp]
	mov	rcx, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	rbx, rax
	mov	rdx, QWORD PTR -152[rbp]
	mov	rcx, QWORD PTR -168[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	rdx, rax
	mov	rsi, QWORD PTR -184[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rcx, rbx
	mov	rdi, rax
	call	mk_binary_app
	mov	rdx, rax
	mov	rcx, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	rsi, QWORD PTR -176[rbp]
	lea	rdx, -152[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	rcx, rax
	mov	rdx, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_implies@PLT
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC186[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR -56[rbp]
	mov	rsi, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -64[rbp]
	mov	rsi, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	ecx, 0
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -144[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L218
	call	__stack_chk_fail@PLT
.L218:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE59:
	.size	list_example, .-list_example
	.section	.rodata
.LC187:
	.string	"car"
.LC188:
	.string	"cdr"
.LC189:
	.string	"\ntree_example"
.LC190:
	.string	"tree_example"
.LC191:
	.string	"is_nil"
.LC192:
	.string	"nil"
.LC193:
	.string	"is_cons"
.LC194:
	.string	"cons"
.LC195:
	.string	"cell"
	.text
	.globl	tree_example
	.type	tree_example, @function
tree_example:
.LFB60:
	.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, 280
	.cfi_offset 3, -24
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -240[rbp], rax
	mov	rax, QWORD PTR -240[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -232[rbp], rax
	mov	rax, QWORD PTR -240[rbp]
	lea	rsi, .LC187[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -112[rbp], rax
	mov	rax, QWORD PTR -240[rbp]
	lea	rsi, .LC188[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -104[rbp], rax
	mov	QWORD PTR -96[rbp], 0
	mov	QWORD PTR -88[rbp], 0
	mov	DWORD PTR -120[rbp], 0
	mov	DWORD PTR -116[rbp], 0
	lea	rdi, .LC189[rip]
	call	puts@PLT
	lea	rdi, .LC190[rip]
	call	Z3_append_log@PLT
	mov	rax, QWORD PTR -240[rbp]
	lea	rsi, .LC191[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -240[rbp]
	lea	rsi, .LC192[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rsi, rax
	mov	rax, QWORD PTR -240[rbp]
	sub	rsp, 8
	push	0
	mov	r9d, 0
	mov	r8d, 0
	mov	ecx, 0
	mov	rdx, rbx
	mov	rdi, rax
	call	Z3_mk_constructor@PLT
	add	rsp, 16
	mov	QWORD PTR -224[rbp], rax
	mov	rax, QWORD PTR -240[rbp]
	lea	rsi, .LC193[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -240[rbp]
	lea	rsi, .LC194[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rsi, rax
	lea	rdi, -96[rbp]
	lea	rcx, -112[rbp]
	mov	rax, QWORD PTR -240[rbp]
	sub	rsp, 8
	lea	rdx, -120[rbp]
	push	rdx
	mov	r9, rdi
	mov	r8, rcx
	mov	ecx, 2
	mov	rdx, rbx
	mov	rdi, rax
	call	Z3_mk_constructor@PLT
	add	rsp, 16
	mov	QWORD PTR -216[rbp], rax
	mov	rax, QWORD PTR -224[rbp]
	mov	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -216[rbp]
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -240[rbp]
	lea	rsi, .LC195[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rsi, rax
	lea	rdx, -80[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_mk_datatype@PLT
	mov	QWORD PTR -208[rbp], rax
	lea	rcx, -272[rbp]
	lea	rdx, -280[rbp]
	mov	rsi, QWORD PTR -224[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	r9d, 0
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 0
	mov	rdi, rax
	call	Z3_query_constructor@PLT
	lea	rdi, -64[rbp]
	lea	rcx, -256[rbp]
	lea	rdx, -264[rbp]
	mov	rsi, QWORD PTR -216[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	r9, rdi
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_query_constructor@PLT
	mov	rax, QWORD PTR -64[rbp]
	mov	QWORD PTR -200[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR -192[rbp], rax
	mov	rdx, QWORD PTR -224[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_del_constructor@PLT
	mov	rdx, QWORD PTR -216[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_del_constructor@PLT
	mov	rsi, QWORD PTR -280[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -184[rbp], rax
	mov	rsi, QWORD PTR -264[rbp]
	mov	rcx, QWORD PTR -184[rbp]
	mov	rdx, QWORD PTR -184[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -176[rbp], rax
	mov	rsi, QWORD PTR -264[rbp]
	mov	rcx, QWORD PTR -184[rbp]
	mov	rdx, QWORD PTR -176[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -168[rbp], rax
	mov	rdx, QWORD PTR -176[rbp]
	mov	rcx, QWORD PTR -184[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -240[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -208[rbp]
	mov	rax, QWORD PTR -240[rbp]
	lea	rsi, .LC185[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -248[rbp], rax
	mov	rdx, QWORD PTR -208[rbp]
	mov	rax, QWORD PTR -240[rbp]
	lea	rsi, .LC86[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -160[rbp], rax
	mov	rdx, QWORD PTR -208[rbp]
	mov	rax, QWORD PTR -240[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -152[rbp], rax
	mov	rdx, QWORD PTR -208[rbp]
	mov	rax, QWORD PTR -240[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -144[rbp], rax
	mov	rcx, QWORD PTR -248[rbp]
	mov	rsi, QWORD PTR -264[rbp]
	mov	rdx, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -176[rbp], rax
	mov	rsi, QWORD PTR -264[rbp]
	mov	rcx, QWORD PTR -160[rbp]
	mov	rdx, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -168[rbp], rax
	mov	rcx, QWORD PTR -248[rbp]
	mov	rdx, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rbx, rax
	mov	rdx, QWORD PTR -168[rbp]
	mov	rcx, QWORD PTR -176[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rcx, rax
	mov	rax, QWORD PTR -240[rbp]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_implies@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -144[rbp]
	mov	rcx, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rbx, rax
	mov	rdx, QWORD PTR -168[rbp]
	mov	rcx, QWORD PTR -176[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rcx, rax
	mov	rax, QWORD PTR -240[rbp]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_implies@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rsi, QWORD PTR -272[rbp]
	lea	rdx, -248[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	rsi, QWORD PTR -256[rbp]
	lea	rdx, -248[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -40[rbp], rax
	lea	rdx, -48[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_or@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rcx, QWORD PTR -248[rbp]
	mov	rdx, QWORD PTR -176[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -240[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -248[rbp]
	mov	rcx, QWORD PTR -192[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	rbx, rax
	mov	rdx, QWORD PTR -248[rbp]
	mov	rcx, QWORD PTR -200[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	rdx, rax
	mov	rsi, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rcx, rbx
	mov	rdi, rax
	call	mk_binary_app
	mov	rdx, rax
	mov	rcx, QWORD PTR -248[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -136[rbp], rax
	mov	rsi, QWORD PTR -256[rbp]
	lea	rdx, -248[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	rcx, rax
	mov	rdx, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_implies@PLT
	mov	QWORD PTR -128[rbp], rax
	mov	rdx, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC186[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR -128[rbp]
	mov	rsi, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -136[rbp]
	mov	rsi, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	ecx, 0
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR -240[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -240[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L220
	call	__stack_chk_fail@PLT
.L220:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE60:
	.size	tree_example, .-tree_example
	.section	.rodata
.LC196:
	.string	"forest"
.LC197:
	.string	"tree"
.LC198:
	.string	"\nforest_example"
.LC199:
	.string	"forest_example"
.LC200:
	.string	"is_nil1"
.LC201:
	.string	"nil1"
.LC202:
	.string	"is_cons1"
.LC203:
	.string	"cons1"
.LC204:
	.string	"is_nil2"
.LC205:
	.string	"nil2"
.LC206:
	.string	"is_cons2"
.LC207:
	.string	"cons2"
	.text
	.globl	forest_example
	.type	forest_example, @function
forest_example:
.LFB61:
	.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, 456
	.cfi_offset 3, -24
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -392[rbp], rax
	mov	rax, QWORD PTR -392[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -384[rbp], rax
	mov	rax, QWORD PTR -392[rbp]
	lea	rsi, .LC187[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -160[rbp], rax
	mov	rax, QWORD PTR -392[rbp]
	lea	rsi, .LC188[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -152[rbp], rax
	mov	QWORD PTR -144[rbp], 0
	mov	QWORD PTR -136[rbp], 0
	mov	DWORD PTR -168[rbp], 0
	mov	DWORD PTR -164[rbp], 0
	mov	rax, QWORD PTR -392[rbp]
	lea	rsi, .LC196[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -392[rbp]
	lea	rsi, .LC197[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -40[rbp], rax
	lea	rdi, .LC198[rip]
	call	puts@PLT
	lea	rdi, .LC199[rip]
	call	Z3_append_log@PLT
	mov	rax, QWORD PTR -392[rbp]
	lea	rsi, .LC200[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -392[rbp]
	lea	rsi, .LC201[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rsi, rax
	mov	rax, QWORD PTR -392[rbp]
	sub	rsp, 8
	push	0
	mov	r9d, 0
	mov	r8d, 0
	mov	ecx, 0
	mov	rdx, rbx
	mov	rdi, rax
	call	Z3_mk_constructor@PLT
	add	rsp, 16
	mov	QWORD PTR -376[rbp], rax
	mov	DWORD PTR -168[rbp], 1
	mov	DWORD PTR -164[rbp], 0
	mov	rax, QWORD PTR -392[rbp]
	lea	rsi, .LC202[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -392[rbp]
	lea	rsi, .LC203[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rsi, rax
	lea	rdi, -144[rbp]
	lea	rcx, -160[rbp]
	mov	rax, QWORD PTR -392[rbp]
	sub	rsp, 8
	lea	rdx, -168[rbp]
	push	rdx
	mov	r9, rdi
	mov	r8, rcx
	mov	ecx, 2
	mov	rdx, rbx
	mov	rdi, rax
	call	Z3_mk_constructor@PLT
	add	rsp, 16
	mov	QWORD PTR -368[rbp], rax
	mov	rax, QWORD PTR -376[rbp]
	mov	QWORD PTR -128[rbp], rax
	mov	rax, QWORD PTR -368[rbp]
	mov	QWORD PTR -120[rbp], rax
	mov	rax, QWORD PTR -392[rbp]
	lea	rsi, .LC204[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -392[rbp]
	lea	rsi, .LC205[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rsi, rax
	mov	rax, QWORD PTR -392[rbp]
	sub	rsp, 8
	push	0
	mov	r9d, 0
	mov	r8d, 0
	mov	ecx, 0
	mov	rdx, rbx
	mov	rdi, rax
	call	Z3_mk_constructor@PLT
	add	rsp, 16
	mov	QWORD PTR -360[rbp], rax
	mov	DWORD PTR -168[rbp], 0
	mov	DWORD PTR -164[rbp], 0
	mov	rax, QWORD PTR -392[rbp]
	lea	rsi, .LC206[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -392[rbp]
	lea	rsi, .LC207[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rsi, rax
	lea	rdi, -144[rbp]
	lea	rcx, -160[rbp]
	mov	rax, QWORD PTR -392[rbp]
	sub	rsp, 8
	lea	rdx, -168[rbp]
	push	rdx
	mov	r9, rdi
	mov	r8, rcx
	mov	ecx, 2
	mov	rdx, rbx
	mov	rdi, rax
	call	Z3_mk_constructor@PLT
	add	rsp, 16
	mov	QWORD PTR -352[rbp], rax
	mov	rax, QWORD PTR -360[rbp]
	mov	QWORD PTR -112[rbp], rax
	mov	rax, QWORD PTR -352[rbp]
	mov	QWORD PTR -104[rbp], rax
	lea	rdx, -128[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_constructor_list@PLT
	mov	QWORD PTR -344[rbp], rax
	lea	rdx, -112[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_constructor_list@PLT
	mov	QWORD PTR -336[rbp], rax
	mov	rax, QWORD PTR -344[rbp]
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -336[rbp]
	mov	QWORD PTR -56[rbp], rax
	lea	rsi, -64[rbp]
	lea	rcx, -144[rbp]
	lea	rdx, -48[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	r8, rsi
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_datatypes@PLT
	mov	rax, QWORD PTR -144[rbp]
	mov	QWORD PTR -328[rbp], rax
	mov	rax, QWORD PTR -136[rbp]
	mov	QWORD PTR -320[rbp], rax
	lea	rcx, -456[rbp]
	lea	rdx, -464[rbp]
	mov	rsi, QWORD PTR -376[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	r9d, 0
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 0
	mov	rdi, rax
	call	Z3_query_constructor@PLT
	lea	rdi, -96[rbp]
	lea	rcx, -440[rbp]
	lea	rdx, -448[rbp]
	mov	rsi, QWORD PTR -368[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	r9, rdi
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_query_constructor@PLT
	mov	rax, QWORD PTR -96[rbp]
	mov	QWORD PTR -312[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	QWORD PTR -304[rbp], rax
	lea	rcx, -424[rbp]
	lea	rdx, -432[rbp]
	mov	rsi, QWORD PTR -360[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	r9d, 0
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 0
	mov	rdi, rax
	call	Z3_query_constructor@PLT
	lea	rdi, -96[rbp]
	lea	rcx, -408[rbp]
	lea	rdx, -416[rbp]
	mov	rsi, QWORD PTR -352[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	r9, rdi
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_query_constructor@PLT
	mov	rax, QWORD PTR -96[rbp]
	mov	QWORD PTR -296[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	QWORD PTR -288[rbp], rax
	mov	rdx, QWORD PTR -344[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_del_constructor_list@PLT
	mov	rdx, QWORD PTR -336[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_del_constructor_list@PLT
	mov	rdx, QWORD PTR -376[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_del_constructor@PLT
	mov	rdx, QWORD PTR -368[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_del_constructor@PLT
	mov	rdx, QWORD PTR -360[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_del_constructor@PLT
	mov	rdx, QWORD PTR -352[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_del_constructor@PLT
	mov	rsi, QWORD PTR -464[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -280[rbp], rax
	mov	rsi, QWORD PTR -432[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -272[rbp], rax
	mov	rsi, QWORD PTR -448[rbp]
	mov	rcx, QWORD PTR -280[rbp]
	mov	rdx, QWORD PTR -272[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -264[rbp], rax
	mov	rsi, QWORD PTR -416[rbp]
	mov	rcx, QWORD PTR -280[rbp]
	mov	rdx, QWORD PTR -280[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -256[rbp], rax
	mov	rsi, QWORD PTR -416[rbp]
	mov	rcx, QWORD PTR -280[rbp]
	mov	rdx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -248[rbp], rax
	mov	rsi, QWORD PTR -416[rbp]
	mov	rcx, QWORD PTR -264[rbp]
	mov	rdx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -240[rbp], rax
	mov	rsi, QWORD PTR -416[rbp]
	mov	rcx, QWORD PTR -264[rbp]
	mov	rdx, QWORD PTR -280[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -232[rbp], rax
	mov	rsi, QWORD PTR -448[rbp]
	mov	rcx, QWORD PTR -280[rbp]
	mov	rdx, QWORD PTR -256[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -224[rbp], rax
	mov	rsi, QWORD PTR -448[rbp]
	mov	rcx, QWORD PTR -264[rbp]
	mov	rdx, QWORD PTR -256[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -216[rbp], rax
	mov	rdx, QWORD PTR -264[rbp]
	mov	rcx, QWORD PTR -280[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -384[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -256[rbp]
	mov	rcx, QWORD PTR -272[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -384[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -392[rbp]
	lea	rsi, .LC185[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -400[rbp], rax
	mov	rdx, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -392[rbp]
	lea	rsi, .LC86[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -208[rbp], rax
	mov	rdx, QWORD PTR -320[rbp]
	mov	rax, QWORD PTR -392[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -200[rbp], rax
	mov	rdx, QWORD PTR -320[rbp]
	mov	rax, QWORD PTR -392[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	mk_var
	mov	QWORD PTR -192[rbp], rax
	mov	rcx, QWORD PTR -400[rbp]
	mov	rsi, QWORD PTR -448[rbp]
	mov	rdx, QWORD PTR -200[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -184[rbp], rax
	mov	rsi, QWORD PTR -448[rbp]
	mov	rcx, QWORD PTR -208[rbp]
	mov	rdx, QWORD PTR -192[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rdi, rax
	call	mk_binary_app
	mov	QWORD PTR -176[rbp], rax
	mov	rcx, QWORD PTR -400[rbp]
	mov	rdx, QWORD PTR -208[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rbx, rax
	mov	rdx, QWORD PTR -176[rbp]
	mov	rcx, QWORD PTR -184[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rcx, rax
	mov	rax, QWORD PTR -392[rbp]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_implies@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -384[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -192[rbp]
	mov	rcx, QWORD PTR -200[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rbx, rax
	mov	rdx, QWORD PTR -176[rbp]
	mov	rcx, QWORD PTR -184[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rcx, rax
	mov	rax, QWORD PTR -392[rbp]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_implies@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -384[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rsi, QWORD PTR -456[rbp]
	lea	rdx, -400[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -80[rbp], rax
	mov	rsi, QWORD PTR -440[rbp]
	lea	rdx, -400[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -72[rbp], rax
	lea	rdx, -80[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_or@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -384[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rcx, QWORD PTR -400[rbp]
	mov	rdx, QWORD PTR -184[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -384[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -384[rbp]
	mov	rax, QWORD PTR -392[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -392[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L222
	call	__stack_chk_fail@PLT
.L222:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE61:
	.size	forest_example, .-forest_example
	.section	.rodata
.LC208:
	.string	"value"
.LC209:
	.string	"left"
.LC210:
	.string	"right"
.LC211:
	.string	"\nbinary_tree_example"
.LC212:
	.string	"binary_tree_example"
.LC213:
	.string	"is-nil"
.LC214:
	.string	"is-cons"
.LC215:
	.string	"node"
.LC216:
	.string	"BinTree"
	.text
	.globl	binary_tree_example
	.type	binary_tree_example, @function
binary_tree_example:
.LFB62:
	.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, 360
	.cfi_offset 3, -24
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -336[rbp], rax
	mov	rax, QWORD PTR -336[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -328[rbp], rax
	mov	rax, QWORD PTR -336[rbp]
	lea	rsi, .LC208[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -208[rbp], rax
	mov	rax, QWORD PTR -336[rbp]
	lea	rsi, .LC209[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -200[rbp], rax
	mov	rax, QWORD PTR -336[rbp]
	lea	rsi, .LC210[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -192[rbp], rax
	mov	rax, QWORD PTR -336[rbp]
	mov	rdi, rax
	call	Z3_mk_int_sort@PLT
	mov	QWORD PTR -176[rbp], rax
	mov	QWORD PTR -168[rbp], 0
	mov	QWORD PTR -160[rbp], 0
	mov	DWORD PTR -236[rbp], 0
	mov	DWORD PTR -232[rbp], 0
	mov	DWORD PTR -228[rbp], 0
	lea	rdi, .LC211[rip]
	call	puts@PLT
	lea	rdi, .LC212[rip]
	call	Z3_append_log@PLT
	mov	rax, QWORD PTR -336[rbp]
	lea	rsi, .LC213[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -336[rbp]
	lea	rsi, .LC192[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rsi, rax
	mov	rax, QWORD PTR -336[rbp]
	sub	rsp, 8
	push	0
	mov	r9d, 0
	mov	r8d, 0
	mov	ecx, 0
	mov	rdx, rbx
	mov	rdi, rax
	call	Z3_mk_constructor@PLT
	add	rsp, 16
	mov	QWORD PTR -320[rbp], rax
	mov	rax, QWORD PTR -336[rbp]
	lea	rsi, .LC214[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -336[rbp]
	lea	rsi, .LC215[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rsi, rax
	lea	rdi, -176[rbp]
	lea	rcx, -208[rbp]
	mov	rax, QWORD PTR -336[rbp]
	sub	rsp, 8
	lea	rdx, -236[rbp]
	push	rdx
	mov	r9, rdi
	mov	r8, rcx
	mov	ecx, 3
	mov	rdx, rbx
	mov	rdi, rax
	call	Z3_mk_constructor@PLT
	add	rsp, 16
	mov	QWORD PTR -312[rbp], rax
	mov	rax, QWORD PTR -320[rbp]
	mov	QWORD PTR -224[rbp], rax
	mov	rax, QWORD PTR -312[rbp]
	mov	QWORD PTR -216[rbp], rax
	mov	rax, QWORD PTR -336[rbp]
	lea	rsi, .LC216[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rsi, rax
	lea	rdx, -224[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_mk_datatype@PLT
	mov	QWORD PTR -304[rbp], rax
	lea	rcx, -360[rbp]
	lea	rdx, -368[rbp]
	mov	rsi, QWORD PTR -320[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	r9d, 0
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 0
	mov	rdi, rax
	call	Z3_query_constructor@PLT
	lea	rdi, -144[rbp]
	lea	rcx, -344[rbp]
	lea	rdx, -352[rbp]
	mov	rsi, QWORD PTR -312[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	r9, rdi
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 3
	mov	rdi, rax
	call	Z3_query_constructor@PLT
	mov	rax, QWORD PTR -144[rbp]
	mov	QWORD PTR -296[rbp], rax
	mov	rax, QWORD PTR -136[rbp]
	mov	QWORD PTR -288[rbp], rax
	mov	rax, QWORD PTR -128[rbp]
	mov	QWORD PTR -280[rbp], rax
	mov	rdx, QWORD PTR -320[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_del_constructor@PLT
	mov	rdx, QWORD PTR -312[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_del_constructor@PLT
	mov	rsi, QWORD PTR -368[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -272[rbp], rax
	mov	rax, QWORD PTR -336[rbp]
	mov	esi, 10
	mov	rdi, rax
	call	mk_int
	mov	QWORD PTR -112[rbp], rax
	mov	rax, QWORD PTR -272[rbp]
	mov	QWORD PTR -104[rbp], rax
	mov	rax, QWORD PTR -272[rbp]
	mov	QWORD PTR -96[rbp], rax
	mov	rsi, QWORD PTR -352[rbp]
	lea	rdx, -112[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	rcx, rdx
	mov	edx, 3
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -264[rbp], rax
	mov	rax, QWORD PTR -336[rbp]
	mov	esi, 30
	mov	rdi, rax
	call	mk_int
	mov	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -264[rbp]
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -272[rbp]
	mov	QWORD PTR -64[rbp], rax
	mov	rsi, QWORD PTR -352[rbp]
	lea	rdx, -80[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	rcx, rdx
	mov	edx, 3
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -256[rbp], rax
	mov	rax, QWORD PTR -336[rbp]
	mov	esi, 20
	mov	rdi, rax
	call	mk_int
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -256[rbp]
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -264[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	rsi, QWORD PTR -352[rbp]
	lea	rdx, -48[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	rcx, rdx
	mov	edx, 3
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -248[rbp], rax
	mov	rdx, QWORD PTR -264[rbp]
	mov	rcx, QWORD PTR -272[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -336[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -264[rbp]
	mov	rcx, QWORD PTR -288[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	rdx, rax
	mov	rcx, QWORD PTR -272[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -248[rbp]
	mov	rcx, QWORD PTR -280[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	rdx, rax
	mov	rcx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rcx, QWORD PTR -360[rbp]
	mov	rdx, QWORD PTR -256[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	rdx, rax
	mov	rax, QWORD PTR -336[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rax, QWORD PTR -336[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	mk_int
	mov	rbx, rax
	mov	rdx, QWORD PTR -256[rbp]
	mov	rcx, QWORD PTR -296[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	mk_unary_app
	mov	rcx, rax
	mov	rax, QWORD PTR -336[rbp]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_ge@PLT
	mov	rdx, rax
	mov	rsi, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	prove
	mov	rdx, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -336[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -336[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L224
	call	__stack_chk_fail@PLT
.L224:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE62:
	.size	binary_tree_example, .-binary_tree_example
	.section	.rodata
.LC217:
	.string	"PredA"
.LC218:
	.string	"PredB"
.LC219:
	.string	"PredC"
.LC220:
	.string	"PredD"
.LC221:
	.string	"P1"
.LC222:
	.string	"P2"
.LC223:
	.string	"P3"
.LC224:
	.string	"P4"
.LC225:
	.string	"\nunsat_core_and_proof_example"
.LC226:
	.string	"unsat_core_and_proof_example"
.LC227:
	.string	"proof: %s\n"
.LC228:
	.string	"\ncore:"
	.text
	.globl	unsat_core_and_proof_example
	.type	unsat_core_and_proof_example, @function
unsat_core_and_proof_example:
.LFB63:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 336
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, 0
	call	mk_proof_context
	mov	QWORD PTR -320[rbp], rax
	mov	rax, QWORD PTR -320[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -312[rbp], rax
	mov	rax, QWORD PTR -320[rbp]
	lea	rsi, .LC217[rip]
	mov	rdi, rax
	call	mk_bool_var
	mov	QWORD PTR -304[rbp], rax
	mov	rax, QWORD PTR -320[rbp]
	lea	rsi, .LC218[rip]
	mov	rdi, rax
	call	mk_bool_var
	mov	QWORD PTR -296[rbp], rax
	mov	rax, QWORD PTR -320[rbp]
	lea	rsi, .LC219[rip]
	mov	rdi, rax
	call	mk_bool_var
	mov	QWORD PTR -288[rbp], rax
	mov	rax, QWORD PTR -320[rbp]
	lea	rsi, .LC220[rip]
	mov	rdi, rax
	call	mk_bool_var
	mov	QWORD PTR -280[rbp], rax
	mov	rax, QWORD PTR -320[rbp]
	lea	rsi, .LC221[rip]
	mov	rdi, rax
	call	mk_bool_var
	mov	QWORD PTR -272[rbp], rax
	mov	rax, QWORD PTR -320[rbp]
	lea	rsi, .LC222[rip]
	mov	rdi, rax
	call	mk_bool_var
	mov	QWORD PTR -264[rbp], rax
	mov	rax, QWORD PTR -320[rbp]
	lea	rsi, .LC223[rip]
	mov	rdi, rax
	call	mk_bool_var
	mov	QWORD PTR -256[rbp], rax
	mov	rax, QWORD PTR -320[rbp]
	lea	rsi, .LC224[rip]
	mov	rdi, rax
	call	mk_bool_var
	mov	QWORD PTR -248[rbp], rax
	mov	rdx, QWORD PTR -272[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -40[rbp], rax
	mov	rdx, QWORD PTR -256[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -248[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -304[rbp]
	mov	QWORD PTR -112[rbp], rax
	mov	rax, QWORD PTR -296[rbp]
	mov	QWORD PTR -104[rbp], rax
	mov	rax, QWORD PTR -288[rbp]
	mov	QWORD PTR -96[rbp], rax
	lea	rdx, -112[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	esi, 3
	mov	rdi, rax
	call	Z3_mk_and@PLT
	mov	QWORD PTR -240[rbp], rax
	mov	rax, QWORD PTR -304[rbp]
	mov	QWORD PTR -80[rbp], rax
	mov	rdx, QWORD PTR -296[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -288[rbp]
	mov	QWORD PTR -64[rbp], rax
	lea	rdx, -80[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	esi, 3
	mov	rdi, rax
	call	Z3_mk_and@PLT
	mov	QWORD PTR -232[rbp], rax
	mov	rdx, QWORD PTR -304[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -192[rbp], rax
	mov	rdx, QWORD PTR -288[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -184[rbp], rax
	lea	rdx, -192[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_or@PLT
	mov	QWORD PTR -224[rbp], rax
	mov	rax, QWORD PTR -280[rbp]
	mov	QWORD PTR -216[rbp], rax
	mov	rax, QWORD PTR -240[rbp]
	mov	QWORD PTR -176[rbp], rax
	mov	rax, QWORD PTR -272[rbp]
	mov	QWORD PTR -168[rbp], rax
	mov	rax, QWORD PTR -232[rbp]
	mov	QWORD PTR -160[rbp], rax
	mov	rax, QWORD PTR -264[rbp]
	mov	QWORD PTR -152[rbp], rax
	mov	rax, QWORD PTR -224[rbp]
	mov	QWORD PTR -144[rbp], rax
	mov	rax, QWORD PTR -256[rbp]
	mov	QWORD PTR -136[rbp], rax
	mov	rax, QWORD PTR -216[rbp]
	mov	QWORD PTR -128[rbp], rax
	mov	rax, QWORD PTR -248[rbp]
	mov	QWORD PTR -120[rbp], rax
	mov	QWORD PTR -328[rbp], 0
	lea	rdi, .LC225[rip]
	call	puts@PLT
	lea	rdi, .LC226[rip]
	call	Z3_append_log@PLT
	lea	rdx, -176[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_or@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -312[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	lea	rdx, -160[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_or@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -312[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	lea	rdx, -144[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_or@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -312[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	lea	rdx, -128[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_or@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -312[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	lea	rdx, -48[rbp]
	mov	rsi, QWORD PTR -312[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rcx, rdx
	mov	edx, 4
	mov	rdi, rax
	call	Z3_solver_check_assumptions@PLT
	mov	DWORD PTR -332[rbp], eax
	cmp	DWORD PTR -332[rbp], 1
	je	.L226
	cmp	DWORD PTR -332[rbp], 1
	jg	.L227
	cmp	DWORD PTR -332[rbp], -1
	je	.L228
	cmp	DWORD PTR -332[rbp], 0
	je	.L229
	jmp	.L227
.L228:
	mov	rdx, QWORD PTR -312[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_get_unsat_core@PLT
	mov	QWORD PTR -208[rbp], rax
	mov	rdx, QWORD PTR -312[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_get_proof@PLT
	mov	QWORD PTR -200[rbp], rax
	lea	rdi, .LC7[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -200[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC227[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC228[rip]
	call	puts@PLT
	mov	DWORD PTR -336[rbp], 0
	jmp	.L230
.L231:
	mov	edx, DWORD PTR -336[rbp]
	mov	rcx, QWORD PTR -208[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_ast_vector_get@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rdi, rax
	call	puts@PLT
	add	DWORD PTR -336[rbp], 1
.L230:
	mov	rdx, QWORD PTR -208[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_vector_size@PLT
	cmp	DWORD PTR -336[rbp], eax
	jb	.L231
	mov	edi, 10
	call	putchar@PLT
	jmp	.L227
.L229:
	lea	rdi, .LC8[rip]
	call	puts@PLT
	lea	rdi, .LC42[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -312[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_get_model@PLT
	mov	QWORD PTR -328[rbp], rax
	cmp	QWORD PTR -328[rbp], 0
	je	.L232
	mov	rdx, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_inc_ref@PLT
.L232:
	mov	rcx, QWORD PTR stdout[rip]
	mov	rdx, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_model
	jmp	.L227
.L226:
	lea	rdi, .LC43[rip]
	call	puts@PLT
	mov	rdx, QWORD PTR -312[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_get_model@PLT
	mov	QWORD PTR -328[rbp], rax
	cmp	QWORD PTR -328[rbp], 0
	je	.L233
	mov	rdx, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_inc_ref@PLT
.L233:
	mov	rcx, QWORD PTR stdout[rip]
	mov	rdx, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	display_model
	nop
.L227:
	cmp	QWORD PTR -328[rbp], 0
	je	.L234
	mov	rdx, QWORD PTR -328[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_dec_ref@PLT
.L234:
	mov	rdx, QWORD PTR -312[rbp]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -320[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L235
	call	__stack_chk_fail@PLT
.L235:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE63:
	.size	unsat_core_and_proof_example, .-unsat_core_and_proof_example
	.globl	mk_ext_context
	.type	mk_ext_context, @function
mk_ext_context:
.LFB64:
	.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	edi, 9240
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	eax, 0
	call	mk_context
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rdx], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	mk_solver
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rdx], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 9232[rax], 0
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE64:
	.size	mk_ext_context, .-mk_ext_context
	.globl	del_ext_context
	.type	del_ext_context, @function
del_ext_context:
.LFB65:
	.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
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	Z3_del_context@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE65:
	.size	del_ext_context, .-del_ext_context
	.section	.rodata
	.align 8
.LC229:
	.string	"maximum number of retractable constraints was exceeded."
.LC230:
	.string	"k"
	.text
	.globl	assert_retractable_cnstr
	.type	assert_retractable_cnstr, @function
assert_retractable_cnstr:
.LFB66:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -72[rbp], rdi
	mov	QWORD PTR -80[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -72[rbp]
	mov	eax, DWORD PTR 9232[rax]
	cmp	eax, 1024
	jne	.L240
	lea	rdi, .LC229[rip]
	call	exitf
.L240:
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	Z3_mk_bool_sort@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -48[rbp]
	lea	rsi, .LC230[rip]
	mov	rdi, rax
	call	Z3_mk_fresh_const@PLT
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	eax, DWORD PTR 9232[rax]
	mov	DWORD PTR -52[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, DWORD PTR -52[rbp]
	lea	rcx, 2[rdx]
	mov	rdx, QWORD PTR -40[rbp]
	mov	QWORD PTR [rax+rcx*8], rdx
	mov	rdx, QWORD PTR -72[rbp]
	mov	eax, DWORD PTR -52[rbp]
	mov	BYTE PTR 8208[rdx+rax], 0
	mov	rax, QWORD PTR -72[rbp]
	mov	eax, DWORD PTR 9232[rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -72[rbp]
	mov	DWORD PTR 9232[rax], edx
	mov	rax, QWORD PTR -80[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR [rax]
	lea	rdx, -32[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_or@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -72[rbp]
	mov	rcx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	eax, DWORD PTR -52[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L242
	call	__stack_chk_fail@PLT
.L242:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE66:
	.size	assert_retractable_cnstr, .-assert_retractable_cnstr
	.section	.rodata
.LC231:
	.string	"invalid constraint id."
	.text
	.globl	retract_cnstr
	.type	retract_cnstr, @function
retract_cnstr:
.LFB67:
	.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
	mov	DWORD PTR -12[rbp], esi
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 9232[rax]
	cmp	DWORD PTR -12[rbp], eax
	jb	.L244
	lea	rdi, .LC231[rip]
	call	exitf
.L244:
	mov	rdx, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR -12[rbp]
	mov	BYTE PTR 8208[rdx+rax], 1
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE67:
	.size	retract_cnstr, .-retract_cnstr
	.globl	reassert_cnstr
	.type	reassert_cnstr, @function
reassert_cnstr:
.LFB68:
	.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
	mov	DWORD PTR -12[rbp], esi
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 9232[rax]
	cmp	DWORD PTR -12[rbp], eax
	jb	.L246
	lea	rdi, .LC231[rip]
	call	exitf
.L246:
	mov	rdx, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR -12[rbp]
	mov	BYTE PTR 8208[rdx+rax], 0
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE68:
	.size	reassert_cnstr, .-reassert_cnstr
	.section	.rodata
.LC232:
	.string	"unsat core: "
.LC233:
	.string	"%d "
	.align 8
.LC234:
	.string	"bug in Z3, the core contains something that is not an assumption."
	.text
	.globl	ext_check
	.type	ext_check, @function
ext_check:
.LFB69:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 64
	mov	QWORD PTR -8248[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -8236[rbp], 0
	mov	DWORD PTR -8232[rbp], 0
	jmp	.L248
.L250:
	mov	rdx, QWORD PTR -8248[rbp]
	mov	eax, DWORD PTR -8232[rbp]
	movzx	eax, BYTE PTR 8208[rdx+rax]
	xor	eax, 1
	test	al, al
	je	.L249
	mov	rax, QWORD PTR -8248[rbp]
	mov	edx, DWORD PTR -8232[rbp]
	add	rdx, 2
	mov	rdx, QWORD PTR [rax+rdx*8]
	mov	eax, DWORD PTR -8236[rbp]
	mov	QWORD PTR -8208[rbp+rax*8], rdx
	add	DWORD PTR -8236[rbp], 1
.L249:
	add	DWORD PTR -8232[rbp], 1
.L248:
	mov	rax, QWORD PTR -8248[rbp]
	mov	eax, DWORD PTR 9232[rax]
	cmp	DWORD PTR -8232[rbp], eax
	jb	.L250
	mov	rax, QWORD PTR -8248[rbp]
	mov	rsi, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -8248[rbp]
	mov	rax, QWORD PTR [rax]
	lea	rcx, -8208[rbp]
	mov	edx, DWORD PTR -8236[rbp]
	mov	rdi, rax
	call	Z3_solver_check_assumptions@PLT
	mov	DWORD PTR -8224[rbp], eax
	cmp	DWORD PTR -8224[rbp], -1
	jne	.L251
	lea	rdi, .LC232[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -8248[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -8248[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_get_unsat_core@PLT
	mov	QWORD PTR -8216[rbp], rax
	mov	rax, QWORD PTR -8248[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -8216[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_vector_size@PLT
	mov	DWORD PTR -8220[rbp], eax
	mov	DWORD PTR -8232[rbp], 0
	jmp	.L252
.L258:
	mov	DWORD PTR -8228[rbp], 0
	jmp	.L253
.L256:
	mov	rax, QWORD PTR -8248[rbp]
	mov	rax, QWORD PTR [rax]
	mov	edx, DWORD PTR -8232[rbp]
	mov	rcx, QWORD PTR -8216[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_ast_vector_get@PLT
	mov	rdx, QWORD PTR -8248[rbp]
	mov	ecx, DWORD PTR -8228[rbp]
	add	rcx, 2
	mov	rdx, QWORD PTR [rdx+rcx*8]
	cmp	rax, rdx
	jne	.L254
	mov	eax, DWORD PTR -8228[rbp]
	mov	esi, eax
	lea	rdi, .LC233[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L255
.L254:
	add	DWORD PTR -8228[rbp], 1
.L253:
	mov	rax, QWORD PTR -8248[rbp]
	mov	eax, DWORD PTR 9232[rax]
	cmp	DWORD PTR -8228[rbp], eax
	jb	.L256
.L255:
	mov	rax, QWORD PTR -8248[rbp]
	mov	eax, DWORD PTR 9232[rax]
	cmp	DWORD PTR -8228[rbp], eax
	jne	.L257
	lea	rdi, .LC234[rip]
	call	exitf
.L257:
	add	DWORD PTR -8232[rbp], 1
.L252:
	mov	eax, DWORD PTR -8232[rbp]
	cmp	eax, DWORD PTR -8220[rbp]
	jb	.L258
	mov	edi, 10
	call	putchar@PLT
.L251:
	mov	eax, DWORD PTR -8224[rbp]
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L260
	call	__stack_chk_fail@PLT
.L260:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE69:
	.size	ext_check, .-ext_check
	.section	.rodata
.LC235:
	.string	"\nincremental_example1"
.LC236:
	.string	"incremental_example1"
.LC237:
	.string	"bug in Z3"
	.text
	.globl	incremental_example1
	.type	incremental_example1, @function
incremental_example1:
.LFB70:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	eax, 0
	call	mk_ext_context
	mov	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -48[rbp], rax
	lea	rdi, .LC235[rip]
	call	puts@PLT
	lea	rdi, .LC236[rip]
	call	Z3_append_log@PLT
	mov	rax, QWORD PTR -48[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	lea	rsi, .LC69[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	mk_int
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	mk_int
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rcx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_lt@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	assert_retractable_cnstr
	mov	DWORD PTR -76[rbp], eax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	assert_retractable_cnstr
	mov	DWORD PTR -72[rbp], eax
	mov	rdx, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_gt@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	assert_retractable_cnstr
	mov	DWORD PTR -68[rbp], eax
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_lt@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	assert_retractable_cnstr
	mov	DWORD PTR -64[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	ext_check
	mov	DWORD PTR -60[rbp], eax
	cmp	DWORD PTR -60[rbp], -1
	je	.L262
	lea	rdi, .LC237[rip]
	call	exitf
.L262:
	lea	rdi, .LC7[rip]
	call	puts@PLT
	mov	edx, DWORD PTR -64[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	retract_cnstr
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	ext_check
	mov	DWORD PTR -60[rbp], eax
	cmp	DWORD PTR -60[rbp], 1
	je	.L263
	lea	rdi, .LC237[rip]
	call	exitf
.L263:
	lea	rdi, .LC43[rip]
	call	puts@PLT
	mov	edx, DWORD PTR -64[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	reassert_cnstr
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	ext_check
	mov	DWORD PTR -60[rbp], eax
	cmp	DWORD PTR -60[rbp], -1
	je	.L264
	lea	rdi, .LC237[rip]
	call	exitf
.L264:
	lea	rdi, .LC7[rip]
	call	puts@PLT
	mov	edx, DWORD PTR -72[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	retract_cnstr
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	ext_check
	mov	DWORD PTR -60[rbp], eax
	cmp	DWORD PTR -60[rbp], -1
	je	.L265
	lea	rdi, .LC237[rip]
	call	exitf
.L265:
	lea	rdi, .LC7[rip]
	call	puts@PLT
	mov	edx, DWORD PTR -68[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	retract_cnstr
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	ext_check
	mov	DWORD PTR -60[rbp], eax
	cmp	DWORD PTR -60[rbp], 1
	je	.L266
	lea	rdi, .LC237[rip]
	call	exitf
.L266:
	lea	rdi, .LC43[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	del_ext_context
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE70:
	.size	incremental_example1, .-incremental_example1
	.section	.rodata
.LC238:
	.string	"\nreference_counter_example"
.LC239:
	.string	"reference_counter_example"
	.text
	.globl	reference_counter_example
	.type	reference_counter_example, @function
reference_counter_example:
.LFB71:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	lea	rdi, .LC238[rip]
	call	puts@PLT
	lea	rdi, .LC239[rip]
	call	Z3_append_log@PLT
	call	Z3_mk_config@PLT
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, .LC4[rip]
	lea	rsi, .LC5[rip]
	mov	rdi, rax
	call	Z3_set_param_value@PLT
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	Z3_mk_context_rc@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	Z3_del_config@PLT
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_inc_ref@PLT
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	Z3_mk_bool_sort@PLT
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_sort_to_ast@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_inc_ref@PLT
	mov	rax, QWORD PTR -64[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -40[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rcx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_const@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_inc_ref@PLT
	mov	rax, QWORD PTR -64[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_const@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_inc_ref@PLT
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_sort_to_ast@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_dec_ref@PLT
	mov	rdx, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_xor@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_inc_ref@PLT
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_dec_ref@PLT
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_dec_ref@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_dec_ref@PLT
	lea	rdi, .LC56[rip]
	call	puts@PLT
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	check
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_push@PLT
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_pop@PLT
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_dec_ref@PLT
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE71:
	.size	reference_counter_example, .-reference_counter_example
	.section	.rodata
.LC240:
	.string	"\nsmt2parser_example"
.LC241:
	.string	"smt2parser_example"
	.align 8
.LC242:
	.string	"(declare-fun a () (_ BitVec 8)) (assert (bvuge a #x10)) (assert (bvule a #xf0))"
.LC243:
	.string	"formulas: %s\n"
	.text
	.globl	smt2parser_example
	.type	smt2parser_example, @function
smt2parser_example:
.LFB72:
	.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
	lea	rdi, .LC240[rip]
	call	puts@PLT
	lea	rdi, .LC241[rip]
	call	Z3_append_log@PLT
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	push	0
	push	0
	mov	r9d, 0
	mov	r8d, 0
	mov	ecx, 0
	mov	edx, 0
	lea	rsi, .LC242[rip]
	mov	rdi, rax
	call	Z3_parse_smtlib2_string@PLT
	add	rsp, 16
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_vector_inc_ref@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_vector_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC243[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_vector_dec_ref@PLT
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE72:
	.size	smt2parser_example, .-smt2parser_example
	.section	.rodata
.LC244:
	.string	"\nsubstitute_example"
.LC245:
	.string	"substitute_example"
.LC246:
	.string	"substitution result: %s\n"
	.text
	.globl	substitute_example
	.type	substitute_example, @function
substitute_example:
.LFB73:
	.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, 152
	.cfi_offset 3, -24
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	lea	rdi, .LC244[rip]
	call	puts@PLT
	lea	rdi, .LC245[rip]
	call	Z3_append_log@PLT
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -144[rbp], rax
	mov	rax, QWORD PTR -144[rbp]
	mov	rdi, rax
	call	Z3_mk_int_sort@PLT
	mov	QWORD PTR -160[rbp], rax
	mov	rax, QWORD PTR -144[rbp]
	lea	rsi, .LC154[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -152[rbp], rax
	mov	rax, QWORD PTR -144[rbp]
	lea	rsi, .LC155[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -136[rbp], rax
	mov	rax, QWORD PTR -160[rbp]
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -160[rbp]
	mov	QWORD PTR -40[rbp], rax
	mov	rbx, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR -144[rbp]
	lea	rsi, .LC21[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rsi, rax
	lea	rdx, -48[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	r8, rbx
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_mk_func_decl@PLT
	mov	QWORD PTR -128[rbp], rax
	mov	rbx, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR -144[rbp]
	lea	rsi, .LC64[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rsi, rax
	lea	rdx, -160[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	r8, rbx
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_func_decl@PLT
	mov	QWORD PTR -120[rbp], rax
	mov	rax, QWORD PTR -152[rbp]
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -136[rbp]
	mov	QWORD PTR -40[rbp], rax
	lea	rdx, -48[rbp]
	mov	rsi, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -112[rbp], rax
	lea	rdx, -152[rbp]
	mov	rsi, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -104[rbp], rax
	mov	rax, QWORD PTR -112[rbp]
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -104[rbp]
	mov	QWORD PTR -40[rbp], rax
	lea	rdx, -48[rbp]
	mov	rsi, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -96[rbp], rax
	mov	rdx, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR -144[rbp]
	lea	rsi, .LC128[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	QWORD PTR -88[rbp], rax
	mov	rdx, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR -144[rbp]
	lea	rsi, .LC117[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -136[rbp]
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -104[rbp]
	mov	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -80[rbp]
	mov	QWORD PTR -40[rbp], rax
	lea	rcx, -48[rbp]
	lea	rdx, -64[rbp]
	mov	rsi, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_substitute@PLT
	mov	QWORD PTR -72[rbp], rax
	mov	rdx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC246[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -144[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L270
	call	__stack_chk_fail@PLT
.L270:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE73:
	.size	substitute_example, .-substitute_example
	.section	.rodata
.LC247:
	.string	"\nsubstitute_vars_example"
.LC248:
	.string	"substitute_vars_example"
	.text
	.globl	substitute_vars_example
	.type	substitute_vars_example, @function
substitute_vars_example:
.LFB74:
	.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, 136
	.cfi_offset 3, -24
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	lea	rdi, .LC247[rip]
	call	puts@PLT
	lea	rdi, .LC248[rip]
	call	Z3_append_log@PLT
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -128[rbp], rax
	mov	rax, QWORD PTR -128[rbp]
	mov	rdi, rax
	call	Z3_mk_int_sort@PLT
	mov	QWORD PTR -144[rbp], rax
	mov	rdx, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -128[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	Z3_mk_bound@PLT
	mov	QWORD PTR -120[rbp], rax
	mov	rdx, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -128[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	Z3_mk_bound@PLT
	mov	QWORD PTR -112[rbp], rax
	mov	rax, QWORD PTR -144[rbp]
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -144[rbp]
	mov	QWORD PTR -40[rbp], rax
	mov	rbx, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -128[rbp]
	lea	rsi, .LC21[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rsi, rax
	lea	rdx, -48[rbp]
	mov	rax, QWORD PTR -128[rbp]
	mov	r8, rbx
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_mk_func_decl@PLT
	mov	QWORD PTR -104[rbp], rax
	mov	rbx, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -128[rbp]
	lea	rsi, .LC64[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	rsi, rax
	lea	rdx, -144[rbp]
	mov	rax, QWORD PTR -128[rbp]
	mov	r8, rbx
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_func_decl@PLT
	mov	QWORD PTR -96[rbp], rax
	mov	rax, QWORD PTR -120[rbp]
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -112[rbp]
	mov	QWORD PTR -40[rbp], rax
	lea	rdx, -48[rbp]
	mov	rsi, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -128[rbp]
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -88[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -120[rbp]
	mov	QWORD PTR -40[rbp], rax
	lea	rdx, -48[rbp]
	mov	rsi, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR -128[rbp]
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -128[rbp]
	lea	rsi, .LC154[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -128[rbp]
	lea	rsi, .LC155[rip]
	mov	rdi, rax
	call	mk_int_var
	mov	QWORD PTR -136[rbp], rax
	lea	rdx, -136[rbp]
	mov	rsi, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR -128[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	mov	QWORD PTR -40[rbp], rax
	lea	rdx, -48[rbp]
	mov	rsi, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -128[rbp]
	mov	rcx, rdx
	mov	edx, 2
	mov	rdi, rax
	call	Z3_substitute_vars@PLT
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -128[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC246[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -128[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L272
	call	__stack_chk_fail@PLT
.L272:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE74:
	.size	substitute_vars_example, .-substitute_vars_example
	.section	.rodata
.LC249:
	.string	"\nFPA-example"
.LC250:
	.string	"FPA-example"
.LC251:
	.string	"rm"
.LC253:
	.string	"x_plus_y"
.LC254:
	.string	"c4: %s\n"
.LC255:
	.string	"3377699720527872"
.LC256:
	.string	"1025"
.LC257:
	.string	"4619567317775286272"
.LC258:
	.string	"1.75"
.LC259:
	.string	"2"
.LC260:
	.string	"7.0"
.LC261:
	.string	"c5: %s\n"
	.text
	.globl	fpa_example
	.type	fpa_example, @function
fpa_example:
.LFB75:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r13
	push	r12
	push	rbx
	sub	rsp, 264
	.cfi_offset 13, -24
	.cfi_offset 12, -32
	.cfi_offset 3, -40
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -40[rbp], rax
	xor	eax, eax
	lea	rdi, .LC249[rip]
	call	puts@PLT
	lea	rdi, .LC250[rip]
	call	Z3_append_log@PLT
	call	Z3_mk_config@PLT
	mov	QWORD PTR -280[rbp], rax
	mov	rax, QWORD PTR -280[rbp]
	mov	rdi, rax
	call	Z3_mk_context@PLT
	mov	QWORD PTR -272[rbp], rax
	mov	rax, QWORD PTR -272[rbp]
	mov	rdi, rax
	call	mk_solver
	mov	QWORD PTR -264[rbp], rax
	mov	rax, QWORD PTR -280[rbp]
	mov	rdi, rax
	call	Z3_del_config@PLT
	mov	rax, QWORD PTR -272[rbp]
	mov	edx, 53
	mov	esi, 11
	mov	rdi, rax
	call	Z3_mk_fpa_sort@PLT
	mov	QWORD PTR -256[rbp], rax
	mov	rax, QWORD PTR -272[rbp]
	mov	rdi, rax
	call	Z3_mk_fpa_rounding_mode_sort@PLT
	mov	QWORD PTR -248[rbp], rax
	mov	rax, QWORD PTR -272[rbp]
	lea	rsi, .LC251[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -240[rbp], rax
	mov	rdx, QWORD PTR -248[rbp]
	mov	rcx, QWORD PTR -240[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_const@PLT
	mov	QWORD PTR -232[rbp], rax
	mov	rax, QWORD PTR -272[rbp]
	lea	rsi, .LC54[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -224[rbp], rax
	mov	rax, QWORD PTR -272[rbp]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -216[rbp], rax
	mov	rdx, QWORD PTR -256[rbp]
	mov	rcx, QWORD PTR -224[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_const@PLT
	mov	QWORD PTR -208[rbp], rax
	mov	rdx, QWORD PTR -256[rbp]
	mov	rcx, QWORD PTR -216[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_const@PLT
	mov	QWORD PTR -200[rbp], rax
	mov	rcx, QWORD PTR -256[rbp]
	mov	rdx, QWORD PTR .LC252[rip]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rcx
	movq	xmm0, rdx
	mov	rdi, rax
	call	Z3_mk_fpa_numeral_double@PLT
	mov	QWORD PTR -192[rbp], rax
	mov	rax, QWORD PTR -272[rbp]
	lea	rsi, .LC253[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -184[rbp], rax
	mov	rdx, QWORD PTR -256[rbp]
	mov	rcx, QWORD PTR -184[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_const@PLT
	mov	QWORD PTR -176[rbp], rax
	mov	rcx, QWORD PTR -200[rbp]
	mov	rdx, QWORD PTR -208[rbp]
	mov	rsi, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rdi, rax
	call	Z3_mk_fpa_add@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -176[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -168[rbp], rax
	mov	rax, QWORD PTR -168[rbp]
	mov	QWORD PTR -128[rbp], rax
	mov	rdx, QWORD PTR -192[rbp]
	mov	rcx, QWORD PTR -176[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -120[rbp], rax
	lea	rdx, -128[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_and@PLT
	mov	QWORD PTR -160[rbp], rax
	mov	rax, QWORD PTR -160[rbp]
	mov	QWORD PTR -112[rbp], rax
	mov	rax, QWORD PTR -272[rbp]
	mov	rdi, rax
	call	Z3_mk_fpa_rtz@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -104[rbp], rax
	lea	rdx, -112[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_and@PLT
	mov	QWORD PTR -152[rbp], rax
	mov	rdx, QWORD PTR -200[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_fpa_is_zero@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -96[rbp], rax
	mov	rdx, QWORD PTR -200[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_fpa_is_nan@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -88[rbp], rax
	mov	rdx, QWORD PTR -200[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_fpa_is_infinite@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_not@PLT
	mov	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -152[rbp]
	mov	QWORD PTR -64[rbp], rax
	lea	rdx, -96[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	esi, 3
	mov	rdi, rax
	call	Z3_mk_and@PLT
	mov	QWORD PTR -56[rbp], rax
	lea	rdx, -64[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_and@PLT
	mov	QWORD PTR -144[rbp], rax
	mov	rdx, QWORD PTR -144[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC254[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_push@PLT
	mov	rdx, QWORD PTR -144[rbp]
	mov	rcx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rcx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	check
	mov	rcx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_pop@PLT
	mov	rdx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_solver_push@PLT
	mov	rax, QWORD PTR -272[rbp]
	mov	esi, 52
	mov	rdi, rax
	call	Z3_mk_bv_sort@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -272[rbp]
	lea	rsi, .LC255[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	r12, rax
	mov	rax, QWORD PTR -272[rbp]
	mov	esi, 11
	mov	rdi, rax
	call	Z3_mk_bv_sort@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -272[rbp]
	lea	rsi, .LC256[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -272[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	Z3_mk_bv_sort@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -272[rbp]
	lea	rsi, .LC128[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	rsi, rax
	mov	rax, QWORD PTR -272[rbp]
	mov	rcx, r12
	mov	rdx, rbx
	mov	rdi, rax
	call	Z3_mk_fpa_fp@PLT
	mov	QWORD PTR -168[rbp], rax
	mov	rax, QWORD PTR -272[rbp]
	mov	edx, 53
	mov	esi, 11
	mov	rdi, rax
	call	Z3_mk_fpa_sort@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -272[rbp]
	mov	esi, 64
	mov	rdi, rax
	call	Z3_mk_bv_sort@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -272[rbp]
	lea	rsi, .LC257[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	rcx, rax
	mov	rax, QWORD PTR -272[rbp]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_fpa_to_fp_bv@PLT
	mov	QWORD PTR -160[rbp], rax
	mov	rax, QWORD PTR -272[rbp]
	mov	edx, 53
	mov	esi, 11
	mov	rdi, rax
	call	Z3_mk_fpa_sort@PLT
	mov	r13, rax
	mov	rax, QWORD PTR -272[rbp]
	mov	rdi, rax
	call	Z3_mk_real_sort@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -272[rbp]
	lea	rsi, .LC258[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	r12, rax
	mov	rax, QWORD PTR -272[rbp]
	mov	rdi, rax
	call	Z3_mk_int_sort@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -272[rbp]
	lea	rsi, .LC259[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -272[rbp]
	mov	rdi, rax
	call	Z3_mk_fpa_rtz@PLT
	mov	rsi, rax
	mov	rax, QWORD PTR -272[rbp]
	mov	r8, r13
	mov	rcx, r12
	mov	rdx, rbx
	mov	rdi, rax
	call	Z3_mk_fpa_to_fp_int_real@PLT
	mov	QWORD PTR -152[rbp], rax
	mov	rax, QWORD PTR -272[rbp]
	mov	edx, 53
	mov	esi, 11
	mov	rdi, rax
	call	Z3_mk_fpa_sort@PLT
	mov	r12, rax
	mov	rax, QWORD PTR -272[rbp]
	mov	rdi, rax
	call	Z3_mk_real_sort@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -272[rbp]
	lea	rsi, .LC260[rip]
	mov	rdi, rax
	call	Z3_mk_numeral@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -272[rbp]
	mov	rdi, rax
	call	Z3_mk_fpa_rtz@PLT
	mov	rsi, rax
	mov	rax, QWORD PTR -272[rbp]
	mov	rcx, r12
	mov	rdx, rbx
	mov	rdi, rax
	call	Z3_mk_fpa_to_fp_real@PLT
	mov	QWORD PTR -144[rbp], rax
	mov	rdx, QWORD PTR -160[rbp]
	mov	rcx, QWORD PTR -168[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	rdx, QWORD PTR -152[rbp]
	mov	rcx, QWORD PTR -168[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -144[rbp]
	mov	rcx, QWORD PTR -168[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_eq@PLT
	mov	QWORD PTR -48[rbp], rax
	lea	rdx, -64[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	esi, 3
	mov	rdi, rax
	call	Z3_mk_and@PLT
	mov	QWORD PTR -136[rbp], rax
	mov	rdx, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC261[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR -136[rbp]
	mov	rcx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_assert@PLT
	mov	rcx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	check
	mov	rcx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_solver_pop@PLT
	mov	rdx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	del_solver
	mov	rax, QWORD PTR -272[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -40[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L274
	call	__stack_chk_fail@PLT
.L274:
	add	rsp, 264
	pop	rbx
	pop	r12
	pop	r13
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE75:
	.size	fpa_example, .-fpa_example
	.section	.rodata
.LC262:
	.string	"\nmk_model_example"
.LC263:
	.string	"c"
.LC264:
	.string	""
.LC265:
	.string	"Model:\n%s\n"
	.align 8
.LC266:
	.string	"Found interpretation for \"%s\"\n"
.LC267:
	.string	"Missing interpretation"
.LC268:
	.string	"Failed to evaluate model"
	.align 8
.LC269:
	.string	"Failed to get integer value for a+b"
.LC270:
	.string	"Evaluated a + b = %d\n"
	.align 8
.LC271:
	.string	"a+b did not evaluate to expected value"
	.align 8
.LC272:
	.string	"Failed to get integer value for c[0] + c[1] + c[2]"
	.align 8
.LC273:
	.string	"Evaluated c[0] + c[1] + c[2] = %d\n"
	.align 8
.LC274:
	.string	"c[0] + c[1] + c[2] did not evaluate to expected value"
	.text
	.globl	mk_model_example
	.type	mk_model_example, @function
mk_model_example:
.LFB76:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 304
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdi, .LC262[rip]
	call	puts@PLT
	mov	eax, 0
	call	mk_context
	mov	QWORD PTR -280[rbp], rax
	mov	rax, QWORD PTR -280[rbp]
	mov	rdi, rax
	call	Z3_mk_model@PLT
	mov	QWORD PTR -272[rbp], rax
	mov	rdx, QWORD PTR -272[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_inc_ref@PLT
	mov	rax, QWORD PTR -280[rbp]
	mov	rdi, rax
	call	Z3_mk_int_sort@PLT
	mov	QWORD PTR -264[rbp], rax
	mov	rax, QWORD PTR -280[rbp]
	lea	rsi, .LC154[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -256[rbp], rax
	mov	rdx, QWORD PTR -264[rbp]
	mov	rsi, QWORD PTR -256[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	r8, rdx
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	Z3_mk_func_decl@PLT
	mov	QWORD PTR -248[rbp], rax
	mov	rsi, QWORD PTR -248[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -240[rbp], rax
	mov	rax, QWORD PTR -280[rbp]
	lea	rsi, .LC155[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -232[rbp], rax
	mov	rdx, QWORD PTR -264[rbp]
	mov	rsi, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	r8, rdx
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	Z3_mk_func_decl@PLT
	mov	QWORD PTR -224[rbp], rax
	mov	rsi, QWORD PTR -224[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -216[rbp], rax
	mov	rax, QWORD PTR -280[rbp]
	lea	rsi, .LC263[rip]
	mov	rdi, rax
	call	Z3_mk_string_symbol@PLT
	mov	QWORD PTR -208[rbp], rax
	mov	rdx, QWORD PTR -264[rbp]
	mov	rcx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_array_sort@PLT
	mov	QWORD PTR -200[rbp], rax
	mov	rdx, QWORD PTR -200[rbp]
	mov	rsi, QWORD PTR -208[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	r8, rdx
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	Z3_mk_func_decl@PLT
	mov	QWORD PTR -192[rbp], rax
	mov	rsi, QWORD PTR -192[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	Z3_mk_app@PLT
	mov	QWORD PTR -184[rbp], rax
	mov	rdx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	Z3_mk_int@PLT
	mov	QWORD PTR -176[rbp], rax
	mov	rdx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	Z3_mk_int@PLT
	mov	QWORD PTR -168[rbp], rax
	mov	rdx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_int@PLT
	mov	QWORD PTR -160[rbp], rax
	mov	rdx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	esi, 3
	mov	rdi, rax
	call	Z3_mk_int@PLT
	mov	QWORD PTR -152[rbp], rax
	mov	rdx, QWORD PTR -264[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	esi, 4
	mov	rdi, rax
	call	Z3_mk_int@PLT
	mov	QWORD PTR -144[rbp], rax
	mov	rcx, QWORD PTR -168[rbp]
	mov	rdx, QWORD PTR -248[rbp]
	mov	rsi, QWORD PTR -272[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rdi, rax
	call	Z3_add_const_interp@PLT
	mov	rcx, QWORD PTR -160[rbp]
	mov	rdx, QWORD PTR -224[rbp]
	mov	rsi, QWORD PTR -272[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rdi, rax
	call	Z3_add_const_interp@PLT
	mov	rax, QWORD PTR -264[rbp]
	mov	QWORD PTR -40[rbp], rax
	mov	rcx, QWORD PTR -264[rbp]
	lea	rdx, -40[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 1
	lea	rsi, .LC264[rip]
	mov	rdi, rax
	call	Z3_mk_fresh_func_decl@PLT
	mov	QWORD PTR -136[rbp], rax
	mov	rcx, QWORD PTR -176[rbp]
	mov	rdx, QWORD PTR -136[rbp]
	mov	rsi, QWORD PTR -272[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rdi, rax
	call	Z3_add_func_interp@PLT
	mov	QWORD PTR -128[rbp], rax
	mov	rdx, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_interp_inc_ref@PLT
	mov	rax, QWORD PTR -280[rbp]
	mov	rdi, rax
	call	Z3_mk_ast_vector@PLT
	mov	QWORD PTR -120[rbp], rax
	mov	rdx, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_vector_inc_ref@PLT
	mov	rdx, QWORD PTR -176[rbp]
	mov	rcx, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_ast_vector_push@PLT
	mov	rcx, QWORD PTR -152[rbp]
	mov	rdx, QWORD PTR -120[rbp]
	mov	rsi, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rdi, rax
	call	Z3_func_interp_add_entry@PLT
	mov	rax, QWORD PTR -280[rbp]
	mov	rdi, rax
	call	Z3_mk_ast_vector@PLT
	mov	QWORD PTR -112[rbp], rax
	mov	rdx, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_vector_inc_ref@PLT
	mov	rdx, QWORD PTR -168[rbp]
	mov	rcx, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_ast_vector_push@PLT
	mov	rcx, QWORD PTR -144[rbp]
	mov	rdx, QWORD PTR -112[rbp]
	mov	rsi, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rdi, rax
	call	Z3_func_interp_add_entry@PLT
	mov	rdx, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_mk_as_array@PLT
	mov	QWORD PTR -104[rbp], rax
	mov	rcx, QWORD PTR -104[rbp]
	mov	rdx, QWORD PTR -192[rbp]
	mov	rsi, QWORD PTR -272[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rdi, rax
	call	Z3_add_const_interp@PLT
	mov	rdx, QWORD PTR -272[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_to_string@PLT
	mov	QWORD PTR -96[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	mov	rsi, rax
	lea	rdi, .LC265[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -248[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -224[rbp]
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -192[rbp]
	mov	QWORD PTR -16[rbp], rax
	mov	DWORD PTR -292[rbp], 0
	jmp	.L276
.L279:
	mov	eax, DWORD PTR -292[rbp]
	cdqe
	mov	rax, QWORD PTR -32[rbp+rax*8]
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR -48[rbp]
	mov	rcx, QWORD PTR -272[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_model_has_interp@PLT
	test	al, al
	je	.L277
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_decl_to_ast@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_to_string@PLT
	mov	rsi, rax
	lea	rdi, .LC266[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L287
.L277:
	lea	rdi, .LC267[rip]
	mov	eax, 0
	call	printf@PLT
	mov	edi, 1
	call	exit@PLT
.L287:
	add	DWORD PTR -292[rbp], 1
.L276:
	mov	eax, DWORD PTR -292[rbp]
	cmp	eax, 2
	jbe	.L279
	mov	rax, QWORD PTR -240[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -216[rbp]
	mov	QWORD PTR -24[rbp], rax
	lea	rdx, -32[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	Z3_mk_add@PLT
	mov	QWORD PTR -88[rbp], rax
	mov	QWORD PTR -288[rbp], 0
	lea	rcx, -288[rbp]
	mov	rdx, QWORD PTR -88[rbp]
	mov	rsi, QWORD PTR -272[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	r8, rcx
	mov	ecx, 0
	mov	rdi, rax
	call	Z3_model_eval@PLT
	mov	BYTE PTR -300[rbp], al
	movzx	eax, BYTE PTR -300[rbp]
	xor	eax, 1
	test	al, al
	je	.L280
	lea	rdi, .LC268[rip]
	call	puts@PLT
	mov	edi, 1
	call	exit@PLT
.L280:
	mov	DWORD PTR -296[rbp], 0
	mov	rcx, QWORD PTR -288[rbp]
	lea	rdx, -296[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_get_numeral_int@PLT
	mov	BYTE PTR -299[rbp], al
	movzx	eax, BYTE PTR -299[rbp]
	xor	eax, 1
	test	al, al
	je	.L281
	lea	rdi, .LC269[rip]
	call	puts@PLT
	mov	edi, 1
	call	exit@PLT
.L281:
	mov	eax, DWORD PTR -296[rbp]
	mov	esi, eax
	lea	rdi, .LC270[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR -296[rbp]
	cmp	eax, 3
	je	.L282
	lea	rdi, .LC271[rip]
	call	puts@PLT
	mov	edi, 1
	call	exit@PLT
.L282:
	mov	rdx, QWORD PTR -176[rbp]
	mov	rcx, QWORD PTR -184[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_select@PLT
	mov	QWORD PTR -80[rbp], rax
	mov	rdx, QWORD PTR -168[rbp]
	mov	rcx, QWORD PTR -184[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_select@PLT
	mov	QWORD PTR -72[rbp], rax
	mov	rdx, QWORD PTR -160[rbp]
	mov	rcx, QWORD PTR -184[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_mk_select@PLT
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -80[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	mov	QWORD PTR -16[rbp], rax
	lea	rdx, -32[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	esi, 3
	mov	rdi, rax
	call	Z3_mk_add@PLT
	mov	QWORD PTR -56[rbp], rax
	mov	QWORD PTR -288[rbp], 0
	lea	rcx, -288[rbp]
	mov	rdx, QWORD PTR -56[rbp]
	mov	rsi, QWORD PTR -272[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	r8, rcx
	mov	ecx, 0
	mov	rdi, rax
	call	Z3_model_eval@PLT
	mov	BYTE PTR -298[rbp], al
	movzx	eax, BYTE PTR -298[rbp]
	xor	eax, 1
	test	al, al
	je	.L283
	lea	rdi, .LC268[rip]
	call	puts@PLT
	mov	edi, 1
	call	exit@PLT
.L283:
	mov	DWORD PTR -296[rbp], 0
	mov	rcx, QWORD PTR -288[rbp]
	lea	rdx, -296[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	Z3_get_numeral_int@PLT
	mov	BYTE PTR -297[rbp], al
	movzx	eax, BYTE PTR -297[rbp]
	xor	eax, 1
	test	al, al
	je	.L284
	lea	rdi, .LC272[rip]
	call	puts@PLT
	mov	edi, 1
	call	exit@PLT
.L284:
	mov	eax, DWORD PTR -296[rbp]
	mov	esi, eax
	lea	rdi, .LC273[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR -296[rbp]
	cmp	eax, 7
	je	.L285
	lea	rdi, .LC274[rip]
	call	puts@PLT
	mov	edi, 1
	call	exit@PLT
.L285:
	mov	rdx, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_vector_dec_ref@PLT
	mov	rdx, QWORD PTR -120[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_ast_vector_dec_ref@PLT
	mov	rdx, QWORD PTR -128[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_func_interp_dec_ref@PLT
	mov	rdx, QWORD PTR -272[rbp]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	Z3_model_dec_ref@PLT
	mov	rax, QWORD PTR -280[rbp]
	mov	rdi, rax
	call	Z3_del_context@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L286
	call	__stack_chk_fail@PLT
.L286:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE76:
	.size	mk_model_example, .-mk_model_example
	.section	.rodata
.LC275:
	.string	"z3.log"
	.text
	.globl	main
	.type	main, @function
main:
.LFB77:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	lea	rdi, .LC275[rip]
	call	Z3_open_log@PLT
	mov	eax, 0
	call	display_version
	mov	eax, 0
	call	simple_example
	mov	eax, 0
	call	demorgan
	mov	eax, 0
	call	find_model_example1
	mov	eax, 0
	call	find_model_example2
	mov	eax, 0
	call	prove_example1
	mov	eax, 0
	call	prove_example2
	mov	eax, 0
	call	push_pop_example1
	mov	eax, 0
	call	quantifier_example1
	mov	eax, 0
	call	array_example1
	mov	eax, 0
	call	array_example2
	mov	eax, 0
	call	array_example3
	mov	eax, 0
	call	tuple_example1
	mov	eax, 0
	call	bitvector_example1
	mov	eax, 0
	call	bitvector_example2
	mov	eax, 0
	call	eval_example1
	mov	eax, 0
	call	two_contexts_example1
	mov	eax, 0
	call	error_code_example1
	mov	eax, 0
	call	error_code_example2
	mov	eax, 0
	call	parser_example2
	mov	eax, 0
	call	parser_example3
	mov	eax, 0
	call	parser_example5
	mov	eax, 0
	call	numeral_example
	mov	eax, 0
	call	ite_example
	mov	eax, 0
	call	list_example
	mov	eax, 0
	call	tree_example
	mov	eax, 0
	call	forest_example
	mov	eax, 0
	call	binary_tree_example
	mov	eax, 0
	call	enum_example
	mov	eax, 0
	call	unsat_core_and_proof_example
	mov	eax, 0
	call	incremental_example1
	mov	eax, 0
	call	reference_counter_example
	mov	eax, 0
	call	smt2parser_example
	mov	eax, 0
	call	substitute_example
	mov	eax, 0
	call	substitute_vars_example
	mov	eax, 0
	call	fpa_example
	mov	eax, 0
	call	mk_model_example
	mov	eax, 0
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE77:
	.size	main, .-main
	.section	.rodata
	.align 8
.LC252:
	.long	0
	.long	1078263808
	.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	"428906.c"
	.text
	.section	.rodata
	.align	2
.LC0:
	.ascii	"BUG: %s.\012\000"
	.text
	.align	2
	.global	exitf
	.syntax unified
	.arm
	.fpu softvfp
	.type	exitf, %function
exitf:
	@ 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	r3, .L2
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	ldr	r1, .L2+4
	mov	r0, r3
	bl	fprintf
	mov	r0, #1
	bl	exit
.L3:
	.align	2
.L2:
	.word	stderr
	.word	.LC0
	.size	exitf, .-exitf
	.section	.rodata
	.align	2
.LC1:
	.ascii	"unreachable code was reached\000"
	.text
	.align	2
	.global	unreachable
	.syntax unified
	.arm
	.fpu softvfp
	.type	unreachable, %function
unreachable:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r0, .L5
	bl	exitf
	nop
	pop	{fp, pc}
.L6:
	.align	2
.L5:
	.word	.LC1
	.size	unreachable, .-unreachable
	.section	.rodata
	.align	2
.LC2:
	.ascii	"Error code: %d\012\000"
	.align	2
.LC3:
	.ascii	"incorrect use of Z3\000"
	.text
	.align	2
	.global	error_handler
	.syntax unified
	.arm
	.fpu softvfp
	.type	error_handler, %function
error_handler:
	@ 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]
	str	r1, [fp, #-12]
	ldr	r1, [fp, #-12]
	ldr	r0, .L8
	bl	printf
	ldr	r0, .L8+4
	bl	exitf
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L9:
	.align	2
.L8:
	.word	.LC2
	.word	.LC3
	.size	error_handler, .-error_handler
	.local	g_catch_buffer
	.comm	g_catch_buffer,392,8
	.align	2
	.global	throw_z3_error
	.syntax unified
	.arm
	.fpu softvfp
	.type	throw_z3_error, %function
throw_z3_error:
	@ 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]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-12]
	mov	r1, r3
	ldr	r0, .L11
	bl	longjmp
.L12:
	.align	2
.L11:
	.word	g_catch_buffer
	.size	throw_z3_error, .-throw_z3_error
	.align	2
	.global	nothrow_z3_error
	.syntax unified
	.arm
	.fpu softvfp
	.type	nothrow_z3_error, %function
nothrow_z3_error:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	nothrow_z3_error, .-nothrow_z3_error
	.section	.rodata
	.align	2
.LC4:
	.ascii	"true\000"
	.align	2
.LC5:
	.ascii	"model\000"
	.text
	.align	2
	.global	mk_context_custom
	.syntax unified
	.arm
	.fpu softvfp
	.type	mk_context_custom, %function
mk_context_custom:
	@ 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]
	str	r1, [fp, #-20]
	ldr	r2, .L16
	ldr	r1, .L16+4
	ldr	r0, [fp, #-16]
	bl	Z3_set_param_value
	ldr	r0, [fp, #-16]
	bl	Z3_mk_context
	str	r0, [fp, #-8]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-8]
	bl	Z3_set_error_handler
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L17:
	.align	2
.L16:
	.word	.LC4
	.word	.LC5
	.size	mk_context_custom, .-mk_context_custom
	.align	2
	.global	mk_solver
	.syntax unified
	.arm
	.fpu softvfp
	.type	mk_solver, %function
mk_solver:
	@ 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	Z3_mk_solver
	str	r0, [fp, #-8]
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	Z3_solver_inc_ref
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mk_solver, .-mk_solver
	.align	2
	.global	del_solver
	.syntax unified
	.arm
	.fpu softvfp
	.type	del_solver, %function
del_solver:
	@ 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]
	str	r1, [fp, #-12]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-8]
	bl	Z3_solver_dec_ref
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	del_solver, .-del_solver
	.align	2
	.global	mk_context
	.syntax unified
	.arm
	.fpu softvfp
	.type	mk_context, %function
mk_context:
	@ 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	Z3_mk_config
	str	r0, [fp, #-12]
	ldr	r1, .L23
	ldr	r0, [fp, #-12]
	bl	mk_context_custom
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-12]
	bl	Z3_del_config
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L24:
	.align	2
.L23:
	.word	error_handler
	.size	mk_context, .-mk_context
	.section	.rodata
	.align	2
.LC6:
	.ascii	"proof\000"
	.text
	.align	2
	.global	mk_proof_context
	.syntax unified
	.arm
	.fpu softvfp
	.type	mk_proof_context, %function
mk_proof_context:
	@ 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	Z3_mk_config
	str	r0, [fp, #-12]
	ldr	r2, .L27
	ldr	r1, .L27+4
	ldr	r0, [fp, #-12]
	bl	Z3_set_param_value
	ldr	r1, .L27+8
	ldr	r0, [fp, #-12]
	bl	mk_context_custom
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-12]
	bl	Z3_del_config
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L28:
	.align	2
.L27:
	.word	.LC4
	.word	.LC6
	.word	throw_z3_error
	.size	mk_proof_context, .-mk_proof_context
	.align	2
	.global	mk_var
	.syntax unified
	.arm
	.fpu softvfp
	.type	mk_var, %function
mk_var:
	@ 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	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-8]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	Z3_mk_const
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mk_var, .-mk_var
	.align	2
	.global	mk_bool_var
	.syntax unified
	.arm
	.fpu softvfp
	.type	mk_bool_var, %function
mk_bool_var:
	@ 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]
	str	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_mk_bool_sort
	str	r0, [fp, #-8]
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	mk_var
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mk_bool_var, .-mk_bool_var
	.align	2
	.global	mk_int_var
	.syntax unified
	.arm
	.fpu softvfp
	.type	mk_int_var, %function
mk_int_var:
	@ 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]
	str	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_mk_int_sort
	str	r0, [fp, #-8]
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	mk_var
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mk_int_var, .-mk_int_var
	.align	2
	.global	mk_int
	.syntax unified
	.arm
	.fpu softvfp
	.type	mk_int, %function
mk_int:
	@ 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]
	str	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_mk_int_sort
	str	r0, [fp, #-8]
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_mk_int
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mk_int, .-mk_int
	.align	2
	.global	mk_real_var
	.syntax unified
	.arm
	.fpu softvfp
	.type	mk_real_var, %function
mk_real_var:
	@ 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]
	str	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_mk_real_sort
	str	r0, [fp, #-8]
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	mk_var
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mk_real_var, .-mk_real_var
	.section	.rodata
	.align	2
.LC7:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	mk_unary_app
	.syntax unified
	.arm
	.fpu softvfp
	.type	mk_unary_app, %function
mk_unary_app:
	@ 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	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	ldr	r3, .L42
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-24]
	str	r3, [fp, #-12]
	sub	r3, fp, #12
	mov	r2, #1
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_mk_app
	mov	r3, r0
	ldr	r2, .L42
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L41
	bl	__stack_chk_fail
.L41:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L43:
	.align	2
.L42:
	.word	.LC7
	.size	mk_unary_app, .-mk_unary_app
	.section	.rodata
	.align	2
.LC8:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	mk_binary_app
	.syntax unified
	.arm
	.fpu softvfp
	.type	mk_binary_app, %function
mk_binary_app:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	str	r3, [fp, #-36]
	ldr	r3, .L47
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-36]
	str	r3, [fp, #-12]
	sub	r3, fp, #16
	mov	r2, #2
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	Z3_mk_app
	mov	r3, r0
	ldr	r2, .L47
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L46
	bl	__stack_chk_fail
.L46:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L48:
	.align	2
.L47:
	.word	.LC8
	.size	mk_binary_app, .-mk_binary_app
	.section	.rodata
	.align	2
.LC9:
	.ascii	"unsat\000"
	.align	2
.LC10:
	.ascii	"unknown\000"
	.align	2
.LC11:
	.ascii	"potential model:\012%s\012\000"
	.align	2
.LC12:
	.ascii	"sat\012%s\012\000"
	.align	2
.LC13:
	.ascii	"unexpected result\000"
	.text
	.align	2
	.global	check
	.syntax unified
	.arm
	.fpu softvfp
	.type	check, %function
check:
	@ 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	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-12]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_solver_check
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #1
	beq	.L50
	ldr	r3, [fp, #-8]
	cmp	r3, #1
	bgt	.L51
	ldr	r3, [fp, #-8]
	cmn	r3, #1
	beq	.L52
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L53
	b	.L51
.L52:
	ldr	r0, .L59
	bl	puts
	b	.L51
.L53:
	ldr	r0, .L59+4
	bl	puts
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_solver_get_model
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L54
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	Z3_model_inc_ref
.L54:
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	Z3_model_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L59+8
	bl	printf
	b	.L51
.L50:
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_solver_get_model
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L55
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	Z3_model_inc_ref
.L55:
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	Z3_model_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L59+12
	bl	printf
	nop
.L51:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	beq	.L56
	ldr	r0, .L59+16
	bl	exitf
.L56:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L58
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	Z3_model_dec_ref
.L58:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L60:
	.align	2
.L59:
	.word	.LC9
	.word	.LC10
	.word	.LC11
	.word	.LC12
	.word	.LC13
	.size	check, .-check
	.section	.rodata
	.align	2
.LC14:
	.ascii	"valid\000"
	.align	2
.LC15:
	.ascii	"potential counterexample:\012%s\012\000"
	.align	2
.LC16:
	.ascii	"invalid\000"
	.align	2
.LC17:
	.ascii	"counterexample:\012%s\012\000"
	.text
	.align	2
	.global	prove
	.syntax unified
	.arm
	.fpu softvfp
	.type	prove, %function
prove:
	@ 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	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	strb	r3, [fp, #-25]
	mov	r3, #0
	str	r3, [fp, #-12]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_solver_push
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-16]
	bl	Z3_mk_not
	str	r0, [fp, #-8]
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_solver_assert
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_solver_check
	mov	r3, r0
	cmp	r3, #1
	beq	.L62
	cmp	r3, #1
	bgt	.L63
	cmn	r3, #1
	beq	.L64
	cmp	r3, #0
	beq	.L65
	b	.L63
.L64:
	ldr	r0, .L75
	bl	puts
	ldrb	r3, [fp, #-25]
	eor	r3, r3, #1
	and	r3, r3, #255
	cmp	r3, #0
	beq	.L72
	ldr	r0, .L75+4
	bl	exitf
	b	.L72
.L65:
	ldr	r0, .L75+8
	bl	puts
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_solver_get_model
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L67
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	Z3_model_inc_ref
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	Z3_model_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L75+12
	bl	printf
.L67:
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L73
	ldr	r0, .L75+4
	bl	exitf
	b	.L73
.L62:
	ldr	r0, .L75+16
	bl	puts
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_solver_get_model
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L69
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	Z3_model_inc_ref
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	Z3_model_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L75+20
	bl	printf
.L69:
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L74
	ldr	r0, .L75+4
	bl	exitf
	b	.L74
.L72:
	nop
	b	.L63
.L73:
	nop
	b	.L63
.L74:
	nop
.L63:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L71
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	Z3_model_dec_ref
.L71:
	mov	r2, #1
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_solver_pop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L76:
	.align	2
.L75:
	.word	.LC14
	.word	.LC13
	.word	.LC10
	.word	.LC15
	.word	.LC16
	.word	.LC17
	.size	prove, .-prove
	.section	.rodata
	.align	2
.LC18:
	.ascii	"failed to create inj axiom\000"
	.align	2
.LC19:
	.ascii	"inv\000"
	.align	2
.LC20:
	.ascii	"pattern: %s\012\000"
	.align	2
.LC21:
	.ascii	"assert axiom:\012%s\012\000"
	.align	2
.LC22:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	assert_inj_axiom
	.syntax unified
	.arm
	.fpu softvfp
	.type	assert_inj_axiom, %function
assert_inj_axiom:
	@ args = 0, pretend = 0, frame = 80
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #100
	str	r0, [fp, #-80]
	str	r1, [fp, #-84]
	str	r2, [fp, #-88]
	str	r3, [fp, #-92]
	ldr	r3, .L86
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r1, [fp, #-88]
	ldr	r0, [fp, #-80]
	bl	Z3_get_domain_size
	str	r0, [fp, #-56]
	ldr	r2, [fp, #-92]
	ldr	r3, [fp, #-56]
	cmp	r2, r3
	bcc	.L78
	ldr	r0, .L86+4
	bl	exitf
.L78:
	ldr	r1, [fp, #-88]
	ldr	r0, [fp, #-80]
	bl	Z3_get_range
	mov	r3, r0
	str	r3, [fp, #-72]
	ldr	r2, [fp, #-92]
	ldr	r1, [fp, #-88]
	ldr	r0, [fp, #-80]
	bl	Z3_get_domain
	str	r0, [fp, #-52]
	sub	r2, fp, #72
	ldr	r3, [fp, #-52]
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #1
	ldr	r1, .L86+8
	ldr	r0, [fp, #-80]
	bl	Z3_mk_fresh_func_decl
	str	r0, [fp, #-48]
	ldr	r3, [fp, #-56]
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-56]
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-56]
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-60]
	b	.L79
.L80:
	ldr	r3, [fp, #-60]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-44]
	add	r4, r2, r3
	ldr	r2, [fp, #-60]
	ldr	r1, [fp, #-88]
	ldr	r0, [fp, #-80]
	bl	Z3_get_domain
	mov	r3, r0
	str	r3, [r4]
	ldr	r3, [fp, #-60]
	add	r3, r3, #1
	str	r3, [fp, #-60]
.L79:
	ldr	r2, [fp, #-60]
	ldr	r3, [fp, #-56]
	cmp	r2, r3
	bcc	.L80
	mov	r3, #0
	str	r3, [fp, #-60]
	b	.L81
.L82:
	ldr	r1, [fp, #-60]
	ldr	r3, [fp, #-60]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-40]
	add	r4, r2, r3
	ldr	r0, [fp, #-80]
	bl	Z3_mk_int_symbol
	mov	r3, r0
	str	r3, [r4]
	ldr	r3, [fp, #-60]
	add	r3, r3, #1
	str	r3, [fp, #-60]
.L81:
	ldr	r2, [fp, #-60]
	ldr	r3, [fp, #-56]
	cmp	r2, r3
	bcc	.L82
	mov	r3, #0
	str	r3, [fp, #-60]
	b	.L83
.L84:
	ldr	r3, [fp, #-60]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-44]
	add	r3, r2, r3
	ldr	r1, [r3]
	ldr	r3, [fp, #-60]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-36]
	add	r4, r2, r3
	mov	r2, r1
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-80]
	bl	Z3_mk_bound
	mov	r3, r0
	str	r3, [r4]
	ldr	r3, [fp, #-60]
	add	r3, r3, #1
	str	r3, [fp, #-60]
.L83:
	ldr	r2, [fp, #-60]
	ldr	r3, [fp, #-56]
	cmp	r2, r3
	bcc	.L84
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	ldr	r3, [r3]
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-56]
	ldr	r1, [fp, #-88]
	ldr	r0, [fp, #-80]
	bl	Z3_mk_app
	mov	r3, r0
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-68]
	mov	r2, r3
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-80]
	bl	mk_unary_app
	str	r0, [fp, #-28]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-80]
	bl	Z3_mk_eq
	str	r0, [fp, #-24]
	sub	r3, fp, #68
	mov	r2, r3
	mov	r1, #1
	ldr	r0, [fp, #-80]
	bl	Z3_mk_pattern
	mov	r3, r0
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-64]
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	Z3_pattern_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L86+12
	bl	printf
	mov	r0, #10
	bl	putchar
	sub	r2, fp, #64
	ldr	r3, [fp, #-24]
	str	r3, [sp, #12]
	ldr	r3, [fp, #-40]
	str	r3, [sp, #8]
	ldr	r3, [fp, #-44]
	str	r3, [sp, #4]
	ldr	r3, [fp, #-56]
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #1
	mov	r1, #0
	ldr	r0, [fp, #-80]
	bl	Z3_mk_forall
	str	r0, [fp, #-20]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-80]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L86+16
	bl	printf
	ldr	r2, [fp, #-20]
	ldr	r1, [fp, #-84]
	ldr	r0, [fp, #-80]
	bl	Z3_solver_assert
	ldr	r0, [fp, #-44]
	bl	free
	ldr	r0, [fp, #-40]
	bl	free
	ldr	r0, [fp, #-36]
	bl	free
	nop
	ldr	r3, .L86
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L85
	bl	__stack_chk_fail
.L85:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L87:
	.align	2
.L86:
	.word	.LC22
	.word	.LC18
	.word	.LC19
	.word	.LC20
	.word	.LC21
	.size	assert_inj_axiom, .-assert_inj_axiom
	.section	.rodata
	.align	2
.LC23:
	.ascii	"function must be binary, and argument types must be"
	.ascii	" equal to return type\000"
	.align	2
.LC24:
	.ascii	"f\000"
	.align	2
.LC25:
	.ascii	"T\000"
	.align	2
.LC26:
	.ascii	"(assert (forall ((x T) (y T)) (= (f x y) (f y x))))"
	.ascii	"\000"
	.align	2
.LC27:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	assert_comm_axiom
	.syntax unified
	.arm
	.fpu softvfp
	.type	assert_comm_axiom, %function
assert_comm_axiom:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	ldr	r3, .L94
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-40]
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	Z3_get_range
	mov	r3, r0
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-40]
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	Z3_get_domain_size
	mov	r3, r0
	cmp	r3, #2
	bne	.L89
	ldr	r3, [fp, #-40]
	mov	r2, #0
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	Z3_get_domain
	mov	r2, r0
	ldr	r3, [fp, #-28]
	cmp	r2, r3
	bne	.L89
	ldr	r3, [fp, #-40]
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	Z3_get_domain
	mov	r2, r0
	ldr	r3, [fp, #-28]
	cmp	r2, r3
	beq	.L90
.L89:
	ldr	r0, .L94+4
	bl	exitf
.L90:
	ldr	r1, .L94+8
	ldr	r0, [fp, #-32]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-24]
	ldr	r1, .L94+12
	ldr	r0, [fp, #-32]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-20]
	sub	r2, fp, #20
	sub	r3, fp, #40
	str	r3, [sp, #12]
	sub	r3, fp, #24
	str	r3, [sp, #8]
	mov	r3, #1
	str	r3, [sp, #4]
	sub	r3, fp, #28
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #1
	ldr	r1, .L94+16
	ldr	r0, [fp, #-32]
	bl	Z3_parse_smtlib2_string
	str	r0, [fp, #-12]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-32]
	bl	Z3_ast_vector_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L94+20
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L91
.L92:
	ldr	r2, [fp, #-16]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-32]
	bl	Z3_ast_vector_get
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-32]
	bl	Z3_solver_assert
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L91:
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-32]
	bl	Z3_ast_vector_size
	mov	r2, r0
	ldr	r3, [fp, #-16]
	cmp	r3, r2
	bcc	.L92
	nop
	ldr	r3, .L94
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L93
	bl	__stack_chk_fail
.L93:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L95:
	.align	2
.L94:
	.word	.LC27
	.word	.LC23
	.word	.LC24
	.word	.LC25
	.word	.LC26
	.word	.LC21
	.size	assert_comm_axiom, .-assert_comm_axiom
	.section	.rodata
	.align	2
.LC28:
	.ascii	"argument must be a tuple\000"
	.align	2
.LC29:
	.ascii	"invalid tuple update, index is too big\000"
	.text
	.align	2
	.global	mk_tuple_update
	.syntax unified
	.arm
	.fpu softvfp
	.type	mk_tuple_update, %function
mk_tuple_update:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #52
	str	r0, [fp, #-48]
	str	r1, [fp, #-52]
	str	r2, [fp, #-56]
	str	r3, [fp, #-60]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-48]
	bl	Z3_get_sort
	str	r0, [fp, #-36]
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-48]
	bl	Z3_get_sort_kind
	mov	r3, r0
	cmp	r3, #6
	beq	.L97
	ldr	r0, .L104
	bl	exitf
.L97:
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-48]
	bl	Z3_get_tuple_sort_num_fields
	str	r0, [fp, #-32]
	ldr	r2, [fp, #-56]
	ldr	r3, [fp, #-32]
	cmp	r2, r3
	bcc	.L98
	ldr	r0, .L104+4
	bl	exitf
.L98:
	ldr	r3, [fp, #-32]
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L99
.L102:
	ldr	r2, [fp, #-56]
	ldr	r3, [fp, #-40]
	cmp	r2, r3
	bne	.L100
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r2, [fp, #-60]
	str	r2, [r3]
	b	.L101
.L100:
	ldr	r2, [fp, #-40]
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-48]
	bl	Z3_get_tuple_sort_field_decl
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r4, r2, r3
	ldr	r2, [fp, #-52]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-48]
	bl	mk_unary_app
	mov	r3, r0
	str	r3, [r4]
.L101:
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L99:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-32]
	cmp	r2, r3
	bcc	.L102
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-48]
	bl	Z3_get_tuple_sort_mk_decl
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-48]
	bl	Z3_mk_app
	str	r0, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	free
	ldr	r3, [fp, #-20]
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L105:
	.align	2
.L104:
	.word	.LC28
	.word	.LC29
	.size	mk_tuple_update, .-mk_tuple_update
	.section	.rodata
	.align	2
.LC30:
	.ascii	"#%d\000"
	.text
	.align	2
	.global	display_symbol
	.syntax unified
	.arm
	.fpu softvfp
	.type	display_symbol, %function
display_symbol:
	@ 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, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-8]
	bl	Z3_get_symbol_kind
	mov	r3, r0
	cmp	r3, #0
	beq	.L107
	cmp	r3, #1
	beq	.L108
	b	.L111
.L107:
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-8]
	bl	Z3_get_symbol_int
	mov	r3, r0
	mov	r2, r3
	ldr	r1, .L112
	ldr	r0, [fp, #-12]
	bl	fprintf
	b	.L110
.L108:
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-8]
	bl	Z3_get_symbol_string
	mov	r3, r0
	ldr	r1, [fp, #-12]
	mov	r0, r3
	bl	fputs
	b	.L110
.L111:
	bl	unreachable
	nop
.L110:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L113:
	.align	2
.L112:
	.word	.LC30
	.size	display_symbol, .-display_symbol
	.section	.rodata
	.align	2
.LC31:
	.ascii	"bool\000"
	.align	2
.LC32:
	.ascii	"int\000"
	.align	2
.LC33:
	.ascii	"real\000"
	.align	2
.LC34:
	.ascii	"bv%d\000"
	.align	2
.LC35:
	.ascii	"->\000"
	.align	2
.LC36:
	.ascii	", \000"
	.align	2
.LC37:
	.ascii	"unknown[\000"
	.text
	.align	2
	.global	display_sort
	.syntax unified
	.arm
	.fpu softvfp
	.type	display_sort, %function
display_sort:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-24]
	bl	Z3_get_sort_kind
	mov	r3, r0
	cmp	r3, #6
	ldrls	pc, [pc, r3, asl #2]
	b	.L115
.L117:
	.word	.L123
	.word	.L122
	.word	.L121
	.word	.L120
	.word	.L119
	.word	.L118
	.word	.L116
.L123:
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-24]
	bl	Z3_get_sort_name
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	display_symbol
	b	.L124
.L122:
	ldr	r3, [fp, #-28]
	mov	r2, #4
	mov	r1, #1
	ldr	r0, .L129
	bl	fwrite
	b	.L124
.L121:
	ldr	r3, [fp, #-28]
	mov	r2, #3
	mov	r1, #1
	ldr	r0, .L129+4
	bl	fwrite
	b	.L124
.L120:
	ldr	r3, [fp, #-28]
	mov	r2, #4
	mov	r1, #1
	ldr	r0, .L129+8
	bl	fwrite
	b	.L124
.L119:
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-24]
	bl	Z3_get_bv_sort_size
	mov	r3, r0
	mov	r2, r3
	ldr	r1, .L129+12
	ldr	r0, [fp, #-28]
	bl	fprintf
	b	.L124
.L118:
	ldr	r1, [fp, #-28]
	mov	r0, #91
	bl	fputc
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-24]
	bl	Z3_get_array_sort_domain
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	display_sort
	ldr	r3, [fp, #-28]
	mov	r2, #2
	mov	r1, #1
	ldr	r0, .L129+16
	bl	fwrite
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-24]
	bl	Z3_get_array_sort_range
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	display_sort
	ldr	r1, [fp, #-28]
	mov	r0, #93
	bl	fputc
	b	.L124
.L116:
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-24]
	bl	Z3_get_datatype_sort_num_constructors
	mov	r3, r0
	cmp	r3, #1
	beq	.L125
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-24]
	bl	Z3_sort_to_string
	mov	r3, r0
	ldr	r1, [fp, #-28]
	mov	r0, r3
	bl	fputs
	b	.L124
.L125:
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-24]
	bl	Z3_get_tuple_sort_num_fields
	str	r0, [fp, #-12]
	ldr	r1, [fp, #-28]
	mov	r0, #40
	bl	fputc
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L126
.L128:
	ldr	r2, [fp, #-16]
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-24]
	bl	Z3_get_tuple_sort_field_decl
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L127
	ldr	r3, [fp, #-28]
	mov	r2, #2
	mov	r1, #1
	ldr	r0, .L129+20
	bl	fwrite
.L127:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-24]
	bl	Z3_get_range
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	display_sort
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L126:
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-12]
	cmp	r2, r3
	bcc	.L128
	ldr	r1, [fp, #-28]
	mov	r0, #41
	bl	fputc
	b	.L124
.L115:
	ldr	r3, [fp, #-28]
	mov	r2, #8
	mov	r1, #1
	ldr	r0, .L129+24
	bl	fwrite
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-24]
	bl	Z3_get_sort_name
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	display_symbol
	ldr	r1, [fp, #-28]
	mov	r0, #93
	bl	fputc
	nop
.L124:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L130:
	.align	2
.L129:
	.word	.LC31
	.word	.LC32
	.word	.LC33
	.word	.LC34
	.word	.LC35
	.word	.LC36
	.word	.LC37
	.size	display_sort, .-display_sort
	.section	.rodata
	.align	2
.LC38:
	.ascii	"quantifier\000"
	.align	2
.LC39:
	.ascii	"#unknown\000"
	.text
	.align	2
	.global	display_ast
	.syntax unified
	.arm
	.fpu softvfp
	.type	display_ast, %function
display_ast:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-32]
	bl	Z3_get_ast_kind
	mov	r3, r0
	cmp	r3, #3
	beq	.L132
	cmp	r3, #3
	bhi	.L133
	cmp	r3, #0
	beq	.L134
	cmp	r3, #1
	beq	.L135
	b	.L133
.L134:
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-32]
	bl	Z3_get_numeral_string
	mov	r3, r0
	ldr	r1, [fp, #-36]
	mov	r0, r3
	bl	fputs
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-32]
	bl	Z3_get_sort
	str	r0, [fp, #-8]
	ldr	r1, [fp, #-36]
	mov	r0, #58
	bl	fputc
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-32]
	bl	display_sort
	b	.L136
.L135:
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-32]
	bl	Z3_to_app
	str	r0, [fp, #-20]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-32]
	bl	Z3_get_app_num_args
	str	r0, [fp, #-16]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-32]
	bl	Z3_get_app_decl
	str	r0, [fp, #-12]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-32]
	bl	Z3_func_decl_to_string
	mov	r3, r0
	ldr	r1, [fp, #-36]
	mov	r0, r3
	bl	fputs
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L141
	ldr	r1, [fp, #-36]
	mov	r0, #91
	bl	fputc
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L138
.L140:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L139
	ldr	r3, [fp, #-36]
	mov	r2, #2
	mov	r1, #1
	ldr	r0, .L143
	bl	fwrite
.L139:
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-32]
	bl	Z3_get_app_arg
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-32]
	bl	display_ast
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L138:
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	bcc	.L140
	ldr	r1, [fp, #-36]
	mov	r0, #93
	bl	fputc
	b	.L141
.L132:
	ldr	r3, [fp, #-36]
	mov	r2, #10
	mov	r1, #1
	ldr	r0, .L143+4
	bl	fwrite
.L133:
	ldr	r3, [fp, #-36]
	mov	r2, #8
	mov	r1, #1
	ldr	r0, .L143+8
	bl	fwrite
	b	.L142
.L141:
	nop
.L136:
.L142:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L144:
	.align	2
.L143:
	.word	.LC36
	.word	.LC38
	.word	.LC39
	.size	display_ast, .-display_ast
	.section	.rodata
	.align	2
.LC40:
	.ascii	"function interpretations:\012\000"
	.align	2
.LC41:
	.ascii	" = {\000"
	.align	2
.LC42:
	.ascii	"|->\000"
	.align	2
.LC43:
	.ascii	"(else|->\000"
	.align	2
.LC44:
	.ascii	")}\012\000"
	.text
	.align	2
	.global	display_function_interpretations
	.syntax unified
	.arm
	.fpu softvfp
	.type	display_function_interpretations, %function
display_function_interpretations:
	@ args = 0, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #64
	str	r0, [fp, #-56]
	str	r1, [fp, #-60]
	str	r2, [fp, #-64]
	ldr	r3, [fp, #-60]
	mov	r2, #26
	mov	r1, #1
	ldr	r0, .L156
	bl	fwrite
	ldr	r1, [fp, #-64]
	ldr	r0, [fp, #-56]
	bl	Z3_model_get_num_funcs
	str	r0, [fp, #-32]
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L146
.L155:
	mov	r3, #0
	str	r3, [fp, #-44]
	ldr	r2, [fp, #-48]
	ldr	r1, [fp, #-64]
	ldr	r0, [fp, #-56]
	bl	Z3_model_get_func_decl
	str	r0, [fp, #-28]
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-64]
	ldr	r0, [fp, #-56]
	bl	Z3_model_get_func_interp
	str	r0, [fp, #-24]
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-56]
	bl	Z3_func_interp_inc_ref
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-56]
	bl	Z3_get_decl_name
	str	r0, [fp, #-20]
	ldr	r2, [fp, #-20]
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-56]
	bl	display_symbol
	ldr	r3, [fp, #-60]
	mov	r2, #4
	mov	r1, #1
	ldr	r0, .L156+4
	bl	fwrite
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L147
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-56]
	bl	Z3_func_interp_get_num_entries
	str	r0, [fp, #-44]
.L147:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L148
.L153:
	ldr	r2, [fp, #-40]
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-56]
	bl	Z3_func_interp_get_entry
	str	r0, [fp, #-12]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-56]
	bl	Z3_func_entry_inc_ref
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	beq	.L149
	ldr	r3, [fp, #-60]
	mov	r2, #2
	mov	r1, #1
	ldr	r0, .L156+8
	bl	fwrite
.L149:
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-56]
	bl	Z3_func_entry_get_num_args
	str	r0, [fp, #-8]
	ldr	r1, [fp, #-60]
	mov	r0, #40
	bl	fputc
	mov	r3, #0
	str	r3, [fp, #-36]
	b	.L150
.L152:
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	beq	.L151
	ldr	r3, [fp, #-60]
	mov	r2, #2
	mov	r1, #1
	ldr	r0, .L156+8
	bl	fwrite
.L151:
	ldr	r2, [fp, #-36]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-56]
	bl	Z3_func_entry_get_arg
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-56]
	bl	display_ast
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
.L150:
	ldr	r2, [fp, #-36]
	ldr	r3, [fp, #-8]
	cmp	r2, r3
	bcc	.L152
	ldr	r3, [fp, #-60]
	mov	r2, #3
	mov	r1, #1
	ldr	r0, .L156+12
	bl	fwrite
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-56]
	bl	Z3_func_entry_get_value
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-56]
	bl	display_ast
	ldr	r1, [fp, #-60]
	mov	r0, #41
	bl	fputc
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-56]
	bl	Z3_func_entry_dec_ref
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L148:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-44]
	cmp	r2, r3
	bcc	.L153
	ldr	r3, [fp, #-44]
	cmp	r3, #0
	beq	.L154
	ldr	r3, [fp, #-60]
	mov	r2, #2
	mov	r1, #1
	ldr	r0, .L156+8
	bl	fwrite
.L154:
	ldr	r3, [fp, #-60]
	mov	r2, #8
	mov	r1, #1
	ldr	r0, .L156+16
	bl	fwrite
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-56]
	bl	Z3_func_interp_get_else
	str	r0, [fp, #-16]
	ldr	r2, [fp, #-16]
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-56]
	bl	display_ast
	ldr	r3, [fp, #-60]
	mov	r2, #3
	mov	r1, #1
	ldr	r0, .L156+20
	bl	fwrite
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-56]
	bl	Z3_func_interp_dec_ref
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L146:
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-32]
	cmp	r2, r3
	bcc	.L155
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L157:
	.align	2
.L156:
	.word	.LC40
	.word	.LC41
	.word	.LC36
	.word	.LC42
	.word	.LC43
	.word	.LC44
	.size	display_function_interpretations, .-display_function_interpretations
	.section	.rodata
	.align	2
.LC45:
	.ascii	" = \000"
	.align	2
.LC46:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	display_model
	.syntax unified
	.arm
	.fpu softvfp
	.type	display_model, %function
display_model:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	ldr	r3, .L165
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	beq	.L164
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-40]
	bl	Z3_model_get_num_consts
	str	r0, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L161
.L162:
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-40]
	bl	Z3_model_get_const_decl
	str	r0, [fp, #-20]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-40]
	bl	Z3_get_decl_name
	str	r0, [fp, #-16]
	ldr	r2, [fp, #-16]
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-40]
	bl	display_symbol
	ldr	r3, [fp, #-44]
	mov	r2, #3
	mov	r1, #1
	ldr	r0, .L165+4
	bl	fwrite
	mov	r3, #0
	mov	r2, #0
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-40]
	bl	Z3_mk_app
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	str	r3, [fp, #-32]
	sub	r3, fp, #32
	str	r3, [sp]
	mov	r3, #1
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-40]
	bl	Z3_model_eval
	mov	r3, r0
	strb	r3, [fp, #-33]
	ldr	r3, [fp, #-32]
	mov	r2, r3
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-40]
	bl	display_ast
	ldr	r1, [fp, #-44]
	mov	r0, #10
	bl	fputc
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L161:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bcc	.L162
	ldr	r2, [fp, #-48]
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-40]
	bl	display_function_interpretations
	b	.L158
.L164:
	nop
.L158:
	ldr	r3, .L165
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L163
	bl	__stack_chk_fail
.L163:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L166:
	.align	2
.L165:
	.word	.LC46
	.word	.LC45
	.size	display_model, .-display_model
	.section	.rodata
	.align	2
.LC47:
	.ascii	"potential model:\000"
	.align	2
.LC48:
	.ascii	"sat\000"
	.text
	.align	2
	.global	check2
	.syntax unified
	.arm
	.fpu softvfp
	.type	check2, %function
check2:
	@ 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	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-12]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_solver_check
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #1
	beq	.L168
	ldr	r3, [fp, #-8]
	cmp	r3, #1
	bgt	.L169
	ldr	r3, [fp, #-8]
	cmn	r3, #1
	beq	.L170
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L171
	b	.L169
.L170:
	ldr	r0, .L177
	bl	puts
	b	.L169
.L171:
	ldr	r0, .L177+4
	bl	puts
	ldr	r0, .L177+8
	bl	puts
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_solver_get_model
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L172
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	Z3_model_inc_ref
.L172:
	ldr	r3, .L177+12
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	display_model
	b	.L169
.L168:
	ldr	r0, .L177+16
	bl	puts
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	Z3_solver_get_model
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L173
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	Z3_model_inc_ref
.L173:
	ldr	r3, .L177+12
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	display_model
	nop
.L169:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	beq	.L174
	ldr	r0, .L177+20
	bl	exitf
.L174:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L176
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	Z3_model_dec_ref
.L176:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L178:
	.align	2
.L177:
	.word	.LC9
	.word	.LC10
	.word	.LC47
	.word	stdout
	.word	.LC48
	.word	.LC13
	.size	check2, .-check2
	.section	.rodata
	.align	2
.LC49:
	.ascii	"Z3 %d.%d.%d.%d\012\000"
	.align	2
.LC50:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	display_version
	.syntax unified
	.arm
	.fpu softvfp
	.type	display_version, %function
display_version:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	ldr	r3, .L181
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #12
	sub	r2, fp, #16
	sub	r1, fp, #20
	sub	r0, fp, #24
	bl	Z3_get_version
	ldr	r1, [fp, #-24]
	ldr	r2, [fp, #-20]
	ldr	r0, [fp, #-16]
	ldr	r3, [fp, #-12]
	str	r3, [sp]
	mov	r3, r0
	ldr	r0, .L181+4
	bl	printf
	nop
	ldr	r3, .L181
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L180
	bl	__stack_chk_fail
.L180:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L182:
	.align	2
.L181:
	.word	.LC50
	.word	.LC49
	.size	display_version, .-display_version
	.section	.rodata
	.align	2
.LC51:
	.ascii	"simple_example\000"
	.align	2
.LC52:
	.ascii	"\012simple_example\000"
	.text
	.align	2
	.global	simple_example
	.syntax unified
	.arm
	.fpu softvfp
	.type	simple_example, %function
simple_example:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	ldr	r0, .L184
	bl	Z3_append_log
	ldr	r0, .L184+4
	bl	puts
	bl	mk_context
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-8]
	bl	Z3_del_context
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L185:
	.align	2
.L184:
	.word	.LC51
	.word	.LC52
	.size	simple_example, .-simple_example
	.section	.rodata
	.align	2
.LC53:
	.ascii	"\012DeMorgan\000"
	.align	2
.LC54:
	.ascii	"DeMorgan\000"
	.align	2
.LC55:
	.ascii	"DeMorgan is valid\000"
	.align	2
.LC56:
	.ascii	"Undef\000"
	.align	2
.LC57:
	.ascii	"DeMorgan is not valid\000"
	.align	2
.LC58:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	demorgan
	.syntax unified
	.arm
	.fpu softvfp
	.type	demorgan, %function
demorgan:
	@ args = 0, pretend = 0, frame = 72
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #72
	ldr	r3, .L192
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, .L192+4
	bl	puts
	ldr	r0, .L192+8
	bl	Z3_append_log
	bl	Z3_mk_config
	str	r0, [fp, #-76]
	ldr	r0, [fp, #-76]
	bl	Z3_mk_context
	str	r0, [fp, #-72]
	ldr	r0, [fp, #-76]
	bl	Z3_del_config
	ldr	r0, [fp, #-72]
	bl	Z3_mk_bool_sort
	str	r0, [fp, #-68]
	mov	r1, #0
	ldr	r0, [fp, #-72]
	bl	Z3_mk_int_symbol
	str	r0, [fp, #-64]
	mov	r1, #1
	ldr	r0, [fp, #-72]
	bl	Z3_mk_int_symbol
	str	r0, [fp, #-60]
	ldr	r2, [fp, #-68]
	ldr	r1, [fp, #-64]
	ldr	r0, [fp, #-72]
	bl	Z3_mk_const
	str	r0, [fp, #-56]
	ldr	r2, [fp, #-68]
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-72]
	bl	Z3_mk_const
	str	r0, [fp, #-52]
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-72]
	bl	Z3_mk_not
	str	r0, [fp, #-48]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-72]
	bl	Z3_mk_not
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-56]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-52]
	str	r3, [fp, #-12]
	sub	r3, fp, #16
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-72]
	bl	Z3_mk_and
	str	r0, [fp, #-40]
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-72]
	bl	Z3_mk_not
	str	r0, [fp, #-36]
	ldr	r3, [fp, #-48]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-12]
	sub	r3, fp, #16
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-72]
	bl	Z3_mk_or
	str	r0, [fp, #-32]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-72]
	bl	Z3_mk_iff
	str	r0, [fp, #-28]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-72]
	bl	Z3_mk_not
	str	r0, [fp, #-24]
	ldr	r0, [fp, #-72]
	bl	mk_solver
	str	r0, [fp, #-20]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-72]
	bl	Z3_solver_assert
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-72]
	bl	Z3_solver_check
	mov	r3, r0
	cmp	r3, #1
	beq	.L187
	cmp	r3, #1
	bgt	.L188
	cmn	r3, #1
	beq	.L189
	cmp	r3, #0
	beq	.L190
	b	.L188
.L189:
	ldr	r0, .L192+12
	bl	puts
	b	.L188
.L190:
	ldr	r0, .L192+16
	bl	puts
	b	.L188
.L187:
	ldr	r0, .L192+20
	bl	puts
	nop
.L188:
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-72]
	bl	del_solver
	ldr	r0, [fp, #-72]
	bl	Z3_del_context
	nop
	ldr	r3, .L192
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L191
	bl	__stack_chk_fail
.L191:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L193:
	.align	2
.L192:
	.word	.LC58
	.word	.LC53
	.word	.LC54
	.word	.LC55
	.word	.LC56
	.word	.LC57
	.size	demorgan, .-demorgan
	.section	.rodata
	.align	2
.LC59:
	.ascii	"\012find_model_example1\000"
	.align	2
.LC60:
	.ascii	"find_model_example1\000"
	.align	2
.LC61:
	.ascii	"x\000"
	.align	2
.LC62:
	.ascii	"y\000"
	.align	2
.LC63:
	.ascii	"model for: x xor y\000"
	.text
	.align	2
	.global	find_model_example1
	.syntax unified
	.arm
	.fpu softvfp
	.type	find_model_example1, %function
find_model_example1:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	ldr	r0, .L195
	bl	puts
	ldr	r0, .L195+4
	bl	Z3_append_log
	bl	mk_context
	str	r0, [fp, #-24]
	ldr	r0, [fp, #-24]
	bl	mk_solver
	str	r0, [fp, #-20]
	ldr	r1, .L195+8
	ldr	r0, [fp, #-24]
	bl	mk_bool_var
	str	r0, [fp, #-16]
	ldr	r1, .L195+12
	ldr	r0, [fp, #-24]
	bl	mk_bool_var
	str	r0, [fp, #-12]
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-24]
	bl	Z3_mk_xor
	str	r0, [fp, #-8]
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-24]
	bl	Z3_solver_assert
	ldr	r0, .L195+16
	bl	puts
	mov	r2, #1
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-24]
	bl	check
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-24]
	bl	del_solver
	ldr	r0, [fp, #-24]
	bl	Z3_del_context
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L196:
	.align	2
.L195:
	.word	.LC59
	.word	.LC60
	.word	.LC61
	.word	.LC62
	.word	.LC63
	.size	find_model_example1, .-find_model_example1
	.section	.rodata
	.align	2
.LC64:
	.ascii	"\012find_model_example2\000"
	.align	2
.LC65:
	.ascii	"find_model_example2\000"
	.align	2
.LC66:
	.ascii	"model for: x < y + 1, x > 2\000"
	.align	2
.LC67:
	.ascii	"model for: x < y + 1, x > 2, not(x = y)\000"
	.align	2
.LC68:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	find_model_example2
	.syntax unified
	.arm
	.fpu softvfp
	.type	find_model_example2, %function
find_model_example2:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	ldr	r3, .L199
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, .L199+4
	bl	puts
	ldr	r0, .L199+8
	bl	Z3_append_log
	bl	mk_context
	str	r0, [fp, #-60]
	ldr	r0, [fp, #-60]
	bl	mk_solver
	str	r0, [fp, #-56]
	ldr	r1, .L199+12
	ldr	r0, [fp, #-60]
	bl	mk_int_var
	str	r0, [fp, #-52]
	ldr	r1, .L199+16
	ldr	r0, [fp, #-60]
	bl	mk_int_var
	str	r0, [fp, #-48]
	mov	r1, #1
	ldr	r0, [fp, #-60]
	bl	mk_int
	str	r0, [fp, #-44]
	mov	r1, #2
	ldr	r0, [fp, #-60]
	bl	mk_int
	str	r0, [fp, #-40]
	ldr	r3, [fp, #-48]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-12]
	sub	r3, fp, #16
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-60]
	bl	Z3_mk_add
	str	r0, [fp, #-36]
	ldr	r2, [fp, #-36]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-60]
	bl	Z3_mk_lt
	str	r0, [fp, #-32]
	ldr	r2, [fp, #-40]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-60]
	bl	Z3_mk_gt
	str	r0, [fp, #-28]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-60]
	bl	Z3_solver_assert
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-60]
	bl	Z3_solver_assert
	ldr	r0, .L199+20
	bl	puts
	mov	r2, #1
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-60]
	bl	check
	ldr	r2, [fp, #-48]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-60]
	bl	Z3_mk_eq
	str	r0, [fp, #-24]
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-60]
	bl	Z3_mk_not
	str	r0, [fp, #-20]
	ldr	r2, [fp, #-20]
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-60]
	bl	Z3_solver_assert
	ldr	r0, .L199+24
	bl	puts
	mov	r2, #1
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-60]
	bl	check
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-60]
	bl	del_solver
	ldr	r0, [fp, #-60]
	bl	Z3_del_context
	nop
	ldr	r3, .L199
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L198
	bl	__stack_chk_fail
.L198:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L200:
	.align	2
.L199:
	.word	.LC68
	.word	.LC64
	.word	.LC65
	.word	.LC61
	.word	.LC62
	.word	.LC66
	.word	.LC67
	.size	find_model_example2, .-find_model_example2
	.section	.rodata
	.align	2
.LC69:
	.ascii	"\012prove_example1\000"
	.align	2
.LC70:
	.ascii	"prove_example1\000"
	.align	2
.LC71:
	.ascii	"U\000"
	.align	2
.LC72:
	.ascii	"g\000"
	.align	2
.LC73:
	.ascii	"prove: x = y implies g(x) = g(y)\000"
	.align	2
.LC74:
	.ascii	"disprove: x = y implies g(g(x)) = g(y)\000"
	.align	2
.LC75:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	prove_example1
	.syntax unified
	.arm
	.fpu softvfp
	.type	prove_example1, %function
prove_example1:
	@ args = 0, pretend = 0, frame = 72
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #80
	ldr	r3, .L203
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, .L203+4
	bl	puts
	ldr	r0, .L203+8
	bl	Z3_append_log
	bl	mk_context
	str	r0, [fp, #-72]
	ldr	r0, [fp, #-72]
	bl	mk_solver
	str	r0, [fp, #-68]
	ldr	r1, .L203+12
	ldr	r0, [fp, #-72]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-64]
	ldr	r1, [fp, #-64]
	ldr	r0, [fp, #-72]
	bl	Z3_mk_uninterpreted_sort
	str	r0, [fp, #-60]
	ldr	r1, .L203+16
	ldr	r0, [fp, #-72]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-56]
	ldr	r3, [fp, #-60]
	str	r3, [fp, #-12]
	sub	r2, fp, #12
	ldr	r3, [fp, #-60]
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #1
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-72]
	bl	Z3_mk_func_decl
	str	r0, [fp, #-52]
	ldr	r1, .L203+20
	ldr	r0, [fp, #-72]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-48]
	ldr	r1, .L203+24
	ldr	r0, [fp, #-72]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-44]
	ldr	r2, [fp, #-60]
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-72]
	bl	Z3_mk_const
	str	r0, [fp, #-40]
	ldr	r2, [fp, #-60]
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-72]
	bl	Z3_mk_const
	str	r0, [fp, #-36]
	ldr	r2, [fp, #-40]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-72]
	bl	mk_unary_app
	str	r0, [fp, #-32]
	ldr	r2, [fp, #-36]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-72]
	bl	mk_unary_app
	str	r0, [fp, #-28]
	ldr	r2, [fp, #-36]
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-72]
	bl	Z3_mk_eq
	str	r0, [fp, #-24]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-68]
	ldr	r0, [fp, #-72]
	bl	Z3_solver_assert
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-72]
	bl	Z3_mk_eq
	str	r0, [fp, #-20]
	ldr	r0, .L203+28
	bl	puts
	mov	r3, #1
	ldr	r2, [fp, #-20]
	ldr	r1, [fp, #-68]
	ldr	r0, [fp, #-72]
	bl	prove
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-72]
	bl	mk_unary_app
	str	r0, [fp, #-16]
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-72]
	bl	Z3_mk_eq
	str	r0, [fp, #-20]
	ldr	r0, .L203+32
	bl	puts
	mov	r3, #0
	ldr	r2, [fp, #-20]
	ldr	r1, [fp, #-68]
	ldr	r0, [fp, #-72]
	bl	prove
	ldr	r1, [fp, #-68]
	ldr	r0, [fp, #-72]
	bl	del_solver
	ldr	r0, [fp, #-72]
	bl	Z3_del_context
	nop
	ldr	r3, .L203
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L202
	bl	__stack_chk_fail
.L202:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L204:
	.align	2
.L203:
	.word	.LC75
	.word	.LC69
	.word	.LC70
	.word	.LC71
	.word	.LC72
	.word	.LC61
	.word	.LC62
	.word	.LC73
	.word	.LC74
	.size	prove_example1, .-prove_example1
	.section	.rodata
	.align	2
.LC76:
	.ascii	"\012prove_example2\000"
	.align	2
.LC77:
	.ascii	"prove_example2\000"
	.align	2
.LC78:
	.ascii	"z\000"
	.align	2
.LC79:
	.ascii	"prove: not(g(g(x) - g(y)) = g(z)), x + z <= y <= x "
	.ascii	"implies z < 0\000"
	.align	2
.LC80:
	.ascii	"disprove: not(g(g(x) - g(y)) = g(z)), x + z <= y <="
	.ascii	" x implies z < -1\000"
	.align	2
.LC81:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	prove_example2
	.syntax unified
	.arm
	.fpu softvfp
	.type	prove_example2, %function
prove_example2:
	@ args = 0, pretend = 0, frame = 104
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #112
	ldr	r3, .L207
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, .L207+4
	bl	puts
	ldr	r0, .L207+8
	bl	Z3_append_log
	bl	mk_context
	str	r0, [fp, #-104]
	ldr	r0, [fp, #-104]
	bl	mk_solver
	str	r0, [fp, #-100]
	ldr	r0, [fp, #-104]
	bl	Z3_mk_int_sort
	str	r0, [fp, #-96]
	ldr	r1, .L207+12
	ldr	r0, [fp, #-104]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-92]
	ldr	r3, [fp, #-96]
	str	r3, [fp, #-20]
	sub	r2, fp, #20
	ldr	r3, [fp, #-96]
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #1
	ldr	r1, [fp, #-92]
	ldr	r0, [fp, #-104]
	bl	Z3_mk_func_decl
	str	r0, [fp, #-88]
	ldr	r1, .L207+16
	ldr	r0, [fp, #-104]
	bl	mk_int_var
	str	r0, [fp, #-84]
	ldr	r1, .L207+20
	ldr	r0, [fp, #-104]
	bl	mk_int_var
	str	r0, [fp, #-80]
	ldr	r1, .L207+24
	ldr	r0, [fp, #-104]
	bl	mk_int_var
	str	r0, [fp, #-76]
	ldr	r2, [fp, #-84]
	ldr	r1, [fp, #-88]
	ldr	r0, [fp, #-104]
	bl	mk_unary_app
	str	r0, [fp, #-72]
	ldr	r2, [fp, #-80]
	ldr	r1, [fp, #-88]
	ldr	r0, [fp, #-104]
	bl	mk_unary_app
	str	r0, [fp, #-68]
	ldr	r2, [fp, #-76]
	ldr	r1, [fp, #-88]
	ldr	r0, [fp, #-104]
	bl	mk_unary_app
	str	r0, [fp, #-64]
	mov	r1, #0
	ldr	r0, [fp, #-104]
	bl	mk_int
	str	r0, [fp, #-60]
	ldr	r3, [fp, #-72]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-68]
	str	r3, [fp, #-12]
	sub	r3, fp, #16
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-104]
	bl	Z3_mk_sub
	str	r0, [fp, #-56]
	ldr	r2, [fp, #-56]
	ldr	r1, [fp, #-88]
	ldr	r0, [fp, #-104]
	bl	mk_unary_app
	str	r0, [fp, #-52]
	ldr	r2, [fp, #-64]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-104]
	bl	Z3_mk_eq
	str	r0, [fp, #-48]
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-104]
	bl	Z3_mk_not
	str	r0, [fp, #-44]
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-100]
	ldr	r0, [fp, #-104]
	bl	Z3_solver_assert
	ldr	r3, [fp, #-84]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-76]
	str	r3, [fp, #-12]
	sub	r3, fp, #16
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-104]
	bl	Z3_mk_add
	str	r0, [fp, #-40]
	ldr	r2, [fp, #-80]
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-104]
	bl	Z3_mk_le
	str	r0, [fp, #-36]
	ldr	r2, [fp, #-36]
	ldr	r1, [fp, #-100]
	ldr	r0, [fp, #-104]
	bl	Z3_solver_assert
	ldr	r2, [fp, #-84]
	ldr	r1, [fp, #-80]
	ldr	r0, [fp, #-104]
	bl	Z3_mk_le
	str	r0, [fp, #-32]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-100]
	ldr	r0, [fp, #-104]
	bl	Z3_solver_assert
	ldr	r2, [fp, #-60]
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-104]
	bl	Z3_mk_lt
	str	r0, [fp, #-28]
	ldr	r0, .L207+28
	bl	puts
	mov	r3, #1
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-100]
	ldr	r0, [fp, #-104]
	bl	prove
	mvn	r1, #0
	ldr	r0, [fp, #-104]
	bl	mk_int
	str	r0, [fp, #-24]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-104]
	bl	Z3_mk_lt
	str	r0, [fp, #-28]
	ldr	r0, .L207+32
	bl	puts
	mov	r3, #0
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-100]
	ldr	r0, [fp, #-104]
	bl	prove
	ldr	r1, [fp, #-100]
	ldr	r0, [fp, #-104]
	bl	del_solver
	ldr	r0, [fp, #-104]
	bl	Z3_del_context
	nop
	ldr	r3, .L207
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L206
	bl	__stack_chk_fail
.L206:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L208:
	.align	2
.L207:
	.word	.LC81
	.word	.LC76
	.word	.LC77
	.word	.LC72
	.word	.LC61
	.word	.LC62
	.word	.LC78
	.word	.LC79
	.word	.LC80
	.size	prove_example2, .-prove_example2
	.section	.rodata
	.align	2
.LC82:
	.ascii	"\012push_pop_example1\000"
	.align	2
.LC83:
	.ascii	"push_pop_example1\000"
	.align	2
.LC84:
	.ascii	"100000000000000000000000000000000000000000000000000"
	.ascii	"0000\000"
	.align	2
.LC85:
	.ascii	"3\000"
	.align	2
.LC86:
	.ascii	"assert: x >= 'big number'\000"
	.align	2
.LC87:
	.ascii	"push\000"
	.align	2
.LC88:
	.ascii	"number of scopes: %d\012\000"
	.align	2
.LC89:
	.ascii	"assert: x <= 3\000"
	.align	2
.LC90:
	.ascii	"pop\000"
	.align	2
.LC91:
	.ascii	"assert: y > x\000"
	.text
	.align	2
	.global	push_pop_example1
	.syntax unified
	.arm
	.fpu softvfp
	.type	push_pop_example1, %function
push_pop_example1:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	ldr	r0, .L210
	bl	puts
	ldr	r0, .L210+4
	bl	Z3_append_log
	bl	mk_context
	str	r0, [fp, #-52]
	ldr	r0, [fp, #-52]
	bl	mk_solver
	str	r0, [fp, #-48]
	ldr	r0, [fp, #-52]
	bl	Z3_mk_int_sort
	str	r0, [fp, #-44]
	ldr	r2, [fp, #-44]
	ldr	r1, .L210+8
	ldr	r0, [fp, #-52]
	bl	Z3_mk_numeral
	str	r0, [fp, #-40]
	ldr	r2, [fp, #-44]
	ldr	r1, .L210+12
	ldr	r0, [fp, #-52]
	bl	Z3_mk_numeral
	str	r0, [fp, #-36]
	ldr	r1, .L210+16
	ldr	r0, [fp, #-52]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-32]
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-52]
	bl	Z3_mk_const
	str	r0, [fp, #-28]
	ldr	r2, [fp, #-40]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-52]
	bl	Z3_mk_ge
	str	r0, [fp, #-24]
	ldr	r0, .L210+20
	bl	puts
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-52]
	bl	Z3_solver_assert
	ldr	r0, .L210+24
	bl	puts
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-52]
	bl	Z3_solver_push
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-52]
	bl	Z3_solver_get_num_scopes
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L210+28
	bl	printf
	ldr	r2, [fp, #-36]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-52]
	bl	Z3_mk_le
	str	r0, [fp, #-20]
	ldr	r0, .L210+32
	bl	puts
	ldr	r2, [fp, #-20]
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-52]
	bl	Z3_solver_assert
	mvn	r2, #0
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-52]
	bl	check2
	ldr	r0, .L210+36
	bl	puts
	mov	r2, #1
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-52]
	bl	Z3_solver_pop
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-52]
	bl	Z3_solver_get_num_scopes
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L210+28
	bl	printf
	mov	r2, #1
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-52]
	bl	check2
	ldr	r1, .L210+40
	ldr	r0, [fp, #-52]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-16]
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-52]
	bl	Z3_mk_const
	str	r0, [fp, #-12]
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-52]
	bl	Z3_mk_gt
	str	r0, [fp, #-8]
	ldr	r0, .L210+44
	bl	puts
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-52]
	bl	Z3_solver_assert
	mov	r2, #1
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-52]
	bl	check2
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-52]
	bl	del_solver
	ldr	r0, [fp, #-52]
	bl	Z3_del_context
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L211:
	.align	2
.L210:
	.word	.LC82
	.word	.LC83
	.word	.LC84
	.word	.LC85
	.word	.LC61
	.word	.LC86
	.word	.LC87
	.word	.LC88
	.word	.LC89
	.word	.LC90
	.word	.LC62
	.word	.LC91
	.size	push_pop_example1, .-push_pop_example1
	.section	.rodata
	.align	2
.LC92:
	.ascii	"\012quantifier_example1\000"
	.align	2
.LC93:
	.ascii	"quantifier_example1\000"
	.align	2
.LC94:
	.ascii	"10\000"
	.align	2
.LC95:
	.ascii	"smt.mbqi.max_iterations\000"
	.align	2
.LC96:
	.ascii	"v\000"
	.align	2
.LC97:
	.ascii	"w\000"
	.align	2
.LC98:
	.ascii	"prove: f(x, y) = f(w, v) implies y = v\000"
	.align	2
.LC99:
	.ascii	"disprove: f(x, y) = f(w, v) implies x = w\000"
	.align	2
.LC100:
	.ascii	"that is: not(f(x, y) = f(w, v) implies x = w) is sa"
	.ascii	"tisfiable\000"
	.align	2
.LC101:
	.ascii	"reason for last failure: %s\012\000"
	.align	2
.LC102:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	quantifier_example1
	.syntax unified
	.arm
	.fpu softvfp
	.type	quantifier_example1, %function
quantifier_example1:
	@ args = 0, pretend = 0, frame = 80
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #88
	ldr	r3, .L214
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, .L214+4
	bl	puts
	ldr	r0, .L214+8
	bl	Z3_append_log
	bl	Z3_mk_config
	str	r0, [fp, #-80]
	ldr	r1, .L214+12
	ldr	r0, .L214+16
	bl	Z3_global_param_set
	ldr	r1, .L214+20
	ldr	r0, [fp, #-80]
	bl	mk_context_custom
	str	r0, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	Z3_del_config
	ldr	r0, [fp, #-76]
	bl	mk_solver
	str	r0, [fp, #-72]
	ldr	r0, [fp, #-76]
	bl	Z3_mk_int_sort
	str	r0, [fp, #-68]
	ldr	r1, .L214+24
	ldr	r0, [fp, #-76]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-64]
	ldr	r3, [fp, #-68]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-68]
	str	r3, [fp, #-12]
	sub	r2, fp, #16
	ldr	r3, [fp, #-68]
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #2
	ldr	r1, [fp, #-64]
	ldr	r0, [fp, #-76]
	bl	Z3_mk_func_decl
	str	r0, [fp, #-60]
	mov	r3, #1
	ldr	r2, [fp, #-60]
	ldr	r1, [fp, #-72]
	ldr	r0, [fp, #-76]
	bl	assert_inj_axiom
	ldr	r1, .L214+28
	ldr	r0, [fp, #-76]
	bl	mk_int_var
	str	r0, [fp, #-56]
	ldr	r1, .L214+32
	ldr	r0, [fp, #-76]
	bl	mk_int_var
	str	r0, [fp, #-52]
	ldr	r1, .L214+36
	ldr	r0, [fp, #-76]
	bl	mk_int_var
	str	r0, [fp, #-48]
	ldr	r1, .L214+40
	ldr	r0, [fp, #-76]
	bl	mk_int_var
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #-56]
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-76]
	bl	mk_binary_app
	str	r0, [fp, #-40]
	ldr	r3, [fp, #-48]
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-76]
	bl	mk_binary_app
	str	r0, [fp, #-36]
	ldr	r2, [fp, #-36]
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-76]
	bl	Z3_mk_eq
	str	r0, [fp, #-32]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-72]
	ldr	r0, [fp, #-76]
	bl	Z3_solver_assert
	ldr	r2, [fp, #-48]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-76]
	bl	Z3_mk_eq
	str	r0, [fp, #-28]
	ldr	r0, .L214+44
	bl	puts
	mov	r3, #1
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-72]
	ldr	r0, [fp, #-76]
	bl	prove
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-76]
	bl	Z3_mk_eq
	str	r0, [fp, #-24]
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-76]
	bl	Z3_mk_not
	str	r0, [fp, #-20]
	ldr	r2, [fp, #-20]
	ldr	r1, [fp, #-72]
	ldr	r0, [fp, #-76]
	bl	Z3_solver_assert
	ldr	r0, .L214+48
	bl	puts
	ldr	r0, .L214+52
	bl	puts
	mov	r2, #0
	ldr	r1, [fp, #-72]
	ldr	r0, [fp, #-76]
	bl	check2
	ldr	r1, [fp, #-72]
	ldr	r0, [fp, #-76]
	bl	Z3_solver_get_reason_unknown
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L214+56
	bl	printf
	ldr	r1, [fp, #-72]
	ldr	r0, [fp, #-76]
	bl	del_solver
	ldr	r0, [fp, #-76]
	bl	Z3_del_context
	bl	Z3_global_param_reset_all
	nop
	ldr	r3, .L214
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L213
	bl	__stack_chk_fail
.L213:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L215:
	.align	2
.L214:
	.word	.LC102
	.word	.LC92
	.word	.LC93
	.word	.LC94
	.word	.LC95
	.word	error_handler
	.word	.LC24
	.word	.LC61
	.word	.LC62
	.word	.LC96
	.word	.LC97
	.word	.LC98
	.word	.LC99
	.word	.LC100
	.word	.LC101
	.size	quantifier_example1, .-quantifier_example1
	.section	.rodata
	.align	2
.LC103:
	.ascii	"\012array_example1\000"
	.align	2
.LC104:
	.ascii	"array_example1\000"
	.align	2
.LC105:
	.ascii	"a1\000"
	.align	2
.LC106:
	.ascii	"a2\000"
	.align	2
.LC107:
	.ascii	"i1\000"
	.align	2
.LC108:
	.ascii	"i2\000"
	.align	2
.LC109:
	.ascii	"i3\000"
	.align	2
.LC110:
	.ascii	"v1\000"
	.align	2
.LC111:
	.ascii	"v2\000"
	.align	2
.LC112:
	.ascii	"prove: store(a1, i1, v1) = store(a2, i2, v2) implie"
	.ascii	"s (i1 = i3 or i2 = i3 or select(a1, i3) = select(a2"
	.ascii	", i3))\000"
	.align	2
.LC113:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	array_example1
	.syntax unified
	.arm
	.fpu softvfp
	.type	array_example1, %function
array_example1:
	@ args = 0, pretend = 0, frame = 88
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #88
	ldr	r3, .L218
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	bl	mk_context
	str	r0, [fp, #-92]
	ldr	r0, [fp, #-92]
	bl	mk_solver
	str	r0, [fp, #-88]
	ldr	r0, .L218+4
	bl	puts
	ldr	r0, .L218+8
	bl	Z3_append_log
	ldr	r0, [fp, #-92]
	bl	Z3_mk_int_sort
	str	r0, [fp, #-84]
	ldr	r2, [fp, #-84]
	ldr	r1, [fp, #-84]
	ldr	r0, [fp, #-92]
	bl	Z3_mk_array_sort
	str	r0, [fp, #-80]
	ldr	r2, [fp, #-80]
	ldr	r1, .L218+12
	ldr	r0, [fp, #-92]
	bl	mk_var
	str	r0, [fp, #-76]
	ldr	r2, [fp, #-80]
	ldr	r1, .L218+16
	ldr	r0, [fp, #-92]
	bl	mk_var
	str	r0, [fp, #-72]
	ldr	r2, [fp, #-84]
	ldr	r1, .L218+20
	ldr	r0, [fp, #-92]
	bl	mk_var
	str	r0, [fp, #-68]
	ldr	r2, [fp, #-84]
	ldr	r1, .L218+24
	ldr	r0, [fp, #-92]
	bl	mk_var
	str	r0, [fp, #-64]
	ldr	r2, [fp, #-84]
	ldr	r1, .L218+28
	ldr	r0, [fp, #-92]
	bl	mk_var
	str	r0, [fp, #-60]
	ldr	r2, [fp, #-84]
	ldr	r1, .L218+32
	ldr	r0, [fp, #-92]
	bl	mk_var
	str	r0, [fp, #-56]
	ldr	r2, [fp, #-84]
	ldr	r1, .L218+36
	ldr	r0, [fp, #-92]
	bl	mk_var
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-56]
	ldr	r2, [fp, #-68]
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-92]
	bl	Z3_mk_store
	str	r0, [fp, #-48]
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #-64]
	ldr	r1, [fp, #-72]
	ldr	r0, [fp, #-92]
	bl	Z3_mk_store
	str	r0, [fp, #-44]
	ldr	r2, [fp, #-60]
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-92]
	bl	Z3_mk_select
	str	r0, [fp, #-40]
	ldr	r2, [fp, #-60]
	ldr	r1, [fp, #-72]
	ldr	r0, [fp, #-92]
	bl	Z3_mk_select
	str	r0, [fp, #-36]
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-92]
	bl	Z3_mk_eq
	str	r0, [fp, #-32]
	ldr	r2, [fp, #-60]
	ldr	r1, [fp, #-68]
	ldr	r0, [fp, #-92]
	bl	Z3_mk_eq
	mov	r3, r0
	str	r3, [fp, #-20]
	ldr	r2, [fp, #-60]
	ldr	r1, [fp, #-64]
	ldr	r0, [fp, #-92]
	bl	Z3_mk_eq
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-92]
	bl	Z3_mk_eq
	mov	r3, r0
	str	r3, [fp, #-12]
	sub	r3, fp, #20
	mov	r2, r3
	mov	r1, #3
	ldr	r0, [fp, #-92]
	bl	Z3_mk_or
	str	r0, [fp, #-28]
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-92]
	bl	Z3_mk_implies
	str	r0, [fp, #-24]
	ldr	r0, .L218+40
	bl	puts
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-92]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r0, r3
	bl	puts
	mov	r3, #1
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-88]
	ldr	r0, [fp, #-92]
	bl	prove
	ldr	r1, [fp, #-88]
	ldr	r0, [fp, #-92]
	bl	del_solver
	ldr	r0, [fp, #-92]
	bl	Z3_del_context
	nop
	ldr	r3, .L218
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L217
	bl	__stack_chk_fail
.L217:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L219:
	.align	2
.L218:
	.word	.LC113
	.word	.LC103
	.word	.LC104
	.word	.LC105
	.word	.LC106
	.word	.LC107
	.word	.LC108
	.word	.LC109
	.word	.LC110
	.word	.LC111
	.word	.LC112
	.size	array_example1, .-array_example1
	.section	.rodata
	.align	2
.LC114:
	.ascii	"\012array_example2\000"
	.align	2
.LC115:
	.ascii	"array_example2\000"
	.align	2
.LC116:
	.ascii	"n = %d\012\000"
	.align	2
.LC117:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	array_example2
	.syntax unified
	.arm
	.fpu softvfp
	.type	array_example2, %function
array_example2:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	ldr	r3, .L228
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, .L228+4
	bl	puts
	ldr	r0, .L228+8
	bl	Z3_append_log
	mov	r3, #2
	str	r3, [fp, #-56]
	b	.L221
.L226:
	ldr	r1, [fp, #-56]
	ldr	r0, .L228+12
	bl	printf
	bl	mk_context
	str	r0, [fp, #-52]
	ldr	r0, [fp, #-52]
	bl	mk_solver
	str	r0, [fp, #-48]
	ldr	r0, [fp, #-52]
	bl	Z3_mk_bool_sort
	str	r0, [fp, #-44]
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-52]
	bl	Z3_mk_array_sort
	str	r0, [fp, #-40]
	mov	r3, #0
	str	r3, [fp, #-60]
	b	.L222
.L223:
	ldr	r3, [fp, #-60]
	mov	r1, r3
	ldr	r0, [fp, #-52]
	bl	Z3_mk_int_symbol
	str	r0, [fp, #-32]
	ldr	r2, [fp, #-40]
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-52]
	bl	Z3_mk_const
	mov	r2, r0
	ldr	r3, [fp, #-60]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	str	r2, [r3, #-24]
	ldr	r3, [fp, #-60]
	add	r3, r3, #1
	str	r3, [fp, #-60]
.L222:
	ldr	r2, [fp, #-60]
	ldr	r3, [fp, #-56]
	cmp	r2, r3
	bcc	.L223
	sub	r3, fp, #28
	mov	r2, r3
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-52]
	bl	Z3_mk_distinct
	str	r0, [fp, #-36]
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-52]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r0, r3
	bl	puts
	ldr	r2, [fp, #-36]
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-52]
	bl	Z3_solver_assert
	ldr	r3, [fp, #-56]
	cmp	r3, #4
	bhi	.L224
	mov	r3, #1
	b	.L225
.L224:
	mvn	r3, #0
.L225:
	mov	r2, r3
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-52]
	bl	check2
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-52]
	bl	del_solver
	ldr	r0, [fp, #-52]
	bl	Z3_del_context
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	str	r3, [fp, #-56]
.L221:
	ldr	r3, [fp, #-56]
	cmp	r3, #5
	bls	.L226
	nop
	ldr	r3, .L228
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L227
	bl	__stack_chk_fail
.L227:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L229:
	.align	2
.L228:
	.word	.LC117
	.word	.LC114
	.word	.LC115
	.word	.LC116
	.size	array_example2, .-array_example2
	.section	.rodata
	.align	2
.LC118:
	.ascii	"\012array_example3\000"
	.align	2
.LC119:
	.ascii	"array_example3\000"
	.align	2
.LC120:
	.ascii	"type must be an array type\000"
	.align	2
.LC121:
	.ascii	"domain: \000"
	.align	2
.LC122:
	.ascii	"range:  \000"
	.align	2
.LC123:
	.ascii	"invalid array type\000"
	.text
	.align	2
	.global	array_example3
	.syntax unified
	.arm
	.fpu softvfp
	.type	array_example3, %function
array_example3:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	bl	mk_context
	str	r0, [fp, #-32]
	ldr	r0, [fp, #-32]
	bl	mk_solver
	str	r0, [fp, #-28]
	ldr	r0, .L234
	bl	puts
	ldr	r0, .L234+4
	bl	Z3_append_log
	ldr	r0, [fp, #-32]
	bl	Z3_mk_bool_sort
	str	r0, [fp, #-24]
	ldr	r0, [fp, #-32]
	bl	Z3_mk_int_sort
	str	r0, [fp, #-20]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-32]
	bl	Z3_mk_array_sort
	str	r0, [fp, #-16]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-32]
	bl	Z3_get_sort_kind
	mov	r3, r0
	cmp	r3, #5
	beq	.L231
	ldr	r0, .L234+8
	bl	exitf
.L231:
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-32]
	bl	Z3_get_array_sort_domain
	str	r0, [fp, #-12]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-32]
	bl	Z3_get_array_sort_range
	str	r0, [fp, #-8]
	ldr	r0, .L234+12
	bl	printf
	ldr	r3, .L234+16
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	display_sort
	mov	r0, #10
	bl	putchar
	ldr	r0, .L234+20
	bl	printf
	ldr	r3, .L234+16
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	display_sort
	mov	r0, #10
	bl	putchar
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-12]
	cmp	r2, r3
	bne	.L232
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-8]
	cmp	r2, r3
	beq	.L233
.L232:
	ldr	r0, .L234+24
	bl	exitf
.L233:
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-32]
	bl	del_solver
	ldr	r0, [fp, #-32]
	bl	Z3_del_context
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L235:
	.align	2
.L234:
	.word	.LC118
	.word	.LC119
	.word	.LC120
	.word	.LC121
	.word	stdout
	.word	.LC122
	.word	.LC123
	.size	array_example3, .-array_example3
	.section	.rodata
	.align	2
.LC124:
	.ascii	"\012tuple_example1\000"
	.align	2
.LC125:
	.ascii	"tuple_example1\000"
	.align	2
.LC126:
	.ascii	"mk_pair\000"
	.align	2
.LC127:
	.ascii	"get_x\000"
	.align	2
.LC128:
	.ascii	"get_y\000"
	.align	2
.LC129:
	.ascii	"tuple_sort: \000"
	.align	2
.LC130:
	.ascii	"1\000"
	.align	2
.LC131:
	.ascii	"prove: get_x(mk_pair(x, y)) = 1 implies x = 1\000"
	.align	2
.LC132:
	.ascii	"disprove: get_x(mk_pair(x, y)) = 1 implies y = 1\000"
	.align	2
.LC133:
	.ascii	"p1\000"
	.align	2
.LC134:
	.ascii	"p2\000"
	.align	2
.LC135:
	.ascii	"prove: get_x(p1) = get_x(p2) and get_y(p1) = get_y("
	.ascii	"p2) implies p1 = p2\000"
	.align	2
.LC136:
	.ascii	"disprove: get_x(p1) = get_x(p2) implies p1 = p2\000"
	.align	2
.LC137:
	.ascii	"prove: p2 = update(p1, 0, 10) implies get_x(p2) = 1"
	.ascii	"0\000"
	.align	2
.LC138:
	.ascii	"disprove: p2 = update(p1, 0, 10) implies get_y(p2) "
	.ascii	"= 10\000"
	.align	2
.LC139:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	tuple_example1
	.syntax unified
	.arm
	.fpu softvfp
	.type	tuple_example1, %function
tuple_example1:
	@ args = 0, pretend = 0, frame = 184
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #200
	ldr	r3, .L238
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	bl	mk_context
	str	r0, [fp, #-180]
	ldr	r0, [fp, #-180]
	bl	mk_solver
	str	r0, [fp, #-176]
	ldr	r0, .L238+4
	bl	puts
	ldr	r0, .L238+8
	bl	Z3_append_log
	ldr	r0, [fp, #-180]
	bl	Z3_mk_real_sort
	str	r0, [fp, #-172]
	ldr	r1, .L238+12
	ldr	r0, [fp, #-180]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-168]
	ldr	r1, .L238+16
	ldr	r0, [fp, #-180]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-40]
	ldr	r1, .L238+20
	ldr	r0, [fp, #-180]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-172]
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-172]
	str	r3, [fp, #-28]
	sub	r2, fp, #40
	sub	r3, fp, #24
	str	r3, [sp, #8]
	sub	r3, fp, #184
	str	r3, [sp, #4]
	sub	r3, fp, #32
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #2
	ldr	r1, [fp, #-168]
	ldr	r0, [fp, #-180]
	bl	Z3_mk_tuple_sort
	str	r0, [fp, #-164]
	ldr	r3, [fp, #-24]
	str	r3, [fp, #-160]
	ldr	r3, [fp, #-20]
	str	r3, [fp, #-156]
	ldr	r0, .L238+24
	bl	printf
	ldr	r3, .L238+28
	ldr	r3, [r3]
	ldr	r2, [fp, #-164]
	mov	r1, r3
	ldr	r0, [fp, #-180]
	bl	display_sort
	mov	r0, #10
	bl	putchar
	ldr	r1, .L238+32
	ldr	r0, [fp, #-180]
	bl	mk_real_var
	str	r0, [fp, #-152]
	ldr	r1, .L238+36
	ldr	r0, [fp, #-180]
	bl	mk_real_var
	str	r0, [fp, #-148]
	ldr	r1, [fp, #-184]
	ldr	r3, [fp, #-148]
	ldr	r2, [fp, #-152]
	ldr	r0, [fp, #-180]
	bl	mk_binary_app
	str	r0, [fp, #-144]
	ldr	r2, [fp, #-144]
	ldr	r1, [fp, #-160]
	ldr	r0, [fp, #-180]
	bl	mk_unary_app
	str	r0, [fp, #-140]
	ldr	r2, [fp, #-172]
	ldr	r1, .L238+40
	ldr	r0, [fp, #-180]
	bl	Z3_mk_numeral
	str	r0, [fp, #-136]
	ldr	r2, [fp, #-136]
	ldr	r1, [fp, #-140]
	ldr	r0, [fp, #-180]
	bl	Z3_mk_eq
	str	r0, [fp, #-132]
	ldr	r2, [fp, #-136]
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-180]
	bl	Z3_mk_eq
	str	r0, [fp, #-128]
	ldr	r2, [fp, #-128]
	ldr	r1, [fp, #-132]
	ldr	r0, [fp, #-180]
	bl	Z3_mk_implies
	str	r0, [fp, #-124]
	ldr	r0, .L238+44
	bl	puts
	mov	r3, #1
	ldr	r2, [fp, #-124]
	ldr	r1, [fp, #-176]
	ldr	r0, [fp, #-180]
	bl	prove
	ldr	r2, [fp, #-136]
	ldr	r1, [fp, #-148]
	ldr	r0, [fp, #-180]
	bl	Z3_mk_eq
	str	r0, [fp, #-120]
	ldr	r2, [fp, #-120]
	ldr	r1, [fp, #-132]
	ldr	r0, [fp, #-180]
	bl	Z3_mk_implies
	str	r0, [fp, #-124]
	ldr	r0, .L238+48
	bl	puts
	mov	r3, #0
	ldr	r2, [fp, #-124]
	ldr	r1, [fp, #-176]
	ldr	r0, [fp, #-180]
	bl	prove
	ldr	r2, [fp, #-164]
	ldr	r1, .L238+52
	ldr	r0, [fp, #-180]
	bl	mk_var
	str	r0, [fp, #-116]
	ldr	r2, [fp, #-164]
	ldr	r1, .L238+56
	ldr	r0, [fp, #-180]
	bl	mk_var
	str	r0, [fp, #-112]
	ldr	r2, [fp, #-116]
	ldr	r1, [fp, #-160]
	ldr	r0, [fp, #-180]
	bl	mk_unary_app
	str	r0, [fp, #-108]
	ldr	r2, [fp, #-116]
	ldr	r1, [fp, #-156]
	ldr	r0, [fp, #-180]
	bl	mk_unary_app
	str	r0, [fp, #-104]
	ldr	r2, [fp, #-112]
	ldr	r1, [fp, #-160]
	ldr	r0, [fp, #-180]
	bl	mk_unary_app
	str	r0, [fp, #-100]
	ldr	r2, [fp, #-112]
	ldr	r1, [fp, #-156]
	ldr	r0, [fp, #-180]
	bl	mk_unary_app
	str	r0, [fp, #-96]
	ldr	r2, [fp, #-100]
	ldr	r1, [fp, #-108]
	ldr	r0, [fp, #-180]
	bl	Z3_mk_eq
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r2, [fp, #-96]
	ldr	r1, [fp, #-104]
	ldr	r0, [fp, #-180]
	bl	Z3_mk_eq
	mov	r3, r0
	str	r3, [fp, #-12]
	sub	r3, fp, #16
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-180]
	bl	Z3_mk_and
	str	r0, [fp, #-92]
	ldr	r2, [fp, #-112]
	ldr	r1, [fp, #-116]
	ldr	r0, [fp, #-180]
	bl	Z3_mk_eq
	str	r0, [fp, #-88]
	ldr	r2, [fp, #-88]
	ldr	r1, [fp, #-92]
	ldr	r0, [fp, #-180]
	bl	Z3_mk_implies
	str	r0, [fp, #-84]
	ldr	r0, .L238+60
	bl	puts
	mov	r3, #1
	ldr	r2, [fp, #-84]
	ldr	r1, [fp, #-176]
	ldr	r0, [fp, #-180]
	bl	prove
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-88]
	mov	r1, r3
	ldr	r0, [fp, #-180]
	bl	Z3_mk_implies
	str	r0, [fp, #-84]
	ldr	r0, .L238+64
	bl	puts
	mov	r3, #0
	ldr	r2, [fp, #-84]
	ldr	r1, [fp, #-176]
	ldr	r0, [fp, #-180]
	bl	prove
	ldr	r2, [fp, #-164]
	ldr	r1, .L238+52
	ldr	r0, [fp, #-180]
	bl	mk_var
	str	r0, [fp, #-80]
	ldr	r2, [fp, #-164]
	ldr	r1, .L238+56
	ldr	r0, [fp, #-180]
	bl	mk_var
	str	r0, [fp, #-76]
	ldr	r2, [fp, #-172]
	ldr	r1, .L238+40
	ldr	r0, [fp, #-180]
	bl	Z3_mk_numeral
	str	r0, [fp, #-72]
	ldr	r2, [fp, #-172]
	ldr	r1, .L238+68
	ldr	r0, [fp, #-180]
	bl	Z3_mk_numeral
	str	r0, [fp, #-68]
	ldr	r3, [fp, #-68]
	mov	r2, #0
	ldr	r1, [fp, #-80]
	ldr	r0, [fp, #-180]
	bl	mk_tuple_update
	str	r0, [fp, #-64]
	ldr	r2, [fp, #-64]
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-180]
	bl	Z3_mk_eq
	str	r0, [fp, #-60]
	ldr	r2, [fp, #-76]
	ldr	r1, [fp, #-160]
	ldr	r0, [fp, #-180]
	bl	mk_unary_app
	str	r0, [fp, #-56]
	ldr	r2, [fp, #-68]
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-180]
	bl	Z3_mk_eq
	str	r0, [fp, #-52]
	ldr	r2, [fp, #-52]
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-180]
	bl	Z3_mk_implies
	str	r0, [fp, #-48]
	ldr	r0, .L238+72
	bl	puts
	mov	r3, #1
	ldr	r2, [fp, #-48]
	ldr	r1, [fp, #-176]
	ldr	r0, [fp, #-180]
	bl	prove
	ldr	r2, [fp, #-76]
	ldr	r1, [fp, #-156]
	ldr	r0, [fp, #-180]
	bl	mk_unary_app
	str	r0, [fp, #-44]
	ldr	r2, [fp, #-68]
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-180]
	bl	Z3_mk_eq
	str	r0, [fp, #-52]
	ldr	r2, [fp, #-52]
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-180]
	bl	Z3_mk_implies
	str	r0, [fp, #-48]
	ldr	r0, .L238+76
	bl	puts
	mov	r3, #0
	ldr	r2, [fp, #-48]
	ldr	r1, [fp, #-176]
	ldr	r0, [fp, #-180]
	bl	prove
	ldr	r1, [fp, #-176]
	ldr	r0, [fp, #-180]
	bl	del_solver
	ldr	r0, [fp, #-180]
	bl	Z3_del_context
	nop
	ldr	r3, .L238
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L237
	bl	__stack_chk_fail
.L237:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L239:
	.align	2
.L238:
	.word	.LC139
	.word	.LC124
	.word	.LC125
	.word	.LC126
	.word	.LC127
	.word	.LC128
	.word	.LC129
	.word	stdout
	.word	.LC61
	.word	.LC62
	.word	.LC130
	.word	.LC131
	.word	.LC132
	.word	.LC133
	.word	.LC134
	.word	.LC135
	.word	.LC136
	.word	.LC94
	.word	.LC137
	.word	.LC138
	.size	tuple_example1, .-tuple_example1
	.section	.rodata
	.align	2
.LC140:
	.ascii	"\012bitvector_example1\000"
	.align	2
.LC141:
	.ascii	"bitvector_example1\000"
	.align	2
.LC142:
	.ascii	"0\000"
	.align	2
.LC143:
	.ascii	"disprove: x - 10 <= 0 IFF x <= 10 for (32-bit) mach"
	.ascii	"ine integers\000"
	.text
	.align	2
	.global	bitvector_example1
	.syntax unified
	.arm
	.fpu softvfp
	.type	bitvector_example1, %function
bitvector_example1:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	bl	mk_context
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-44]
	bl	mk_solver
	str	r0, [fp, #-40]
	ldr	r0, .L241
	bl	puts
	ldr	r0, .L241+4
	bl	Z3_append_log
	mov	r1, #32
	ldr	r0, [fp, #-44]
	bl	Z3_mk_bv_sort
	str	r0, [fp, #-36]
	ldr	r2, [fp, #-36]
	ldr	r1, .L241+8
	ldr	r0, [fp, #-44]
	bl	mk_var
	str	r0, [fp, #-32]
	ldr	r2, [fp, #-36]
	ldr	r1, .L241+12
	ldr	r0, [fp, #-44]
	bl	Z3_mk_numeral
	str	r0, [fp, #-28]
	ldr	r2, [fp, #-36]
	ldr	r1, .L241+16
	ldr	r0, [fp, #-44]
	bl	Z3_mk_numeral
	str	r0, [fp, #-24]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-44]
	bl	Z3_mk_bvsub
	str	r0, [fp, #-20]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-44]
	bl	Z3_mk_bvsle
	str	r0, [fp, #-16]
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-44]
	bl	Z3_mk_bvsle
	str	r0, [fp, #-12]
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-44]
	bl	Z3_mk_iff
	str	r0, [fp, #-8]
	ldr	r0, .L241+20
	bl	puts
	mov	r3, #0
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-44]
	bl	prove
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-44]
	bl	del_solver
	ldr	r0, [fp, #-44]
	bl	Z3_del_context
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L242:
	.align	2
.L241:
	.word	.LC140
	.word	.LC141
	.word	.LC61
	.word	.LC142
	.word	.LC94
	.word	.LC143
	.size	bitvector_example1, .-bitvector_example1
	.section	.rodata
	.align	2
.LC144:
	.ascii	"103\000"
	.align	2
.LC145:
	.ascii	"\012bitvector_example2\000"
	.align	2
.LC146:
	.ascii	"bitvector_example2\000"
	.align	2
.LC147:
	.ascii	"find values of x and y, such that x ^ y - 103 == x "
	.ascii	"* y\000"
	.text
	.align	2
	.global	bitvector_example2
	.syntax unified
	.arm
	.fpu softvfp
	.type	bitvector_example2, %function
bitvector_example2:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	bl	mk_context
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-44]
	bl	mk_solver
	str	r0, [fp, #-40]
	mov	r1, #32
	ldr	r0, [fp, #-44]
	bl	Z3_mk_bv_sort
	str	r0, [fp, #-36]
	ldr	r2, [fp, #-36]
	ldr	r1, .L244
	ldr	r0, [fp, #-44]
	bl	mk_var
	str	r0, [fp, #-32]
	ldr	r2, [fp, #-36]
	ldr	r1, .L244+4
	ldr	r0, [fp, #-44]
	bl	mk_var
	str	r0, [fp, #-28]
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-44]
	bl	Z3_mk_bvxor
	str	r0, [fp, #-24]
	ldr	r2, [fp, #-36]
	ldr	r1, .L244+8
	ldr	r0, [fp, #-44]
	bl	Z3_mk_numeral
	str	r0, [fp, #-20]
	ldr	r2, [fp, #-20]
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-44]
	bl	Z3_mk_bvsub
	str	r0, [fp, #-16]
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-44]
	bl	Z3_mk_bvmul
	str	r0, [fp, #-12]
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-44]
	bl	Z3_mk_eq
	str	r0, [fp, #-8]
	ldr	r0, .L244+12
	bl	puts
	ldr	r0, .L244+16
	bl	Z3_append_log
	ldr	r0, .L244+20
	bl	puts
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-44]
	bl	Z3_solver_assert
	mov	r2, #1
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-44]
	bl	check
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-44]
	bl	del_solver
	ldr	r0, [fp, #-44]
	bl	Z3_del_context
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L245:
	.align	2
.L244:
	.word	.LC61
	.word	.LC62
	.word	.LC144
	.word	.LC145
	.word	.LC146
	.word	.LC147
	.size	bitvector_example2, .-bitvector_example2
	.section	.rodata
	.align	2
.LC148:
	.ascii	"\012eval_example1\000"
	.align	2
.LC149:
	.ascii	"eval_example1\000"
	.align	2
.LC150:
	.ascii	"MODEL:\012%s\000"
	.align	2
.LC151:
	.ascii	"\012evaluating x+y\000"
	.align	2
.LC152:
	.ascii	"result = \000"
	.align	2
.LC153:
	.ascii	"failed to evaluate: x+y\000"
	.align	2
.LC154:
	.ascii	"the constraints are satisfiable\000"
	.align	2
.LC155:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	eval_example1
	.syntax unified
	.arm
	.fpu softvfp
	.type	eval_example1, %function
eval_example1:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #64
	ldr	r3, .L254
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	bl	mk_context
	str	r0, [fp, #-48]
	ldr	r0, [fp, #-48]
	bl	mk_solver
	str	r0, [fp, #-44]
	mov	r3, #0
	str	r3, [fp, #-52]
	ldr	r0, .L254+4
	bl	puts
	ldr	r0, .L254+8
	bl	Z3_append_log
	ldr	r1, .L254+12
	ldr	r0, [fp, #-48]
	bl	mk_int_var
	str	r0, [fp, #-40]
	ldr	r1, .L254+16
	ldr	r0, [fp, #-48]
	bl	mk_int_var
	str	r0, [fp, #-36]
	mov	r1, #2
	ldr	r0, [fp, #-48]
	bl	mk_int
	str	r0, [fp, #-32]
	ldr	r2, [fp, #-36]
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-48]
	bl	Z3_mk_lt
	str	r0, [fp, #-28]
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-48]
	bl	Z3_solver_assert
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-48]
	bl	Z3_mk_gt
	str	r0, [fp, #-24]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-48]
	bl	Z3_solver_assert
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-48]
	bl	Z3_solver_check
	mov	r3, r0
	cmp	r3, #1
	bne	.L247
	ldr	r3, [fp, #-40]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-36]
	str	r3, [fp, #-12]
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-48]
	bl	Z3_solver_get_model
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-52]
	cmp	r3, #0
	beq	.L248
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-48]
	bl	Z3_model_inc_ref
.L248:
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-48]
	bl	Z3_model_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L254+20
	bl	printf
	sub	r3, fp, #16
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-48]
	bl	Z3_mk_add
	str	r0, [fp, #-20]
	ldr	r0, .L254+24
	bl	puts
	sub	r3, fp, #56
	str	r3, [sp]
	mov	r3, #1
	ldr	r2, [fp, #-20]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-48]
	bl	Z3_model_eval
	mov	r3, r0
	cmp	r3, #0
	beq	.L249
	ldr	r0, .L254+28
	bl	printf
	ldr	r3, .L254+32
	ldr	r3, [r3]
	ldr	r2, [fp, #-56]
	mov	r1, r3
	ldr	r0, [fp, #-48]
	bl	display_ast
	mov	r0, #10
	bl	putchar
	b	.L251
.L249:
	ldr	r0, .L254+36
	bl	exitf
	b	.L251
.L247:
	ldr	r0, .L254+40
	bl	exitf
.L251:
	ldr	r3, [fp, #-52]
	cmp	r3, #0
	beq	.L252
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-48]
	bl	Z3_model_dec_ref
.L252:
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-48]
	bl	del_solver
	ldr	r0, [fp, #-48]
	bl	Z3_del_context
	nop
	ldr	r3, .L254
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L253
	bl	__stack_chk_fail
.L253:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L255:
	.align	2
.L254:
	.word	.LC155
	.word	.LC148
	.word	.LC149
	.word	.LC61
	.word	.LC62
	.word	.LC150
	.word	.LC151
	.word	.LC152
	.word	stdout
	.word	.LC153
	.word	.LC154
	.size	eval_example1, .-eval_example1
	.section	.rodata
	.align	2
.LC156:
	.ascii	"\012two_contexts_example1\000"
	.align	2
.LC157:
	.ascii	"two_contexts_example1\000"
	.text
	.align	2
	.global	two_contexts_example1
	.syntax unified
	.arm
	.fpu softvfp
	.type	two_contexts_example1, %function
two_contexts_example1:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #20
	ldr	r0, .L257
	bl	puts
	ldr	r0, .L257+4
	bl	Z3_append_log
	bl	mk_context
	str	r0, [fp, #-28]
	bl	mk_context
	str	r0, [fp, #-24]
	mov	r1, #0
	ldr	r0, [fp, #-28]
	bl	Z3_mk_int_symbol
	mov	r4, r0
	ldr	r0, [fp, #-28]
	bl	Z3_mk_bool_sort
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, [fp, #-28]
	bl	Z3_mk_const
	str	r0, [fp, #-20]
	mov	r1, #0
	ldr	r0, [fp, #-24]
	bl	Z3_mk_int_symbol
	mov	r4, r0
	ldr	r0, [fp, #-24]
	bl	Z3_mk_bool_sort
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, [fp, #-24]
	bl	Z3_mk_const
	str	r0, [fp, #-16]
	ldr	r0, [fp, #-28]
	bl	Z3_del_context
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-24]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r0, r3
	bl	puts
	ldr	r0, [fp, #-24]
	bl	Z3_del_context
	nop
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L258:
	.align	2
.L257:
	.word	.LC156
	.word	.LC157
	.size	two_contexts_example1, .-two_contexts_example1
	.section	.rodata
	.align	2
.LC158:
	.ascii	"\012error_code_example1\000"
	.align	2
.LC159:
	.ascii	"error_code_example11\000"
	.align	2
.LC160:
	.ascii	"did not obtain value for declaration.\012\000"
	.align	2
.LC161:
	.ascii	"last call succeeded.\000"
	.align	2
.LC162:
	.ascii	"last call failed.\000"
	.align	2
.LC163:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	error_code_example1
	.syntax unified
	.arm
	.fpu softvfp
	.type	error_code_example1, %function
error_code_example1:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	ldr	r3, .L267
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, .L267+4
	bl	puts
	ldr	r0, .L267+8
	bl	Z3_append_log
	bl	Z3_mk_config
	str	r0, [fp, #-36]
	mov	r1, #0
	ldr	r0, [fp, #-36]
	bl	mk_context_custom
	str	r0, [fp, #-32]
	ldr	r0, [fp, #-36]
	bl	Z3_del_config
	ldr	r0, [fp, #-32]
	bl	mk_solver
	str	r0, [fp, #-28]
	ldr	r1, .L267+12
	ldr	r0, [fp, #-32]
	bl	mk_bool_var
	str	r0, [fp, #-24]
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-32]
	bl	Z3_to_app
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	Z3_get_app_decl
	str	r0, [fp, #-20]
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-32]
	bl	Z3_solver_assert
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-32]
	bl	Z3_solver_check
	mov	r3, r0
	cmp	r3, #1
	beq	.L260
	ldr	r0, .L267+16
	bl	exitf
.L260:
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-32]
	bl	Z3_solver_get_model
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L261
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-32]
	bl	Z3_model_inc_ref
.L261:
	sub	r3, fp, #40
	str	r3, [sp]
	mov	r3, #1
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-32]
	bl	Z3_model_eval
	mov	r3, r0
	eor	r3, r3, #1
	and	r3, r3, #255
	cmp	r3, #0
	beq	.L262
	ldr	r0, .L267+20
	bl	exitf
.L262:
	ldr	r0, [fp, #-32]
	bl	Z3_get_error_code
	mov	r3, r0
	cmp	r3, #0
	bne	.L263
	ldr	r0, .L267+24
	bl	puts
.L263:
	ldr	r3, [fp, #-40]
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	Z3_get_numeral_string
	str	r0, [fp, #-12]
	ldr	r0, [fp, #-32]
	bl	Z3_get_error_code
	mov	r3, r0
	cmp	r3, #0
	beq	.L264
	ldr	r0, .L267+28
	bl	puts
.L264:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L265
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-32]
	bl	Z3_model_dec_ref
.L265:
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-32]
	bl	del_solver
	ldr	r0, [fp, #-32]
	bl	Z3_del_context
	nop
	ldr	r3, .L267
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L266
	bl	__stack_chk_fail
.L266:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L268:
	.align	2
.L267:
	.word	.LC163
	.word	.LC158
	.word	.LC159
	.word	.LC61
	.word	.LC13
	.word	.LC160
	.word	.LC161
	.word	.LC162
	.size	error_code_example1, .-error_code_example1
	.section	.rodata
	.align	2
.LC164:
	.ascii	"\012error_code_example2\000"
	.align	2
.LC165:
	.ascii	"error_code_example2\000"
	.align	2
.LC166:
	.ascii	"before Z3_mk_iff\000"
	.align	2
.LC167:
	.ascii	"Z3 error: %s.\012\000"
	.text
	.align	2
	.global	error_code_example2
	.syntax unified
	.arm
	.fpu softvfp
	.type	error_code_example2, %function
error_code_example2:
	@ 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, #0
	str	r3, [fp, #-28]
	ldr	r0, .L276
	bl	puts
	ldr	r0, .L276+4
	bl	Z3_append_log
	bl	Z3_mk_config
	str	r0, [fp, #-24]
	ldr	r1, .L276+8
	ldr	r0, [fp, #-24]
	bl	mk_context_custom
	str	r0, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	Z3_del_config
	ldr	r1, .L276+12
	ldr	r0, [fp, #-28]
	bl	mk_int_var
	str	r0, [fp, #-20]
	ldr	r1, .L276+16
	ldr	r0, [fp, #-28]
	bl	mk_bool_var
	str	r0, [fp, #-16]
	ldr	r0, .L276+20
	bl	puts
	ldr	r2, [fp, #-16]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	Z3_mk_iff
	str	r0, [fp, #-12]
	ldr	r0, [fp, #-28]
	bl	Z3_get_error_code
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L274
	bl	unreachable
	ldr	r0, [fp, #-28]
	bl	Z3_del_context
	b	.L275
.L274:
	nop
.L271:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-28]
	bl	Z3_get_error_msg
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L276+24
	bl	printf
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L275
	ldr	r0, [fp, #-28]
	bl	Z3_del_context
.L275:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L277:
	.align	2
.L276:
	.word	.LC164
	.word	.LC165
	.word	nothrow_z3_error
	.word	.LC61
	.word	.LC62
	.word	.LC166
	.word	.LC167
	.size	error_code_example2, .-error_code_example2
	.section	.rodata
	.align	2
.LC168:
	.ascii	"\012parser_example2\000"
	.align	2
.LC169:
	.ascii	"parser_example2\000"
	.align	2
.LC170:
	.ascii	"a\000"
	.align	2
.LC171:
	.ascii	"b\000"
	.align	2
.LC172:
	.ascii	"(assert (> a b))\000"
	.align	2
.LC173:
	.ascii	"formula: %s\012\000"
	.align	2
.LC174:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	parser_example2
	.syntax unified
	.arm
	.fpu softvfp
	.type	parser_example2, %function
parser_example2:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #64
	ldr	r3, .L282
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	bl	mk_context
	str	r0, [fp, #-44]
	ldr	r0, [fp, #-44]
	bl	mk_solver
	str	r0, [fp, #-40]
	ldr	r0, .L282+4
	bl	puts
	ldr	r0, .L282+8
	bl	Z3_append_log
	ldr	r1, .L282+12
	ldr	r0, [fp, #-44]
	bl	mk_int_var
	str	r0, [fp, #-36]
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-44]
	bl	Z3_to_app
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	Z3_get_app_decl
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r1, .L282+16
	ldr	r0, [fp, #-44]
	bl	mk_int_var
	str	r0, [fp, #-32]
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-44]
	bl	Z3_to_app
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-44]
	bl	Z3_get_app_decl
	mov	r3, r0
	str	r3, [fp, #-12]
	ldr	r1, .L282+20
	ldr	r0, [fp, #-44]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-24]
	ldr	r1, .L282+24
	ldr	r0, [fp, #-44]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-20]
	sub	r3, fp, #16
	str	r3, [sp, #12]
	sub	r3, fp, #24
	str	r3, [sp, #8]
	mov	r3, #2
	str	r3, [sp, #4]
	mov	r3, #0
	str	r3, [sp]
	mov	r3, #0
	mov	r2, #0
	ldr	r1, .L282+28
	ldr	r0, [fp, #-44]
	bl	Z3_parse_smtlib2_string
	str	r0, [fp, #-28]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-44]
	bl	Z3_ast_vector_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L282+32
	bl	printf
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-44]
	bl	Z3_ast_vector_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L282+36
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L279
.L280:
	ldr	r2, [fp, #-48]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-44]
	bl	Z3_ast_vector_get
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-44]
	bl	Z3_solver_assert
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L279:
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-44]
	bl	Z3_ast_vector_size
	mov	r2, r0
	ldr	r3, [fp, #-48]
	cmp	r3, r2
	bcc	.L280
	mov	r2, #1
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-44]
	bl	check
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-44]
	bl	del_solver
	ldr	r0, [fp, #-44]
	bl	Z3_del_context
	nop
	ldr	r3, .L282
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L281
	bl	__stack_chk_fail
.L281:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L283:
	.align	2
.L282:
	.word	.LC174
	.word	.LC168
	.word	.LC169
	.word	.LC61
	.word	.LC62
	.word	.LC170
	.word	.LC171
	.word	.LC172
	.word	.LC173
	.word	.LC21
	.size	parser_example2, .-parser_example2
	.section	.rodata
	.align	2
.LC175:
	.ascii	"\012parser_example3\000"
	.align	2
.LC176:
	.ascii	"parser_example3\000"
	.align	2
.LC177:
	.ascii	"(assert (forall ((x Int) (y Int)) (=> (= x y) (= (g"
	.ascii	" x 0) (g 0 y)))))\000"
	.align	2
.LC178:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	parser_example3
	.syntax unified
	.arm
	.fpu softvfp
	.type	parser_example3, %function
parser_example3:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	ldr	r3, .L286
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, .L286+4
	bl	puts
	ldr	r0, .L286+8
	bl	Z3_append_log
	bl	Z3_mk_config
	str	r0, [fp, #-36]
	ldr	r2, .L286+12
	ldr	r1, .L286+16
	ldr	r0, [fp, #-36]
	bl	Z3_set_param_value
	ldr	r1, .L286+20
	ldr	r0, [fp, #-36]
	bl	mk_context_custom
	str	r0, [fp, #-32]
	ldr	r0, [fp, #-36]
	bl	Z3_del_config
	ldr	r0, [fp, #-32]
	bl	mk_solver
	str	r0, [fp, #-28]
	ldr	r0, [fp, #-32]
	bl	Z3_mk_int_sort
	str	r0, [fp, #-24]
	ldr	r1, .L286+24
	ldr	r0, [fp, #-32]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-24]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-24]
	str	r3, [fp, #-12]
	ldr	r1, [fp, #-44]
	sub	r2, fp, #16
	ldr	r3, [fp, #-24]
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #2
	ldr	r0, [fp, #-32]
	bl	Z3_mk_func_decl
	mov	r3, r0
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-40]
	mov	r2, r3
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-32]
	bl	assert_comm_axiom
	sub	r3, fp, #40
	str	r3, [sp, #12]
	sub	r3, fp, #44
	str	r3, [sp, #8]
	mov	r3, #1
	str	r3, [sp, #4]
	mov	r3, #0
	str	r3, [sp]
	mov	r3, #0
	mov	r2, #0
	ldr	r1, .L286+28
	ldr	r0, [fp, #-32]
	bl	Z3_parse_smtlib2_string
	str	r0, [fp, #-20]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-32]
	bl	Z3_ast_vector_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L286+32
	bl	printf
	mov	r2, #0
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-32]
	bl	Z3_ast_vector_get
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-32]
	bl	prove
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-32]
	bl	del_solver
	ldr	r0, [fp, #-32]
	bl	Z3_del_context
	nop
	ldr	r3, .L286
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L285
	bl	__stack_chk_fail
.L285:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L287:
	.align	2
.L286:
	.word	.LC178
	.word	.LC175
	.word	.LC176
	.word	.LC4
	.word	.LC5
	.word	error_handler
	.word	.LC72
	.word	.LC177
	.word	.LC173
	.size	parser_example3, .-parser_example3
	.section	.rodata
	.align	2
.LC179:
	.ascii	"\012parser_example5\000"
	.align	2
.LC180:
	.ascii	"parser_example5\000"
	.align	2
.LC181:
	.ascii	"(declare-const x Int) declare-const y Int) (assert "
	.ascii	"(and (> x y) (> x 0)))\000"
	.text
	.align	2
	.global	parser_example5
	.syntax unified
	.arm
	.fpu softvfp
	.type	parser_example5, %function
parser_example5:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	mov	r3, #0
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-16]
	ldr	r0, .L295
	bl	puts
	ldr	r0, .L295+4
	bl	Z3_append_log
	bl	Z3_mk_config
	str	r0, [fp, #-12]
	ldr	r1, .L295+8
	ldr	r0, [fp, #-12]
	bl	mk_context_custom
	str	r0, [fp, #-20]
	ldr	r0, [fp, #-20]
	bl	mk_solver
	str	r0, [fp, #-16]
	ldr	r0, [fp, #-12]
	bl	Z3_del_config
	mov	r3, #0
	str	r3, [sp, #12]
	mov	r3, #0
	str	r3, [sp, #8]
	mov	r3, #0
	str	r3, [sp, #4]
	mov	r3, #0
	str	r3, [sp]
	mov	r3, #0
	mov	r2, #0
	ldr	r1, .L295+12
	ldr	r0, [fp, #-20]
	bl	Z3_parse_smtlib2_string
	ldr	r0, [fp, #-20]
	bl	Z3_get_error_code
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L293
	bl	unreachable
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-20]
	bl	del_solver
	ldr	r0, [fp, #-20]
	bl	Z3_del_context
	b	.L294
.L293:
	nop
.L290:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-20]
	bl	Z3_get_error_msg
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L295+16
	bl	printf
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L294
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-20]
	bl	del_solver
	ldr	r0, [fp, #-20]
	bl	Z3_del_context
.L294:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L296:
	.align	2
.L295:
	.word	.LC179
	.word	.LC180
	.word	nothrow_z3_error
	.word	.LC181
	.word	.LC167
	.size	parser_example5, .-parser_example5
	.section	.rodata
	.align	2
.LC182:
	.ascii	"\012numeral_example\000"
	.align	2
.LC183:
	.ascii	"numeral_example\000"
	.align	2
.LC184:
	.ascii	"1/2\000"
	.align	2
.LC185:
	.ascii	"0.5\000"
	.align	2
.LC186:
	.ascii	"Numerals n1:%s\000"
	.align	2
.LC187:
	.ascii	" n2:%s\012\000"
	.align	2
.LC188:
	.ascii	"-1/3\000"
	.align	2
.LC189:
	.ascii	"-0.333333333333333333333333333333333333333333333333"
	.ascii	"33\000"
	.text
	.align	2
	.global	numeral_example
	.syntax unified
	.arm
	.fpu softvfp
	.type	numeral_example, %function
numeral_example:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	ldr	r0, .L298
	bl	puts
	ldr	r0, .L298+4
	bl	Z3_append_log
	bl	mk_context
	str	r0, [fp, #-24]
	ldr	r0, [fp, #-24]
	bl	mk_solver
	str	r0, [fp, #-20]
	ldr	r0, [fp, #-24]
	bl	Z3_mk_real_sort
	str	r0, [fp, #-16]
	ldr	r2, [fp, #-16]
	ldr	r1, .L298+8
	ldr	r0, [fp, #-24]
	bl	Z3_mk_numeral
	str	r0, [fp, #-12]
	ldr	r2, [fp, #-16]
	ldr	r1, .L298+12
	ldr	r0, [fp, #-24]
	bl	Z3_mk_numeral
	str	r0, [fp, #-8]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-24]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L298+16
	bl	printf
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-24]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L298+20
	bl	printf
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-24]
	bl	Z3_mk_eq
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-24]
	bl	prove
	ldr	r2, [fp, #-16]
	ldr	r1, .L298+24
	ldr	r0, [fp, #-24]
	bl	Z3_mk_numeral
	str	r0, [fp, #-12]
	ldr	r2, [fp, #-16]
	ldr	r1, .L298+28
	ldr	r0, [fp, #-24]
	bl	Z3_mk_numeral
	str	r0, [fp, #-8]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-24]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L298+16
	bl	printf
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-24]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L298+20
	bl	printf
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-24]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	Z3_mk_not
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-24]
	bl	prove
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-24]
	bl	del_solver
	ldr	r0, [fp, #-24]
	bl	Z3_del_context
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L299:
	.align	2
.L298:
	.word	.LC182
	.word	.LC183
	.word	.LC184
	.word	.LC185
	.word	.LC186
	.word	.LC187
	.word	.LC188
	.word	.LC189
	.size	numeral_example, .-numeral_example
	.section	.rodata
	.align	2
.LC190:
	.ascii	"\012ite_example\000"
	.align	2
.LC191:
	.ascii	"ite_example\000"
	.align	2
.LC192:
	.ascii	"term: %s\012\000"
	.text
	.align	2
	.global	ite_example
	.syntax unified
	.arm
	.fpu softvfp
	.type	ite_example, %function
ite_example:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	ldr	r0, .L301
	bl	puts
	ldr	r0, .L301+4
	bl	Z3_append_log
	bl	mk_context
	str	r0, [fp, #-24]
	ldr	r0, [fp, #-24]
	bl	Z3_mk_false
	str	r0, [fp, #-20]
	mov	r1, #1
	ldr	r0, [fp, #-24]
	bl	mk_int
	str	r0, [fp, #-16]
	mov	r1, #0
	ldr	r0, [fp, #-24]
	bl	mk_int
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-16]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-24]
	bl	Z3_mk_ite
	str	r0, [fp, #-8]
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-24]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L301+8
	bl	printf
	ldr	r0, [fp, #-24]
	bl	Z3_del_context
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L302:
	.align	2
.L301:
	.word	.LC190
	.word	.LC191
	.word	.LC192
	.size	ite_example, .-ite_example
	.section	.rodata
	.align	2
.LC193:
	.ascii	"fruit\000"
	.align	2
.LC194:
	.ascii	"\012enum_example\000"
	.align	2
.LC195:
	.ascii	"enum_example\000"
	.align	2
.LC196:
	.ascii	"apple\000"
	.align	2
.LC197:
	.ascii	"banana\000"
	.align	2
.LC198:
	.ascii	"orange\000"
	.align	2
.LC199:
	.ascii	"fruity\000"
	.align	2
.LC200:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	enum_example
	.syntax unified
	.arm
	.fpu softvfp
	.type	enum_example, %function
enum_example:
	@ args = 0, pretend = 0, frame = 88
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #96
	ldr	r3, .L305
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	bl	mk_context
	str	r0, [fp, #-80]
	ldr	r0, [fp, #-80]
	bl	mk_solver
	str	r0, [fp, #-76]
	ldr	r1, .L305+4
	ldr	r0, [fp, #-80]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-72]
	ldr	r0, .L305+8
	bl	puts
	ldr	r0, .L305+12
	bl	Z3_append_log
	ldr	r1, .L305+16
	ldr	r0, [fp, #-80]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-56]
	ldr	r1, .L305+20
	ldr	r0, [fp, #-80]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-52]
	ldr	r1, .L305+24
	ldr	r0, [fp, #-80]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-48]
	sub	r2, fp, #56
	sub	r3, fp, #32
	str	r3, [sp, #4]
	sub	r3, fp, #44
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #3
	ldr	r1, [fp, #-72]
	ldr	r0, [fp, #-80]
	bl	Z3_mk_enumeration_sort
	str	r0, [fp, #-68]
	ldr	r3, [fp, #-44]
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	Z3_func_decl_to_string
	mov	r3, r0
	mov	r0, r3
	bl	puts
	ldr	r3, [fp, #-40]
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	Z3_func_decl_to_string
	mov	r3, r0
	mov	r0, r3
	bl	puts
	ldr	r3, [fp, #-36]
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	Z3_func_decl_to_string
	mov	r3, r0
	mov	r0, r3
	bl	puts
	ldr	r3, [fp, #-32]
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	Z3_func_decl_to_string
	mov	r3, r0
	mov	r0, r3
	bl	puts
	ldr	r3, [fp, #-28]
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	Z3_func_decl_to_string
	mov	r3, r0
	mov	r0, r3
	bl	puts
	ldr	r3, [fp, #-24]
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	Z3_func_decl_to_string
	mov	r3, r0
	mov	r0, r3
	bl	puts
	ldr	r1, [fp, #-44]
	mov	r3, #0
	mov	r2, #0
	ldr	r0, [fp, #-80]
	bl	Z3_mk_app
	mov	r3, r0
	str	r3, [fp, #-88]
	ldr	r1, [fp, #-40]
	mov	r3, #0
	mov	r2, #0
	ldr	r0, [fp, #-80]
	bl	Z3_mk_app
	str	r0, [fp, #-64]
	ldr	r1, [fp, #-36]
	mov	r3, #0
	mov	r2, #0
	ldr	r0, [fp, #-80]
	bl	Z3_mk_app
	mov	r3, r0
	str	r3, [fp, #-84]
	ldr	r3, [fp, #-88]
	ldr	r2, [fp, #-84]
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	Z3_mk_not
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	prove
	ldr	r1, [fp, #-32]
	sub	r3, fp, #88
	mov	r2, #1
	ldr	r0, [fp, #-80]
	bl	Z3_mk_app
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	prove
	ldr	r1, [fp, #-32]
	sub	r3, fp, #84
	mov	r2, #1
	ldr	r0, [fp, #-80]
	bl	Z3_mk_app
	mov	r2, r0
	mov	r3, #0
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	prove
	ldr	r1, [fp, #-32]
	sub	r3, fp, #84
	mov	r2, #1
	ldr	r0, [fp, #-80]
	bl	Z3_mk_app
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	Z3_mk_not
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	prove
	ldr	r2, [fp, #-68]
	ldr	r1, .L305+28
	ldr	r0, [fp, #-80]
	bl	mk_var
	str	r0, [fp, #-60]
	ldr	r3, [fp, #-88]
	mov	r2, r3
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-80]
	bl	Z3_mk_eq
	mov	r3, r0
	str	r3, [fp, #-20]
	ldr	r2, [fp, #-64]
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-80]
	bl	Z3_mk_eq
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-84]
	mov	r2, r3
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-80]
	bl	Z3_mk_eq
	mov	r3, r0
	str	r3, [fp, #-12]
	sub	r3, fp, #20
	mov	r2, r3
	mov	r1, #3
	ldr	r0, [fp, #-80]
	bl	Z3_mk_or
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	prove
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	del_solver
	ldr	r0, [fp, #-80]
	bl	Z3_del_context
	nop
	ldr	r3, .L305
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L304
	bl	__stack_chk_fail
.L304:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L306:
	.align	2
.L305:
	.word	.LC200
	.word	.LC193
	.word	.LC194
	.word	.LC195
	.word	.LC196
	.word	.LC197
	.word	.LC198
	.word	.LC199
	.size	enum_example, .-enum_example
	.section	.rodata
	.align	2
.LC201:
	.ascii	"\012list_example\000"
	.align	2
.LC202:
	.ascii	"list_example\000"
	.align	2
.LC203:
	.ascii	"int_list\000"
	.align	2
.LC204:
	.ascii	"u\000"
	.align	2
.LC205:
	.ascii	"Formula %s\012\000"
	.align	2
.LC206:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	list_example
	.syntax unified
	.arm
	.fpu softvfp
	.type	list_example, %function
list_example:
	@ args = 0, pretend = 0, frame = 88
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, fp, lr}
	add	fp, sp, #16
	sub	sp, sp, #116
	ldr	r3, .L309
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	mov	r3,#0
	bl	mk_context
	str	r0, [fp, #-80]
	ldr	r0, [fp, #-80]
	bl	mk_solver
	str	r0, [fp, #-76]
	ldr	r0, .L309+4
	bl	puts
	ldr	r0, .L309+8
	bl	Z3_append_log
	ldr	r0, [fp, #-80]
	bl	Z3_mk_int_sort
	str	r0, [fp, #-72]
	ldr	r1, .L309+12
	ldr	r0, [fp, #-80]
	bl	Z3_mk_string_symbol
	mov	r1, r0
	sub	r2, fp, #108
	sub	r3, fp, #88
	str	r3, [sp, #16]
	sub	r3, fp, #92
	str	r3, [sp, #12]
	sub	r3, fp, #96
	str	r3, [sp, #8]
	sub	r3, fp, #100
	str	r3, [sp, #4]
	sub	r3, fp, #104
	str	r3, [sp]
	mov	r3, r2
	ldr	r2, [fp, #-72]
	ldr	r0, [fp, #-80]
	bl	Z3_mk_list_sort
	str	r0, [fp, #-68]
	ldr	r1, [fp, #-108]
	mov	r3, #0
	mov	r2, #0
	ldr	r0, [fp, #-80]
	bl	Z3_mk_app
	str	r0, [fp, #-64]
	ldr	r4, [fp, #-100]
	mov	r1, #1
	ldr	r0, [fp, #-80]
	bl	mk_int
	mov	r2, r0
	ldr	r3, [fp, #-64]
	mov	r1, r4
	ldr	r0, [fp, #-80]
	bl	mk_binary_app
	str	r0, [fp, #-60]
	ldr	r4, [fp, #-100]
	mov	r1, #2
	ldr	r0, [fp, #-80]
	bl	mk_int
	mov	r2, r0
	ldr	r3, [fp, #-64]
	mov	r1, r4
	ldr	r0, [fp, #-80]
	bl	mk_binary_app
	str	r0, [fp, #-56]
	ldr	r2, [fp, #-60]
	ldr	r1, [fp, #-64]
	ldr	r0, [fp, #-80]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	Z3_mk_not
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	prove
	ldr	r2, [fp, #-56]
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-80]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	Z3_mk_not
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	prove
	ldr	r2, [fp, #-72]
	ldr	r1, .L309+16
	ldr	r0, [fp, #-80]
	bl	mk_var
	str	r0, [fp, #-52]
	ldr	r2, [fp, #-72]
	ldr	r1, .L309+20
	ldr	r0, [fp, #-80]
	bl	mk_var
	str	r0, [fp, #-48]
	ldr	r1, [fp, #-100]
	ldr	r3, [fp, #-64]
	ldr	r2, [fp, #-52]
	ldr	r0, [fp, #-80]
	bl	mk_binary_app
	str	r0, [fp, #-60]
	ldr	r1, [fp, #-100]
	ldr	r3, [fp, #-64]
	ldr	r2, [fp, #-48]
	ldr	r0, [fp, #-80]
	bl	mk_binary_app
	str	r0, [fp, #-56]
	ldr	r2, [fp, #-56]
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-80]
	bl	Z3_mk_eq
	mov	r4, r0
	ldr	r2, [fp, #-48]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-80]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, [fp, #-80]
	bl	Z3_mk_implies
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	prove
	ldr	r2, [fp, #-68]
	ldr	r1, .L309+24
	ldr	r0, [fp, #-80]
	bl	mk_var
	mov	r3, r0
	str	r3, [fp, #-84]
	ldr	r2, [fp, #-68]
	ldr	r1, .L309+28
	ldr	r0, [fp, #-80]
	bl	mk_var
	str	r0, [fp, #-44]
	ldr	r1, [fp, #-100]
	ldr	r3, [fp, #-84]
	ldr	r2, [fp, #-52]
	ldr	r0, [fp, #-80]
	bl	mk_binary_app
	str	r0, [fp, #-60]
	ldr	r1, [fp, #-100]
	ldr	r3, [fp, #-44]
	ldr	r2, [fp, #-48]
	ldr	r0, [fp, #-80]
	bl	mk_binary_app
	str	r0, [fp, #-56]
	ldr	r2, [fp, #-56]
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-80]
	bl	Z3_mk_eq
	mov	r4, r0
	ldr	r3, [fp, #-84]
	ldr	r2, [fp, #-44]
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, [fp, #-80]
	bl	Z3_mk_implies
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	prove
	ldr	r2, [fp, #-56]
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-80]
	bl	Z3_mk_eq
	mov	r4, r0
	ldr	r2, [fp, #-48]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-80]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, [fp, #-80]
	bl	Z3_mk_implies
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	prove
	ldr	r1, [fp, #-104]
	sub	r3, fp, #84
	mov	r2, #1
	ldr	r0, [fp, #-80]
	bl	Z3_mk_app
	mov	r3, r0
	str	r3, [fp, #-32]
	ldr	r1, [fp, #-96]
	sub	r3, fp, #84
	mov	r2, #1
	ldr	r0, [fp, #-80]
	bl	Z3_mk_app
	mov	r3, r0
	str	r3, [fp, #-28]
	sub	r3, fp, #32
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-80]
	bl	Z3_mk_or
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	prove
	ldr	r3, [fp, #-84]
	ldr	r2, [fp, #-60]
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	Z3_mk_not
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	prove
	ldr	r4, [fp, #-84]
	ldr	r5, [fp, #-100]
	ldr	r3, [fp, #-92]
	ldr	r2, [fp, #-84]
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	mk_unary_app
	mov	r6, r0
	ldr	r3, [fp, #-88]
	ldr	r2, [fp, #-84]
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	mk_unary_app
	mov	r3, r0
	mov	r2, r6
	mov	r1, r5
	ldr	r0, [fp, #-80]
	bl	mk_binary_app
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, [fp, #-80]
	bl	Z3_mk_eq
	str	r0, [fp, #-40]
	ldr	r1, [fp, #-96]
	sub	r3, fp, #84
	mov	r2, #1
	ldr	r0, [fp, #-80]
	bl	Z3_mk_app
	mov	r3, r0
	ldr	r2, [fp, #-40]
	mov	r1, r3
	ldr	r0, [fp, #-80]
	bl	Z3_mk_implies
	str	r0, [fp, #-36]
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-80]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L309+32
	bl	printf
	mov	r3, #1
	ldr	r2, [fp, #-36]
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	prove
	mov	r3, #0
	ldr	r2, [fp, #-40]
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	prove
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-80]
	bl	del_solver
	ldr	r0, [fp, #-80]
	bl	Z3_del_context
	nop
	ldr	r3, .L309
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L308
	bl	__stack_chk_fail
.L308:
	sub	sp, fp, #16
	@ sp needed
	pop	{r4, r5, r6, fp, pc}
.L310:
	.align	2
.L309:
	.word	.LC206
	.word	.LC201
	.word	.LC202
	.word	.LC203
	.word	.LC61
	.word	.LC62
	.word	.LC204
	.word	.LC96
	.word	.LC205
	.size	list_example, .-list_example
	.section	.rodata
	.align	2
.LC207:
	.ascii	"car\000"
	.align	2
.LC208:
	.ascii	"cdr\000"
	.align	2
.LC209:
	.ascii	"\012tree_example\000"
	.align	2
.LC210:
	.ascii	"tree_example\000"
	.align	2
.LC211:
	.ascii	"nil\000"
	.align	2
.LC212:
	.ascii	"is_nil\000"
	.align	2
.LC213:
	.ascii	"cons\000"
	.align	2
.LC214:
	.ascii	"is_cons\000"
	.align	2
.LC215:
	.ascii	"cell\000"
	.align	2
.LC216:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	tree_example
	.syntax unified
	.arm
	.fpu softvfp
	.type	tree_example, %function
tree_example:
	@ args = 0, pretend = 0, frame = 136
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, fp, lr}
	add	fp, sp, #16
	sub	sp, sp, #156
	ldr	r3, .L313
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	mov	r3,#0
	bl	mk_context
	str	r0, [fp, #-132]
	ldr	r0, [fp, #-132]
	bl	mk_solver
	str	r0, [fp, #-128]
	ldr	r1, .L313+4
	ldr	r0, [fp, #-132]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-72]
	ldr	r1, .L313+8
	ldr	r0, [fp, #-132]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-68]
	mov	r3, #0
	str	r3, [fp, #-64]
	mov	r3, #0
	str	r3, [fp, #-60]
	mov	r3, #0
	str	r3, [fp, #-56]
	mov	r3, #0
	str	r3, [fp, #-52]
	ldr	r0, .L313+12
	bl	puts
	ldr	r0, .L313+16
	bl	Z3_append_log
	ldr	r1, .L313+20
	ldr	r0, [fp, #-132]
	bl	Z3_mk_string_symbol
	mov	r4, r0
	ldr	r1, .L313+24
	ldr	r0, [fp, #-132]
	bl	Z3_mk_string_symbol
	mov	r2, r0
	mov	r3, #0
	str	r3, [sp, #8]
	mov	r3, #0
	str	r3, [sp, #4]
	mov	r3, #0
	str	r3, [sp]
	mov	r3, #0
	mov	r1, r4
	ldr	r0, [fp, #-132]
	bl	Z3_mk_constructor
	str	r0, [fp, #-124]
	ldr	r1, .L313+28
	ldr	r0, [fp, #-132]
	bl	Z3_mk_string_symbol
	mov	r4, r0
	ldr	r1, .L313+32
	ldr	r0, [fp, #-132]
	bl	Z3_mk_string_symbol
	mov	r2, r0
	sub	r3, fp, #56
	str	r3, [sp, #8]
	sub	r3, fp, #64
	str	r3, [sp, #4]
	sub	r3, fp, #72
	str	r3, [sp]
	mov	r3, #2
	mov	r1, r4
	ldr	r0, [fp, #-132]
	bl	Z3_mk_constructor
	str	r0, [fp, #-120]
	ldr	r3, [fp, #-124]
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-120]
	str	r3, [fp, #-44]
	ldr	r1, .L313+36
	ldr	r0, [fp, #-132]
	bl	Z3_mk_string_symbol
	mov	r1, r0
	sub	r3, fp, #48
	mov	r2, #2
	ldr	r0, [fp, #-132]
	bl	Z3_mk_datatype
	str	r0, [fp, #-116]
	sub	r2, fp, #152
	mov	r3, #0
	str	r3, [sp, #4]
	sub	r3, fp, #148
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #0
	ldr	r1, [fp, #-124]
	ldr	r0, [fp, #-132]
	bl	Z3_query_constructor
	sub	r2, fp, #144
	sub	r3, fp, #40
	str	r3, [sp, #4]
	sub	r3, fp, #140
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #2
	ldr	r1, [fp, #-120]
	ldr	r0, [fp, #-132]
	bl	Z3_query_constructor
	ldr	r3, [fp, #-40]
	str	r3, [fp, #-112]
	ldr	r3, [fp, #-36]
	str	r3, [fp, #-108]
	ldr	r1, [fp, #-124]
	ldr	r0, [fp, #-132]
	bl	Z3_del_constructor
	ldr	r1, [fp, #-120]
	ldr	r0, [fp, #-132]
	bl	Z3_del_constructor
	ldr	r1, [fp, #-152]
	mov	r3, #0
	mov	r2, #0
	ldr	r0, [fp, #-132]
	bl	Z3_mk_app
	str	r0, [fp, #-104]
	ldr	r1, [fp, #-144]
	ldr	r3, [fp, #-104]
	ldr	r2, [fp, #-104]
	ldr	r0, [fp, #-132]
	bl	mk_binary_app
	str	r0, [fp, #-100]
	ldr	r1, [fp, #-144]
	ldr	r3, [fp, #-104]
	ldr	r2, [fp, #-100]
	ldr	r0, [fp, #-132]
	bl	mk_binary_app
	str	r0, [fp, #-96]
	ldr	r2, [fp, #-100]
	ldr	r1, [fp, #-104]
	ldr	r0, [fp, #-132]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-132]
	bl	Z3_mk_not
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-128]
	ldr	r0, [fp, #-132]
	bl	prove
	ldr	r2, [fp, #-116]
	ldr	r1, .L313+40
	ldr	r0, [fp, #-132]
	bl	mk_var
	mov	r3, r0
	str	r3, [fp, #-136]
	ldr	r2, [fp, #-116]
	ldr	r1, .L313+44
	ldr	r0, [fp, #-132]
	bl	mk_var
	str	r0, [fp, #-92]
	ldr	r2, [fp, #-116]
	ldr	r1, .L313+48
	ldr	r0, [fp, #-132]
	bl	mk_var
	str	r0, [fp, #-88]
	ldr	r2, [fp, #-116]
	ldr	r1, .L313+52
	ldr	r0, [fp, #-132]
	bl	mk_var
	str	r0, [fp, #-84]
	ldr	r1, [fp, #-144]
	ldr	r3, [fp, #-136]
	ldr	r2, [fp, #-88]
	ldr	r0, [fp, #-132]
	bl	mk_binary_app
	str	r0, [fp, #-100]
	ldr	r1, [fp, #-144]
	ldr	r3, [fp, #-92]
	ldr	r2, [fp, #-84]
	ldr	r0, [fp, #-132]
	bl	mk_binary_app
	str	r0, [fp, #-96]
	ldr	r2, [fp, #-96]
	ldr	r1, [fp, #-100]
	ldr	r0, [fp, #-132]
	bl	Z3_mk_eq
	mov	r4, r0
	ldr	r3, [fp, #-136]
	ldr	r2, [fp, #-92]
	mov	r1, r3
	ldr	r0, [fp, #-132]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, [fp, #-132]
	bl	Z3_mk_implies
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-128]
	ldr	r0, [fp, #-132]
	bl	prove
	ldr	r2, [fp, #-96]
	ldr	r1, [fp, #-100]
	ldr	r0, [fp, #-132]
	bl	Z3_mk_eq
	mov	r4, r0
	ldr	r2, [fp, #-84]
	ldr	r1, [fp, #-88]
	ldr	r0, [fp, #-132]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, [fp, #-132]
	bl	Z3_mk_implies
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-128]
	ldr	r0, [fp, #-132]
	bl	prove
	ldr	r1, [fp, #-148]
	sub	r3, fp, #136
	mov	r2, #1
	ldr	r0, [fp, #-132]
	bl	Z3_mk_app
	mov	r3, r0
	str	r3, [fp, #-32]
	ldr	r1, [fp, #-140]
	sub	r3, fp, #136
	mov	r2, #1
	ldr	r0, [fp, #-132]
	bl	Z3_mk_app
	mov	r3, r0
	str	r3, [fp, #-28]
	sub	r3, fp, #32
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-132]
	bl	Z3_mk_or
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-128]
	ldr	r0, [fp, #-132]
	bl	prove
	ldr	r3, [fp, #-136]
	ldr	r2, [fp, #-100]
	mov	r1, r3
	ldr	r0, [fp, #-132]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-132]
	bl	Z3_mk_not
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-128]
	ldr	r0, [fp, #-132]
	bl	prove
	ldr	r4, [fp, #-136]
	ldr	r5, [fp, #-144]
	ldr	r3, [fp, #-136]
	mov	r2, r3
	ldr	r1, [fp, #-112]
	ldr	r0, [fp, #-132]
	bl	mk_unary_app
	mov	r6, r0
	ldr	r3, [fp, #-136]
	mov	r2, r3
	ldr	r1, [fp, #-108]
	ldr	r0, [fp, #-132]
	bl	mk_unary_app
	mov	r3, r0
	mov	r2, r6
	mov	r1, r5
	ldr	r0, [fp, #-132]
	bl	mk_binary_app
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, [fp, #-132]
	bl	Z3_mk_eq
	str	r0, [fp, #-80]
	ldr	r1, [fp, #-140]
	sub	r3, fp, #136
	mov	r2, #1
	ldr	r0, [fp, #-132]
	bl	Z3_mk_app
	mov	r3, r0
	ldr	r2, [fp, #-80]
	mov	r1, r3
	ldr	r0, [fp, #-132]
	bl	Z3_mk_implies
	str	r0, [fp, #-76]
	ldr	r1, [fp, #-76]
	ldr	r0, [fp, #-132]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L313+56
	bl	printf
	mov	r3, #1
	ldr	r2, [fp, #-76]
	ldr	r1, [fp, #-128]
	ldr	r0, [fp, #-132]
	bl	prove
	mov	r3, #0
	ldr	r2, [fp, #-80]
	ldr	r1, [fp, #-128]
	ldr	r0, [fp, #-132]
	bl	prove
	ldr	r1, [fp, #-128]
	ldr	r0, [fp, #-132]
	bl	del_solver
	ldr	r0, [fp, #-132]
	bl	Z3_del_context
	nop
	ldr	r3, .L313
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L312
	bl	__stack_chk_fail
.L312:
	sub	sp, fp, #16
	@ sp needed
	pop	{r4, r5, r6, fp, pc}
.L314:
	.align	2
.L313:
	.word	.LC216
	.word	.LC207
	.word	.LC208
	.word	.LC209
	.word	.LC210
	.word	.LC211
	.word	.LC212
	.word	.LC213
	.word	.LC214
	.word	.LC215
	.word	.LC204
	.word	.LC96
	.word	.LC61
	.word	.LC62
	.word	.LC205
	.size	tree_example, .-tree_example
	.section	.rodata
	.align	2
.LC217:
	.ascii	"forest\000"
	.align	2
.LC218:
	.ascii	"tree\000"
	.align	2
.LC219:
	.ascii	"\012forest_example\000"
	.align	2
.LC220:
	.ascii	"forest_example\000"
	.align	2
.LC221:
	.ascii	"nil1\000"
	.align	2
.LC222:
	.ascii	"is_nil1\000"
	.align	2
.LC223:
	.ascii	"cons1\000"
	.align	2
.LC224:
	.ascii	"is_cons1\000"
	.align	2
.LC225:
	.ascii	"nil2\000"
	.align	2
.LC226:
	.ascii	"is_nil2\000"
	.align	2
.LC227:
	.ascii	"cons2\000"
	.align	2
.LC228:
	.ascii	"is_cons2\000"
	.align	2
.LC229:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	forest_example
	.syntax unified
	.arm
	.fpu softvfp
	.type	forest_example, %function
forest_example:
	@ args = 0, pretend = 0, frame = 224
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #244
	ldr	r3, .L317
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	bl	mk_context
	str	r0, [fp, #-200]
	ldr	r0, [fp, #-200]
	bl	mk_solver
	str	r0, [fp, #-196]
	ldr	r1, .L317+4
	ldr	r0, [fp, #-200]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-88]
	ldr	r1, .L317+8
	ldr	r0, [fp, #-200]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-84]
	mov	r3, #0
	str	r3, [fp, #-80]
	mov	r3, #0
	str	r3, [fp, #-76]
	mov	r3, #0
	str	r3, [fp, #-72]
	mov	r3, #0
	str	r3, [fp, #-68]
	ldr	r1, .L317+12
	ldr	r0, [fp, #-200]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-24]
	ldr	r1, .L317+16
	ldr	r0, [fp, #-200]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-20]
	ldr	r0, .L317+20
	bl	puts
	ldr	r0, .L317+24
	bl	Z3_append_log
	ldr	r1, .L317+28
	ldr	r0, [fp, #-200]
	bl	Z3_mk_string_symbol
	mov	r4, r0
	ldr	r1, .L317+32
	ldr	r0, [fp, #-200]
	bl	Z3_mk_string_symbol
	mov	r2, r0
	mov	r3, #0
	str	r3, [sp, #8]
	mov	r3, #0
	str	r3, [sp, #4]
	mov	r3, #0
	str	r3, [sp]
	mov	r3, #0
	mov	r1, r4
	ldr	r0, [fp, #-200]
	bl	Z3_mk_constructor
	str	r0, [fp, #-192]
	mov	r3, #1
	str	r3, [fp, #-72]
	mov	r3, #0
	str	r3, [fp, #-68]
	ldr	r1, .L317+36
	ldr	r0, [fp, #-200]
	bl	Z3_mk_string_symbol
	mov	r4, r0
	ldr	r1, .L317+40
	ldr	r0, [fp, #-200]
	bl	Z3_mk_string_symbol
	mov	r2, r0
	sub	r3, fp, #72
	str	r3, [sp, #8]
	sub	r3, fp, #80
	str	r3, [sp, #4]
	sub	r3, fp, #88
	str	r3, [sp]
	mov	r3, #2
	mov	r1, r4
	ldr	r0, [fp, #-200]
	bl	Z3_mk_constructor
	str	r0, [fp, #-188]
	ldr	r3, [fp, #-192]
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-188]
	str	r3, [fp, #-60]
	ldr	r1, .L317+44
	ldr	r0, [fp, #-200]
	bl	Z3_mk_string_symbol
	mov	r4, r0
	ldr	r1, .L317+48
	ldr	r0, [fp, #-200]
	bl	Z3_mk_string_symbol
	mov	r2, r0
	mov	r3, #0
	str	r3, [sp, #8]
	mov	r3, #0
	str	r3, [sp, #4]
	mov	r3, #0
	str	r3, [sp]
	mov	r3, #0
	mov	r1, r4
	ldr	r0, [fp, #-200]
	bl	Z3_mk_constructor
	str	r0, [fp, #-184]
	mov	r3, #0
	str	r3, [fp, #-72]
	mov	r3, #0
	str	r3, [fp, #-68]
	ldr	r1, .L317+52
	ldr	r0, [fp, #-200]
	bl	Z3_mk_string_symbol
	mov	r4, r0
	ldr	r1, .L317+56
	ldr	r0, [fp, #-200]
	bl	Z3_mk_string_symbol
	mov	r2, r0
	sub	r3, fp, #72
	str	r3, [sp, #8]
	sub	r3, fp, #80
	str	r3, [sp, #4]
	sub	r3, fp, #88
	str	r3, [sp]
	mov	r3, #2
	mov	r1, r4
	ldr	r0, [fp, #-200]
	bl	Z3_mk_constructor
	str	r0, [fp, #-180]
	ldr	r3, [fp, #-184]
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-180]
	str	r3, [fp, #-52]
	sub	r3, fp, #64
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-200]
	bl	Z3_mk_constructor_list
	str	r0, [fp, #-176]
	sub	r3, fp, #56
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-200]
	bl	Z3_mk_constructor_list
	str	r0, [fp, #-172]
	ldr	r3, [fp, #-176]
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-172]
	str	r3, [fp, #-28]
	sub	r1, fp, #80
	sub	r2, fp, #24
	sub	r3, fp, #32
	str	r3, [sp]
	mov	r3, r1
	mov	r1, #2
	ldr	r0, [fp, #-200]
	bl	Z3_mk_datatypes
	ldr	r3, [fp, #-80]
	str	r3, [fp, #-168]
	ldr	r3, [fp, #-76]
	str	r3, [fp, #-164]
	sub	r2, fp, #236
	mov	r3, #0
	str	r3, [sp, #4]
	sub	r3, fp, #232
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #0
	ldr	r1, [fp, #-192]
	ldr	r0, [fp, #-200]
	bl	Z3_query_constructor
	sub	r2, fp, #228
	sub	r3, fp, #48
	str	r3, [sp, #4]
	sub	r3, fp, #224
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #2
	ldr	r1, [fp, #-188]
	ldr	r0, [fp, #-200]
	bl	Z3_query_constructor
	ldr	r3, [fp, #-48]
	str	r3, [fp, #-160]
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-156]
	sub	r2, fp, #220
	mov	r3, #0
	str	r3, [sp, #4]
	sub	r3, fp, #216
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #0
	ldr	r1, [fp, #-184]
	ldr	r0, [fp, #-200]
	bl	Z3_query_constructor
	sub	r2, fp, #212
	sub	r3, fp, #48
	str	r3, [sp, #4]
	sub	r3, fp, #208
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #2
	ldr	r1, [fp, #-180]
	ldr	r0, [fp, #-200]
	bl	Z3_query_constructor
	ldr	r3, [fp, #-48]
	str	r3, [fp, #-152]
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-148]
	ldr	r1, [fp, #-176]
	ldr	r0, [fp, #-200]
	bl	Z3_del_constructor_list
	ldr	r1, [fp, #-172]
	ldr	r0, [fp, #-200]
	bl	Z3_del_constructor_list
	ldr	r1, [fp, #-192]
	ldr	r0, [fp, #-200]
	bl	Z3_del_constructor
	ldr	r1, [fp, #-188]
	ldr	r0, [fp, #-200]
	bl	Z3_del_constructor
	ldr	r1, [fp, #-184]
	ldr	r0, [fp, #-200]
	bl	Z3_del_constructor
	ldr	r1, [fp, #-180]
	ldr	r0, [fp, #-200]
	bl	Z3_del_constructor
	ldr	r1, [fp, #-236]
	mov	r3, #0
	mov	r2, #0
	ldr	r0, [fp, #-200]
	bl	Z3_mk_app
	str	r0, [fp, #-144]
	ldr	r1, [fp, #-220]
	mov	r3, #0
	mov	r2, #0
	ldr	r0, [fp, #-200]
	bl	Z3_mk_app
	str	r0, [fp, #-140]
	ldr	r1, [fp, #-228]
	ldr	r3, [fp, #-144]
	ldr	r2, [fp, #-140]
	ldr	r0, [fp, #-200]
	bl	mk_binary_app
	str	r0, [fp, #-136]
	ldr	r1, [fp, #-212]
	ldr	r3, [fp, #-144]
	ldr	r2, [fp, #-144]
	ldr	r0, [fp, #-200]
	bl	mk_binary_app
	str	r0, [fp, #-132]
	ldr	r1, [fp, #-212]
	ldr	r3, [fp, #-144]
	ldr	r2, [fp, #-136]
	ldr	r0, [fp, #-200]
	bl	mk_binary_app
	str	r0, [fp, #-128]
	ldr	r1, [fp, #-212]
	ldr	r3, [fp, #-136]
	ldr	r2, [fp, #-136]
	ldr	r0, [fp, #-200]
	bl	mk_binary_app
	str	r0, [fp, #-124]
	ldr	r1, [fp, #-212]
	ldr	r3, [fp, #-136]
	ldr	r2, [fp, #-144]
	ldr	r0, [fp, #-200]
	bl	mk_binary_app
	str	r0, [fp, #-120]
	ldr	r1, [fp, #-228]
	ldr	r3, [fp, #-144]
	ldr	r2, [fp, #-132]
	ldr	r0, [fp, #-200]
	bl	mk_binary_app
	str	r0, [fp, #-116]
	ldr	r1, [fp, #-228]
	ldr	r3, [fp, #-136]
	ldr	r2, [fp, #-132]
	ldr	r0, [fp, #-200]
	bl	mk_binary_app
	str	r0, [fp, #-112]
	ldr	r2, [fp, #-136]
	ldr	r1, [fp, #-144]
	ldr	r0, [fp, #-200]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-200]
	bl	Z3_mk_not
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-196]
	ldr	r0, [fp, #-200]
	bl	prove
	ldr	r2, [fp, #-132]
	ldr	r1, [fp, #-140]
	ldr	r0, [fp, #-200]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-200]
	bl	Z3_mk_not
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-196]
	ldr	r0, [fp, #-200]
	bl	prove
	ldr	r2, [fp, #-168]
	ldr	r1, .L317+60
	ldr	r0, [fp, #-200]
	bl	mk_var
	mov	r3, r0
	str	r3, [fp, #-204]
	ldr	r2, [fp, #-168]
	ldr	r1, .L317+64
	ldr	r0, [fp, #-200]
	bl	mk_var
	str	r0, [fp, #-108]
	ldr	r2, [fp, #-164]
	ldr	r1, .L317+68
	ldr	r0, [fp, #-200]
	bl	mk_var
	str	r0, [fp, #-104]
	ldr	r2, [fp, #-164]
	ldr	r1, .L317+72
	ldr	r0, [fp, #-200]
	bl	mk_var
	str	r0, [fp, #-100]
	ldr	r1, [fp, #-228]
	ldr	r3, [fp, #-204]
	ldr	r2, [fp, #-104]
	ldr	r0, [fp, #-200]
	bl	mk_binary_app
	str	r0, [fp, #-96]
	ldr	r1, [fp, #-228]
	ldr	r3, [fp, #-108]
	ldr	r2, [fp, #-100]
	ldr	r0, [fp, #-200]
	bl	mk_binary_app
	str	r0, [fp, #-92]
	ldr	r2, [fp, #-92]
	ldr	r1, [fp, #-96]
	ldr	r0, [fp, #-200]
	bl	Z3_mk_eq
	mov	r4, r0
	ldr	r3, [fp, #-204]
	ldr	r2, [fp, #-108]
	mov	r1, r3
	ldr	r0, [fp, #-200]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, [fp, #-200]
	bl	Z3_mk_implies
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-196]
	ldr	r0, [fp, #-200]
	bl	prove
	ldr	r2, [fp, #-92]
	ldr	r1, [fp, #-96]
	ldr	r0, [fp, #-200]
	bl	Z3_mk_eq
	mov	r4, r0
	ldr	r2, [fp, #-100]
	ldr	r1, [fp, #-104]
	ldr	r0, [fp, #-200]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, [fp, #-200]
	bl	Z3_mk_implies
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-196]
	ldr	r0, [fp, #-200]
	bl	prove
	ldr	r1, [fp, #-232]
	sub	r3, fp, #204
	mov	r2, #1
	ldr	r0, [fp, #-200]
	bl	Z3_mk_app
	mov	r3, r0
	str	r3, [fp, #-40]
	ldr	r1, [fp, #-224]
	sub	r3, fp, #204
	mov	r2, #1
	ldr	r0, [fp, #-200]
	bl	Z3_mk_app
	mov	r3, r0
	str	r3, [fp, #-36]
	sub	r3, fp, #40
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-200]
	bl	Z3_mk_or
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-196]
	ldr	r0, [fp, #-200]
	bl	prove
	ldr	r3, [fp, #-204]
	ldr	r2, [fp, #-96]
	mov	r1, r3
	ldr	r0, [fp, #-200]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-200]
	bl	Z3_mk_not
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-196]
	ldr	r0, [fp, #-200]
	bl	prove
	ldr	r1, [fp, #-196]
	ldr	r0, [fp, #-200]
	bl	del_solver
	ldr	r0, [fp, #-200]
	bl	Z3_del_context
	nop
	ldr	r3, .L317
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L316
	bl	__stack_chk_fail
.L316:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L318:
	.align	2
.L317:
	.word	.LC229
	.word	.LC207
	.word	.LC208
	.word	.LC217
	.word	.LC218
	.word	.LC219
	.word	.LC220
	.word	.LC221
	.word	.LC222
	.word	.LC223
	.word	.LC224
	.word	.LC225
	.word	.LC226
	.word	.LC227
	.word	.LC228
	.word	.LC204
	.word	.LC96
	.word	.LC61
	.word	.LC62
	.size	forest_example, .-forest_example
	.section	.rodata
	.align	2
.LC230:
	.ascii	"value\000"
	.align	2
.LC231:
	.ascii	"left\000"
	.align	2
.LC232:
	.ascii	"right\000"
	.align	2
.LC233:
	.ascii	"\012binary_tree_example\000"
	.align	2
.LC234:
	.ascii	"binary_tree_example\000"
	.align	2
.LC235:
	.ascii	"is-nil\000"
	.align	2
.LC236:
	.ascii	"node\000"
	.align	2
.LC237:
	.ascii	"is-cons\000"
	.align	2
.LC238:
	.ascii	"BinTree\000"
	.align	2
.LC239:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	binary_tree_example
	.syntax unified
	.arm
	.fpu softvfp
	.type	binary_tree_example, %function
binary_tree_example:
	@ args = 0, pretend = 0, frame = 160
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #180
	ldr	r3, .L321
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	bl	mk_context
	str	r0, [fp, #-156]
	ldr	r0, [fp, #-156]
	bl	mk_solver
	str	r0, [fp, #-152]
	ldr	r1, .L321+4
	ldr	r0, [fp, #-156]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-100]
	ldr	r1, .L321+8
	ldr	r0, [fp, #-156]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-96]
	ldr	r1, .L321+12
	ldr	r0, [fp, #-156]
	bl	Z3_mk_string_symbol
	mov	r3, r0
	str	r3, [fp, #-92]
	ldr	r0, [fp, #-156]
	bl	Z3_mk_int_sort
	mov	r3, r0
	str	r3, [fp, #-88]
	mov	r3, #0
	str	r3, [fp, #-84]
	mov	r3, #0
	str	r3, [fp, #-80]
	mov	r3, #0
	str	r3, [fp, #-76]
	mov	r3, #0
	str	r3, [fp, #-72]
	mov	r3, #0
	str	r3, [fp, #-68]
	ldr	r0, .L321+16
	bl	puts
	ldr	r0, .L321+20
	bl	Z3_append_log
	ldr	r1, .L321+24
	ldr	r0, [fp, #-156]
	bl	Z3_mk_string_symbol
	mov	r4, r0
	ldr	r1, .L321+28
	ldr	r0, [fp, #-156]
	bl	Z3_mk_string_symbol
	mov	r2, r0
	mov	r3, #0
	str	r3, [sp, #8]
	mov	r3, #0
	str	r3, [sp, #4]
	mov	r3, #0
	str	r3, [sp]
	mov	r3, #0
	mov	r1, r4
	ldr	r0, [fp, #-156]
	bl	Z3_mk_constructor
	str	r0, [fp, #-148]
	ldr	r1, .L321+32
	ldr	r0, [fp, #-156]
	bl	Z3_mk_string_symbol
	mov	r4, r0
	ldr	r1, .L321+36
	ldr	r0, [fp, #-156]
	bl	Z3_mk_string_symbol
	mov	r2, r0
	sub	r3, fp, #76
	str	r3, [sp, #8]
	sub	r3, fp, #88
	str	r3, [sp, #4]
	sub	r3, fp, #100
	str	r3, [sp]
	mov	r3, #3
	mov	r1, r4
	ldr	r0, [fp, #-156]
	bl	Z3_mk_constructor
	str	r0, [fp, #-144]
	ldr	r3, [fp, #-148]
	str	r3, [fp, #-108]
	ldr	r3, [fp, #-144]
	str	r3, [fp, #-104]
	ldr	r1, .L321+40
	ldr	r0, [fp, #-156]
	bl	Z3_mk_string_symbol
	mov	r1, r0
	sub	r3, fp, #108
	mov	r2, #2
	ldr	r0, [fp, #-156]
	bl	Z3_mk_datatype
	str	r0, [fp, #-140]
	sub	r2, fp, #172
	mov	r3, #0
	str	r3, [sp, #4]
	sub	r3, fp, #168
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #0
	ldr	r1, [fp, #-148]
	ldr	r0, [fp, #-156]
	bl	Z3_query_constructor
	sub	r2, fp, #164
	sub	r3, fp, #64
	str	r3, [sp, #4]
	sub	r3, fp, #160
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #3
	ldr	r1, [fp, #-144]
	ldr	r0, [fp, #-156]
	bl	Z3_query_constructor
	ldr	r3, [fp, #-64]
	str	r3, [fp, #-136]
	ldr	r3, [fp, #-60]
	str	r3, [fp, #-132]
	ldr	r3, [fp, #-56]
	str	r3, [fp, #-128]
	ldr	r1, [fp, #-148]
	ldr	r0, [fp, #-156]
	bl	Z3_del_constructor
	ldr	r1, [fp, #-144]
	ldr	r0, [fp, #-156]
	bl	Z3_del_constructor
	ldr	r1, [fp, #-172]
	mov	r3, #0
	mov	r2, #0
	ldr	r0, [fp, #-156]
	bl	Z3_mk_app
	str	r0, [fp, #-124]
	mov	r1, #10
	ldr	r0, [fp, #-156]
	bl	mk_int
	mov	r3, r0
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-124]
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-124]
	str	r3, [fp, #-44]
	ldr	r1, [fp, #-164]
	sub	r3, fp, #52
	mov	r2, #3
	ldr	r0, [fp, #-156]
	bl	Z3_mk_app
	str	r0, [fp, #-120]
	mov	r1, #30
	ldr	r0, [fp, #-156]
	bl	mk_int
	mov	r3, r0
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-120]
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-124]
	str	r3, [fp, #-32]
	ldr	r1, [fp, #-164]
	sub	r3, fp, #40
	mov	r2, #3
	ldr	r0, [fp, #-156]
	bl	Z3_mk_app
	str	r0, [fp, #-116]
	mov	r1, #20
	ldr	r0, [fp, #-156]
	bl	mk_int
	mov	r3, r0
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-116]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-120]
	str	r3, [fp, #-20]
	ldr	r1, [fp, #-164]
	sub	r3, fp, #28
	mov	r2, #3
	ldr	r0, [fp, #-156]
	bl	Z3_mk_app
	str	r0, [fp, #-112]
	ldr	r2, [fp, #-120]
	ldr	r1, [fp, #-124]
	ldr	r0, [fp, #-156]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-156]
	bl	Z3_mk_not
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-156]
	bl	prove
	ldr	r2, [fp, #-120]
	ldr	r1, [fp, #-132]
	ldr	r0, [fp, #-156]
	bl	mk_unary_app
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-124]
	ldr	r0, [fp, #-156]
	bl	Z3_mk_eq
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-156]
	bl	prove
	ldr	r2, [fp, #-112]
	ldr	r1, [fp, #-128]
	ldr	r0, [fp, #-156]
	bl	mk_unary_app
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-120]
	ldr	r0, [fp, #-156]
	bl	Z3_mk_eq
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-156]
	bl	prove
	ldr	r3, [fp, #-168]
	ldr	r2, [fp, #-116]
	mov	r1, r3
	ldr	r0, [fp, #-156]
	bl	mk_unary_app
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-156]
	bl	Z3_mk_not
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-156]
	bl	prove
	ldr	r2, [fp, #-116]
	ldr	r1, [fp, #-136]
	ldr	r0, [fp, #-156]
	bl	mk_unary_app
	mov	r4, r0
	mov	r1, #0
	ldr	r0, [fp, #-156]
	bl	mk_int
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, [fp, #-156]
	bl	Z3_mk_ge
	mov	r2, r0
	mov	r3, #1
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-156]
	bl	prove
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-156]
	bl	del_solver
	ldr	r0, [fp, #-156]
	bl	Z3_del_context
	nop
	ldr	r3, .L321
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L320
	bl	__stack_chk_fail
.L320:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L322:
	.align	2
.L321:
	.word	.LC239
	.word	.LC230
	.word	.LC231
	.word	.LC232
	.word	.LC233
	.word	.LC234
	.word	.LC211
	.word	.LC235
	.word	.LC236
	.word	.LC237
	.word	.LC238
	.size	binary_tree_example, .-binary_tree_example
	.section	.rodata
	.align	2
.LC240:
	.ascii	"PredA\000"
	.align	2
.LC241:
	.ascii	"PredB\000"
	.align	2
.LC242:
	.ascii	"PredC\000"
	.align	2
.LC243:
	.ascii	"PredD\000"
	.align	2
.LC244:
	.ascii	"P1\000"
	.align	2
.LC245:
	.ascii	"P2\000"
	.align	2
.LC246:
	.ascii	"P3\000"
	.align	2
.LC247:
	.ascii	"P4\000"
	.align	2
.LC248:
	.ascii	"\012unsat_core_and_proof_example\000"
	.align	2
.LC249:
	.ascii	"unsat_core_and_proof_example\000"
	.align	2
.LC250:
	.ascii	"proof: %s\012\000"
	.align	2
.LC251:
	.ascii	"\012core:\000"
	.align	2
.LC252:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	unsat_core_and_proof_example
	.syntax unified
	.arm
	.fpu softvfp
	.type	unsat_core_and_proof_example, %function
unsat_core_and_proof_example:
	@ args = 0, pretend = 0, frame = 160
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #160
	ldr	r3, .L334
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	bl	mk_proof_context
	str	r0, [fp, #-156]
	ldr	r0, [fp, #-156]
	bl	mk_solver
	str	r0, [fp, #-152]
	ldr	r1, .L334+4
	ldr	r0, [fp, #-156]
	bl	mk_bool_var
	str	r0, [fp, #-148]
	ldr	r1, .L334+8
	ldr	r0, [fp, #-156]
	bl	mk_bool_var
	str	r0, [fp, #-144]
	ldr	r1, .L334+12
	ldr	r0, [fp, #-156]
	bl	mk_bool_var
	str	r0, [fp, #-140]
	ldr	r1, .L334+16
	ldr	r0, [fp, #-156]
	bl	mk_bool_var
	str	r0, [fp, #-136]
	ldr	r1, .L334+20
	ldr	r0, [fp, #-156]
	bl	mk_bool_var
	str	r0, [fp, #-132]
	ldr	r1, .L334+24
	ldr	r0, [fp, #-156]
	bl	mk_bool_var
	str	r0, [fp, #-128]
	ldr	r1, .L334+28
	ldr	r0, [fp, #-156]
	bl	mk_bool_var
	str	r0, [fp, #-124]
	ldr	r1, .L334+32
	ldr	r0, [fp, #-156]
	bl	mk_bool_var
	str	r0, [fp, #-120]
	ldr	r1, [fp, #-132]
	ldr	r0, [fp, #-156]
	bl	Z3_mk_not
	mov	r3, r0
	str	r3, [fp, #-24]
	ldr	r1, [fp, #-128]
	ldr	r0, [fp, #-156]
	bl	Z3_mk_not
	mov	r3, r0
	str	r3, [fp, #-20]
	ldr	r1, [fp, #-124]
	ldr	r0, [fp, #-156]
	bl	Z3_mk_not
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r1, [fp, #-120]
	ldr	r0, [fp, #-156]
	bl	Z3_mk_not
	mov	r3, r0
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-148]
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-144]
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-140]
	str	r3, [fp, #-40]
	sub	r3, fp, #48
	mov	r2, r3
	mov	r1, #3
	ldr	r0, [fp, #-156]
	bl	Z3_mk_and
	str	r0, [fp, #-116]
	ldr	r3, [fp, #-148]
	str	r3, [fp, #-36]
	ldr	r1, [fp, #-144]
	ldr	r0, [fp, #-156]
	bl	Z3_mk_not
	mov	r3, r0
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-140]
	str	r3, [fp, #-28]
	sub	r3, fp, #36
	mov	r2, r3
	mov	r1, #3
	ldr	r0, [fp, #-156]
	bl	Z3_mk_and
	str	r0, [fp, #-112]
	ldr	r1, [fp, #-148]
	ldr	r0, [fp, #-156]
	bl	Z3_mk_not
	mov	r3, r0
	str	r3, [fp, #-88]
	ldr	r1, [fp, #-140]
	ldr	r0, [fp, #-156]
	bl	Z3_mk_not
	mov	r3, r0
	str	r3, [fp, #-84]
	sub	r3, fp, #88
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-156]
	bl	Z3_mk_or
	str	r0, [fp, #-108]
	ldr	r3, [fp, #-136]
	str	r3, [fp, #-104]
	ldr	r3, [fp, #-116]
	str	r3, [fp, #-80]
	ldr	r3, [fp, #-132]
	str	r3, [fp, #-76]
	ldr	r3, [fp, #-112]
	str	r3, [fp, #-72]
	ldr	r3, [fp, #-128]
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-108]
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-124]
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-104]
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-120]
	str	r3, [fp, #-52]
	mov	r3, #0
	str	r3, [fp, #-164]
	ldr	r0, .L334+36
	bl	puts
	ldr	r0, .L334+40
	bl	Z3_append_log
	sub	r3, fp, #80
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-156]
	bl	Z3_mk_or
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-156]
	bl	Z3_solver_assert
	sub	r3, fp, #72
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-156]
	bl	Z3_mk_or
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-156]
	bl	Z3_solver_assert
	sub	r3, fp, #64
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-156]
	bl	Z3_mk_or
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-156]
	bl	Z3_solver_assert
	sub	r3, fp, #56
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-156]
	bl	Z3_mk_or
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-156]
	bl	Z3_solver_assert
	sub	r3, fp, #24
	mov	r2, #4
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-156]
	bl	Z3_solver_check_assumptions
	str	r0, [fp, #-100]
	ldr	r3, [fp, #-100]
	cmp	r3, #1
	beq	.L324
	ldr	r3, [fp, #-100]
	cmp	r3, #1
	bgt	.L325
	ldr	r3, [fp, #-100]
	cmn	r3, #1
	beq	.L326
	ldr	r3, [fp, #-100]
	cmp	r3, #0
	beq	.L327
	b	.L325
.L326:
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-156]
	bl	Z3_solver_get_unsat_core
	str	r0, [fp, #-96]
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-156]
	bl	Z3_solver_get_proof
	str	r0, [fp, #-92]
	ldr	r0, .L334+44
	bl	puts
	ldr	r1, [fp, #-92]
	ldr	r0, [fp, #-156]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L334+48
	bl	printf
	ldr	r0, .L334+52
	bl	puts
	mov	r3, #0
	str	r3, [fp, #-160]
	b	.L328
.L329:
	ldr	r2, [fp, #-160]
	ldr	r1, [fp, #-96]
	ldr	r0, [fp, #-156]
	bl	Z3_ast_vector_get
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-156]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r0, r3
	bl	puts
	ldr	r3, [fp, #-160]
	add	r3, r3, #1
	str	r3, [fp, #-160]
.L328:
	ldr	r1, [fp, #-96]
	ldr	r0, [fp, #-156]
	bl	Z3_ast_vector_size
	mov	r2, r0
	ldr	r3, [fp, #-160]
	cmp	r3, r2
	bcc	.L329
	mov	r0, #10
	bl	putchar
	b	.L325
.L327:
	ldr	r0, .L334+56
	bl	puts
	ldr	r0, .L334+60
	bl	puts
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-156]
	bl	Z3_solver_get_model
	str	r0, [fp, #-164]
	ldr	r3, [fp, #-164]
	cmp	r3, #0
	beq	.L330
	ldr	r1, [fp, #-164]
	ldr	r0, [fp, #-156]
	bl	Z3_model_inc_ref
.L330:
	ldr	r3, .L334+64
	ldr	r3, [r3]
	ldr	r2, [fp, #-164]
	mov	r1, r3
	ldr	r0, [fp, #-156]
	bl	display_model
	b	.L325
.L324:
	ldr	r0, .L334+68
	bl	puts
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-156]
	bl	Z3_solver_get_model
	str	r0, [fp, #-164]
	ldr	r3, [fp, #-164]
	cmp	r3, #0
	beq	.L331
	ldr	r1, [fp, #-164]
	ldr	r0, [fp, #-156]
	bl	Z3_model_inc_ref
.L331:
	ldr	r3, .L334+64
	ldr	r3, [r3]
	ldr	r2, [fp, #-164]
	mov	r1, r3
	ldr	r0, [fp, #-156]
	bl	display_model
	nop
.L325:
	ldr	r3, [fp, #-164]
	cmp	r3, #0
	beq	.L332
	ldr	r1, [fp, #-164]
	ldr	r0, [fp, #-156]
	bl	Z3_model_dec_ref
.L332:
	ldr	r1, [fp, #-152]
	ldr	r0, [fp, #-156]
	bl	del_solver
	ldr	r0, [fp, #-156]
	bl	Z3_del_context
	nop
	ldr	r3, .L334
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L333
	bl	__stack_chk_fail
.L333:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L335:
	.align	2
.L334:
	.word	.LC252
	.word	.LC240
	.word	.LC241
	.word	.LC242
	.word	.LC243
	.word	.LC244
	.word	.LC245
	.word	.LC246
	.word	.LC247
	.word	.LC248
	.word	.LC249
	.word	.LC9
	.word	.LC250
	.word	.LC251
	.word	.LC10
	.word	.LC47
	.word	stdout
	.word	.LC48
	.size	unsat_core_and_proof_example, .-unsat_core_and_proof_example
	.align	2
	.global	mk_ext_context
	.syntax unified
	.arm
	.fpu softvfp
	.type	mk_ext_context, %function
mk_ext_context:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	ldr	r0, .L338
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	bl	mk_context
	mov	r2, r0
	ldr	r3, [fp, #-8]
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	mov	r0, r3
	bl	mk_solver
	mov	r2, r0
	ldr	r3, [fp, #-8]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	add	r3, r3, #4096
	mov	r2, r3
	mov	r3, #0
	str	r3, [r2, #1032]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L339:
	.align	2
.L338:
	.word	5132
	.size	mk_ext_context, .-mk_ext_context
	.align	2
	.global	del_ext_context
	.syntax unified
	.arm
	.fpu softvfp
	.type	del_ext_context, %function
del_ext_context:
	@ 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	r3, [fp, #-8]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r0, r2
	bl	del_solver
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	mov	r0, r3
	bl	Z3_del_context
	ldr	r0, [fp, #-8]
	bl	free
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	del_ext_context, .-del_ext_context
	.section	.rodata
	.align	2
.LC253:
	.ascii	"maximum number of retractable constraints was excee"
	.ascii	"ded.\000"
	.align	2
.LC254:
	.ascii	"k\000"
	.align	2
.LC255:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	assert_retractable_cnstr
	.syntax unified
	.arm
	.fpu softvfp
	.type	assert_retractable_cnstr, %function
assert_retractable_cnstr:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #32
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	ldr	r3, .L345
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r3, [fp, #-40]
	add	r3, r3, #4096
	ldr	r3, [r3, #1032]
	cmp	r3, #1024
	bne	.L342
	ldr	r0, .L345+4
	bl	exitf
.L342:
	ldr	r3, [fp, #-40]
	ldr	r3, [r3]
	mov	r0, r3
	bl	Z3_mk_bool_sort
	str	r0, [fp, #-36]
	ldr	r3, [fp, #-40]
	ldr	r3, [r3]
	ldr	r2, [fp, #-36]
	ldr	r1, .L345+8
	mov	r0, r3
	bl	Z3_mk_fresh_const
	str	r0, [fp, #-32]
	ldr	r3, [fp, #-40]
	add	r3, r3, #4096
	ldr	r3, [r3, #1032]
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-28]
	add	r2, r2, #2
	ldr	r1, [fp, #-32]
	str	r1, [r3, r2, lsl #2]
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-28]
	add	r3, r2, r3
	add	r3, r3, #4096
	add	r3, r3, #8
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-40]
	add	r3, r3, #4096
	ldr	r3, [r3, #1032]
	add	r3, r3, #1
	ldr	r2, [fp, #-40]
	add	r2, r2, #4096
	str	r3, [r2, #1032]
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-40]
	ldr	r3, [r3]
	ldr	r1, [fp, #-32]
	mov	r0, r3
	bl	Z3_mk_not
	mov	r3, r0
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-40]
	ldr	r4, [r3]
	ldr	r3, [fp, #-40]
	ldr	r5, [r3, #4]
	ldr	r3, [fp, #-40]
	ldr	r3, [r3]
	sub	r2, fp, #24
	mov	r1, #2
	mov	r0, r3
	bl	Z3_mk_or
	mov	r3, r0
	mov	r2, r3
	mov	r1, r5
	mov	r0, r4
	bl	Z3_solver_assert
	ldr	r3, [fp, #-28]
	ldr	r2, .L345
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L344
	bl	__stack_chk_fail
.L344:
	mov	r0, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L346:
	.align	2
.L345:
	.word	.LC255
	.word	.LC253
	.word	.LC254
	.size	assert_retractable_cnstr, .-assert_retractable_cnstr
	.section	.rodata
	.align	2
.LC256:
	.ascii	"invalid constraint id.\000"
	.text
	.align	2
	.global	retract_cnstr
	.syntax unified
	.arm
	.fpu softvfp
	.type	retract_cnstr, %function
retract_cnstr:
	@ 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]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-8]
	add	r3, r3, #4096
	ldr	r3, [r3, #1032]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bcc	.L348
	ldr	r0, .L349
	bl	exitf
.L348:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	add	r3, r3, #4096
	add	r3, r3, #8
	mov	r2, #1
	strb	r2, [r3]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L350:
	.align	2
.L349:
	.word	.LC256
	.size	retract_cnstr, .-retract_cnstr
	.align	2
	.global	reassert_cnstr
	.syntax unified
	.arm
	.fpu softvfp
	.type	reassert_cnstr, %function
reassert_cnstr:
	@ 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]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-8]
	add	r3, r3, #4096
	ldr	r3, [r3, #1032]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bcc	.L352
	ldr	r0, .L353
	bl	exitf
.L352:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	add	r3, r3, #4096
	add	r3, r3, #8
	mov	r2, #0
	strb	r2, [r3]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L354:
	.align	2
.L353:
	.word	.LC256
	.size	reassert_cnstr, .-reassert_cnstr
	.section	.rodata
	.align	2
.LC257:
	.ascii	"unsat core: \000"
	.align	2
.LC258:
	.ascii	"%d \000"
	.align	2
.LC259:
	.ascii	"bug in Z3, the core contains something that is not "
	.ascii	"an assumption.\000"
	.align	2
.LC260:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	ext_check
	.syntax unified
	.arm
	.fpu softvfp
	.type	ext_check, %function
ext_check:
	@ args = 0, pretend = 0, frame = 4136
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #4096
	sub	sp, sp, #44
	sub	r3, fp, #4096
	sub	r3, r3, #12
	str	r0, [r3, #-36]
	ldr	r3, .L369
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r2, r3
	mov	r3, #0
	str	r3, [r2, #-28]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r2, r3
	mov	r3, #0
	str	r3, [r2, #-24]
	b	.L356
.L358:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r2, [r3, #-36]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-24]
	add	r3, r2, r3
	add	r3, r3, #4096
	add	r3, r3, #8
	ldrb	r3, [r3]	@ zero_extendqisi2
	eor	r3, r3, #1
	and	r3, r3, #255
	cmp	r3, #0
	beq	.L357
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-36]
	sub	r2, fp, #4096
	sub	r2, r2, #12
	ldr	r2, [r2, #-24]
	add	r2, r2, #2
	ldr	r2, [r3, r2, lsl #2]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r1, r3
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-28]
	lsl	r3, r3, #2
	add	r3, r1, r3
	str	r2, [r3, #-4]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-28]
	add	r3, r3, #1
	str	r3, [r2, #-28]
.L357:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-24]
	add	r3, r3, #1
	str	r3, [r2, #-24]
.L356:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-36]
	add	r3, r3, #4096
	ldr	r3, [r3, #1032]
	sub	r2, fp, #4096
	sub	r2, r2, #12
	ldr	r2, [r2, #-24]
	cmp	r2, r3
	bcc	.L358
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-36]
	ldr	r0, [r3]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-36]
	ldr	r1, [r3, #4]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r4, r3
	sub	r3, fp, #4096
	sub	r3, r3, #12
	sub	r3, r3, #4
	sub	r2, fp, #4096
	sub	r2, r2, #12
	ldr	r2, [r2, #-28]
	bl	Z3_solver_check_assumptions
	str	r0, [r4, #-16]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-16]
	cmn	r3, #1
	bne	.L359
	ldr	r0, .L369+4
	bl	printf
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-36]
	ldr	r2, [r3]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-36]
	ldr	r3, [r3, #4]
	sub	r1, fp, #4096
	sub	r1, r1, #12
	mov	r4, r1
	mov	r1, r3
	mov	r0, r2
	bl	Z3_solver_get_unsat_core
	str	r0, [r4, #-12]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-36]
	ldr	r3, [r3]
	sub	r2, fp, #4096
	sub	r2, r2, #12
	mov	r4, r2
	sub	r2, fp, #4096
	sub	r2, r2, #12
	ldr	r1, [r2, #-12]
	mov	r0, r3
	bl	Z3_ast_vector_size
	str	r0, [r4, #-8]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r2, r3
	mov	r3, #0
	str	r3, [r2, #-24]
	b	.L360
.L366:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r2, r3
	mov	r3, #0
	str	r3, [r2, #-20]
	b	.L361
.L364:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-36]
	ldr	r3, [r3]
	sub	r2, fp, #4096
	sub	r2, r2, #12
	sub	r1, fp, #4096
	sub	r1, r1, #12
	ldr	r2, [r2, #-24]
	ldr	r1, [r1, #-12]
	mov	r0, r3
	bl	Z3_ast_vector_get
	mov	r1, r0
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-36]
	sub	r2, fp, #4096
	sub	r2, r2, #12
	ldr	r2, [r2, #-20]
	add	r2, r2, #2
	ldr	r3, [r3, r2, lsl #2]
	cmp	r1, r3
	bne	.L362
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r1, [r3, #-20]
	ldr	r0, .L369+8
	bl	printf
	b	.L363
.L362:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-20]
	add	r3, r3, #1
	str	r3, [r2, #-20]
.L361:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-36]
	add	r3, r3, #4096
	ldr	r3, [r3, #1032]
	sub	r2, fp, #4096
	sub	r2, r2, #12
	ldr	r2, [r2, #-20]
	cmp	r2, r3
	bcc	.L364
.L363:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-36]
	add	r3, r3, #4096
	ldr	r3, [r3, #1032]
	sub	r2, fp, #4096
	sub	r2, r2, #12
	ldr	r2, [r2, #-20]
	cmp	r2, r3
	bne	.L365
	ldr	r0, .L369+12
	bl	exitf
.L365:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-24]
	add	r3, r3, #1
	str	r3, [r2, #-24]
.L360:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r2, [r2, #-24]
	ldr	r3, [r3, #-8]
	cmp	r2, r3
	bcc	.L366
	mov	r0, #10
	bl	putchar
.L359:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-16]
	ldr	r2, .L369
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L368
	bl	__stack_chk_fail
.L368:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L370:
	.align	2
.L369:
	.word	.LC260
	.word	.LC257
	.word	.LC258
	.word	.LC259
	.size	ext_check, .-ext_check
	.section	.rodata
	.align	2
.LC261:
	.ascii	"\012incremental_example1\000"
	.align	2
.LC262:
	.ascii	"incremental_example1\000"
	.align	2
.LC263:
	.ascii	"bug in Z3\000"
	.text
	.align	2
	.global	incremental_example1
	.syntax unified
	.arm
	.fpu softvfp
	.type	incremental_example1, %function
incremental_example1:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	bl	mk_ext_context
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-52]
	ldr	r3, [r3]
	str	r3, [fp, #-48]
	ldr	r0, .L377
	bl	puts
	ldr	r0, .L377+4
	bl	Z3_append_log
	ldr	r1, .L377+8
	ldr	r0, [fp, #-48]
	bl	mk_int_var
	str	r0, [fp, #-44]
	ldr	r1, .L377+12
	ldr	r0, [fp, #-48]
	bl	mk_int_var
	str	r0, [fp, #-40]
	ldr	r1, .L377+16
	ldr	r0, [fp, #-48]
	bl	mk_int_var
	str	r0, [fp, #-36]
	mov	r1, #2
	ldr	r0, [fp, #-48]
	bl	mk_int
	str	r0, [fp, #-32]
	mov	r1, #1
	ldr	r0, [fp, #-48]
	bl	mk_int
	str	r0, [fp, #-28]
	ldr	r2, [fp, #-40]
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-48]
	bl	Z3_mk_lt
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-52]
	bl	assert_retractable_cnstr
	str	r0, [fp, #-24]
	ldr	r2, [fp, #-36]
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-48]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-52]
	bl	assert_retractable_cnstr
	str	r0, [fp, #-20]
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-48]
	bl	Z3_mk_gt
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-52]
	bl	assert_retractable_cnstr
	str	r0, [fp, #-16]
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-48]
	bl	Z3_mk_lt
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-52]
	bl	assert_retractable_cnstr
	str	r0, [fp, #-12]
	ldr	r0, [fp, #-52]
	bl	ext_check
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmn	r3, #1
	beq	.L372
	ldr	r0, .L377+20
	bl	exitf
.L372:
	ldr	r0, .L377+24
	bl	puts
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-52]
	bl	retract_cnstr
	ldr	r0, [fp, #-52]
	bl	ext_check
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #1
	beq	.L373
	ldr	r0, .L377+20
	bl	exitf
.L373:
	ldr	r0, .L377+28
	bl	puts
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-52]
	bl	reassert_cnstr
	ldr	r0, [fp, #-52]
	bl	ext_check
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmn	r3, #1
	beq	.L374
	ldr	r0, .L377+20
	bl	exitf
.L374:
	ldr	r0, .L377+24
	bl	puts
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-52]
	bl	retract_cnstr
	ldr	r0, [fp, #-52]
	bl	ext_check
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmn	r3, #1
	beq	.L375
	ldr	r0, .L377+20
	bl	exitf
.L375:
	ldr	r0, .L377+24
	bl	puts
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-52]
	bl	retract_cnstr
	ldr	r0, [fp, #-52]
	bl	ext_check
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #1
	beq	.L376
	ldr	r0, .L377+20
	bl	exitf
.L376:
	ldr	r0, .L377+28
	bl	puts
	ldr	r0, [fp, #-52]
	bl	del_ext_context
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L378:
	.align	2
.L377:
	.word	.LC261
	.word	.LC262
	.word	.LC61
	.word	.LC62
	.word	.LC78
	.word	.LC263
	.word	.LC9
	.word	.LC48
	.size	incremental_example1, .-incremental_example1
	.section	.rodata
	.align	2
.LC264:
	.ascii	"\012reference_counter_example\000"
	.align	2
.LC265:
	.ascii	"reference_counter_example\000"
	.text
	.align	2
	.global	reference_counter_example
	.syntax unified
	.arm
	.fpu softvfp
	.type	reference_counter_example, %function
reference_counter_example:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	ldr	r0, .L380
	bl	puts
	ldr	r0, .L380+4
	bl	Z3_append_log
	bl	Z3_mk_config
	str	r0, [fp, #-40]
	ldr	r2, .L380+8
	ldr	r1, .L380+12
	ldr	r0, [fp, #-40]
	bl	Z3_set_param_value
	ldr	r0, [fp, #-40]
	bl	Z3_mk_context_rc
	str	r0, [fp, #-36]
	ldr	r0, [fp, #-40]
	bl	Z3_del_config
	ldr	r0, [fp, #-36]
	bl	mk_solver
	str	r0, [fp, #-32]
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-36]
	bl	Z3_solver_inc_ref
	ldr	r0, [fp, #-36]
	bl	Z3_mk_bool_sort
	str	r0, [fp, #-28]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-36]
	bl	Z3_sort_to_ast
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-36]
	bl	Z3_inc_ref
	ldr	r1, .L380+16
	ldr	r0, [fp, #-36]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-24]
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-36]
	bl	Z3_mk_const
	str	r0, [fp, #-20]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-36]
	bl	Z3_inc_ref
	ldr	r1, .L380+20
	ldr	r0, [fp, #-36]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-16]
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-36]
	bl	Z3_mk_const
	str	r0, [fp, #-12]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-36]
	bl	Z3_inc_ref
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-36]
	bl	Z3_sort_to_ast
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-36]
	bl	Z3_dec_ref
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-36]
	bl	Z3_mk_xor
	str	r0, [fp, #-8]
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-36]
	bl	Z3_inc_ref
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-36]
	bl	Z3_dec_ref
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-36]
	bl	Z3_dec_ref
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-36]
	bl	Z3_solver_assert
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-36]
	bl	Z3_dec_ref
	ldr	r0, .L380+24
	bl	puts
	mov	r2, #1
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-36]
	bl	check
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-36]
	bl	Z3_solver_push
	mov	r2, #1
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-36]
	bl	Z3_solver_pop
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-36]
	bl	Z3_solver_dec_ref
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-36]
	bl	del_solver
	ldr	r0, [fp, #-36]
	bl	Z3_del_context
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L381:
	.align	2
.L380:
	.word	.LC264
	.word	.LC265
	.word	.LC4
	.word	.LC5
	.word	.LC61
	.word	.LC62
	.word	.LC63
	.size	reference_counter_example, .-reference_counter_example
	.section	.rodata
	.align	2
.LC266:
	.ascii	"\012smt2parser_example\000"
	.align	2
.LC267:
	.ascii	"smt2parser_example\000"
	.align	2
.LC268:
	.ascii	"(declare-fun a () (_ BitVec 8)) (assert (bvuge a #x"
	.ascii	"10)) (assert (bvule a #xf0))\000"
	.align	2
.LC269:
	.ascii	"formulas: %s\012\000"
	.text
	.align	2
	.global	smt2parser_example
	.syntax unified
	.arm
	.fpu softvfp
	.type	smt2parser_example, %function
smt2parser_example:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	ldr	r0, .L383
	bl	puts
	ldr	r0, .L383+4
	bl	Z3_append_log
	bl	mk_context
	str	r0, [fp, #-12]
	mov	r3, #0
	str	r3, [sp, #12]
	mov	r3, #0
	str	r3, [sp, #8]
	mov	r3, #0
	str	r3, [sp, #4]
	mov	r3, #0
	str	r3, [sp]
	mov	r3, #0
	mov	r2, #0
	ldr	r1, .L383+8
	ldr	r0, [fp, #-12]
	bl	Z3_parse_smtlib2_string
	str	r0, [fp, #-8]
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-12]
	bl	Z3_ast_vector_inc_ref
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-12]
	bl	Z3_ast_vector_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L383+12
	bl	printf
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-12]
	bl	Z3_ast_vector_dec_ref
	ldr	r0, [fp, #-12]
	bl	Z3_del_context
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L384:
	.align	2
.L383:
	.word	.LC266
	.word	.LC267
	.word	.LC268
	.word	.LC269
	.size	smt2parser_example, .-smt2parser_example
	.section	.rodata
	.align	2
.LC270:
	.ascii	"\012substitute_example\000"
	.align	2
.LC271:
	.ascii	"substitute_example\000"
	.align	2
.LC272:
	.ascii	"substitution result: %s\012\000"
	.align	2
.LC273:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	substitute_example
	.syntax unified
	.arm
	.fpu softvfp
	.type	substitute_example, %function
substitute_example:
	@ args = 0, pretend = 0, frame = 72
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #80
	ldr	r3, .L387
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, .L387+4
	bl	puts
	ldr	r0, .L387+8
	bl	Z3_append_log
	bl	mk_context
	str	r0, [fp, #-64]
	ldr	r0, [fp, #-64]
	bl	Z3_mk_int_sort
	mov	r3, r0
	str	r3, [fp, #-72]
	ldr	r1, .L387+12
	ldr	r0, [fp, #-64]
	bl	mk_int_var
	mov	r3, r0
	str	r3, [fp, #-68]
	ldr	r1, .L387+16
	ldr	r0, [fp, #-64]
	bl	mk_int_var
	str	r0, [fp, #-60]
	ldr	r3, [fp, #-72]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-72]
	str	r3, [fp, #-12]
	ldr	r1, .L387+20
	ldr	r0, [fp, #-64]
	bl	Z3_mk_string_symbol
	mov	r1, r0
	ldr	r3, [fp, #-72]
	sub	r2, fp, #16
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #2
	ldr	r0, [fp, #-64]
	bl	Z3_mk_func_decl
	str	r0, [fp, #-56]
	ldr	r1, .L387+24
	ldr	r0, [fp, #-64]
	bl	Z3_mk_string_symbol
	mov	r1, r0
	ldr	r3, [fp, #-72]
	sub	r2, fp, #72
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #1
	ldr	r0, [fp, #-64]
	bl	Z3_mk_func_decl
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-68]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-60]
	str	r3, [fp, #-12]
	sub	r3, fp, #16
	mov	r2, #2
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-64]
	bl	Z3_mk_app
	str	r0, [fp, #-48]
	sub	r3, fp, #68
	mov	r2, #1
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-64]
	bl	Z3_mk_app
	str	r0, [fp, #-44]
	ldr	r3, [fp, #-48]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-12]
	sub	r3, fp, #16
	mov	r2, #2
	ldr	r1, [fp, #-56]
	ldr	r0, [fp, #-64]
	bl	Z3_mk_app
	str	r0, [fp, #-40]
	ldr	r3, [fp, #-72]
	mov	r2, r3
	ldr	r1, .L387+28
	ldr	r0, [fp, #-64]
	bl	Z3_mk_numeral
	str	r0, [fp, #-36]
	ldr	r3, [fp, #-72]
	mov	r2, r3
	ldr	r1, .L387+32
	ldr	r0, [fp, #-64]
	bl	Z3_mk_numeral
	str	r0, [fp, #-32]
	ldr	r3, [fp, #-60]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-36]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-12]
	sub	r2, fp, #24
	sub	r3, fp, #16
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #2
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-64]
	bl	Z3_substitute
	str	r0, [fp, #-28]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-64]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L387+36
	bl	printf
	ldr	r0, [fp, #-64]
	bl	Z3_del_context
	nop
	ldr	r3, .L387
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L386
	bl	__stack_chk_fail
.L386:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L388:
	.align	2
.L387:
	.word	.LC273
	.word	.LC270
	.word	.LC271
	.word	.LC170
	.word	.LC171
	.word	.LC24
	.word	.LC72
	.word	.LC142
	.word	.LC130
	.word	.LC272
	.size	substitute_example, .-substitute_example
	.section	.rodata
	.align	2
.LC274:
	.ascii	"\012substitute_vars_example\000"
	.align	2
.LC275:
	.ascii	"substitute_vars_example\000"
	.align	2
.LC276:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	substitute_vars_example
	.syntax unified
	.arm
	.fpu softvfp
	.type	substitute_vars_example, %function
substitute_vars_example:
	@ args = 0, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #72
	ldr	r3, .L391
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, .L391+4
	bl	puts
	ldr	r0, .L391+8
	bl	Z3_append_log
	bl	mk_context
	str	r0, [fp, #-56]
	ldr	r0, [fp, #-56]
	bl	Z3_mk_int_sort
	mov	r3, r0
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-64]
	mov	r2, r3
	mov	r1, #0
	ldr	r0, [fp, #-56]
	bl	Z3_mk_bound
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-64]
	mov	r2, r3
	mov	r1, #1
	ldr	r0, [fp, #-56]
	bl	Z3_mk_bound
	str	r0, [fp, #-48]
	ldr	r3, [fp, #-64]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-64]
	str	r3, [fp, #-12]
	ldr	r1, .L391+12
	ldr	r0, [fp, #-56]
	bl	Z3_mk_string_symbol
	mov	r1, r0
	ldr	r3, [fp, #-64]
	sub	r2, fp, #16
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #2
	ldr	r0, [fp, #-56]
	bl	Z3_mk_func_decl
	str	r0, [fp, #-44]
	ldr	r1, .L391+16
	ldr	r0, [fp, #-56]
	bl	Z3_mk_string_symbol
	mov	r1, r0
	ldr	r3, [fp, #-64]
	sub	r2, fp, #64
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #1
	ldr	r0, [fp, #-56]
	bl	Z3_mk_func_decl
	str	r0, [fp, #-40]
	ldr	r3, [fp, #-52]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-48]
	str	r3, [fp, #-12]
	sub	r3, fp, #16
	mov	r2, #2
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-56]
	bl	Z3_mk_app
	str	r0, [fp, #-36]
	ldr	r3, [fp, #-36]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-52]
	str	r3, [fp, #-12]
	sub	r3, fp, #16
	mov	r2, #2
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-56]
	bl	Z3_mk_app
	str	r0, [fp, #-32]
	ldr	r1, .L391+20
	ldr	r0, [fp, #-56]
	bl	mk_int_var
	str	r0, [fp, #-28]
	ldr	r1, .L391+24
	ldr	r0, [fp, #-56]
	bl	mk_int_var
	mov	r3, r0
	str	r3, [fp, #-60]
	sub	r3, fp, #60
	mov	r2, #1
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-56]
	bl	Z3_mk_app
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-28]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-24]
	str	r3, [fp, #-12]
	sub	r3, fp, #16
	mov	r2, #2
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-56]
	bl	Z3_substitute_vars
	str	r0, [fp, #-20]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-56]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L391+28
	bl	printf
	ldr	r0, [fp, #-56]
	bl	Z3_del_context
	nop
	ldr	r3, .L391
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L390
	bl	__stack_chk_fail
.L390:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L392:
	.align	2
.L391:
	.word	.LC276
	.word	.LC274
	.word	.LC275
	.word	.LC24
	.word	.LC72
	.word	.LC170
	.word	.LC171
	.word	.LC272
	.size	substitute_vars_example, .-substitute_vars_example
	.section	.rodata
	.align	2
.LC277:
	.ascii	"\012FPA-example\000"
	.align	2
.LC278:
	.ascii	"FPA-example\000"
	.align	2
.LC279:
	.ascii	"rm\000"
	.align	2
.LC280:
	.ascii	"x_plus_y\000"
	.align	2
.LC281:
	.ascii	"c4: %s\012\000"
	.align	2
.LC282:
	.ascii	"1025\000"
	.align	2
.LC283:
	.ascii	"3377699720527872\000"
	.align	2
.LC284:
	.ascii	"4619567317775286272\000"
	.align	2
.LC285:
	.ascii	"2\000"
	.align	2
.LC286:
	.ascii	"1.75\000"
	.align	2
.LC287:
	.ascii	"7.0\000"
	.align	2
.LC288:
	.ascii	"c5: %s\012\000"
	.align	2
.LC289:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	fpa_example
	.syntax unified
	.arm
	.fpu softvfp
	.type	fpa_example, %function
fpa_example:
	@ args = 0, pretend = 0, frame = 120
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, fp, lr}
	add	fp, sp, #16
	sub	sp, sp, #132
	ldr	r3, .L395
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	mov	r3,#0
	ldr	r0, .L395+4
	bl	puts
	ldr	r0, .L395+8
	bl	Z3_append_log
	bl	Z3_mk_config
	str	r0, [fp, #-140]
	ldr	r0, [fp, #-140]
	bl	Z3_mk_context
	str	r0, [fp, #-136]
	ldr	r0, [fp, #-136]
	bl	mk_solver
	str	r0, [fp, #-132]
	ldr	r0, [fp, #-140]
	bl	Z3_del_config
	mov	r2, #53
	mov	r1, #11
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_sort
	str	r0, [fp, #-128]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_rounding_mode_sort
	str	r0, [fp, #-124]
	ldr	r1, .L395+12
	ldr	r0, [fp, #-136]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-120]
	ldr	r2, [fp, #-124]
	ldr	r1, [fp, #-120]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_const
	str	r0, [fp, #-116]
	ldr	r1, .L395+16
	ldr	r0, [fp, #-136]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-112]
	ldr	r1, .L395+20
	ldr	r0, [fp, #-136]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-108]
	ldr	r2, [fp, #-128]
	ldr	r1, [fp, #-112]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_const
	str	r0, [fp, #-104]
	ldr	r2, [fp, #-128]
	ldr	r1, [fp, #-108]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_const
	str	r0, [fp, #-100]
	ldr	r3, [fp, #-128]
	str	r3, [sp]
	mov	r2, #0
	ldr	r3, .L395+24
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_numeral_double
	str	r0, [fp, #-96]
	ldr	r1, .L395+28
	ldr	r0, [fp, #-136]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-92]
	ldr	r2, [fp, #-128]
	ldr	r1, [fp, #-92]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_const
	str	r0, [fp, #-88]
	ldr	r3, [fp, #-100]
	ldr	r2, [fp, #-104]
	ldr	r1, [fp, #-116]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_add
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-88]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_eq
	str	r0, [fp, #-84]
	ldr	r3, [fp, #-84]
	str	r3, [fp, #-64]
	ldr	r2, [fp, #-96]
	ldr	r1, [fp, #-88]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_eq
	mov	r3, r0
	str	r3, [fp, #-60]
	sub	r3, fp, #64
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-136]
	bl	Z3_mk_and
	str	r0, [fp, #-80]
	ldr	r3, [fp, #-80]
	str	r3, [fp, #-56]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_rtz
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-116]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_eq
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-136]
	bl	Z3_mk_not
	mov	r3, r0
	str	r3, [fp, #-52]
	sub	r3, fp, #56
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-136]
	bl	Z3_mk_and
	str	r0, [fp, #-76]
	ldr	r1, [fp, #-100]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_is_zero
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-136]
	bl	Z3_mk_not
	mov	r3, r0
	str	r3, [fp, #-48]
	ldr	r1, [fp, #-100]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_is_nan
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-136]
	bl	Z3_mk_not
	mov	r3, r0
	str	r3, [fp, #-44]
	ldr	r1, [fp, #-100]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_is_infinite
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-136]
	bl	Z3_mk_not
	mov	r3, r0
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-76]
	str	r3, [fp, #-36]
	sub	r3, fp, #48
	mov	r2, r3
	mov	r1, #3
	ldr	r0, [fp, #-136]
	bl	Z3_mk_and
	mov	r3, r0
	str	r3, [fp, #-32]
	sub	r3, fp, #36
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-136]
	bl	Z3_mk_and
	str	r0, [fp, #-72]
	ldr	r1, [fp, #-72]
	ldr	r0, [fp, #-136]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L395+32
	bl	printf
	ldr	r1, [fp, #-132]
	ldr	r0, [fp, #-136]
	bl	Z3_solver_push
	ldr	r2, [fp, #-72]
	ldr	r1, [fp, #-132]
	ldr	r0, [fp, #-136]
	bl	Z3_solver_assert
	mov	r2, #1
	ldr	r1, [fp, #-132]
	ldr	r0, [fp, #-136]
	bl	check
	mov	r2, #1
	ldr	r1, [fp, #-132]
	ldr	r0, [fp, #-136]
	bl	Z3_solver_pop
	ldr	r1, [fp, #-132]
	ldr	r0, [fp, #-136]
	bl	Z3_solver_push
	mov	r1, #1
	ldr	r0, [fp, #-136]
	bl	Z3_mk_bv_sort
	mov	r3, r0
	mov	r2, r3
	ldr	r1, .L395+36
	ldr	r0, [fp, #-136]
	bl	Z3_mk_numeral
	mov	r4, r0
	mov	r1, #11
	ldr	r0, [fp, #-136]
	bl	Z3_mk_bv_sort
	mov	r3, r0
	mov	r2, r3
	ldr	r1, .L395+40
	ldr	r0, [fp, #-136]
	bl	Z3_mk_numeral
	mov	r5, r0
	mov	r1, #52
	ldr	r0, [fp, #-136]
	bl	Z3_mk_bv_sort
	mov	r3, r0
	mov	r2, r3
	ldr	r1, .L395+44
	ldr	r0, [fp, #-136]
	bl	Z3_mk_numeral
	mov	r3, r0
	mov	r2, r5
	mov	r1, r4
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_fp
	str	r0, [fp, #-84]
	mov	r1, #64
	ldr	r0, [fp, #-136]
	bl	Z3_mk_bv_sort
	mov	r3, r0
	mov	r2, r3
	ldr	r1, .L395+48
	ldr	r0, [fp, #-136]
	bl	Z3_mk_numeral
	mov	r4, r0
	mov	r2, #53
	mov	r1, #11
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_sort
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_to_fp_bv
	str	r0, [fp, #-80]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_rtz
	mov	r4, r0
	ldr	r0, [fp, #-136]
	bl	Z3_mk_int_sort
	mov	r3, r0
	mov	r2, r3
	ldr	r1, .L395+52
	ldr	r0, [fp, #-136]
	bl	Z3_mk_numeral
	mov	r5, r0
	ldr	r0, [fp, #-136]
	bl	Z3_mk_real_sort
	mov	r3, r0
	mov	r2, r3
	ldr	r1, .L395+56
	ldr	r0, [fp, #-136]
	bl	Z3_mk_numeral
	mov	r6, r0
	mov	r2, #53
	mov	r1, #11
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_sort
	mov	r3, r0
	str	r3, [sp]
	mov	r3, r6
	mov	r2, r5
	mov	r1, r4
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_to_fp_int_real
	str	r0, [fp, #-76]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_rtz
	mov	r4, r0
	ldr	r0, [fp, #-136]
	bl	Z3_mk_real_sort
	mov	r3, r0
	mov	r2, r3
	ldr	r1, .L395+60
	ldr	r0, [fp, #-136]
	bl	Z3_mk_numeral
	mov	r5, r0
	mov	r2, #53
	mov	r1, #11
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_sort
	mov	r3, r0
	mov	r2, r5
	mov	r1, r4
	ldr	r0, [fp, #-136]
	bl	Z3_mk_fpa_to_fp_real
	str	r0, [fp, #-72]
	ldr	r2, [fp, #-80]
	ldr	r1, [fp, #-84]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_eq
	mov	r3, r0
	str	r3, [fp, #-36]
	ldr	r2, [fp, #-76]
	ldr	r1, [fp, #-84]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_eq
	mov	r3, r0
	str	r3, [fp, #-32]
	ldr	r2, [fp, #-72]
	ldr	r1, [fp, #-84]
	ldr	r0, [fp, #-136]
	bl	Z3_mk_eq
	mov	r3, r0
	str	r3, [fp, #-28]
	sub	r3, fp, #36
	mov	r2, r3
	mov	r1, #3
	ldr	r0, [fp, #-136]
	bl	Z3_mk_and
	str	r0, [fp, #-68]
	ldr	r1, [fp, #-68]
	ldr	r0, [fp, #-136]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L395+64
	bl	printf
	ldr	r2, [fp, #-68]
	ldr	r1, [fp, #-132]
	ldr	r0, [fp, #-136]
	bl	Z3_solver_assert
	mov	r2, #1
	ldr	r1, [fp, #-132]
	ldr	r0, [fp, #-136]
	bl	check
	mov	r2, #1
	ldr	r1, [fp, #-132]
	ldr	r0, [fp, #-136]
	bl	Z3_solver_pop
	ldr	r1, [fp, #-132]
	ldr	r0, [fp, #-136]
	bl	del_solver
	ldr	r0, [fp, #-136]
	bl	Z3_del_context
	nop
	ldr	r3, .L395
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L394
	bl	__stack_chk_fail
.L394:
	sub	sp, fp, #16
	@ sp needed
	pop	{r4, r5, r6, fp, pc}
.L396:
	.align	2
.L395:
	.word	.LC289
	.word	.LC277
	.word	.LC278
	.word	.LC279
	.word	.LC61
	.word	.LC62
	.word	1078263808
	.word	.LC280
	.word	.LC281
	.word	.LC142
	.word	.LC282
	.word	.LC283
	.word	.LC284
	.word	.LC285
	.word	.LC286
	.word	.LC287
	.word	.LC288
	.size	fpa_example, .-fpa_example
	.section	.rodata
	.align	2
.LC290:
	.ascii	"\012mk_model_example\000"
	.align	2
.LC291:
	.ascii	"c\000"
	.align	2
.LC292:
	.ascii	"\000"
	.align	2
.LC293:
	.ascii	"Model:\012%s\012\000"
	.align	2
.LC294:
	.ascii	"Found interpretation for \"%s\"\012\000"
	.align	2
.LC295:
	.ascii	"Missing interpretation\000"
	.align	2
.LC296:
	.ascii	"Failed to evaluate model\000"
	.align	2
.LC297:
	.ascii	"Failed to get integer value for a+b\000"
	.align	2
.LC298:
	.ascii	"Evaluated a + b = %d\012\000"
	.align	2
.LC299:
	.ascii	"a+b did not evaluate to expected value\000"
	.align	2
.LC300:
	.ascii	"Failed to get integer value for c[0] + c[1] + c[2]\000"
	.align	2
.LC301:
	.ascii	"Evaluated c[0] + c[1] + c[2] = %d\012\000"
	.align	2
.LC302:
	.ascii	"c[0] + c[1] + c[2] did not evaluate to expected val"
	.ascii	"ue\000"
	.align	2
.LC303:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	mk_model_example
	.syntax unified
	.arm
	.fpu softvfp
	.type	mk_model_example, %function
mk_model_example:
	@ args = 0, pretend = 0, frame = 160
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #168
	ldr	r3, .L410
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, .L410+4
	bl	puts
	bl	mk_context
	str	r0, [fp, #-144]
	ldr	r0, [fp, #-144]
	bl	Z3_mk_model
	str	r0, [fp, #-140]
	ldr	r1, [fp, #-140]
	ldr	r0, [fp, #-144]
	bl	Z3_model_inc_ref
	ldr	r0, [fp, #-144]
	bl	Z3_mk_int_sort
	str	r0, [fp, #-136]
	ldr	r1, .L410+8
	ldr	r0, [fp, #-144]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-132]
	ldr	r3, [fp, #-136]
	str	r3, [sp]
	mov	r3, #0
	mov	r2, #0
	ldr	r1, [fp, #-132]
	ldr	r0, [fp, #-144]
	bl	Z3_mk_func_decl
	str	r0, [fp, #-128]
	mov	r3, #0
	mov	r2, #0
	ldr	r1, [fp, #-128]
	ldr	r0, [fp, #-144]
	bl	Z3_mk_app
	str	r0, [fp, #-124]
	ldr	r1, .L410+12
	ldr	r0, [fp, #-144]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-120]
	ldr	r3, [fp, #-136]
	str	r3, [sp]
	mov	r3, #0
	mov	r2, #0
	ldr	r1, [fp, #-120]
	ldr	r0, [fp, #-144]
	bl	Z3_mk_func_decl
	str	r0, [fp, #-116]
	mov	r3, #0
	mov	r2, #0
	ldr	r1, [fp, #-116]
	ldr	r0, [fp, #-144]
	bl	Z3_mk_app
	str	r0, [fp, #-112]
	ldr	r1, .L410+16
	ldr	r0, [fp, #-144]
	bl	Z3_mk_string_symbol
	str	r0, [fp, #-108]
	ldr	r2, [fp, #-136]
	ldr	r1, [fp, #-136]
	ldr	r0, [fp, #-144]
	bl	Z3_mk_array_sort
	str	r0, [fp, #-104]
	ldr	r3, [fp, #-104]
	str	r3, [sp]
	mov	r3, #0
	mov	r2, #0
	ldr	r1, [fp, #-108]
	ldr	r0, [fp, #-144]
	bl	Z3_mk_func_decl
	str	r0, [fp, #-100]
	mov	r3, #0
	mov	r2, #0
	ldr	r1, [fp, #-100]
	ldr	r0, [fp, #-144]
	bl	Z3_mk_app
	str	r0, [fp, #-96]
	ldr	r2, [fp, #-136]
	mov	r1, #0
	ldr	r0, [fp, #-144]
	bl	Z3_mk_int
	str	r0, [fp, #-92]
	ldr	r2, [fp, #-136]
	mov	r1, #1
	ldr	r0, [fp, #-144]
	bl	Z3_mk_int
	str	r0, [fp, #-88]
	ldr	r2, [fp, #-136]
	mov	r1, #2
	ldr	r0, [fp, #-144]
	bl	Z3_mk_int
	str	r0, [fp, #-84]
	ldr	r2, [fp, #-136]
	mov	r1, #3
	ldr	r0, [fp, #-144]
	bl	Z3_mk_int
	str	r0, [fp, #-80]
	ldr	r2, [fp, #-136]
	mov	r1, #4
	ldr	r0, [fp, #-144]
	bl	Z3_mk_int
	str	r0, [fp, #-76]
	ldr	r3, [fp, #-88]
	ldr	r2, [fp, #-128]
	ldr	r1, [fp, #-140]
	ldr	r0, [fp, #-144]
	bl	Z3_add_const_interp
	ldr	r3, [fp, #-84]
	ldr	r2, [fp, #-116]
	ldr	r1, [fp, #-140]
	ldr	r0, [fp, #-144]
	bl	Z3_add_const_interp
	ldr	r3, [fp, #-136]
	str	r3, [fp, #-24]
	sub	r2, fp, #24
	ldr	r3, [fp, #-136]
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #1
	ldr	r1, .L410+20
	ldr	r0, [fp, #-144]
	bl	Z3_mk_fresh_func_decl
	str	r0, [fp, #-72]
	ldr	r3, [fp, #-92]
	ldr	r2, [fp, #-72]
	ldr	r1, [fp, #-140]
	ldr	r0, [fp, #-144]
	bl	Z3_add_func_interp
	str	r0, [fp, #-68]
	ldr	r1, [fp, #-68]
	ldr	r0, [fp, #-144]
	bl	Z3_func_interp_inc_ref
	ldr	r0, [fp, #-144]
	bl	Z3_mk_ast_vector
	str	r0, [fp, #-64]
	ldr	r1, [fp, #-64]
	ldr	r0, [fp, #-144]
	bl	Z3_ast_vector_inc_ref
	ldr	r2, [fp, #-92]
	ldr	r1, [fp, #-64]
	ldr	r0, [fp, #-144]
	bl	Z3_ast_vector_push
	ldr	r3, [fp, #-80]
	ldr	r2, [fp, #-64]
	ldr	r1, [fp, #-68]
	ldr	r0, [fp, #-144]
	bl	Z3_func_interp_add_entry
	ldr	r0, [fp, #-144]
	bl	Z3_mk_ast_vector
	str	r0, [fp, #-60]
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-144]
	bl	Z3_ast_vector_inc_ref
	ldr	r2, [fp, #-88]
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-144]
	bl	Z3_ast_vector_push
	ldr	r3, [fp, #-76]
	ldr	r2, [fp, #-60]
	ldr	r1, [fp, #-68]
	ldr	r0, [fp, #-144]
	bl	Z3_func_interp_add_entry
	ldr	r1, [fp, #-72]
	ldr	r0, [fp, #-144]
	bl	Z3_mk_as_array
	str	r0, [fp, #-56]
	ldr	r3, [fp, #-56]
	ldr	r2, [fp, #-100]
	ldr	r1, [fp, #-140]
	ldr	r0, [fp, #-144]
	bl	Z3_add_const_interp
	ldr	r1, [fp, #-140]
	ldr	r0, [fp, #-144]
	bl	Z3_model_to_string
	str	r0, [fp, #-52]
	ldr	r1, [fp, #-52]
	ldr	r0, .L410+24
	bl	printf
	ldr	r3, [fp, #-128]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-116]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-100]
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-148]
	b	.L398
.L401:
	ldr	r3, [fp, #-148]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-16]
	str	r3, [fp, #-28]
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-140]
	ldr	r0, [fp, #-144]
	bl	Z3_model_has_interp
	mov	r3, r0
	cmp	r3, #0
	beq	.L399
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-144]
	bl	Z3_func_decl_to_ast
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-144]
	bl	Z3_ast_to_string
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L410+28
	bl	printf
	b	.L409
.L399:
	ldr	r0, .L410+32
	bl	printf
	mov	r0, #1
	bl	exit
.L409:
	ldr	r3, [fp, #-148]
	add	r3, r3, #1
	str	r3, [fp, #-148]
.L398:
	ldr	r3, [fp, #-148]
	cmp	r3, #2
	bls	.L401
	ldr	r3, [fp, #-124]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-112]
	str	r3, [fp, #-16]
	sub	r3, fp, #20
	mov	r2, r3
	mov	r1, #2
	ldr	r0, [fp, #-144]
	bl	Z3_mk_add
	str	r0, [fp, #-48]
	mov	r3, #0
	str	r3, [fp, #-156]
	sub	r3, fp, #156
	str	r3, [sp]
	mov	r3, #0
	ldr	r2, [fp, #-48]
	ldr	r1, [fp, #-140]
	ldr	r0, [fp, #-144]
	bl	Z3_model_eval
	mov	r3, r0
	strb	r3, [fp, #-160]
	ldrb	r3, [fp, #-160]
	eor	r3, r3, #1
	and	r3, r3, #255
	cmp	r3, #0
	beq	.L402
	ldr	r0, .L410+36
	bl	puts
	mov	r0, #1
	bl	exit
.L402:
	mov	r3, #0
	str	r3, [fp, #-152]
	ldr	r3, [fp, #-156]
	sub	r2, fp, #152
	mov	r1, r3
	ldr	r0, [fp, #-144]
	bl	Z3_get_numeral_int
	mov	r3, r0
	strb	r3, [fp, #-159]
	ldrb	r3, [fp, #-159]
	eor	r3, r3, #1
	and	r3, r3, #255
	cmp	r3, #0
	beq	.L403
	ldr	r0, .L410+40
	bl	puts
	mov	r0, #1
	bl	exit
.L403:
	ldr	r3, [fp, #-152]
	mov	r1, r3
	ldr	r0, .L410+44
	bl	printf
	ldr	r3, [fp, #-152]
	cmp	r3, #3
	beq	.L404
	ldr	r0, .L410+48
	bl	puts
	mov	r0, #1
	bl	exit
.L404:
	ldr	r2, [fp, #-92]
	ldr	r1, [fp, #-96]
	ldr	r0, [fp, #-144]
	bl	Z3_mk_select
	str	r0, [fp, #-44]
	ldr	r2, [fp, #-88]
	ldr	r1, [fp, #-96]
	ldr	r0, [fp, #-144]
	bl	Z3_mk_select
	str	r0, [fp, #-40]
	ldr	r2, [fp, #-84]
	ldr	r1, [fp, #-96]
	ldr	r0, [fp, #-144]
	bl	Z3_mk_select
	str	r0, [fp, #-36]
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-40]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-36]
	str	r3, [fp, #-12]
	sub	r3, fp, #20
	mov	r2, r3
	mov	r1, #3
	ldr	r0, [fp, #-144]
	bl	Z3_mk_add
	str	r0, [fp, #-32]
	mov	r3, #0
	str	r3, [fp, #-156]
	sub	r3, fp, #156
	str	r3, [sp]
	mov	r3, #0
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-140]
	ldr	r0, [fp, #-144]
	bl	Z3_model_eval
	mov	r3, r0
	strb	r3, [fp, #-158]
	ldrb	r3, [fp, #-158]
	eor	r3, r3, #1
	and	r3, r3, #255
	cmp	r3, #0
	beq	.L405
	ldr	r0, .L410+36
	bl	puts
	mov	r0, #1
	bl	exit
.L405:
	mov	r3, #0
	str	r3, [fp, #-152]
	ldr	r3, [fp, #-156]
	sub	r2, fp, #152
	mov	r1, r3
	ldr	r0, [fp, #-144]
	bl	Z3_get_numeral_int
	mov	r3, r0
	strb	r3, [fp, #-157]
	ldrb	r3, [fp, #-157]
	eor	r3, r3, #1
	and	r3, r3, #255
	cmp	r3, #0
	beq	.L406
	ldr	r0, .L410+52
	bl	puts
	mov	r0, #1
	bl	exit
.L406:
	ldr	r3, [fp, #-152]
	mov	r1, r3
	ldr	r0, .L410+56
	bl	printf
	ldr	r3, [fp, #-152]
	cmp	r3, #7
	beq	.L407
	ldr	r0, .L410+60
	bl	puts
	mov	r0, #1
	bl	exit
.L407:
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-144]
	bl	Z3_ast_vector_dec_ref
	ldr	r1, [fp, #-64]
	ldr	r0, [fp, #-144]
	bl	Z3_ast_vector_dec_ref
	ldr	r1, [fp, #-68]
	ldr	r0, [fp, #-144]
	bl	Z3_func_interp_dec_ref
	ldr	r1, [fp, #-140]
	ldr	r0, [fp, #-144]
	bl	Z3_model_dec_ref
	ldr	r0, [fp, #-144]
	bl	Z3_del_context
	nop
	ldr	r3, .L410
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L408
	bl	__stack_chk_fail
.L408:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L411:
	.align	2
.L410:
	.word	.LC303
	.word	.LC290
	.word	.LC170
	.word	.LC171
	.word	.LC291
	.word	.LC292
	.word	.LC293
	.word	.LC294
	.word	.LC295
	.word	.LC296
	.word	.LC297
	.word	.LC298
	.word	.LC299
	.word	.LC300
	.word	.LC301
	.word	.LC302
	.size	mk_model_example, .-mk_model_example
	.section	.rodata
	.align	2
.LC304:
	.ascii	"z3.log\000"
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r0, .L414
	bl	Z3_open_log
	bl	display_version
	bl	simple_example
	bl	demorgan
	bl	find_model_example1
	bl	find_model_example2
	bl	prove_example1
	bl	prove_example2
	bl	push_pop_example1
	bl	quantifier_example1
	bl	array_example1
	bl	array_example2
	bl	array_example3
	bl	tuple_example1
	bl	bitvector_example1
	bl	bitvector_example2
	bl	eval_example1
	bl	two_contexts_example1
	bl	error_code_example1
	bl	error_code_example2
	bl	parser_example2
	bl	parser_example3
	bl	parser_example5
	bl	numeral_example
	bl	ite_example
	bl	list_example
	bl	tree_example
	bl	forest_example
	bl	binary_tree_example
	bl	enum_example
	bl	unsat_core_and_proof_example
	bl	incremental_example1
	bl	reference_counter_example
	bl	smt2parser_example
	bl	substitute_example
	bl	substitute_vars_example
	bl	fpa_example
	bl	mk_model_example
	mov	r3, #0
	mov	r0, r3
	pop	{fp, pc}
.L415:
	.align	2
.L414:
	.word	.LC304
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
