// File: /workspace/github_cpp_makefile_star2_O2/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 %rsi, -0x30(%rbp)
movq %rdi, -0x40(%rbp)
leaq 0x548f(%rip), %rsi      # 0x154e4
movq %rdx, -0x38(%rbp)
movq %rdx, %rdi
callq 0x410a
testb %al, %al
je 0x10090
leaq -0xc0(%rbp), %r12
movq %r12, %rdi
movq -0x40(%rbp), %rsi
movq -0x30(%rbp), %rdx
callq 0x122d6
movq -0x38(%rbp), %rdi
movq %r12, %rsi
callq 0x32b0
movq %r12, %rdi
callq 0x3110
movq -0x30(%rbp), %rbx
leaq 0x30(%rbx), %rdi
movq -0x38(%rbp), %rsi
callq 0x3160
movq 0x18(%rbx), %rax
subq 0x10(%rbx), %rax
sarq $0x3, %rax
movq %rax, -0x50(%rbp)
xorl %r15d, %r15d
leaq -0xc0(%rbp), %rbx
leaq -0xe0(%rbp), %r14
cmpq %r15, -0x50(%rbp)
je 0x107ab
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
movl 0x8(%rax), %eax
addl $-0xc, %eax
cmpl $0xd, %eax
ja 0x101f8
leaq 0x5711(%rip), %rcx      # 0x15800
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbx, %r13
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
cmpl $0x1, 0x78(%rax)
jne 0x108c8
movq -0x40(%rbp), %rax
movq 0x8(%rax), %r12
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
leaq 0x58(%rax), %rsi
leaq -0x300(%rbp), %rbx
movq %rbx, %rdi
callq 0x32f0
movq %r13, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x4172
movq %rbx, %rdi
callq 0x3110
cmpl $0x3, -0xc0(%rbp)
jne 0x107bd
leaq -0x98(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x4843
testb %al, %al
je 0x107bd
cmpb $0x0, -0x70(%rbp)
je 0x10871
movq %r13, %rbx
jmp 0x102bc
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
movq 0x18(%rax), %rcx
subq 0x10(%rax), %rcx
cmpq $0x9, %rcx
jb 0x101f8
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
movq %rax, %r12
movq %rbx, %rdx
leaq -0x2c0(%rbp), %rbx
movq %rbx, %rdi
leaq 0x5308(%rip), %rsi      # 0x154e4
movq %rdx, %r13
callq 0x3be4
movq -0x40(%rbp), %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x10032
jmp 0x103a7
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movq %r15, %rbx
movl %r15d, %esi
callq *0x18(%rax)
movq %rax, %r14
movq -0x38(%rbp), %rsi
leaq -0x2a0(%rbp), %r15
movq %r15, %rdi
callq 0x32f0
movq -0x40(%rbp), %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x10032
movq %r15, %rdi
callq 0x3110
movq %rbx, %r15
leaq -0xc0(%rbp), %rbx
leaq -0xe0(%rbp), %r14
jmp 0x105c9
movq -0x40(%rbp), %rax
movq 0x8(%rax), %r12
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
leaq 0x58(%rax), %rsi
movq %r14, %rdi
callq 0x32f0
movq %rbx, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x4172
movq %r14, %rdi
callq 0x3110
cmpl $0x3, -0xc0(%rbp)
jne 0x10817
cmpb $0x1, -0x78(%rbp)
jne 0x10817
leaq -0x98(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x4843
testb %al, %al
je 0x10817
movq %rbx, %rdi
callq 0x44c8
jmp 0x105c9
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
cmpl $0x1, 0x78(%rax)
jne 0x104f5
movq -0x40(%rbp), %rax
movq 0x8(%rax), %r12
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
leaq 0x58(%rax), %rsi
leaq -0x2e0(%rbp), %r13
movq %r13, %rdi
callq 0x32f0
movq %rbx, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x4172
movq %r13, %rdi
callq 0x3110
cmpl $0x3, -0xc0(%rbp)
jne 0x10922
leaq -0x98(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x4843
testb %al, %al
je 0x10922
leaq -0xc0(%rbp), %r13
movq %r13, %rdi
callq 0x44c8
jmp 0x103af
movq %rbx, %r13
movq -0x30(%rbp), %r14
movq (%r14), %rax
movq %r14, %rdi
movl %r15d, %esi
callq *0x18(%rax)
leaq 0x30(%rax), %rdi
movq -0x38(%rbp), %rbx
movq %rbx, %rsi
callq 0x3160
movq (%r14), %rax
movq %r14, %rdi
movl %r15d, %esi
callq *0x18(%rax)
movq %rax, %r12
leaq -0x320(%rbp), %rdi
movq %rbx, %rsi
movq %rdi, %rbx
callq 0x32f0
movq -0x40(%rbp), %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x118ae
movq %rbx, %rdi
callq 0x3110
leaq -0xe0(%rbp), %r14
movq %r13, %rbx
jmp 0x105c9
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
pushq $0x1
popq %rsi
callq *0x18(%rcx)
leaq 0x58(%rax), %rsi
movq %rbx, %rdi
callq 0xb24a
movq %rbx, %rdi
movq -0x38(%rbp), %rsi
callq 0x4843
movl %eax, %r12d
movq %rbx, %rdi
callq 0x135f8
testb %r12b, %r12b
je 0x1097c
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movq %rbx, %rdi
movq -0x40(%rbp), %rsi
movq %rax, %rdx
callq 0x122d6
leaq -0x200(%rbp), %rdi
movq %rbx, %rsi
callq 0x32f0
leaq -0x340(%rbp), %r12
movq %r12, %rdi
movq -0x38(%rbp), %rsi
callq 0x32f0
movq %r12, %rdi
callq 0x3110
leaq -0x200(%rbp), %rdi
callq 0x3110
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %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 0x1057d
movq -0x30(%rbp), %rdi
movl %r15d, %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 0x3160
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movq %rax, %r12
leaq -0x1e0(%rbp), %rdi
movq %rbx, %rsi
callq 0x32f0
movq -0x40(%rbp), %rdi
movq %r12, %rsi
leaq -0x1e0(%rbp), %r12
movq %r12, %rdx
callq 0x118ae
jmp 0x105b9
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
cmpl $0x13, 0x78(%rax)
jne 0x105d1
movq -0x38(%rbp), %rdi
leaq 0x4db7(%rip), %rsi      # 0x152ce
callq 0x410a
testb %al, %al
jne 0x105c9
movq -0x38(%rbp), %rdi
leaq 0x5164(%rip), %rsi      # 0x15693
callq 0x410a
testb %al, %al
jne 0x105c9
movq -0x38(%rbp), %rdi
leaq 0x5154(%rip), %rsi      # 0x1569b
callq 0x410a
testb %al, %al
jne 0x105c9
movq -0x38(%rbp), %rdi
leaq 0x5145(%rip), %rsi      # 0x156a0
callq 0x410a
testb %al, %al
jne 0x105c9
movq -0x38(%rbp), %rdi
leaq 0x5135(%rip), %rsi      # 0x156a4
callq 0x410a
testb %al, %al
jne 0x105c9
jmp 0x10a87
movq -0x30(%rbp), %rdi
movl %r15d, %esi
callq *%rax
movq (%rax), %rcx
movq %rax, %rdi
xorl %esi, %esi
callq *0x18(%rcx)
movq %rax, %r12
leaq -0x1c0(%rbp), %rdi
movq %rbx, %rsi
callq 0x32f0
movq -0x40(%rbp), %rdi
movq %r12, %rsi
leaq -0x1c0(%rbp), %r12
movq %r12, %rdx
callq 0x10032
movq %r12, %rdi
callq 0x3110
movq %rbx, %rdi
callq 0x3110
incq %r15
jmp 0x100c2
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
cmpl $0x14, 0x78(%rax)
jne 0x10611
movq -0x38(%rbp), %rdi
leaq 0x50a8(%rip), %rsi      # 0x15697
callq 0x410a
testb %al, %al
jne 0x105c9
movq -0x38(%rbp), %rdi
leaq 0x50a5(%rip), %rsi      # 0x156a8
callq 0x410a
testb %al, %al
jne 0x105c9
jmp 0x10a30
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
cmpl $0x1c, 0x78(%rax)
jne 0x1063d
movq -0x38(%rbp), %rdi
leaq 0x55fc(%rip), %rsi      # 0x15c2b
callq 0x410a
testb %al, %al
jne 0x105c9
jmp 0x109d6
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
cmpl $0x16, 0x78(%rax)
je 0x105c9
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
cmpl $0x17, 0x78(%rax)
je 0x105c9
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
cmpl $0x15, 0x78(%rax)
je 0x105c9
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
cmpl $0x1a, 0x78(%rax)
je 0x105c9
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
cmpl $0x2f, 0x78(%rax)
je 0x105c9
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
cmpl $0x34, 0x78(%rax)
je 0x105c9
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
cmpl $0x31, 0x78(%rax)
je 0x105c9
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
cmpl $0x30, 0x78(%rax)
je 0x105c9
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
cmpl $0x32, 0x78(%rax)
je 0x105c9
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
cmpl $0x33, 0x78(%rax)
je 0x105c9
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
cmpl $0x36, 0x78(%rax)
je 0x105c9
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movl %r15d, %esi
callq *0x18(%rax)
cmpl $0x35, 0x78(%rax)
je 0x105c9
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x54bc(%rip), %rsi      # 0x15c1f
leaq -0x100(%rbp), %rdi
leaq -0xc0(%rbp), %rdx
callq 0x3be4
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x100(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xd5f9(%rip), %rsi      # 0x1dd90
leaq -0xb866(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x10adc
addq $0x318, %rsp            # imm = 0x318
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq -0xb8(%rbp), %rdx
leaq 0x545c(%rip), %rsi      # 0x15c32
leaq -0x280(%rbp), %rdi
callq 0x3c55
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x280(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xd58d(%rip), %rsi      # 0x1dd90
leaq -0xb8d2(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x10adc
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq -0xb8(%rbp), %rdx
leaq 0x5402(%rip), %rsi      # 0x15c32
leaq -0x1a0(%rbp), %rdi
callq 0x3c55
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x1a0(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xd533(%rip), %rsi      # 0x1dd90
leaq -0xb92c(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x10adc
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x53d1(%rip), %rsi      # 0x15c54
leaq -0x260(%rbp), %rdi
leaq -0x41(%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 0xd4dc(%rip), %rsi      # 0x1dd90
leaq -0xb983(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x10adc
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x5345(%rip), %rsi      # 0x15c1f
leaq -0x240(%rbp), %rdi
leaq -0xc0(%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 0xd482(%rip), %rsi      # 0x1dd90
leaq -0xb9dd(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x10adc
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq -0xb8(%rbp), %rdx
leaq 0x52f7(%rip), %rsi      # 0x15c32
leaq -0x180(%rbp), %rdi
callq 0x3c55
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x180(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xd428(%rip), %rsi      # 0x1dd90
leaq -0xba37(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x10adc
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x52df(%rip), %rsi      # 0x15c6d
leaq -0x220(%rbp), %rdi
leaq -0xc0(%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 0xd3ce(%rip), %rsi      # 0x1dd90
leaq -0xba91(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x10adc
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x52ea(%rip), %rsi      # 0x15cd2
leaq -0x120(%rbp), %rdi
leaq -0xc0(%rbp), %rdx
callq 0x3be4
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x120(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xd374(%rip), %rsi      # 0x1dd90
leaq -0xbaeb(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x10adc
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x527b(%rip), %rsi      # 0x15cbd
leaq -0x140(%rbp), %rdi
leaq -0xc0(%rbp), %rdx
callq 0x3be4
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x140(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xd31a(%rip), %rsi      # 0x1dd90
leaq -0xbb45(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
jmp 0x10adc
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %r14
leaq 0x5201(%rip), %rsi      # 0x15c9a
leaq -0x160(%rbp), %rdi
leaq -0xc0(%rbp), %rdx
callq 0x3be4
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x160(%rbp), %rcx
movq %r14, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0xd2c3(%rip), %rsi      # 0x1dd90
leaq -0xbb9c(%rip), %rdx     # 0x4f38
movq %r14, %rdi
callq 0x33f0
movq %rax, %rbx
leaq -0x100(%rbp), %rdi
jmp 0x10bbf
jmp 0x10bce
movq %rax, %rbx
leaq -0x160(%rbp), %rdi
jmp 0x10bbf
jmp 0x10bce
movq %rax, %rbx
leaq -0x140(%rbp), %rdi
jmp 0x10bbf
jmp 0x10bce
movq %rax, %rbx
leaq -0x120(%rbp), %rdi
jmp 0x10bbf
jmp 0x10bce
movq %rax, %rbx
leaq -0x220(%rbp), %rdi
jmp 0x10bbf
jmp 0x10bce
movq %rax, %rbx
leaq -0x180(%rbp), %rdi
jmp 0x10c25
jmp 0x10c31
movq %rax, %rbx
leaq -0x2e0(%rbp), %rdi
jmp 0x10c54
movq %rax, %rbx
leaq -0x1e0(%rbp), %rdi
jmp 0x10b9c
movq %rax, %rbx
leaq -0x1c0(%rbp), %rdi
jmp 0x10b9c
movq %rax, %rbx
leaq -0x2c0(%rbp), %rdi
jmp 0x10c54
movq %rax, %rbx
jmp 0x10c59
movq %rax, %rbx
leaq -0x200(%rbp), %rdi
callq 0x3110
jmp 0x10c4d
movq %rax, %rbx
leaq -0xe0(%rbp), %rdi
jmp 0x10c54
movq %rax, %rbx
leaq -0x240(%rbp), %rdi
callq 0x3110
testb %r15b, %r15b
jne 0x10bd1
jmp 0x10c59
movq %rax, %rbx
movq %r14, %rdi
callq 0x31b0
jmp 0x10c59
movq %rax, %rbx
leaq -0x320(%rbp), %rdi
jmp 0x10c54
movq %rax, %rbx
leaq -0x260(%rbp), %rdi
jmp 0x10c25
jmp 0x10c31
movq %rax, %rbx
leaq -0x1a0(%rbp), %rdi
jmp 0x10c25
jmp 0x10c31
movq %rax, %rbx
leaq -0x2a0(%rbp), %rdi
jmp 0x10c54
movq %rax, %rbx
leaq -0x300(%rbp), %rdi
jmp 0x10c54
movq %rax, %rbx
leaq -0x280(%rbp), %rdi
callq 0x3110
testb %r15b, %r15b
jne 0x10c34
jmp 0x10c3c
movq %rax, %rbx
movq %r14, %rdi
callq 0x31b0
leaq -0xc0(%rbp), %rdi
callq 0x44c8
jmp 0x10c59
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
callq 0x3110
movq %rbx, %rdi
callq 0x3410
nop