// File: /workspace/github_cpp_makefile_star2_O3/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 %rsi, %r14
movq %rdi, %r15
movq (%rsi), %rax
movq 0x18(%rsi), %r12
subq 0x10(%rsi), %r12
sarq $0x3, %r12
movq %rsi, %rdi
xorl %esi, %esi
callq *0x18(%rax)
movq %r15, %rdi
movq %rax, %rsi
movq %rbx, -0xe8(%rbp)
movq %rbx, %rdx
callq 0x795c
movq %r15, -0x100(%rbp)
leaq 0x500(%r15), %rsi
leaq -0xb8(%rbp), %rdi
movq %rsi, -0x68(%rbp)
movl %eax, -0xdc(%rbp)
movl %eax, %edx
callq 0xdda4
movq %r12, -0xf8(%rbp)
cmpq $0x2, %r12
jb 0x8b24
movq -0xe8(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x60(%rbp)
movl $0x1, %ebx
leal 0x1(%rbx), %esi
movq (%r14), %rax
movq %r14, %rdi
callq *0x18(%rax)
movq -0x100(%rbp), %rdi
movq %rax, %rsi
movq -0xe8(%rbp), %rdx
callq 0x795c
movq %rax, -0x98(%rbp)
movq (%r14), %rax
movq %r14, %rdi
xorl %esi, %esi
callq *0x18(%rax)
addq $0x30, %rax
movq %rax, %rdi
leaq 0x1334c(%rip), %rsi     # 0x1b2ce
callq 0x30a0
movl %eax, -0x8c(%rbp)
movq (%r14), %rax
movq %r14, %r12
movq %r14, %rdi
movq %rbx, %r13
movl %ebx, %esi
callq *0x18(%rax)
leaq -0x48(%rbp), %r14
leaq -0x58(%rbp), %rbx
movq %rax, %r15
movq %r14, -0x58(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x4d52
movl 0x80(%r15), %eax
movl %eax, 0x18(%r14)
movq 0x78(%r15), %rax
movq %rax, 0x10(%r14)
movl -0x38(%rbp), %r15d
movq %rbx, %rdi
callq 0x191f8
cmpl $0x2f, %r15d
jne 0x80b4
movl $0x4, %edx
movq -0x60(%rbp), %rdi
leaq 0x132d9(%rip), %rsi     # 0x1b2d2
callq 0x3280
movq %r12, %r14
movq %r13, %rbx
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq -0x60(%rbp), %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12fd8(%rip), %rsi     # 0x1b005
callq 0x3280
leaq -0x58(%rbp), %rdi
movq -0x68(%rbp), %rsi
movq -0x98(%rbp), %rdx
callq 0xdda4
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq %r15, %rdi
leaq -0x48(%rbp), %r13
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x13477(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x5, %edx
movq %r15, %rdi
leaq 0x13257(%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 0x13439(%rip), %rsi     # 0x1b4e3
callq 0x3280
jmp 0x8aad
movq %r12, %rdi
movq (%r12), %rax
movl %r13d, %esi
callq *0x18(%rax)
movq %rax, %r15
movq %r14, -0x58(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x4d52
movl 0x80(%r15), %eax
movl %eax, 0x18(%r14)
movq 0x78(%r15), %rax
movq %rax, 0x10(%r14)
movl -0x38(%rbp), %r15d
movq %rbx, %rdi
callq 0x191f8
cmpl $0x34, %r15d
jne 0x819b
movl $0x4, %edx
movq -0x60(%rbp), %rdi
leaq 0x131be(%rip), %rsi     # 0x1b2d2
callq 0x3280
movq %r12, %r14
movq %r13, %rbx
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq -0x60(%rbp), %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12ebd(%rip), %rsi     # 0x1b005
callq 0x3280
leaq -0x58(%rbp), %rdi
movq -0x68(%rbp), %rsi
movq -0x98(%rbp), %rdx
callq 0xdda4
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq %r15, %rdi
leaq -0x48(%rbp), %r15
callq 0x3280
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1335f(%rip), %rsi     # 0x1b4e3
callq 0x3280
movq -0x58(%rbp), %rdi
cmpq %r15, %rdi
jne 0x8ab6
jmp 0x8ac2
movq %r12, %rdi
movq (%r12), %rax
movl %r13d, %esi
callq *0x18(%rax)
movq %rax, %r15
movq %r14, -0x58(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x4d52
movl 0x80(%r15), %eax
movl %eax, 0x18(%r14)
movq 0x78(%r15), %rax
movq %rax, 0x10(%r14)
movl -0x38(%rbp), %r15d
movq %rbx, %rdi
callq 0x191f8
cmpl $0x32, %r15d
jne 0x82da
movl $0x2, %edx
movq -0x60(%rbp), %rdi
leaq 0x130e2(%rip), %rsi     # 0x1b2dd
callq 0x3280
movq %r12, %r14
movq %r13, %rbx
cmpl $0x0, -0x8c(%rbp)
leaq 0x130ce(%rip), %rsi     # 0x1b2e2
leaq 0x130c5(%rip), %rax     # 0x1b2e0
cmoveq %rax, %rsi
leaq -0x48(%rbp), %r13
movq %r13, -0x58(%rbp)
leaq 0x130b5(%rip), %rdx     # 0x1b2e3
leaq 0x130ac(%rip), %rax     # 0x1b2e1
cmoveq %rax, %rdx
leaq -0x58(%rbp), %rdi
callq 0x4336
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq -0x60(%rbp), %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12da0(%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 0x12d73(%rip), %rsi     # 0x1b005
callq 0x3280
leaq -0x88(%rbp), %rdi
movq -0x68(%rbp), %rsi
movq -0x98(%rbp), %rdx
callq 0xdda4
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movl $0x1, %edx
movq %rax, %rdi
leaq 0x13213(%rip), %rsi     # 0x1b4e3
callq 0x3280
jmp 0x8a91
movq %r12, %rdi
movq (%r12), %rax
movl %r13d, %esi
callq *0x18(%rax)
movq %rax, %r15
movq %r14, -0x58(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x4d52
movl 0x80(%r15), %eax
movl %eax, 0x18(%r14)
movq 0x78(%r15), %rax
movq %rax, 0x10(%r14)
movl -0x38(%rbp), %r15d
movq %rbx, %rdi
callq 0x191f8
cmpl $0x31, %r15d
jne 0x845a
movl $0x2, %edx
movq -0x60(%rbp), %rdi
leaq 0x12fa3(%rip), %rsi     # 0x1b2dd
callq 0x3280
movq %r12, %r14
movq %r13, %rbx
cmpl $0x0, -0x8c(%rbp)
leaq 0x12f8f(%rip), %rsi     # 0x1b2e2
leaq 0x12f86(%rip), %rax     # 0x1b2e0
cmoveq %rax, %rsi
leaq -0x48(%rbp), %r13
movq %r13, -0x58(%rbp)
leaq 0x12f76(%rip), %rdx     # 0x1b2e3
leaq 0x12f6d(%rip), %rax     # 0x1b2e1
cmoveq %rax, %rdx
leaq -0x58(%rbp), %rdi
callq 0x4336
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq -0x60(%rbp), %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12c61(%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 0x12c34(%rip), %rsi     # 0x1b005
callq 0x3280
leaq -0x88(%rbp), %rdi
movq -0x68(%rbp), %rsi
movq -0x98(%rbp), %rdx
callq 0xdda4
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x130d1(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x5, %edx
movq %r15, %rdi
leaq 0x12eb1(%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 0x13093(%rip), %rsi     # 0x1b4e3
callq 0x3280
jmp 0x8a91
movq %r12, %rdi
movq (%r12), %rax
movl %r13d, %esi
callq *0x18(%rax)
movq %rax, %r15
movq %r14, -0x58(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x4d52
movl 0x80(%r15), %eax
movl %eax, 0x18(%r14)
movq 0x78(%r15), %rax
movq %rax, 0x10(%r14)
movl -0x38(%rbp), %r15d
movq %rbx, %rdi
callq 0x191f8
cmpl $0x30, %r15d
jne 0x8744
movq -0x68(%rbp), %r15
movq %r15, %rdi
callq 0xdc82
movq %rax, -0xf0(%rbp)
movq %r12, %r14
movq %r13, %rbx
leaq -0x58(%rbp), %rdi
movq %r15, %rsi
movq -0x98(%rbp), %rdx
callq 0xdda4
leaq -0x88(%rbp), %rdi
movq %r15, %rsi
movq -0xf0(%rbp), %r12
movl %r12d, %edx
callq 0xdda4
movl $0x4, %edx
movq -0x60(%rbp), %rdi
leaq 0x12de5(%rip), %rsi     # 0x1b2e4
callq 0x3280
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq -0x60(%rbp), %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12adb(%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 0x12f8c(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x2, %edx
movq %r15, %rdi
leaq 0x12d72(%rip), %rsi     # 0x1b2dd
callq 0x3280
cmpl $0x0, -0x8c(%rbp)
leaq 0x12d64(%rip), %rsi     # 0x1b2e2
leaq 0x12d5b(%rip), %rax     # 0x1b2e0
cmoveq %rax, %rsi
leaq -0xc8(%rbp), %rax
movq %rax, -0xd8(%rbp)
leaq 0x12d45(%rip), %rdx     # 0x1b2e3
leaq 0x12d3c(%rip), %rax     # 0x1b2e1
cmoveq %rax, %rdx
leaq -0xd8(%rbp), %rdi
callq 0x4336
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
movq %r15, %rdi
leaq -0x48(%rbp), %r13
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12a24(%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 0x129f7(%rip), %rsi     # 0x1b005
callq 0x3280
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12eae(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x4, %edx
movq %r15, %rdi
leaq 0x12c89(%rip), %rsi     # 0x1b2d2
callq 0x3280
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12995(%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 0x12e49(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x5, %edx
movq %r15, %rdi
leaq 0x12c29(%rip), %rsi     # 0x1b2d7
callq 0x3280
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12e0e(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x4, %edx
movq %r15, %rdi
leaq 0x12c00(%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 0x128ef(%rip), %rsi     # 0x1b005
callq 0x3280
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12da9(%rip), %rsi     # 0x1b4e3
callq 0x3280
jmp 0x8a24
movq %r12, %rdi
movq (%r12), %rax
movl %r13d, %esi
callq *0x18(%rax)
movq %rax, %r15
movq %r14, -0x58(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x4d52
movl 0x80(%r15), %eax
movl %eax, 0x18(%r14)
movq 0x78(%r15), %rax
movq %rax, 0x10(%r14)
movl -0x38(%rbp), %r15d
movq %rbx, %rdi
callq 0x191f8
cmpl $0x33, %r15d
movq %r12, %r14
movq %r13, %rbx
jne 0x8ac2
movq -0x68(%rbp), %r15
movq %r15, %rdi
callq 0xdc82
movl %eax, %r12d
leaq -0x58(%rbp), %rdi
movq %r15, %rsi
movq -0x98(%rbp), %rdx
callq 0xdda4
leaq -0x88(%rbp), %rdi
movq %r15, %rsi
movl %r12d, %edx
callq 0xdda4
movl $0x4, %edx
movq -0x60(%rbp), %rdi
leaq 0x12b06(%rip), %rsi     # 0x1b2e4
callq 0x3280
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq -0x60(%rbp), %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x127fc(%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 0x12cad(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x2, %edx
movq %r15, %rdi
leaq 0x12a93(%rip), %rsi     # 0x1b2dd
callq 0x3280
cmpl $0x0, -0x8c(%rbp)
leaq 0x12a85(%rip), %rsi     # 0x1b2e2
leaq 0x12a7c(%rip), %rax     # 0x1b2e0
cmoveq %rax, %rsi
leaq -0xc8(%rbp), %rax
movq %rax, -0xd8(%rbp)
leaq 0x12a66(%rip), %rdx     # 0x1b2e3
leaq 0x12a5d(%rip), %rax     # 0x1b2e1
cmoveq %rax, %rdx
leaq -0xd8(%rbp), %rdi
callq 0x4336
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
movq %r15, %rdi
leaq -0x48(%rbp), %r13
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12745(%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 0x12718(%rip), %rsi     # 0x1b005
callq 0x3280
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12bcf(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x5, %edx
movq %r15, %rdi
leaq 0x129af(%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 0x12b8e(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x4, %edx
movq %r15, %rdi
leaq 0x12969(%rip), %rsi     # 0x1b2d2
callq 0x3280
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12675(%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 0x12b29(%rip), %rsi     # 0x1b4e3
callq 0x3280
movl $0x5, %edx
movq %r15, %rdi
leaq 0x12920(%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 0x1260a(%rip), %rsi     # 0x1b005
callq 0x3280
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq %r15, %rdi
callq 0x3280
movl $0x1, %edx
movq %rax, %rdi
leaq 0x12ac4(%rip), %rsi     # 0x1b4e3
callq 0x3280
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x8a46
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x3230
leal 0x3f(%r12), %eax
testl %r12d, %r12d
cmovnsl %r12d, %eax
sarl $0x6, %eax
cltq
shlq $0x3, %rax
movq -0x68(%rbp), %rcx
addq (%rcx), %rax
movslq %r12d, %rcx
movabsq $-0x8000000000000000, %rdi # imm = 0x8000000000000000
leaq 0x3f(%rdi), %rdx
andq %rcx, %rdx
xorl %esi, %esi
cmpq %rdi, %rdx
setbe %sil
movq $-0x2, %rdx
movl %r12d, %ecx
rolq %cl, %rdx
andq %rdx, -0x8(%rax,%rsi,8)
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x8aad
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x3230
movq -0x58(%rbp), %rdi
cmpq %r13, %rdi
je 0x8ac2
movq -0x48(%rbp), %rsi
incq %rsi
callq 0x3230
movq -0x98(%rbp), %r8
leal 0x3f(%r8), %eax
testl %r8d, %r8d
cmovnsl %r8d, %eax
sarl $0x6, %eax
cltq
shlq $0x3, %rax
movq -0x68(%rbp), %rcx
addq (%rcx), %rax
movslq %r8d, %rcx
movabsq $-0x8000000000000000, %rdi # imm = 0x8000000000000000
leaq 0x3f(%rdi), %rdx
andq %rcx, %rdx
xorl %esi, %esi
cmpq %rdi, %rdx
setbe %sil
movq $-0x2, %rdx
movl %r8d, %ecx
rolq %cl, %rdx
andq %rdx, -0x8(%rax,%rsi,8)
addq $0x2, %rbx
cmpq -0xf8(%rbp), %rbx
jb 0x7f40
leaq -0xa8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8b43
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 0x8ba3
jmp 0x8ba8
jmp 0x8c32
jmp 0x8c32
jmp 0x8ba3
jmp 0x8ba8
jmp 0x8c32
jmp 0x8c32
jmp 0x8ba8
jmp 0x8c32
jmp 0x8c32
jmp 0x8ba3
jmp 0x8ba8
jmp 0x8c32
jmp 0x8c32
jmp 0x8ba3
jmp 0x8c32
jmp 0x8ba8
jmp 0x8c32
jmp 0x8ba3
jmp 0x8bc2
movq %rax, %rbx
jmp 0x8be7
movq %rax, %rbx
jmp 0x8c03
jmp 0x8c32
movq %rax, %rbx
movq -0x58(%rbp), %rdi
cmpq %r15, %rdi
jne 0x8c24
jmp 0x8c35
jmp 0x8c32
movq %rax, %rbx
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x8be7
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x3230
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x8c03
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x3230
movq -0x58(%rbp), %rdi
leaq -0x48(%rbp), %rax
cmpq %rax, %rdi
jne 0x8c24
jmp 0x8c35
jmp 0x8c32
jmp 0x8c32
jmp 0x8c32
movq %rax, %rbx
movq -0x58(%rbp), %rdi
cmpq %r13, %rdi
je 0x8c35
movq -0x48(%rbp), %rsi
incq %rsi
callq 0x3230
jmp 0x8c35
movq %rax, %rbx
leaq -0xa8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8c54
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x3230
movq %rbx, %rdi
callq 0x33f0