// File: RuiDGPires[P]CrimLang/src/generator.cpp
// Function: gc_Tracker::comparison(crl::Node*, std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char>>&)
u32 _gc_Tracker::comparison(crl::Node *node, std::stringstream &stream){
	size_t size = node->children.size();
	size_t i = 0;

	u32 reg1 = this->basic_expression(node->get_child(i++), stream);
	std::string name1 = reg_tracker.reg_name(reg1);

	for (; i < size; i += 2){
		u32 reg2 = this->basic_expression(node->get_child(i+1), stream);
		bool is_signed = node->get_child(0)->annotation == "i32";
		if (get_token(node->get_child(i)).type == crl::Token::Type::EQL)
			stream << "XOR " << name1 << " " << reg_tracker.reg_name(reg2) << "\n" <<
				"LNOT " << name1 << "\n";
		else if (get_token(node->get_child(i)).type == crl::Token::Type::NEQ)
			stream << "XOR " << name1 << " " << reg_tracker.reg_name(reg2) << "\n";
		else if (get_token(node->get_child(i)).type == crl::Token::Type::GTR)
			stream << "GT" << std::string(is_signed ? "I": "U") << " " << name1 << " " << reg_tracker.reg_name(reg2) << "\n"; 
		else if (get_token(node->get_child(i)).type == crl::Token::Type::LEQ)
			stream << "GT" << std::string(is_signed ? "I": "U") << " " << name1 << " " << reg_tracker.reg_name(reg2) << "\n" <<
				"LNOT " << name1 << "\n";
		else if (get_token(node->get_child(i)).type == crl::Token::Type::GEQ){
			u32 reg3 = reg_tracker.alloc();
			std::string name2 = reg_tracker.reg_name(reg2);
			std::string name3 = reg_tracker.reg_name(reg3);

			stream <<
				"MOV " << name3 << " " << name1 << "\n" <<
				"GT" << std::string(is_signed ? "I": "U") << " " << name1 << " " << name2 << "\n" <<
				"XOR " << name2 << " " << name3 << "\n" <<
				"LNOT " << name2 << "\n" <<
				"LOR " << name1 << " " << name2 << "\n";
			reg_tracker.free(reg3);
		} else if (get_token(node->get_child(i)).type == crl::Token::Type::LSS){
			u32 reg3 = reg_tracker.alloc();
			std::string name2 = reg_tracker.reg_name(reg2);
			std::string name3 = reg_tracker.reg_name(reg3);

			stream <<
				"MOV " << name3 << " " << name1 << "\n" <<
				"GT" << std::string(is_signed ? "I": "U") << " " << name1 << " " << name2 << "\n" <<
				"LNOT " << name1 << "\n" <<
				"XOR " << name2 << " " << name3 << "\n" <<
				"LAND " << name1 << " " << name2 << "\n";
			reg_tracker.free(reg3);
		}

		reg_tracker.free(reg2);
	}
	return reg1; 
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x680, %rsp            # imm = 0x680
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x340(%rbp)
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
callq 0x51d0
movq %rax, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x28(%rbp)
movl %eax, %esi
movq (%rdi), %rax
callq *0x18(%rax)
movq -0x340(%rbp), %rdi
movq %rax, %rsi
movq -0x18(%rbp), %rdx
callq 0xbcd0
movq -0x340(%rbp), %rsi
movl %eax, -0x2c(%rbp)
addq $0x500, %rsi            # imm = 0x500
movl -0x2c(%rbp), %edx
leaq -0x50(%rbp), %rdi
callq 0x13040
movq -0x28(%rbp), %rax
cmpq -0x20(%rbp), %rax
jae 0xd407
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
incl %esi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, -0x348(%rbp)
jmp 0xc34f
movq -0x348(%rbp), %rsi
movq -0x340(%rbp), %rdi
movq -0x18(%rbp), %rdx
callq 0xbcd0
movl %eax, -0x34c(%rbp)
jmp 0xc36e
movl -0x34c(%rbp), %eax
movl %eax, -0x54(%rbp)
movq -0x10(%rbp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
xorl %esi, %esi
callq *%rax
movq %rax, -0x358(%rbp)
jmp 0xc38f
movq -0x358(%rbp), %rdi
addq $0x30, %rdi
leaq 0x1ef2d(%rip), %rsi     # 0x2b2ce
callq 0x66e0
movb %al, -0x359(%rbp)
jmp 0xc3ae
movb -0x359(%rbp), %al
andb $0x1, %al
movb %al, -0x65(%rbp)
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, -0x368(%rbp)
jmp 0xc3d2
movq -0x368(%rbp), %rsi
leaq -0x98(%rbp), %rdi
callq 0xa2e0
jmp 0xc3e7
movl -0x78(%rbp), %eax
movl %eax, -0x36c(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x285a0
movl -0x36c(%rbp), %eax
cmpl $0x2f, %eax
jne 0xc53d
movq -0x18(%rbp), %rdi
addq $0x10, %rdi
leaq 0x1eeb8(%rip), %rsi     # 0x2b2d2
callq 0x42e0
movq %rax, -0x378(%rbp)
jmp 0xc428
movq -0x378(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42c0
movq %rax, -0x380(%rbp)
jmp 0xc441
movq -0x380(%rbp), %rdi
leaq 0x1ebb6(%rip), %rsi     # 0x2b005
callq 0x42e0
movq %rax, -0x388(%rbp)
jmp 0xc45d
movq -0x340(%rbp), %rsi
addq $0x500, %rsi            # imm = 0x500
movl -0x54(%rbp), %edx
leaq -0xb8(%rbp), %rdi
callq 0x13040
jmp 0xc47c
movq -0x388(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x42c0
movq %rax, -0x390(%rbp)
jmp 0xc498
movq -0x390(%rbp), %rdi
leaq 0x1f03d(%rip), %rsi     # 0x2b4e3
callq 0x42e0
movq %rax, -0x398(%rbp)
jmp 0xc4b4
movq -0x398(%rbp), %rdi
leaq 0x1ee15(%rip), %rsi     # 0x2b2d7
callq 0x42e0
movq %rax, -0x3a0(%rbp)
jmp 0xc4d0
movq -0x3a0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42c0
movq %rax, -0x3a8(%rbp)
jmp 0xc4e9
movq -0x3a8(%rbp), %rdi
leaq 0x1efec(%rip), %rsi     # 0x2b4e3
callq 0x42e0
jmp 0xc4fe
leaq -0xb8(%rbp), %rdi
callq 0x41e0
jmp 0xd3dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0xd428
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x41e0
jmp 0xd428
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, -0x3b0(%rbp)
jmp 0xc556
movq -0x3b0(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0xa2e0
jmp 0xc56b
movl -0xc8(%rbp), %eax
movl %eax, -0x3b4(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x285a0
movl -0x3b4(%rbp), %eax
cmpl $0x34, %eax
jne 0xc662
movq -0x18(%rbp), %rdi
addq $0x10, %rdi
leaq 0x1ed31(%rip), %rsi     # 0x2b2d2
callq 0x42e0
movq %rax, -0x3c0(%rbp)
jmp 0xc5af
movq -0x3c0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42c0
movq %rax, -0x3c8(%rbp)
jmp 0xc5c8
movq -0x3c8(%rbp), %rdi
leaq 0x1ea2f(%rip), %rsi     # 0x2b005
callq 0x42e0
movq %rax, -0x3d0(%rbp)
jmp 0xc5e4
movq -0x340(%rbp), %rsi
addq $0x500, %rsi            # imm = 0x500
movl -0x54(%rbp), %edx
leaq -0x108(%rbp), %rdi
callq 0x13040
jmp 0xc603
movq -0x3d0(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x42c0
movq %rax, -0x3d8(%rbp)
jmp 0xc61f
movq -0x3d8(%rbp), %rdi
leaq 0x1eeb6(%rip), %rsi     # 0x2b4e3
callq 0x42e0
jmp 0xc634
leaq -0x108(%rbp), %rdi
callq 0x41e0
jmp 0xd3da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x41e0
jmp 0xd428
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, -0x3e0(%rbp)
jmp 0xc67b
movq -0x3e0(%rbp), %rsi
leaq -0x138(%rbp), %rdi
callq 0xa2e0
jmp 0xc690
movl -0x118(%rbp), %eax
movl %eax, -0x3e4(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x285a0
movl -0x3e4(%rbp), %eax
cmpl $0x32, %eax
jne 0xc86e
movq -0x18(%rbp), %rdi
addq $0x10, %rdi
leaq 0x1ec17(%rip), %rsi     # 0x2b2dd
callq 0x42e0
movq %rax, -0x3f0(%rbp)
jmp 0xc6d4
testb $0x1, -0x65(%rbp)
je 0xc6ea
leaq 0x1ebff(%rip), %rax     # 0x2b2e0
movq %rax, -0x3f8(%rbp)
jmp 0xc6fa
leaq 0x1ebf1(%rip), %rax     # 0x2b2e2
movq %rax, -0x3f8(%rbp)
jmp 0xc6fa
movq -0x3f8(%rbp), %rax
movq %rax, -0x408(%rbp)
leaq -0x159(%rbp), %rdi
movq %rdi, -0x400(%rbp)
callq 0x4590
movq -0x408(%rbp), %rsi
movq -0x400(%rbp), %rdx
leaq -0x158(%rbp), %rdi
callq 0x52e0
jmp 0xc737
movq -0x3f0(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x42c0
movq %rax, -0x410(%rbp)
jmp 0xc753
movq -0x410(%rbp), %rdi
leaq 0x1e8a4(%rip), %rsi     # 0x2b005
callq 0x42e0
movq %rax, -0x418(%rbp)
jmp 0xc76f
movq -0x418(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42c0
movq %rax, -0x420(%rbp)
jmp 0xc788
movq -0x420(%rbp), %rdi
leaq 0x1e86f(%rip), %rsi     # 0x2b005
callq 0x42e0
movq %rax, -0x428(%rbp)
jmp 0xc7a4
movq -0x340(%rbp), %rsi
addq $0x500, %rsi            # imm = 0x500
movl -0x54(%rbp), %edx
leaq -0x180(%rbp), %rdi
callq 0x13040
jmp 0xc7c3
movq -0x428(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x42c0
movq %rax, -0x430(%rbp)
jmp 0xc7df
movq -0x430(%rbp), %rdi
leaq 0x1ecf6(%rip), %rsi     # 0x2b4e3
callq 0x42e0
jmp 0xc7f4
leaq -0x180(%rbp), %rdi
callq 0x41e0
leaq -0x158(%rbp), %rdi
callq 0x41e0
leaq -0x159(%rbp), %rdi
callq 0x4360
jmp 0xd3d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0xc85d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0xc851
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x41e0
leaq -0x158(%rbp), %rdi
callq 0x41e0
leaq -0x159(%rbp), %rdi
callq 0x4360
jmp 0xd428
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, -0x438(%rbp)
jmp 0xc887
movq -0x438(%rbp), %rsi
leaq -0x1b0(%rbp), %rdi
callq 0xa2e0
jmp 0xc89c
movl -0x190(%rbp), %eax
movl %eax, -0x43c(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x285a0
movl -0x43c(%rbp), %eax
cmpl $0x31, %eax
jne 0xcacb
movq -0x18(%rbp), %rdi
addq $0x10, %rdi
leaq 0x1ea0b(%rip), %rsi     # 0x2b2dd
callq 0x42e0
movq %rax, -0x448(%rbp)
jmp 0xc8e0
testb $0x1, -0x65(%rbp)
je 0xc8f6
leaq 0x1e9f3(%rip), %rax     # 0x2b2e0
movq %rax, -0x450(%rbp)
jmp 0xc906
leaq 0x1e9e5(%rip), %rax     # 0x2b2e2
movq %rax, -0x450(%rbp)
jmp 0xc906
movq -0x450(%rbp), %rax
movq %rax, -0x460(%rbp)
leaq -0x1d1(%rbp), %rdi
movq %rdi, -0x458(%rbp)
callq 0x4590
movq -0x460(%rbp), %rsi
movq -0x458(%rbp), %rdx
leaq -0x1d0(%rbp), %rdi
callq 0x52e0
jmp 0xc943
movq -0x448(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x42c0
movq %rax, -0x468(%rbp)
jmp 0xc95f
movq -0x468(%rbp), %rdi
leaq 0x1e698(%rip), %rsi     # 0x2b005
callq 0x42e0
movq %rax, -0x470(%rbp)
jmp 0xc97b
movq -0x470(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42c0
movq %rax, -0x478(%rbp)
jmp 0xc994
movq -0x478(%rbp), %rdi
leaq 0x1e663(%rip), %rsi     # 0x2b005
callq 0x42e0
movq %rax, -0x480(%rbp)
jmp 0xc9b0
movq -0x340(%rbp), %rsi
addq $0x500, %rsi            # imm = 0x500
movl -0x54(%rbp), %edx
leaq -0x1f8(%rbp), %rdi
callq 0x13040
jmp 0xc9cf
movq -0x480(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x42c0
movq %rax, -0x488(%rbp)
jmp 0xc9eb
movq -0x488(%rbp), %rdi
leaq 0x1eaea(%rip), %rsi     # 0x2b4e3
callq 0x42e0
movq %rax, -0x490(%rbp)
jmp 0xca07
movq -0x490(%rbp), %rdi
leaq 0x1e8c2(%rip), %rsi     # 0x2b2d7
callq 0x42e0
movq %rax, -0x498(%rbp)
jmp 0xca23
movq -0x498(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42c0
movq %rax, -0x4a0(%rbp)
jmp 0xca3c
movq -0x4a0(%rbp), %rdi
leaq 0x1ea99(%rip), %rsi     # 0x2b4e3
callq 0x42e0
jmp 0xca51
leaq -0x1f8(%rbp), %rdi
callq 0x41e0
leaq -0x1d0(%rbp), %rdi
callq 0x41e0
leaq -0x1d1(%rbp), %rdi
callq 0x4360
jmp 0xd3d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0xcaba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0xcaae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x41e0
leaq -0x1d0(%rbp), %rdi
callq 0x41e0
leaq -0x1d1(%rbp), %rdi
callq 0x4360
jmp 0xd428
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, -0x4a8(%rbp)
jmp 0xcae4
movq -0x4a8(%rbp), %rsi
leaq -0x228(%rbp), %rdi
callq 0xa2e0
jmp 0xcaf9
movl -0x208(%rbp), %eax
movl %eax, -0x4ac(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x285a0
movl -0x4ac(%rbp), %eax
cmpl $0x30, %eax
jne 0xcf53
movq -0x340(%rbp), %rdi
addq $0x500, %rdi            # imm = 0x500
callq 0x12ee0
movl %eax, -0x4b0(%rbp)
jmp 0xcb3b
movq -0x340(%rbp), %rsi
movl -0x4b0(%rbp), %eax
movl %eax, -0x22c(%rbp)
addq $0x500, %rsi            # imm = 0x500
movl -0x54(%rbp), %edx
leaq -0x250(%rbp), %rdi
callq 0x13040
jmp 0xcb66
movq -0x340(%rbp), %rsi
addq $0x500, %rsi            # imm = 0x500
movl -0x22c(%rbp), %edx
leaq -0x270(%rbp), %rdi
callq 0x13040
jmp 0xcb88
movq -0x18(%rbp), %rdi
addq $0x10, %rdi
leaq 0x1e74d(%rip), %rsi     # 0x2b2e4
callq 0x42e0
movq %rax, -0x4b8(%rbp)
jmp 0xcba5
movq -0x4b8(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x42c0
movq %rax, -0x4c0(%rbp)
jmp 0xcbc1
movq -0x4c0(%rbp), %rdi
leaq 0x1e436(%rip), %rsi     # 0x2b005
callq 0x42e0
movq %rax, -0x4c8(%rbp)
jmp 0xcbdd
movq -0x4c8(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42c0
movq %rax, -0x4d0(%rbp)
jmp 0xcbf6
movq -0x4d0(%rbp), %rdi
leaq 0x1e8df(%rip), %rsi     # 0x2b4e3
callq 0x42e0
movq %rax, -0x4d8(%rbp)
jmp 0xcc12
movq -0x4d8(%rbp), %rdi
leaq 0x1e6bd(%rip), %rsi     # 0x2b2dd
callq 0x42e0
movq %rax, -0x4e0(%rbp)
jmp 0xcc2e
testb $0x1, -0x65(%rbp)
je 0xcc44
leaq 0x1e6a5(%rip), %rax     # 0x2b2e0
movq %rax, -0x4e8(%rbp)
jmp 0xcc54
leaq 0x1e697(%rip), %rax     # 0x2b2e2
movq %rax, -0x4e8(%rbp)
jmp 0xcc54
movq -0x4e8(%rbp), %rax
movq %rax, -0x4f8(%rbp)
leaq -0x291(%rbp), %rdi
movq %rdi, -0x4f0(%rbp)
callq 0x4590
movq -0x4f8(%rbp), %rsi
movq -0x4f0(%rbp), %rdx
leaq -0x290(%rbp), %rdi
callq 0x52e0
jmp 0xcc91
movq -0x4e0(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x42c0
movq %rax, -0x500(%rbp)
jmp 0xccad
movq -0x500(%rbp), %rdi
leaq 0x1e34a(%rip), %rsi     # 0x2b005
callq 0x42e0
movq %rax, -0x508(%rbp)
jmp 0xccc9
movq -0x508(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42c0
movq %rax, -0x510(%rbp)
jmp 0xcce2
movq -0x510(%rbp), %rdi
leaq 0x1e315(%rip), %rsi     # 0x2b005
callq 0x42e0
movq %rax, -0x518(%rbp)
jmp 0xccfe
movq -0x518(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x42c0
movq %rax, -0x520(%rbp)
jmp 0xcd1a
movq -0x520(%rbp), %rdi
leaq 0x1e7bb(%rip), %rsi     # 0x2b4e3
callq 0x42e0
movq %rax, -0x528(%rbp)
jmp 0xcd36
movq -0x528(%rbp), %rdi
leaq 0x1e58e(%rip), %rsi     # 0x2b2d2
callq 0x42e0
movq %rax, -0x530(%rbp)
jmp 0xcd52
movq -0x530(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x42c0
movq %rax, -0x538(%rbp)
jmp 0xcd6e
movq -0x538(%rbp), %rdi
leaq 0x1e289(%rip), %rsi     # 0x2b005
callq 0x42e0
movq %rax, -0x540(%rbp)
jmp 0xcd8a
movq -0x540(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x42c0
movq %rax, -0x548(%rbp)
jmp 0xcda6
movq -0x548(%rbp), %rdi
leaq 0x1e72f(%rip), %rsi     # 0x2b4e3
callq 0x42e0
movq %rax, -0x550(%rbp)
jmp 0xcdc2
movq -0x550(%rbp), %rdi
leaq 0x1e507(%rip), %rsi     # 0x2b2d7
callq 0x42e0
movq %rax, -0x558(%rbp)
jmp 0xcdde
movq -0x558(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x42c0
movq %rax, -0x560(%rbp)
jmp 0xcdfa
movq -0x560(%rbp), %rdi
leaq 0x1e6db(%rip), %rsi     # 0x2b4e3
callq 0x42e0
movq %rax, -0x568(%rbp)
jmp 0xce16
movq -0x568(%rbp), %rdi
leaq 0x1e4c5(%rip), %rsi     # 0x2b2e9
callq 0x42e0
movq %rax, -0x570(%rbp)
jmp 0xce32
movq -0x570(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42c0
movq %rax, -0x578(%rbp)
jmp 0xce4b
movq -0x578(%rbp), %rdi
leaq 0x1e1ac(%rip), %rsi     # 0x2b005
callq 0x42e0
movq %rax, -0x580(%rbp)
jmp 0xce67
movq -0x580(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x42c0
movq %rax, -0x588(%rbp)
jmp 0xce83
movq -0x588(%rbp), %rdi
leaq 0x1e652(%rip), %rsi     # 0x2b4e3
callq 0x42e0
jmp 0xce98
leaq -0x290(%rbp), %rdi
callq 0x41e0
leaq -0x291(%rbp), %rdi
callq 0x4360
movq -0x340(%rbp), %rdi
addq $0x500, %rdi            # imm = 0x500
movl -0x22c(%rbp), %esi
callq 0x13240
jmp 0xcecb
leaq -0x270(%rbp), %rdi
callq 0x41e0
leaq -0x250(%rbp), %rdi
callq 0x41e0
jmp 0xd3d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0xcf42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0xcf36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0xcf2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x41e0
leaq -0x291(%rbp), %rdi
callq 0x4360
leaq -0x270(%rbp), %rdi
callq 0x41e0
leaq -0x250(%rbp), %rdi
callq 0x41e0
jmp 0xd428
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, -0x590(%rbp)
jmp 0xcf6c
movq -0x590(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0xa2e0
jmp 0xcf81
movl -0x2a8(%rbp), %eax
movl %eax, -0x594(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x285a0
movl -0x594(%rbp), %eax
cmpl $0x33, %eax
jne 0xd3d2
movq -0x340(%rbp), %rdi
addq $0x500, %rdi            # imm = 0x500
callq 0x12ee0
movl %eax, -0x598(%rbp)
jmp 0xcfc3
movq -0x340(%rbp), %rsi
movl -0x598(%rbp), %eax
movl %eax, -0x2cc(%rbp)
addq $0x500, %rsi            # imm = 0x500
movl -0x54(%rbp), %edx
leaq -0x2f0(%rbp), %rdi
callq 0x13040
jmp 0xcfee
movq -0x340(%rbp), %rsi
addq $0x500, %rsi            # imm = 0x500
movl -0x2cc(%rbp), %edx
leaq -0x310(%rbp), %rdi
callq 0x13040
jmp 0xd010
movq -0x18(%rbp), %rdi
addq $0x10, %rdi
leaq 0x1e2c5(%rip), %rsi     # 0x2b2e4
callq 0x42e0
movq %rax, -0x5a0(%rbp)
jmp 0xd02d
movq -0x5a0(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x42c0
movq %rax, -0x5a8(%rbp)
jmp 0xd049
movq -0x5a8(%rbp), %rdi
leaq 0x1dfae(%rip), %rsi     # 0x2b005
callq 0x42e0
movq %rax, -0x5b0(%rbp)
jmp 0xd065
movq -0x5b0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42c0
movq %rax, -0x5b8(%rbp)
jmp 0xd07e
movq -0x5b8(%rbp), %rdi
leaq 0x1e457(%rip), %rsi     # 0x2b4e3
callq 0x42e0
movq %rax, -0x5c0(%rbp)
jmp 0xd09a
movq -0x5c0(%rbp), %rdi
leaq 0x1e235(%rip), %rsi     # 0x2b2dd
callq 0x42e0
movq %rax, -0x5c8(%rbp)
jmp 0xd0b6
testb $0x1, -0x65(%rbp)
je 0xd0cc
leaq 0x1e21d(%rip), %rax     # 0x2b2e0
movq %rax, -0x5d0(%rbp)
jmp 0xd0dc
leaq 0x1e20f(%rip), %rax     # 0x2b2e2
movq %rax, -0x5d0(%rbp)
jmp 0xd0dc
movq -0x5d0(%rbp), %rax
movq %rax, -0x5e0(%rbp)
leaq -0x331(%rbp), %rdi
movq %rdi, -0x5d8(%rbp)
callq 0x4590
movq -0x5e0(%rbp), %rsi
movq -0x5d8(%rbp), %rdx
leaq -0x330(%rbp), %rdi
callq 0x52e0
jmp 0xd119
movq -0x5c8(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x42c0
movq %rax, -0x5e8(%rbp)
jmp 0xd135
movq -0x5e8(%rbp), %rdi
leaq 0x1dec2(%rip), %rsi     # 0x2b005
callq 0x42e0
movq %rax, -0x5f0(%rbp)
jmp 0xd151
movq -0x5f0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42c0
movq %rax, -0x5f8(%rbp)
jmp 0xd16a
movq -0x5f8(%rbp), %rdi
leaq 0x1de8d(%rip), %rsi     # 0x2b005
callq 0x42e0
movq %rax, -0x600(%rbp)
jmp 0xd186
movq -0x600(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x42c0
movq %rax, -0x608(%rbp)
jmp 0xd1a2
movq -0x608(%rbp), %rdi
leaq 0x1e333(%rip), %rsi     # 0x2b4e3
callq 0x42e0
movq %rax, -0x610(%rbp)
jmp 0xd1be
movq -0x610(%rbp), %rdi
leaq 0x1e10b(%rip), %rsi     # 0x2b2d7
callq 0x42e0
movq %rax, -0x618(%rbp)
jmp 0xd1da
movq -0x618(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42c0
movq %rax, -0x620(%rbp)
jmp 0xd1f3
movq -0x620(%rbp), %rdi
leaq 0x1e2e2(%rip), %rsi     # 0x2b4e3
callq 0x42e0
movq %rax, -0x628(%rbp)
jmp 0xd20f
movq -0x628(%rbp), %rdi
leaq 0x1e0b5(%rip), %rsi     # 0x2b2d2
callq 0x42e0
movq %rax, -0x630(%rbp)
jmp 0xd22b
movq -0x630(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x42c0
movq %rax, -0x638(%rbp)
jmp 0xd247
movq -0x638(%rbp), %rdi
leaq 0x1ddb0(%rip), %rsi     # 0x2b005
callq 0x42e0
movq %rax, -0x640(%rbp)
jmp 0xd263
movq -0x640(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x42c0
movq %rax, -0x648(%rbp)
jmp 0xd27f
movq -0x648(%rbp), %rdi
leaq 0x1e256(%rip), %rsi     # 0x2b4e3
callq 0x42e0
movq %rax, -0x650(%rbp)
jmp 0xd29b
movq -0x650(%rbp), %rdi
leaq 0x1e045(%rip), %rsi     # 0x2b2ee
callq 0x42e0
movq %rax, -0x658(%rbp)
jmp 0xd2b7
movq -0x658(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x42c0
movq %rax, -0x660(%rbp)
jmp 0xd2d0
movq -0x660(%rbp), %rdi
leaq 0x1dd27(%rip), %rsi     # 0x2b005
callq 0x42e0
movq %rax, -0x668(%rbp)
jmp 0xd2ec
movq -0x668(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x42c0
movq %rax, -0x670(%rbp)
jmp 0xd308
movq -0x670(%rbp), %rdi
leaq 0x1e1cd(%rip), %rsi     # 0x2b4e3
callq 0x42e0
jmp 0xd31d
leaq -0x330(%rbp), %rdi
callq 0x41e0
leaq -0x331(%rbp), %rdi
callq 0x4360
movq -0x340(%rbp), %rdi
addq $0x500, %rdi            # imm = 0x500
movl -0x2cc(%rbp), %esi
callq 0x13240
jmp 0xd350
leaq -0x310(%rbp), %rdi
callq 0x41e0
leaq -0x2f0(%rbp), %rdi
callq 0x41e0
jmp 0xd3d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0xd3c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0xd3b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0xd3ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x330(%rbp), %rdi
callq 0x41e0
leaq -0x331(%rbp), %rdi
callq 0x4360
leaq -0x310(%rbp), %rdi
callq 0x41e0
leaq -0x2f0(%rbp), %rdi
callq 0x41e0
jmp 0xd428
jmp 0xd3d4
jmp 0xd3d6
jmp 0xd3d8
jmp 0xd3da
jmp 0xd3dc
movq -0x340(%rbp), %rdi
addq $0x500, %rdi            # imm = 0x500
movl -0x54(%rbp), %esi
callq 0x13240
jmp 0xd3f4
jmp 0xd3f6
movq -0x28(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x28(%rbp)
jmp 0xc326
movl -0x2c(%rbp), %eax
movl %eax, -0x674(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x41e0
movl -0x674(%rbp), %eax
addq $0x680, %rsp            # imm = 0x680
popq %rbp
retq
leaq -0x50(%rbp), %rdi
callq 0x41e0
movq -0x60(%rbp), %rdi
callq 0x4580
nopw (%rax,%rax)