// File: /workspace/github_c_makefile_star2_O2/nimble-code[P]Modex/Src/xtract.c
// Function: ax_fixed
void
ax_fixed(FILE *fd)
{
	fprintf(fd, "bool _ax_runs;\n");
	fprintf(fd, "c_code {\n");
	fprintf(fd, "	int (*_ax_q)(void), (*_ax_r)(void);\n\n");
	fprintf(fd, "	void _ax_start(int (*q)(void), int (*r)(void))\n");
	fprintf(fd, "	{	_ax_q = q;\n");
	fprintf(fd, "		_ax_r = r;\n");
	fprintf(fd, "		now._ax_runs = 1;\n");
	fprintf(fd, "}	}\n\n");
	fprintf(fd, "never {\n");
	fprintf(fd, "start:	/* assert_p(q,r) or ![](p -> (q U r)) */\n");
	fprintf(fd, "	do\n");
	fprintf(fd, "	:: c_expr { now._ax_runs && !_ax_r() } -> break\n");
	fprintf(fd, "	:: else\n");
	fprintf(fd, "	od;\n");
	fprintf(fd, "accept:\n");
	fprintf(fd, "	do\n");
	fprintf(fd, "	:: c_expr {  _ax_r() } -> _ax_runs = 0; goto start\n");
	fprintf(fd, "	:: c_expr { !_ax_r() && !_ax_q() } -> break	/* safety */\n");
	fprintf(fd, "	:: else						/* liveness */\n");
	fprintf(fd, "	od\n");
	fprintf(fd, "}\n");
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x10222(%rip), %rdi     # 0x23162
pushq $0xf
popq %rsi
pushq $0x1
popq %r14
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0xf317(%rip), %rdi      # 0x22270
pushq $0x9
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x10204(%rip), %rdi     # 0x23172
pushq $0x26
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x10216(%rip), %rdi     # 0x23199
pushq $0x30
popq %r12
movq %r12, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x1022e(%rip), %rdi     # 0x231ca
pushq $0xe
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x10228(%rip), %rdi     # 0x231d9
pushq $0xd
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x10221(%rip), %rdi     # 0x231e7
pushq $0x14
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x10221(%rip), %rdi     # 0x231fc
pushq $0x5
popq %r13
movq %r13, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x1020e(%rip), %rdi     # 0x23202
pushq $0x8
popq %rbp
movq %rbp, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x101ff(%rip), %rdi     # 0x2320b
movq %r12, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x1021b(%rip), %r15     # 0x2323c
pushq $0x4
popq %r12
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x10204(%rip), %rdi     # 0x23241
pushq $0x31
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x10221(%rip), %rdi     # 0x23273
pushq $0x9
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x10216(%rip), %rdi     # 0x2327d
movq %r13, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x10207(%rip), %rdi     # 0x23283
movq %rbp, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x101ea(%rip), %rdi     # 0x2328c
pushq $0x34
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x1020a(%rip), %rdi     # 0x232c1
pushq $0x3a
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x10230(%rip), %rdi     # 0x232fc
pushq $0x1d
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x10239(%rip), %rdi     # 0x2331a
movq %r12, %rsi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x42c0
leaq 0x10aa9(%rip), %rdi     # 0x23b9f
pushq $0x2
popq %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x42c0