// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/mscompress.c
// Function: de_run_mscompress
static void de_run_mscompress(deark *c, de_module_params *mparams)
{
	lctx *d = NULL;
	const char *varname;

	d = de_malloc(c, sizeof(lctx));
	d->input_encoding = de_get_input_encoding(c, NULL, DE_ENCODING_ASCII);

	d->fmt = detect_fmt_internal(c);
	if(d->fmt==FMT_SZDD) {
		varname = "SZDD";
	}
	else if(d->fmt==FMT_KWAJ) {
		varname = "KWAJ";
	}
	else if(d->fmt==FMT_SZ) {
		varname = "SZ";
	}
	else {
		de_err(c, "Unidentified format");
		goto done;
	}
	de_declare_fmtf(c, "MS Installation Compression, %s variant", varname);

	if(mparams && mparams->in_params.fi) {
		d->fi_override = mparams->in_params.fi;
	}

	d->inf = c->infile;
	mscompress_handle_multipart(c, d);
	if(d->errflag) goto done;

	if(d->fmt==FMT_KWAJ) {
		if(!do_header_KWAJ(c, d, 0)) goto done;
	}
	else if(d->fmt==FMT_SZ) {
		if(!do_header_SZ(c, d, 0)) goto done;
	}
	else {
		if(!do_header_SZDD(c, d, 0)) goto done;
	}

	do_extract_file(c, d);

done:
	if(d) {
		ucstring_destroy(d->filename);
		dbuf_close(d->combined_inf);
		de_free(c, d);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movl $0x50, %esi
callq 0x15b780
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x1, %edx
callq 0x15e4a0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rdi
callq 0xe1a30
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rax
cmpl $0x1, (%rax)
jne 0xe154c
leaq 0xdb655(%rip), %rax     # 0x1bcb9b
movq %rax, -0x20(%rbp)
jmp 0xe1593
movq -0x18(%rbp), %rax
cmpl $0x2, (%rax)
jne 0xe1562
leaq 0xdb644(%rip), %rax     # 0x1bcba0
movq %rax, -0x20(%rbp)
jmp 0xe1591
movq -0x18(%rbp), %rax
cmpl $0x3, (%rax)
jne 0xe1578
leaq 0xdb633(%rip), %rax     # 0x1bcba5
movq %rax, -0x20(%rbp)
jmp 0xe158f
movq -0x8(%rbp), %rdi
leaq 0xc6785(%rip), %rsi     # 0x1a7d08
movb $0x0, %al
callq 0x15bfb0
jmp 0xe1663
jmp 0xe1591
jmp 0xe1593
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq 0xdb606(%rip), %rsi     # 0x1bcba8
movb $0x0, %al
callq 0x15e3d0
cmpq $0x0, -0x10(%rbp)
je 0xe15cb
movq -0x10(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0xe15cb
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x40(%rax)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xe1ae0
movq -0x18(%rbp), %rax
cmpb $0x0, 0x8(%rax)
je 0xe15f4
jmp 0xe1663
movq -0x18(%rbp), %rax
cmpl $0x2, (%rax)
jne 0xe1617
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0xe1c50
cmpl $0x0, %eax
jne 0xe1615
jmp 0xe1663
jmp 0xe1656
movq -0x18(%rbp), %rax
cmpl $0x3, (%rax)
jne 0xe163a
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0xe1fe0
cmpl $0x0, %eax
jne 0xe1638
jmp 0xe1663
jmp 0xe1654
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0xe2100
cmpl $0x0, %eax
jne 0xe1652
jmp 0xe1663
jmp 0xe1654
jmp 0xe1656
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xe2300
cmpq $0x0, -0x18(%rbp)
je 0xe1691
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x171750
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
callq 0x1676a0
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15b820
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)