// File: /workspace/github_cpp_makefile_star2_O1/RuiDGPires[P]CrimLang/src/semantic_analiser.cpp
// Function: sc_Tracker::statement(crl::Node*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void _sc_Tracker::statement(crl::Node *node, std::string annotation){
	switch(node->type){
		case crl::Node::Type::NONE:
			break;
		case crl::Node::Type::CALL:
			node->annotation = "void";
			this->func_call(node, "void");
			break;
		case crl::Node::Type::BREAK:
			ASSERT(this->can_break, "Invalid break/continue");
			break;
		case crl::Node::Type::RETURN:
			this->func_returns = true;
			if (annotation != "void"){
				ASSERT(node->children.size() == 1, "Non-void functions must return a value");
				ASSERT(node->get_child(0)->type == crl::Node::Type::EXPRESSION, "Can only return expressions");
				this->expression(node->get_child(0), annotation);
			}else{
				ASSERT(node->children.size() == 0, "Void functions must return no value");
				node->annotation = "void";
			}break;
		case crl::Node::Type::IF:
			{
			bool aux = this->func_returns;
			this->func_returns = false;

			this->expression(node->get_child(0), "u32");
			ASSERT(node->get_child(1)->type == crl::Node::Type::THEN, "If statements MUST have a THEN child");

			if (node->get_child(1)->get_child(0)->type == crl::Node::Type::BLOCK)
				this->block(node->get_child(1)->get_child(0), annotation);
			else
				this->statement(node->get_child(1)->get_child(0), annotation);
			
			bool then_returns = this->func_returns; // Check if then statement returns
			this->func_returns = false;

			ASSERT(node->children.size() < 4, "If statement size is too large");
			if (node->children.size() == 3){
				ASSERT(node->get_child(2)->type == crl::Node::Type::ELSE, "If statement has something that isn't an ELSE");
				if (node->get_child(2)->get_child(0)->type == crl::Node::Type::BLOCK)
					this->block(node->get_child(2)->get_child(0), annotation);
				else
					this->statement(node->get_child(2)->get_child(0), annotation);
			}else this->func_returns = false;

			bool else_returns = this->func_returns;
		
			this->func_returns = aux | (then_returns && else_returns);	 // CHECK IF FUNCTION RETURNS
			}
			break;
		case crl::Node::Type::WHILE:
			this->can_break = true; // TODO: fix
			this->expression(node->get_child(0), "u32");
			if (node->get_child(1)->get_child(0)->type == crl::Node::Type::BLOCK)
				this->block(node->get_child(1)->get_child(0), annotation);
			else
				this->statement(node->get_child(1)->get_child(0), annotation);

			this->can_break = false;
			break;
		case crl::Node::Type::FOR:

			break;
		case crl::Node::Type::ASSIGN:
			{
				Context::Item item;
				if (node->get_child(0)->type == crl::Node::Type::VECTOR){
					item = this->context->seek(get_token(node->get_child(0)->get_child(0)).str);
					ASSERT(item._is_vector, "Var needs to be vector to be assigned with an offset");
				}else 
					item = this->context->seek(get_token(node->get_child(0)).str);
				ASSERT(item.type == Context::Item::Type::VAR, "Can only assign values to variables");
				ASSERT(item._mutable, "Can only assign mutable variables");
				if (node->get_child(1)->type == crl::Node::EXPRESSION)
					this->expression(node->get_child(1), item.subtype);
			}
			break;
		case crl::Node::Type::INIT:
			this->var_declaration(node);
			break;
		case crl::Node::Type::INC:
		case crl::Node::Type::DEC:
			this->unary(node);
			break;
		default:
			throw crl::AssertionError(-1, -1, "Unkown node type");
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x418, %rsp            # imm = 0x418
movl 0x8(%rsi), %eax
cmpq $0x17, %rax
ja 0x16941
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x59f1(%rip), %rcx      # 0x1b838
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbx, %rdi
movq %r14, %rsi
addq $0x418, %rsp            # imm = 0x418
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1791c
movb $0x1, 0x10(%rbx)
leaq 0x5817(%rip), %rsi      # 0x1b68e
movq %r15, %rdi
callq 0x30a0
movq 0x10(%r14), %rcx
movq 0x18(%r14), %rdx
testl %eax, %eax
je 0x164bb
subq %rcx, %rdx
cmpq $0x8, %rdx
jne 0x169ae
movq (%r14), %rax
movq %r14, %rdi
xorl %esi, %esi
callq *0x18(%rax)
cmpl $0xd, 0x8(%rax)
jne 0x16a1b
movq (%r14), %rax
movq %r14, %rdi
xorl %esi, %esi
callq *0x18(%rax)
movq %rax, %r14
leaq -0x190(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq -0x1a0(%rbp), %r15
movq %r15, %rdi
callq 0x4d4a
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x14cca
movq -0x1a0(%rbp), %rdi
cmpq %r12, %rdi
je 0x1677b
movq -0x190(%rbp), %rsi
jmp 0x162ca
cmpb $0x0, 0x11(%rbx)
jne 0x1677b
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x350(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x5a3a(%rip), %rsi      # 0x1b972
leaq 0x5a49(%rip), %rdx      # 0x1b988
leaq -0x360(%rbp), %rdi
callq 0x433a
movb $0x1, %r15b
leaq -0x360(%rbp), %rcx
movq %r14, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5470
xorl %r15d, %r15d
leaq 0xce07(%rip), %rsi      # 0x22d78
leaq -0x10992(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x16bc7
movb 0x10(%rbx), %al
movb %al, -0x29(%rbp)
movb $0x0, 0x10(%rbx)
movq (%r14), %rax
movq %r14, %rdi
xorl %esi, %esi
callq *0x18(%rax)
movq %rax, %r12
leaq -0xd0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x56e4(%rip), %rsi      # 0x1b693
leaq 0x56e0(%rip), %rdx      # 0x1b696
leaq -0xe0(%rbp), %r13
movq %r13, %rdi
callq 0x433a
movq %rbx, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x14cca
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0x15ff5
movq -0xd0(%rbp), %rsi
incq %rsi
callq 0x3230
movq (%r14), %rax
movq %r14, %rdi
movl $0x1, %esi
callq *0x18(%rax)
cmpl $0x8, 0x8(%rax)
jne 0x1678d
movq (%r14), %rax
movq %r14, %rdi
movl $0x1, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movl 0x8(%rax), %r13d
movq (%r14), %rax
movq %r14, %rdi
movl $0x1, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movq %rax, %r12
cmpl $0x5, %r13d
jne 0x16392
leaq -0x170(%rbp), %r13
movq %r13, -0x10(%r13)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq -0x180(%rbp), %rdi
callq 0x4d4a
movq %rbx, %rdi
movq %r12, %rsi
leaq -0x180(%rbp), %rdx
callq 0x147d2
movq -0x180(%rbp), %rdi
jmp 0x163cc
movb $0x1, 0x11(%rbx)
movq (%r14), %rax
movq %r14, %rdi
xorl %esi, %esi
callq *0x18(%rax)
movq %rax, %r12
leaq -0xb0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x55e0(%rip), %rsi      # 0x1b693
leaq 0x55dc(%rip), %rdx      # 0x1b696
leaq -0xc0(%rbp), %r13
movq %r13, %rdi
callq 0x433a
movq %rbx, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x14cca
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x160f9
movq -0xb0(%rbp), %rsi
incq %rsi
callq 0x3230
movq (%r14), %rax
movq %r14, %rdi
movl $0x1, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movl 0x8(%rax), %r12d
movq (%r14), %rax
movq %r14, %rdi
movl $0x1, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movq %rax, %r14
cmpl $0x5, %r12d
jne 0x162d7
leaq -0x270(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq -0x280(%rbp), %r15
movq %r15, %rdi
callq 0x4d4a
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x147d2
movq -0x280(%rbp), %rdi
jmp 0x16311
movq %rbx, %rdi
movq %r14, %rsi
addq $0x418, %rsp            # imm = 0x418
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x148c2
leaq -0x3b8(%rbp), %rax
movq %rax, -0x10(%rax)
xorl %ecx, %ecx
movq %rcx, -0x8(%rax)
movb %cl, (%rax)
leaq -0x398(%rbp), %rax
movq %rax, -0x10(%rax)
movq %rcx, -0x8(%rax)
movb %cl, (%rax)
movb %cl, 0x10(%rax)
movl %ecx, 0x14(%rax)
movb %cl, 0x18(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rax)
movq %rcx, 0x30(%rax)
movl %ecx, -0x38(%rax)
movq (%r14), %rax
movq %r14, %rdi
xorl %esi, %esi
callq *0x18(%rax)
cmpl $0x19, 0x8(%rax)
jne 0x1632b
movq 0x8(%rbx), %r15
movq (%r14), %rax
movq %r14, %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), %r12
movq %r12, -0x10(%r12)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
leaq -0x60(%rbp), %rdi
callq 0x4d4a
movl 0x80(%r13), %eax
movl %eax, -0x38(%rbp)
movq 0x78(%r13), %rax
movq %rax, -0x40(%rbp)
leaq -0x90(%rbp), %r13
movq %r13, -0x10(%r13)
movq -0x60(%rbp), %rax
cmpq %r12, %rax
je 0x16612
movq %rax, -0xa0(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x90(%rbp)
jmp 0x1661c
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x541d(%rip), %r15      # 0x1b68e
movl $0x4, %r8d
xorl %esi, %esi
movq %r15, %rcx
callq 0x3340
leaq -0x1b0(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x53ff(%rip), %rdx      # 0x1b692
leaq -0x1c0(%rbp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x433a
movq %rbx, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x16f54
movq -0x1c0(%rbp), %rdi
cmpq %r13, %rdi
je 0x1677b
movq -0x1b0(%rbp), %rsi
incq %rsi
callq 0x3230
jmp 0x1677b
leaq -0x250(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq -0x260(%rbp), %r15
movq %r15, %rdi
callq 0x4d4a
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x15e16
movq -0x260(%rbp), %rdi
cmpq %r12, %rdi
je 0x16322
movq (%r12), %rsi
incq %rsi
callq 0x3230
movb $0x0, 0x11(%rbx)
jmp 0x1677b
movq 0x8(%rbx), %r15
movq (%r14), %rax
movq %r14, %rdi
xorl %esi, %esi
callq *0x18(%rax)
movq %rax, %r13
leaq -0x50(%rbp), %r12
movq %r12, -0x10(%r12)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
leaq -0x60(%rbp), %rdi
callq 0x4d4a
movl 0x80(%r13), %eax
movl %eax, -0x38(%rbp)
movq 0x78(%r13), %rax
movq %rax, -0x40(%rbp)
leaq -0x70(%rbp), %r13
movq %r13, -0x10(%r13)
movq -0x60(%rbp), %rax
cmpq %r12, %rax
je 0x1655a
movq %rax, -0x80(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x70(%rbp)
jmp 0x16564
leaq -0x150(%rbp), %r13
movq %r13, -0x10(%r13)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq -0x160(%rbp), %rdi
callq 0x4d4a
movq %rbx, %rdi
movq %r12, %rsi
leaq -0x160(%rbp), %rdx
callq 0x15e16
movq -0x160(%rbp), %rdi
cmpq %r13, %rdi
je 0x163dd
movq (%r13), %rsi
incq %rsi
callq 0x3230
movb 0x10(%rbx), %r12b
movb $0x0, 0x10(%rbx)
movq 0x18(%r14), %rax
subq 0x10(%r14), %rax
cmpq $0x20, %rax
jae 0x167fa
cmpq $0x18, %rax
jne 0x164ae
movq (%r14), %rax
movq %r14, %rdi
movl $0x2, %esi
callq *0x18(%rax)
cmpl $0x9, 0x8(%rax)
jne 0x16a88
movq (%r14), %rax
movq %r14, %rdi
movl $0x2, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movl 0x8(%rax), %r13d
movq (%r14), %rax
movq %r14, %rdi
movl $0x2, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movq %rax, %r14
cmpl $0x5, %r13d
jne 0x164f4
leaq -0x130(%rbp), %r13
movq %r13, -0x10(%r13)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq -0x140(%rbp), %r15
movq %r15, %rdi
callq 0x4d4a
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x147d2
movq -0x140(%rbp), %rdi
cmpq %r13, %rdi
movb -0x29(%rbp), %r14b
je 0x16545
movq -0x130(%rbp), %rsi
jmp 0x1653d
movb $0x0, 0x10(%rbx)
movb -0x29(%rbp), %r14b
jmp 0x16545
cmpq %rcx, %rdx
jne 0x16b5f
movq 0x38(%r14), %rdx
addq $0x30, %r14
leaq 0x51bb(%rip), %rcx      # 0x1b68e
movl $0x4, %r8d
movq %r14, %rdi
xorl %esi, %esi
addq $0x418, %rsp            # imm = 0x418
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3340
leaq -0x110(%rbp), %r13
movq %r13, -0x10(%r13)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq -0x120(%rbp), %r15
movq %r15, %rdi
callq 0x4d4a
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x15e16
movq -0x120(%rbp), %rdi
cmpq %r13, %rdi
movb -0x29(%rbp), %r14b
je 0x16545
movq -0x110(%rbp), %rsi
incq %rsi
callq 0x3230
xorl %eax, %eax
testb %r12b, %r12b
je 0x1654f
movl 0x10(%rbx), %eax
orb %r14b, %al
movb %al, 0x10(%rbx)
jmp 0x1677b
movups (%r12), %xmm0
movups %xmm0, (%r13)
movq -0x58(%rbp), %rax
leaq -0x80(%rbp), %rdx
movq %rax, 0x8(%rdx)
movq %r12, -0x60(%rbp)
movq $0x0, -0x58(%rbp)
movb $0x0, -0x50(%rbp)
leaq -0x440(%rbp), %rdi
movq %r15, %rsi
callq 0x442e
leaq -0x438(%rbp), %rsi
movl -0x8(%rsi), %eax
movl %eax, -0x3d0(%rbp)
leaq -0x3c8(%rbp), %r15
movq %r15, %rdi
callq 0x3150
leaq -0x418(%rbp), %rsi
leaq -0x3a8(%rbp), %rdi
callq 0x3150
leaq -0x3e8(%rbp), %rsi
movb -0x8(%rsi), %al
movb %al, 0x48(%r15)
movq -0x10(%rsi), %rax
movq %rax, 0x40(%r15)
leaq -0x378(%rbp), %rdi
callq 0x18894
leaq -0x440(%rbp), %rdi
callq 0x4816
movq -0x80(%rbp), %rdi
cmpq %r13, %rdi
je 0x16604
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3230
leaq -0x60(%rbp), %rdi
callq 0x192b0
jmp 0x166db
movups (%r12), %xmm0
movups %xmm0, (%r13)
movq -0x58(%rbp), %rax
leaq -0xa0(%rbp), %rdx
movq %rax, 0x8(%rdx)
movq %r12, -0x60(%rbp)
movq $0x0, -0x58(%rbp)
movb $0x0, -0x50(%rbp)
leaq -0x440(%rbp), %rdi
movq %r15, %rsi
callq 0x442e
leaq -0x438(%rbp), %rsi
movl -0x8(%rsi), %eax
movl %eax, -0x3d0(%rbp)
leaq -0x3c8(%rbp), %r15
movq %r15, %rdi
callq 0x3150
leaq -0x418(%rbp), %rsi
leaq -0x3a8(%rbp), %rdi
callq 0x3150
leaq -0x3e8(%rbp), %rsi
movb -0x8(%rsi), %al
movb %al, 0x48(%r15)
movq -0x10(%rsi), %rax
movq %rax, 0x40(%r15)
leaq -0x378(%rbp), %rdi
callq 0x18894
leaq -0x440(%rbp), %rdi
callq 0x4816
movq -0xa0(%rbp), %rdi
cmpq %r13, %rdi
je 0x166c5
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x3230
leaq -0x60(%rbp), %rdi
callq 0x192b0
cmpb $0x0, -0x388(%rbp)
je 0x16af5
cmpl $0x3, -0x3d0(%rbp)
jne 0x16867
cmpb $0x0, -0x380(%rbp)
je 0x168d4
movq (%r14), %rax
movq %r14, %rdi
movl $0x1, %esi
callq *0x18(%rax)
cmpl $0xd, 0x8(%rax)
jne 0x1676f
movq (%r14), %rax
movq %r14, %rdi
movl $0x1, %esi
callq *0x18(%rax)
movq %rax, %r14
leaq -0xf0(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x3a8(%rbp), %rsi
movq -0x3a0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x100(%rbp), %rdi
callq 0x4d4a
leaq -0x100(%rbp), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x14cca
movq -0x100(%rbp), %rdi
cmpq %r15, %rdi
je 0x1676f
movq -0xf0(%rbp), %rsi
incq %rsi
callq 0x3230
leaq -0x3d0(%rbp), %rdi
callq 0x4816
addq $0x418, %rsp            # imm = 0x418
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x2d0(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x5243(%rip), %rsi      # 0x1b9f0
leaq 0x5260(%rip), %rdx      # 0x1ba14
leaq -0x2e0(%rbp), %rdi
callq 0x433a
movb $0x1, %r15b
leaq -0x2e0(%rbp), %rcx
movq %r14, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5470
xorl %r15d, %r15d
leaq 0xc592(%rip), %rsi      # 0x22d78
leaq -0x11207(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x16bc7
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x2b0(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x51fb(%rip), %rsi      # 0x1ba15
leaq 0x5212(%rip), %rdx      # 0x1ba33
leaq -0x2c0(%rbp), %rdi
callq 0x433a
movb $0x1, %r15b
leaq -0x2c0(%rbp), %rcx
movq %r14, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5470
xorl %r15d, %r15d
leaq 0xc525(%rip), %rsi      # 0x22d78
leaq -0x11274(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x16bc7
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x210(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x5210(%rip), %rsi      # 0x1ba97
leaq 0x522c(%rip), %rdx      # 0x1baba
leaq -0x220(%rbp), %rdi
callq 0x433a
movb $0x1, %r15b
leaq -0x220(%rbp), %rcx
movq %r14, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5470
xorl %r15d, %r15d
leaq 0xc4b8(%rip), %rsi      # 0x22d78
leaq -0x112e1(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x16bc7
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x1f0(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x51c7(%rip), %rsi      # 0x1babb
leaq 0x51e1(%rip), %rdx      # 0x1badc
leaq -0x200(%rbp), %rdi
callq 0x433a
movb $0x1, %r15b
leaq -0x200(%rbp), %rcx
movq %r14, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5470
xorl %r15d, %r15d
leaq 0xc44b(%rip), %rsi      # 0x22d78
leaq -0x1134e(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x16bc7
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x1d0(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x517c(%rip), %rsi      # 0x1badd
leaq 0x5185(%rip), %rdx      # 0x1baed
leaq -0x1e0(%rbp), %rdi
callq 0x433a
movb $0x1, %r15b
leaq -0x1e0(%rbp), %rcx
movq %r14, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5470
xorl %r15d, %r15d
leaq 0xc3de(%rip), %rsi      # 0x22d78
leaq -0x113bb(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x16bc7
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x330(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x4fbb(%rip), %rsi      # 0x1b989
leaq 0x4fda(%rip), %rdx      # 0x1b9af
leaq -0x340(%rbp), %rdi
callq 0x433a
movb $0x1, %r15b
leaq -0x340(%rbp), %rcx
movq %r14, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5470
xorl %r15d, %r15d
leaq 0xc371(%rip), %rsi      # 0x22d78
leaq -0x11428(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x16bc7
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x310(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x4f75(%rip), %rsi      # 0x1b9b0
leaq 0x4f89(%rip), %rdx      # 0x1b9cb
leaq -0x320(%rbp), %rdi
callq 0x433a
movb $0x1, %r15b
leaq -0x320(%rbp), %rcx
movq %r14, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5470
xorl %r15d, %r15d
leaq 0xc304(%rip), %rsi      # 0x22d78
leaq -0x11495(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x16bc7
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x290(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x4f8c(%rip), %rsi      # 0x1ba34
leaq 0x4fb2(%rip), %rdx      # 0x1ba61
leaq -0x2a0(%rbp), %rdi
callq 0x433a
movb $0x1, %r15b
leaq -0x2a0(%rbp), %rcx
movq %r14, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5470
xorl %r15d, %r15d
leaq 0xc297(%rip), %rsi      # 0x22d78
leaq -0x11502(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x16bc7
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x230(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x4f4d(%rip), %rsi      # 0x1ba62
leaq 0x4f7a(%rip), %rdx      # 0x1ba96
leaq -0x240(%rbp), %rdi
callq 0x433a
movb $0x1, %r15b
leaq -0x240(%rbp), %rcx
movq %r14, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5470
xorl %r15d, %r15d
leaq 0xc22a(%rip), %rsi      # 0x22d78
leaq -0x1156f(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x16bc7
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x2f0(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x4e4d(%rip), %rsi      # 0x1b9cc
leaq 0x4e69(%rip), %rdx      # 0x1b9ef
leaq -0x300(%rbp), %rdi
callq 0x433a
movb $0x1, %r15b
leaq -0x300(%rbp), %rcx
movq %r14, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5470
xorl %r15d, %r15d
leaq 0xc1c0(%rip), %rsi      # 0x22d78
leaq -0x115d9(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
movq %rax, %rbx
movq -0x300(%rbp), %rdi
cmpq %r12, %rdi
je 0x16e4a
movq -0x2f0(%rbp), %rsi
jmp 0x16e3a
jmp 0x16e44
movq %rax, %rbx
movq -0x240(%rbp), %rdi
cmpq %r12, %rdi
je 0x16d44
movq -0x230(%rbp), %rsi
jmp 0x16d34
jmp 0x16d3e
movq %rax, %rbx
movq -0x120(%rbp), %rdi
cmpq %r13, %rdi
je 0x16f4b
movq -0x110(%rbp), %rsi
jmp 0x16edd
movq %rax, %rbx
movq -0x140(%rbp), %rdi
cmpq %r13, %rdi
je 0x16f4b
movq -0x130(%rbp), %rsi
jmp 0x16edd
movq %rax, %rbx
movq -0x2a0(%rbp), %rdi
cmpq %r12, %rdi
je 0x16e4a
movq -0x290(%rbp), %rsi
jmp 0x16e3a
jmp 0x16e44
movq %rax, %rbx
movq -0x320(%rbp), %rdi
cmpq %r12, %rdi
je 0x16e4a
movq -0x310(%rbp), %rsi
jmp 0x16e3a
jmp 0x16e44
movq %rax, %rbx
movq -0x340(%rbp), %rdi
cmpq %r12, %rdi
je 0x16e4a
movq -0x330(%rbp), %rsi
jmp 0x16e3a
jmp 0x16e44
movq %rax, %rbx
movq -0x1e0(%rbp), %rdi
cmpq %r12, %rdi
je 0x16e4a
movq -0x1d0(%rbp), %rsi
jmp 0x16e3a
jmp 0x16e44
movq %rax, %rbx
movq -0x100(%rbp), %rdi
cmpq %r15, %rdi
je 0x16f3f
movq -0xf0(%rbp), %rsi
incq %rsi
callq 0x3230
jmp 0x16f3f
movq %rax, %rbx
movq -0x200(%rbp), %rdi
cmpq %r12, %rdi
je 0x16d44
movq -0x1f0(%rbp), %rsi
jmp 0x16d34
jmp 0x16d3e
movq %rax, %rbx
movq -0x220(%rbp), %rdi
cmpq %r12, %rdi
je 0x16d44
movq -0x210(%rbp), %rsi
incq %rsi
callq 0x3230
jmp 0x16d44
movq %rax, %rbx
movb $0x1, %r15b
testb %r15b, %r15b
je 0x16f3f
movq %r14, %rdi
callq 0x31a0
jmp 0x16f3f
movq %rax, %rbx
jmp 0x16ef6
movq %rax, %rbx
jmp 0x16f1a
movq %rax, %rbx
movq -0x2c0(%rbp), %rdi
cmpq %r12, %rdi
je 0x16e4a
movq -0x2b0(%rbp), %rsi
jmp 0x16e3a
jmp 0x16e44
movq %rax, %rbx
movq -0x160(%rbp), %rdi
cmpq %r13, %rdi
je 0x16f4b
movq -0x150(%rbp), %rsi
jmp 0x16edd
movq %rax, %rbx
movq -0x180(%rbp), %rdi
cmpq %r13, %rdi
je 0x16f4b
movq -0x170(%rbp), %rsi
jmp 0x16edd
movq %rax, %rbx
movq -0x2e0(%rbp), %rdi
cmpq %r12, %rdi
je 0x16e4a
movq -0x2d0(%rbp), %rsi
jmp 0x16e3a
jmp 0x16e44
movq %rax, %rbx
movq -0x260(%rbp), %rdi
cmpq %r12, %rdi
je 0x16f4b
movq -0x250(%rbp), %rsi
jmp 0x16edd
movq %rax, %rbx
movq -0x280(%rbp), %rdi
cmpq %r12, %rdi
je 0x16f4b
movq -0x270(%rbp), %rsi
jmp 0x16edd
movq %rax, %rbx
movq -0x360(%rbp), %rdi
cmpq %r12, %rdi
je 0x16e4a
movq -0x350(%rbp), %rsi
incq %rsi
callq 0x3230
jmp 0x16e4a
movq %rax, %rbx
movb $0x1, %r15b
testb %r15b, %r15b
je 0x16f4b
movq %r14, %rdi
callq 0x31a0
jmp 0x16f4b
movq %rax, %rbx
movq -0x1a0(%rbp), %rdi
cmpq %r12, %rdi
je 0x16f4b
movq -0x190(%rbp), %rsi
jmp 0x16edd
jmp 0x16f3c
movq %rax, %rbx
movq -0x1c0(%rbp), %rdi
cmpq %r13, %rdi
je 0x16f4b
movq -0x1b0(%rbp), %rsi
jmp 0x16edd
movq %rax, %rbx
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x16f4b
movq -0xb0(%rbp), %rsi
jmp 0x16edd
movq %rax, %rbx
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0x16f4b
movq -0xd0(%rbp), %rsi
incq %rsi
callq 0x3230
jmp 0x16f4b
movq %rax, %rbx
leaq -0x440(%rbp), %rdi
callq 0x4816
movq -0xa0(%rbp), %rdi
cmpq %r13, %rdi
je 0x16f2f
movq -0x90(%rbp), %rsi
jmp 0x16f27
movq %rax, %rbx
leaq -0x440(%rbp), %rdi
callq 0x4816
movq -0x80(%rbp), %rdi
cmpq %r13, %rdi
je 0x16f2f
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3230
leaq -0x60(%rbp), %rdi
callq 0x192b0
jmp 0x16f3f
jmp 0x16f3c
movq %rax, %rbx
leaq -0x3d0(%rbp), %rdi
callq 0x4816
movq %rbx, %rdi
callq 0x33f0
nop