// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/src/deark-user.c
// Function: de_destroy
void de_destroy(deark *c)
{
	int i;

	if(!c) return;
	if(c->zip_data) { de_zip_close_file(c); }
	if(c->tar_data) { de_tar_close_file(c); }
	if(c->extrlist_dbuf) { dbuf_close(c->extrlist_dbuf); }
	for(i=0; i<c->num_ext_options; i++) {
		de_free(c, c->ext_option[i].name);
		de_free(c, c->ext_option[i].val);
	}
	if(c->base_output_filename) { de_free(c, c->base_output_filename); }
	if(c->special_1st_filename) { de_free(c, c->special_1st_filename); }
	if(c->output_archive_filename) { de_free(c, c->output_archive_filename); }
	if(c->extrlist_filename) { de_free(c, c->extrlist_filename); }
	if(c->detection_data) { de_free(c, c->detection_data); }
	if(c->mp_data) {
		for(i=0; i<c->mp_data->count; i++) {
			dbuf_close(c->mp_data->item[i].f);
			// (The .fn field is owned by the caller (deark-cmd.c)).
		}
		de_free(c, c->mp_data->item);
		de_free(c, c->mp_data);
	}
	for(i=0; i<DE_NUM_PERSISTENT_MEM_ITEMS; i++) {
		if(c->persistent_item[i]) {
			de_free(c, c->persistent_item[i]);
		}
	}
	de_free(c, c->module_info);
	de_free(NULL,c);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
cmpq $0x0, -0x8(%rbp)
jne 0x18e968
jmp 0x18eb95
movq -0x8(%rbp), %rax
cmpq $0x0, 0x138(%rax)
je 0x18e97f
movq -0x8(%rbp), %rdi
callq 0x163380
movq -0x8(%rbp), %rax
cmpq $0x0, 0x140(%rax)
je 0x18e996
movq -0x8(%rbp), %rdi
callq 0x163a30
movq -0x8(%rbp), %rax
cmpq $0x0, 0x148(%rax)
je 0x18e9b4
movq -0x8(%rbp), %rax
movq 0x148(%rax), %rdi
callq 0x1676a0
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x1b8(%rcx), %eax
jge 0x18ea18
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
addq $0x1c0, %rax            # imm = 0x1C0
movslq -0xc(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rsi
callq 0x15b820
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
addq $0x1c0, %rax            # imm = 0x1C0
movslq -0xc(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rsi
callq 0x15b820
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x18e9bb
movq -0x8(%rbp), %rax
cmpq $0x0, 0x150(%rax)
je 0x18ea3a
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x150(%rax), %rsi
callq 0x15b820
movq -0x8(%rbp), %rax
cmpq $0x0, 0x158(%rax)
je 0x18ea5c
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x158(%rax), %rsi
callq 0x15b820
movq -0x8(%rbp), %rax
cmpq $0x0, 0x160(%rax)
je 0x18ea7e
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x160(%rax), %rsi
callq 0x15b820
movq -0x8(%rbp), %rax
cmpq $0x0, 0x168(%rax)
je 0x18eaa0
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x168(%rax), %rsi
callq 0x15b820
movq -0x8(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x18eabc
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x15b820
movq -0x8(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x18eb2e
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
cmpl (%rcx), %eax
jge 0x18eb08
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movslq -0xc(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rdi
callq 0x1676a0
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x18eace
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x15b820
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rsi
callq 0x15b820
movl $0x0, -0xc(%rbp)
cmpl $0x6, -0xc(%rbp)
jge 0x18eb74
movq -0x8(%rbp), %rax
movslq -0xc(%rbp), %rcx
cmpq $0x0, 0x2c0(%rax,%rcx,8)
je 0x18eb67
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movslq -0xc(%rbp), %rcx
movq 0x2c0(%rax,%rcx,8), %rsi
callq 0x15b820
jmp 0x18eb69
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x18eb35
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x1b0(%rax), %rsi
callq 0x15b820
movq -0x8(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edi
callq 0x15b820
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)