// File: /workspace/github_c_makefile_star2_O3/lucvoo[P]sparse-dev/linearize.c
// Function: linearize_expression
static pseudo_t linearize_expression(struct entrypoint *ep, struct expression *expr)
{
	if (!expr || !valid_type(expr->ctype))
		return VOID;

	current_pos = expr->pos;
	switch (expr->type) {
	case EXPR_SYMBOL:
		linearize_one_symbol(ep, expr->symbol);
		return add_symbol_address(ep, expr);

	case EXPR_VALUE:
		return value_pseudo(expr->value);

	case EXPR_STRING:
	case EXPR_LABEL:
		return add_setval(ep, expr->ctype, expr);

	case EXPR_FVALUE:
		return add_setfval(ep, expr->ctype, expr->fvalue);

	case EXPR_STATEMENT:
		return linearize_statement(ep, expr->statement);

	case EXPR_CALL:
		return linearize_call_expression(ep, expr);

	case EXPR_BINOP:
		if (expr->op == SPECIAL_LOGICAL_AND || expr->op == SPECIAL_LOGICAL_OR)
			return linearize_binop_bool(ep, expr);
		return linearize_binop(ep, expr);

	case EXPR_LOGICAL:
		return linearize_logical(ep, expr);

	case EXPR_COMPARE:
		return  linearize_compare(ep, expr);

	case EXPR_SELECT:
		return	linearize_select(ep, expr);

	case EXPR_CONDITIONAL:
		if (!expr->cond_true)
			return linearize_short_conditional(ep, expr, expr->conditional, expr->cond_false);

		return  linearize_conditional(ep, expr, expr->conditional,
					      expr->cond_true, expr->cond_false);

	case EXPR_COMMA:
		linearize_expression(ep, expr->left);
		return linearize_expression(ep, expr->right);

	case EXPR_ASSIGNMENT:
		return linearize_assignment(ep, expr);

	case EXPR_PREOP:
		return linearize_preop(ep, expr);

	case EXPR_POSTOP:
		return linearize_postop(ep, expr);

	case EXPR_CAST:
	case EXPR_FORCE_CAST:
	case EXPR_IMPLIED_CAST:
		return linearize_cast(ep, expr);
	
	case EXPR_SLICE:
		return linearize_slice(ep, expr);

	case EXPR_INITIALIZER:
	case EXPR_POS:
		warning(expr->pos, "unexpected initializer expression (%d %d)", expr->type, expr->op);
		return VOID;
	default: 
		warning(expr->pos, "unknown expression (%d %d)", expr->type, expr->op);
		return VOID;
	}
	return VOID;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
leaq 0x514e3(%rip), %r13     # 0x659d0
testq %rsi, %rsi
je 0x14643
movq %rsi, %rcx
movq %rdi, %rbp
leaq 0x583b5(%rip), %rbx     # 0x6c8b8
leaq 0x2c53e(%rip), %r14     # 0x40a48
movq 0x10(%rcx), %r12
testq %r12, %r12
je 0x14643
cmpq %rbx, %r12
je 0x14643
movq 0x8(%rcx), %rdi
movq %rdi, 0x5283d(%rip)     # 0x66d68
movzbl (%rcx), %edx
leal -0x1(%rdx), %eax
cmpl $0x1c, %eax
ja 0x14632
movslq (%r14,%rax,4), %rax
addq %r14, %rax
jmpq *%rax
movq 0x20(%rcx), %rsi
movq %rbp, %rdi
movq %rcx, %r15
callq 0x144d5
movq 0x28(%r15), %rcx
testq %rcx, %rcx
jne 0x1450a
jmp 0x14643
movq 0x28(%rcx), %rbx
movq %r13, %r15
testq %rbx, %rbx
je 0x14646
movq %rbp, %rdi
movq %rbx, %rsi
movq %rcx, %r14
callq 0x144d5
movq 0x10(%rbx), %rdx
movq 0x10(%r14), %rcx
movq %rbp, %rdi
movq %rax, %rsi
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x17589
movl 0x50(%r12), %ebx
xorl %eax, %eax
testl %ebx, %ebx
cmovlel %eax, %ebx
shll $0x8, %ebx
xorl %edi, %edi
movq %rcx, %r14
callq 0x2fca9
movq %rax, %r13
movl $0x80, %eax
andl (%r13), %eax
addl %ebx, %eax
addl $0x48, %eax
movl %eax, (%r13)
movq 0x52791(%rip), %rax     # 0x66d68
movq %rax, 0x10(%r13)
movq %r12, 0x18(%r13)
xorl %edi, %edi
callq 0x2fd6f
movq %rax, %r15
movl $0x3, 0x4(%rax)
movl 0x5255a(%rip), %eax     # 0x66b50
incl %eax
movl %eax, 0x52552(%rip)     # 0x66b50
movl %eax, (%r15)
movq %r13, 0x18(%r15)
movq %r15, 0x20(%r13)
movq %r14, 0x30(%r13)
movq 0x20(%rbp), %rdi
testq %rdi, %rdi
je 0x14646
movq %rdi, 0x8(%r13)
addq $0x28, %rdi
movq %r13, %rsi
jmp 0x14dcb
movl 0x4(%rcx), %ecx
leaq 0x2d447(%rip), %rsi     # 0x41a77
jmp 0x1463c
movl 0x4(%rcx), %ecx
leaq 0x2d465(%rip), %rsi     # 0x41aa1
xorl %eax, %eax
callq 0x118fc
movq %r13, %r15
movq %r15, %rax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x28(%rcx), %rsi
movq %rbp, %rdi
movq %rcx, %rbx
callq 0x144d5
movq %rax, %r13
movq 0x30(%rbx), %rsi
movq %rbp, %rdi
callq 0x144d5
movq %rax, %r15
movq 0x20(%rbx), %rsi
movq %rbp, %r14
movq %rbp, %rdi
callq 0x144d5
movq %rax, %rbp
movq 0x10(%rbx), %rsi
movl $0x41, %edi
callq 0x13674
movq %rax, %r12
cmpq $0x0, 0x28(%rbx)
cmoveq %rbp, %r13
movq %rbp, 0x30(%rax)
testq %rbp, %rbp
je 0x146ef
movl 0x4(%rbp), %eax
cmpl $0x6, %eax
ja 0x146c3
movl $0x43, %ecx
btl %eax, %ecx
jb 0x146ef
leaq 0x30(%r12), %rbx
leaq 0x4bae1(%rip), %rdi     # 0x601b0
movl $0x10, %esi
callq 0x2f700
movq %rbx, 0x8(%rax)
movq %r12, (%rax)
addq $0x8, %rbp
movq %rbp, %rdi
movq %rax, %rsi
callq 0x227b4
movq %r13, 0x38(%r12)
testq %r13, %r13
je 0x14738
movl 0x4(%r13), %eax
cmpl $0x6, %eax
ja 0x1470c
movl $0x43, %ecx
btl %eax, %ecx
jb 0x14738
leaq 0x38(%r12), %rbx
leaq 0x4ba98(%rip), %rdi     # 0x601b0
movl $0x10, %esi
callq 0x2f700
movq %rbx, 0x8(%rax)
movq %r12, (%rax)
addq $0x8, %r13
movq %r13, %rdi
movq %rax, %rsi
callq 0x227b4
movq %r15, 0x40(%r12)
testq %r15, %r15
je 0x14783
movl 0x4(%r15), %eax
cmpl $0x6, %eax
ja 0x14755
movl $0x43, %ecx
btl %eax, %ecx
jb 0x14783
movq %r12, %rbx
addq $0x40, %rbx
leaq 0x4ba4d(%rip), %rdi     # 0x601b0
movl $0x10, %esi
callq 0x2f700
movq %rbx, 0x8(%rax)
movq %r12, (%rax)
addq $0x8, %r15
movq %r15, %rdi
movq %rax, %rsi
callq 0x227b4
xorl %edi, %edi
callq 0x2fd6f
movq %rax, %r15
movl $0x3, 0x4(%rax)
movl 0x523b6(%rip), %eax     # 0x66b50
incl %eax
movl %eax, 0x523ae(%rip)     # 0x66b50
movl %eax, (%r15)
movq %r12, 0x18(%r15)
movq %r15, 0x20(%r12)
movq 0x20(%r14), %rdi
jmp 0x14db6
fldt 0x20(%rcx)
fstpt (%rsp)
movq %rbp, %rdi
movq %r12, %rsi
callq 0x1558f
jmp 0x14649
movq 0x20(%rcx), %rdx
movq %rcx, %rsi
movq 0x28(%rcx), %rcx
movq 0x30(%rsi), %r8
movq %rbp, %rdi
testq %rcx, %rcx
je 0x14e04
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1666a
movl 0x4(%rcx), %eax
cmpl $0x103, %eax            # imm = 0x103
je 0x14dd5
cmpl $0x101, %eax            # imm = 0x101
je 0x14dd5
cmpl $0x2a, %eax
jne 0x14e2c
xorps %xmm0, %xmm0
leaq 0x60(%rsp), %rdx
movaps %xmm0, 0x10(%rdx)
movaps %xmm0, (%rdx)
movq %rbp, %rdi
movq %rcx, %rsi
callq 0x17ae1
testl %eax, %eax
je 0x1502e
leaq 0x60(%rsp), %rsi
movq %rbp, %rdi
callq 0x17b87
jmp 0x14b1c
movq 0x20(%rcx), %rsi
movq %rbp, %rdi
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x15607
movq 0x20(%rcx), %rax
movq %rax, 0x48(%rsp)
movq 0x10(%rax), %r14
movq 0x40(%r14), %rax
testq %rax, %rax
je 0x148ae
movq 0x20(%rax), %rax
testq %rax, %rax
je 0x148ae
movq %rbp, %rdi
movq %rcx, %rsi
movq %rcx, %rbx
callq *%rax
movq %rax, %r15
testq %rax, %rax
jne 0x14646
movq %rbx, %rcx
movq 0x10(%rbx), %r12
movq %rbp, 0x28(%rsp)
movl $0x4a, %edi
movq %r12, %rsi
movq %rcx, %rbx
callq 0x13674
movq %rax, 0x20(%rsp)
movq %rax, 0x30(%rsp)
leaq 0x40(%rax), %rdi
movq %rdi, 0x18(%rsp)
movq %r14, 0x38(%rsp)
movq %r14, %rsi
callq 0x227b4
movq %rbx, 0x50(%rsp)
movq 0x28(%rbx), %rax
movq %rax, 0x40(%rsp)
testq %rax, %rax
je 0x149c6
movq 0x30(%rsp), %rax
leaq 0x38(%rax), %rbp
movq 0x40(%rsp), %r14
movzwl (%r14), %eax
testb %al, %al
jle 0x149b7
xorl %r13d, %r13d
movq 0x18(%r14,%r13,8), %r15
movzwl %ax, %ecx
cmpl $0x100, %ecx            # imm = 0x100
jb 0x1492c
testq %r15, %r15
je 0x149a4
movq 0x28(%rsp), %rdi
movq %r15, %rsi
callq 0x144d5
movq %rax, %r12
movq %rbp, %rdi
movq %rax, %rsi
callq 0x227b4
movq %r12, (%rax)
testq %r12, %r12
je 0x14992
movq %rax, %rbx
movl 0x4(%r12), %eax
cmpl $0x6, %eax
ja 0x14966
movl $0x43, %ecx
btl %eax, %ecx
jb 0x14992
leaq 0x4b843(%rip), %rdi     # 0x601b0
movl $0x10, %esi
callq 0x2f700
movq %rbx, 0x8(%rax)
movq 0x20(%rsp), %rcx
movq %rcx, (%rax)
addq $0x8, %r12
movq %r12, %rdi
movq %rax, %rsi
callq 0x227b4
movq 0x10(%r15), %rsi
movq 0x18(%rsp), %rdi
callq 0x227b4
movzwl (%r14), %eax
incq %r13
movzwl %ax, %ecx
movsbq %cl, %rcx
cmpq %rcx, %r13
jl 0x14917
movq 0x10(%r14), %r14
cmpq 0x40(%rsp), %r14
jne 0x14908
movq 0x48(%rsp), %rsi
movzbl (%rsi), %eax
cmpl $0x9, %eax
jne 0x14df3
cmpl $0x2a, 0x4(%rsi)
movq 0x20(%rsp), %r12
movq 0x30(%rsp), %r13
jne 0x14e65
movq 0x10(%rsi), %rdx
movzbl (%rdx), %ecx
cmpl $0x3, %ecx
movq 0x28(%rsp), %rbx
jne 0x14a03
movq 0x60(%rdx), %rcx
movzbl (%rcx), %ecx
cmpl $0x5, %ecx
jne 0x14e6a
movq 0x20(%rsi), %rsi
movzbl (%rsi), %eax
jmp 0x14e6a
xorps %xmm0, %xmm0
movaps %xmm0, 0x70(%rsp)
movaps %xmm0, 0x60(%rsp)
movq 0x20(%rcx), %r13
movq %rcx, %r14
movq 0x28(%rcx), %r12
movq %rbp, %rdi
movq %r12, %rsi
callq 0x144d5
movq %rax, %r15
testq %r13, %r13
je 0x14646
leaq 0x60(%rsp), %rdx
movq %rbp, %rdi
movq %r13, %rsi
callq 0x17ae1
testl %eax, %eax
je 0x14646
cmpl $0x3d, 0x4(%r14)
je 0x14b0c
leaq 0x60(%rsp), %rsi
movq %rbp, %rdi
callq 0x17b87
testq %r12, %r12
je 0x1502e
movq 0x10(%r12), %r12
movq 0x10(%r13), %rdx
movq %rbp, %rdi
movq %rax, %rsi
movq %r12, %rcx
callq 0x17589
movq %rax, %rbx
movslq 0x4(%r14), %rax
leaq 0x2ca6b(%rip), %rcx     # 0x41510
movl -0x400(%rcx,%rax,4), %edi
movq %r12, %rsi
callq 0x17479
movq %rbp, %rdi
movq %r12, %rsi
movl %eax, %edx
movq %rbx, %rcx
movq %r15, %r8
callq 0x16d1b
movq 0x18(%rax), %rcx
movl (%rcx), %edx
movl %edx, %esi
andl $0x7f, %esi
addl $-0xf, %esi
cmpl $0x2, %esi
ja 0x14af7
movq 0x38(%rcx), %rsi
cmpl $0x6, 0x4(%rsi)
jne 0x14af7
movl %edx, %edi
shrl $0x8, %edi
cmpq %rdi, 0x18(%rsi)
jb 0x14af7
orl $0x80, %edx
movl %edx, (%rcx)
movq 0x10(%r14), %rcx
movq %rbp, %rdi
movq %rax, %rsi
movq %r12, %rdx
callq 0x17589
movq %rax, %r15
leaq 0x60(%rsp), %rdx
movq %rbp, %rdi
movq %r15, %rsi
callq 0x1684b
movq %rax, %r15
jmp 0x14646
movq 0x20(%rcx), %rsi
movq %rbp, %rdi
movq %rcx, %rbx
callq 0x15490
movq 0x10(%rbx), %rsi
movl $0x3f, %edi
callq 0x13674
movq %rax, %r12
xorl %edi, %edi
callq 0x2fd6f
movq %rax, %r15
movl $0x3, 0x4(%rax)
movl 0x51ff5(%rip), %eax     # 0x66b50
incl %eax
movl %eax, 0x51fed(%rip)     # 0x66b50
movl %eax, (%r15)
movq %r12, 0x18(%r15)
movq %r15, 0x20(%r12)
movq 0x20(%rbx), %rsi
movq %rbp, %rdi
callq 0x167e4
movq %rax, 0x30(%r12)
testq %rax, %rax
je 0x14db2
movq %rax, %r14
movl 0x4(%rax), %eax
cmpl $0x6, %eax
ja 0x14ba2
movl $0x43, %ecx
btl %eax, %ecx
jb 0x14db2
movq %r12, %rbx
addq $0x30, %rbx
leaq 0x4b600(%rip), %rdi     # 0x601b0
movl $0x10, %esi
callq 0x2f700
movq %rbx, 0x8(%rax)
movq %r12, (%rax)
addq $0x8, %r14
movq %r14, %rdi
jmp 0x14daa
cmpq $0x0, 0x20(%rbp)
je 0x14643
cmpq $0x0, 0x20(%rcx)
je 0x14643
movq 0x28(%rcx), %rax
movq %r13, %r15
testq %rax, %rax
je 0x14646
movq 0x8(%rax), %rbx
xorl %edi, %edi
movq %rcx, %r14
callq 0x2fbe3
movq %rax, %r13
movq %rbx, (%rax)
movq %rbp, 0x10(%rax)
movl 0x5215f(%rip), %eax     # 0x66d70
leal 0x1(%rax), %ecx
movl %ecx, 0x52156(%rip)     # 0x66d70
movl %eax, 0x38(%r13)
movq 0x8(%r14), %rbx
xorl %edi, %edi
callq 0x2fbe3
movq %rax, %r15
movq %rbx, (%rax)
movq %rbp, 0x10(%rax)
movl 0x52137(%rip), %eax     # 0x66d70
leal 0x1(%rax), %ecx
movl %ecx, 0x5212e(%rip)     # 0x66d70
movl %eax, 0x38(%r15)
movq %r15, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x138c0
movq %rax, 0x18(%rsp)
cmpl $0x10e, 0x4(%r14)       # imm = 0x10E
movq %r14, 0x50(%rsp)
movq 0x20(%r14), %rsi
movq %rbp, 0x28(%rsp)
movq %r12, 0x20(%rsp)
movq %rbp, %rdi
jne 0x1505c
movq %r15, %rdx
movq %r13, %rcx
callq 0x17013
movl $0x1, %edi
jmp 0x15069
movq 0x20(%rcx), %rdi
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x13745
movq %rbp, %rdi
movq %rcx, %rsi
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x164bb
movl 0x4(%rcx), %eax
orl $0x2, %eax
movq %rbp, %rdi
movq %rcx, %rsi
addq $0x88, %rsp
cmpl $0x10e, %eax            # imm = 0x10E
jne 0x14e1d
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x161e6
movq %rbp, %rdi
movq %rcx, %rsi
movl $0x1, %edx
jmp 0x14ddd
movq 0x20(%rcx), %rsi
movq %rbp, %rdi
movq %rcx, %rbx
callq 0x144d5
movq %rax, %r13
movq 0x10(%rbx), %rsi
movl $0x40, %edi
callq 0x13674
movq %rax, %r12
xorl %edi, %edi
callq 0x2fd6f
movq %rax, %r15
movl $0x3, 0x4(%rax)
movl 0x51e12(%rip), %eax     # 0x66b50
incl %eax
movl %eax, 0x51e0a(%rip)     # 0x66b50
movl %eax, (%r15)
movq %r12, 0x18(%r15)
movq %r15, 0x20(%r12)
movl 0x28(%rbx), %eax
movl %eax, 0x38(%r12)
movq 0x20(%rbx), %rax
movq 0x10(%rax), %rax
movq %rax, 0x40(%r12)
movq %r13, 0x30(%r12)
testq %r13, %r13
je 0x14db2
movl 0x4(%r13), %eax
cmpl $0x6, %eax
ja 0x14d84
movl $0x43, %ecx
btl %eax, %ecx
jb 0x14db2
movq %r12, %rbx
addq $0x30, %rbx
leaq 0x4b41e(%rip), %rdi     # 0x601b0
movl $0x10, %esi
callq 0x2f700
movq %rbx, 0x8(%rax)
movq %r12, (%rax)
addq $0x8, %r13
movq %r13, %rdi
movq %rax, %rsi
callq 0x227b4
movq 0x20(%rbp), %rdi
testq %rdi, %rdi
je 0x14646
movq %rdi, 0x8(%r12)
addq $0x28, %rdi
movq %r12, %rsi
callq 0x227b4
jmp 0x14646
movq %rbp, %rdi
movq %rcx, %rsi
xorl %edx, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x17c35
movq 0x28(%rsp), %rbx
movq 0x20(%rsp), %r12
movq 0x30(%rsp), %r13
jmp 0x14e6a
movq %r8, %rcx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1654f
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x16429
movq 0x20(%rcx), %rsi
movq %rbp, %rdi
movq %rcx, %rbx
callq 0x144d5
movq %rax, %r15
movq 0x10(%rbx), %r12
movl 0x4(%rbx), %eax
cmpl $0x2c, %eax
jg 0x1503a
cmpl $0x21, %eax
je 0x15236
cmpl $0x2b, %eax
je 0x14646
jmp 0x14643
movq 0x28(%rsp), %rbx
addq $0x30, %r13
cmpl $0x3, %eax
jne 0x14e81
movq 0x20(%rsi), %rsi
movq %rbx, %rdi
callq 0x167e4
jmp 0x14e89
movq %rbx, %rdi
callq 0x144d5
movq %rax, %r15
movq 0x38(%rsp), %r14
movq %rax, (%r13)
testq %rax, %rax
je 0x14ed4
movl 0x4(%r15), %eax
cmpl $0x6, %eax
ja 0x14ead
movl $0x43, %ecx
btl %eax, %ecx
jb 0x14ed4
leaq 0x4b2fc(%rip), %rdi     # 0x601b0
movl $0x10, %esi
callq 0x2f700
movq %r13, 0x8(%rax)
movq %r12, (%rax)
addq $0x8, %r15
movq %r15, %rdi
movq %rax, %rsi
callq 0x227b4
movq 0x50(%rsp), %rax
movq 0x10(%rax), %rax
cmpq 0x4b064(%rip), %rax     # 0x5ff48
je 0x14f0a
xorl %edi, %edi
callq 0x2fd6f
movl $0x3, 0x4(%rax)
movl 0x51c56(%rip), %ecx     # 0x66b50
incl %ecx
movl %ecx, 0x51c4e(%rip)     # 0x66b50
movl %ecx, (%rax)
movq %r12, 0x18(%rax)
jmp 0x14f11
leaq 0x50abf(%rip), %rax     # 0x659d0
movq %rax, 0x20(%rsp)
movq %rax, 0x20(%r12)
movq 0x20(%rbx), %rdi
testq %rdi, %rdi
je 0x14f35
movq %rdi, 0x8(%r12)
addq $0x28, %rdi
movq %r12, %rsi
callq 0x227b4
movq 0x78(%r14), %rax
movq %rax, 0x18(%rsp)
testq %rax, %rax
je 0x1500f
xorl %r14d, %r14d
movq 0x18(%rsp), %r12
movzwl (%r12), %eax
testb %al, %al
jle 0x14fff
xorl %r13d, %r13d
movq 0x18(%r12,%r13,8), %rbx
movzwl %ax, %eax
cmpl $0x100, %eax            # imm = 0x100
jb 0x14f73
testq %rbx, %rbx
je 0x14feb
movl 0x8(%rbx), %r15d
movl 0xc(%rbx), %ebp
testl %r15d, %r15d
movl $0x0, %eax
cmovgl %r15d, %eax
shrl $0x1f, %r15d
testl %ebp, %ebp
cmovlel %r14d, %ebp
cmovsl %r14d, %r15d
movl %ebp, %ecx
xorl %eax, %ecx
orl %r15d, %ecx
je 0x14feb
subl %eax, %ebp
xorl %edi, %edi
callq 0x2fca9
movl (%rax), %ecx
movl $0x80, %edx
andl %edx, %ecx
orl $0x4f, %ecx
movl %ecx, (%rax)
movq 0x51dad(%rip), %rcx     # 0x66d68
movq %rcx, 0x10(%rax)
movl %ebp, 0x30(%rax)
movl %r15d, 0x34(%rax)
movq (%rbx), %rcx
movq %rcx, 0x38(%rax)
movq 0x28(%rsp), %rcx
movq 0x20(%rcx), %rdi
testq %rdi, %rdi
je 0x14feb
movq %rdi, 0x8(%rax)
addq $0x28, %rdi
movq %rax, %rsi
callq 0x227b4
incq %r13
movl (%r12), %eax
movsbq %al, %rcx
cmpq %rcx, %r13
jl 0x14f5f
movq 0x10(%r12), %r12
cmpq 0x18(%rsp), %r12
jne 0x14f4f
movq 0x38(%rsp), %rax
testb $0x10, 0x6b(%rax)
je 0x15024
movq 0x28(%rsp), %rdi
callq 0x17544
movq 0x20(%rsp), %r15
jmp 0x14646
leaq 0x5099b(%rip), %r15     # 0x659d0
jmp 0x14646
cmpl $0x2d, %eax
je 0x1526b
cmpl $0x7e, %eax
jne 0x14643
movq %rbp, %rdi
movq %r12, %rsi
movl $0x31, %edx
jmp 0x152a5
movq %r13, %rdx
movq %r15, %rcx
callq 0x17013
xorl %edi, %edi
movq %r13, 0x58(%rsp)
callq 0x13745
movq %rax, 0x40(%rsp)
movq %r15, 0x48(%rsp)
movq 0x18(%r15), %rax
movq %rax, 0x30(%rsp)
testq %rax, %rax
je 0x15191
movq 0x18(%rsp), %rax
addq $0x38, %rax
movq %rax, 0x38(%rsp)
movq 0x30(%rsp), %rbp
movzwl (%rbp), %eax
testb %al, %al
jle 0x15182
xorl %r14d, %r14d
movq 0x18(%rbp,%r14,8), %r12
movzwl %ax, %ecx
cmpl $0x100, %ecx            # imm = 0x100
jb 0x150ca
testq %r12, %r12
je 0x1516f
movq 0x40(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x137e4
movq %rax, %rbx
leaq 0x28(%r12), %r13
movq %r13, %rdi
callq 0x22a6b
movq %rax, %r15
movq %r13, %rdi
movq %rbx, %rsi
callq 0x227b4
movq %r13, %rdi
movq %r15, %rsi
callq 0x227b4
movq %r12, 0x8(%rbx)
movq 0x20(%rbx), %r13
movq 0x38(%rsp), %rdi
movq %r13, %rsi
callq 0x227b4
movq %r13, (%rax)
testq %r13, %r13
je 0x1515e
movq %rax, %rbx
movl 0x4(%r13), %eax
cmpl $0x6, %eax
ja 0x15135
movl $0x43, %ecx
btl %eax, %ecx
jb 0x1515e
leaq 0x4b074(%rip), %rdi     # 0x601b0
movl $0x10, %esi
callq 0x2f700
movq %rbx, 0x8(%rax)
movq 0x18(%rsp), %rcx
movq %rcx, (%rax)
leaq 0x8(%r13), %rdi
movq %rax, %rsi
callq 0x227b4
movq 0x18(%r13), %rax
movq 0x18(%rsp), %rcx
movq %rcx, 0x38(%rax)
movzwl (%rbp), %eax
incq %r14
movzwl %ax, %ecx
movsbq %cl, %rcx
cmpq %rcx, %r14
jl 0x150b1
movq 0x10(%rbp), %rbp
cmpq 0x30(%rsp), %rbp
jne 0x150a2
movq 0x28(%rsp), %r12
movq %r12, %rdi
movq 0x58(%rsp), %rsi
callq 0x14060
movq 0x50(%rsp), %rax
movq 0x28(%rax), %rbx
movq %r12, %rdi
movq %rbx, %rsi
callq 0x144d5
movq %rax, %r15
movq 0x10(%rbx), %r14
testq %r14, %r14
sete %al
leaq 0x50805(%rip), %rsi     # 0x659d0
cmpq %rsi, %r15
sete %cl
orb %al, %cl
jne 0x1531b
movzbl (%r14), %eax
movq %r14, %rcx
cmpl $0x3, %eax
jne 0x151e9
movq 0x60(%r14), %rcx
cmpq 0x4adf8(%rip), %rcx     # 0x5ffe8
je 0x15200
cmpl $0x6, 0x4(%r15)
jne 0x15208
cmpq $0x2, 0x18(%r15)
jae 0x15208
movq %r15, %rsi
jmp 0x1531b
movq %r14, %rcx
cmpl $0x3, %eax
jne 0x15214
movq 0x60(%r14), %rcx
movq 0x60(%rcx), %rax
cmpq 0x4ad31(%rip), %rax     # 0x5ff50
je 0x152be
xorl %edi, %edi
callq 0x13745
movl $0x30, %edx
jmp 0x152fb
xorl %edi, %edi
callq 0x13745
movq 0x20(%rbx), %rcx
movq 0x10(%rcx), %rbx
movq %rbp, %rdi
movq %r12, %rsi
movl $0x27, %edx
movq %r15, %rcx
movq %rax, %r8
callq 0x16d1b
movq %rax, %r15
movq 0x18(%rax), %rax
movq %rbx, 0x40(%rax)
jmp 0x14646
movl $0x32, %edx
testq %r12, %r12
je 0x1529f
cmpb $0x3, (%r12)
movq %r12, %rax
jne 0x15284
movq 0x60(%r12), %rax
movq 0x60(%rax), %rax
cmpq 0x4acc1(%rip), %rax     # 0x5ff50
jne 0x1529f
leaq 0x2c988(%rip), %rax     # 0x41c20
movsbl 0x193(%rax), %edx
movq %rbp, %rdi
movq %r12, %rsi
movq %r15, %rcx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x16e20
fldz
fstpt (%rsp)
movq %r12, %rdi
movq %r14, %rsi
callq 0x1558f
cmpb $0x3, (%r14)
movq %r14, %rcx
jne 0x152db
movq 0x60(%r14), %rcx
movq 0x60(%rcx), %rcx
movl $0x30, %edx
cmpq 0x4ac65(%rip), %rcx     # 0x5ff50
jne 0x152fb
leaq 0x2c92c(%rip), %rcx     # 0x41c20
movsbl 0x183(%rcx), %edx
leaq 0x55d36(%rip), %rsi     # 0x6b038
movq %r12, %rdi
movq %r15, %rcx
movq %rax, %r8
callq 0x16d1b
movq %rax, %rsi
movq 0x18(%rax), %rax
movq %r14, 0x40(%rax)
leaq 0x55d16(%rip), %rdx     # 0x6b038
movq %r12, %rdi
movq 0x20(%rsp), %rbx
movq %rbx, %rcx
callq 0x17589
movq 0x20(%r12), %rdi
movq %rax, %rsi
movq %rbx, %rdx
callq 0x1387f
movq %rax, %r14
movq 0x18(%rsp), %rdi
addq $0x38, %rdi
movq %rax, %rsi
callq 0x227b4
movq %r14, (%rax)
testq %r14, %r14
je 0x153a0
movq %rax, %r15
movl 0x4(%r14), %eax
cmpl $0x6, %eax
ja 0x15374
movl $0x43, %ecx
btl %eax, %ecx
jb 0x153a0
leaq 0x4ae35(%rip), %rdi     # 0x601b0
movl $0x10, %esi
callq 0x2f700
movq %r15, 0x8(%rax)
movq 0x18(%rsp), %rcx
movq %rcx, (%rax)
movq %r14, %rdi
addq $0x8, %rdi
movq %rax, %rsi
callq 0x227b4
movq 0x18(%r14), %rax
movq 0x18(%rsp), %r14
movq %r14, 0x38(%rax)
movq %r12, %rdi
movq 0x48(%rsp), %rbx
movq %rbx, %rsi
callq 0x14060
addq $0x28, %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x227b4
movq 0x20(%r14), %r15
jmp 0x14646