// File: /workspace/github_c_makefile_star2_O0/lh3[P]fermi2/./rld0.h
// Function: rld_dec
static inline int64_t rld_dec(const rld_t *e, rlditr_t *itr, int *_c, int is_free)
{
	int64_t l = rld_dec0(e, itr, _c);
	if (l == 0 || *_c > e->asize) {
		uint64_t last = rld_last_blk(e);
		if (itr->p - *itr->i > RLD_LSIZE - e->ssize) {
			if (is_free) {
				free(*itr->i); *itr->i = 0;
			}
			itr->shead = *++itr->i;
		} else itr->shead += e->ssize;
		if (itr->shead == rld_seek_blk(e, last)) return -1;
		itr->p = itr->shead + e->offset0[rld_block_type(*itr->shead)];
		itr->q = (uint8_t*)itr->p;
		itr->stail = rld_get_stail(e, itr);
		itr->r = 64;
		return rld_dec0(e, itr, _c);
	} else return l;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movl %ecx, -0x24(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x6770
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x6588
movq -0x20(%rbp), %rax
movl (%rax), %eax
movq -0x10(%rbp), %rcx
movzbl (%rcx), %ecx
cmpl %ecx, %eax
jle 0x6750
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
shrq $0x3, %rax
movq -0x10(%rbp), %rcx
movsbl 0x3(%rcx), %ecx
movl %ecx, %ecx
shrq %cl, %rax
movq -0x10(%rbp), %rcx
movsbl 0x3(%rcx), %ecx
movl %ecx, %ecx
shlq %cl, %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x18(%rbp), %rcx
movq 0x28(%rcx), %rcx
movq (%rcx), %rcx
subq %rcx, %rax
sarq $0x3, %rax
movq -0x10(%rbp), %rdx
movl $0x800000, %ecx         # imm = 0x800000
subl 0x8(%rdx), %ecx
movslq %ecx, %rcx
cmpq %rcx, %rax
jle 0x6626
cmpl $0x0, -0x24(%rbp)
je 0x6605
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movq (%rax), %rdi
callq 0x2040
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movq $0x0, (%rax)
movq -0x18(%rbp), %rcx
movq 0x28(%rcx), %rax
movq %rax, %rdx
addq $0x8, %rdx
movq %rdx, 0x28(%rcx)
movq 0x8(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x18(%rax)
jmp 0x6643
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edx
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rcx
movslq %edx, %rdx
shlq $0x3, %rdx
addq %rdx, %rcx
movq %rcx, 0x18(%rax)
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq -0x38(%rbp), %rdx
shrq $0x17, %rdx
movq (%rcx,%rdx,8), %rcx
movq -0x38(%rbp), %rdx
andq $0x7fffff, %rdx         # imm = 0x7FFFFF
shlq $0x3, %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jne 0x6683
movq $-0x1, -0x8(%rbp)
jmp 0x6758
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rdx
movq 0x18(%rdx), %rdx
movq (%rdx), %rdx
shrq $0x3e, %rdx
movsbl 0x5(%rax,%rdx), %eax
cltq
shlq $0x3, %rax
addq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x10(%rbp), %rax
movslq 0x8(%rax), %rax
shlq $0x3, %rax
addq %rax, %rcx
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rsi
movq -0x10(%rbp), %rax
movslq 0x8(%rax), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movq (%rax), %rax
subq %rax, %rsi
sarq $0x3, %rsi
movl $0x1, %eax
movl $0x2, %edx
cmpq $0x800000, %rsi         # imm = 0x800000
cmovel %edx, %eax
movslq %eax, %rdx
xorl %eax, %eax
subq %rdx, %rax
shlq $0x3, %rax
addq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x18(%rbp), %rax
movl $0x40, (%rax)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x6770
movq %rax, -0x8(%rbp)
jmp 0x6758
movq -0x30(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)