// File: /workspace/github_c_makefile_star2_O2/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 0x10e46
movq %rax, %r14
leaq 0xc43f(%rip), %rdi      # 0x13244
callq 0xe45f
movq %r14, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x112c7
movq %rax, %r13
leaq 0xc6e2(%rip), %rdi      # 0x13503
callq 0xe45f
movq %r14, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x112c7
movq %rax, %rbp
movq 0x1331b(%rip), %rsi     # 0x1a158
movq %r14, %rdi
xorl %edx, %edx
callq 0x112c7
movq %rax, 0x8(%rsp)
movq 0x30(%rbx), %rdi
callq 0x10d3b
movq %rax, %rdi
callq 0x929b
movq %rax, %r15
leaq 0xc4d1(%rip), %rdi      # 0x13338
callq 0xe45f
movq %r15, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x112c7
movq %rax, %r14
leaq 0xcf80(%rip), %rdi      # 0x13e03
callq 0xe45f
movq %r15, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x112c7
movq %rax, %r12
movq 0x132b1(%rip), %rsi     # 0x1a150
movq %r15, %rdi
xorl %edx, %edx
callq 0x112c7
movq %rax, %r15
leaq 0xc652(%rip), %rax      # 0x13505
leaq 0x10(%rsp), %rdi
movq %rax, (%rdi)
leaq 0x134d6(%rip), %rax     # 0x1a398
movq (%rax), %rax
movq 0x50(%rax), %rax
movl 0x8(%rax), %ecx
movl %ecx, 0x8(%rdi)
movl $0x529, 0xc(%rdi)       # imm = 0x529
leaq 0xec07(%rip), %rcx      # 0x15ae4
movq %rcx, 0x10(%rdi)
leaq 0x13258(%rip), %rcx     # 0x1a140
movq %rcx, 0x18(%rdi)
movq %rax, 0x20(%rdi)
callq 0x12bb9
movl %ebp, %eax
notl %eax
testb $0x3, %al
jne 0x716c
movl %r12d, %eax
notl %eax
testb $0x3, %al
jne 0x718b
testq %r14, %r14
je 0x71aa
movl %r14d, %eax
andl $0x3, %eax
jne 0x71aa
movl %r15d, %eax
andl $0x3, %eax
cmpl $0x1, %eax
jne 0x71c9
leaq 0xceca(%rip), %rdi      # 0x13e03
callq 0xe45f
cmpq %rax, %r13
je 0x6fe8
leaq 0xc5b5(%rip), %rdi      # 0x13503
callq 0xe45f
cmpq %rax, %r13
jne 0x6ffe
leaq 0x139dd(%rip), %rax     # 0x1a940
cmpl $0x0, (%rax)
movq 0x8(%rsp), %r13
je 0x6fbd
leaq 0x13424(%rip), %rax     # 0x1a398
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0xeb62(%rip), %rdi      # 0x15ae4
movq %rdi, 0x10(%rax)
callq 0x12334
testl %eax, %eax
je 0x6fbd
leaq 0x13402(%rip), %rax     # 0x1a398
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x531, 0xc(%rax)       # imm = 0x531
movq %r13, %rdi
callq 0xb248
leaq 0xc211(%rip), %rdi      # 0x131c4
movq %rax, %rsi
xorl %eax, %eax
callq 0x12c30
movq %r14, %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0x11339
movq %rax, %r14
shlq $0x1e, %r12
movabsq $-0x100000000, %rax     # imm = 0xFFFFFFFF00000000
addq %r12, %rax
sarq $0x1e, %rax
movq %rax, %r12
jmp 0x6ffe
shrq $0x2, %r12
shrq $0x2, %rbp
addl %ebp, %r12d
movslq %r12d, %rax
leaq 0x3(,%rax,4), %r12
leaq 0x1393b(%rip), %r13     # 0x1a940
cmpl $0x0, (%r13)
leaq 0x13387(%rip), %rbp     # 0x1a398
je 0x7053
movq (%rbp), %rax
movq 0x50(%rax), %rax
leaq 0xeac2(%rip), %rdi      # 0x15ae4
movq %rdi, 0x10(%rax)
callq 0x12334
testl %eax, %eax
je 0x7053
movq (%rbp), %rax
movq 0x50(%rax), %rax
movl $0x535, 0xc(%rax)       # imm = 0x535
movq %r12, %rsi
shrq $0x2, %rsi
leaq 0xc50e(%rip), %rdi      # 0x1355a
xorl %eax, %eax
callq 0x12c30
cmpq $0x3, %r12
je 0x70dd
movq 0x130ec(%rip), %rsi     # 0x1a150
leaq 0x1329d(%rip), %rdi     # 0x1a308
movq %r15, %rdx
callq 0x11339
movq %rax, %r15
leaq 0xcd86(%rip), %rdi      # 0x13e03
callq 0xe45f
movq %r15, %rdi
movq %rax, %rsi
movq %r12, %rdx
callq 0x11339
movq %rax, %r15
leaq 0xc29e(%rip), %rdi      # 0x13338
callq 0xe45f
movq %r15, %rdi
movq %rax, %rsi
movq %r14, %rdx
callq 0x11339
movq %rax, %r14
movq 0x30(%rbx), %rdi
callq 0x10d3b
movq %rax, %r15
movq 0x30(%rbx), %rdi
callq 0x10d3b
movq %rax, %rdi
callq 0x9264
movq %r15, %rdi
movq %rax, %rsi
movq %r14, %rdx
callq 0x9656
jmp 0x714c
cmpl $0x0, (%r13)
je 0x7128
movq (%rbp), %rax
movq 0x50(%rax), %rax
leaq 0xe9f1(%rip), %rdi      # 0x15ae4
movq %rdi, 0x10(%rax)
callq 0x12334
testl %eax, %eax
je 0x7128
movq (%rbp), %rax
movq 0x50(%rax), %rax
movl $0x537, 0xc(%rax)       # imm = 0x537
movq %r14, %rdi
callq 0xb248
leaq 0xc477(%rip), %rdi      # 0x13595
movq %rax, %rsi
xorl %eax, %eax
callq 0x12c30
movq 0x13029(%rip), %rsi     # 0x1a158
leaq 0x131d2(%rip), %rdi     # 0x1a308
movq %r14, %rdx
callq 0x11339
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x9fd4
leaq 0x10(%rsp), %rdi
movl $0x540, 0xc(%rdi)       # imm = 0x540
callq 0x12d32
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xc39e(%rip), %rdi      # 0x13511
leaq 0xbeb3(%rip), %rsi      # 0x1302d
leaq 0xc39b(%rip), %rcx      # 0x1351c
movl $0x52a, %edx            # imm = 0x52A
callq 0x2100
leaq 0xc3a5(%rip), %rdi      # 0x13537
leaq 0xbe94(%rip), %rsi      # 0x1302d
leaq 0xc37c(%rip), %rcx      # 0x1351c
movl $0x52b, %edx            # imm = 0x52B
callq 0x2100
leaq 0xc391(%rip), %rdi      # 0x13542
leaq 0xbe75(%rip), %rsi      # 0x1302d
leaq 0xc35d(%rip), %rcx      # 0x1351c
movl $0x52c, %edx            # imm = 0x52C
callq 0x2100
leaq 0xc37d(%rip), %rdi      # 0x1354d
leaq 0xbe56(%rip), %rsi      # 0x1302d
leaq 0xc33e(%rip), %rcx      # 0x1351c
movl $0x52d, %edx            # imm = 0x52D
callq 0x2100