LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/nokia.c
// Function: de_run_npm
static void de_run_npm(deark *c, de_module_params *mparams)
{
	i64 txt_len;
	i64 pos;
	lctx *d = NULL;
	de_ucstring *s = NULL;

	d = de_malloc(c, sizeof(lctx));

	pos = 4;
	txt_len = (i64)de_getbyte_p(&pos);
	de_dbg(c, "text length: %d", (int)txt_len);
	if(txt_len>0) {
		s = ucstring_create(c);
		dbuf_read_to_ucstring(c->infile, pos, txt_len, s, 0, DE_ENCODING_ASCII);
		de_dbg(c, "text: \"%s\"", ucstring_getpsz_d(s));
		pos += txt_len;
	}
	pos += 1;

	d->w = (i64)de_getbyte_p(&pos);
	d->h = (i64)de_getbyte_p(&pos);
	de_dbg_dimensions(c, d->w, d->h);

	pos += 3;
	npm_nlm_read_bitmap(c, d, pos);

	ucstring_destroy(s);
	de_free(c, d);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl $0x18, %esi
callq 0xe969b
movq %rax, %r14
movq %rsp, %rsi
movq $0x4, (%rsi)
movq 0x18(%rbx), %rdi
callq 0xef14d
movzbl %al, %r12d
leaq 0x7d614(%rip), %rsi     # 0x11960e
xorl %r15d, %r15d
movq %rbx, %rdi
movl %r12d, %edx
xorl %eax, %eax
callq 0xe9226
testb %r12b, %r12b
je 0x9c056
movq %rbx, %rdi
callq 0xf6870
movq %rax, %r15
movq 0x18(%rbx), %rdi
movq (%rsp), %rsi
movq %r12, %rdx
movq %rax, %rcx
xorl %r8d, %r8d
movl $0x1, %r9d
callq 0xf01b0
movq %r15, %rdi
callq 0xf7557
leaq 0x9ecc7(%rip), %rsi     # 0x13ad0c
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xe9226
addq %r12, (%rsp)
movq %rsp, %r12
incq (%r12)
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xef14d
movzbl %al, %eax
movq %rax, (%r14)
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xef14d
movzbl %al, %edx
movq %rdx, 0x8(%r14)
movq (%r14), %rsi
movq %rbx, %rdi
callq 0xe9b05
movq (%r12), %rsi
addq $0x3, %rsi
movq %rsi, (%r12)
movq 0x18(%rbx), %rdi
movq (%r14), %rdx
movq 0x8(%r14), %rcx
leaq 0x7(%rdx), %rax
leaq 0xe(%rdx), %r8
testq %rax, %rax
cmovnsq %rax, %r8
sarq $0x3, %r8
movl $0x1, %r9d
pushq $0x0
pushq $0x0
callq 0xf319c
addq $0x10, %rsp
movq %r15, %rdi
callq 0xf6bb0
movq %rbx, %rdi
movq %r14, %rsi
callq 0xe9752
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/nokia.c
// Function: de_module_nlm
void de_module_nlm(deark *c, struct deark_module_info *mi)
{
	mi->id = "nlm";
	mi->desc = "Nokia Logo Manager bitmap";
	mi->run_fn = de_run_nlm;
	mi->identify_fn = de_identify_nlm;
}

// Assembly:
leaq 0x951fd(%rip), %rax     # 0x131313
movq %rax, (%rsi)
leaq 0x951f7(%rip), %rax     # 0x131317
movq %rax, 0x8(%rsi)
leaq 0x10(%rip), %rax        # 0x9c13b
movq %rax, 0x18(%rsi)
leaq 0xd2(%rip), %rax        # 0x9c208
movq %rax, 0x20(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/nokia.c
// Function: de_run_nlm
static void de_run_nlm(deark *c, de_module_params *mparams)
{
	lctx *d = NULL;
	u8 imgtype;
	const char *s;

	d = de_malloc(c, sizeof(lctx));

	imgtype = de_getbyte(5);
	switch(imgtype) {
	case 0: s="Operator logo"; break;
	case 1: s="Caller logo"; break;
	case 2: s="Startup logo"; break;
	case 3: s="Picture image logo"; break;
	default: s="unknown";
	}
	de_dbg(c, "image type: %d (%s)", (int)imgtype, s);

	d->w = (i64)de_getbyte(7);
	d->h = (i64)de_getbyte(8);
	de_dbg_dimensions(c, d->w, d->h);

	npm_nlm_read_bitmap(c, d, 10);

	de_free(c, d);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl $0x18, %esi
callq 0xe969b
movq %rax, %r14
movq 0x18(%rbx), %rdi
movl $0x5, %esi
callq 0xef0d5
movzbl %al, %edx
cmpb $0x3, %al
ja 0x9c174
leaq 0x9527d(%rip), %rax     # 0x1313e8
movslq (%rax,%rdx,4), %rcx
addq %rax, %rcx
jmp 0x9c17b
leaq 0x76311(%rip), %rcx     # 0x11248c
leaq 0x9520c(%rip), %rsi     # 0x13138e
movq %rbx, %rdi
xorl %eax, %eax
callq 0xe9226
movq 0x18(%rbx), %rdi
movl $0x7, %esi
callq 0xef0d5
movzbl %al, %eax
movq %rax, (%r14)
movq 0x18(%rbx), %rdi
movl $0x8, %esi
callq 0xef0d5
movzbl %al, %edx
movq %rdx, 0x8(%r14)
movq (%r14), %rsi
movq %rbx, %rdi
callq 0xe9b05
movq 0x18(%rbx), %rdi
movq (%r14), %rdx
movq 0x8(%r14), %rcx
leaq 0x7(%rdx), %rax
leaq 0xe(%rdx), %r8
testq %rax, %rax
cmovnsq %rax, %r8
sarq $0x3, %r8
movl $0xa, %esi
movl $0x1, %r9d
pushq $0x0
pushq $0x0
callq 0xf319c
addq $0x10, %rsp
movq %rbx, %rdi
movq %r14, %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0xe9752
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/nokia.c
// Function: de_module_nsl
void de_module_nsl(deark *c, struct deark_module_info *mi)
{
	mi->id = "nsl";
	mi->desc = "Nokia Startup Logo";
	mi->run_fn = de_run_nsl;
	mi->identify_fn = de_identify_nsl;
}

// Assembly:
leaq 0x950fc(%rip), %rax     # 0x131331
movq %rax, (%rsi)
leaq 0x950f6(%rip), %rax     # 0x131335
movq %rax, 0x8(%rsi)
leaq 0x10(%rip), %rax        # 0x9c25a
movq %rax, 0x18(%rsi)
leaq 0x6a(%rip), %rax        # 0x9c2bf
movq %rax, 0x20(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/nokia.c
// Function: de_run_nsl
static void de_run_nsl(deark *c, de_module_params *mparams)
{
	lctx *d = NULL;
	struct de_iffctx *ictx = NULL;

	d = de_malloc(c, sizeof(lctx));
	ictx = fmtutil_create_iff_decoder(c);

	ictx->userdata = (void*)d;
	ictx->handle_chunk_fn = my_nsl_chunk_handler;
	ictx->f = c->infile;
	ictx->sizeof_len = 2;

	fmtutil_read_iff_format(ictx, 0, c->infile->len);

	fmtutil_destroy_iff_decoder(ictx);
	de_free(c, d);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
movl $0x18, %esi
callq 0xe969b
movq %rax, %r14
movq %rbx, %rdi
callq 0x107b04
movq %rax, %r15
movq %r14, 0x10(%rax)
leaq 0x13a(%rip), %rax       # 0x9c3bf
movq %rax, 0x20(%r15)
movq 0x18(%rbx), %rax
movq %rax, 0x18(%r15)
movq $0x2, 0x50(%r15)
movq 0x18(%rax), %rdx
movq %r15, %rdi
xorl %esi, %esi
callq 0x107b28
movq %r15, %rdi
callq 0x107b17
movq %rbx, %rdi
movq %r14, %rsi
popq %rbx
popq %r14
popq %r15
jmp 0xe9752
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/nokia.c
// Function: de_identify_nsl
static int de_identify_nsl(deark *c)
{
	i64 x;

	// NSL uses a variant of IFF, which is not so easy to identify.
	// (TODO: Write an IFF format detector.)

	if(dbuf_memcmp(c->infile, 0, "FORM", 4)) return 0;

	x = de_getu16be(4);
	if(x+6 != c->infile->len) return 0;

	if(de_input_file_has_ext(c, "nsl")) {
		return 100;
	}
	return 10;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %r14
movq 0x18(%rdi), %rdi
leaq 0x7effa(%rip), %rdx     # 0x11b2cb
xorl %ebx, %ebx
movl $0x4, %ecx
xorl %esi, %esi
callq 0xf025e
testl %eax, %eax
jne 0x9c31d
movq 0x18(%r14), %rdi
movl $0x4, %esi
callq 0xef169
addq $0x6, %rax
movq 0x18(%r14), %rcx
cmpq 0x18(%rcx), %rax
jne 0x9c31d
leaq 0x9502b(%rip), %rsi     # 0x131331
movq %r14, %rdi
callq 0xea936
testl %eax, %eax
movl $0xa, %eax
movl $0x64, %ebx
cmovel %eax, %ebx
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/nokia.c
// Function: nol_ngg_read_bitmap
static void nol_ngg_read_bitmap(deark *c, lctx *d, i64 pos)
{
	de_bitmap *img = NULL;
	i64 i, j;
	u8 n;

	img = de_bitmap_create(c, d->w, d->h, 1);

	for(j=0; j<d->h; j++) {
		for(i=0; i<d->w; i++) {
			n = de_getbyte(pos);
			pos++;
			de_bitmap_setpixel_gray(img, i, j, n=='0' ? 255 : 0);
		}
	}

	de_bitmap_write_to_file(img, NULL, DE_CREATEFLAG_IS_BWIMG);
	de_bitmap_destroy(img);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
movq (%rsi), %rsi
movq 0x8(%r14), %rdx
movl $0x1, %ecx
callq 0xf2cab
movq %rax, %r12
cmpq $0x0, 0x8(%r14)
jle 0x9c39a
xorl %r13d, %r13d
cmpq $0x0, (%r14)
jle 0x9c391
xorl %ebp, %ebp
leaq (%rbx,%rbp), %rsi
movq 0x18(%r15), %rdi
callq 0xef0d5
cmpb $0x30, %al
sete %al
negb %al
movzbl %al, %ecx
movq %r12, %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0xf2a4a
incq %rbp
cmpq (%r14), %rbp
jl 0x9c361
addq %rbp, %rbx
incq %r13
cmpq 0x8(%r14), %r13
jl 0x9c359
movq %r12, %rdi
xorl %esi, %esi
movl $0x8, %edx
callq 0xf2923
movq %r12, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xf28d4
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/nokia.c
// Function: my_nsl_chunk_handler
static int my_nsl_chunk_handler(struct de_iffctx *ictx)
{
	deark *c = ictx->c;
	lctx *d = (lctx*)ictx->userdata;

	if(ictx->chunkctx->chunk4cc.id == CODE_FORM) {
		ictx->is_raw_container = 1;
		return 1;
	}

	switch(ictx->chunkctx->chunk4cc.id) {
	case CODE_NSLD:
		if(ictx->level==1 && !d->done_flag) {
			nsl_read_bitmap(c, d, ictx->chunkctx->dpos, ictx->chunkctx->dlen);
		}
		ictx->handled = 1;
		break;
	}

	return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %r14
movq 0x128(%rdi), %rax
movl 0x4(%rax), %ecx
cmpl $0x464f524d, %ecx       # imm = 0x464F524D
je 0x9c513
cmpl $0x4e534c44, %ecx       # imm = 0x4E534C44
jne 0x9c521
movl $0x130, %r12d           # imm = 0x130
cmpl $0x1, 0x64(%r14)
jne 0x9c519
movq 0x10(%r14), %rcx
cmpl $0x0, 0x10(%rcx)
jne 0x9c519
movq (%r14), %rbp
movq %rcx, (%rsp)
movq 0x40(%rax), %rdx
movq 0x48(%rax), %r13
leaq 0x94f80(%rip), %rsi     # 0x1313a7
movq %rbp, %rdi
movq %rdx, %rbx
movl %r13d, %ecx
xorl %eax, %eax
callq 0xe9226
movq (%rsp), %rax
movl $0x1, 0x10(%rax)
cmpq $0x1f8, %r13            # imm = 0x1F8
jne 0x9c535
movq %r14, 0x10(%rsp)
movq $0x54, (%rax)
movq $0x30, 0x8(%rax)
movl $0x54, %esi
movl $0x30, %edx
movq %rbp, %r15
movq %rbp, %rdi
movl $0x1, %ecx
callq 0xf2cab
movq (%rsp), %rcx
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rcx)
jle 0x9c4f2
xorl %r12d, %r12d
movq (%rcx), %rsi
testq %rsi, %rsi
jle 0x9c4e9
movq %r12, %r13
shrq $0x3, %r13
movl %r12d, %ecx
andb $0x7, %cl
movb $0x1, %r14b
shlb %cl, %r14b
xorl %ebp, %ebp
imulq %r13, %rsi
movq 0x18(%r15), %rdi
addq %rbx, %rsi
addq %rbp, %rsi
callq 0xef0d5
testb %r14b, %al
jne 0x9c4da
movq 0x8(%rsp), %rdi
movq %rbp, %rsi
movq %r12, %rdx
movl $0xff, %ecx
callq 0xf2a4a
incq %rbp
movq (%rsp), %rcx
movq (%rcx), %rsi
cmpq %rsi, %rbp
jl 0x9c4ad
incq %r12
cmpq 0x8(%rcx), %r12
jl 0x9c490
movq 0x8(%rsp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
movl $0x8, %edx
callq 0xf2923
movq 0x10(%rsp), %r14
movl $0x130, %r12d           # imm = 0x130
jmp 0x9c54b
movl $0x138, %r12d           # imm = 0x138
movl $0x1, (%r14,%r12)
movl $0x1, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x94e80(%rip), %rsi     # 0x1313bc
xorl %ebx, %ebx
movq %rbp, %rdi
movl %r13d, %edx
xorl %eax, %eax
callq 0xe9df7
movq %rbx, %rdi
callq 0xf28d4
jmp 0x9c519
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/os2bmp.c
// Function: de_module_os2bmp
void de_module_os2bmp(deark *c, struct deark_module_info *mi)
{
	mi->id = "os2bmp";
	mi->desc = "OS/2 icon (.ICO), cursor (.PTR), bitmap array";
	mi->run_fn = de_run_os2bmp;
	mi->identify_fn = de_identify_os2bmp;
}

// Assembly:
leaq 0x94f55(%rip), %rax     # 0x1314b4
movq %rax, (%rsi)
leaq 0x94f52(%rip), %rax     # 0x1314bb
movq %rax, 0x8(%rsi)
leaq 0x10(%rip), %rax        # 0x9c584
movq %rax, 0x18(%rsi)
leaq 0x6a2(%rip), %rax       # 0x9cc21
movq %rax, 0x20(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/os2bmp.c
// Function: de_identify_os2bmp_internal
static enum fmtcode de_identify_os2bmp_internal(deark *c)
{
	enum fmtcode fmt;
	u8 b[16];

	de_read(b, 0, 16);

	fmt = bytes_to_fmtcode(b[0], b[1]);
	if(fmt==DE_OS2FMT_BA) {
		enum fmtcode ba_fmt;

		// A Bitmap Array file can contain a mixture of different image types,
		// but for the purposes of identifying the file type, we only look at
		// the first one. This is not ideal, but it really doesn't matter.
		ba_fmt = bytes_to_fmtcode(b[14], b[15]);
		if(ba_fmt==DE_OS2FMT_IC) return DE_OS2FMT_BA_IC;
		if(ba_fmt==DE_OS2FMT_PT) return DE_OS2FMT_BA_PT;
		if(ba_fmt==DE_OS2FMT_CI) return DE_OS2FMT_BA_CI;
		if(ba_fmt==DE_OS2FMT_CP) return DE_OS2FMT_BA_CP;
		if(ba_fmt==DE_OS2FMT_BM) return DE_OS2FMT_BA_BM;
		return DE_OS2FMT_BA;
	}
	if(fmt==DE_OS2FMT_IC) return DE_OS2FMT_IC;
	if(fmt==DE_OS2FMT_PT) return DE_OS2FMT_PT;
	if(fmt==DE_OS2FMT_CI) return DE_OS2FMT_CI;
	if(fmt==DE_OS2FMT_CP) return DE_OS2FMT_CP;
	return DE_OS2FMT_UNKNOWN;
}

// Assembly:
pushq %rbx
subq $0x10, %rsp
movq 0x18(%rdi), %rdi
movq %rsp, %rbx
movl $0x10, %ecx
movq %rbx, %rsi
xorl %edx, %edx
callq 0xeeee8
movzbl (%rbx), %edi
movzbl 0x1(%rbx), %esi
callq 0x9ccb1
cmpl $0xa, %eax
ja 0x9ccad
movl $0x550, %ecx            # imm = 0x550
btl %eax, %ecx
jae 0x9cc7c
addq $0x10, %rsp
popq %rbx
retq
cmpl $0x1, %eax
jne 0x9ccad
movzbl 0xe(%rsp), %edi
movzbl 0xf(%rsp), %esi
callq 0x9ccb1
movl %eax, %ecx
addl $-0x2, %ecx
movl $0x1, %eax
cmpl $0x9, %ecx
jae 0x9cc76
movl %ecx, %eax
leaq 0x947e8(%rip), %rcx     # 0x131490
movl (%rcx,%rax,4), %eax
jmp 0x9cc76
xorl %eax, %eax
jmp 0x9cc76
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/os2bmp.c
// Function: bytes_to_fmtcode
static enum fmtcode bytes_to_fmtcode(u8 b0, u8 b1)
{
	if(b0=='C' && b1=='I') {
		return DE_OS2FMT_CI;
	}
	else if(b0=='C' && b1=='P') {
		return DE_OS2FMT_CP;
	}
	else if(b0=='I' && b1=='C') {
		return DE_OS2FMT_IC;
	}
	else if(b0=='P' && b1=='T') {
		return DE_OS2FMT_PT;
	}
	else if(b0=='B' && b1=='M') {
		return DE_OS2FMT_BM;
	}
	else if(b0=='B' && b1=='A') {
		return DE_OS2FMT_BA;
	}
	return DE_OS2FMT_UNKNOWN;
}

// Assembly:
movl %edi, %ecx
xorb $0x43, %cl
movl %esi, %edx
xorb $0x49, %dl
movl $0x8, %eax
orb %cl, %dl
je 0x9cd17
movl %esi, %edx
xorb $0x50, %dl
movl $0xa, %eax
orb %dl, %cl
je 0x9cd17
movl %edi, %ecx
xorb $0x49, %cl
movl %esi, %edx
xorb $0x43, %dl
movl $0x4, %eax
orb %cl, %dl
je 0x9cd17
movl %edi, %ecx
xorb $0x50, %cl
movl %esi, %edx
xorb $0x54, %dl
movl $0x6, %eax
orb %cl, %dl
je 0x9cd17
xorb $0x42, %dil
movl %esi, %ecx
xorb $0x4d, %cl
movl $0x2, %eax
orb %dil, %cl
je 0x9cd17
xorb $0x41, %sil
xorl %eax, %eax
orb %sil, %dil
sete %al
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/os2bmp.c
// Function: do_free_srcbmp
static void do_free_srcbmp(deark *c, struct srcbitmap *srcbmp)
{
	if(!srcbmp) return;
	if(srcbmp->img) {
		de_bitmap_destroy(srcbmp->img);
	}
	de_free(c, srcbmp);
}

// Assembly:
testq %rsi, %rsi
je 0x9cd46
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movq (%rsi), %rdi
testq %rdi, %rdi
je 0x9cd34
callq 0xf28d4
movq %r14, %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0xe9752
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/os2bmp.c
// Function: do_bitmap_header
static int do_bitmap_header(deark *c, struct os2icoctx *d, struct srcbitmap *srcbmp,
	i64 pos, const char *bitmapname)
{
	i64 pal_start;
	int saved_indent_level;
	int retval = 0;

	de_dbg_indent_save(c, &saved_indent_level);
	de_dbg(c, "%s %s bitmap header at %"I64_FMT, d->fmtname, bitmapname, pos);
	de_dbg_indent(c, 1);

	if(!get_bitmap_info(c, srcbmp, d->fmt, d->fmtname, pos))
		goto done;

	// read palette
	if (srcbmp->bi.pal_entries > 0) {
		pal_start = pos+14+srcbmp->bi.infohdrsize;
		de_dbg(c, "palette at %d", (int)pal_start);
		de_dbg_indent(c, 1);
		de_read_palette_rgb(c->infile, pal_start, srcbmp->bi.pal_entries, srcbmp->bi.bytes_per_pal_entry,
			srcbmp->pal, 256, DE_GETRGBFLAG_BGR);
		de_dbg_indent(c, -1);
	}

	if(srcbmp->bi.size_of_headers_and_pal<26) {
		de_err(c, "Bad %s image", d->fmtname);
		goto done;
	}

	retval = 1;

done:
	de_dbg_indent_restore(c, saved_indent_level);
	return retval;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %r8, %r13
movq %rcx, %r12
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x14(%rsp), %rsi
callq 0xe958c
movq (%r14), %rdx
leaq 0x9481d(%rip), %rsi     # 0x131595
xorl %ebp, %ebp
movq %rbx, %rdi
movq %r13, %rcx
movq %r12, %r8
xorl %eax, %eax
callq 0xe9226
movq %rbx, %rdi
movl $0x1, %esi
callq 0xe9585
movl 0x8(%r14), %edx
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rcx
callq 0x9d144
testl %eax, %eax
je 0x9ce3e
cmpq $0x0, 0x58(%r15)
jle 0x9ce19
movq 0x20(%r15), %rax
addq %rax, %r12
addq $0xe, %r12
leaq 0x933a6(%rip), %rsi     # 0x130170
movq %rbx, %rdi
movl %r12d, %edx
xorl %eax, %eax
callq 0xe9226
movq %rbx, %rdi
movl $0x1, %esi
callq 0xe9585
movq 0x18(%rbx), %rdi
movq 0x50(%r15), %rcx
movq 0x58(%r15), %rdx
leaq 0xb8(%r15), %r8
movl $0x1, (%rsp)
movl $0x100, %r9d            # imm = 0x100
movq %r12, %rsi
callq 0xf328f
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0xe9585
movl $0x1, %ebp
cmpq $0x19, 0x90(%r15)
jg 0x9ce3e
movq (%r14), %rdx
leaq 0x9477e(%rip), %rsi     # 0x1315b0
xorl %ebp, %ebp
movq %rbx, %rdi
xorl %eax, %eax
callq 0xe9df7
movl 0x14(%rsp), %esi
movq %rbx, %rdi
callq 0xe9595
movl %ebp, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/os2bmp.c
// Function: do_read_bitmap
static int do_read_bitmap(deark *c, struct srcbitmap *srcbmp, int mask_mode, const char *bitmapname)
{
	int retval = 0;

	if(!srcbmp) goto done;
	if(srcbmp->img) goto done;

	if(mask_mode && srcbmp->bi.bitcount!=1) {
		mask_mode = 0;
	}

	srcbmp->img = de_bitmap_create(c, srcbmp->bi.width, srcbmp->bi.height, mask_mode?1:4);

	de_dbg(c, "%s pixel data at %"I64_FMT, bitmapname, srcbmp->bi.bitsoffset);

	if(mask_mode) {
		de_convert_image_bilevel(c->infile, srcbmp->bi.bitsoffset, srcbmp->bi.rowspan,
			srcbmp->img, 0);
	}
	else if(srcbmp->bi.bitcount<=8) {
		de_convert_image_paletted(c->infile, srcbmp->bi.bitsoffset, srcbmp->bi.bitcount,
			srcbmp->bi.rowspan, srcbmp->pal, srcbmp->img, 0);
	}
	else if(srcbmp->bi.bitcount==24) {
		de_convert_image_rgb(c->infile, srcbmp->bi.bitsoffset, srcbmp->bi.rowspan, 3,
			srcbmp->img, DE_GETRGBFLAG_BGR);
	}
	else {
		goto done;
	}

	retval = 1;
done:
	return retval;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
xorl %ebp, %ebp
testq %rsi, %rsi
je 0x9cf1c
movq %rsi, %rbx
cmpq $0x0, (%rsi)
jne 0x9cf1c
movq %rcx, %r15
movq %rdi, %r14
testl %edx, %edx
je 0x9ce93
cmpq $0x1, 0x38(%rbx)
setne %al
jmp 0x9ce95
movb $0x1, %al
movq 0x28(%rbx), %rsi
movq 0x30(%rbx), %rdx
movzbl %al, %r12d
leal (%r12,%r12,2), %ecx
incl %ecx
movq %r14, %rdi
callq 0xf2cab
movq %rax, (%rbx)
movq 0x18(%rbx), %rcx
leaq 0x94739(%rip), %rsi     # 0x1315f6
movq %r14, %rdi
movq %r15, %rdx
xorl %eax, %eax
callq 0xe9226
testb %r12b, %r12b
je 0x9cf00
movq 0x38(%rbx), %rdx
cmpq $0x8, %rdx
jg 0x9cf2b
movq 0x18(%r14), %rdi
movq (%rbx), %r9
movq 0x18(%rbx), %rsi
movq 0x68(%rbx), %rcx
addq $0xb8, %rbx
movl $0x0, (%rsp)
movq %rbx, %r8
callq 0xf35b8
jmp 0x9cf17
movq 0x18(%r14), %rdi
movq (%rbx), %rcx
movq 0x18(%rbx), %rsi
movq 0x68(%rbx), %rdx
xorl %r8d, %r8d
callq 0xf3081
movl $0x1, %ebp
movl %ebp, %eax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
xorl %ebp, %ebp
cmpq $0x18, %rdx
jne 0x9cf1c
movq 0x18(%r14), %rdi
movq (%rbx), %r8
movq 0x18(%rbx), %rsi
movq 0x68(%rbx), %rdx
movl $0x1, %ebp
movl $0x3, %ecx
movl $0x1, %r9d
callq 0xf38d9
jmp 0x9cf1c
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/os2bmp.c
// Function: do_write_final_image
static void do_write_final_image(deark *c, struct os2icoctx *d, de_bitmap *img)
{
	de_finfo *fi = NULL;

	fi = de_finfo_create(c);
	if(d->srcbmp) {
		if(d->srcbmp->has_hotspot) {
			fi->has_hotspot = 1;
			fi->hotspot_x = d->srcbmp->bi.hotspot_x;
			fi->hotspot_y = (int)img->height - 1 - d->srcbmp->bi.hotspot_y;
		}
	}
	else if(d->maskbmp) {
		if(d->maskbmp->has_hotspot) {
			fi->has_hotspot = 1;
			fi->hotspot_x = d->maskbmp->bi.hotspot_x;
			fi->hotspot_y = (int)img->height - 1 - d->maskbmp->bi.hotspot_y;
		}
	}

	de_bitmap_write_to_file_finfo(img, fi, DE_CREATEFLAG_OPT_IMAGE | DE_CREATEFLAG_FLIP_IMAGE);

	de_finfo_destroy(c, fi);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %r14
movq %rsi, %r12
movq %rdi, %rbx
callq 0xea9a9
movq %rax, %r15
movq 0x10(%r12), %rax
testq %rax, %rax
jne 0x9d0f6
movq 0x18(%r12), %rax
testq %rax, %rax
je 0x9d11e
cmpb $0x0, 0xa8(%rax)
je 0x9d11e
movb $0x1, 0xe(%r15)
movl 0xc(%rax), %ecx
movl %ecx, 0x98(%r15)
movl 0x10(%rax), %eax
notl %eax
addl 0x10(%r14), %eax
movl %eax, 0x9c(%r15)
movq %r14, %rdi
movq %r15, %rsi
movl $0x6, %edx
callq 0xf2917
movq %rbx, %rdi
movq %r15, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0xea9b3
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/os2bmp.c
// Function: get_bitmap_info
static int get_bitmap_info(deark *c, struct srcbitmap *srcbmp, enum fmtcode fmt,
	const char *fmtname, i64 pos)
{
	int retval = 0;
	unsigned int flags;

	flags = DE_BMPINFO_HAS_FILEHEADER;
	if(fmt==DE_OS2FMT_CP || fmt==DE_OS2FMT_PT) {
		srcbmp->has_hotspot = 1;
		flags |= DE_BMPINFO_HAS_HOTSPOT;
	}
	if(!fmtutil_get_bmpinfo(c, c->infile, &srcbmp->bi, pos, c->infile->len - pos, flags)) {
		de_err(c, "Invalid or unsupported bitmap");
		goto done;
	}

	if(srcbmp->bi.is_compressed) {
		if(srcbmp->bi.sizeImage_field) {
			srcbmp->bitssize = srcbmp->bi.sizeImage_field;
		}
		else {
			de_err(c, "Cannot determine bits size");
			goto done;
		}
	}
	else {
		srcbmp->bitssize = srcbmp->bi.rowspan * srcbmp->bi.height;
	}

	retval = 1;
done:
	return retval;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
cmpl $0xa, %edx
je 0x9d15e
movl $0x1, %r9d
cmpl $0x6, %edx
jne 0x9d16c
movb $0x1, 0xa8(%r14)
movl $0x5, %r9d
movq 0x18(%rbx), %rsi
leaq 0x8(%r14), %rdx
movq 0x18(%rsi), %r8
subq %rcx, %r8
movq %rbx, %rdi
callq 0xf7881
testl %eax, %eax
je 0x9d1a3
cmpl $0x0, 0xa0(%r14)
je 0x9d1b8
movq 0x48(%r14), %rax
testq %rax, %rax
jne 0x9d1c1
leaq 0x9443a(%rip), %rsi     # 0x1315db
jmp 0x9d1aa
leaq 0x94413(%rip), %rsi     # 0x1315bd
xorl %ebp, %ebp
movq %rbx, %rdi
xorl %eax, %eax
callq 0xe9df7
jmp 0x9d1cd
movq 0x30(%r14), %rax
imulq 0x68(%r14), %rax
movq %rax, 0xb0(%r14)
movl $0x1, %ebp
movl %ebp, %eax
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/os2bmp.c
// Function: do_extract_one_image
static void do_extract_one_image(deark *c, i64 pos, enum fmtcode fmt,
	const char *fmtname, const char *ext)
{
	struct srcbitmap *srcbmp = NULL;
	dbuf *f = NULL;

	de_dbg(c, "%s image at %d", fmtname, (int)pos);
	de_dbg_indent(c, 1);

	srcbmp = de_malloc(c, sizeof(struct srcbitmap));

	if(!get_bitmap_info(c, srcbmp, fmt, fmtname, pos))
		goto done;

	f = dbuf_create_output_file(c, ext, NULL, 0);

	// First 10 bytes of the FILEHEADER can be copied unchanged.
	dbuf_copy(c->infile, pos, 10, f);

	// The "bits offset" is probably the only thing we need to adjust.
	dbuf_writeu32le(f, srcbmp->bi.size_of_headers_and_pal);

	// Copy the infoheader & palette
	dbuf_copy(c->infile, pos+14, srcbmp->bi.size_of_headers_and_pal-14, f);

	// Copy the bitmap
	if(srcbmp->bi.bitsoffset+srcbmp->bitssize > c->infile->len) goto done;
	dbuf_copy(c->infile, srcbmp->bi.bitsoffset, srcbmp->bitssize, f);

done:
	de_dbg_indent(c, -1);
	dbuf_close(f);
	do_free_srcbmp(c, srcbmp);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %r8, %r13
movl %edx, %ebp
movq %rsi, %r12
movq %rdi, %rbx
leaq 0x944b6(%rip), %rsi     # 0x1316a7
xorl %r14d, %r14d
movq %rcx, %rdx
movl %r12d, %ecx
xorl %eax, %eax
callq 0xe9226
movq %rbx, %rdi
movl $0x1, %esi
callq 0xe9585
movl $0x4b8, %esi            # imm = 0x4B8
movq %rbx, %rdi
callq 0xe969b
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
movl %ebp, %edx
movq %r12, %rcx
callq 0x9d144
testl %eax, %eax
je 0x9d2a6
movq %rbx, %rdi
movq %r13, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0xf037a
movq %rax, %r14
movq 0x18(%rbx), %rdi
movl $0xa, %edx
movq %r12, %rsi
movq %rax, %rcx
callq 0xefabc
movq 0x90(%r15), %rsi
movq %r14, %rdi
callq 0xf1645
movq 0x18(%rbx), %rdi
addq $0xe, %r12
movq 0x90(%r15), %rdx
addq $-0xe, %rdx
movq %r12, %rsi
movq %r14, %rcx
callq 0xefabc
movq 0x18(%r15), %rsi
movq 0xb0(%r15), %rdx
leaq (%rdx,%rsi), %rax
movq 0x18(%rbx), %rdi
cmpq 0x18(%rdi), %rax
jg 0x9d2a6
movq %r14, %rcx
callq 0xefabc
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0xe9585
movq %r14, %rdi
callq 0xf0b13
movq %rbx, %rdi
movq %r15, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x9cd18
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/ole1.c
// Function: de_module_ole1
void de_module_ole1(deark *c, struct deark_module_info *mi)
{
	mi->id = "ole1";
	mi->desc = "OLE1.0 objects";
	mi->run_fn = de_run_ole1;
	mi->identify_fn = NULL;
	mi->flags |= DE_MODFLAG_HIDDEN;
}

// Assembly:
leaq 0x7c387(%rip), %rax     # 0x119662
movq %rax, (%rsi)
leaq 0x943df(%rip), %rax     # 0x1316c4
movq %rax, 0x8(%rsi)
leaq 0x11(%rip), %rax        # 0x9d301
movq %rax, 0x18(%rsi)
movq $0x0, 0x20(%rsi)
orb $0x1, 0x30(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/ole1.c
// Function: calc_skip_presentation_obj
static int calc_skip_presentation_obj(deark *c, lctx *d)
{
	UI format;
	int retval = 0;
	int ret;
	i64 n;

	if(!calc_chkver(c, d)) goto done;

	format = (UI)de_getu32le_p(&d->pos_for_calc_size);
	if(format==0) {
		retval = 1;
		goto done;
	}

	ret = calc_chkstring(c, d);
	if(ret) {
		d->pos_for_calc_size += 8; // width, height
		n = de_getu32le_p(&d->pos_for_calc_size);
		d->pos_for_calc_size += n; // Presentation data
	}
	else {
		n = de_getu32le_p(&d->pos_for_calc_size);
		if(n==0) {
			n = de_getu32le_p(&d->pos_for_calc_size);
			d->pos_for_calc_size += n; // Clipboard format name
		}
		n = de_getu32le_p(&d->pos_for_calc_size);
		d->pos_for_calc_size += n; // Presentation data
	}
	retval = 1;

done:
	return retval;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movq 0x18(%rdi), %rdi
addq $0x10, %rbx
movq %rbx, %rsi
callq 0xef3a0
andl $0xff0000ff, %eax       # imm = 0xFF0000FF
xorl %ebp, %ebp
cmpl $0x1, %eax
jne 0x9e70c
movq 0x18(%r14), %rdi
movq %rbx, %rsi
callq 0xef3a0
movl $0x1, %ebp
testl %eax, %eax
je 0x9e70c
movq 0x18(%r14), %rdi
movq %rbx, %rsi
callq 0xef3a0
movq %rax, %r15
cmpq $0xf, %rax
jg 0x9e6cc
movq 0x18(%r14), %rdi
movq (%rbx), %rsi
movq %r15, %rdx
movq %r15, %rcx
movl $0x1, %r8d
movl $0x5, %r9d
callq 0xefe67
movq %rax, %r12
movq 0x8(%rax), %r13
leaq 0xa2058(%rip), %rsi     # 0x1406dd
movq %r13, %rdi
callq 0x181a0
testl %eax, %eax
je 0x9e6b7
leaq 0xabadc(%rip), %rsi     # 0x14a174
movq %r13, %rdi
callq 0x181a0
testl %eax, %eax
je 0x9e6b7
leaq 0xabad3(%rip), %rsi     # 0x14a17e
movq %r13, %rdi
callq 0x181a0
testl %eax, %eax
jne 0x9e6cf
addq %r15, (%rbx)
movq %r14, %rdi
movq %r12, %rsi
callq 0xf00aa
movl $0x8, %eax
jmp 0x9e6fa
xorl %r12d, %r12d
addq %r15, (%rbx)
movq %r14, %rdi
movq %r12, %rsi
callq 0xf00aa
movq 0x18(%r14), %rdi
movq %rbx, %rsi
callq 0xef3a0
testq %rax, %rax
jne 0x9e6fd
movq 0x18(%r14), %rdi
movq %rbx, %rsi
callq 0xef3a0
addq %rax, (%rbx)
movq 0x18(%r14), %rdi
movq %rbx, %rsi
callq 0xef3a0
addq %rax, (%rbx)
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/os2pack.c
// Function: de_module_os2pack
void de_module_os2pack(deark *c, struct deark_module_info *mi)
{
	mi->id = "os2pack";
	mi->desc = "OS/2 PACK archive";
	mi->run_fn = de_run_os2pack;
	mi->identify_fn = de_identify_os2pack;
}

// Assembly:
leaq 0x93335(%rip), %rax     # 0x131a5c
movq %rax, (%rsi)
leaq 0x93333(%rip), %rax     # 0x131a64
movq %rax, 0x8(%rsi)
leaq 0x10(%rip), %rax        # 0x9e74c
movq %rax, 0x18(%rsi)
leaq 0xf(%rip), %rax         # 0x9e756
movq %rax, 0x20(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/os2pack.c
// Function: de_module_os2pack2
void de_module_os2pack2(deark *c, struct deark_module_info *mi)
{
	mi->id = "os2pack2";
	mi->desc = "OS/2 PACK2 archive";
	mi->run_fn = de_run_os2pack2;
	mi->flags |= DE_MODFLAG_WARNPARSEONLY;
	mi->identify_fn = de_identify_os2pack2;
}

// Assembly:
leaq 0x932e0(%rip), %rax     # 0x131a76
movq %rax, (%rsi)
leaq 0x932df(%rip), %rax     # 0x131a7f
movq %rax, 0x8(%rsi)
leaq 0x14(%rip), %rax        # 0x9e7bf
movq %rax, 0x18(%rsi)
orb $0x20, 0x30(%rsi)
leaq 0xc(%rip), %rax         # 0x9e7c6
movq %rax, 0x20(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/os2pack.c
// Function: os2pack2_read_cmpr_method
static void os2pack2_read_cmpr_method(deark *c, i64 pos, i64 len)
{
	struct de_fourcc cmpr4cc;

	if(len<8) return;
	dbuf_read_fourcc(c->infile, pos+4, &cmpr4cc, 4, 0x0);
	de_dbg(c, "cmpr meth: '%s'", cmpr4cc.id_dbgstr); // Usually "fT19"
}

// Assembly:
cmpq $0x8, %rdx
jl 0x9efad
pushq %rbx
subq $0x30, %rsp
movq %rdi, %rbx
movq 0x18(%rdi), %rdi
addq $0x4, %rsi
movq %rsp, %rdx
movl $0x4, %ecx
xorl %r8d, %r8d
callq 0xf1d74
leaq 0x10(%rsp), %rdx
leaq 0x92bc3(%rip), %rsi     # 0x131b61
movq %rbx, %rdi
xorl %eax, %eax
callq 0xe9226
addq $0x30, %rsp
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/officeart.c
// Function: de_module_officeart
void de_module_officeart(deark *c, struct deark_module_info *mi)
{
	mi->id = "officeart";
	mi->desc = "Office Art data";
	mi->run_fn = de_run_officeart;
	mi->flags |= DE_MODFLAG_HIDDEN;
}

// Assembly:
leaq 0x7af64(%rip), %rax     # 0x119f3f
movq %rax, (%rsi)
leaq 0x92c03(%rip), %rax     # 0x131be8
movq %rax, 0x8(%rsi)
leaq 0x9(%rip), %rax         # 0x9eff9
movq %rax, 0x18(%rsi)
orb $0x1, 0x30(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/lbr.c
// Function: de_module_lbr
void de_module_lbr(deark *c, struct deark_module_info *mi)
{
	mi->id = "lbr";
	mi->desc = "LBR archive";
	mi->run_fn = de_run_lbr;
	mi->identify_fn = de_identify_lbr;
}

// Assembly:
leaq 0x92758(%rip), %rax     # 0x131d1f
movq %rax, (%rsi)
leaq 0x92752(%rip), %rax     # 0x131d23
movq %rax, 0x8(%rsi)
leaq 0x10(%rip), %rax        # 0x9f5ec
movq %rax, 0x18(%rsi)
leaq 0x99(%rip), %rax        # 0x9f680
movq %rax, 0x20(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/lbr.c
// Function: de_run_lbr
static void de_run_lbr(deark *c, de_module_params *mparams)
{
	lctx *d = NULL;
	i64 pos = 0;

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

	d->crco = de_crcobj_create(c, DE_CRCOBJ_CRC16_XMODEM);

	// Read directory
	if(!do_entry(c, d, pos, 1)) goto done;
	pos += LBR_DIRENT_SIZE;

	// Read member files
	while(pos+LBR_DIRENT_SIZE <= c->infile->len &&
		pos+LBR_DIRENT_SIZE <= d->dir_len_in_bytes)
	{
		if(!do_entry(c, d, pos, 0)) goto done;
		pos += LBR_DIRENT_SIZE;
	}

done:
	if(d) {
		de_crcobj_destroy(d->crco);
		de_free(c, d);
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
movl $0x18, %esi
callq 0xe969b
movq %rax, %r14
movq %rbx, %rdi
xorl %esi, %esi
movl $0x1, %edx
callq 0xeb7d1
movl %eax, (%r14)
movq %rbx, %rdi
movl $0x20, %esi
callq 0xeba56
movq %rax, 0x10(%r14)
movq %rbx, %rdi
movq %r14, %rsi
xorl %edx, %edx
movl $0x1, %ecx
callq 0xa0c1c
testl %eax, %eax
je 0x9f667
movl $0x20, %edx
leaq 0x20(%rdx), %r15
movq 0x18(%rbx), %rax
cmpq 0x18(%rax), %r15
jg 0x9f667
cmpq 0x8(%r14), %r15
jg 0x9f667
movq %rbx, %rdi
movq %r14, %rsi
xorl %ecx, %ecx
callq 0xa0c1c
movq %r15, %rdx
testl %eax, %eax
jne 0x9f63f
movq 0x10(%r14), %rdi
callq 0xebe1d
movq %rbx, %rdi
movq %r14, %rsi
popq %rbx
popq %r14
popq %r15
jmp 0xe9752
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/lbr.c
// Function: de_module_squeeze
void de_module_squeeze(deark *c, struct deark_module_info *mi)
{
	mi->id = "squeeze";
	mi->desc = "Squeeze (CP/M)";
	mi->run_fn = de_run_squeeze;
	mi->identify_fn = de_identify_squeeze;
}

// Assembly:
leaq 0xaaef4(%rip), %rax     # 0x14a5a1
movq %rax, (%rsi)
leaq 0x92678(%rip), %rax     # 0x131d2f
movq %rax, 0x8(%rsi)
leaq 0x10(%rip), %rax        # 0x9f6d2
movq %rax, 0x18(%rsi)
leaq 0x630(%rip), %rax       # 0x9fcfd
movq %rax, 0x20(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/lbr.c
// Function: de_module_crunch
void de_module_crunch(deark *c, struct deark_module_info *mi)
{
	mi->id = "crunch";
	mi->desc = "Crunch (CP/M)";
	mi->run_fn = de_run_crunch;
	mi->identify_fn = de_identify_crunch;
}

// Assembly:
leaq 0x9200e(%rip), %rax     # 0x131d3e
movq %rax, (%rsi)
leaq 0x9200b(%rip), %rax     # 0x131d45
movq %rax, 0x8(%rsi)
leaq 0x10(%rip), %rax        # 0x9fd55
movq %rax, 0x18(%rsi)
leaq 0x3d8(%rip), %rax       # 0xa0128
movq %rax, 0x20(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/lbr.c
// Function: de_module_crlzh
void de_module_crlzh(deark *c, struct deark_module_info *mi)
{
	mi->id = "crlzh";
	mi->desc = "CRLZH (CP/M)";
	mi->run_fn = de_run_crlzh;
	mi->identify_fn = de_identify_crlzh;
}

// Assembly:
leaq 0x91c06(%rip), %rax     # 0x131d53
movq %rax, (%rsi)
leaq 0x91c02(%rip), %rax     # 0x131d59
movq %rax, 0x8(%rsi)
leaq 0x10(%rip), %rax        # 0xa0172
movq %rax, 0x18(%rsi)
leaq 0x386(%rip), %rax       # 0xa04f3
movq %rax, 0x20(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/lbr.c
// Function: de_module_zsq
void de_module_zsq(deark *c, struct deark_module_info *mi)
{
	mi->id = "zsq";
	mi->desc = "ZSQ (ZSQUSQ, LZW-compressed file)";
	mi->run_fn = de_run_zsq;
	mi->identify_fn = de_identify_zsq;
}

// Assembly:
leaq 0x9184e(%rip), %rax     # 0x131d66
movq %rax, (%rsi)
leaq 0x91848(%rip), %rax     # 0x131d6a
movq %rax, 0x8(%rsi)
leaq 0x10(%rip), %rax        # 0xa053d
movq %rax, 0x18(%rsi)
leaq 0x2f9(%rip), %rax       # 0xa0831
movq %rax, 0x20(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/lbr.c
// Function: de_module_lzwcom
void de_module_lzwcom(deark *c, struct deark_module_info *mi)
{
	mi->id = "lzwcom";
	mi->desc = "LZWCOM compressed file";
	mi->run_fn = de_run_lzwcom;
	mi->identify_fn = NULL;
	mi->help_fn = de_help_lzwcom;
}

// Assembly:
leaq 0x91536(%rip), %rax     # 0x131d8c
movq %rax, (%rsi)
leaq 0x91533(%rip), %rax     # 0x131d93
movq %rax, 0x8(%rsi)
leaq 0x18(%rip), %rax        # 0xa0883
movq %rax, 0x18(%rsi)
movq $0x0, 0x20(%rsi)
leaq 0x390(%rip), %rax       # 0xa0c0e
movq %rax, 0x28(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/lbr.c
// Function: handle_timestamp
static void handle_timestamp(deark *c, lctx *d, i64 date_raw, i64 time_raw,
	struct de_timestamp *ts, const char *name)
{
	i64 ut;
	char timestamp_buf[64];

	if(date_raw==0) {
		de_dbg(c, "%s: [not set]", name);
		return;
	}

	// Day 0 is Dec 31, 1977 (or it would be, if 0 weren't reserved).
	// Difference from Unix time (Jan 1, 1970) =
	//  365 days in 1970, 1971, 1973, 1974, 1975
	//  + 366 days in 1972, 1976
	//  + 364 days in 1977.
	ut = 86400 * (date_raw + (365*5 + 366*2 + 364));

	// Time of day is in DOS format.
	ut += 3600*(time_raw>>11); // hours
	ut += 60*(time_raw&0x07e0)>>5; // minutes
	ut += 2*(time_raw&0x001f); // seconds
	de_unix_time_to_timestamp(ut, ts, 0);
	de_timestamp_to_string(ts, timestamp_buf, sizeof(timestamp_buf), 0);
	de_dbg(c, "%s: %s", name, timestamp_buf);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %r8, %rbx
movq %rdi, %r14
testq %rsi, %rsi
je 0xa1173
movq %rcx, %r15
imulq $0x15180, %rsi, %rax    # imm = 0x15180
movq %rdx, %rcx
sarq $0xb, %rcx
imulq $0xe10, %rcx, %rcx      # imm = 0xE10
addq %rax, %rcx
movl %edx, %eax
andl $0x1f, %eax
leaq (%rcx,%rax,2), %rax
andl $0x7e0, %edx            # imm = 0x7E0
imull $0x3c, %edx, %ecx
shrl $0x5, %ecx
leaq (%rcx,%rax), %rdi
addq $0xf0aed80, %rdi        # imm = 0xF0AED80
movq %r15, %rsi
xorl %edx, %edx
callq 0xeace2
movq %rsp, %r12
movl $0x40, %edx
movq %r15, %rdi
movq %r12, %rsi
xorl %ecx, %ecx
callq 0xeb4f8
leaq 0xa7c93(%rip), %rsi     # 0x148dea
movq %r14, %rdi
movq %rbx, %rdx
movq %r12, %rcx
xorl %eax, %eax
callq 0xe9226
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
leaq 0x90cea(%rip), %rsi     # 0x131e64
movq %r14, %rdi
movq %rbx, %rdx
xorl %eax, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0xe9226
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/megapaint.c
// Function: de_module_bld
void de_module_bld(deark *c, struct deark_module_info *mi)
{
	mi->id = "bld";
	mi->desc = "MegaPaint BLD";
	mi->run_fn = de_run_bld;
	mi->identify_fn = de_identify_bld;
}

// Assembly:
leaq 0x90d8c(%rip), %rax     # 0x132153
movq %rax, (%rsi)
leaq 0x90d86(%rip), %rax     # 0x132157
movq %rax, 0x8(%rsi)
leaq 0x10(%rip), %rax        # 0xa13ec
movq %rax, 0x18(%rsi)
leaq 0x1aa(%rip), %rax       # 0xa1591
movq %rax, 0x20(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/megapaint.c
// Function: de_module_megapaint_pat
void de_module_megapaint_pat(deark *c, struct deark_module_info *mi)
{
	mi->id = "megapaint_pat";
	mi->desc = "MegaPaint Patterns";
	mi->run_fn = de_run_megapaint_pat;
	mi->identify_fn = de_identify_megapaint_pat;
}

// Assembly:
leaq 0x90b96(%rip), %rax     # 0x132165
movq %rax, (%rsi)
leaq 0x90b9a(%rip), %rax     # 0x132173
movq %rax, 0x8(%rsi)
leaq 0x10(%rip), %rax        # 0xa15f4
movq %rax, 0x18(%rsi)
leaq 0x117(%rip), %rax       # 0xa1706
movq %rax, 0x20(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/megapaint.c
// Function: de_run_megapaint_pat
static void de_run_megapaint_pat(deark *c, de_module_params *mparams)
{
	// Note: This module is based on guesswork, and may be incomplete.
	de_bitmap *mainimg = NULL;
	i64 main_w, main_h;
	i64 pos = 0;
	i64 k;

	pos += 8;
	main_w = 1+(32+1)*16;
	main_h = 1+(32+1)*2;

	mainimg = de_bitmap_create(c, main_w, main_h, 1);
	de_bitmap_rect(mainimg, 0, 0, main_w, main_h, DE_MAKE_GRAY(128), 0);

	for(k=0; k<32; k++) {
		de_bitmap *img = NULL;
		i64 imgpos_x, imgpos_y;

		img = de_bitmap_create(c, 32, 32, 1);
		img->is_internal = 1;
		de_convert_image_bilevel(c->infile, pos, 4, img, DE_CVTF_WHITEISZERO);
		pos += 4*32;

		imgpos_x = 1+(32+1)*(k%16);
		imgpos_y = 1+(32+1)*(k/16);
		de_bitmap_copy_rect(img, mainimg, 0, 0, 32, 32, imgpos_x, imgpos_y, 0);
		de_bitmap_destroy(img);
	}

	de_bitmap_write_to_file(mainimg, NULL, 0);
	de_bitmap_destroy(mainimg);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdi, %rbx
movl $0x211, %esi            # imm = 0x211
movl $0x43, %edx
movl $0x1, %ecx
callq 0xf2cab
movq %rax, %r14
subq $0x8, %rsp
xorl %r13d, %r13d
movl $0x211, %ecx            # imm = 0x211
movl $0x43, %r8d
movq %rax, %rdi
xorl %esi, %esi
xorl %edx, %edx
movl $0xff808080, %r9d       # imm = 0xFF808080
pushq $0x0
callq 0xf3cb3
addq $0x10, %rsp
movl $0x8, %r15d
movl $0x20, %esi
movl $0x20, %edx
movq %rbx, %rdi
movl $0x1, %ecx
callq 0xf2cab
movq %rax, %r12
movb $0x1, 0x38(%rax)
movq 0x18(%rbx), %rdi
movl $0x4, %edx
movq %r15, %rsi
movq %rax, %rcx
movl $0x1, %r8d
callq 0xf3081
subq $-0x80, %r15
movl %r13d, %eax
andl $0xf, %eax
movl %eax, %ecx
shll $0x5, %ecx
addq %rcx, %rax
incq %rax
movq %r13, %rcx
shrq $0x4, %rcx
movq %rcx, %rdx
shlq $0x5, %rdx
leaq (%rcx,%rdx), %r10
incq %r10
subq $0x8, %rsp
movl $0x20, %r8d
movl $0x20, %r9d
movq %r12, %rdi
movq %r14, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
pushq $0x0
pushq %r10
pushq %rax
callq 0xf3d2f
addq $0x20, %rsp
movq %r12, %rdi
callq 0xf28d4
incq %r13
cmpq $0x1008, %r15           # imm = 0x1008
jne 0xa1647
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0xf2923
movq %r14, %rdi
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0xf28d4
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/megapaint.c
// Function: de_module_megapaint_lib
void de_module_megapaint_lib(deark *c, struct deark_module_info *mi)
{
	mi->id = "megapaint_lib";
	mi->desc = "MegaPaint Symbol Library";
	mi->run_fn = de_run_megapaint_lib;
	mi->identify_fn = de_identify_megapaint_lib;
}

// Assembly:
leaq 0x90a32(%rip), %rax     # 0x132186
movq %rax, (%rsi)
leaq 0x90a36(%rip), %rax     # 0x132194
movq %rax, 0x8(%rsi)
leaq 0x10(%rip), %rax        # 0xa1779
movq %rax, 0x18(%rsi)
leaq 0x146(%rip), %rax       # 0xa18ba
movq %rax, 0x20(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/megapaint.c
// Function: de_run_megapaint_lib
static void de_run_megapaint_lib(deark *c, de_module_params *mparams)
{
	// Note: This module is based on guesswork, and may be incomplete.
	const i64 idxpos = 14;
	i64 k;
	i64 nsyms;

	nsyms = 1+de_getu16be(12);
	de_dbg(c, "number of symbols: %d", (int)nsyms);

	for(k=0; k<nsyms; k++) {
		i64 sym_offs;
		i64 w, h, rowspan;

		sym_offs = de_getu32be(idxpos+4*k);
		de_dbg(c, "symbol #%d", (int)(1+k));
		de_dbg_indent(c, 1);
		de_dbg(c, "offset: %u", (unsigned int)sym_offs);

		w = 1+de_getu16be(sym_offs);
		h = 1+de_getu16be(sym_offs+2);
		de_dbg_dimensions(c, w, h);
		rowspan = ((w+15)/16)*2;
		de_convert_and_write_image_bilevel(c->infile, sym_offs+4, w, h, rowspan,
			DE_CVTF_WHITEISZERO, NULL, 0);
		de_dbg_indent(c, -1);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movq 0x18(%rdi), %rdi
movl $0xc, %esi
callq 0xef169
movq %rax, %r14
leal 0x1(%rax), %edx
leaq 0x90a5b(%rip), %rsi     # 0x132200
movq %rbx, %rdi
xorl %eax, %eax
callq 0xe9226
testq %r14, %r14
js 0xa18ab
movq $-0x1, %r13
movl $0xe, %eax
movq %r14, 0x10(%rsp)
movq %rax, 0x8(%rsp)
movq 0x18(%rbx), %rdi
movq 0x8(%rsp), %rsi
callq 0xef32a
movq %rax, %rbp
leal 0x2(%r13), %edx
movq %rbx, %rdi
leaq 0x90a29(%rip), %rsi     # 0x132216
xorl %eax, %eax
callq 0xe9226
movq %rbx, %rdi
movl $0x1, %esi
callq 0xe9585
movq %rbx, %rdi
leaq 0x7d82e(%rip), %rsi     # 0x11f039
movl %ebp, %edx
xorl %eax, %eax
callq 0xe9226
movq 0x18(%rbx), %rdi
movq %rbp, %rsi
callq 0xef169
movq %rax, %r12
leaq 0x1(%rax), %r15
movq 0x18(%rbx), %rdi
leaq 0x2(%rbp), %rsi
callq 0xef169
leaq 0x1(%rax), %r14
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0xe9b05
leaq 0x10(%r12), %rax
addq $0x1f, %r12
testq %rax, %rax
cmovnsq %rax, %r12
sarq $0x4, %r12
addq %r12, %r12
movq 0x18(%rbx), %rdi
addq $0x4, %rbp
movq %rbp, %rsi
movq %r15, %rdx
movq %r14, %rcx
movq 0x10(%rsp), %r14
movq %r12, %r8
movl $0x1, %r9d
pushq $0x0
pushq $0x0
callq 0xf30d9
addq $0x10, %rsp
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0xe9585
movq 0x8(%rsp), %rax
incq %r13
addq $0x4, %rax
cmpq %r13, %r14
jne 0xa17c9
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/nie.c
// Function: de_module_nie
void de_module_nie(deark *c, struct deark_module_info *mi)
{
	mi->id = "nie";
	mi->desc = "NIE/NII/NIA (Naive Image Formats)";
	mi->run_fn = de_run_nie;
	mi->identify_fn = de_identify_nie;
}

// Assembly:
leaq 0x9091d(%rip), %rax     # 0x132230
movq %rax, (%rsi)
leaq 0x90917(%rip), %rax     # 0x132234
movq %rax, 0x8(%rsi)
leaq 0x10(%rip), %rax        # 0xa1938
movq %rax, 0x18(%rsi)
leaq 0x3fb(%rip), %rax       # 0xa1d2e
movq %rax, 0x20(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/nie.c
// Function: do_header
static int do_header(deark *c, lctx *d, i64 pos)
{
	u8 b;

	b = de_getbyte_p(&pos);
	if(b!=0xff) {
		de_err(c, "Unknown %s version", d->fmtname);
		return 0;
	}

	if(d->sig==SIG_NII) {
		pos += 3; // padding
	}
	else {
		b = de_getbyte_p(&pos);
		if(b=='b') {
			d->is_bgra = 1;
		}
		else if(b!='r') {
			d->bad_image_flag = 1;
		}
		de_dbg(c, "sample order: %sA", (d->is_bgra?"BGR":"RGB"));

		b = de_getbyte_p(&pos);
		if(b=='p') {
			d->premultiplied_alpha = 1;
		}
		else if(b!='n') {
			d->bad_image_flag = 1;
		}
		de_dbg(c, "premultiplied alpha: %d", d->premultiplied_alpha);

		b = de_getbyte_p(&pos);
		if(b=='8') {
			d->bytes_per_pixel = 8;
		}
		else if(b=='4') {
			d->bytes_per_pixel = 4;
		}
		else {
			d->bad_image_flag = 1;
		}
		de_dbg(c, "bytes/pixel: %d", (int)d->bytes_per_pixel);
	}

	d->width = de_getu32le_p(&pos);
	d->height = de_getu32le_p(&pos);
	de_dbg_dimensions(c, d->width, d->height);

	if(d->sig==SIG_NIE) return 1;

	read_NIIpayload(c, d, pos, 0);
	return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movq %rsp, %rsi
movq $0x4, (%rsi)
movq 0x18(%rdi), %rdi
callq 0xef14d
cmpb $-0x1, %al
je 0xa1d99
movq 0x8(%rbx), %rdx
leaq 0x90517(%rip), %rsi     # 0x13229f
xorl %ebp, %ebp
movq %r14, %rdi
xorl %eax, %eax
callq 0xe9df7
jmp 0xa1ed7
cmpl $0x6ec3af49, (%rbx)     # imm = 0x6EC3AF49
jne 0xa1dab
addq $0x3, (%rsp)
jmp 0xa1e80
movq 0x18(%r14), %rdi
movq %rsp, %rsi
callq 0xef14d
cmpb $0x62, %al
je 0xa1dca
movzbl %al, %eax
cmpl $0x72, %eax
je 0xa1dd6
movl $0x30, %eax
jmp 0xa1dcf
movl $0x10, %eax
movl $0x1, (%rbx,%rax)
cmpl $0x0, 0x10(%rbx)
leaq 0x9d7bf(%rip), %rax     # 0x13f5a0
leaq 0x9296a(%rip), %rdx     # 0x134752
cmoveq %rax, %rdx
leaq 0x904bf(%rip), %rsi     # 0x1322b2
movq %r14, %rdi
xorl %eax, %eax
callq 0xe9226
movq 0x18(%r14), %rdi
movq %rsp, %rsi
callq 0xef14d
cmpb $0x6e, %al
je 0xa1e25
movzbl %al, %eax
cmpl $0x70, %eax
jne 0xa1e1e
movl $0x1, 0x14(%rbx)
jmp 0xa1e25
movl $0x1, 0x30(%rbx)
movl 0x14(%rbx), %edx
leaq 0x90495(%rip), %rsi     # 0x1322c4
movq %r14, %rdi
xorl %eax, %eax
callq 0xe9226
movq 0x18(%r14), %rdi
movq %rsp, %rsi
callq 0xef14d
cmpb $0x34, %al
je 0xa1e5b
movzbl %al, %eax
cmpl $0x38, %eax
jne 0xa1e65
movq $0x8, 0x18(%rbx)
jmp 0xa1e6c
movq $0x4, 0x18(%rbx)
jmp 0xa1e6c
movl $0x1, 0x30(%rbx)
movl 0x18(%rbx), %edx
leaq 0x9e516(%rip), %rsi     # 0x14038c
movq %r14, %rdi
xorl %eax, %eax
callq 0xe9226
movq 0x18(%r14), %rdi
movq %rsp, %r15
movq %r15, %rsi
callq 0xef3a0
movq %rax, 0x20(%rbx)
movq 0x18(%r14), %rdi
movq %r15, %rsi
callq 0xef3a0
movq %rax, 0x28(%rbx)
movq 0x20(%rbx), %rsi
movq %r14, %rdi
movq %rax, %rdx
callq 0xe9b05
movl $0x1, %ebp
cmpl $0x6ec3af45, (%rbx)     # imm = 0x6EC3AF45
je 0xa1ed7
movq (%rsp), %rsi
movq 0x18(%r14), %rdi
callq 0xef6ab
testb $0x1, %al
je 0xa1ed7
movl $0x1, 0x34(%rbx)
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/nie.c
// Function: read_NIIpayload
static void read_NIIpayload(deark *c, lctx *d, i64 pos, int printCCD)
{
	u64 ccd_code;
	i64 ccd;

	ccd_code = dbuf_getu64le(c->infile, pos);
	if(ccd_code & 0x1) {
		d->found_last_frame_flag = 1;
	}
	if(printCCD) {
		ccd = (i64)(ccd_code>>2);
		de_dbg(c, "CCD: %"I64_FMT" (%f seconds)", ccd,
			(double)ccd/705600000.0);
	}
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movl %ecx, %ebp
movq %rsi, %r14
movq %rdi, %rbx
movq 0x18(%rdi), %rdi
movq %rdx, %rsi
callq 0xef6ab
testb $0x1, %al
je 0xa1f08
movl $0x1, 0x34(%r14)
testl %ebp, %ebp
je 0xa1f35
shrq $0x2, %rax
cvtsi2sd %rax, %xmm0
divsd 0x9030b(%rip), %xmm0    # 0x132228
leaq 0x903b8(%rip), %rsi     # 0x1322dc
movq %rbx, %rdi
movq %rax, %rdx
movb $0x1, %al
popq %rbx
popq %r14
popq %rbp
jmp 0xe9226
popq %rbx
popq %r14
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/installshld.c
// Function: de_module_is_z
void de_module_is_z(deark *c, struct deark_module_info *mi)
{
	mi->id = "is_z";
	mi->desc = "InstallShield Z";
	mi->run_fn = de_run_is_z;
	mi->identify_fn = de_identify_is_z;
}

// Assembly:
leaq 0x903d7(%rip), %rax     # 0x13231a
movq %rax, (%rsi)
leaq 0x903d2(%rip), %rax     # 0x13231f
movq %rax, 0x8(%rsi)
leaq 0x10(%rip), %rax        # 0xa1f68
movq %rax, 0x18(%rsi)
leaq 0x8bd(%rip), %rax       # 0xa2820
movq %rax, 0x20(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/installshld.c
// Function: de_module_is_instarch
void de_module_is_instarch(deark *c, struct deark_module_info *mi)
{
	mi->id = "is_instarch";
	mi->id_alias[0] = "is_inst32i";
	mi->desc = "InstallShield installer archive (_inst32i.ex_)";
	mi->run_fn = de_run_is_instarch;
	mi->identify_fn = de_identify_is_instarch;
}

// Assembly:
leaq 0x8fae8(%rip), %rax     # 0x13232f
movq %rax, (%rsi)
leaq 0x8faea(%rip), %rax     # 0x13233b
movq %rax, 0x38(%rsi)
leaq 0x8faea(%rip), %rax     # 0x132346
movq %rax, 0x8(%rsi)
leaq 0x10(%rip), %rax        # 0xa2877
movq %rax, 0x18(%rsi)
leaq 0x271(%rip), %rax       # 0xa2ae3
movq %rax, 0x20(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/jsummers[P]deark/modules/installshld.c
// Function: de_module_tscomp
void de_module_tscomp(deark *c, struct deark_module_info *mi)
{
	mi->id = "tscomp";
	mi->desc = "The Stirling Compressor";
	mi->run_fn = de_run_tscomp;
	mi->identify_fn = de_identify_tscomp;
}

// Assembly:
leaq 0x8f865(%rip), %rax     # 0x132375
movq %rax, (%rsi)
leaq 0x8f862(%rip), %rax     # 0x13237c
movq %rax, 0x8(%rsi)
leaq 0x10(%rip), %rax        # 0xa2b35
movq %rax, 0x18(%rsi)
leaq 0x2fd(%rip), %rax       # 0xa2e2d
movq %rax, 0x20(%rsi)
retq