// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/misc.c
// Function: de_run_crc
static void de_run_crc(deark *c, de_module_params *mparams)
{
	struct crcctx_struct crcctx;
	size_t n;

	de_zeromem(&crcctx, sizeof(struct crcctx_struct));
	crcctx.opt_all = (u8)de_get_ext_option_bool(c, "crc:all", 0xff);
	if(crcctx.opt_all==0xff) {
		if(c->extract_level>=2) {
			crcctx.opt_all = 1;
		}
		else {
			crcctx.opt_all = 0;
		}
	}

	for(n=0; n<CRCM_NUMCRCS; n++) {
		if((crcm_map[n].flags & 0x1)==0 && !crcctx.opt_all) continue;
		crcctx.crcos[n] = de_crcobj_create(c, crcm_map[n].crctype);
	}

	dbuf_buffered_read(c->infile, 0, c->infile->len, crc_cbfn, (void*)&crcctx);

	for(n=0; n<CRCM_NUMCRCS; n++) {
		u32 val = 0;
		u64 val64 = 0;

		if(!crcctx.crcos[n]) continue;

		if(crcm_map[n].nbits==0) {
			val64 = de_crcobj_getval64(crcctx.crcos[n]);
		}
		else {
			val = de_crcobj_getval(crcctx.crcos[n]);
		}

		if(crcm_map[n].nbits==0) {
			de_msg(c, "%-18s: 0x%"U64_FMTx, crcm_map[n].name, val64);
		}
		else if(crcm_map[n].nbits==16) {
			de_msg(c, "%-18s: 0x%04x", crcm_map[n].name, (UI)val);
		}
		else {
			de_msg(c, "%-18s: 0x%08x", crcm_map[n].name, (UI)val);
		}
	}

	for(n=0; n<CRCM_NUMCRCS; n++) {
		de_crcobj_destroy(crcctx.crcos[n]);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x70(%rbp), %rdi
xorl %esi, %esi
movl $0x60, %edx
callq 0x19140
movq -0x8(%rbp), %rdi
leaq 0x11e598(%rip), %rsi    # 0x1afff6
movl $0xff, %edx
callq 0x15cbc0
movb %al, -0x70(%rbp)
movzbl -0x70(%rbp), %eax
cmpl $0xff, %eax
jne 0x91a8f
movq -0x8(%rbp), %rax
cmpl $0x2, 0x90(%rax)
jl 0x91a89
movb $0x1, -0x70(%rbp)
jmp 0x91a8d
movb $0x0, -0x70(%rbp)
jmp 0x91a8f
movq $0x0, -0x78(%rbp)
cmpq $0xb, -0x78(%rbp)
jae 0x91afb
movq -0x78(%rbp), %rcx
leaq 0x186437(%rip), %rax    # 0x217ee0
shlq $0x4, %rcx
addq %rcx, %rax
movzbl 0x4(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x91ac4
cmpb $0x0, -0x70(%rbp)
jne 0x91ac4
jmp 0x91aed
movq -0x8(%rbp), %rdi
movq -0x78(%rbp), %rcx
leaq 0x18640d(%rip), %rax    # 0x217ee0
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %esi
callq 0x15eac0
movq %rax, %rcx
movq -0x78(%rbp), %rax
movq %rcx, -0x68(%rbp,%rax,8)
movq -0x78(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x78(%rbp)
jmp 0x91a97
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x18(%rax), %rdx
xorl %eax, %eax
movl %eax, %esi
leaq 0x2a06(%rip), %rcx      # 0x94520
leaq -0x70(%rbp), %r8
callq 0x166260
movq $0x0, -0x78(%rbp)
cmpq $0xb, -0x78(%rbp)
jae 0x91c70
movl $0x0, -0x7c(%rbp)
movq $0x0, -0x88(%rbp)
movq -0x78(%rbp), %rax
cmpq $0x0, -0x68(%rbp,%rax,8)
jne 0x91b59
jmp 0x91c5f
movq -0x78(%rbp), %rcx
leaq 0x18637c(%rip), %rax    # 0x217ee0
shlq $0x4, %rcx
addq %rcx, %rax
movzbl 0x5(%rax), %eax
cmpl $0x0, %eax
jne 0x91b8b
movq -0x78(%rbp), %rax
movq -0x68(%rbp,%rax,8), %rdi
callq 0x15f3f0
movq %rax, -0x88(%rbp)
jmp 0x91b9c
movq -0x78(%rbp), %rax
movq -0x68(%rbp,%rax,8), %rdi
callq 0x15f340
movl %eax, -0x7c(%rbp)
movq -0x78(%rbp), %rcx
leaq 0x186339(%rip), %rax    # 0x217ee0
shlq $0x4, %rcx
addq %rcx, %rax
movzbl 0x5(%rax), %eax
cmpl $0x0, %eax
jne 0x91be8
movq -0x8(%rbp), %rdi
movq -0x78(%rbp), %rcx
leaq 0x18631a(%rip), %rax    # 0x217ee0
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rdx
movq -0x88(%rbp), %rcx
leaq 0x11e41f(%rip), %rsi    # 0x1afffe
movb $0x0, %al
callq 0x15c190
jmp 0x91c5d
movq -0x78(%rbp), %rcx
leaq 0x1862ed(%rip), %rax    # 0x217ee0
shlq $0x4, %rcx
addq %rcx, %rax
movzbl 0x5(%rax), %eax
cmpl $0x10, %eax
jne 0x91c30
movq -0x8(%rbp), %rdi
movq -0x78(%rbp), %rcx
leaq 0x1862ce(%rip), %rax    # 0x217ee0
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rdx
movl -0x7c(%rbp), %ecx
leaq 0x11e3e4(%rip), %rsi    # 0x1b000b
movb $0x0, %al
callq 0x15c190
jmp 0x91c5b
movq -0x8(%rbp), %rdi
movq -0x78(%rbp), %rcx
leaq 0x1862a1(%rip), %rax    # 0x217ee0
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rdx
movl -0x7c(%rbp), %ecx
leaq 0x11e3c5(%rip), %rsi    # 0x1b0019
movb $0x0, %al
callq 0x15c190
jmp 0x91c5d
jmp 0x91c5f
movq -0x78(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x78(%rbp)
jmp 0x91b2b
movq $0x0, -0x78(%rbp)
cmpq $0xb, -0x78(%rbp)
jae 0x91c9b
movq -0x78(%rbp), %rax
movq -0x68(%rbp,%rax,8), %rdi
callq 0x15f2e0
movq -0x78(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x78(%rbp)
jmp 0x91c78
addq $0x90, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)