// File: /workspace/github_cpp_makefile_star2_O1/RuiDGPires[P]CrimLang/src/generator.cpp
// Function: gc_Tracker::factor(crl::Node*, std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char>>&)
u32 _gc_Tracker::factor(crl::Node *node, std::stringstream &stream){
	u32 reg;

//	ASSERT(node->type == crl::Node::Type::FACTOR, "Factor needs to be factor " + std::to_string(node->type));

	if (node->get_child(0)->type == crl::Node::Type::LEAF){
		reg = this->reg_tracker.alloc();
		std::string reg_name = reg_tracker.reg_name(reg);

		crl::Token t = get_token(node->get_child(0));
		switch (t.type){
			case crl::Token::Type::IDENT:
				if (this->symb_tracker.has_local(t.str)){
					std::pair<u32, bool> p = symb_tracker.get_local(t.str);
					stream <<
						"LOAD " << reg_name << " m[RF][-" << p.first << "]\n";
					if (p.second)
						stream <<
							"LOAD " << reg_name << " m[" << reg_name << "]\n";

				}else{
					stream <<
						"MVI " << reg_name << " " << symb_tracker.get_global(t.str) << "\n" <<
						"LOAD " << reg_name << " m[" << reg_name << "]\n";
				}
				break;
			case crl::Token::Type::INT:
				stream <<
					"MVI " << reg_name << " " << t.str << "\n";
				break;
			case crl::Token::Type::CHAR:
				stream <<
					"MVI " << reg_name << " '" << t.str << "'\n'";
				break;
			default:
				ASSERT(false, "Factor not implemented");
				break;
		}
		
	}else if (node->get_child(0)->type == crl::Node::Type::VECTOR){
		reg = this->reg_tracker.alloc();
		std::string reg_name = reg_tracker.reg_name(reg);

		crl::Token t = get_token(node->get_child(0)->get_child(0));
		u32 offset = atoi(get_token(node->get_child(0)->get_child(1)).str.c_str());
		if (this->symb_tracker.has_local(t.str)){
			std::pair<u32, bool> p = symb_tracker.get_local(t.str);
			if (p.second)
				stream <<
					"LOAD " << reg_name << " m[RF][-" << p.first << "]\n" << 
					"LOAD " << reg_name << " m[" << reg_name << "][-" << offset << "]\n";
			else
				stream <<
					"LOAD " << reg_name << " m[RF][-" << p.first + offset << "]\n";
		}else
			stream <<
				"MVI " << reg_name << " " << symb_tracker.get_global(t.str) << "\n" <<
				"LOAD " << reg_name << " m[" << reg_name << "][-" << offset << "]\n";

	}else if (node->get_child(0)->type == crl::Node::Type::EXPRESSION)
		reg =  this->expression_reg(node->get_child(0), stream);
	else if (node->get_child(0)->type == crl::Node::Type::CAST)
		if (node->get_child(0)->get_child(0)->type == crl::Node::Type::EXPRESSION)
			reg = this->expression_reg(node->get_child(0)->get_child(0), stream);
		else
			reg = this->factor(node->get_child(0), stream);
	else if (node->get_child(0)->type == crl::Node::Type::CALL){
		this->func_call(node->get_child(0), stream);
		reg = this->reg_tracker.alloc();	
		stream << "POP " << reg_tracker.reg_name(reg) << "\n"; // TODO Size larger than 1
	}else if (node->get_child(0)->type == crl::Node::Type::INC || node->get_child(0)->type == crl::Node::Type::DEC){
		reg = unary_reg(node->get_child(0)); 
	}else ASSERT(false, "Not implemented");
	
	return reg;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x188, %rsp            # imm = 0x188
movq %rdx, %r14
movq %rsi, %r12
movq %rdi, %r15
movq (%r12), %rax
movq %r12, %rdi
xorl %esi, %esi
callq *0x18(%rax)
cmpl $0x10, 0x8(%rax)
je 0x576a
movq (%r12), %rax
movq %r12, %rdi
xorl %esi, %esi
callq *0x18(%rax)
cmpl $0x19, 0x8(%rax)
je 0x5852
movq (%r12), %rax
movq %r12, %rdi
xorl %esi, %esi
callq *0x18(%rax)
movl 0x8(%rax), %ebx
movq (%r12), %rax
movq %r12, %rdi
xorl %esi, %esi
callq *0x18(%rax)
cmpl $0xd, %ebx
je 0x574b
movl 0x8(%rax), %ebx
movq (%r12), %rax
movq %r12, %rdi
xorl %esi, %esi
callq *0x18(%rax)
cmpl $0x15, %ebx
jne 0x5a3d
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movl 0x8(%rax), %ebx
movq (%r12), %rax
movq %r12, %rdi
xorl %esi, %esi
callq *0x18(%rax)
movq %rax, %r12
cmpl $0xd, %ebx
jne 0x56b5
movq (%r12), %rax
movq %r12, %rdi
xorl %esi, %esi
callq *0x18(%rax)
movq %r15, %rdi
movq %rax, %rsi
movq %r14, %rdx
addq $0x188, %rsp            # imm = 0x188
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x6344
leaq 0x500(%r15), %r13
movq %r13, %rdi
callq 0xdc9a
movl %eax, %ebx
leaq -0xb0(%rbp), %rdi
movq %r13, %rsi
movl %eax, %edx
callq 0xdde4
movq (%r12), %rax
movq %r12, %rdi
xorl %esi, %esi
callq *0x18(%rax)
movq %rax, %r12
leaq -0x50(%rbp), %rax
movq %rax, -0x10(%rax)
movq 0x58(%r12), %rsi
movq 0x60(%r12), %rdx
addq %rsi, %rdx
leaq -0x60(%rbp), %rdi
callq 0x4d4a
movl 0x80(%r12), %eax
movl %eax, -0x38(%rbp)
movq 0x78(%r12), %rax
movq %rax, -0x40(%rbp)
cmpl $0x1, %eax
movl %ebx, -0x2c(%rbp)
je 0x5cf2
cmpl $0x13, %eax
je 0x5c59
cmpl $0x1b, %eax
jne 0x60c4
addq $0x10, %r14
leaq 0x15a53(%rip), %rsi     # 0x1b249
movl $0x4, %edx
movq %r14, %rdi
callq 0x3280
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
movq %r14, %rdi
callq 0x3280
movq %rax, %r14
leaq 0x15a2b(%rip), %rsi     # 0x1b24e
movl $0x2, %edx
movq %rax, %rdi
callq 0x3280
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq %r14, %rdi
callq 0x3280
movl $0x3, %r14d
leaq 0x15a04(%rip), %rsi     # 0x1b251
jmp 0x5cbb
leaq 0x500(%r15), %r13
movq %r13, %rdi
callq 0xdc9a
movl %eax, %ebx
leaq -0x80(%rbp), %rdi
movq %r13, %rsi
movl %eax, %edx
callq 0xdde4
movq (%r12), %rax
movq %r12, %rdi
xorl %esi, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movq %rax, %r13
leaq -0x50(%rbp), %rax
movq %rax, -0x10(%rax)
movq 0x58(%r13), %rsi
movq 0x60(%r13), %rdx
addq %rsi, %rdx
leaq -0x60(%rbp), %rdi
callq 0x4d4a
movl %ebx, -0x2c(%rbp)
movl 0x80(%r13), %eax
movl %eax, -0x38(%rbp)
movq 0x78(%r13), %rax
movq %rax, -0x40(%rbp)
movq (%r12), %rax
movq %r12, %rdi
xorl %esi, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
movl $0x1, %esi
callq *0x18(%rcx)
movq %rax, %r12
leaq -0xa0(%rbp), %rax
movq %rax, -0x10(%rax)
movq 0x58(%r12), %rsi
movq 0x60(%r12), %rdx
addq %rsi, %rdx
leaq -0xb0(%rbp), %rdi
callq 0x4d4a
movl 0x80(%r12), %eax
leaq -0xb0(%rbp), %r13
movl %eax, 0x28(%r13)
movq 0x78(%r12), %rax
movq %rax, 0x20(%r13)
movq (%r13), %rdi
callq 0x3350
movl %eax, -0x30(%rbp)
movq %r13, %rdi
callq 0x192b0
leaq -0x100(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
addq %rsi, %rdx
leaq -0x110(%rbp), %rdi
callq 0x4d4a
leaq 0x530(%r15), %r13
leaq -0x110(%rbp), %rsi
movq %r13, %rdi
callq 0xdea0
movl %eax, %r12d
movq -0x110(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5983
movq -0x100(%rbp), %rsi
incq %rsi
callq 0x3230
testb %r12b, %r12b
je 0x5adc
leaq -0xe0(%rbp), %r12
movq %r12, -0x10(%r12)
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
addq %rsi, %rdx
leaq -0xf0(%rbp), %rdi
callq 0x4d4a
movl -0x2c(%rbp), %ebx
addq $0x560, %r15            # imm = 0x560
leaq -0xf0(%rbp), %rsi
movq %r15, %rdi
callq 0xe94c
movq (%rax), %rax
movq 0x10(%rax), %r15
movq -0xf0(%rbp), %rdi
cmpq %r12, %rdi
je 0x59ea
movq -0xe0(%rbp), %rsi
incq %rsi
callq 0x3230
addq $0x10, %r14
btq $0x20, %r15
jb 0x5e8a
leaq 0x15840(%rip), %rsi     # 0x1b240
movl $0x5, %edx
movq %r14, %rdi
callq 0x3280
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
movq %r14, %rdi
callq 0x3280
movq %rax, %r14
leaq 0x15bb9(%rip), %rsi     # 0x1b5e0
movl $0x8, %edx
movq %rax, %rdi
callq 0x3280
addl %r15d, -0x30(%rbp)
jmp 0x5f49
movl 0x8(%rax), %ebx
movq (%r12), %rax
movq %r12, %rdi
xorl %esi, %esi
callq *0x18(%rax)
cmpl $0xc, %ebx
jne 0x5c15
movq %r15, %rdi
movq %rax, %rsi
movq %r14, %rdx
callq 0x6662
addq $0x500, %r15            # imm = 0x500
movq %r15, %rdi
callq 0xdc9a
movl %eax, %ebx
addq $0x10, %r14
leaq 0x157ed(%rip), %rsi     # 0x1b26c
movl $0x4, %edx
movq %r14, %rdi
callq 0x3280
leaq -0x60(%rbp), %r12
movq %r12, %rdi
movq %r15, %rsi
movl %ebx, %edx
callq 0xdde4
movq (%r12), %rsi
movq 0x8(%r12), %rdx
movq %r14, %rdi
callq 0x3280
leaq 0x15a2e(%rip), %rsi     # 0x1b4e3
movl $0x1, %edx
movq %rax, %rdi
callq 0x3280
leaq -0x50(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5f8a
movq -0x50(%rbp), %rsi
jmp 0x5f82
addq $0x10, %r14
leaq 0x15762(%rip), %rsi     # 0x1b249
movl $0x4, %edx
movq %r14, %rdi
callq 0x3280
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
movq %r14, %rdi
callq 0x3280
movq %rax, %r14
leaq 0x154f7(%rip), %rsi     # 0x1b005
movl $0x1, %edx
movq %rax, %rdi
callq 0x3280
leaq -0xc0(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
addq %rsi, %rdx
leaq -0xd0(%rbp), %rdi
callq 0x4d4a
leaq -0xd0(%rbp), %rsi
movq %r13, %rdi
callq 0xea96
movl (%rax), %esi
movq %r14, %rdi
callq 0x3170
movq %rax, %r14
leaq 0x15983(%rip), %rsi     # 0x1b4e3
movl $0x1, %edx
movq %rax, %rdi
callq 0x3280
leaq 0x156cc(%rip), %rsi     # 0x1b240
movl $0x5, %edx
movq %r14, %rdi
callq 0x3280
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
movq %r14, %rdi
callq 0x3280
movq %rax, %r14
leaq 0x15a39(%rip), %rsi     # 0x1b5d4
movl $0x3, %edx
movq %rax, %rdi
callq 0x3280
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
movq %r14, %rdi
callq 0x3280
movq %rax, %r14
leaq 0x15a23(%rip), %rsi     # 0x1b5e5
movl $0x3, %edx
movq %rax, %rdi
callq 0x3280
movl -0x30(%rbp), %esi
movq %r14, %rdi
callq 0x3170
leaq 0x15665(%rip), %rsi     # 0x1b246
movl $0x2, %edx
movq %rax, %rdi
callq 0x3280
movq -0xd0(%rbp), %rdi
cmpq %r15, %rdi
movl -0x2c(%rbp), %ebx
je 0x5f68
movq -0xc0(%rbp), %rsi
incq %rsi
callq 0x3230
jmp 0x5f68
cmpl $0x13, 0x8(%rax)
je 0x5c31
movq (%r12), %rax
movq %r12, %rdi
xorl %esi, %esi
callq *0x18(%rax)
cmpl $0x14, 0x8(%rax)
jne 0x612e
movq (%r12), %rax
movq %r12, %rdi
xorl %esi, %esi
callq *0x18(%rax)
movq %r15, %rdi
movq %rax, %rsi
addq $0x188, %rsp            # imm = 0x188
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x6cb6
addq $0x10, %r14
leaq 0x155e5(%rip), %rsi     # 0x1b249
movl $0x4, %edx
movq %r14, %rdi
callq 0x3280
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
movq %r14, %rdi
callq 0x3280
movq %rax, %r15
leaq 0x15374(%rip), %rsi     # 0x1b005
movl $0x1, %r14d
movl $0x1, %edx
movq %rax, %rdi
callq 0x3280
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
leaq 0x15828(%rip), %rsi     # 0x1b4e3
movq %rax, %rdi
movq %r14, %rdx
callq 0x3280
leaq -0x60(%rbp), %rdi
callq 0x192b0
leaq -0xa0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
movl -0x2c(%rbp), %ebx
je 0x5f8a
movq -0xa0(%rbp), %rsi
jmp 0x5f82
leaq -0x160(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
addq %rsi, %rdx
leaq -0x170(%rbp), %rdi
callq 0x4d4a
leaq 0x530(%r15), %r12
leaq -0x170(%rbp), %rsi
movq %r12, %rdi
callq 0xdea0
movl %eax, %r13d
movq -0x170(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5d48
movq -0x160(%rbp), %rsi
incq %rsi
callq 0x3230
testb %r13b, %r13b
je 0x5f9e
leaq -0x140(%rbp), %r13
movq %r13, -0x10(%r13)
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
addq %rsi, %rdx
leaq -0x150(%rbp), %rdi
callq 0x4d4a
addq $0x560, %r15            # imm = 0x560
leaq -0x150(%rbp), %rsi
movq %r15, %rdi
callq 0xe94c
movq (%rax), %rax
movq 0x10(%rax), %r12
movq -0x150(%rbp), %rdi
cmpq %r13, %rdi
je 0x5dab
movq -0x140(%rbp), %rsi
incq %rsi
callq 0x3230
addq $0x10, %r14
leaq 0x1548a(%rip), %rsi     # 0x1b240
movl $0x5, %edx
movq %r14, %rdi
callq 0x3280
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
movq %r14, %rdi
callq 0x3280
movq %rax, %r15
leaq 0x157fd(%rip), %rsi     # 0x1b5e0
movl $0x8, %edx
movq %rax, %rdi
callq 0x3280
movl %r12d, %esi
movq %r15, %rdi
callq 0x3170
leaq 0x15444(%rip), %rsi     # 0x1b246
movl $0x2, %edx
movq %rax, %rdi
callq 0x3280
btq $0x20, %r12
jae 0x5cc6
leaq 0x1541f(%rip), %rsi     # 0x1b240
movl $0x5, %edx
movq %r14, %rdi
callq 0x3280
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
movq %r14, %rdi
callq 0x3280
movq %rax, %r14
leaq 0x15786(%rip), %rsi     # 0x1b5d4
movl $0x3, %edx
movq %rax, %rdi
callq 0x3280
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
movq %r14, %rdi
callq 0x3280
leaq 0x153ce(%rip), %rsi     # 0x1b246
movl $0x2, %edx
movq %rax, %rdi
callq 0x3280
jmp 0x5cc6
leaq 0x153af(%rip), %rsi     # 0x1b240
movl $0x5, %edx
movq %r14, %rdi
callq 0x3280
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
movq %r14, %rdi
callq 0x3280
movq %rax, %r14
leaq 0x15728(%rip), %rsi     # 0x1b5e0
movl $0x8, %edx
movq %rax, %rdi
callq 0x3280
movl %r15d, %esi
movq %r14, %rdi
callq 0x3170
movq %rax, %r14
leaq 0x1536c(%rip), %rsi     # 0x1b246
movl $0x2, %edx
movq %rax, %rdi
callq 0x3280
leaq 0x15352(%rip), %rsi     # 0x1b240
movl $0x5, %edx
movq %r14, %rdi
callq 0x3280
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
movq %r14, %rdi
callq 0x3280
movq %rax, %r14
leaq 0x156bf(%rip), %rsi     # 0x1b5d4
movl $0x3, %edx
movq %rax, %rdi
callq 0x3280
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
movq %r14, %rdi
callq 0x3280
movq %rax, %r14
leaq 0x156a9(%rip), %rsi     # 0x1b5e5
movl $0x3, %edx
movq %rax, %rdi
callq 0x3280
movl -0x30(%rbp), %esi
movq %r14, %rdi
callq 0x3170
leaq 0x152eb(%rip), %rsi     # 0x1b246
movl $0x2, %edx
movq %rax, %rdi
callq 0x3280
leaq -0x60(%rbp), %rdi
callq 0x192b0
leaq -0x70(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5f8a
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3230
movl %ebx, %eax
addq $0x188, %rsp            # imm = 0x188
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
addq $0x10, %r14
leaq 0x152a0(%rip), %rsi     # 0x1b249
movl $0x4, %edx
movq %r14, %rdi
callq 0x3280
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
movq %r14, %rdi
callq 0x3280
movq %rax, %r14
leaq 0x1502f(%rip), %rsi     # 0x1b005
movl $0x1, %edx
movq %rax, %rdi
callq 0x3280
leaq -0x120(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
addq %rsi, %rdx
leaq -0x130(%rbp), %rdi
callq 0x4d4a
leaq -0x130(%rbp), %rsi
movq %r12, %rdi
callq 0xea96
movl (%rax), %esi
movq %r14, %rdi
callq 0x3170
movq %rax, %r14
leaq 0x154bb(%rip), %rsi     # 0x1b4e3
movl $0x1, %edx
movq %rax, %rdi
callq 0x3280
leaq 0x15204(%rip), %rsi     # 0x1b240
movl $0x5, %edx
movq %r14, %rdi
callq 0x3280
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
movq %r14, %rdi
callq 0x3280
movq %rax, %r14
leaq 0x1556b(%rip), %rsi     # 0x1b5d4
movl $0x3, %edx
movq %rax, %rdi
callq 0x3280
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
movq %r14, %rdi
callq 0x3280
leaq 0x151b3(%rip), %rsi     # 0x1b246
movl $0x2, %edx
movq %rax, %rdi
callq 0x3280
movq -0x130(%rbp), %rdi
cmpq %r15, %rdi
je 0x5cc6
movq -0x120(%rbp), %rsi
incq %rsi
callq 0x3230
jmp 0x5cc6
movl $0x50, %edi
callq 0x3120
movq %rax, %rbx
leaq -0x1a0(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x15171(%rip), %rsi     # 0x1b255
leaq 0x15180(%rip), %rdx     # 0x1b26b
leaq -0x1b0(%rbp), %rdi
callq 0x433a
movb $0x1, %r15b
leaq -0x1b0(%rbp), %rcx
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5470
xorl %r15d, %r15d
leaq 0x1cc5b(%rip), %rsi     # 0x22d78
leaq -0xb3e(%rip), %rdx      # 0x55e6
movq %rbx, %rdi
callq 0x33d0
jmp 0x6196
movl $0x50, %edi
callq 0x3120
movq %rax, %rbx
leaq -0x180(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x15123(%rip), %rsi     # 0x1b271
leaq 0x1512b(%rip), %rdx     # 0x1b280
leaq -0x190(%rbp), %rdi
callq 0x433a
movb $0x1, %r15b
leaq -0x190(%rbp), %rcx
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5470
xorl %r15d, %r15d
leaq 0x1cbf1(%rip), %rsi     # 0x22d78
leaq -0xba8(%rip), %rdx      # 0x55e6
movq %rbx, %rdi
callq 0x33d0
movq %rax, %r14
movq -0x190(%rbp), %rdi
cmpq %r12, %rdi
je 0x61bc
movq -0x180(%rbp), %rsi
incq %rsi
callq 0x3230
jmp 0x61bc
movq %rax, %r14
movb $0x1, %r15b
testb %r15b, %r15b
je 0x633b
movq %rbx, %rdi
callq 0x31a0
jmp 0x633b
movq %rax, %r14
movq -0x150(%rbp), %rdi
cmpq %r13, %rdi
je 0x62d4
movq -0x140(%rbp), %rsi
jmp 0x62b7
movq %rax, %r14
movq -0x1b0(%rbp), %rdi
cmpq %r12, %rdi
je 0x6217
movq -0x1a0(%rbp), %rsi
incq %rsi
callq 0x3230
jmp 0x6217
movq %rax, %r14
movb $0x1, %r15b
testb %r15b, %r15b
je 0x62d4
movq %rbx, %rdi
callq 0x31a0
jmp 0x62d4
movq %rax, %r14
movq -0x170(%rbp), %rdi
cmpq %rbx, %rdi
je 0x62d4
movq -0x160(%rbp), %rsi
jmp 0x62b7
movq %rax, %r14
movq -0xf0(%rbp), %rdi
cmpq %r12, %rdi
je 0x6319
movq -0xe0(%rbp), %rsi
jmp 0x6311
movq %rax, %r14
leaq -0x50(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x633b
movq -0x50(%rbp), %rsi
jmp 0x6333
movq %rax, %r14
movq -0x110(%rbp), %rdi
cmpq %rbx, %rdi
je 0x6319
movq -0x100(%rbp), %rsi
jmp 0x6311
movq %rax, %r14
movq -0x130(%rbp), %rdi
cmpq %r15, %rdi
je 0x62d4
movq -0x120(%rbp), %rsi
incq %rsi
callq 0x3230
jmp 0x62d4
jmp 0x62d1
movq %rax, %r14
jmp 0x62dd
jmp 0x62f6
jmp 0x62f6
movq %rax, %r14
jmp 0x6322
movq %rax, %r14
leaq -0x60(%rbp), %rdi
callq 0x192b0
leaq -0xa0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x633b
movq -0xa0(%rbp), %rsi
jmp 0x6333
movq %rax, %r14
jmp 0x6319
movq %rax, %r14
movq -0xd0(%rbp), %rdi
cmpq %r15, %rdi
je 0x6319
movq -0xc0(%rbp), %rsi
incq %rsi
callq 0x3230
leaq -0x60(%rbp), %rdi
callq 0x192b0
leaq -0x70(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x633b
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3230
movq %r14, %rdi
callq 0x33f0
nop