// File: /workspace/github_c_makefile_star2_O0/markdryan[P]subtilis/frontend/builtins_ir.c
// Function: prv_builtins_ir_dec_to_str
static void prv_builtins_ir_dec_to_str(subtilis_parser_t *p,
				       subtilis_ir_section_t *current,
				       subtilis_error_t *err)
{
	subtilis_ir_operand_t arg_int;
	subtilis_ir_operand_t arg_buf;
	subtilis_ir_operand_t arg_buf_copy;
	subtilis_ir_operand_t reverse_start;
	subtilis_ir_operand_t count;
	subtilis_ir_operand_t op0;
	subtilis_ir_operand_t op1;
	subtilis_ir_operand_t op2;
	subtilis_ir_operand_t v1;
	subtilis_ir_operand_t v2;
	subtilis_ir_operand_t less_zero;
	subtilis_ir_operand_t end_label;
	subtilis_ir_operand_t zero_label;
	subtilis_ir_operand_t not_zero_label;
	subtilis_ir_operand_t main_loop_label;
	subtilis_ir_operand_t neg_label;
	subtilis_ir_operand_t swap_label;
	subtilis_ir_operand_t reverse_label;
	subtilis_ir_operand_t minus;
	subtilis_ir_section_t *old_current;
	subtilis_exp_t *zero_asc = NULL;
	subtilis_exp_t *ten = NULL;
	subtilis_exp_t *val = NULL;

	/*
	 * This is a bit nasty.  The expression functions take a parser
	 * and not a section.  As we don't want to add to the current section
	 * here we need to temporarily replace the current section.  We should
	 * probably update the expression functions to take an explicit section.
	 */

	old_current = p->current;
	p->current = current;

	end_label.label = current->end_label;

	neg_label.label = subtilis_ir_section_new_label(current);
	not_zero_label.label = subtilis_ir_section_new_label(current);
	main_loop_label.label = subtilis_ir_section_new_label(current);
	zero_label.label = subtilis_ir_section_new_label(current);
	swap_label.label = subtilis_ir_section_new_label(current);
	reverse_label.label = subtilis_ir_section_new_label(current);

	count.reg = current->ret_reg;

	arg_int.reg = SUBTILIS_IR_REG_TEMP_START;
	arg_buf.reg = SUBTILIS_IR_REG_TEMP_START + 1;

	arg_buf_copy.reg = subtilis_ir_section_add_instr2(
	    current, SUBTILIS_OP_INSTR_MOV, arg_buf, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	op1.integer = 0;
	less_zero.reg = subtilis_ir_section_add_instr(
	    current, SUBTILIS_OP_INSTR_LTI_I32, arg_int, op1, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	subtilis_ir_section_add_instr_reg(current, SUBTILIS_OP_INSTR_JMPC,
					  less_zero, neg_label, not_zero_label,
					  err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	subtilis_ir_section_add_label(current, neg_label.label, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	op2.integer = '-';
	minus.reg = subtilis_ir_section_add_instr2(
	    current, SUBTILIS_OP_INSTR_MOVI_I32, op2, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	/*
	 * TODO: We could write a rule to combine these two instructions in
	 * these backend on ARM.
	 */

	op2.integer = 0;
	subtilis_ir_section_add_instr_reg(current, SUBTILIS_OP_INSTR_STOREO_I8,
					  minus, arg_buf, op2, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	op1.integer = 1;
	subtilis_ir_section_add_instr_reg(current, SUBTILIS_OP_INSTR_ADDI_I32,
					  arg_buf, arg_buf, op1, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	subtilis_ir_section_add_label(current, not_zero_label.label, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	reverse_start.reg = subtilis_ir_section_add_instr2(
	    current, SUBTILIS_OP_INSTR_MOV, arg_buf, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	ten = subtilis_exp_new_int32(10, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	val = subtilis_exp_new_int32_var(SUBTILIS_IR_REG_TEMP_START, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	subtilis_ir_section_add_label(current, main_loop_label.label, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	val = subtilis_type_if_mod(p, val, ten, err);
	ten = NULL;
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	val = subtilis_type_if_abs(p, val, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	zero_asc = subtilis_exp_new_int32('0', err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	val = subtilis_type_if_add(p, val, zero_asc, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	op2.integer = 0;
	subtilis_ir_section_add_instr_reg(current, SUBTILIS_OP_INSTR_STOREO_I8,
					  val->exp.ir_op, arg_buf, op2, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	subtilis_exp_delete(val);
	val = NULL;

	op1.integer = 1;
	subtilis_ir_section_add_instr_reg(current, SUBTILIS_OP_INSTR_ADDI_I32,
					  arg_buf, arg_buf, op1, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	ten = subtilis_exp_new_int32(10, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	val = subtilis_exp_new_int32_var(SUBTILIS_IR_REG_TEMP_START, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	val = subtilis_type_if_div(p, val, ten, err);
	ten = NULL;
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	op0.reg = SUBTILIS_IR_REG_TEMP_START;
	subtilis_ir_section_add_instr_no_reg2(current, SUBTILIS_OP_INSTR_MOV,
					      op0, val->exp.ir_op, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	subtilis_ir_section_add_instr_reg(current, SUBTILIS_OP_INSTR_JMPC, op0,
					  main_loop_label, zero_label, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	subtilis_ir_section_add_label(current, zero_label.label, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	subtilis_ir_section_add_instr_reg(current, SUBTILIS_OP_INSTR_SUB_I32,
					  count, arg_buf, arg_buf_copy, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	/*
	 * Now we need to reverse the digits.
	 */

	op1.integer = 1;
	subtilis_ir_section_add_instr_reg(current, SUBTILIS_OP_INSTR_SUBI_I32,
					  arg_buf, arg_buf, op1, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	subtilis_ir_section_add_label(current, reverse_label.label, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	less_zero.reg = subtilis_ir_section_add_instr(
	    current, SUBTILIS_OP_INSTR_LT_I32, reverse_start, arg_buf, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	subtilis_ir_section_add_instr_reg(current, SUBTILIS_OP_INSTR_JMPC,
					  less_zero, swap_label, end_label,
					  err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	subtilis_ir_section_add_label(current, swap_label.label, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	op2.integer = 0;
	v1.reg = subtilis_ir_section_add_instr(
	    current, SUBTILIS_OP_INSTR_LOADO_I8, reverse_start, op2, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	v2.reg = subtilis_ir_section_add_instr(
	    current, SUBTILIS_OP_INSTR_LOADO_I8, arg_buf, op2, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	subtilis_ir_section_add_instr_reg(current, SUBTILIS_OP_INSTR_STOREO_I8,
					  v1, arg_buf, op2, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	op1.integer = 1;
	subtilis_ir_section_add_instr_reg(current, SUBTILIS_OP_INSTR_SUBI_I32,
					  arg_buf, arg_buf, op1, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	subtilis_ir_section_add_instr_reg(current, SUBTILIS_OP_INSTR_STOREO_I8,
					  v2, reverse_start, op2, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	subtilis_ir_section_add_instr_reg(current, SUBTILIS_OP_INSTR_ADDI_I32,
					  reverse_start, reverse_start, op1,
					  err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	subtilis_ir_section_add_instr_no_reg(current, SUBTILIS_OP_INSTR_JMP,
					     reverse_label, err);
	if (err->type != SUBTILIS_ERROR_OK)
		return;

	subtilis_ir_section_add_label(current, end_label.label, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	subtilis_ir_section_add_instr_no_reg(current, SUBTILIS_OP_INSTR_RET_I32,
					     count, err);

cleanup:

	p->current = old_current;

	subtilis_exp_delete(ten);
	subtilis_exp_delete(val);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq $0x0, -0xc0(%rbp)
movq $0x0, -0xc8(%rbp)
movq $0x0, -0xd0(%rbp)
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0xb8(%rbp)
movq -0x10(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x48(%rax)
movq -0x10(%rbp), %rax
movq 0x98(%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x10(%rbp), %rdi
callq 0x39940
movq %rax, -0x98(%rbp)
movq -0x10(%rbp), %rdi
callq 0x39940
movq %rax, -0x88(%rbp)
movq -0x10(%rbp), %rdi
callq 0x39940
movq %rax, -0x90(%rbp)
movq -0x10(%rbp), %rdi
callq 0x39940
movq %rax, -0x80(%rbp)
movq -0x10(%rbp), %rdi
callq 0x39940
movq %rax, -0xa0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x39940
movq %rax, -0xa8(%rbp)
movq -0x10(%rbp), %rax
movq 0xa8(%rax), %rax
movq %rax, -0x40(%rbp)
movq $0x4, -0x20(%rbp)
movq $0x5, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rcx
movq -0x28(%rbp), %rdx
movl $0x1d, %esi
callq 0x38490
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x43156
jmp 0x437d5
movl $0x0, -0x50(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %r8
movq -0x20(%rbp), %rdx
movq -0x50(%rbp), %rcx
movl $0x3d, %esi
callq 0x38230
movq %rax, -0x70(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x43189
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %r9
movq -0x70(%rbp), %rdx
movq -0x98(%rbp), %rcx
movq -0x88(%rbp), %r8
movl $0x43, %esi
callq 0x38360
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x431bb
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0x98(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x39960
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x431dd
jmp 0x437d5
movl $0x2d, -0x58(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rcx
movq -0x58(%rbp), %rdx
movl $0x1b, %esi
callq 0x38490
movq %rax, -0xb0(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x4320f
jmp 0x437d5
movl $0x0, -0x58(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %r9
movq -0xb0(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x58(%rbp), %r8
movl $0x16, %esi
callq 0x38360
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x43245
jmp 0x437d5
movl $0x1, -0x50(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %r9
movq -0x28(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x50(%rbp), %r8
movl $0x9, %esi
callq 0x38360
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x43278
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x39960
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x4329a
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rcx
movq -0x28(%rbp), %rdx
movl $0x1d, %esi
callq 0x38490
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x432c2
jmp 0x437d5
movq -0x18(%rbp), %rsi
movl $0xa, %edi
callq 0x37800
movq %rax, -0xc8(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x432e5
jmp 0x437d5
movq -0x18(%rbp), %rsi
movl $0x4, %edi
callq 0x37770
movq %rax, -0xd0(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x43308
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0x90(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x39960
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x4332a
jmp 0x437d5
movq -0x8(%rbp), %rdi
movq -0xd0(%rbp), %rsi
movq -0xc8(%rbp), %rdx
movq -0x18(%rbp), %rcx
callq 0x493f0
movq %rax, -0xd0(%rbp)
movq $0x0, -0xc8(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x43365
jmp 0x437d5
movq -0x8(%rbp), %rdi
movq -0xd0(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x49bb0
movq %rax, -0xd0(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x4338e
jmp 0x437d5
movq -0x18(%rbp), %rsi
movl $0x30, %edi
callq 0x37800
movq %rax, -0xc0(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x433b1
jmp 0x437d5
movq -0x8(%rbp), %rdi
movq -0xd0(%rbp), %rsi
movq -0xc0(%rbp), %rdx
movq -0x18(%rbp), %rcx
callq 0x48e20
movq %rax, -0xd0(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x433e1
jmp 0x437d5
movl $0x0, -0x58(%rbp)
movq -0x10(%rbp), %rdi
movq -0xd0(%rbp), %rax
movq -0x18(%rbp), %r9
movq 0x148(%rax), %rdx
movq -0x28(%rbp), %rcx
movq -0x58(%rbp), %r8
movl $0x16, %esi
callq 0x38360
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x4341e
jmp 0x437d5
movq -0xd0(%rbp), %rdi
callq 0x36ee0
movq $0x0, -0xd0(%rbp)
movl $0x1, -0x50(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %r9
movq -0x28(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x50(%rbp), %r8
movl $0x9, %esi
callq 0x38360
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x43468
jmp 0x437d5
movq -0x18(%rbp), %rsi
movl $0xa, %edi
callq 0x37800
movq %rax, -0xc8(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x4348b
jmp 0x437d5
movq -0x18(%rbp), %rsi
movl $0x4, %edi
callq 0x37770
movq %rax, -0xd0(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x434ae
jmp 0x437d5
movq -0x8(%rbp), %rdi
movq -0xd0(%rbp), %rsi
movq -0xc8(%rbp), %rdx
movq -0x18(%rbp), %rcx
callq 0x49330
movq %rax, -0xd0(%rbp)
movq $0x0, -0xc8(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x434e9
jmp 0x437d5
movq $0x4, -0x48(%rbp)
movq -0x10(%rbp), %rdi
movq -0xd0(%rbp), %rax
movq -0x18(%rbp), %r8
movq -0x48(%rbp), %rdx
movq 0x148(%rax), %rcx
movl $0x1d, %esi
callq 0x385a0
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x43523
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %r9
movq -0x48(%rbp), %rdx
movq -0x90(%rbp), %rcx
movq -0x80(%rbp), %r8
movl $0x43, %esi
callq 0x38360
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x43552
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0x80(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x39960
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x43571
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %r9
movq -0x40(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movl $0x2, %esi
callq 0x38360
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x4359d
jmp 0x437d5
movl $0x1, -0x50(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %r9
movq -0x28(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x50(%rbp), %r8
movl $0xb, %esi
callq 0x38360
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x435d0
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0xa8(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x39960
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x435f2
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %r8
movq -0x38(%rbp), %rdx
movq -0x28(%rbp), %rcx
movl $0x3b, %esi
callq 0x38230
movq %rax, -0x70(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x4361e
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %r9
movq -0x70(%rbp), %rdx
movq -0xa0(%rbp), %rcx
movq -0x78(%rbp), %r8
movl $0x43, %esi
callq 0x38360
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x4364d
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0xa0(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x39960
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x4366f
jmp 0x437d5
movl $0x0, -0x58(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %r8
movq -0x38(%rbp), %rdx
movq -0x58(%rbp), %rcx
movl $0x11, %esi
callq 0x38230
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x436a2
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %r8
movq -0x28(%rbp), %rdx
movq -0x58(%rbp), %rcx
movl $0x11, %esi
callq 0x38230
movq %rax, -0x68(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x436ce
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %r9
movq -0x60(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x58(%rbp), %r8
movl $0x16, %esi
callq 0x38360
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x436fa
jmp 0x437d5
movl $0x1, -0x50(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %r9
movq -0x28(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x50(%rbp), %r8
movl $0xb, %esi
callq 0x38360
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x4372d
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %r9
movq -0x68(%rbp), %rdx
movq -0x38(%rbp), %rcx
movq -0x58(%rbp), %r8
movl $0x16, %esi
callq 0x38360
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x43756
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %r9
movq -0x38(%rbp), %rdx
movq -0x38(%rbp), %rcx
movq -0x50(%rbp), %r8
movl $0x9, %esi
callq 0x38360
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x4377f
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rcx
movq -0xa8(%rbp), %rdx
movl $0x45, %esi
callq 0x38540
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x437a3
jmp 0x437fc
movq -0x10(%rbp), %rdi
movq -0x78(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x39960
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x437bf
jmp 0x437d5
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rcx
movq -0x40(%rbp), %rdx
movl $0x47, %esi
callq 0x38540
movq -0xb8(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x48(%rax)
movq -0xc8(%rbp), %rdi
callq 0x36ee0
movq -0xd0(%rbp), %rdi
callq 0x36ee0
addq $0xd0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)