// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/fli.c
// Function: do_chunk_frame
static void do_chunk_frame(deark *c, lctx *d, struct chunk_info_type *ci)
{
	i64 num_subchunks;
	i64 frame_idx;
	i64 prev_use_count = 0;
	de_finfo *fi = NULL;

	frame_idx = d->frame_count;
	d->frame_count++;
	de_dbg(c, "frame number: %d", (int)frame_idx);

	num_subchunks = de_getu16le(ci->dpos);
	de_dbg(c, "num subchunks: %"I64_FMT, num_subchunks);

	if(ci->ictx) {
		prev_use_count = ci->ictx->use_count;
	}

	do_sequence_of_chunks(c, d, ci, ci->dpos+10, num_subchunks);

	if(ci->ictx) {
		if(ci->ictx->use_count > prev_use_count && !ci->ictx->error_flag) {
			if(d->num_frames>0 && frame_idx==d->num_frames && c->extract_level<2) {
				de_dbg(c, "[not extracting ring frame]");
				goto done;
			}

			fi = de_finfo_create(c);
			fi->density = ci->ictx->density;
			fi->internal_mod_time = d->mod_timestamp;
			de_bitmap_write_to_file_finfo(ci->ictx->img, fi, 0);
		}
	}

done:
	de_finfo_destroy(c, fi);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq $0x0, -0x30(%rbp)
movq $0x0, -0x38(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rax
movl %eax, %edx
leaq 0x12c8e7(%rip), %rsi    # 0x1add58
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x165280
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq 0x12c8c9(%rip), %rsi    # 0x1add69
movb $0x0, %al
callq 0x15b0d0
movq -0x18(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x814c2
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movslq 0x10(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rcx
addq $0xa, %rcx
movq -0x20(%rbp), %r8
callq 0x82540
movq -0x18(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x815bc
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movslq 0x10(%rax), %rax
cmpq -0x30(%rbp), %rax
jle 0x815ba
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
cmpl $0x0, 0x14(%rax)
jne 0x815ba
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jle 0x81554
movq -0x28(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x81554
movq -0x8(%rbp), %rax
cmpl $0x2, 0x90(%rax)
jge 0x81554
movq -0x8(%rbp), %rdi
leaq 0x12c831(%rip), %rsi    # 0x1add7c
movb $0x0, %al
callq 0x15b0d0
jmp 0x815be
movq -0x8(%rbp), %rdi
callq 0x15d230
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x48(%rcx), %rcx
movq 0x18(%rcx), %rdx
movq %rdx, 0x78(%rax)
movq 0x20(%rcx), %rdx
movq %rdx, 0x80(%rax)
movq 0x28(%rcx), %rcx
movq %rcx, 0x88(%rax)
movq -0x38(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x28(%rcx), %rdx
movq %rdx, 0x68(%rax)
movq 0x30(%rcx), %rcx
movq %rcx, 0x70(%rax)
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x30(%rax), %rdi
movq -0x38(%rbp), %rsi
xorl %edx, %edx
callq 0x16afa0
jmp 0x815bc
jmp 0x815be
movq -0x8(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x15d260
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)