// File: RuiDGPires[P]CrimLang/src/parser.cpp
// Function: ps_Tracker::statement()
void _ps_Tracker::statement(){
	if (accept(crl::Token::Type::SEMICLN))
		this->enter(crl::Node::Type::NONE);
	else if (accept(crl::Token::Type::IF)){
		this->enter(crl::Node::Type::IF);

		this->expect(crl::Token::Type::LPAREN);
		this->casted_expression();	
		this->expect(crl::Token::Type::RPAREN);

		this->enter(crl::Node::Type::THEN);
		if (accept(crl::Token::Type::LBRACK))
			this->block(crl::Token::Type::RBRACK);
		else
			this->statement();
		
		this->leave(); // LEAVE THEN

		if (accept(crl::Token::Type::ELSE)){
			this->enter(crl::Node::Type::ELSE);
			if (accept(crl::Token::Type::LBRACK))
				this->block(crl::Token::Type::RBRACK);
			else
				this->statement();
			this->leave();
		}
	}else if (accept(crl::Token::Type::WHILE)){
		this->enter(crl::Node::Type::WHILE);

		this->expect(crl::Token::Type::LPAREN);
		this->casted_expression();	
		this->expect(crl::Token::Type::RPAREN);

		if (accept(crl::Token::Type::LBRACK))
			this->block(crl::Token::Type::RBRACK);
		else
			this->statement();
	}else if (accept(crl::Token::Type::FOR)){
		this->enter(crl::Node::Type::FOR);
		this->expect(crl::Token::Type::LPAREN);
		this->statement();	
		if (this->previous().type != crl::Token::Type::SEMICLN)
			this->expect(crl::Token::Type::SEMICLN);

		this->expression();
		this->expect(crl::Token::Type::SEMICLN);
		this->expression();
		this->expect(crl::Token::Type::RPAREN);

		if (accept(crl::Token::Type::LBRACK))
			this->block(crl::Token::Type::RBRACK);
		else
			this->statement();
	}else if (accept(crl::Token::Type::RETURN)){
		this->enter(crl::Node::Type::RETURN);
		if (!accept(crl::Token::Type::SEMICLN)){
			this->expression();
			this->expect(crl::Token::Type::SEMICLN);
		}
	}else if (accept(crl::Token::Type::BREAK)){
		this->enter(crl::Node::Type::BREAK);
		this->expect(crl::Token::Type::SEMICLN);
	}else if (accept(crl::Token::Type::CONTINUE)){
		this->enter(crl::Node::Type::BREAK);
		this->annotate("continue");
		this->expect(crl::Token::Type::SEMICLN);
	}else if (accept(crl::Token::Type::IDENT)){
		if (this->current.type == crl::Token::Type::LPAREN){
			this->func_call();
			this->expect(crl::Token::Type::SEMICLN);
			return;
		}else if (this->current.type == crl::Token::Type::INC){
			this->enter(crl::Node::Type::INC);
			this->add(this->previous());
			this->next();
			this->expect(crl::Token::Type::SEMICLN);
		}else if (this->current.type == crl::Token::Type::DECR){
			this->enter(crl::Node::Type::DEC);
			this->add(this->previous());
			this->next();
			this->expect(crl::Token::Type::SEMICLN);
		}else if (this->current.type == crl::Token::Type::LSBR){
			this->enter(crl::Node::Type::ASSIGN);
			this->enter(crl::Node::Type::VECTOR);
			this->add(this->previous());
			this->next();
			EXP_AND_ADD(crl::Token::Type::INT);
			this->expect(crl::Token::Type::RSBR);
			this->leave();

			if (!IS_ASSIGN_TOK(this->current.type))
				throw crl::UnexpectedToken(this->current);

			this->annotate(parse_assign(this->current.type));
			this->next();
			this->expression();
			this->expect(crl::Token::Type::SEMICLN);
		}else if (IS_ASSIGN_TOK(this->current.type)){
			this->enter(crl::Node::Type::ASSIGN);
			this->annotate(parse_assign(this->current.type));
			this->add(this->previous());
			this->next();
			this->expression();
			this->expect(crl::Token::Type::SEMICLN);
		}else throw crl::UnexpectedToken(this->current);

	}else if (accept TYPE_SPEC()){
		this->enter(crl::Node::Type::INIT);
		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());

		// VAR INIT
		bool _mutable = accept(crl::Token::Type::MUT);
		if (_mutable)
			this->annotate("mut");

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

		if (!_mutable){
			this->enter(crl::Node::Type::ASSIGN);
			expect(crl::Token::Type::BECOMES);
			if (accept(crl::Token::Type::LSBR)){
				this->enter(crl::Node::Type::VECTOR);
				if (!accept(crl::Token::Type::RSBR)){
					do{
						this->expression();
					}while(accept(crl::Token::Type::COMMA));
					expect(crl::Token::Type::RSBR);
				}
				this->leave();
			}else
				this->expression();
			this->leave();
		}else{
			if (accept(crl::Token::Type::BECOMES)){
				this->enter(crl::Node::Type::ASSIGN);
				this->expression();
				this->leave();
			}
		}
		
		expect(crl::Token::Type::SEMICLN);
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x300, %rsp            # imm = 0x300
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x268(%rbp)
movl $0x28, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1ae6a
jmp 0x1ae7d
movq -0x268(%rbp), %rdi
xorl %esi, %esi
callq 0x190f0
jmp 0x1bc9f
movq -0x268(%rbp), %rdi
movl $0x2, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1ae97
jmp 0x1af98
movq -0x268(%rbp), %rdi
movl $0x7, %esi
callq 0x190f0
movq -0x268(%rbp), %rdi
movl $0x20, %esi
callq 0x18eb0
movq -0x268(%rbp), %rdi
callq 0x19ee0
movq -0x268(%rbp), %rdi
movl $0x21, %esi
callq 0x18eb0
movq -0x268(%rbp), %rdi
movl $0x8, %esi
callq 0x190f0
movq -0x268(%rbp), %rdi
movl $0x24, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1aefe
jmp 0x1af11
movq -0x268(%rbp), %rdi
movl $0x25, %esi
callq 0x1adf0
jmp 0x1af1d
movq -0x268(%rbp), %rdi
callq 0x1ae40
movq -0x268(%rbp), %rdi
callq 0x19240
movq -0x268(%rbp), %rdi
movl $0x3, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1af40
jmp 0x1af93
movq -0x268(%rbp), %rdi
movl $0x9, %esi
callq 0x190f0
movq -0x268(%rbp), %rdi
movl $0x24, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1af68
jmp 0x1af7b
movq -0x268(%rbp), %rdi
movl $0x25, %esi
callq 0x1adf0
jmp 0x1af87
movq -0x268(%rbp), %rdi
callq 0x1ae40
movq -0x268(%rbp), %rdi
callq 0x19240
jmp 0x1bc9d
movq -0x268(%rbp), %rdi
movl $0x10, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1afaf
jmp 0x1b029
movq -0x268(%rbp), %rdi
movl $0xb, %esi
callq 0x190f0
movq -0x268(%rbp), %rdi
movl $0x20, %esi
callq 0x18eb0
movq -0x268(%rbp), %rdi
callq 0x19ee0
movq -0x268(%rbp), %rdi
movl $0x21, %esi
callq 0x18eb0
movq -0x268(%rbp), %rdi
movl $0x24, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1b005
jmp 0x1b018
movq -0x268(%rbp), %rdi
movl $0x25, %esi
callq 0x1adf0
jmp 0x1b024
movq -0x268(%rbp), %rdi
callq 0x1ae40
jmp 0x1bc9b
movq -0x268(%rbp), %rdi
movl $0xf, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1b043
jmp 0x1b109
movq -0x268(%rbp), %rdi
movl $0xa, %esi
callq 0x190f0
movq -0x268(%rbp), %rdi
movl $0x20, %esi
callq 0x18eb0
movq -0x268(%rbp), %rdi
callq 0x1ae40
movq -0x268(%rbp), %rdi
callq 0x18cf0
cmpl $0x28, 0x20(%rax)
je 0x1b094
movq -0x268(%rbp), %rdi
movl $0x28, %esi
callq 0x18eb0
movq -0x268(%rbp), %rdi
callq 0x195a0
movq -0x268(%rbp), %rdi
movl $0x28, %esi
callq 0x18eb0
movq -0x268(%rbp), %rdi
callq 0x195a0
movq -0x268(%rbp), %rdi
movl $0x21, %esi
callq 0x18eb0
movq -0x268(%rbp), %rdi
movl $0x24, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1b0e5
jmp 0x1b0f8
movq -0x268(%rbp), %rdi
movl $0x25, %esi
callq 0x1adf0
jmp 0x1b104
movq -0x268(%rbp), %rdi
callq 0x1ae40
jmp 0x1bc99
movq -0x268(%rbp), %rdi
movl $0xc, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1b120
jmp 0x1b168
movq -0x268(%rbp), %rdi
movl $0x16, %esi
callq 0x190f0
movq -0x268(%rbp), %rdi
movl $0x28, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1b163
movq -0x268(%rbp), %rdi
callq 0x195a0
movq -0x268(%rbp), %rdi
movl $0x28, %esi
callq 0x18eb0
jmp 0x1bc97
movq -0x268(%rbp), %rdi
movl $0xd, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1b17f
jmp 0x1b1a6
movq -0x268(%rbp), %rdi
movl $0x17, %esi
callq 0x190f0
movq -0x268(%rbp), %rdi
movl $0x28, %esi
callq 0x18eb0
jmp 0x1bc95
movq -0x268(%rbp), %rdi
movl $0xe, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1b1c0
jmp 0x1b265
movq -0x268(%rbp), %rdi
movl $0x17, %esi
callq 0x190f0
leaq -0x29(%rbp), %rdi
movq %rdi, -0x270(%rbp)
callq 0x4590
movq -0x270(%rbp), %rdx
leaq 0x1077d(%rip), %rsi     # 0x2b96c
leaq -0x28(%rbp), %rdi
callq 0x52e0
jmp 0x1b1fa
movq -0x268(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x19260
jmp 0x1b20c
leaq -0x28(%rbp), %rdi
callq 0x41e0
leaq -0x29(%rbp), %rdi
callq 0x4360
movq -0x268(%rbp), %rdi
movl $0x28, %esi
callq 0x18eb0
jmp 0x1bc93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1b257
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x41e0
leaq -0x29(%rbp), %rdi
callq 0x4360
jmp 0x1bcb4
movq -0x268(%rbp), %rdi
movl $0x1, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1b27f
jmp 0x1b804
movq -0x268(%rbp), %rax
cmpl $0x20, 0x58(%rax)
jne 0x1b2ae
movq -0x268(%rbp), %rdi
callq 0x19370
movq -0x268(%rbp), %rdi
movl $0x28, %esi
callq 0x18eb0
jmp 0x1bcab
movq -0x268(%rbp), %rax
cmpl $0x18, 0x58(%rax)
jne 0x1b349
movq -0x268(%rbp), %rdi
movl $0x13, %esi
callq 0x190f0
movq -0x268(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x70(%rbp), %rdi
movq %rdi, -0x278(%rbp)
callq 0x14170
movq -0x268(%rbp), %rdi
movq -0x278(%rbp), %rsi
callq 0x19290
jmp 0x1b304
leaq -0x70(%rbp), %rdi
callq 0x285a0
movq -0x268(%rbp), %rdi
callq 0x18c60
movq -0x268(%rbp), %rdi
movl $0x28, %esi
callq 0x18eb0
jmp 0x1b7fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x285a0
jmp 0x1bcb4
movq -0x268(%rbp), %rax
cmpl $0x19, 0x58(%rax)
jne 0x1b3ed
movq -0x268(%rbp), %rdi
movl $0x14, %esi
callq 0x190f0
movq -0x268(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0xa0(%rbp), %rdi
movq %rdi, -0x280(%rbp)
callq 0x14170
movq -0x268(%rbp), %rdi
movq -0x280(%rbp), %rsi
callq 0x19290
jmp 0x1b3a2
leaq -0xa0(%rbp), %rdi
callq 0x285a0
movq -0x268(%rbp), %rdi
callq 0x18c60
movq -0x268(%rbp), %rdi
movl $0x28, %esi
callq 0x18eb0
jmp 0x1b7fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x285a0
jmp 0x1bcb4
movq -0x268(%rbp), %rax
cmpl $0x22, 0x58(%rax)
jne 0x1b658
movq -0x268(%rbp), %rdi
movl $0x6, %esi
callq 0x190f0
movq -0x268(%rbp), %rdi
movl $0x19, %esi
callq 0x190f0
movq -0x268(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0x14170
movq -0x268(%rbp), %rdi
movq -0x288(%rbp), %rsi
callq 0x19290
jmp 0x1b457
leaq -0xd0(%rbp), %rdi
callq 0x285a0
movq -0x268(%rbp), %rdi
callq 0x18c60
movq -0x268(%rbp), %rdi
movl $0x13, %esi
callq 0x18eb0
movq -0x268(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x100(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x14170
movq -0x268(%rbp), %rdi
movq -0x290(%rbp), %rsi
callq 0x19290
jmp 0x1b4b7
leaq -0x100(%rbp), %rdi
callq 0x285a0
movq -0x268(%rbp), %rdi
movl $0x23, %esi
callq 0x18eb0
movq -0x268(%rbp), %rdi
callq 0x19240
movq -0x268(%rbp), %rax
cmpl $0x2a, 0x58(%rax)
je 0x1b5cf
movq -0x268(%rbp), %rax
cmpl $0x2b, 0x58(%rax)
je 0x1b5cf
movq -0x268(%rbp), %rax
cmpl $0x2c, 0x58(%rax)
je 0x1b5cf
movq -0x268(%rbp), %rax
cmpl $0x2d, 0x58(%rax)
je 0x1b5cf
movq -0x268(%rbp), %rax
cmpl $0x2e, 0x58(%rax)
je 0x1b5cf
movl $0x50, %edi
callq 0x4190
movq -0x268(%rbp), %rsi
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x298(%rbp)
addq $0x38, %rsi
callq 0x9030
jmp 0x1b55e
movq -0x298(%rbp), %rdi
leaq 0x1e7e4(%rip), %rsi     # 0x39d50
leaq -0x12303(%rip), %rdx    # 0x9270
callq 0x4550
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x285a0
jmp 0x1bcb4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x285a0
jmp 0x1bcb4
movq -0x298(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0x4230
jmp 0x1bcb4
movq -0x268(%rbp), %rax
movl 0x58(%rax), %esi
leaq -0x120(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
callq 0x1bcc0
movq -0x268(%rbp), %rdi
movq -0x2a0(%rbp), %rsi
callq 0x19260
jmp 0x1b601
leaq -0x120(%rbp), %rdi
callq 0x41e0
movq -0x268(%rbp), %rdi
callq 0x18c60
movq -0x268(%rbp), %rdi
callq 0x195a0
movq -0x268(%rbp), %rdi
movl $0x28, %esi
callq 0x18eb0
jmp 0x1b7f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x41e0
jmp 0x1bcb4
movq -0x268(%rbp), %rax
cmpl $0x2a, 0x58(%rax)
je 0x1b69d
movq -0x268(%rbp), %rax
cmpl $0x2b, 0x58(%rax)
je 0x1b69d
movq -0x268(%rbp), %rax
cmpl $0x2c, 0x58(%rax)
je 0x1b69d
movq -0x268(%rbp), %rax
cmpl $0x2d, 0x58(%rax)
je 0x1b69d
movq -0x268(%rbp), %rax
cmpl $0x2e, 0x58(%rax)
jne 0x1b797
movq -0x268(%rbp), %rdi
movl $0x6, %esi
callq 0x190f0
movq -0x268(%rbp), %rax
movl 0x58(%rax), %esi
leaq -0x140(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
callq 0x1bcc0
movq -0x268(%rbp), %rdi
movq -0x2a8(%rbp), %rsi
callq 0x19260
jmp 0x1b6e0
leaq -0x140(%rbp), %rdi
callq 0x41e0
movq -0x268(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x170(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0x14170
movq -0x268(%rbp), %rdi
movq -0x2b0(%rbp), %rsi
callq 0x19290
jmp 0x1b723
leaq -0x170(%rbp), %rdi
callq 0x285a0
movq -0x268(%rbp), %rdi
callq 0x18c60
movq -0x268(%rbp), %rdi
callq 0x195a0
movq -0x268(%rbp), %rdi
movl $0x28, %esi
callq 0x18eb0
jmp 0x1b7f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x41e0
jmp 0x1bcb4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x285a0
jmp 0x1bcb4
movl $0x50, %edi
callq 0x4190
movq -0x268(%rbp), %rsi
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x2b8(%rbp)
addq $0x38, %rsi
callq 0x9030
jmp 0x1b7c0
movq -0x2b8(%rbp), %rdi
leaq 0x1e582(%rip), %rsi     # 0x39d50
leaq -0x12565(%rip), %rdx    # 0x9270
callq 0x4550
movq -0x2b8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0x4230
jmp 0x1bcb4
jmp 0x1b7f9
jmp 0x1b7fb
jmp 0x1b7fd
jmp 0x1b7ff
jmp 0x1bc91
movq -0x268(%rbp), %rdi
movl $0x7, %r8d
movl $0x5, %edx
movl $0x6, %ecx
movl $0x9, %r9d
movl %r8d, %esi
movl $0x8, (%rsp)
movl $0xa, 0x8(%rsp)
movl $0xb, 0x10(%rsp)
movb $0x0, %al
callq 0x18d60
testb $0x1, %al
jne 0x1b84b
jmp 0x1bc32
movq -0x268(%rbp), %rdi
movl $0x4, %esi
callq 0x190f0
movq -0x268(%rbp), %rax
cmpl $0x22, 0x58(%rax)
jne 0x1b982
movq -0x268(%rbp), %rdi
movl $0x19, %esi
callq 0x190f0
movq -0x268(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x1a0(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x14170
movq -0x268(%rbp), %rdi
movq -0x2c0(%rbp), %rsi
callq 0x19290
jmp 0x1b8b5
leaq -0x1a0(%rbp), %rdi
callq 0x285a0
movq -0x268(%rbp), %rdi
movl $0x22, %esi
callq 0x18eb0
movq -0x268(%rbp), %rdi
movl $0x13, %esi
callq 0x18eb0
movq -0x268(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x1d0(%rbp), %rdi
movq %rdi, -0x2c8(%rbp)
callq 0x14170
movq -0x268(%rbp), %rdi
movq -0x2c8(%rbp), %rsi
callq 0x19290
jmp 0x1b91a
leaq -0x1d0(%rbp), %rdi
callq 0x285a0
movq -0x268(%rbp), %rdi
movl $0x23, %esi
callq 0x18eb0
movq -0x268(%rbp), %rdi
callq 0x19240
jmp 0x1b9e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x285a0
jmp 0x1bcb4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x285a0
jmp 0x1bcb4
movq -0x268(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x200(%rbp), %rdi
movq %rdi, -0x2d0(%rbp)
callq 0x14170
movq -0x268(%rbp), %rdi
movq -0x2d0(%rbp), %rsi
callq 0x19290
jmp 0x1b9b9
leaq -0x200(%rbp), %rdi
callq 0x285a0
jmp 0x1b9e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x285a0
jmp 0x1bcb4
movq -0x268(%rbp), %rdi
movl $0x4, %esi
callq 0x18d20
andb $0x1, %al
movb %al, -0x201(%rbp)
testb $0x1, -0x201(%rbp)
je 0x1ba9f
leaq -0x229(%rbp), %rdi
movq %rdi, -0x2d8(%rbp)
callq 0x4590
movq -0x2d8(%rbp), %rdx
leaq 0xfa25(%rip), %rsi      # 0x2b450
leaq -0x228(%rbp), %rdi
callq 0x52e0
jmp 0x1ba39
movq -0x268(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x19260
jmp 0x1ba4e
leaq -0x228(%rbp), %rdi
callq 0x41e0
leaq -0x229(%rbp), %rdi
callq 0x4360
jmp 0x1ba9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x1ba8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x41e0
leaq -0x229(%rbp), %rdi
callq 0x4360
jmp 0x1bcb4
movq -0x268(%rbp), %rdi
movl $0x1, %esi
callq 0x18eb0
movq -0x268(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x260(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
callq 0x14170
movq -0x268(%rbp), %rdi
movq -0x2e0(%rbp), %rsi
callq 0x19290
jmp 0x1bae7
leaq -0x260(%rbp), %rdi
callq 0x285a0
testb $0x1, -0x201(%rbp)
jne 0x1bbdd
movq -0x268(%rbp), %rdi
movl $0x6, %esi
callq 0x190f0
movq -0x268(%rbp), %rdi
movl $0x2a, %esi
callq 0x18eb0
movq -0x268(%rbp), %rdi
movl $0x22, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1bb3c
jmp 0x1bbc3
movq -0x268(%rbp), %rdi
movl $0x19, %esi
callq 0x190f0
movq -0x268(%rbp), %rdi
movl $0x23, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1bbb5
jmp 0x1bb64
movq -0x268(%rbp), %rdi
callq 0x195a0
movq -0x268(%rbp), %rdi
movl $0x29, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1bb64
movq -0x268(%rbp), %rdi
movl $0x23, %esi
callq 0x18eb0
jmp 0x1bbb5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x285a0
jmp 0x1bcb4
movq -0x268(%rbp), %rdi
callq 0x19240
jmp 0x1bbcf
movq -0x268(%rbp), %rdi
callq 0x195a0
movq -0x268(%rbp), %rdi
callq 0x19240
jmp 0x1bc1f
movq -0x268(%rbp), %rdi
movl $0x2a, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1bbf4
jmp 0x1bc1d
movq -0x268(%rbp), %rdi
movl $0x6, %esi
callq 0x190f0
movq -0x268(%rbp), %rdi
callq 0x195a0
movq -0x268(%rbp), %rdi
callq 0x19240
jmp 0x1bc1f
movq -0x268(%rbp), %rdi
movl $0x28, %esi
callq 0x18eb0
jmp 0x1bc8f
movl $0x50, %edi
callq 0x4190
movq -0x268(%rbp), %rsi
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x2e8(%rbp)
addq $0x38, %rsi
callq 0x9030
jmp 0x1bc5b
movq -0x2e8(%rbp), %rdi
leaq 0x1e0e7(%rip), %rsi     # 0x39d50
leaq -0x12a00(%rip), %rdx    # 0x9270
callq 0x4550
movq -0x2e8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0x4230
jmp 0x1bcb4
jmp 0x1bc91
jmp 0x1bc93
jmp 0x1bc95
jmp 0x1bc97
jmp 0x1bc99
jmp 0x1bc9b
jmp 0x1bc9d
jmp 0x1bc9f
movq -0x268(%rbp), %rdi
callq 0x19240
addq $0x300, %rsp            # imm = 0x300
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x4580
nopl (%rax)