// File: /workspace/github_c_makefile_star2_O2/markdryan[P]subtilis/backends/riscos_common/riscos_arm.c
// Function: subtilis_riscos_generate
subtilis_arm_prog_t *
subtilis_riscos_generate(
	subtilis_arm_op_pool_t *op_pool, subtilis_ir_prog_t *p,
	const subtilis_ir_rule_raw_t *rules_raw,
	size_t rule_count, size_t globals,
	const subtilis_arm_fp_if_t *fp_if,
	int32_t start_address, subtilis_error_t *err)
/* clang-format on */
{
	subtilis_ir_rule_t *parsed;
	subtilis_arm_prog_t *arm_p = NULL;
	subtilis_arm_section_t *arm_s;
	subtilis_ir_section_t *s;
	size_t i;

	parsed = malloc(sizeof(*parsed) * rule_count);
	if (!parsed) {
		subtilis_error_set_oom(err);
		return NULL;
	}

	subtilis_ir_parse_rules(rules_raw, parsed, rule_count, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	arm_p = subtilis_arm_prog_new(p->num_sections + 2, op_pool,
				      p->string_pool, p->constant_pool,
				      p->settings, fp_if, start_address, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	s = p->sections[0];
	arm_s = subtilis_arm_prog_section_new(arm_p, s->type, s->reg_counter,
					      s->freg_counter, s->label_counter,
					      s->locals, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;
	prv_add_preamble(arm_s, globals, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;
	prv_add_section(s, arm_s, parsed, rule_count, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	for (i = 1; i < p->num_sections; i++) {
		s = p->sections[i];
		if (s->section_type == SUBTILIS_IR_SECTION_ASM) {
			arm_s = (subtilis_arm_section_t *)s->asm_code;

			/*
			 * Ownership of inline assembly transfers to the ARM
			 * section.
			 */

			s->asm_code = NULL;
			subtilis_arm_prog_append_section(arm_p, arm_s, err);
			if (err->type != SUBTILIS_ERROR_OK)
				goto cleanup;
			continue;
		}
		arm_s = subtilis_arm_prog_section_new(
		    arm_p, s->type, s->reg_counter, s->freg_counter,
		    s->label_counter, s->locals, err);
		if (err->type != SUBTILIS_ERROR_OK)
			goto cleanup;
		if (s->section_type == SUBTILIS_IR_SECTION_BACKEND_BUILTIN)
			prv_add_builtin(s, arm_s, err);
		else
			prv_add_section(s, arm_s, parsed, rule_count, err);
		if (err->type != SUBTILIS_ERROR_OK)
			goto cleanup;
	}

	free(parsed);
	parsed = NULL;

	//		printf("\n\n");
	//		subtilis_arm_prog_dump(arm_p);

	return arm_p;

cleanup:

	printf("\n\n");
	if (arm_p)
		subtilis_arm_prog_dump(arm_p);

	subtilis_arm_prog_delete(arm_p);
	free(parsed);

	return NULL;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %r9, %r14
movq %r8, %rbp
movq %rcx, %r12
movq %rdx, %r13
movq %rsi, 0x28(%rsp)
movq %rdi, %r15
movq 0x78(%rsp), %rbx
imulq $0x150, %rcx, %rdi      # imm = 0x150
callq 0x121d0
testq %rax, %rax
je 0x68973
movq %r13, %rdi
movq %rax, 0x10(%rsp)
movq %rax, %rsi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x2bb98
cmpl $0x0, (%rbx)
je 0x6898f
xorl %r14d, %r14d
jmp 0x68a01
leaq 0xa86a(%rip), %rdx      # 0x731e4
pushq $0x1
popq %rsi
movq %rbx, %rdi
movl $0x224, %ecx            # imm = 0x224
callq 0x1429e
jmp 0x68a2c
movq %rbx, %r13
movq %r12, 0x20(%rsp)
movl 0x70(%rsp), %eax
movq 0x28(%rsp), %rbx
movq 0x8(%rbx), %rdi
movq 0x18(%rbx), %rdx
addq $0x2, %rdi
movq 0x28(%rbx), %rcx
movq 0x20(%rbx), %r8
movq %r15, %rsi
movq %r14, %r9
pushq %r13
pushq %rax
callq 0x4c581
popq %rcx
popq %rdx
movq %rax, %r14
cmpl $0x0, (%r13)
jne 0x68a01
movq (%rbx), %rax
movq (%rax), %rbx
movq 0x18(%rbx), %rdx
movq 0x20(%rbx), %rcx
movq 0x28(%rbx), %r8
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %r9
subq $0x8, %rsp
movq %r14, %rdi
pushq %r13
callq 0x4c6b2
addq $0x10, %rsp
cmpl $0x0, (%r13)
je 0x68a41
leaq 0x53bc(%rip), %rdi      # 0x6ddc4
callq 0x12080
testq %r14, %r14
je 0x68a1a
movq %r14, %rdi
callq 0x58a48
movq %r14, %rdi
callq 0x4c65f
movq 0x10(%rsp), %rdi
callq 0x122c0
xorl %r14d, %r14d
movq %r14, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r12
callq 0x5c7b8
addq $0x3, %rbp
andq $-0x4, %rbp
movl %eax, %eax
movq 0xa8(%r12), %rcx
leaq (%rax,%rbp), %rdx
addq $0x200c, %rdx           # imm = 0x200C
leaq (%rax,%rbp), %r15
addq $0x2000, %r15           # imm = 0x2000
cmpb $0x0, (%rcx)
cmovneq %rdx, %r15
movq %r15, %rax
shrq $0x20, %rax
je 0x69027
movq %r12, 0x8(%rsp)
leaq 0xa753(%rip), %rdx      # 0x731e4
pushq $0xf
popq %rsi
movq %r13, %rdi
movl $0xf5, %ecx
callq 0x1429e
cmpl $0x0, (%r13)
movq 0x20(%rsp), %rcx
movq 0x8(%rsp), %rsi
jne 0x68a01
movq %rbx, %rdi
movq 0x10(%rsp), %rdx
movq %r13, %r8
callq 0x695b1
cmpl $0x0, (%r13)
jne 0x68a01
pushq $0x1
popq %r13
pushq $0x4
popq %r12
pushq $0x2
popq %rbx
movq 0x10(%rsp), %rdi
movq 0x28(%rsp), %rax
cmpq 0x8(%rax), %r13
jae 0x69463
movq (%rax), %rax
movq (%rax,%r13,8), %rbp
cmpl $0x2, (%rbp)
jne 0x68b21
movq 0xd0(%rbp), %rsi
andq $0x0, 0xd0(%rbp)
movq %r14, %rdi
movq 0x78(%rsp), %r15
movq %r15, %rdx
callq 0x4c71f
jmp 0x68bab
movq 0x18(%rbp), %rdx
movq 0x20(%rbp), %rcx
movq 0x28(%rbp), %r8
movq 0x8(%rbp), %rsi
movq 0x10(%rbp), %r9
subq $0x8, %rsp
movq %r14, %rdi
movq 0x80(%rsp), %r15
pushq %r15
callq 0x4c6b2
addq $0x10, %rsp
cmpl $0x0, (%r15)
jne 0x68a01
movq %rax, %rsi
cmpl $0x1, (%rbp)
jne 0x68b91
movl 0x40(%rbp), %eax
cmpq $0x8, %rax
ja 0x69006
leaq 0xa64a(%rip), %rcx      # 0x731c0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbp, %rdi
movq 0x78(%rsp), %r15
movq %r15, %rdx
callq 0x56750
jmp 0x68bab
movq %rbp, %rdi
movq 0x10(%rsp), %rdx
movq 0x20(%rsp), %rcx
movq 0x78(%rsp), %r15
movq %r15, %r8
callq 0x695b1
cmpl $0x0, (%r15)
jne 0x68a01
incq %r13
jmp 0x68adc
movq %rbp, %rdi
movq 0x78(%rsp), %r15
movq %r15, %rdx
callq 0x5c245
jmp 0x68bab
movq %rbp, %rdi
movq 0x78(%rsp), %r15
movq %r15, %rdx
callq 0x5b6fb
jmp 0x68bab
movq %rbp, %rdi
movq 0x78(%rsp), %r15
movq %r15, %rdx
callq 0x5bc25
jmp 0x68bab
movq 0x10(%rsi), %rax
movq %rax, 0x18(%rsp)
incq %rax
movq %rax, 0x10(%rsi)
subq $0x8, %rsp
movq %rsi, %rdi
movq %rsi, 0x10(%rsp)
pushq $0x2
popq %rsi
movl %r12d, %edx
movq %rbx, %rbp
pushq $0xe
popq %rbx
movl %ebx, %ecx
xorl %r8d, %r8d
movq %rbp, %r9
movq 0x80(%rsp), %r15
pushq %r15
pushq $0x8
pushq $0x0
callq 0x4ced7
addq $0x20, %rsp
cmpl $0x0, (%r15)
jne 0x68a01
movq 0x8(%rsp), %rdi
pushq $0x12
popq %rsi
movl %ebx, %edx
pushq $0x3
popq %rbx
movq %rbx, %rcx
movq %rbp, %r8
xorl %r9d, %r9d
pushq %r15
pushq $0x0
callq 0x4d55b
popq %rax
popq %rcx
cmpl $0x0, (%r15)
jne 0x68a01
subq $0x8, %rsp
movq 0x10(%rsp), %rdi
pushq $0x2
popq %rsi
movl %r12d, %edx
pushq $0xe
popq %rcx
pushq $0x1
popq %r8
movq %rbx, %r9
pushq %r15
pushq $0x1
pushq $0x3
callq 0x4ced7
addq $0x20, %rsp
cmpl $0x0, (%r15)
pushq $0x13
popq %rsi
jne 0x68a01
movq 0x8(%rsp), %rbp
movq %rbp, %rdi
pushq $0xe
popq %rdx
movq %rbx, %rcx
pushq $0x2
popq %rbx
movq %rbx, %r8
xorl %r9d, %r9d
pushq %r15
pushq $0x0
callq 0x4d55b
popq %rax
popq %rcx
movq %rbp, %rdi
pushq $0x16
popq %rsi
movq %r15, %rdx
callq 0x4c92b
cmpl $0x0, (%r15)
jne 0x68a01
movl $0x1, 0x8(%rax)
movb $0x0, 0xc(%rax)
andl $0x0, 0x10(%rax)
movq 0x18(%rsp), %rcx
movq %rcx, 0x18(%rax)
movq 0x8(%rsp), %rdi
xorl %esi, %esi
pushq $0x1
popq %rbp
movq %rbp, %rdx
movq %r15, %rcx
callq 0x6aeef
cmpl $0x0, (%r15)
jne 0x68a01
movq 0x8(%rsp), %rdi
movq %rbp, %rsi
movq %rbx, %rdx
movq %r15, %rcx
callq 0x5e0c1
cmpl $0x0, (%r15)
jne 0x68a01
movq 0x8(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq %r15, %rdx
callq 0x4c77f
cmpl $0x0, (%r15)
jne 0x68a01
subq $0x8, %rsp
movq 0x10(%rsp), %rdi
pushq $0xd
popq %rsi
pushq $0xe
popq %rdx
xorl %ecx, %ecx
pushq $0xf
popq %r8
pushq $0xe
popq %r9
pushq %r15
callq 0x4d518
popq %rax
popq %rcx
jmp 0x68bab
movq %rbp, %rdi
movq 0x78(%rsp), %r15
movq %r15, %rdx
callq 0x5adc8
jmp 0x68bab
movq %rbp, %rdi
movq 0x78(%rsp), %r15
movq %r15, %rdx
callq 0x5b0c0
jmp 0x68bab
movq 0x10(%rsi), %rax
movq %rax, 0x18(%rsp)
addq $0x2, %rax
movq %rax, 0x10(%rsi)
subq $0x8, %rsp
movq %rsi, %rdi
movl %r12d, %ebx
movq %rsi, 0x10(%rsp)
movl %r12d, %esi
pushq $0x2
popq %rdx
pushq $0xe
popq %rcx
xorl %r8d, %r8d
pushq $0x1
popq %r9
movq 0x80(%rsp), %r15
pushq %r15
pushq $0x8
pushq $0x0
callq 0x4ced7
addq $0x20, %rsp
cmpl $0x0, (%r15)
jne 0x68a01
subq $0x8, %rsp
movq 0x10(%rsp), %rdi
movl %ebx, %esi
pushq $0x2
popq %rdx
pushq $0xe
popq %rcx
xorl %r8d, %r8d
pushq $0xb
popq %r9
pushq %r15
pushq $0x8
pushq $0x1
callq 0x4ced7
addq $0x20, %rsp
cmpl $0x0, (%r15)
jne 0x68a01
movq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
xorl %edx, %edx
movq %r15, %rcx
callq 0x6aeef
cmpl $0x0, (%r15)
jne 0x68a01
movq 0x18(%rsp), %rbx
leaq 0x1(%rbx), %rdx
movq 0x8(%rsp), %rdi
movq %rbx, %rsi
movq %rdx, 0x30(%rsp)
movq %r15, %rcx
callq 0x5ca39
cmpl $0x0, (%r15)
jne 0x68a01
movq 0x8(%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x4c77f
cmpl $0x0, (%r15)
jne 0x68a01
movq 0x8(%rsp), %rdi
pushq $0xd
popq %rsi
pushq $0xf
popq %rdx
pushq $0xe
popq %rcx
xorl %r8d, %r8d
pushq $0x2
popq %rbx
movq %rbx, %r9
pushq %r15
pushq $0x1
callq 0x4d213
popq %rax
popq %rcx
cmpl $0x0, (%r15)
jne 0x68a01
movq 0x8(%rsp), %rdi
pushq $0x13
popq %rsi
pushq $0xe
popq %rdx
movq %rbx, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
pushq %r15
pushq $0x0
callq 0x4d55b
popq %rax
popq %rcx
cmpl $0x0, (%r15)
jne 0x68a01
movq 0x8(%rsp), %rdi
pushq $0x13
popq %rsi
pushq $0xe
popq %rdx
pushq $0xb
popq %rcx
xorl %r8d, %r8d
movl %r12d, %ebx
movl %r12d, %r9d
pushq %r15
pushq $0x0
callq 0x4d55b
popq %rax
popq %rcx
cmpl $0x0, (%r15)
jne 0x68a01
subq $0x8, %rsp
movq 0x10(%rsp), %rdi
movl %ebx, %esi
pushq $0x2
popq %rdx
pushq $0xe
popq %rbx
movl %ebx, %ecx
xorl %r8d, %r8d
xorl %r9d, %r9d
pushq %r15
pushq $0x8
pushq $0x0
callq 0x4ced7
addq $0x20, %rsp
cmpl $0x0, (%r15)
jne 0x68a01
subq $0x8, %rsp
movq 0x10(%rsp), %rdi
pushq $0xd
popq %rsi
movl %ebx, %edx
xorl %ecx, %ecx
pushq $0xf
popq %r8
pushq $0xe
popq %r9
pushq %r15
callq 0x4d518
popq %rax
popq %rcx
cmpl $0x0, (%r15)
jne 0x68a01
movq 0x8(%rsp), %rdi
movq 0x30(%rsp), %rsi
movq %r15, %rdx
callq 0x4c77f
cmpl $0x0, (%r15)
jne 0x68a01
movq 0x8(%rsp), %rdi
movq %rbp, %rsi
pushq $0xe
popq %rbx
movl %ebx, %edx
pushq $0x2
popq %rcx
pushq $0xb
popq %r8
movq %r15, %r9
callq 0x4f15d
cmpl $0x0, (%r15)
jne 0x68a01
movq 0x8(%rsp), %rdi
pushq $0xd
popq %rbp
movl %ebp, %esi
pushq $0xf
popq %rdx
movl %ebx, %ecx
xorl %r8d, %r8d
xorl %r9d, %r9d
pushq %r15
pushq $0x0
callq 0x4d213
popq %rax
popq %rcx
cmpl $0x0, (%r15)
jne 0x68a01
subq $0x8, %rsp
movq 0x10(%rsp), %rdi
movl %ebp, %esi
movl %ebx, %edx
xorl %ecx, %ecx
pushq $0xf
popq %r8
pushq $0xe
popq %r9
pushq %r15
callq 0x4d518
popq %rax
popq %rcx
pushq $0x2
popq %rbx
jmp 0x68bab
movq %rbp, %rdi
movq 0x78(%rsp), %r15
movq %r15, %rdx
callq 0x5b3df
jmp 0x68bab
movq 0x78(%rsp), %r15
movq %r15, %rdi
pushq $0xf
popq %rsi
leaq 0xa1cc(%rip), %rdx      # 0x731e4
movl $0x1b6, %ecx            # imm = 0x1B6
callq 0x1429e
jmp 0x68bab
subq $0x8, %rsp
pushq $0xd
popq %rsi
pushq $0xe
popq %rdx
pushq $0xf
popq %r8
movq %r12, %rdi
xorl %ecx, %ecx
movq %r8, %r9
pushq %r13
callq 0x4d518
popq %rax
popq %rcx
cmpl $0x0, (%r13)
jne 0x68a01
subq $0x8, %rsp
pushq $0xd
popq %rsi
pushq $0xe
popq %rdx
pushq $0xf
popq %r8
movq %r12, %rdi
xorl %ecx, %ecx
movq %r8, %r9
pushq %r13
callq 0x4d518
popq %rax
popq %rcx
cmpl $0x0, (%r13)
jne 0x68a01
pushq $0xe
popq %rsi
pushq $0x10
popq %rdx
pushq $0x7
popq %r8
movq %r12, %rdi
xorl %ecx, %ecx
movq %r13, %r9
callq 0x4d4d9
cmpl $0x0, (%r13)
jne 0x68a01
pushq $0xa
popq %rsi
pushq $0xb
popq %rdx
movq %r12, %rdi
movq %r13, %rcx
callq 0x6aeef
cmpl $0x0, (%r13)
jne 0x68a01
subq $0x8, %rsp
pushq $0x4
popq %rsi
pushq $0x2
popq %rdx
pushq $0xe
popq %rcx
pushq $0xc
popq %r9
movq %r12, %rdi
xorl %r8d, %r8d
pushq %r13
pushq %r15
pushq $0xb
callq 0x4ced7
addq $0x20, %rsp
cmpl $0x0, (%r13)
jne 0x68a01
pushq $0xa
popq %rsi
pushq $0xe
popq %rdx
pushq $0xc
popq %rcx
pushq $0x1
popq %r8
movq %r12, %rdi
movq %r13, %r9
callq 0x4d921
cmpl $0x0, (%r13)
jne 0x68a01
pushq $0x16
popq %rsi
movq %r12, 0x8(%rsp)
movq %r12, %rdi
movq %r13, %rdx
callq 0x4c92b
cmpl $0x0, (%r13)
jne 0x68a01
movl $0xc, 0x8(%rax)
movb $0x0, 0xc(%rax)
andl $0x0, 0x10(%rax)
movq 0x8(%rsp), %rdi
movq 0xb0(%rdi), %rcx
movq %rcx, 0x18(%rax)
pushq $0x2
popq %rsi
pushq $0xe
popq %rdx
pushq $0xc
popq %r8
pushq $0x1
popq %r9
xorl %ecx, %ecx
movq 0x78(%rsp), %r15
pushq %r15
pushq %rbp
callq 0x4cdab
popq %rcx
popq %rdx
cmpl $0x0, (%r15)
jne 0x68a01
movq 0x8(%rsp), %rax
movq 0xa8(%rax), %rax
cmpb $0x1, (%rax)
jne 0x6946d
subq $0x8, %rsp
pushq $0x2
popq %rsi
pushq $0x4
popq %rdx
pushq $0xe
popq %rcx
pushq $0xd
popq %r9
movq 0x10(%rsp), %rdi
xorl %r8d, %r8d
movq 0x80(%rsp), %r15
pushq %r15
pushq $0xc
pushq $0xc
callq 0x4ced7
addq $0x20, %rsp
cmpl $0x0, (%r15)
jne 0x68a01
subq $0x10, %rsp
andl $0x0, (%rsp)
movq 0x88(%rsp), %r15
movq %r15, 0x8(%rsp)
pushq $0xd
popq %rsi
pushq $0xf
popq %rdx
pushq $0xe
popq %rcx
pushq $0x1
popq %r9
movq 0x18(%rsp), %rdi
xorl %r8d, %r8d
callq 0x4d213
popq %rax
popq %rcx
cmpl $0x0, (%r15)
jne 0x68a01
pushq $0x13
popq %rsi
pushq $0xe
popq %rdx
pushq $0x1
popq %rcx
pushq $0xc
popq %r8
pushq $-0x4
popq %r9
movq 0x8(%rsp), %rdi
movq 0x78(%rsp), %r15
pushq %r15
pushq $0x0
callq 0x4d55b
popq %rax
popq %rcx
cmpl $0x0, (%r15)
jne 0x68a01
pushq $0xd
popq %rsi
pushq $0xf
popq %rdx
pushq $0xe
popq %rcx
movq 0x8(%rsp), %rdi
xorl %r8d, %r8d
xorl %r9d, %r9d
movq 0x78(%rsp), %r15
pushq %r15
pushq $0x9
callq 0x4d213
popq %rax
popq %rcx
cmpl $0x0, (%r15)
jne 0x68a01
subq $0x8, %rsp
pushq $0x4
popq %rsi
pushq $0x2
popq %rdx
pushq $0xe
popq %rcx
pushq $0x1
popq %r9
movq 0x10(%rsp), %rdi
xorl %r8d, %r8d
movq 0x80(%rsp), %r15
pushq %r15
pushq $0x10
pushq $0xf
callq 0x4ced7
addq $0x20, %rsp
cmpl $0x0, (%r15)
jne 0x68a01
subq $0x8, %rsp
pushq $0xd
popq %rsi
pushq $0xe
popq %rdx
pushq $0x2
popq %r8
pushq $0xc
popq %r9
movq 0x10(%rsp), %rdi
xorl %ecx, %ecx
movq 0x80(%rsp), %r15
pushq %r15
callq 0x4d518
popq %rax
popq %rcx
cmpl $0x0, (%r15)
jne 0x68a01
pushq $0x40
popq %rdx
pushq $0x7
popq %rcx
pushq $0xe
popq %rsi
movq 0x8(%rsp), %rdi
movl %esi, %r8d
movq 0x78(%rsp), %r15
movq %r15, %r9
callq 0x4d4d9
cmpl $0x0, (%r15)
jne 0x68a01
pushq $0x13
popq %rsi
pushq $0xe
popq %rdx
pushq $0x1
popq %rcx
pushq $0xc
popq %r8
pushq $-0x8
popq %r9
movq 0x8(%rsp), %rdi
movq 0x78(%rsp), %r15
pushq %r15
pushq $0x0
callq 0x4d55b
popq %rax
popq %rcx
cmpl $0x0, (%r15)
jne 0x68a01
pushq $0x13
popq %rsi
pushq $0xe
popq %rdx
pushq $0x2
popq %rcx
pushq $0xc
popq %r8
pushq $-0xc
popq %r9
movq 0x8(%rsp), %rdi
movq 0x78(%rsp), %r15
pushq %r15
pushq $0x0
callq 0x4d55b
popq %rax
popq %rcx
cmpl $0x0, (%r15)
jne 0x68a01
movq 0x8(%rsp), %rdi
movq 0x10(%rdi), %rbp
leaq 0x1(%rbp), %rax
movq %rax, 0x10(%rdi)
pushq $0x16
popq %rsi
movq 0x78(%rsp), %r15
movq %r15, %rdx
callq 0x4c92b
cmpl $0x0, (%r15)
jne 0x68a01
movl $0xe, 0x8(%rax)
movb $0x0, 0xc(%rax)
andl $0x0, 0x10(%rax)
movq %rbp, 0x18(%rax)
pushq $0x8
popq %rsi
pushq $0xe
popq %rdx
pushq $0xb
popq %rcx
pushq $0x40
popq %r8
movq 0x8(%rsp), %rdi
movq 0x78(%rsp), %r15
movq %r15, %r9
callq 0x4d87e
cmpl $0x0, (%r15)
jne 0x68a01
subq $0x8, %rsp
pushq $0xd
popq %rsi
pushq $0xf
popq %r8
pushq $0xe
popq %r9
movq 0x10(%rsp), %rdi
xorl %edx, %edx
xorl %ecx, %ecx
movq 0x80(%rsp), %r15
pushq %r15
callq 0x4d518
popq %rax
popq %rcx
cmpl $0x0, (%r15)
jne 0x68a01
pushq $0x13
popq %rsi
pushq $0xe
popq %rdx
pushq $0xb
popq %rcx
pushq $0xc
popq %r8
pushq $-0x4
popq %r9
movq 0x8(%rsp), %rdi
movq 0x78(%rsp), %r15
pushq %r15
pushq $0x0
callq 0x4d55b
popq %rax
popq %rcx
cmpl $0x0, (%r15)
jne 0x68a01
subq $0x8, %rsp
pushq $0xd
popq %rsi
pushq $0xe
popq %rdx
pushq $0xf
popq %r8
pushq $0xe
popq %r9
movq 0x10(%rsp), %rdi
xorl %ecx, %ecx
movq 0x80(%rsp), %r15
pushq %r15
callq 0x4d518
popq %rax
popq %rcx
cmpl $0x0, (%r15)
jne 0x68a01
movq 0x8(%rsp), %rdi
movq %rbp, %rsi
movq 0x78(%rsp), %rdx
callq 0x4c77f
jmp 0x69494
callq 0x122c0
jmp 0x68a2f
subq $0x8, %rsp
pushq $0xd
popq %rsi
pushq $0xe
popq %rdx
pushq $0xd
popq %r8
pushq $0xc
popq %r9
movq 0x10(%rsp), %rdi
xorl %ecx, %ecx
pushq 0x80(%rsp)
callq 0x4d518
popq %rax
popq %rcx
movq 0x78(%rsp), %rax
cmpl $0x0, (%rax)
jne 0x68a01
subq $0x8, %rsp
pushq $0xd
popq %rsi
pushq $0xe
popq %rdx
pushq $0x1
popq %r8
pushq $0xb
popq %r9
movq 0x10(%rsp), %rdi
xorl %ecx, %ecx
movq 0x80(%rsp), %r15
pushq %r15
callq 0x4d518
popq %rax
popq %rcx
cmpl $0x0, (%r15)
jne 0x68a01
subq $0x8, %rsp
pushq $0x2
popq %rsi
pushq $0x4
popq %rdx
pushq $0xe
popq %rcx
pushq $0x3
popq %rbp
movq 0x10(%rsp), %rdi
xorl %r8d, %r8d
movq %rbp, %r9
movq 0x80(%rsp), %r15
pushq %r15
pushq $0x2000                 # imm = 0x2000
pushq $0xd
callq 0x4ced7
addq $0x20, %rsp
cmpl $0x0, (%r15)
jne 0x68a01
pushq $0x2
popq %rsi
movq 0x8(%rsp), %rdi
movq 0x78(%rsp), %r15
movq %r15, %rdx
callq 0x4c92b
cmpl $0x0, (%r15)
jne 0x68a01
movl $0xe, 0x8(%rax)
movb $0x0, 0xc(%rax)
movq %rbp, 0x10(%rax)
movq %rbp, 0x18(%rax)
andl $0x0, 0x20(%rax)
movq $0x1, 0x28(%rax)
movq 0x8(%rsp), %rdi
movq 0x78(%rsp), %r15
movq %r15, %rsi
callq 0x5c7be
cmpl $0x0, (%r15)
jne 0x68a01
movq 0x8(%rsp), %rax
movq 0xc0(%rax), %rax
testq %rax, %rax
je 0x69595
movq 0x8(%rsp), %rdi
movq 0x78(%rsp), %r13
movq %r13, %rsi
callq *0x20(%rax)
jmp 0x68aa1
leaq 0x9c48(%rip), %rdx      # 0x731e4
pushq $0xf
popq %rsi
movq 0x78(%rsp), %r13
movq %r13, %rdi
movl $0x166, %ecx            # imm = 0x166
jmp 0x68a9c