// File: RuiDGPires[P]CrimLang/src/parser.cpp
// Function: ps_Tracker::declaration()
void _ps_Tracker::declaration(){
	// aux will be used to stor tokens until it's know if this is a declaration of a function or a variable
	std::vector<crl::Token> aux;
	bool is_cas = false;
	bool is_void = false;

	if (accept(crl::Token::Type::VOID))
		is_void = true;
	else		
		expect TYPE_SPEC();

		
	if (this->current.type == crl::Token::Type::LSBR){
		this->enter(crl::Node::Type::VECTOR);
		aux.push_back(this->previous());
		this->expect(crl::Token::Type::LSBR);
		this->expect(crl::Token::Type::INT);
		aux.push_back(this->previous());
		this->expect(crl::Token::Type::RSBR);
		this->leave();
	}else
		aux.push_back(this->previous());

	if (accept(crl::Token::Type::CAS)) 
		is_cas=true;


	bool _mutable = accept(crl::Token::Type::MUT);
	
	expect(crl::Token::Type::IDENT);
	aux.push_back(this->previous());

	size_t size = aux.size();
	if (_mutable)
		goto var_;
	// Function declaration
	if (accept(crl::Token::Type::LPAREN)){
		if (!is_cas)
			this->enter(crl::Node::Type::FUNC_DECLARATION);
		else
			this->enter(crl::Node::Type::CAS);

		// Dump stored tokens
		for (size_t i = 0; i < size; i++)
			this->add(aux[i]);

		if (accept TYPE_SPEC()){
			this->enter(crl::Node::Type::ARG);
			if (this->current.type == crl::Token::Type::LSBR){
				this->enter(crl::Node::Type::VECTOR);
				this->add(this->previous());
				this->expect(crl::Token::Type::LSBR);
				EXP_AND_ADD(crl::Token::Type::INT);
				this->expect(crl::Token::Type::RSBR);
				this->leave();
			}else
				this->add(this->previous());

			if (accept(crl::Token::Type::MUT))
				this->annotate("mut");

			EXP_AND_ADD(crl::Token::Type::IDENT);

			this->leave();
			while(accept(crl::Token::Type::COMMA)){
				this->enter(crl::Node::Type::ARG);
				this->expect TYPE_SPEC();

				if (this->current.type == crl::Token::Type::LSBR){
					this->enter(crl::Node::Type::VECTOR);
					this->add(this->previous());
					this->expect(crl::Token::Type::LSBR);
					EXP_AND_ADD(crl::Token::Type::INT);
					this->expect(crl::Token::Type::RSBR);
					this->leave();
				}else
					this->add(this->previous());

				if (accept(crl::Token::Type::MUT))
					this->annotate("mut");

				EXP_AND_ADD(crl::Token::Type::IDENT);
				this->leave();
			}
		}
		expect(crl::Token::Type::RPAREN);
		expect(crl::Token::Type::LBRACK);
		if (!is_cas)	
			this->block(crl::Token::Type::RBRACK);
		else{
			this->enter(crl::Node::Type::BLOCK);
			while(accept(crl::Token::Type::STRING)){
				this->add(this->previous());
				this->expect(crl::Token::Type::SEMICLN);
			}
			this->expect(crl::Token::Type::RBRACK);
			this->leave();
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x370, %rsp            # imm = 0x370
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x308(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x1c1e0
movq -0x308(%rbp), %rdi
movb $0x0, -0x21(%rbp)
movb $0x0, -0x22(%rbp)
movl $0x5, %esi
callq 0x18d20
movb %al, -0x2fa(%rbp)
jmp 0x1a0e4
movb -0x2fa(%rbp), %al
testb $0x1, %al
jne 0x1a0f0
jmp 0x1a107
movb $0x1, -0x22(%rbp)
jmp 0x1a149
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1add0
movq -0x308(%rbp), %rdi
movq %rsp, %rax
movl $0xb, 0x10(%rax)
movl $0xa, 0x8(%rax)
movl $0x8, (%rax)
xorl %eax, %eax
movl $0x5, %edx
movl $0x6, %ecx
movl $0x7, %r8d
movl $0x9, %r9d
movl %r8d, %esi
callq 0x18f40
jmp 0x1a147
jmp 0x1a149
movq -0x308(%rbp), %rax
cmpl $0x22, 0x58(%rax)
jne 0x1a1e8
movq -0x308(%rbp), %rdi
movl $0x19, %esi
callq 0x190f0
jmp 0x1a16d
movq -0x308(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x20(%rbp), %rdi
callq 0x1c200
jmp 0x1a187
movq -0x308(%rbp), %rdi
movl $0x22, %esi
callq 0x18eb0
jmp 0x1a19a
movq -0x308(%rbp), %rdi
movl $0x13, %esi
callq 0x18eb0
jmp 0x1a1ad
movq -0x308(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x20(%rbp), %rdi
callq 0x1c200
jmp 0x1a1c7
movq -0x308(%rbp), %rdi
movl $0x23, %esi
callq 0x18eb0
jmp 0x1a1da
movq -0x308(%rbp), %rdi
callq 0x19240
jmp 0x1a204
movq -0x308(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x20(%rbp), %rdi
callq 0x1c200
jmp 0x1a202
jmp 0x1a204
movq -0x308(%rbp), %rdi
movl $0x11, %esi
callq 0x18d20
movb %al, -0x309(%rbp)
jmp 0x1a21d
movb -0x309(%rbp), %al
testb $0x1, %al
jne 0x1a229
jmp 0x1a22d
movb $0x1, -0x21(%rbp)
movq -0x308(%rbp), %rdi
movl $0x4, %esi
callq 0x18d20
movb %al, -0x30a(%rbp)
jmp 0x1a246
movq -0x308(%rbp), %rdi
movb -0x30a(%rbp), %al
andb $0x1, %al
movb %al, -0x35(%rbp)
movl $0x1, %esi
callq 0x18eb0
jmp 0x1a264
movq -0x308(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x20(%rbp), %rdi
callq 0x1c200
jmp 0x1a27e
leaq -0x20(%rbp), %rdi
callq 0x186c0
movq %rax, -0x40(%rbp)
testb $0x1, -0x35(%rbp)
je 0x1a296
jmp 0x1aacc
movq -0x308(%rbp), %rdi
movl $0x20, %esi
callq 0x18d20
movb %al, -0x30b(%rbp)
jmp 0x1a2af
movb -0x30b(%rbp), %al
testb $0x1, %al
jne 0x1a2be
jmp 0x1aaca
testb $0x1, -0x21(%rbp)
jne 0x1a2d9
movq -0x308(%rbp), %rdi
movl $0x3, %esi
callq 0x190f0
jmp 0x1a2d7
jmp 0x1a2ee
movq -0x308(%rbp), %rdi
movl $0x11, %esi
callq 0x190f0
jmp 0x1a2ec
jmp 0x1a2ee
movq $0x0, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x40(%rbp), %rax
jae 0x1a35e
movq -0x48(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x1bf50
movq %rax, %rsi
leaq -0x78(%rbp), %rdi
callq 0x14170
jmp 0x1a31b
movq -0x308(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x19290
jmp 0x1a32d
leaq -0x78(%rbp), %rdi
callq 0x285a0
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x1a2f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x285a0
jmp 0x1add0
movq -0x308(%rbp), %rdi
movq %rsp, %rax
movl $0xb, 0x10(%rax)
movl $0xa, 0x8(%rax)
movl $0x8, (%rax)
xorl %eax, %eax
movl $0x5, %edx
movl $0x6, %ecx
movl $0x7, %r8d
movl $0x9, %r9d
movl %r8d, %esi
callq 0x18d60
movb %al, -0x30c(%rbp)
jmp 0x1a3a4
movb -0x30c(%rbp), %al
testb $0x1, %al
jne 0x1a3b3
jmp 0x1a9b8
movq -0x308(%rbp), %rdi
movl $0x12, %esi
callq 0x190f0
jmp 0x1a3c6
movq -0x308(%rbp), %rax
cmpl $0x22, 0x58(%rax)
jne 0x1a4ea
movq -0x308(%rbp), %rdi
movl $0x19, %esi
callq 0x190f0
jmp 0x1a3ea
movq -0x308(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0xa8(%rbp), %rdi
callq 0x14170
jmp 0x1a407
movq -0x308(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x19290
jmp 0x1a41c
leaq -0xa8(%rbp), %rdi
callq 0x285a0
movq -0x308(%rbp), %rdi
movl $0x22, %esi
callq 0x18eb0
jmp 0x1a43b
movq -0x308(%rbp), %rdi
movl $0x13, %esi
callq 0x18eb0
jmp 0x1a44e
movq -0x308(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0xd8(%rbp), %rdi
callq 0x14170
jmp 0x1a46b
movq -0x308(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x19290
jmp 0x1a480
leaq -0xd8(%rbp), %rdi
callq 0x285a0
movq -0x308(%rbp), %rdi
movl $0x23, %esi
callq 0x18eb0
jmp 0x1a49f
movq -0x308(%rbp), %rdi
callq 0x19240
jmp 0x1a547
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x285a0
jmp 0x1add0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x285a0
jmp 0x1add0
movq -0x308(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x108(%rbp), %rdi
callq 0x14170
jmp 0x1a507
movq -0x308(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x19290
jmp 0x1a51c
leaq -0x108(%rbp), %rdi
callq 0x285a0
jmp 0x1a547
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x285a0
jmp 0x1add0
movq -0x308(%rbp), %rdi
movl $0x4, %esi
callq 0x18d20
movb %al, -0x30d(%rbp)
jmp 0x1a560
movb -0x30d(%rbp), %al
testb $0x1, %al
jne 0x1a56f
jmp 0x1a604
leaq -0x129(%rbp), %rdi
movq %rdi, -0x318(%rbp)
callq 0x4590
movq -0x318(%rbp), %rdx
leaq 0x10ec0(%rip), %rsi     # 0x2b450
leaq -0x128(%rbp), %rdi
callq 0x52e0
jmp 0x1a59e
movq -0x308(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x19260
jmp 0x1a5b3
leaq -0x128(%rbp), %rdi
callq 0x41e0
leaq -0x129(%rbp), %rdi
callq 0x4360
jmp 0x1a604
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1a5f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x41e0
leaq -0x129(%rbp), %rdi
callq 0x4360
jmp 0x1add0
movq -0x308(%rbp), %rdi
movl $0x1, %esi
callq 0x18eb0
jmp 0x1a617
movq -0x308(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x160(%rbp), %rdi
callq 0x14170
jmp 0x1a634
movq -0x308(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x19290
jmp 0x1a649
leaq -0x160(%rbp), %rdi
callq 0x285a0
movq -0x308(%rbp), %rdi
callq 0x19240
movq -0x308(%rbp), %rdi
movl $0x29, %esi
callq 0x18d20
movb %al, -0x319(%rbp)
jmp 0x1a67a
movb -0x319(%rbp), %al
testb $0x1, %al
jne 0x1a689
jmp 0x1a9b6
movq -0x308(%rbp), %rdi
movl $0x12, %esi
callq 0x190f0
jmp 0x1a69c
movq -0x308(%rbp), %rdi
movq %rsp, %rax
movl $0xb, 0x10(%rax)
movl $0xa, 0x8(%rax)
movl $0x8, (%rax)
xorl %eax, %eax
movl $0x5, %edx
movl $0x6, %ecx
movl $0x7, %r8d
movl $0x9, %r9d
movl %r8d, %esi
callq 0x18f40
jmp 0x1a6dc
movq -0x308(%rbp), %rax
cmpl $0x22, 0x58(%rax)
jne 0x1a81d
movq -0x308(%rbp), %rdi
movl $0x19, %esi
callq 0x190f0
jmp 0x1a700
movq -0x308(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x190(%rbp), %rdi
callq 0x14170
jmp 0x1a71d
movq -0x308(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x19290
jmp 0x1a732
leaq -0x190(%rbp), %rdi
callq 0x285a0
movq -0x308(%rbp), %rdi
movl $0x22, %esi
callq 0x18eb0
jmp 0x1a751
movq -0x308(%rbp), %rdi
movl $0x13, %esi
callq 0x18eb0
jmp 0x1a764
movq -0x308(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x1c0(%rbp), %rdi
callq 0x14170
jmp 0x1a781
movq -0x308(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x19290
jmp 0x1a796
leaq -0x1c0(%rbp), %rdi
callq 0x285a0
movq -0x308(%rbp), %rdi
movl $0x23, %esi
callq 0x18eb0
jmp 0x1a7b5
movq -0x308(%rbp), %rdi
callq 0x19240
jmp 0x1a87a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x285a0
jmp 0x1add0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x285a0
jmp 0x1add0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x285a0
jmp 0x1add0
movq -0x308(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x1f0(%rbp), %rdi
callq 0x14170
jmp 0x1a83a
movq -0x308(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x19290
jmp 0x1a84f
leaq -0x1f0(%rbp), %rdi
callq 0x285a0
jmp 0x1a87a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x285a0
jmp 0x1add0
movq -0x308(%rbp), %rdi
movl $0x4, %esi
callq 0x18d20
movb %al, -0x31a(%rbp)
jmp 0x1a893
movb -0x31a(%rbp), %al
testb $0x1, %al
jne 0x1a8a2
jmp 0x1a937
leaq -0x211(%rbp), %rdi
movq %rdi, -0x328(%rbp)
callq 0x4590
movq -0x328(%rbp), %rdx
leaq 0x10b8d(%rip), %rsi     # 0x2b450
leaq -0x210(%rbp), %rdi
callq 0x52e0
jmp 0x1a8d1
movq -0x308(%rbp), %rdi
leaq -0x210(%rbp), %rsi
callq 0x19260
jmp 0x1a8e6
leaq -0x210(%rbp), %rdi
callq 0x41e0
leaq -0x211(%rbp), %rdi
callq 0x4360
jmp 0x1a937
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1a926
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x41e0
leaq -0x211(%rbp), %rdi
callq 0x4360
jmp 0x1add0
movq -0x308(%rbp), %rdi
movl $0x1, %esi
callq 0x18eb0
jmp 0x1a94a
movq -0x308(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x248(%rbp), %rdi
callq 0x14170
jmp 0x1a967
movq -0x308(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x19290
jmp 0x1a97c
leaq -0x248(%rbp), %rdi
callq 0x285a0
movq -0x308(%rbp), %rdi
callq 0x19240
jmp 0x1a661
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x285a0
jmp 0x1add0
jmp 0x1a9b8
movq -0x308(%rbp), %rdi
movl $0x21, %esi
callq 0x18eb0
jmp 0x1a9cb
movq -0x308(%rbp), %rdi
movl $0x24, %esi
callq 0x18eb0
jmp 0x1a9de
testb $0x1, -0x21(%rbp)
jne 0x1a9fc
movq -0x308(%rbp), %rdi
movl $0x25, %esi
callq 0x1adf0
jmp 0x1a9f7
jmp 0x1aac5
movq -0x308(%rbp), %rdi
movl $0x5, %esi
callq 0x190f0
jmp 0x1aa0f
jmp 0x1aa11
movq -0x308(%rbp), %rdi
movl $0x1c, %esi
callq 0x18d20
movb %al, -0x329(%rbp)
jmp 0x1aa2a
movb -0x329(%rbp), %al
testb $0x1, %al
jne 0x1aa36
jmp 0x1aaa6
movq -0x308(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x278(%rbp), %rdi
callq 0x14170
jmp 0x1aa53
movq -0x308(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x19290
jmp 0x1aa68
leaq -0x278(%rbp), %rdi
callq 0x285a0
movq -0x308(%rbp), %rdi
movl $0x28, %esi
callq 0x18eb0
jmp 0x1aa87
jmp 0x1aa11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x285a0
jmp 0x1add0
movq -0x308(%rbp), %rdi
movl $0x25, %esi
callq 0x18eb0
jmp 0x1aab9
movq -0x308(%rbp), %rdi
callq 0x19240
jmp 0x1adb2
jmp 0x1aacc
testb $0x1, -0x22(%rbp)
je 0x1abce
movb $0x1, -0x29a(%rbp)
movl $0x50, %edi
callq 0x4190
movq %rax, %rcx
movq -0x308(%rbp), %rax
movq %rcx, -0x348(%rbp)
movl 0x5c(%rax), %ecx
movl %ecx, -0x340(%rbp)
movl 0x60(%rax), %eax
movl %eax, -0x33c(%rbp)
leaq -0x299(%rbp), %rdi
movq %rdi, -0x338(%rbp)
callq 0x4590
movq -0x338(%rbp), %rdx
leaq 0x10c05(%rip), %rsi     # 0x2b730
leaq -0x298(%rbp), %rdi
callq 0x52e0
jmp 0x1ab39
movl -0x33c(%rbp), %edx
movl -0x340(%rbp), %esi
movq -0x348(%rbp), %rdi
leaq -0x298(%rbp), %rcx
callq 0x90b0
jmp 0x1ab5a
movq -0x348(%rbp), %rdi
movb $0x0, -0x29a(%rbp)
leaq 0x1f1f9(%rip), %rsi     # 0x39d68
leaq -0x118b6(%rip), %rdx    # 0x92c0
callq 0x4550
jmp 0x1ade2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1aba6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x41e0
leaq -0x299(%rbp), %rdi
callq 0x4360
testb $0x1, -0x29a(%rbp)
jne 0x1abbd
jmp 0x1abc9
movq -0x348(%rbp), %rdi
callq 0x4230
jmp 0x1add0
movq -0x308(%rbp), %rdi
movl $0x2, %esi
callq 0x190f0
jmp 0x1abe1
movq $0x0, -0x2a8(%rbp)
movq -0x2a8(%rbp), %rax
cmpq -0x40(%rbp), %rax
jae 0x1ac6c
movq -0x2a8(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x1bf50
movq %rax, %rsi
leaq -0x2d8(%rbp), %rdi
callq 0x14170
jmp 0x1ac1a
movq -0x308(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0x19290
jmp 0x1ac2f
leaq -0x2d8(%rbp), %rdi
callq 0x285a0
movq -0x2a8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x2a8(%rbp)
jmp 0x1abec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x285a0
jmp 0x1add0
testb $0x1, -0x35(%rbp)
jne 0x1acb7
movq -0x308(%rbp), %rdi
movl $0x2a, %esi
callq 0x18eb0
jmp 0x1ac85
movq -0x308(%rbp), %rdi
movl $0x6, %esi
callq 0x190f0
jmp 0x1ac98
movq -0x308(%rbp), %rdi
callq 0x195a0
jmp 0x1aca6
movq -0x308(%rbp), %rdi
callq 0x19240
jmp 0x1ad9d
leaq -0x2f9(%rbp), %rdi
movq %rdi, -0x350(%rbp)
callq 0x4590
movq -0x350(%rbp), %rdx
leaq 0x10778(%rip), %rsi     # 0x2b450
leaq -0x2f8(%rbp), %rdi
callq 0x52e0
jmp 0x1ace6
movq -0x308(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0x19260
jmp 0x1acfb
leaq -0x2f8(%rbp), %rdi
callq 0x41e0
leaq -0x2f9(%rbp), %rdi
callq 0x4360
movq -0x308(%rbp), %rdi
movl $0x2a, %esi
callq 0x18d20
movb %al, -0x351(%rbp)
jmp 0x1ad2c
movb -0x351(%rbp), %al
testb $0x1, %al
jne 0x1ad38
jmp 0x1ad9b
movq -0x308(%rbp), %rdi
movl $0x6, %esi
callq 0x190f0
jmp 0x1ad4b
movq -0x308(%rbp), %rdi
callq 0x195a0
jmp 0x1ad59
movq -0x308(%rbp), %rdi
callq 0x19240
jmp 0x1ad9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1ad8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x41e0
leaq -0x2f9(%rbp), %rdi
callq 0x4360
jmp 0x1add0
jmp 0x1ad9d
movq -0x308(%rbp), %rdi
movl $0x28, %esi
callq 0x18eb0
jmp 0x1adb0
jmp 0x1adb2
movq -0x308(%rbp), %rdi
callq 0x19240
leaq -0x20(%rbp), %rdi
callq 0x18470
addq $0x370, %rsp            # imm = 0x370
popq %rbp
retq
leaq -0x20(%rbp), %rdi
callq 0x18470
movq -0x30(%rbp), %rdi
callq 0x4580
nopw %cs:(%rax,%rax)