// File: /workspace/github_c_makefile_star2_O1/dalnefre[P]kernel_abe/reduce.c
// Function: collect_par
BEH_DECL(collect_par)
{
	CONS* msg = WHAT;
	CONS* op = map_get(msg, ATOM("op"));
	CONS* i = map_get(msg, ATOM("i"));
	CONS* expr = map_get(msg, expr_symbol);
	CONS* state = MINE;
	CONS* acc = map_get(state, ATOM("acc"));
	CONS* n = map_get(state, ATOM("n"));
	CONS* cont = map_get(state, cont_symbol);

	DBUG_ENTER("collect_par");
	assert(numberp(i));
	assert(numberp(n));
	assert(consp(acc));
	assert(actorp(cont));
	if (op == ATOM("n")) {
		n = NUMBER(MK_INT(n) + MK_INT(i));
	} else if (op == ATOM("i")) {
		DBUG_PRINT("", ("value=%s", cons_to_str(expr)));
		acc = map_put(acc, i, expr);
		n = NUMBER(MK_INT(n) - 1);
	}
	DBUG_PRINT("", ("n=%d", MK_INT(n)));
	if (n == NUMBER(0)) {
		DBUG_PRINT("", ("expr=%s", cons_to_str(acc)));
		SEND(cont, map_put(NIL, expr_symbol, acc));
	} else {
		state = NIL;
		state = map_put(state, cont_symbol, cont);
		state = map_put(state, ATOM("n"), n);
		state = map_put(state, ATOM("acc"), acc);
		BECOME(THIS, state);
	}
	DBUG_RETURN;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdi, %rbx
movq 0x30(%rdi), %rdi
callq 0x11655
movq %rax, %r14
leaq 0xd02e(%rip), %rdi      # 0x14244
callq 0xea8c
movq %r14, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x11a8a
movq %rax, %r13
leaq 0xd2d1(%rip), %rdi      # 0x14503
callq 0xea8c
movq %r14, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x11a8a
movq %rax, %rbp
movq 0x13efa(%rip), %rsi     # 0x1b148
movq %r14, %rdi
xorl %edx, %edx
callq 0x11a8a
movq %rax, 0x8(%rsp)
movq 0x30(%rbx), %rdi
callq 0x115b6
movq %rax, %rdi
callq 0x9721
movq %rax, %r15
leaq 0xd0c0(%rip), %rdi      # 0x14338
callq 0xea8c
movq %r15, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x11a8a
movq %rax, %r14
leaq 0xdb6f(%rip), %rdi      # 0x14e03
callq 0xea8c
movq %r15, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x11a8a
movq %rax, %r12
movq 0x13e90(%rip), %rsi     # 0x1b140
movq %r15, %rdi
xorl %edx, %edx
callq 0x11a8a
movq %rax, %r15
leaq 0xd241(%rip), %rax      # 0x14505
leaq 0x10(%rsp), %rdi
movq %rax, (%rdi)
leaq 0x140b5(%rip), %rax     # 0x1b388
movq (%rax), %rax
movq 0x50(%rax), %rax
movl 0x8(%rax), %ecx
movl %ecx, 0x8(%rdi)
movl $0x529, 0xc(%rdi)       # imm = 0x529
leaq 0xf816(%rip), %rcx      # 0x16b04
movq %rcx, 0x10(%rdi)
leaq 0x13e37(%rip), %rcx     # 0x1b130
movq %rcx, 0x18(%rdi)
movq %rax, 0x20(%rdi)
callq 0x13322
movl %ebp, %eax
notl %eax
testb $0x3, %al
jne 0x757d
movl %r12d, %eax
notl %eax
testb $0x3, %al
jne 0x759c
testq %r14, %r14
je 0x75bb
movl %r14d, %eax
andl $0x3, %eax
jne 0x75bb
movl %r15d, %eax
andl $0x3, %eax
cmpl $0x1, %eax
jne 0x75da
leaq 0xdab9(%rip), %rdi      # 0x14e03
callq 0xea8c
cmpq %rax, %r13
je 0x73f9
leaq 0xd1a4(%rip), %rdi      # 0x14503
callq 0xea8c
cmpq %rax, %r13
jne 0x740f
leaq 0x145bc(%rip), %rax     # 0x1b930
cmpl $0x0, (%rax)
movq 0x8(%rsp), %r13
je 0x73ce
leaq 0x14003(%rip), %rax     # 0x1b388
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0xf771(%rip), %rdi      # 0x16b04
movq %rdi, 0x10(%rax)
callq 0x12a94
testl %eax, %eax
je 0x73ce
leaq 0x13fe1(%rip), %rax     # 0x1b388
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x531, 0xc(%rax)       # imm = 0x531
movq %r13, %rdi
callq 0xb5ac
leaq 0xce00(%rip), %rdi      # 0x141c4
movq %rax, %rsi
xorl %eax, %eax
callq 0x13393
movq %r14, %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0x11afc
movq %rax, %r14
shlq $0x1e, %r12
movabsq $-0x100000000, %rax     # imm = 0xFFFFFFFF00000000
addq %r12, %rax
sarq $0x1e, %rax
movq %rax, %r12
jmp 0x740f
shrq $0x2, %r12
shrq $0x2, %rbp
addl %ebp, %r12d
movslq %r12d, %rax
leaq 0x3(,%rax,4), %r12
leaq 0x1451a(%rip), %r13     # 0x1b930
cmpl $0x0, (%r13)
leaq 0x13f66(%rip), %rbp     # 0x1b388
je 0x7464
movq (%rbp), %rax
movq 0x50(%rax), %rax
leaq 0xf6d1(%rip), %rdi      # 0x16b04
movq %rdi, 0x10(%rax)
callq 0x12a94
testl %eax, %eax
je 0x7464
movq (%rbp), %rax
movq 0x50(%rax), %rax
movl $0x535, 0xc(%rax)       # imm = 0x535
movq %r12, %rsi
shrq $0x2, %rsi
leaq 0xd0fd(%rip), %rdi      # 0x1455a
xorl %eax, %eax
callq 0x13393
cmpq $0x3, %r12
je 0x74ee
movq 0x13ccb(%rip), %rsi     # 0x1b140
leaq 0x13e7c(%rip), %rdi     # 0x1b2f8
movq %r15, %rdx
callq 0x11afc
movq %rax, %r15
leaq 0xd975(%rip), %rdi      # 0x14e03
callq 0xea8c
movq %r15, %rdi
movq %rax, %rsi
movq %r12, %rdx
callq 0x11afc
movq %rax, %r15
leaq 0xce8d(%rip), %rdi      # 0x14338
callq 0xea8c
movq %r15, %rdi
movq %rax, %rsi
movq %r14, %rdx
callq 0x11afc
movq %rax, %r14
movq 0x30(%rbx), %rdi
callq 0x115b6
movq %rax, %r15
movq 0x30(%rbx), %rdi
callq 0x115b6
movq %rax, %rdi
callq 0x96e8
movq %r15, %rdi
movq %rax, %rsi
movq %r14, %rdx
callq 0x9930
jmp 0x755d
cmpl $0x0, (%r13)
je 0x7539
movq (%rbp), %rax
movq 0x50(%rax), %rax
leaq 0xf600(%rip), %rdi      # 0x16b04
movq %rdi, 0x10(%rax)
callq 0x12a94
testl %eax, %eax
je 0x7539
movq (%rbp), %rax
movq 0x50(%rax), %rax
movl $0x537, 0xc(%rax)       # imm = 0x537
movq %r14, %rdi
callq 0xb5ac
leaq 0xd066(%rip), %rdi      # 0x14595
movq %rax, %rsi
xorl %eax, %eax
callq 0x13393
movq 0x13c08(%rip), %rsi     # 0x1b148
leaq 0x13db1(%rip), %rdi     # 0x1b2f8
movq %r14, %rdx
callq 0x11afc
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0xa327
leaq 0x10(%rsp), %rdi
movl $0x540, 0xc(%rdi)       # imm = 0x540
callq 0x134a7
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xcf8d(%rip), %rdi      # 0x14511
leaq 0xcaa2(%rip), %rsi      # 0x1402d
leaq 0xcf8a(%rip), %rcx      # 0x1451c
movl $0x52a, %edx            # imm = 0x52A
callq 0x2100
leaq 0xcf94(%rip), %rdi      # 0x14537
leaq 0xca83(%rip), %rsi      # 0x1402d
leaq 0xcf6b(%rip), %rcx      # 0x1451c
movl $0x52b, %edx            # imm = 0x52B
callq 0x2100
leaq 0xcf80(%rip), %rdi      # 0x14542
leaq 0xca64(%rip), %rsi      # 0x1402d
leaq 0xcf4c(%rip), %rcx      # 0x1451c
movl $0x52c, %edx            # imm = 0x52C
callq 0x2100
leaq 0xcf6c(%rip), %rdi      # 0x1454d
leaq 0xca45(%rip), %rsi      # 0x1402d
leaq 0xcf2d(%rip), %rcx      # 0x1451c
movl $0x52d, %edx            # imm = 0x52D
callq 0x2100