// File: /workspace/github_c_makefile_star2_O0/dalnefre[P]kernel_abe/kernel.c
// Function: pair_type
static
BEH_DECL(pair_type)
{
	CONS* msg = WHAT;
	CONS* cust;
	CONS* req;

	DBUG_ENTER("pair_type");
	ENSURE(is_pr(msg));
	cust = hd(msg);
	ENSURE(actorp(cust));
	req = tl(msg);

	DBUG_PRINT("cust", ("%s", cons_to_str(cust)));
	DBUG_PRINT("req", ("%s", cons_to_str(req)));
	if (is_pr(req)
	&& (hd(req) == ATOM("set_car"))) {
		THROW(pr(ATOM("Immutable"), SELF));
	} else if (is_pr(req)
	&& (hd(req) == ATOM("set_cdr"))) {
		THROW(pr(ATOM("Immutable"), SELF));
	} else if (req == ATOM("copy_immutable")) {
		SEND(cust, SELF);
	} else {
		cons_type(CFG);  /* DELEGATE BEHAVIOR */
	}
	DBUG_RETURN;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x25510
movq %rax, -0x10(%rbp)
leaq 0x25717(%rip), %rax     # 0x2954e
movq %rax, -0x48(%rbp)
leaq 0x2b4de(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl 0x8(%rax), %eax
movl %eax, -0x40(%rbp)
movl $0x573, -0x3c(%rbp)     # imm = 0x573
leaq 0x25512(%rip), %rax     # 0x2936f
movq %rax, -0x38(%rbp)
leaq 0x2b2d8(%rip), %rax     # 0x2f140
movq %rax, -0x30(%rbp)
leaq 0x2b4ad(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movq %rax, -0x28(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x28490
xorl %eax, %eax
cmpq $0x0, -0x10(%rbp)
movb %al, -0x49(%rbp)
je 0x3ea5
movq -0x10(%rbp), %rax
andq $0x3, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0x49(%rbp)
movb -0x49(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x3eec
leaq 0x2b3d4(%rip), %rax     # 0x2f290
cmpq %rax, -0x10(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0x3eec
movq -0x10(%rbp), %rax
andq $0x3, %rax
cmpq $0x1, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x3f69
movq -0x8(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x1c51(%rip), %rsi      # 0x5b50
leaq 0x2b38a(%rip), %rdx     # 0x2f290
callq 0x1b6f0
movq %rax, -0x58(%rbp)
leaq 0x25642(%rip), %rdi     # 0x29558
callq 0x216e0
movq %rax, -0x68(%rbp)
leaq 0x250f6(%rip), %rdi     # 0x2901c
callq 0x216e0
movq %rax, %rdi
movl $0x15d3, %esi           # imm = 0x15D3
callq 0x25290
movq -0x68(%rbp), %rdi
movq %rax, %rsi
callq 0x25290
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rsi
movq %rax, %rdx
callq 0x1b810
movl $0x574, -0x3c(%rbp)     # imm = 0x574
leaq -0x48(%rbp), %rdi
callq 0x28660
jmp 0x4397
movq -0x10(%rbp), %rdi
callq 0x25380
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
andq $0x3, %rax
cmpq $0x1, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0x400f
movq -0x8(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x1bab(%rip), %rsi      # 0x5b50
leaq 0x2b2e4(%rip), %rdx     # 0x2f290
callq 0x1b6f0
movq %rax, -0x70(%rbp)
leaq 0x2559c(%rip), %rdi     # 0x29558
callq 0x216e0
movq %rax, -0x80(%rbp)
leaq 0x25050(%rip), %rdi     # 0x2901c
callq 0x216e0
movq %rax, %rdi
movl $0x15db, %esi           # imm = 0x15DB
callq 0x25290
movq -0x80(%rbp), %rdi
movq %rax, %rsi
callq 0x25290
movq -0x78(%rbp), %rdi
movq -0x70(%rbp), %rsi
movq %rax, %rdx
callq 0x1b810
movl $0x576, -0x3c(%rbp)     # imm = 0x576
leaq -0x48(%rbp), %rdi
callq 0x28660
jmp 0x4397
movq -0x10(%rbp), %rdi
callq 0x25510
movq %rax, -0x20(%rbp)
leaq 0x2b8fd(%rip), %rax     # 0x2f920
cmpl $0x0, (%rax)
je 0x4081
leaq 0x2b2f1(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x2551e(%rip), %rcx     # 0x2955b
movq %rcx, 0x10(%rax)
leaq 0x25513(%rip), %rdi     # 0x2955b
callq 0x278a0
cmpl $0x0, %eax
je 0x4081
leaq 0x2b2c7(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x579, 0xc(%rax)       # imm = 0x579
movq -0x18(%rbp), %rdi
callq 0x1d250
movq %rax, %rsi
leaq 0x264eb(%rip), %rdi     # 0x2a565
movb $0x0, %al
callq 0x28540
jmp 0x4083
jmp 0x4085
leaq 0x2b894(%rip), %rax     # 0x2f920
cmpl $0x0, (%rax)
je 0x40ea
leaq 0x2b288(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x254ba(%rip), %rcx     # 0x29560
movq %rcx, 0x10(%rax)
leaq 0x254af(%rip), %rdi     # 0x29560
callq 0x278a0
cmpl $0x0, %eax
je 0x40ea
leaq 0x2b25e(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x57a, 0xc(%rax)       # imm = 0x57A
movq -0x20(%rbp), %rdi
callq 0x1d250
movq %rax, %rsi
leaq 0x26482(%rip), %rdi     # 0x2a565
movb $0x0, %al
callq 0x28540
jmp 0x40ec
xorl %eax, %eax
cmpq $0x0, -0x20(%rbp)
movb %al, -0x81(%rbp)
je 0x4110
movq -0x20(%rbp), %rax
andq $0x3, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0x81(%rbp)
movb -0x81(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x4204
leaq 0x2b162(%rip), %rax     # 0x2f290
cmpq %rax, -0x20(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0x4204
movq -0x20(%rbp), %rax
andq $0x3, %rax
cmpq $0x1, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0x4204
movq -0x20(%rbp), %rdi
callq 0x25380
movq %rax, -0x90(%rbp)
leaq 0x253e7(%rip), %rdi     # 0x29564
callq 0x216e0
movq %rax, %rcx
movq -0x90(%rbp), %rax
cmpq %rcx, %rax
jne 0x4204
movq -0x8(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x19a9(%rip), %rsi      # 0x5b50
leaq 0x2b0e2(%rip), %rdx     # 0x2f290
callq 0x1b6f0
movq %rax, -0x98(%rbp)
leaq 0x253ab(%rip), %rdi     # 0x2956c
callq 0x216e0
movq %rax, -0xa8(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x25380
movq -0xa8(%rbp), %rdi
movq %rax, %rsi
callq 0x25290
movq -0xa0(%rbp), %rdi
movq -0x98(%rbp), %rsi
movq %rax, %rdx
callq 0x1b810
jmp 0x4387
xorl %eax, %eax
cmpq $0x0, -0x20(%rbp)
movb %al, -0xa9(%rbp)
je 0x4228
movq -0x20(%rbp), %rax
andq $0x3, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0xa9(%rbp)
movb -0xa9(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x4319
leaq 0x2b04a(%rip), %rax     # 0x2f290
cmpq %rax, -0x20(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0x4319
movq -0x20(%rbp), %rax
andq $0x3, %rax
cmpq $0x1, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0x4319
movq -0x20(%rbp), %rdi
callq 0x25380
movq %rax, -0xb8(%rbp)
leaq 0x252e1(%rip), %rdi     # 0x29576
callq 0x216e0
movq %rax, %rcx
movq -0xb8(%rbp), %rax
cmpq %rcx, %rax
jne 0x4319
movq -0x8(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x1891(%rip), %rsi      # 0x5b50
leaq 0x2afca(%rip), %rdx     # 0x2f290
callq 0x1b6f0
movq %rax, -0xc0(%rbp)
leaq 0x25293(%rip), %rdi     # 0x2956c
callq 0x216e0
movq %rax, -0xd0(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x25380
movq -0xd0(%rbp), %rdi
movq %rax, %rsi
callq 0x25290
movq -0xc8(%rbp), %rdi
movq -0xc0(%rbp), %rsi
movq %rax, %rdx
callq 0x1b810
jmp 0x4385
movq -0x20(%rbp), %rax
movq %rax, -0xd8(%rbp)
leaq 0x25253(%rip), %rdi     # 0x2957e
callq 0x216e0
movq %rax, %rcx
movq -0xd8(%rbp), %rax
cmpq %rcx, %rax
jne 0x437a
movq -0x8(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x25380
movq -0xe8(%rbp), %rdi
movq -0xe0(%rbp), %rsi
movq %rax, %rdx
callq 0x1b810
jmp 0x4383
movq -0x8(%rbp), %rdi
callq 0x5c70
jmp 0x4385
jmp 0x4387
movl $0x586, -0x3c(%rbp)     # imm = 0x586
leaq -0x48(%rbp), %rdi
callq 0x28660
addq $0xf0, %rsp
popq %rbp
retq