// File: /workspace/github_c_makefile_star2_O3/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 0x11685
movq %rax, %r14
leaq 0xd076(%rip), %rdi      # 0x14244
callq 0xea73
movq %r14, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x11aba
movq %rax, %r13
leaq 0xd319(%rip), %rdi      # 0x14503
callq 0xea73
movq %r14, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x11aba
movq %rax, %rbp
movq 0x13f42(%rip), %rsi     # 0x1b148
movq %r14, %rdi
xorl %edx, %edx
callq 0x11aba
movq %rax, 0x8(%rsp)
movq 0x30(%rbx), %rdi
callq 0x115e6
movq %rax, %rdi
callq 0x96d9
movq %rax, %r15
leaq 0xd108(%rip), %rdi      # 0x14338
callq 0xea73
movq %r15, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x11aba
movq %rax, %r14
leaq 0xdbb7(%rip), %rdi      # 0x14e03
callq 0xea73
movq %r15, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x11aba
movq %rax, %r12
movq 0x13ed8(%rip), %rsi     # 0x1b140
movq %r15, %rdi
xorl %edx, %edx
callq 0x11aba
movq %rax, %r15
leaq 0xd289(%rip), %rax      # 0x14505
leaq 0x10(%rsp), %rdi
movq %rax, (%rdi)
leaq 0x140fd(%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 0xf85e(%rip), %rcx      # 0x16b04
movq %rcx, 0x10(%rdi)
leaq 0x13e7f(%rip), %rcx     # 0x1b130
movq %rcx, 0x18(%rdi)
movq %rax, 0x20(%rdi)
callq 0x1339a
movl %ebp, %eax
notl %eax
testb $0x3, %al
jne 0x7535
movl %r12d, %eax
notl %eax
testb $0x3, %al
jne 0x7554
testq %r14, %r14
je 0x7573
movl %r14d, %eax
andl $0x3, %eax
jne 0x7573
movl %r15d, %eax
andl $0x3, %eax
cmpl $0x1, %eax
jne 0x7592
leaq 0xdb01(%rip), %rdi      # 0x14e03
callq 0xea73
cmpq %rax, %r13
je 0x73b1
leaq 0xd1ec(%rip), %rdi      # 0x14503
callq 0xea73
cmpq %rax, %r13
jne 0x73c7
leaq 0x14604(%rip), %rax     # 0x1b930
cmpl $0x0, (%rax)
movq 0x8(%rsp), %r13
je 0x7386
leaq 0x1404b(%rip), %rax     # 0x1b388
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0xf7b9(%rip), %rdi      # 0x16b04
movq %rdi, 0x10(%rax)
callq 0x12afc
testl %eax, %eax
je 0x7386
leaq 0x14029(%rip), %rax     # 0x1b388
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x531, 0xc(%rax)       # imm = 0x531
movq %r13, %rdi
callq 0xb5b4
leaq 0xce48(%rip), %rdi      # 0x141c4
movq %rax, %rsi
xorl %eax, %eax
callq 0x1340b
movq %r14, %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0x11b2c
movq %rax, %r14
shlq $0x1e, %r12
movabsq $-0x100000000, %rax     # imm = 0xFFFFFFFF00000000
addq %r12, %rax
sarq $0x1e, %rax
movq %rax, %r12
jmp 0x73c7
shrq $0x2, %r12
shrq $0x2, %rbp
addl %ebp, %r12d
movslq %r12d, %rax
leaq 0x3(,%rax,4), %r12
leaq 0x14562(%rip), %r13     # 0x1b930
cmpl $0x0, (%r13)
leaq 0x13fae(%rip), %rbp     # 0x1b388
je 0x741c
movq (%rbp), %rax
movq 0x50(%rax), %rax
leaq 0xf719(%rip), %rdi      # 0x16b04
movq %rdi, 0x10(%rax)
callq 0x12afc
testl %eax, %eax
je 0x741c
movq (%rbp), %rax
movq 0x50(%rax), %rax
movl $0x535, 0xc(%rax)       # imm = 0x535
movq %r12, %rsi
shrq $0x2, %rsi
leaq 0xd145(%rip), %rdi      # 0x1455a
xorl %eax, %eax
callq 0x1340b
cmpq $0x3, %r12
je 0x74a6
movq 0x13d13(%rip), %rsi     # 0x1b140
leaq 0x13ec4(%rip), %rdi     # 0x1b2f8
movq %r15, %rdx
callq 0x11b2c
movq %rax, %r15
leaq 0xd9bd(%rip), %rdi      # 0x14e03
callq 0xea73
movq %r15, %rdi
movq %rax, %rsi
movq %r12, %rdx
callq 0x11b2c
movq %rax, %r15
leaq 0xced5(%rip), %rdi      # 0x14338
callq 0xea73
movq %r15, %rdi
movq %rax, %rsi
movq %r14, %rdx
callq 0x11b2c
movq %rax, %r14
movq 0x30(%rbx), %rdi
callq 0x115e6
movq %rax, %r15
movq 0x30(%rbx), %rdi
callq 0x115e6
movq %rax, %rdi
callq 0x96a0
movq %r15, %rdi
movq %rax, %rsi
movq %r14, %rdx
callq 0x9932
jmp 0x7515
cmpl $0x0, (%r13)
je 0x74f1
movq (%rbp), %rax
movq 0x50(%rax), %rax
leaq 0xf648(%rip), %rdi      # 0x16b04
movq %rdi, 0x10(%rax)
callq 0x12afc
testl %eax, %eax
je 0x74f1
movq (%rbp), %rax
movq 0x50(%rax), %rax
movl $0x537, 0xc(%rax)       # imm = 0x537
movq %r14, %rdi
callq 0xb5b4
leaq 0xd0ae(%rip), %rdi      # 0x14595
movq %rax, %rsi
xorl %eax, %eax
callq 0x1340b
movq 0x13c50(%rip), %rsi     # 0x1b148
leaq 0x13df9(%rip), %rdi     # 0x1b2f8
movq %r14, %rdx
callq 0x11b2c
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0xa30f
leaq 0x10(%rsp), %rdi
movl $0x540, 0xc(%rdi)       # imm = 0x540
callq 0x1351f
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xcfd5(%rip), %rdi      # 0x14511
leaq 0xcaea(%rip), %rsi      # 0x1402d
leaq 0xcfd2(%rip), %rcx      # 0x1451c
movl $0x52a, %edx            # imm = 0x52A
callq 0x2100
leaq 0xcfdc(%rip), %rdi      # 0x14537
leaq 0xcacb(%rip), %rsi      # 0x1402d
leaq 0xcfb3(%rip), %rcx      # 0x1451c
movl $0x52b, %edx            # imm = 0x52B
callq 0x2100
leaq 0xcfc8(%rip), %rdi      # 0x14542
leaq 0xcaac(%rip), %rsi      # 0x1402d
leaq 0xcf94(%rip), %rcx      # 0x1451c
movl $0x52c, %edx            # imm = 0x52C
callq 0x2100
leaq 0xcfb4(%rip), %rdi      # 0x1454d
leaq 0xca8d(%rip), %rsi      # 0x1402d
leaq 0xcf75(%rip), %rcx      # 0x1451c
movl $0x52d, %edx            # imm = 0x52D
callq 0x2100