// File: /workspace/github_cpp_makefile_star2_O2/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 0x114a5
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x4ba5(%rip), %rcx      # 0x15838
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 0x11fb8
movb $0x1, 0x10(%rbx)
leaq 0x49cb(%rip), %rsi      # 0x1568e
movq %r15, %rdi
callq 0x3c1f
movq 0x10(%r14), %rcx
movq 0x18(%r14), %rdx
testb %al, %al
je 0x11035
subq %rcx, %rdx
cmpq $0x8, %rdx
jne 0x114ff
movq (%r14), %rax
movq %r14, %rdi
xorl %esi, %esi
callq *0x18(%rax)
cmpl $0xd, 0x8(%rax)
jne 0x115b3
movq (%r14), %rax
movq %r14, %rdi
xorl %esi, %esi
callq *0x18(%rax)
movq %rax, %r14
leaq -0x320(%rbp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x32f0
movq %rbx, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x10032
leaq -0x320(%rbp), %rdi
jmp 0x1102b
cmpb $0x0, 0x11(%rbx)
jne 0x1132b
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x4c1f(%rip), %rsi      # 0x15972
leaq -0x380(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x3be4
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x380(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xd009(%rip), %rsi      # 0x1dd90
leaq -0xbe56(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x116b9
movb 0x10(%rbx), %al
movb %al, -0x2a(%rbp)
movb $0x0, 0x10(%rbx)
movq (%r14), %rax
movq %r14, %rdi
xorl %esi, %esi
callq *0x18(%rax)
movq %rax, %r12
leaq 0x48d9(%rip), %rsi      # 0x15693
leaq -0x170(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x3be4
leaq -0x170(%rbp), %rdx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10032
leaq -0x170(%rbp), %rdi
callq 0x3110
movq (%r14), %rax
pushq $0x1
popq %rsi
movq %r14, %rdi
callq *0x18(%rax)
cmpl $0x8, 0x8(%rax)
jne 0x1133d
movq (%r14), %rax
pushq $0x1
popq %r13
movq %r14, %rdi
movl %r13d, %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 %r13d, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movq %rax, %r13
cmpl $0x5, %r12d
jne 0x110dc
leaq -0x440(%rbp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x32f0
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0xfcb8
jmp 0x110fc
movb $0x1, 0x11(%rbx)
movq (%r14), %rax
movq %r14, %rdi
xorl %esi, %esi
callq *0x18(%rax)
movq %rax, %r12
leaq 0x4811(%rip), %rsi      # 0x15693
leaq -0x150(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x3be4
leaq -0x150(%rbp), %rdx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10032
leaq -0x150(%rbp), %rdi
callq 0x3110
movq (%r14), %rax
pushq $0x1
popq %r12
movq %r14, %rdi
movl %r12d, %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 %r12d, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movq %rax, %r12
cmpl $0x5, %r13d
jne 0x110ab
leaq -0x3c0(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x32f0
movq %rbx, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0xfcb8
jmp 0x110cb
movq %rbx, %rdi
movq %r14, %rsi
addq $0x418, %rsp            # imm = 0x418
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xfd54
leaq -0xf8(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
xorl %ecx, %ecx
movb %cl, (%rax)
leaq -0xd8(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb %cl, (%rax)
movb %cl, 0x10(%rax)
andl $0x0, 0x14(%rax)
movb %cl, 0x18(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rax)
andq $0x0, 0x30(%rax)
andl $0x0, -0x38(%rax)
movq (%r14), %rax
movq %r14, %rdi
xorl %esi, %esi
callq *0x18(%rax)
cmpl $0x19, 0x8(%rax)
jne 0x11062
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)
addq $0x58, %rax
leaq -0x60(%rbp), %rdi
movq %rax, %rsi
callq 0xb24a
leaq -0x90(%rbp), %rcx
movq %rcx, -0x10(%rcx)
leaq -0x50(%rbp), %rax
movq -0x10(%rax), %rdx
cmpq %rax, %rdx
je 0x11241
movq %rdx, -0xa0(%rbp)
movq -0x50(%rbp), %rcx
movq %rcx, -0x90(%rbp)
jmp 0x11247
leaq 0x30(%r14), %rdi
leaq 0x469a(%rip), %r15      # 0x1568e
movq %r15, %rsi
callq 0x3450
leaq -0x190(%rbp), %rdi
leaq -0x110(%rbp), %rdx
movq %r15, %rsi
callq 0x3be4
leaq -0x190(%rbp), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x118ae
leaq -0x190(%rbp), %rdi
callq 0x3110
jmp 0x1132b
cmpq %rcx, %rdx
jne 0x11559
addq $0x30, %r14
leaq 0x4645(%rip), %rsi      # 0x1568e
movq %r14, %rdi
addq $0x418, %rsp            # imm = 0x418
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3450
movq 0x8(%rbx), %r15
movq (%r14), %rax
movq %r14, %rdi
xorl %esi, %esi
callq *0x18(%rax)
addq $0x58, %rax
leaq -0x60(%rbp), %rdi
movq %rax, %rsi
callq 0xb24a
leaq -0x70(%rbp), %rcx
movq %rcx, -0x10(%rcx)
leaq -0x50(%rbp), %rax
movq -0x10(%rax), %rdx
cmpq %rax, %rdx
je 0x111e0
movq %rdx, -0x80(%rbp)
movq -0x50(%rbp), %rcx
movq %rcx, -0x70(%rbp)
jmp 0x111e6
leaq -0x3a0(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x32f0
movq %rbx, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x10c62
movq %r14, %rdi
callq 0x3110
movb $0x0, 0x11(%rbx)
jmp 0x1132b
leaq -0x420(%rbp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x32f0
movq %rbx, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0x10c62
movq %r12, %rdi
callq 0x3110
movb 0x10(%rbx), %cl
movb $0x0, 0x10(%rbx)
movq 0x18(%r14), %rax
subq 0x10(%r14), %rax
cmpq $0x20, %rax
jae 0x11397
cmpq $0x18, %rax
jne 0x111cc
movb %cl, -0x29(%rbp)
movq (%r14), %rax
pushq $0x2
popq %rsi
movq %r14, %rdi
callq *0x18(%rax)
cmpl $0x9, 0x8(%rax)
jne 0x1160d
movq (%r14), %rax
pushq $0x2
popq %r12
movq %r14, %rdi
movl %r12d, %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 %r12d, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movq %rax, %r12
cmpl $0x5, %r13d
jne 0x111a1
leaq -0x400(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x32f0
movq %rbx, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0xfcb8
jmp 0x111c1
leaq -0x3e0(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x32f0
movq %rbx, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x10c62
movq %r14, %rdi
callq 0x3110
movb -0x29(%rbp), %cl
xorl %eax, %eax
testb %cl, %cl
je 0x111d5
movl 0x10(%rbx), %eax
orb -0x2a(%rbp), %al
movb %al, 0x10(%rbx)
jmp 0x1132b
movups (%rax), %xmm0
movups %xmm0, (%rcx)
movq -0x58(%rbp), %rcx
leaq -0x80(%rbp), %rdx
movq %rcx, 0x8(%rdx)
movq %rax, -0x60(%rbp)
andq $0x0, -0x58(%rbp)
movb $0x0, -0x50(%rbp)
leaq -0x200(%rbp), %rdi
movq %r15, %rsi
callq 0x4172
leaq -0x110(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x12b20
leaq -0x200(%rbp), %rdi
callq 0x44c8
leaq -0x80(%rbp), %rdi
callq 0x3110
leaq -0x60(%rbp), %rdi
callq 0x135f8
jmp 0x112b3
movups (%rax), %xmm0
movups %xmm0, (%rcx)
movq -0x58(%rbp), %rcx
leaq -0xa0(%rbp), %rdx
movq %rcx, 0x8(%rdx)
movq %rax, -0x60(%rbp)
andq $0x0, -0x58(%rbp)
movb $0x0, -0x50(%rbp)
leaq -0x200(%rbp), %rdi
movq %r15, %rsi
callq 0x4172
leaq -0x110(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x12b20
leaq -0x200(%rbp), %rdi
callq 0x44c8
leaq -0xa0(%rbp), %rdi
callq 0x3110
leaq -0x60(%rbp), %rdi
callq 0x135f8
cmpb $0x0, -0xc8(%rbp)
je 0x11664
cmpl $0x3, -0x110(%rbp)
jne 0x113f1
cmpb $0x0, -0xc0(%rbp)
je 0x1144b
movq (%r14), %rax
pushq $0x1
popq %rsi
movq %r14, %rdi
callq *0x18(%rax)
cmpl $0xd, 0x8(%rax)
jne 0x1131f
movq (%r14), %rax
pushq $0x1
popq %rsi
movq %r14, %rdi
callq *0x18(%rax)
movq %rax, %r14
leaq -0xe8(%rbp), %rsi
leaq -0x130(%rbp), %rdi
callq 0x32f0
leaq -0x130(%rbp), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x10032
leaq -0x130(%rbp), %rdi
callq 0x3110
leaq -0x110(%rbp), %rdi
callq 0x44c8
addq $0x418, %rsp            # imm = 0x418
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x46a1(%rip), %rsi      # 0x159f0
leaq -0x2e0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x3be4
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x2e0(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xca0d(%rip), %rsi      # 0x1dd90
leaq -0xc452(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x116b9
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x466c(%rip), %rsi      # 0x15a15
leaq -0x2c0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x3be4
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x2c0(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xc9b3(%rip), %rsi      # 0x1dd90
leaq -0xc4ac(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x116b9
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x4694(%rip), %rsi      # 0x15a97
leaq -0x260(%rbp), %rdi
leaq -0x200(%rbp), %rdx
callq 0x3be4
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x260(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xc959(%rip), %rsi      # 0x1dd90
leaq -0xc506(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x116b9
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x465e(%rip), %rsi      # 0x15abb
leaq -0x240(%rbp), %rdi
leaq -0x200(%rbp), %rdx
callq 0x3be4
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x240(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xc8ff(%rip), %rsi      # 0x1dd90
leaq -0xc560(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x116b9
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x4626(%rip), %rsi      # 0x15add
leaq -0x220(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x3be4
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x220(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xc8a5(%rip), %rsi      # 0x1dd90
leaq -0xc5ba(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x116b9
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x4478(%rip), %rsi      # 0x15989
leaq -0x360(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x3be4
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x360(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xc84b(%rip), %rsi      # 0x1dd90
leaq -0xc614(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x116b9
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x4461(%rip), %rsi      # 0x159cc
leaq -0x300(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x3be4
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x300(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xc7f1(%rip), %rsi      # 0x1dd90
leaq -0xc66e(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x116b9
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x43eb(%rip), %rsi      # 0x159b0
leaq -0x340(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x3be4
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x340(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xc797(%rip), %rsi      # 0x1dd90
leaq -0xc6c8(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x116b9
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x4415(%rip), %rsi      # 0x15a34
leaq -0x2a0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x3be4
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x2a0(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xc73d(%rip), %rsi      # 0x1dd90
leaq -0xc722(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x116b9
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x43ec(%rip), %rsi      # 0x15a62
leaq -0x280(%rbp), %rdi
leaq -0x200(%rbp), %rdx
callq 0x3be4
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x280(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xc6e6(%rip), %rsi      # 0x1dd90
leaq -0xc779(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
movq %rax, %rbx
leaq -0x280(%rbp), %rdi
jmp 0x1177b
jmp 0x1178a
movq %rax, %rbx
leaq -0x3e0(%rbp), %rdi
jmp 0x11884
movq %rax, %rbx
leaq -0x400(%rbp), %rdi
jmp 0x11884
movq %rax, %rbx
leaq -0x2a0(%rbp), %rdi
jmp 0x11847
jmp 0x11853
movq %rax, %rbx
leaq -0x340(%rbp), %rdi
jmp 0x11847
jmp 0x11853
movq %rax, %rbx
leaq -0x300(%rbp), %rdi
jmp 0x11847
jmp 0x11853
movq %rax, %rbx
leaq -0x360(%rbp), %rdi
jmp 0x11847
jmp 0x11853
movq %rax, %rbx
leaq -0x220(%rbp), %rdi
jmp 0x11847
jmp 0x11853
movq %rax, %rbx
leaq -0x130(%rbp), %rdi
callq 0x3110
jmp 0x11899
movq %rax, %rbx
leaq -0x240(%rbp), %rdi
jmp 0x1177b
jmp 0x1178a
movq %rax, %rbx
leaq -0x260(%rbp), %rdi
callq 0x3110
testb %r15b, %r15b
jne 0x1178d
jmp 0x11899
movq %rax, %rbx
movq %r14, %rdi
callq 0x31b0
jmp 0x11899
movq %rax, %rbx
leaq -0x200(%rbp), %rdi
callq 0x44c8
jmp 0x117ae
movq %rax, %rbx
leaq -0xa0(%rbp), %rdi
jmp 0x117dd
movq %rax, %rbx
leaq -0x200(%rbp), %rdi
callq 0x44c8
jmp 0x117d9
movq %rax, %rbx
leaq -0x2c0(%rbp), %rdi
jmp 0x11847
jmp 0x11853
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x3110
leaq -0x60(%rbp), %rdi
callq 0x135f8
jmp 0x11899
movq %rax, %rbx
leaq -0x420(%rbp), %rdi
jmp 0x11884
movq %rax, %rbx
leaq -0x440(%rbp), %rdi
jmp 0x11884
movq %rax, %rbx
leaq -0x2e0(%rbp), %rdi
jmp 0x11847
movq %rax, %rbx
leaq -0x3a0(%rbp), %rdi
jmp 0x11884
movq %rax, %rbx
leaq -0x3c0(%rbp), %rdi
jmp 0x11884
jmp 0x11853
movq %rax, %rbx
leaq -0x320(%rbp), %rdi
jmp 0x11884
movq %rax, %rbx
leaq -0x380(%rbp), %rdi
callq 0x3110
testb %r15b, %r15b
jne 0x11856
jmp 0x118a5
movq %rax, %rbx
movq %r14, %rdi
callq 0x31b0
jmp 0x118a5
jmp 0x11896
movq %rax, %rbx
leaq -0x190(%rbp), %rdi
jmp 0x11884
movq %rax, %rbx
leaq -0x150(%rbp), %rdi
jmp 0x11884
movq %rax, %rbx
leaq -0x170(%rbp), %rdi
callq 0x3110
jmp 0x118a5
jmp 0x1188f
jmp 0x1188f
movq %rax, %rbx
jmp 0x118a5
jmp 0x11896
movq %rax, %rbx
leaq -0x110(%rbp), %rdi
callq 0x44c8
movq %rbx, %rdi
callq 0x3410
nop