// File: /workspace/github_cpp_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movq %rdx, %rbx
movq %rdi, %r15
movq (%rsi), %rax
movq 0x18(%rsi), %r12
subq 0x10(%rsi), %r12
sarq $0x3, %r12
movq %rsi, -0x98(%rbp)
movq %rsi, %rdi
xorl %esi, %esi
callq *0x18(%rax)
movq %r15, %rdi
movq %rax, %rsi
movq %rbx, -0xe8(%rbp)
movq %rbx, %rdx
callq 0x79b4
movq %r15, -0xf8(%rbp)
leaq 0x500(%r15), %rbx
leaq -0xb8(%rbp), %rdi
movq %rbx, %rsi
movl %eax, -0xdc(%rbp)
movl %eax, %edx
callq 0xdde4
movq %r12, -0xf0(%rbp)
cmpq $0x2, %r12
jb 0x8b5c
movq %rbx, %r12
movq -0xe8(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x68(%rbp)
movl $0x1, %ebx
leal 0x1(%rbx), %esi
movq -0x98(%rbp), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq -0xf8(%rbp), %rdi
movq %rax, %rsi
movq -0xe8(%rbp), %rdx
callq 0x79b4
movl %eax, -0x2c(%rbp)
movq %r12, %r14
movq -0x98(%rbp), %rdi
movq (%rdi), %rax
xorl %esi, %esi
callq *0x18(%rax)
addq $0x30, %rax
movq %rax, %rdi
leaq 0x132f1(%rip), %rsi     # 0x1b2ce
callq 0x30a0
movl %eax, -0x8c(%rbp)
movq -0x98(%rbp), %rdi
movq (%rdi), %rax
movq %rbx, %r13
movl %ebx, %esi
callq *0x18(%rax)
leaq -0x50(%rbp), %r12
leaq -0x60(%rbp), %rbx
movq %rax, %r15
movq %r12, -0x60(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x4d4a
movl 0x80(%r15), %eax
movl %eax, 0x18(%r12)
movq 0x78(%r15), %rax
movq %rax, 0x10(%r12)
movl -0x40(%rbp), %r15d
movq %rbx, %rdi
callq 0x192b0
cmpl $0x2f, %r15d
jne 0x810d
movl $0x4, %edx
movq -0x68(%rbp), %rdi
leaq 0x1327b(%rip), %rsi     # 0x1b2d2
callq 0x3280
movq %r13, %rbx
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq -0x68(%rbp), %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12f7d(%rip), %rsi     # 0x1b005
callq 0x3280
leaq -0x60(%rbp), %rdi
movq %r14, %r12
movq %r14, %rsi
movl -0x2c(%rbp), %edx
callq 0xdde4
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq %r15, %rdi
leaq -0x50(%rbp), %r13
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1341e(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x5, %edx
movq %r15, %rdi
leaq 0x131fe(%rip), %rsi     # 0x1b2d7
callq 0x3280
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movl $0x1, %edx
movq %rax, %rdi
leaq 0x133e0(%rip), %rsi     # 0x1b4e3
callq 0x3280
jmp 0x8aef
movq -0x98(%rbp), %rdi
movq (%rdi), %rax
movl %r13d, %esi
callq *0x18(%rax)
movq %rax, %r15
movq %r12, -0x60(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x4d4a
movl 0x80(%r15), %eax
movl %eax, 0x18(%r12)
movq 0x78(%r15), %rax
movq %rax, 0x10(%r12)
movl -0x40(%rbp), %r15d
movq %rbx, %rdi
callq 0x192b0
cmpl $0x34, %r15d
jne 0x81f4
movl $0x4, %edx
movq -0x68(%rbp), %rdi
leaq 0x13160(%rip), %rsi     # 0x1b2d2
callq 0x3280
movq %r13, %rbx
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq -0x68(%rbp), %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12e62(%rip), %rsi     # 0x1b005
callq 0x3280
leaq -0x60(%rbp), %rdi
movq %r14, %r12
movq %r14, %rsi
movl -0x2c(%rbp), %edx
callq 0xdde4
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq %r15, %rdi
leaq -0x50(%rbp), %r15
callq 0x3280
movl $0x1, %edx
movq %rax, %rdi
leaq 0x13306(%rip), %rsi     # 0x1b4e3
callq 0x3280
movq -0x60(%rbp), %rdi
cmpq %r15, %rdi
jne 0x8af8
jmp 0x8b04
movq -0x98(%rbp), %rdi
movq (%rdi), %rax
movl %r13d, %esi
callq *0x18(%rax)
movq %rax, %r15
movq %r12, -0x60(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x4d4a
movl 0x80(%r15), %eax
movl %eax, 0x18(%r12)
movq 0x78(%r15), %rax
movq %rax, 0x10(%r12)
movl -0x40(%rbp), %r15d
movq %rbx, %rdi
callq 0x192b0
cmpl $0x32, %r15d
jne 0x8333
movl $0x2, %edx
movq -0x68(%rbp), %rdi
leaq 0x13084(%rip), %rsi     # 0x1b2dd
callq 0x3280
movq %r13, %rbx
cmpl $0x0, -0x8c(%rbp)
leaq 0x13073(%rip), %rsi     # 0x1b2e2
leaq 0x1306a(%rip), %rax     # 0x1b2e0
cmoveq %rax, %rsi
leaq -0x50(%rbp), %r13
movq %r13, -0x60(%rbp)
leaq 0x1305a(%rip), %rdx     # 0x1b2e3
leaq 0x13051(%rip), %rax     # 0x1b2e1
cmoveq %rax, %rdx
leaq -0x60(%rbp), %rdi
callq 0x433a
movq %r14, %r12
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq -0x68(%rbp), %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12d42(%rip), %rsi     # 0x1b005
callq 0x3280
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12d15(%rip), %rsi     # 0x1b005
callq 0x3280
leaq -0x88(%rbp), %rdi
movq %r12, %rsi
movl -0x2c(%rbp), %edx
callq 0xdde4
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movl $0x1, %edx
movq %rax, %rdi
leaq 0x131ba(%rip), %rsi     # 0x1b4e3
callq 0x3280
jmp 0x8ad3
movq -0x98(%rbp), %rdi
movq (%rdi), %rax
movl %r13d, %esi
callq *0x18(%rax)
movq %rax, %r15
movq %r12, -0x60(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x4d4a
movl 0x80(%r15), %eax
movl %eax, 0x18(%r12)
movq 0x78(%r15), %rax
movq %rax, 0x10(%r12)
movl -0x40(%rbp), %r15d
movq %rbx, %rdi
callq 0x192b0
cmpl $0x31, %r15d
jne 0x84b3
movl $0x2, %edx
movq -0x68(%rbp), %rdi
leaq 0x12f45(%rip), %rsi     # 0x1b2dd
callq 0x3280
movq %r13, %rbx
cmpl $0x0, -0x8c(%rbp)
leaq 0x12f34(%rip), %rsi     # 0x1b2e2
leaq 0x12f2b(%rip), %rax     # 0x1b2e0
cmoveq %rax, %rsi
leaq -0x50(%rbp), %r13
movq %r13, -0x60(%rbp)
leaq 0x12f1b(%rip), %rdx     # 0x1b2e3
leaq 0x12f12(%rip), %rax     # 0x1b2e1
cmoveq %rax, %rdx
leaq -0x60(%rbp), %rdi
callq 0x433a
movq %r14, %r12
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq -0x68(%rbp), %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12c03(%rip), %rsi     # 0x1b005
callq 0x3280
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12bd6(%rip), %rsi     # 0x1b005
callq 0x3280
leaq -0x88(%rbp), %rdi
movq %r12, %rsi
movl -0x2c(%rbp), %edx
callq 0xdde4
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x13078(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x5, %edx
movq %r15, %rdi
leaq 0x12e58(%rip), %rsi     # 0x1b2d7
callq 0x3280
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1303a(%rip), %rsi     # 0x1b4e3
callq 0x3280
jmp 0x8ad3
movq -0x98(%rbp), %rdi
movq (%rdi), %rax
movl %r13d, %esi
callq *0x18(%rax)
movq %rax, %r15
movq %r12, -0x60(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x4d4a
movl 0x80(%r15), %eax
movl %eax, 0x18(%r12)
movq 0x78(%r15), %rax
movq %rax, 0x10(%r12)
movl -0x40(%rbp), %r15d
movq %rbx, %rdi
callq 0x192b0
cmpl $0x30, %r15d
jne 0x878f
movq %r14, %r12
movq %r14, %rdi
callq 0xdc9a
movl %eax, %r14d
movq %r13, %rbx
leaq -0x60(%rbp), %rdi
movq %r12, %rsi
movl -0x2c(%rbp), %edx
callq 0xdde4
leaq -0x88(%rbp), %rdi
movq %r12, %rsi
movl %r14d, %edx
callq 0xdde4
movl $0x4, %edx
movq -0x68(%rbp), %rdi
leaq 0x12d9a(%rip), %rsi     # 0x1b2e4
callq 0x3280
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq -0x68(%rbp), %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12a90(%rip), %rsi     # 0x1b005
callq 0x3280
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12f41(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x2, %edx
movq %r15, %rdi
leaq 0x12d27(%rip), %rsi     # 0x1b2dd
callq 0x3280
cmpl $0x0, -0x8c(%rbp)
leaq 0x12d19(%rip), %rsi     # 0x1b2e2
leaq 0x12d10(%rip), %rax     # 0x1b2e0
cmoveq %rax, %rsi
leaq -0xc8(%rbp), %rax
movq %rax, -0xd8(%rbp)
leaq 0x12cfa(%rip), %rdx     # 0x1b2e3
leaq 0x12cf1(%rip), %rax     # 0x1b2e1
cmoveq %rax, %rdx
leaq -0xd8(%rbp), %rdi
callq 0x433a
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
movq %r15, %rdi
leaq -0x50(%rbp), %r13
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x129d9(%rip), %rsi     # 0x1b005
callq 0x3280
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x129ac(%rip), %rsi     # 0x1b005
callq 0x3280
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12e63(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x4, %edx
movq %r15, %rdi
leaq 0x12c3e(%rip), %rsi     # 0x1b2d2
callq 0x3280
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1294a(%rip), %rsi     # 0x1b005
callq 0x3280
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12dfe(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x5, %edx
movq %r15, %rdi
leaq 0x12bde(%rip), %rsi     # 0x1b2d7
callq 0x3280
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12dc3(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x4, %edx
movq %r15, %rdi
leaq 0x12bb5(%rip), %rsi     # 0x1b2e9
callq 0x3280
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x128a4(%rip), %rsi     # 0x1b005
callq 0x3280
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12d5e(%rip), %rsi     # 0x1b4e3
callq 0x3280
jmp 0x8a6c
movq -0x98(%rbp), %rdi
movq (%rdi), %rax
movl %r13d, %esi
callq *0x18(%rax)
movq %rax, %r15
movq %r12, -0x60(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x4d4a
movl 0x80(%r15), %eax
movl %eax, 0x18(%r12)
movq 0x78(%r15), %rax
movq %rax, 0x10(%r12)
movl -0x40(%rbp), %r15d
movq %rbx, %rdi
callq 0x192b0
cmpl $0x33, %r15d
movq %r14, %r12
movq %r13, %rbx
jne 0x8b04
movq %r12, %rdi
callq 0xdc9a
movl %eax, %r14d
leaq -0x60(%rbp), %rdi
movq %r12, %rsi
movl -0x2c(%rbp), %edx
callq 0xdde4
leaq -0x88(%rbp), %rdi
movq %r12, %rsi
movl %r14d, %edx
callq 0xdde4
movl $0x4, %edx
movq -0x68(%rbp), %rdi
leaq 0x12abe(%rip), %rsi     # 0x1b2e4
callq 0x3280
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq -0x68(%rbp), %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x127b4(%rip), %rsi     # 0x1b005
callq 0x3280
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12c65(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x2, %edx
movq %r15, %rdi
leaq 0x12a4b(%rip), %rsi     # 0x1b2dd
callq 0x3280
cmpl $0x0, -0x8c(%rbp)
leaq 0x12a3d(%rip), %rsi     # 0x1b2e2
leaq 0x12a34(%rip), %rax     # 0x1b2e0
cmoveq %rax, %rsi
leaq -0xc8(%rbp), %rax
movq %rax, -0xd8(%rbp)
leaq 0x12a1e(%rip), %rdx     # 0x1b2e3
leaq 0x12a15(%rip), %rax     # 0x1b2e1
cmoveq %rax, %rdx
leaq -0xd8(%rbp), %rdi
callq 0x433a
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
movq %r15, %rdi
leaq -0x50(%rbp), %r13
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x126fd(%rip), %rsi     # 0x1b005
callq 0x3280
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x126d0(%rip), %rsi     # 0x1b005
callq 0x3280
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12b87(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x5, %edx
movq %r15, %rdi
leaq 0x12967(%rip), %rsi     # 0x1b2d7
callq 0x3280
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12b46(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x4, %edx
movq %r15, %rdi
leaq 0x12921(%rip), %rsi     # 0x1b2d2
callq 0x3280
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1262d(%rip), %rsi     # 0x1b005
callq 0x3280
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12ae1(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x5, %edx
movq %r15, %rdi
leaq 0x128d8(%rip), %rsi     # 0x1b2ee
callq 0x3280
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x125c2(%rip), %rsi     # 0x1b005
callq 0x3280
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12a7c(%rip), %rsi     # 0x1b4e3
callq 0x3280
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x8a8e
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x3230
movslq %r14d, %rax
leaq 0x3f(%rax), %rdx
testq %rax, %rax
cmovnsq %rax, %rdx
sarq $0x6, %rdx
shlq $0x3, %rdx
addq (%r12), %rdx
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
leaq 0x3f(%rsi), %rcx
andq %rax, %rcx
xorl %eax, %eax
cmpq %rsi, %rcx
setbe %al
movq $-0x2, %rsi
movl %r14d, %ecx
rolq %cl, %rsi
andq %rsi, -0x8(%rdx,%rax,8)
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x8aef
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x3230
movq -0x60(%rbp), %rdi
cmpq %r13, %rdi
je 0x8b04
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x3230
movl -0x2c(%rbp), %edi
movslq %edi, %rax
leaq 0x3f(%rax), %rdx
testq %rax, %rax
cmovnsq %rax, %rdx
sarq $0x6, %rdx
shlq $0x3, %rdx
addq (%r12), %rdx
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
leaq 0x3f(%rsi), %rcx
andq %rax, %rcx
xorl %eax, %eax
cmpq %rsi, %rcx
setbe %al
movq $-0x2, %rsi
movl %edi, %ecx
rolq %cl, %rsi
andq %rsi, -0x8(%rdx,%rax,8)
addq $0x2, %rbx
cmpq -0xf0(%rbp), %rbx
jb 0x7f94
leaq -0xa8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8b7b
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x3230
movl -0xdc(%rbp), %eax
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x8bdb
jmp 0x8be0
jmp 0x8c6a
jmp 0x8c6a
jmp 0x8bdb
jmp 0x8be0
jmp 0x8c6a
jmp 0x8c6a
jmp 0x8be0
jmp 0x8c6a
jmp 0x8c6a
jmp 0x8bdb
jmp 0x8be0
jmp 0x8c6a
jmp 0x8c6a
jmp 0x8bdb
jmp 0x8c6a
jmp 0x8be0
jmp 0x8c6a
jmp 0x8bdb
jmp 0x8bfa
movq %rax, %rbx
jmp 0x8c1f
movq %rax, %rbx
jmp 0x8c3b
jmp 0x8c6a
movq %rax, %rbx
movq -0x60(%rbp), %rdi
cmpq %r15, %rdi
jne 0x8c5c
jmp 0x8c6d
jmp 0x8c6a
movq %rax, %rbx
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x8c1f
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x3230
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x8c3b
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x3230
movq -0x60(%rbp), %rdi
leaq -0x50(%rbp), %rax
cmpq %rax, %rdi
jne 0x8c5c
jmp 0x8c6d
jmp 0x8c6a
jmp 0x8c6a
jmp 0x8c6a
movq %rax, %rbx
movq -0x60(%rbp), %rdi
cmpq %r13, %rdi
je 0x8c6d
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x3230
jmp 0x8c6d
movq %rax, %rbx
leaq -0xa8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8c8c
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x3230
movq %rbx, %rdi
callq 0x33f0