// File: lhydave[P]SysYCompilerLab/front/node.cpp
// Function: sysY_AST::arith_exp_node::reduce()
void arith_exp_node::reduce()
{
	if (!sysy_name.empty())
		return;
	assert(left->exp_type != EXP_INITVAL);
	if (right) // binary operator
	{
		assert(right->exp_type != EXP_INITVAL);
		// can reduce!
		if (left->exp_type == EXP_NUM && right->exp_type == EXP_NUM)
		{
			exp_type = EXP_NUM;
			switch (op)
			{
			case EQ: num = left->num == right->num; break;
			case NE: num = left->num != right->num; break;
			case GE: num = left->num >= right->num; break;
			case LE: num = left->num <= right->num; break;
			case G: num = left->num > right->num; break;
			case L: num = left->num < right->num; break;
			case ADD: num = left->num + right->num; break;
			case SUB: num = left->num - right->num; break;
			case MUL: num = left->num * right->num; break;
			case DIV: num = left->num / right->num; break;
			case MOD: num = left->num % right->num; break;
			default: dbg_printf("%d is not a binary operator!", (int)op); break;
			}
			eeyore_name = to_string(num);
		}
		else
		{
			left->new_temp();
			right->new_temp();
			code = left->code + right->code;
			switch (op)
			{
			case EQ:
				eeyore_name = left->eeyore_name + " == " + right->eeyore_name;
				break;
			case NE:
				eeyore_name = left->eeyore_name + " != " + right->eeyore_name;
				break;
			case GE:
				eeyore_name = left->eeyore_name + " >= " + right->eeyore_name;
				break;
			case LE:
				eeyore_name = left->eeyore_name + " <= " + right->eeyore_name;
				break;
			case G:
				eeyore_name = left->eeyore_name + " > " + right->eeyore_name;
				break;
			case L:
				eeyore_name = left->eeyore_name + " < " + right->eeyore_name;
				break;
			case ADD:
				eeyore_name = left->eeyore_name + " + " + right->eeyore_name;
				break;
			case SUB:
				eeyore_name = left->eeyore_name + " - " + right->eeyore_name;
				break;
			case MUL:
				eeyore_name = left->eeyore_name + " * " + right->eeyore_name;
				break;
			case DIV:
				eeyore_name = left->eeyore_name + " / " + right->eeyore_name;
				break;
			case MOD:
				eeyore_name = left->eeyore_name + " % " + right->eeyore_name;
				break;
			case MEM:
				eeyore_name =
					left->eeyore_name + "[" + right->eeyore_name + "]";
				break;
			default: dbg_printf("%d is not a binary operator!", (int)op); break;
			} // switch

		} // else
	} // if
	else // unary operator
	{
		if (left->exp_type == EXP_NUM)
		{
			exp_type = EXP_NUM;
			switch (op)
			{
			case NEGATE: num = -left->num; break;
			case NOT: num = !left->num; break;
			default: dbg_printf("%d is not a unary operator!", (int)op); break;
			}
			eeyore_name = to_string(num);
		}
		else
		{
			left->new_temp();
			code = left->code;
			switch (op)
			{
			case NEGATE: eeyore_name = "-" + left->eeyore_name; break;
			case NOT: eeyore_name = "!" + left->eeyore_name; break;
			default: dbg_printf("%d is not a unary operator!", (int)op); break;
			}
		}
	}
	sysy_name = "?exp_arith";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x460, %rsp            # imm = 0x460
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x3e0(%rbp)
addq $0x50, %rdi
callq 0x55b0
testb $0x1, %al
jne 0x1073c
jmp 0x114fd
movq -0x3e0(%rbp), %rax
cmpq $0x0, 0xa8(%rax)
je 0x1131a
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rax
cmpl $0x2, 0x98(%rax)
jne 0x10a27
movq -0x3e0(%rbp), %rax
movq 0xa8(%rax), %rax
cmpl $0x2, 0x98(%rax)
jne 0x10a27
movq -0x3e0(%rbp), %rax
movl $0x2, 0x98(%rax)
movl 0x90(%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x3e8(%rbp)
subl $0xb, %eax
ja 0x109ed
movq -0x3e8(%rbp), %rax
leaq 0x3d188(%rip), %rcx     # 0x4d948
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rcx
movl 0x94(%rcx), %ecx
movq 0xa8(%rax), %rdx
cmpl 0x94(%rdx), %ecx
sete %cl
andb $0x1, %cl
movzbl %cl, %ecx
movl %ecx, 0x94(%rax)
jmp 0x109ef
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rcx
movl 0x94(%rcx), %ecx
movq 0xa8(%rax), %rdx
cmpl 0x94(%rdx), %ecx
setne %cl
andb $0x1, %cl
movzbl %cl, %ecx
movl %ecx, 0x94(%rax)
jmp 0x109ef
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rcx
movl 0x94(%rcx), %ecx
movq 0xa8(%rax), %rdx
cmpl 0x94(%rdx), %ecx
setge %cl
andb $0x1, %cl
movzbl %cl, %ecx
movl %ecx, 0x94(%rax)
jmp 0x109ef
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rcx
movl 0x94(%rcx), %ecx
movq 0xa8(%rax), %rdx
cmpl 0x94(%rdx), %ecx
setle %cl
andb $0x1, %cl
movzbl %cl, %ecx
movl %ecx, 0x94(%rax)
jmp 0x109ef
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rcx
movl 0x94(%rcx), %ecx
movq 0xa8(%rax), %rdx
cmpl 0x94(%rdx), %ecx
setg %cl
andb $0x1, %cl
movzbl %cl, %ecx
movl %ecx, 0x94(%rax)
jmp 0x109ef
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rcx
movl 0x94(%rcx), %ecx
movq 0xa8(%rax), %rdx
cmpl 0x94(%rdx), %ecx
setl %cl
andb $0x1, %cl
movzbl %cl, %ecx
movl %ecx, 0x94(%rax)
jmp 0x109ef
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rcx
movl 0x94(%rcx), %ecx
movq 0xa8(%rax), %rdx
addl 0x94(%rdx), %ecx
movl %ecx, 0x94(%rax)
jmp 0x109ef
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rcx
movl 0x94(%rcx), %ecx
movq 0xa8(%rax), %rdx
subl 0x94(%rdx), %ecx
movl %ecx, 0x94(%rax)
jmp 0x109ef
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rcx
movl 0x94(%rcx), %ecx
movq 0xa8(%rax), %rdx
imull 0x94(%rdx), %ecx
movl %ecx, 0x94(%rax)
jmp 0x109ef
movq -0x3e0(%rbp), %rcx
movq 0xa0(%rcx), %rax
movl 0x94(%rax), %eax
movq 0xa8(%rcx), %rcx
cltd
idivl 0x94(%rcx)
movl %eax, %ecx
movq -0x3e0(%rbp), %rax
movl %ecx, 0x94(%rax)
jmp 0x109ef
movq -0x3e0(%rbp), %rcx
movq 0xa0(%rcx), %rax
movl 0x94(%rax), %eax
movq 0xa8(%rcx), %rcx
cltd
idivl 0x94(%rcx)
movq -0x3e0(%rbp), %rax
movl %edx, 0x94(%rax)
jmp 0x109ef
jmp 0x109ef
movq -0x3e0(%rbp), %rax
movl 0x94(%rax), %esi
leaq -0x28(%rbp), %rdi
callq 0x13410
movq -0x3e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x28(%rbp), %rsi
callq 0x5410
leaq -0x28(%rbp), %rdi
callq 0x56c0
jmp 0x11315
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x3e0(%rbp), %rax
movq 0xa8(%rax), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rsi
movq 0xa8(%rax), %rdx
addq $0x18, %rsi
addq $0x18, %rdx
leaq -0x48(%rbp), %rdi
movq %rdi, -0x3f8(%rbp)
callq 0x12c30
movq -0x3f8(%rbp), %rsi
movq -0x3e0(%rbp), %rdi
addq $0x18, %rdi
callq 0x5410
movq -0x3f8(%rbp), %rdi
callq 0x56c0
movq -0x3e0(%rbp), %rax
movl 0x90(%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x3f0(%rbp)
subl $0xf, %eax
ja 0x11311
movq -0x3f0(%rbp), %rax
leaq 0x3ce34(%rip), %rcx     # 0x4d908
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rsi
addq $0x70, %rsi
leaq 0x3d2a6(%rip), %rdx     # 0x4dd9c
leaq -0x88(%rbp), %rdi
movq %rdi, -0x400(%rbp)
callq 0x140a0
movq -0x3e0(%rbp), %rax
movq -0x400(%rbp), %rsi
movq 0xa8(%rax), %rdx
addq $0x70, %rdx
leaq -0x68(%rbp), %rdi
callq 0x132d0
jmp 0x10b2d
movq -0x3e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x68(%rbp), %rsi
callq 0x5410
leaq -0x68(%rbp), %rdi
callq 0x56c0
leaq -0x88(%rbp), %rdi
callq 0x56c0
jmp 0x11313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x56c0
jmp 0x11506
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rsi
addq $0x70, %rsi
leaq 0x3d20a(%rip), %rdx     # 0x4dda1
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x408(%rbp)
callq 0x140a0
movq -0x3e0(%rbp), %rax
movq -0x408(%rbp), %rsi
movq 0xa8(%rax), %rdx
addq $0x70, %rdx
leaq -0xb8(%rbp), %rdi
callq 0x132d0
jmp 0x10bd1
movq -0x3e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0xb8(%rbp), %rsi
callq 0x5410
leaq -0xb8(%rbp), %rdi
callq 0x56c0
leaq -0xd8(%rbp), %rdi
callq 0x56c0
jmp 0x11313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x56c0
jmp 0x11506
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rsi
addq $0x70, %rsi
leaq 0x3d165(%rip), %rdx     # 0x4dda6
leaq -0x118(%rbp), %rdi
movq %rdi, -0x410(%rbp)
callq 0x140a0
movq -0x3e0(%rbp), %rax
movq -0x410(%rbp), %rsi
movq 0xa8(%rax), %rdx
addq $0x70, %rdx
leaq -0xf8(%rbp), %rdi
callq 0x132d0
jmp 0x10c7b
movq -0x3e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0xf8(%rbp), %rsi
callq 0x5410
leaq -0xf8(%rbp), %rdi
callq 0x56c0
leaq -0x118(%rbp), %rdi
callq 0x56c0
jmp 0x11313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x56c0
jmp 0x11506
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rsi
addq $0x70, %rsi
leaq 0x3d0c0(%rip), %rdx     # 0x4ddab
leaq -0x158(%rbp), %rdi
movq %rdi, -0x418(%rbp)
callq 0x140a0
movq -0x3e0(%rbp), %rax
movq -0x418(%rbp), %rsi
movq 0xa8(%rax), %rdx
addq $0x70, %rdx
leaq -0x138(%rbp), %rdi
callq 0x132d0
jmp 0x10d25
movq -0x3e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x138(%rbp), %rsi
callq 0x5410
leaq -0x138(%rbp), %rdi
callq 0x56c0
leaq -0x158(%rbp), %rdi
callq 0x56c0
jmp 0x11313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x56c0
jmp 0x11506
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rsi
addq $0x70, %rsi
leaq 0x3d01b(%rip), %rdx     # 0x4ddb0
leaq -0x198(%rbp), %rdi
movq %rdi, -0x420(%rbp)
callq 0x140a0
movq -0x3e0(%rbp), %rax
movq -0x420(%rbp), %rsi
movq 0xa8(%rax), %rdx
addq $0x70, %rdx
leaq -0x178(%rbp), %rdi
callq 0x132d0
jmp 0x10dcf
movq -0x3e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x178(%rbp), %rsi
callq 0x5410
leaq -0x178(%rbp), %rdi
callq 0x56c0
leaq -0x198(%rbp), %rdi
callq 0x56c0
jmp 0x11313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x56c0
jmp 0x11506
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rsi
addq $0x70, %rsi
leaq 0x3cf75(%rip), %rdx     # 0x4ddb4
leaq -0x1d8(%rbp), %rdi
movq %rdi, -0x428(%rbp)
callq 0x140a0
movq -0x3e0(%rbp), %rax
movq -0x428(%rbp), %rsi
movq 0xa8(%rax), %rdx
addq $0x70, %rdx
leaq -0x1b8(%rbp), %rdi
callq 0x132d0
jmp 0x10e79
movq -0x3e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x5410
leaq -0x1b8(%rbp), %rdi
callq 0x56c0
leaq -0x1d8(%rbp), %rdi
callq 0x56c0
jmp 0x11313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x56c0
jmp 0x11506
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rsi
addq $0x70, %rsi
leaq 0x3cecf(%rip), %rdx     # 0x4ddb8
leaq -0x218(%rbp), %rdi
movq %rdi, -0x430(%rbp)
callq 0x140a0
movq -0x3e0(%rbp), %rax
movq -0x430(%rbp), %rsi
movq 0xa8(%rax), %rdx
addq $0x70, %rdx
leaq -0x1f8(%rbp), %rdi
callq 0x132d0
jmp 0x10f23
movq -0x3e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x5410
leaq -0x1f8(%rbp), %rdi
callq 0x56c0
leaq -0x218(%rbp), %rdi
callq 0x56c0
jmp 0x11313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x56c0
jmp 0x11506
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rsi
addq $0x70, %rsi
leaq 0x3ce29(%rip), %rdx     # 0x4ddbc
leaq -0x258(%rbp), %rdi
movq %rdi, -0x438(%rbp)
callq 0x140a0
movq -0x3e0(%rbp), %rax
movq -0x438(%rbp), %rsi
movq 0xa8(%rax), %rdx
addq $0x70, %rdx
leaq -0x238(%rbp), %rdi
callq 0x132d0
jmp 0x10fcd
movq -0x3e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x238(%rbp), %rsi
callq 0x5410
leaq -0x238(%rbp), %rdi
callq 0x56c0
leaq -0x258(%rbp), %rdi
callq 0x56c0
jmp 0x11313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x56c0
jmp 0x11506
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rsi
addq $0x70, %rsi
leaq 0x3cd83(%rip), %rdx     # 0x4ddc0
leaq -0x298(%rbp), %rdi
movq %rdi, -0x440(%rbp)
callq 0x140a0
movq -0x3e0(%rbp), %rax
movq -0x440(%rbp), %rsi
movq 0xa8(%rax), %rdx
addq $0x70, %rdx
leaq -0x278(%rbp), %rdi
callq 0x132d0
jmp 0x11077
movq -0x3e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x278(%rbp), %rsi
callq 0x5410
leaq -0x278(%rbp), %rdi
callq 0x56c0
leaq -0x298(%rbp), %rdi
callq 0x56c0
jmp 0x11313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x56c0
jmp 0x11506
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rsi
addq $0x70, %rsi
leaq 0x3ccdd(%rip), %rdx     # 0x4ddc4
leaq -0x2d8(%rbp), %rdi
movq %rdi, -0x448(%rbp)
callq 0x140a0
movq -0x3e0(%rbp), %rax
movq -0x448(%rbp), %rsi
movq 0xa8(%rax), %rdx
addq $0x70, %rdx
leaq -0x2b8(%rbp), %rdi
callq 0x132d0
jmp 0x11121
movq -0x3e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x5410
leaq -0x2b8(%rbp), %rdi
callq 0x56c0
leaq -0x2d8(%rbp), %rdi
callq 0x56c0
jmp 0x11313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x56c0
jmp 0x11506
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rsi
addq $0x70, %rsi
leaq 0x3cc37(%rip), %rdx     # 0x4ddc8
leaq -0x318(%rbp), %rdi
movq %rdi, -0x450(%rbp)
callq 0x140a0
movq -0x3e0(%rbp), %rax
movq -0x450(%rbp), %rsi
movq 0xa8(%rax), %rdx
addq $0x70, %rdx
leaq -0x2f8(%rbp), %rdi
callq 0x132d0
jmp 0x111cb
movq -0x3e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x2f8(%rbp), %rsi
callq 0x5410
leaq -0x2f8(%rbp), %rdi
callq 0x56c0
leaq -0x318(%rbp), %rdi
callq 0x56c0
jmp 0x11313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x56c0
jmp 0x11506
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rsi
addq $0x70, %rsi
leaq 0x3d4ac(%rip), %rdx     # 0x4e6e7
leaq -0x378(%rbp), %rdi
movq %rdi, -0x458(%rbp)
callq 0x140a0
movq -0x3e0(%rbp), %rax
movq -0x458(%rbp), %rsi
movq 0xa8(%rax), %rdx
addq $0x70, %rdx
leaq -0x358(%rbp), %rdi
callq 0x132d0
jmp 0x11275
leaq 0x3d862(%rip), %rdx     # 0x4eade
leaq -0x338(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0x12d10
jmp 0x11291
movq -0x3e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x338(%rbp), %rsi
callq 0x5410
leaq -0x338(%rbp), %rdi
callq 0x56c0
leaq -0x358(%rbp), %rdi
callq 0x56c0
leaq -0x378(%rbp), %rdi
callq 0x56c0
jmp 0x11313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11300
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x56c0
leaq -0x378(%rbp), %rdi
callq 0x56c0
jmp 0x11506
jmp 0x11313
jmp 0x11315
jmp 0x114e6
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rax
cmpl $0x2, 0x98(%rax)
jne 0x113f0
movq -0x3e0(%rbp), %rax
movl $0x2, 0x98(%rax)
movl 0x90(%rax), %eax
movl %eax, -0x45c(%rbp)
subl $0x9, %eax
je 0x11366
jmp 0x11359
movl -0x45c(%rbp), %eax
subl $0xf, %eax
je 0x11384
jmp 0x113ad
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rdx
xorl %ecx, %ecx
subl 0x94(%rdx), %ecx
movl %ecx, 0x94(%rax)
jmp 0x113af
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rcx
cmpl $0x0, 0x94(%rcx)
setne %cl
xorb $-0x1, %cl
andb $0x1, %cl
movzbl %cl, %ecx
movl %ecx, 0x94(%rax)
jmp 0x113af
jmp 0x113af
movq -0x3e0(%rbp), %rax
movl 0x94(%rax), %esi
leaq -0x398(%rbp), %rdi
callq 0x13410
movq -0x3e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x398(%rbp), %rsi
callq 0x5410
leaq -0x398(%rbp), %rdi
callq 0x56c0
jmp 0x114e4
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x3e0(%rbp), %rdi
movq 0xa0(%rdi), %rsi
addq $0x18, %rsi
addq $0x18, %rdi
callq 0x5050
movq -0x3e0(%rbp), %rax
movl 0x90(%rax), %eax
movl %eax, -0x460(%rbp)
subl $0x9, %eax
je 0x1144c
jmp 0x1143c
movl -0x460(%rbp), %eax
subl $0xf, %eax
je 0x11496
jmp 0x114e0
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rdx
addq $0x70, %rdx
leaq -0x3b8(%rbp), %rdi
leaq 0x3d6a6(%rip), %rsi     # 0x4eb12
callq 0x12d60
movq -0x3e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x3b8(%rbp), %rsi
callq 0x5410
leaq -0x3b8(%rbp), %rdi
callq 0x56c0
jmp 0x114e2
movq -0x3e0(%rbp), %rax
movq 0xa0(%rax), %rdx
addq $0x70, %rdx
leaq -0x3d8(%rbp), %rdi
leaq 0x3c916(%rip), %rsi     # 0x4ddcc
callq 0x12d60
movq -0x3e0(%rbp), %rdi
addq $0x70, %rdi
leaq -0x3d8(%rbp), %rsi
callq 0x5410
leaq -0x3d8(%rbp), %rdi
callq 0x56c0
jmp 0x114e2
jmp 0x114e2
jmp 0x114e4
jmp 0x114e6
movq -0x3e0(%rbp), %rdi
addq $0x50, %rdi
leaq 0x3c8d6(%rip), %rsi     # 0x4ddce
callq 0x54b0
addq $0x460, %rsp            # imm = 0x460
popq %rbp
retq
movq -0x90(%rbp), %rdi
callq 0x5610
nopw %cs:(%rax,%rax)