// File: /workspace/github_c_makefile_star2_O0/dalnefre[P]kernel_abe/abe.c
// Function: test_pre
void
test_pre()
{
/*	char tmp_buf[256]; */

	DBUG_ENTER("test_pre");

	DBUG_PRINT("", ("sizeof(int)=%d", sizeof(int)));
	DBUG_PRINT("", ("sizeof(CONS*)=%d", sizeof(CONS*)));
	DBUG_PRINT("", ("sizeof(BEH)=%d", sizeof(BEH)));
	assert(sizeof(int) == sizeof(CONS*));
	assert(sizeof(BEH) == sizeof(CONS*));

	DBUG_PRINT("", ("NIL=16#%08lx (%p)", NIL, NIL));
	assert(nilp(NIL));
	assert(nilp(NIL) == _nilp(NIL));

	DBUG_PRINT("", ("sizeof(BOOL)=%d", sizeof(BOOL)));
	assert(sizeof(BOOL) == sizeof(CONS*));
	DBUG_PRINT("", ("TRUE=16#%08lx (%p)", TRUE, TRUE));
	DBUG_PRINT("", ("FALSE=16#%08lx (%p)", FALSE, FALSE));
	assert(TRUE);
	assert(!FALSE);
	assert(TRUE == ((BOOL)(0 == 0)));
	assert(FALSE == ((BOOL)(0 != 0)));

#if TYPETAG_USES_3MSB
	DBUG_PRINT("", ("Type tag in MSB[31:29]"));
#endif /* TYPETAG_USES_3MSB */
#if TYPETAG_USES_2LSB
	DBUG_PRINT("", ("Type tag in LSB[1:0]"));
#endif /* TYPETAG_USES_2LSB */
#if TYPETAG_USES_3LSB
	DBUG_PRINT("", ("Type tag in LSB[2/1:0]"));
#endif /* TYPETAG_USES_3LSB */
#if TYPETAG_USES_1LSB_2MSB
	DBUG_PRINT("", ("Type tag in LSB[0]+MSB[31:30]"));
#endif /* TYPETAG_USES_1LSB_2MSB */
	DBUG_PRINT("", ("_Program[]=16#%08lx (%p)", _Program, _Program));
	assert(_Program == MK_PTR(MK_REF(_Program)));

/* FIXME: enable this test when stack allocation is allowed
	DBUG_PRINT("", ("tmp_buf[]=%p", tmp_buf));
	assert(tmp_buf == MK_PTR(MK_REF(tmp_buf)));
*/

	DBUG_PRINT("", ("test_pre()=16#%08lx (%p)", test_pre, test_pre));
	assert(test_pre == MK_BEH(MK_FUNC(test_pre)));

	DBUG_RETURN;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
leaq 0x10cc5(%rip), %rax     # 0x13004
movq %rax, -0x28(%rbp)
leaq 0x15fc6(%rip), %rax     # 0x18310
movq (%rax), %rax
movq 0x50(%rax), %rax
movl 0x8(%rax), %eax
movl %eax, -0x20(%rbp)
movl $0x1c, -0x1c(%rbp)
leaq 0x12cfb(%rip), %rax     # 0x15060
movq %rax, -0x18(%rbp)
leaq 0x15dc0(%rip), %rax     # 0x18130
movq %rax, -0x10(%rbp)
leaq 0x15f95(%rip), %rax     # 0x18310
movq (%rax), %rax
movq 0x50(%rax), %rax
movq %rax, -0x8(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x11e00
leaq 0x1652a(%rip), %rax     # 0x188c0
cmpl $0x0, (%rax)
je 0x23ed
leaq 0x15f6e(%rip), %rax     # 0x18310
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x12cb0(%rip), %rcx     # 0x15060
movq %rcx, 0x10(%rax)
leaq 0x12ca5(%rip), %rdi     # 0x15060
callq 0x11210
cmpl $0x0, %eax
je 0x23ed
leaq 0x15f44(%rip), %rax     # 0x18310
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x1e, 0xc(%rax)
leaq 0x10c2c(%rip), %rdi     # 0x1300d
movl $0x4, %esi
movb $0x0, %al
callq 0x11eb0
jmp 0x23ef
jmp 0x23f1
leaq 0x164c8(%rip), %rax     # 0x188c0
cmpl $0x0, (%rax)
je 0x244f
leaq 0x15f0c(%rip), %rax     # 0x18310
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x12c4e(%rip), %rcx     # 0x15060
movq %rcx, 0x10(%rax)
leaq 0x12c43(%rip), %rdi     # 0x15060
callq 0x11210
cmpl $0x0, %eax
je 0x244f
leaq 0x15ee2(%rip), %rax     # 0x18310
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x1f, 0xc(%rax)
leaq 0x10bd9(%rip), %rdi     # 0x1301c
movl $0x8, %esi
movb $0x0, %al
callq 0x11eb0
jmp 0x2451
jmp 0x2453
leaq 0x16466(%rip), %rax     # 0x188c0
cmpl $0x0, (%rax)
je 0x24b1
leaq 0x15eaa(%rip), %rax     # 0x18310
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x12bec(%rip), %rcx     # 0x15060
movq %rcx, 0x10(%rax)
leaq 0x12be1(%rip), %rdi     # 0x15060
callq 0x11210
cmpl $0x0, %eax
je 0x24b1
leaq 0x15e80(%rip), %rax     # 0x18310
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x20, 0xc(%rax)
leaq 0x10b88(%rip), %rdi     # 0x1302d
movl $0x8, %esi
movb $0x0, %al
callq 0x11eb0
jmp 0x24b3
leaq 0x10b82(%rip), %rdi     # 0x1303c
leaq 0x10b98(%rip), %rsi     # 0x13059
movl $0x21, %edx
leaq 0x10b92(%rip), %rcx     # 0x1305f
callq 0x2100
nopw %cs:(%rax,%rax)