// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/cdiimage.c
// Function: do_cdi_imag_IDAT
static void do_cdi_imag_IDAT(deark *c, struct cdi_imag_ctx *d, struct de_iffctx *ictx)
{
	de_bitmap *img = NULL;
	int ret = 0;

	if(!d->found_IHDR) goto done;

	if((d->model==3 && d->depth==8) ||
		(d->model==6 && d->depth==4) ||
		(d->model==8 && d->depth==8))
	{
		;
	}
	else {
		de_err(c, "Unsupported image type: model=%u, depth=%u", d->model, d->depth);
		goto done;
	}

	if(!de_good_image_dimensions(c, d->npwidth, d->h)) goto done;

	img = de_bitmap_create2(c, d->npwidth, d->pdwidth, d->h, 3);

	if(d->model==3) {
		if(d->dyuv_kind!=0) {
			de_err(c, "Unsupported image type");
		}
		else {
			ret = do_cdi_imag_model3(c, d, ictx, img);
		}
	}
	else if(d->model==6) {
		de_convert_image_paletted(ictx->f, ictx->chunkctx->dpos, (i64)d->depth,
			d->rowspan, d->pal, img, 0);
		ret = 1;
	}
	else if(d->model==8) {
		ret = do_cdi_imag_model8(c, d, ictx, img);
	}

	if(ret) {
		de_bitmap_write_to_file(img, NULL, 0);
	}

done:
	de_bitmap_destroy(img);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movl $0x0, -0x24(%rbp)
movq -0x10(%rbp), %rax
cmpb $0x0, 0x28(%rax)
jne 0x88112
jmp 0x88298
movq -0x10(%rbp), %rax
cmpl $0x3, 0x20(%rax)
jne 0x88126
movq -0x10(%rbp), %rax
cmpl $0x8, 0x24(%rax)
je 0x8814e
movq -0x10(%rbp), %rax
cmpl $0x6, 0x20(%rax)
jne 0x8813a
movq -0x10(%rbp), %rax
cmpl $0x4, 0x24(%rax)
je 0x8814e
movq -0x10(%rbp), %rax
cmpl $0x8, 0x20(%rax)
jne 0x88150
movq -0x10(%rbp), %rax
cmpl $0x8, 0x24(%rax)
jne 0x88150
jmp 0x88175
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x20(%rax), %edx
movq -0x10(%rbp), %rax
movl 0x24(%rax), %ecx
leaq 0x126a2e(%rip), %rsi    # 0x1aeb97
movb $0x0, %al
callq 0x15bfb0
jmp 0x88298
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rsi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdx
callq 0x16a850
cmpl $0x0, %eax
jne 0x88197
jmp 0x88298
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rsi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
movl $0x3, %r8d
callq 0x16b7f0
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x3, 0x20(%rax)
jne 0x88206
movq -0x10(%rbp), %rax
movzbl 0x29(%rax), %eax
cmpl $0x0, %eax
je 0x881ec
movq -0x8(%rbp), %rdi
leaq 0x11b2dd(%rip), %rsi    # 0x1a34c0
movb $0x0, %al
callq 0x15bfb0
jmp 0x88204
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x885e0
movl %eax, -0x24(%rbp)
jmp 0x88281
movq -0x10(%rbp), %rax
cmpl $0x6, 0x20(%rax)
jne 0x8825b
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x128(%rax), %rax
movq 0x40(%rax), %rsi
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, %edx
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x10(%rbp), %r8
addq $0x30, %r8
movq -0x20(%rbp), %r9
xorl %eax, %eax
movl $0x0, (%rsp)
callq 0x16c520
movl $0x1, -0x24(%rbp)
jmp 0x8827f
movq -0x10(%rbp), %rax
cmpl $0x8, 0x20(%rax)
jne 0x8827d
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x887f0
movl %eax, -0x24(%rbp)
jmp 0x8827f
jmp 0x88281
cmpl $0x0, -0x24(%rbp)
je 0x88296
movq -0x20(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
xorl %edx, %edx
callq 0x16afd0
jmp 0x88298
movq -0x20(%rbp), %rdi
callq 0x16af60
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)