// File: /workspace/github_cpp_makefile_star2_O1/RuiDGPires[P]CrimLang/src/semantic_analiser.cpp
// Function: sc_Tracker::expression(crl::Node*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void _sc_Tracker::expression(crl::Node *node, std::string annotation){
	if (annotation == "")
		annotation = expression_get_type(node);

	node->annotation = annotation;
	size_t size = node->children.size();

	for (size_t i = 0; i < size; i++){
		switch (node->get_child(i)->type){
		case crl::Node::Type::CALL:
			node->get_child(i)->annotation = annotation;
			this->func_call(node->get_child(i), annotation);
			break;
			
		case crl::Node::Type::DEC:
		case crl::Node::Type::INC:
			if (((crl::Leaf *) node->get_child(i)->get_child(0))->token.type == crl::Token::Type::IDENT){
				Context::Item item = this->context->seek(((crl::Leaf *) node->get_child(i)->get_child(0))->token.str);
				ASSERT(item.type == Context::Item::Type::VAR && item.subtype == annotation, "Identifier has not been defined: " + item.name);
				ASSERT(item._mutable, "Variable must be mutable");
			}else ASSERT(false, "Unkown type");
			break;
		case crl::Node::Type::CAST:
			{
			ASSERT(get_token(node->get_child(i)->get_child(1)).str == annotation, "Cast type must correspond to expression type");
			std::string expr_type = expression_get_type(node->get_child(i)->get_child(0));
			ASSERT(is_castable(expr_type, annotation), expr_type + " isn't castable to " + annotation);
			if (node->get_child(i)->get_child(0)->type == crl::Node::Type::CALL){
				node->get_child(i)->get_child(0)->annotation = expr_type;
				this->func_call(node->get_child(i)->get_child(0), expr_type);
				
				break;
			}
			else
				this->expression(node->get_child(i)->get_child(0), expr_type);
			}
			break;
		case crl::Node::Type::VECTOR:
			{
				Context::Item item = this->context->seek(((crl::Leaf *) node->get_child(i)->get_child(0))->token.str);
				ASSERT(item.type == Context::Item::Type::VAR && item._is_vector && item.subtype == annotation, "Identifier has not been defined: " + item.name);
			}
			break;
		case crl::Node::Type::LEAF:
			if (((crl::Leaf *) node->get_child(i))->token.type == crl::Token::Type::IDENT){
				Context::Item item = this->context->seek(((crl::Leaf *) node->get_child(i))->token.str);
				ASSERT(item.type == Context::Item::Type::VAR && item.subtype == annotation, "Identifier has not been defined: " + item.name);
			}else if (((crl::Leaf *) node->get_child(i))->token.type == crl::Token::Type::INT){
				ASSERT(annotation == "i32" || annotation == "u32" || annotation == "char" || annotation == "i64" || annotation == "u64", "Must have integer or unsigned type");
			}else if (((crl::Leaf *) node->get_child(i))->token.type == crl::Token::Type::DEC){
				ASSERT(annotation == "f32" || annotation == "f64", "Must have float type");
			}else if (((crl::Leaf *) node->get_child(i))->token.type == crl::Token::Type::STRING){
				ASSERT(annotation == "string", "Must have string type");
			
			}else if (EXPR_OP(((crl::Leaf *) node->get_child(i))->token));
			else ASSERT(false, "Unkown type");
			break;
		case crl::Node::Type::COMPARISON:
			if (node->get_child(i)->children.size() > 1){
				this->expression(node->get_child(i), "");
				break;
			}
		default:
			this->expression(node->get_child(i), annotation);
			break;
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x318, %rsp            # imm = 0x318
movq %rdx, %r15
movq %rsi, -0x30(%rbp)
movq %rdi, %r14
leaq 0x67f5(%rip), %rsi      # 0x1b4e4
movq %rdx, %rdi
callq 0x30a0
testl %eax, %eax
movq %r15, -0x38(%rbp)
jne 0x14d43
leaq -0xd8(%rbp), %r12
movq %r12, %rdi
movq %r14, %rsi
movq -0x30(%rbp), %rdx
callq 0x17d04
movq %r15, %rdi
movq %r12, %rsi
callq 0x32b0
movq (%r12), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x14d3f
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x3230
movq -0x38(%rbp), %r15
movq %r14, -0x48(%rbp)
movq -0x30(%rbp), %rbx
leaq 0x30(%rbx), %rdi
movq %r15, %rsi
callq 0x3150
movq 0x18(%rbx), %rax
subq 0x10(%rbx), %rax
je 0x1576c
sarq $0x3, %rax
leaq -0xe8(%rbp), %r14
leaq -0x58(%rbp), %r15
cmpq $0x1, %rax
adcq $0x0, %rax
movq %rax, -0x160(%rbp)
xorl %r12d, %r12d
leaq -0xd8(%rbp), %rbx
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
movl 0x8(%rax), %eax
addl $-0xc, %eax
cmpl $0xd, %eax
ja 0x14f45
leaq 0x6a50(%rip), %rcx      # 0x1b800
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbx, %r15
movq %r14, %rbx
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
cmpl $0x1, 0x78(%rax)
jne 0x158ad
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movq %r12, %r13
movl %r12d, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
leaq -0x58(%rbp), %r12
movq %r12, -0x68(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
leaq -0x68(%rbp), %r14
movq %r14, %rdi
callq 0x4d4a
movq %r15, %rdi
movq -0x40(%rbp), %rsi
movq %r14, %rdx
callq 0x442e
movq -0x68(%rbp), %rdi
cmpq %r12, %rdi
je 0x14e4b
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x3230
cmpl $0x3, -0xd8(%rbp)
jne 0x1577e
movq -0xa8(%rbp), %rdx
movq -0x38(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x1577e
movq %rbx, %r14
movq %r13, %r12
testq %rdx, %rdx
je 0x14e93
movq -0x38(%rbp), %rax
movq (%rax), %rsi
movq -0xb0(%rbp), %rdi
callq 0x3240
testl %eax, %eax
jne 0x1577e
cmpb $0x0, -0x88(%rbp)
je 0x15840
movq %r15, %rbx
movq %r15, %rdi
callq 0x4816
leaq -0x58(%rbp), %r15
jmp 0x1556a
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
movq 0x18(%rax), %rcx
subq 0x10(%rax), %rcx
cmpq $0x9, %rcx
jb 0x14f45
movq %rbx, %r15
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
movq %rax, %r13
leaq -0x1b0(%rbp), %r14
movq %r14, -0x1c0(%rbp)
leaq -0x1c0(%rbp), %rbx
movq %rbx, %rdi
leaq 0x65e3(%rip), %rdx      # 0x1b4e4
movq %rdx, %rsi
callq 0x433a
movq -0x48(%rbp), %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x14cca
movq -0x1c0(%rbp), %rdi
cmpq %r14, %rdi
leaq -0xe8(%rbp), %r14
leaq -0x58(%rbp), %rcx
movq %r15, %rbx
movq %rcx, %r15
je 0x1556a
movq -0x1b0(%rbp), %rsi
jmp 0x15562
movq %r12, %rsi
movq %rbx, %r15
movq %r14, %rbx
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq %rax, -0x40(%rbp)
leaq -0x190(%rbp), %r13
movq %r13, -0x1a0(%rbp)
movq -0x38(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x1a0(%rbp), %r14
movq %r14, %rdi
callq 0x4d4a
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq %r14, %rdx
callq 0x14cca
movq -0x1a0(%rbp), %rdi
cmpq %r13, %rdi
movq %rbx, %r14
movq %r15, %rbx
leaq -0x58(%rbp), %r15
je 0x1556a
movq -0x190(%rbp), %rsi
jmp 0x15562
movq -0x38(%rbp), %r13
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
leaq -0x170(%rbp), %r14
movq %r14, -0x180(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
leaq -0x180(%rbp), %rdi
callq 0x4d4a
movq %rbx, %rdi
movq -0x40(%rbp), %rsi
leaq -0x180(%rbp), %rdx
callq 0x442e
movq -0x180(%rbp), %rdi
cmpq %r14, %rdi
je 0x15038
movq -0x170(%rbp), %rsi
incq %rsi
callq 0x3230
cmpl $0x3, -0xd8(%rbp)
leaq -0x58(%rbp), %r15
jne 0x157df
cmpb $0x1, -0x90(%rbp)
jne 0x157df
movq -0xa8(%rbp), %rdx
cmpq 0x8(%r13), %rdx
jne 0x157df
testq %rdx, %rdx
je 0x15084
movq (%r13), %rsi
movq -0xb0(%rbp), %rdi
callq 0x3240
testl %eax, %eax
jne 0x157df
movq %rbx, %rdi
callq 0x4816
leaq -0xe8(%rbp), %r14
jmp 0x1556a
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
cmpl $0x1, 0x78(%rax)
jne 0x152b6
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
movq %r14, -0xf8(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %r13
leaq -0xf8(%rbp), %rbx
movq %rbx, %rdi
callq 0x4d4a
movq %r13, %rdi
movq -0x40(%rbp), %rsi
movq %rbx, %rdx
callq 0x442e
movq -0xf8(%rbp), %rdi
cmpq %r14, %rdi
je 0x15116
movq -0xe8(%rbp), %rsi
incq %rsi
callq 0x3230
cmpl $0x3, -0xd8(%rbp)
leaq -0xd8(%rbp), %rbx
jne 0x1591a
movq -0xa8(%rbp), %rdx
movq -0x38(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x1591a
testq %rdx, %rdx
je 0x1515f
movq -0x38(%rbp), %rax
movq (%rax), %rsi
movq -0xb0(%rbp), %rdi
callq 0x3240
testl %eax, %eax
jne 0x1591a
movq %rbx, %rdi
callq 0x4816
jmp 0x1556a
movq %r12, %r14
movq %r15, %r12
movq -0x30(%rbp), %rbx
movq (%rbx), %rax
movq %rbx, %rdi
movl %r14d, %esi
callq *0x18(%rax)
leaq 0x30(%rax), %rdi
movq -0x38(%rbp), %r15
movq %r15, %rsi
callq 0x3150
movq (%rbx), %rax
movq %rbx, %rdi
movq %r14, %r13
movl %r14d, %esi
callq *0x18(%rax)
movq %rax, -0x40(%rbp)
leaq -0x1d0(%rbp), %r14
movq %r14, -0x1e0(%rbp)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq -0x1e0(%rbp), %rbx
movq %rbx, %rdi
callq 0x4d4a
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq %rbx, %rdx
callq 0x16f54
movq -0x1e0(%rbp), %rdi
cmpq %r14, %rdi
leaq -0xd8(%rbp), %rbx
leaq -0xe8(%rbp), %r14
movq %r12, %r15
movq %r13, %r12
je 0x1556a
movq -0x1d0(%rbp), %rsi
jmp 0x15562
movq -0x38(%rbp), %rbx
movq -0x48(%rbp), %r14
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
movl $0x1, %esi
callq *0x18(%rcx)
movq %rax, %r13
leaq -0xc8(%rbp), %r15
movq %r15, -0xd8(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
leaq -0xd8(%rbp), %rdi
callq 0x4d4a
movl 0x80(%r13), %eax
movl %eax, 0x18(%r15)
movq 0x78(%r13), %rax
movq %rax, 0x10(%r15)
movq -0xd0(%rbp), %rdx
cmpq 0x8(%rbx), %rdx
jne 0x1597b
movq %rbx, %r15
testq %rdx, %rdx
je 0x1534a
movq (%r15), %rsi
movq -0xd8(%rbp), %rdi
callq 0x3240
movl %eax, %r13d
leaq -0xd8(%rbp), %rbx
movq %rbx, %rdi
callq 0x192b0
testl %r13d, %r13d
je 0x15359
jmp 0x15987
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
cmpl $0x13, 0x78(%rax)
jne 0x1557f
movq -0x38(%rbp), %rdi
leaq 0x5ff6(%rip), %rsi      # 0x1b2ce
callq 0x30a0
testl %eax, %eax
je 0x1556a
movq -0x38(%rbp), %rdi
leaq 0x63a3(%rip), %rsi      # 0x1b693
callq 0x30a0
testl %eax, %eax
je 0x1556a
movq -0x38(%rbp), %rdi
leaq 0x6393(%rip), %rsi      # 0x1b69b
callq 0x30a0
testl %eax, %eax
je 0x1556a
movq -0x38(%rbp), %rdi
leaq 0x6380(%rip), %rsi      # 0x1b6a0
callq 0x30a0
testl %eax, %eax
je 0x1556a
movq -0x38(%rbp), %rdi
leaq 0x636c(%rip), %rsi      # 0x1b6a4
callq 0x30a0
testl %eax, %eax
je 0x1556a
jmp 0x15acb
leaq -0xd8(%rbp), %rbx
movq %rbx, %rdi
callq 0x192b0
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x17d04
leaq -0x148(%rbp), %rax
movq %rax, -0x158(%rbp)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x158(%rbp), %rdi
callq 0x4d4a
movq %r15, %rax
leaq -0x58(%rbp), %r15
leaq -0x270(%rbp), %r13
movq %r13, -0x280(%rbp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x280(%rbp), %rdi
callq 0x4d4a
movq -0x280(%rbp), %rdi
cmpq %r13, %rdi
je 0x153f0
movq -0x270(%rbp), %rsi
incq %rsi
callq 0x3230
movq -0x158(%rbp), %rdi
leaq -0x148(%rbp), %rax
cmpq %rax, %rdi
je 0x15412
movq -0x148(%rbp), %rsi
incq %rsi
callq 0x3230
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
cmpl $0xc, 0x8(%rax)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
jne 0x154cb
movq -0x30(%rbp), %rdi
movl %r12d, %esi
callq *%rax
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
addq $0x30, %rax
movq %rax, %rdi
movq %rbx, %rsi
callq 0x3150
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movq %rax, %r13
leaq -0x128(%rbp), %rax
movq %rax, -0x138(%rbp)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x138(%rbp), %rdi
callq 0x4d4a
movq -0x48(%rbp), %rdi
movq %r13, %rsi
leaq -0x138(%rbp), %rdx
callq 0x16f54
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rcx
jmp 0x1552e
movq -0x30(%rbp), %rdi
movl %r12d, %esi
callq *%rax
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movq %rax, %r13
leaq -0x108(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x118(%rbp), %rdi
callq 0x4d4a
movq -0x48(%rbp), %rdi
movq %r13, %rsi
leaq -0x118(%rbp), %rdx
callq 0x14cca
movq -0x118(%rbp), %rdi
leaq -0x108(%rbp), %rcx
movq %rcx, %rax
cmpq %rcx, %rdi
leaq -0xe8(%rbp), %r14
je 0x15548
movq (%rax), %rsi
incq %rsi
callq 0x3230
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x1556a
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x3230
incq %r12
cmpq %r12, -0x160(%rbp)
jne 0x14d8d
jmp 0x1576c
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
cmpl $0x14, 0x78(%rax)
jne 0x155bf
movq -0x38(%rbp), %rdi
leaq 0x60fa(%rip), %rsi      # 0x1b697
callq 0x30a0
testl %eax, %eax
je 0x1556a
movq -0x38(%rbp), %rdi
leaq 0x60f7(%rip), %rsi      # 0x1b6a8
callq 0x30a0
testl %eax, %eax
je 0x1556a
jmp 0x159f4
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
cmpl $0x1c, 0x78(%rax)
jne 0x155eb
movq -0x38(%rbp), %rdi
leaq 0x664e(%rip), %rsi      # 0x1bc2b
callq 0x30a0
testl %eax, %eax
je 0x1556a
jmp 0x15a61
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
cmpl $0x16, 0x78(%rax)
je 0x1556a
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
cmpl $0x17, 0x78(%rax)
je 0x1556a
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
cmpl $0x15, 0x78(%rax)
je 0x1556a
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
cmpl $0x1a, 0x78(%rax)
je 0x1556a
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
cmpl $0x2f, 0x78(%rax)
je 0x1556a
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
cmpl $0x34, 0x78(%rax)
je 0x1556a
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
cmpl $0x31, 0x78(%rax)
je 0x1556a
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
cmpl $0x30, 0x78(%rax)
je 0x1556a
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
cmpl $0x32, 0x78(%rax)
je 0x1556a
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
cmpl $0x33, 0x78(%rax)
je 0x1556a
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
cmpl $0x36, 0x78(%rax)
je 0x1556a
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r12d, %esi
callq *0x18(%rax)
cmpl $0x35, 0x78(%rax)
je 0x1556a
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x1f0(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x6500(%rip), %rsi      # 0x1bc1f
leaq 0x6504(%rip), %rdx      # 0x1bc2a
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 0xd620(%rip), %rsi      # 0x22d78
leaq -0x10179(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x15b33
addq $0x318, %rsp            # imm = 0x318
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0xd0(%rbp), %rdx
leaq 0x6499(%rip), %rsi      # 0x1bc32
leaq -0x340(%rbp), %rdi
callq 0x40f6
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 0xd5ad(%rip), %rsi      # 0x22d78
leaq -0x101ec(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x15b33
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0xd0(%rbp), %rdx
leaq 0x6438(%rip), %rsi      # 0x1bc32
leaq -0x320(%rbp), %rdi
callq 0x40f6
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 0xd54c(%rip), %rsi      # 0x22d78
leaq -0x1024d(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x15b33
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x2d0(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x63f4(%rip), %rsi      # 0x1bc54
leaq 0x6405(%rip), %rdx      # 0x1bc6c
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 0xd4df(%rip), %rsi      # 0x22d78
leaq -0x102ba(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x15b33
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x2b0(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x6352(%rip), %rsi      # 0x1bc1f
leaq 0x6356(%rip), %rdx      # 0x1bc2a
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 0xd472(%rip), %rsi      # 0x22d78
leaq -0x10327(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x15b33
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0xd0(%rbp), %rdx
leaq 0x62fd(%rip), %rsi      # 0x1bc32
leaq -0x300(%rbp), %rdi
callq 0x40f6
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 0xd411(%rip), %rsi      # 0x22d78
leaq -0x10388(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x15b33
leaq -0xd8(%rbp), %rdi
callq 0x192b0
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x290(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x62c6(%rip), %rsi      # 0x1bc6d
leaq 0x62eb(%rip), %rdx      # 0x1bc99
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 0xd398(%rip), %rsi      # 0x22d78
leaq -0x10401(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x15b33
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x230(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x62a9(%rip), %rsi      # 0x1bcbd
leaq 0x62b6(%rip), %rdx      # 0x1bcd1
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 0xd32b(%rip), %rsi      # 0x22d78
leaq -0x1046e(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x15b33
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x210(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x6251(%rip), %rsi      # 0x1bcd2
leaq 0x625f(%rip), %rdx      # 0x1bce7
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 0xd2be(%rip), %rsi      # 0x22d78
leaq -0x104db(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
jmp 0x15b33
movl $0x50, %edi
callq 0x3120
movq %rax, %r14
leaq -0x250(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x61af(%rip), %rsi      # 0x1bc9a
leaq 0x61ca(%rip), %rdx      # 0x1bcbc
leaq -0x260(%rbp), %rdi
callq 0x433a
movb $0x1, %r15b
leaq -0x260(%rbp), %rcx
movq %r14, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x5470
xorl %r15d, %r15d
leaq 0xd254(%rip), %rsi      # 0x22d78
leaq -0x10545(%rip), %rdx    # 0x55e6
movq %r14, %rdi
callq 0x33d0
movq %rax, %rbx
movq -0x200(%rbp), %rdi
cmpq %r12, %rdi
je 0x15ce3
movq -0x1f0(%rbp), %rsi
jmp 0x15cd3
jmp 0x15cdd
movq %rax, %rbx
movq -0x260(%rbp), %rdi
cmpq %r12, %rdi
je 0x15ce3
movq -0x250(%rbp), %rsi
jmp 0x15cd3
jmp 0x15cdd
movq %rax, %rbx
movq -0x220(%rbp), %rdi
cmpq %r12, %rdi
je 0x15ce3
movq -0x210(%rbp), %rsi
jmp 0x15cd3
jmp 0x15cdd
movq %rax, %rbx
movq -0x240(%rbp), %rdi
cmpq %r12, %rdi
je 0x15ce3
movq -0x230(%rbp), %rsi
jmp 0x15cd3
jmp 0x15cdd
movq %rax, %rbx
movq -0xf8(%rbp), %rdi
cmpq %r14, %rdi
je 0x15e0e
movq -0xe8(%rbp), %rsi
jmp 0x15e06
movq %rax, %rbx
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
cmpq %rax, %rdi
je 0x15dec
movq -0x128(%rbp), %rsi
jmp 0x15cb0
movq %rax, %rbx
movq -0x118(%rbp), %rdi
leaq -0x108(%rbp), %rax
cmpq %rax, %rdi
je 0x15dec
movq -0x108(%rbp), %rsi
jmp 0x15cb0
movq %rax, %rbx
movq -0x1c0(%rbp), %rdi
cmpq %r14, %rdi
je 0x15e0e
movq -0x1b0(%rbp), %rsi
jmp 0x15e06
movq %rax, %rbx
leaq -0x2f0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x15dce
movq -0x2f0(%rbp), %rsi
jmp 0x15dbe
jmp 0x15dc8
movq %rax, %rbx
movq -0x2a0(%rbp), %rdi
cmpq %r12, %rdi
je 0x15ce3
movq -0x290(%rbp), %rsi
jmp 0x15cd3
jmp 0x15cdd
movq %rax, %rbx
movq -0x158(%rbp), %rdi
leaq -0x148(%rbp), %rax
cmpq %rax, %rdi
je 0x15dec
movq -0x148(%rbp), %rsi
incq %rsi
callq 0x3230
jmp 0x15dec
movq %rax, %rbx
movq -0x2c0(%rbp), %rdi
cmpq %r12, %rdi
je 0x15ce3
movq -0x2b0(%rbp), %rsi
incq %rsi
callq 0x3230
jmp 0x15ce3
movq %rax, %rbx
movb $0x1, %r15b
testb %r15b, %r15b
je 0x15e0e
movq %r14, %rdi
callq 0x31a0
jmp 0x15e0e
movq %rax, %rbx
movq -0x180(%rbp), %rdi
cmpq %r14, %rdi
je 0x15e0e
movq -0x170(%rbp), %rsi
jmp 0x15e06
movq %rax, %rbx
movq -0x1e0(%rbp), %rdi
cmpq %r14, %rdi
je 0x15e0e
movq -0x1d0(%rbp), %rsi
jmp 0x15e06
movq %rax, %rbx
movq -0x2e0(%rbp), %rdi
cmpq %r12, %rdi
je 0x15dce
movq -0x2d0(%rbp), %rsi
jmp 0x15dbe
jmp 0x15dc8
movq %rax, %rbx
movq -0x1a0(%rbp), %rdi
cmpq %r13, %rdi
je 0x15e0e
movq -0x190(%rbp), %rsi
jmp 0x15e06
movq %rax, %rbx
leaq -0x310(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x15dce
movq -0x310(%rbp), %rsi
jmp 0x15dbe
jmp 0x15dc8
movq %rax, %rbx
movq -0x68(%rbp), %rdi
cmpq %r12, %rdi
je 0x15e0e
movq -0x58(%rbp), %rsi
jmp 0x15e06
movq %rax, %rbx
leaq -0x330(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x15dce
movq -0x330(%rbp), %rsi
incq %rsi
callq 0x3230
jmp 0x15dce
movq %rax, %rbx
movb $0x1, %r15b
testb %r15b, %r15b
je 0x15ddb
movq %r14, %rdi
callq 0x31a0
leaq -0xd8(%rbp), %rdi
callq 0x4816
jmp 0x15e0e
movq %rax, %rbx
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x15e0e
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x3230
movq %rbx, %rdi
callq 0x33f0