LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/lbr.c
// Function: do_sqeeze_timestamp
static void do_sqeeze_timestamp(deark *c, struct squeeze_ctx *sqctx, i64 pos1)
{
	UI cksum_calc = 0;
	UI cksum_reported;
	i64 pos = pos1;
	i64 sig;
	i64 dt_raw, tm_raw;
	char timestamp_buf[64];

	if(c->infile->len-pos1 < 8) return;
	sig = de_getu16le_p(&pos);
	if(sig != 0xff77) return;
	dt_raw = de_getu16le_p(&pos);
	tm_raw = de_getu16le_p(&pos);
	cksum_reported = (UI)de_getu16le_p(&pos);
	cksum_calc = (UI)de_calccrc_oneshot(c->infile, pos1, 6, DE_CRCOBJ_SUM_U16LE);
	cksum_calc &= 0xffff;
	if(cksum_calc != cksum_reported) return; // Presumably a false positive signature

	de_dbg(c, "timestamp at %"I64_FMT, pos1);
	de_dbg_indent(c, 1);
	de_dos_datetime_to_timestamp(&sqctx->timestamp, dt_raw, tm_raw);

	sqctx->timestamp.tzcode = DE_TZCODE_LOCAL;
	de_timestamp_to_string(&sqctx->timestamp, timestamp_buf, sizeof(timestamp_buf), 0);
	de_dbg(c, "timestamp: %s", timestamp_buf);

	de_dbg(c, "timestamp checksum (calculated): 0x%04x", cksum_calc);
	de_dbg(c, "timestamp checksum (reported): 0x%04x", cksum_reported);
	de_dbg_indent(c, -1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl $0x0, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x18(%rax), %rax
subq -0x18(%rbp), %rax
cmpq $0x8, %rax
jge 0xec631
jmp 0xec770
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x28(%rbp), %rsi
callq 0x1652c0
movq %rax, -0x30(%rbp)
cmpq $0xff77, -0x30(%rbp)    # imm = 0xFF77
je 0xec655
jmp 0xec770
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x28(%rbp), %rsi
callq 0x1652c0
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x28(%rbp), %rsi
callq 0x1652c0
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x28(%rbp), %rsi
callq 0x1652c0
movl %eax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rsi
movl $0x6, %edx
movl $0x31, %ecx
callq 0x15f580
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
andl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x20(%rbp), %eax
je 0xec6c9
jmp 0xec770
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0xd15c4(%rip), %rsi     # 0x1bdc9c
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x15b560
movq -0x10(%rbp), %rdi
addq $0x40, %rdi
movq -0x38(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x15d750
movq -0x10(%rbp), %rax
movb $0x2, 0x41(%rax)
movq -0x10(%rbp), %rdi
addq $0x40, %rdi
leaq -0x80(%rbp), %rsi
movl $0x40, %edx
xorl %ecx, %ecx
callq 0x15e130
movq -0x8(%rbp), %rdi
leaq -0x80(%rbp), %rdx
leaq 0xb8516(%rip), %rsi     # 0x1a4c47
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
movl -0x1c(%rbp), %edx
leaq 0xd1567(%rip), %rsi     # 0x1bdcad
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
movl -0x20(%rbp), %edx
leaq 0xd157a(%rip), %rsi     # 0x1bdcd5
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x15b560
addq $0x80, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/lbr.c
// Function: zsq_read_timestamp
static void zsq_read_timestamp(deark *c, struct zsq_ctx *zsqctx, i64 pos)
{
	i64 dt_raw, tm_raw;
	char timestamp_buf[64];

	dt_raw = de_getu16le(pos);
	tm_raw = de_getu16le(pos+2);
	de_dos_datetime_to_timestamp(&zsqctx->timestamp, dt_raw, tm_raw);
	de_timestamp_to_string(&zsqctx->timestamp, timestamp_buf, sizeof(timestamp_buf), 0);
	de_dbg(c, "timestamp: %s", timestamp_buf);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x165280
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rsi
addq $0x2, %rsi
callq 0x165280
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x15d750
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
leaq -0x70(%rbp), %rsi
movl $0x40, %edx
xorl %ecx, %ecx
callq 0x15e130
movq -0x8(%rbp), %rdi
leaq -0x70(%rbp), %rdx
leaq 0xb7b99(%rip), %rsi     # 0x1a4c47
movb $0x0, %al
callq 0x15b0d0
addq $0x70, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/lbr.c
// Function: do_zsq_decompress
static void do_zsq_decompress(deark *c, struct zsq_ctx *zsqctx, i64 pos, dbuf *outf)
{
	struct de_crcobj *crco = NULL;
	struct de_dfilter_in_params dcmpri;
	struct de_dfilter_out_params dcmpro;
	struct de_dfilter_results dres;
	struct de_lzw_params delzwp;

	de_zeromem(&delzwp, sizeof(struct de_lzw_params));
	delzwp.fmt = DE_LZWFMT_ARC5;

	de_dfilter_init_objects(c, &dcmpri, &dcmpro, &dres);
	dcmpri.f = c->infile;
	dcmpri.pos = pos;
	dcmpri.len = c->infile->len - pos;
	dcmpro.f = outf;

	crco = de_crcobj_create(c, DE_CRCOBJ_SUM_BYTES);
	dbuf_set_writelistener(outf, de_writelistener_for_crc, (void*)crco);

	fmtutil_decompress_lzw(c, &dcmpri, &dcmpro, &dres, &delzwp);
	dbuf_flush(outf);

	zsqctx->checksum_calc = de_crcobj_getval(crco);
	zsqctx->checksum_calc &= 0xffff;
	de_dbg(c, "checksum (calculated): %u", (UI)zsqctx->checksum_calc);
	if(zsqctx->checksum_calc != zsqctx->checksum_reported) {
		de_err(c, "Checksum error. Decompression probably failed.");
	}
	de_crcobj_destroy(crco);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
leaq -0xd4(%rbp), %rdi
xorl %esi, %esi
movl $0x14, %edx
callq 0x19140
movl $0x7, -0xd4(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x48(%rbp), %rsi
leaq -0x60(%rbp), %rdx
leaq -0xc0(%rbp), %rcx
callq 0x1773f0
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x18(%rax), %rax
subq -0x18(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rdi
movl $0x30, %esi
callq 0x15eac0
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x7c167(%rip), %rsi     # 0x1692d0
callq 0x169280
movq -0x8(%rbp), %rdi
leaq -0x48(%rbp), %rsi
leaq -0x60(%rbp), %rdx
leaq -0xc0(%rbp), %rcx
leaq -0xd4(%rbp), %r8
callq 0x1843b0
movq -0x20(%rbp), %rdi
callq 0x167c30
movq -0x28(%rbp), %rdi
callq 0x15f340
movl %eax, %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x14(%rax)
movq -0x10(%rbp), %rax
movl 0x14(%rax), %ecx
andl $0xffff, %ecx           # imm = 0xFFFF
movl %ecx, 0x14(%rax)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x14(%rax), %edx
leaq 0xb8ecb(%rip), %rsi     # 0x1a6095
movb $0x0, %al
callq 0x15b0d0
movq -0x10(%rbp), %rax
movl 0x14(%rax), %eax
movq -0x10(%rbp), %rcx
cmpl 0x10(%rcx), %eax
je 0xed1f3
movq -0x8(%rbp), %rdi
leaq 0xd0a35(%rip), %rsi     # 0x1bdc21
movb $0x0, %al
callq 0x15bfb0
movq -0x28(%rbp), %rdi
callq 0x15f2e0
addq $0xe0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/lbr.c
// Function: lzwcom_detect_version
static void lzwcom_detect_version(deark *c, struct lzwcom_ctx *d)
{
	u32 crc_reported, crc_calc;

	if(c->infile->len < 1026) {
		d->ver = -1;
		return;
	}

	de_crcobj_reset(d->crco);
	de_crcobj_addslice(d->crco, c->infile, 0, 1024);
	crc_calc = de_crcobj_getval(d->crco); // Field only exists in v2 format
	crc_reported = (u32)de_getu16le(1024);
	if(crc_reported==crc_calc) {
		d->ver = 2;
	}
	else {
		d->ver = 1;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
cmpq $0x402, 0x18(%rax)      # imm = 0x402
jge 0xed23e
movq -0x10(%rbp), %rax
movl $0xffffffff, (%rax)     # imm = 0xFFFFFFFF
jmp 0xed2ac
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x15f250
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
movl $0x400, %ecx            # imm = 0x400
callq 0x15f500
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x15f340
movl %eax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movl $0x400, %esi            # imm = 0x400
callq 0x165280
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x18(%rbp), %eax
jne 0xed2a2
movq -0x10(%rbp), %rax
movl $0x2, (%rax)
jmp 0xed2ac
movq -0x10(%rbp), %rax
movl $0x1, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
leaq 0xd0bb7(%rip), %rcx     # 0x1bde8e
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
leaq 0xd0bad(%rip), %rcx     # 0x1bde92
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
leaq 0x1c(%rip), %rcx        # 0xed310
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
leaq 0x25d(%rip), %rcx       # 0xed560
movq %rcx, 0x20(%rax)
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
leaq 0xd08c9(%rip), %rcx     # 0x1bdea0
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
leaq 0xd08c9(%rip), %rcx     # 0x1bdeae
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
leaq 0x1c(%rip), %rcx        # 0xed610
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
leaq 0x19d(%rip), %rcx       # 0xed7a0
movq %rcx, 0x20(%rax)
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x18(%rbp)
movq $0x0, -0x30(%rbp)
movq -0x30(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x30(%rbp)
movq $0x211, -0x20(%rbp)     # imm = 0x211
movq $0x43, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
movl $0x1, %ecx
callq 0x16b750
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
xorl %eax, %eax
movl %eax, %edx
movl $0xff808080, %r9d       # imm = 0xFF808080
xorl %eax, %eax
movq %rdx, %rsi
movl $0x0, (%rsp)
callq 0x16cdc0
movq $0x0, -0x38(%rbp)
cmpq $0x20, -0x38(%rbp)
jge 0xed77c
movq $0x0, -0x40(%rbp)
movq -0x8(%rbp), %rdi
movl $0x20, %edx
movl $0x1, %ecx
movq %rdx, %rsi
callq 0x16b750
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
movb $0x1, 0x38(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x30(%rbp), %rsi
movq -0x40(%rbp), %rcx
movl $0x4, %edx
movl $0x1, %r8d
callq 0x16bee0
movq -0x30(%rbp), %rax
addq $0x80, %rax
movq %rax, -0x30(%rbp)
movq -0x38(%rbp), %rax
movl $0x10, %ecx
cqto
idivq %rcx
imulq $0x21, %rdx, %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
movq -0x38(%rbp), %rax
movl $0x10, %ecx
cqto
idivq %rcx
imulq $0x21, %rax, %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
movq -0x40(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x48(%rbp), %r10
movq -0x50(%rbp), %rax
xorl %ecx, %ecx
movl $0x20, %r9d
xorl %edx, %edx
movq %rcx, %rdx
movq %r9, %r8
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
movl $0x0, 0x10(%rsp)
callq 0x16ce50
movq -0x40(%rbp), %rdi
callq 0x16af60
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0xed695
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
xorl %edx, %edx
callq 0x16afd0
movq -0x18(%rbp), %rdi
callq 0x16af60
addq $0x70, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/megapaint.c
// Function: de_identify_megapaint_pat
static int de_identify_megapaint_pat(deark *c)
{
	if(dbuf_memcmp(c->infile, 0, "\x07" "PAT", 4))
		return 0;
	if(c->infile->len==4396) return 100;
	return 40;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
leaq 0xd0777(%rip), %rdx     # 0x1bdf36
movl $0x4, %ecx
callq 0x166ab0
cmpl $0x0, %eax
je 0xed7d7
movl $0x0, -0x4(%rbp)
jmp 0xed7f9
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
cmpq $0x112c, 0x18(%rax)     # imm = 0x112C
jne 0xed7f2
movl $0x64, -0x4(%rbp)
jmp 0xed7f9
movl $0x28, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
leaq 0xd069a(%rip), %rcx     # 0x1bdec1
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
leaq 0xd069a(%rip), %rcx     # 0x1bdecf
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
leaq 0x1c(%rip), %rcx        # 0xed860
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
leaq 0x18d(%rip), %rcx       # 0xed9e0
movq %rcx, 0x20(%rax)
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0xe, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movl $0xc, %esi
callq 0x1651d0
addq $0x1, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rax
movl %eax, %edx
leaq 0xd0698(%rip), %rsi     # 0x1bdf3b
movb $0x0, %al
callq 0x15b0d0
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jge 0xed9d9
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x20(%rbp), %rsi
shlq $0x2, %rsi
addq $0xe, %rsi
callq 0x165470
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
addq $0x1, %rax
movl %eax, %edx
leaq 0xd065f(%rip), %rsi     # 0x1bdf51
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x15b560
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rax
movl %eax, %edx
leaq 0xbd3a5(%rip), %rsi     # 0x1aacbd
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x30(%rbp), %rsi
callq 0x1651d0
addq $0x1, %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x30(%rbp), %rsi
addq $0x2, %rsi
callq 0x1651d0
addq $0x1, %rax
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x15bba0
movq -0x38(%rbp), %rax
addq $0xf, %rax
movl $0x10, %ecx
cqto
idivq %rcx
shlq %rax
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x30(%rbp), %rsi
addq $0x4, %rsi
movq -0x38(%rbp), %rdx
movq -0x40(%rbp), %rcx
movq -0x48(%rbp), %r8
movl $0x1, %r9d
xorl %eax, %eax
xorl %eax, %eax
movq $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
callq 0x16bf50
movq -0x8(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x15b560
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0xed8b2
addq $0x60, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/megapaint.c
// Function: de_identify_megapaint_lib
static int de_identify_megapaint_lib(deark *c)
{
	if(dbuf_memcmp(c->infile, 0, "\x07" "LIB", 4))
		return 0;
	if(de_input_file_has_ext(c, "lib")) return 100;
	return 40;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
leaq 0xd055d(%rip), %rdx     # 0x1bdf5c
movl $0x4, %ecx
callq 0x166ab0
cmpl $0x0, %eax
je 0xeda17
movl $0x0, -0x4(%rbp)
jmp 0xeda3c
movq -0x10(%rbp), %rdi
leaq 0xd04a9(%rip), %rsi     # 0x1bdecb
callq 0x15d180
cmpl $0x0, %eax
je 0xeda35
movl $0x64, -0x4(%rbp)
jmp 0xeda3c
movl $0x28, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop
// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
leaq 0xd0509(%rip), %rcx     # 0x1bdf70
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
leaq 0xd04ff(%rip), %rcx     # 0x1bdf74
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
leaq 0x1c(%rip), %rcx        # 0xedaa0
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
leaq 0x13d(%rip), %rcx       # 0xedbd0
movq %rcx, 0x20(%rax)
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/nie.c
// Function: de_run_nie
static void de_run_nie(deark *c, de_module_params *mparams)
{
	lctx *d = NULL;

	d = de_malloc(c, sizeof(lctx));
	d->sig = (unsigned int)de_getu32be(0);

	if(d->sig==SIG_NIE) {
		d->fmtname = "NIE";
	}
	else if(d->sig==SIG_NII) {
		d->fmtname = "NII";
	}
	else if(d->sig==SIG_NIA) {
		d->fmtname = "NIA";
	}
	else {
		de_err(c, "File not in NIE/NII/NIA format");
		goto done;
	}

	de_declare_fmt(c, d->fmtname);

	if(d->sig==SIG_NIE) {
		do_decode_nie(c, d);
	}
	else if(d->sig==SIG_NII) {
		do_decode_nii(c, d);
	}
	else if(d->sig==SIG_NIA) {
		do_decode_nia(c, d);
	}

done:
	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 $0x38, %esi
callq 0x15b780
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x165470
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rax
cmpl $0x6ec3af45, (%rax)     # imm = 0x6EC3AF45
jne 0xedb00
movq -0x18(%rbp), %rax
leaq 0xd049c(%rip), %rcx     # 0x1bdf96
movq %rcx, 0x8(%rax)
jmp 0xedb52
movq -0x18(%rbp), %rax
cmpl $0x6ec3af49, (%rax)     # imm = 0x6EC3AF49
jne 0xedb1d
movq -0x18(%rbp), %rax
leaq 0xd0483(%rip), %rcx     # 0x1bdf9a
movq %rcx, 0x8(%rax)
jmp 0xedb50
movq -0x18(%rbp), %rax
cmpl $0x6ec3af41, (%rax)     # imm = 0x6EC3AF41
jne 0xedb3a
movq -0x18(%rbp), %rax
leaq 0xd046a(%rip), %rcx     # 0x1bdf9e
movq %rcx, 0x8(%rax)
jmp 0xedb4e
movq -0x8(%rbp), %rdi
leaq 0xd045d(%rip), %rsi     # 0x1bdfa2
movb $0x0, %al
callq 0x15bfb0
jmp 0xedbb8
jmp 0xedb50
jmp 0xedb52
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x15e380
movq -0x18(%rbp), %rax
cmpl $0x6ec3af45, (%rax)     # imm = 0x6EC3AF45
jne 0xedb7e
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xedc30
jmp 0xedbb6
movq -0x18(%rbp), %rax
cmpl $0x6ec3af49, (%rax)     # imm = 0x6EC3AF49
jne 0xedb99
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xeded0
jmp 0xedbb4
movq -0x18(%rbp), %rax
cmpl $0x6ec3af41, (%rax)     # imm = 0x6EC3AF41
jne 0xedbb2
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xedf80
jmp 0xedbb4
jmp 0xedbb6
jmp 0xedbb8
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15b820
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/nie.c
// Function: do_decode_nii
static void do_decode_nii(deark *c, lctx *d)
{
	i64 pos = 4;

	if(!do_header(c, d, pos)) goto done;
	pos += 20;

	while(1) {
		if(d->found_last_frame_flag) break;
		de_dbg(c, "frame info at %"I64_FMT, pos);
		de_dbg_indent(c, 1);
		read_NIIpayload(c, d, pos, 1);
		pos += 8;
		de_dbg_indent(c, -1);
	}
	// TODO?: footer
done:
	;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x4, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0xee0e0
cmpl $0x0, %eax
jne 0xedf00
jmp 0xedf70
movq -0x18(%rbp), %rax
addq $0x14, %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x0, 0x34(%rax)
je 0xedf18
jmp 0xedf6e
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0xd010b(%rip), %rsi     # 0x1be032
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x15b560
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movl $0x1, %ecx
callq 0xee320
movq -0x18(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x15b560
jmp 0xedf0c
jmp 0xedf70
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/nie.c
// Function: do_decode_nia
static void do_decode_nia(deark *c, lctx *d)
{
	i64 pos = 4;
	i64 frame_size, frame_size_padded;

	if(!do_header(c, d, pos)) goto done;
	pos += 20;

	frame_size = 16 + d->width*d->height*d->bytes_per_pixel;
	de_dbg(c, "frame size: %"I64_FMT" bytes", frame_size);
	if(frame_size<16 || frame_size>DE_MAX_SANE_OBJECT_SIZE) {
		goto done;
	}
	frame_size_padded = de_pad_to_n(frame_size, 8);

	while(1) {
		if(d->found_last_frame_flag) break;
		if(pos+frame_size_padded > c->infile->len) goto done;
		de_dbg(c, "frame at %"I64_FMT, pos);
		de_dbg_indent(c, 1);
		dbuf_create_file_from_slice(c->infile, pos, frame_size, "nie", NULL, 0x0);
		pos += frame_size_padded;
		read_NIIpayload(c, d, pos, 1);
		pos += 8;
		de_dbg_indent(c, -1);
	}
	// TODO?: footer
done:
	;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x4, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0xee0e0
cmpl $0x0, %eax
jne 0xedfb3
jmp 0xee0d4
movq -0x18(%rbp), %rax
addq $0x14, %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x10(%rbp), %rcx
imulq 0x28(%rcx), %rax
movq -0x10(%rbp), %rcx
imulq 0x18(%rcx), %rax
addq $0x10, %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq 0xd0054(%rip), %rsi     # 0x1be044
movb $0x0, %al
callq 0x15b0d0
cmpq $0x10, -0x20(%rbp)
jl 0xee008
cmpq $0x5f5e100, -0x20(%rbp) # imm = 0x5F5E100
jle 0xee00d
jmp 0xee0d4
movq -0x20(%rbp), %rdi
movl $0x8, %esi
callq 0x15ce90
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x0, 0x34(%rax)
je 0xee02e
jmp 0xee0d2
movq -0x18(%rbp), %rax
addq -0x28(%rbp), %rax
movq -0x8(%rbp), %rcx
movq 0x18(%rcx), %rcx
cmpq 0x18(%rcx), %rax
jle 0xee049
jmp 0xee0d4
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0xce8ec(%rip), %rsi     # 0x1bc944
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x15b560
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq 0xcfeec(%rip), %rcx     # 0x1bdf70
xorl %eax, %eax
movl %eax, %r8d
xorl %r9d, %r9d
callq 0x166be0
movq -0x28(%rbp), %rax
addq -0x18(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movl $0x1, %ecx
callq 0xee320
movq -0x18(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x15b560
jmp 0xee01f
jmp 0xee0d4
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x1659f0
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0xee365
movq -0x10(%rbp), %rax
movl $0x1, 0x34(%rax)
cmpl $0x0, -0x1c(%rbp)
je 0xee39f
movq -0x28(%rbp), %rax
shrq $0x2, %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rdx
cvtsi2sdq -0x30(%rbp), %xmm0
movsd 0xcfbdb(%rip), %xmm1    # 0x1bdf68
divsd %xmm1, %xmm0
leaq 0xcfc84(%rip), %rsi     # 0x1be01c
movb $0x1, %al
callq 0x15b0d0
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop
// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
leaq 0xcfc93(%rip), %rcx     # 0x1be05a
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
leaq 0xcfc8a(%rip), %rcx     # 0x1be05f
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
leaq 0x1c(%rip), %rcx        # 0xee400
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
leaq 0x4bd(%rip), %rcx       # 0xee8b0
movq %rcx, 0x20(%rax)
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
leaq 0xcf768(%rip), %rcx     # 0x1be06f
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
leaq 0xcf766(%rip), %rcx     # 0x1be07b
movq %rcx, 0x38(%rax)
movq -0x10(%rbp), %rax
leaq 0xcf762(%rip), %rcx     # 0x1be086
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
leaq 0x1d(%rip), %rcx        # 0xee950
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
leaq 0x18e(%rip), %rcx       # 0xeead0
movq %rcx, 0x20(%rax)
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/installshld.c
// Function: de_run_is_instarch
static void de_run_is_instarch(deark *c, de_module_params *mparams)
{
	de_arch_lctx *da = NULL;
	i64 pos;
	i64 i;
	struct de_arch_member_data *md = NULL;

	da = de_arch_create_lctx(c);
	da->is_le = 1;
	da->input_encoding = de_get_input_encoding(c, NULL, DE_ENCODING_WINDOWS1252);

	pos = 78;
	da->num_members = de_getu16le_p(&pos); // This might actually be a 32-bit field
	de_dbg(c, "number of members: %"I64_FMT, da->num_members);
	pos += 2;

	for(i=0; i<da->num_members; i++) {
		if(pos >= c->infile->len) goto done;

		if(md) {
			de_arch_destroy_md(c, md);
			md = NULL;
		}
		md = de_arch_create_md(c, da);
		md->member_hdr_pos = pos;
		if(!do_instarch_member(c, da, md)) goto done;
		if(md->member_hdr_size<=0) goto done;
		pos += md->member_hdr_size;
	}

done:
	if(md) {
		de_arch_destroy_md(c, md);
	}
	if(da) {
		de_arch_destroy_lctx(c, da);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x18(%rbp)
movq $0x0, -0x30(%rbp)
movq -0x8(%rbp), %rdi
callq 0x17c220
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movl $0x1, 0x10(%rax)
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x9, %edx
callq 0x15e4a0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x18(%rax)
movq $0x4e, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x20(%rbp), %rsi
callq 0x1652c0
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rdx
leaq 0xb1b29(%rip), %rsi     # 0x1a0503
movb $0x0, %al
callq 0x15b0d0
movq -0x20(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq 0x20(%rcx), %rax
jge 0xeea9d
movq -0x20(%rbp), %rax
movq -0x8(%rbp), %rcx
movq 0x18(%rcx), %rcx
cmpq 0x18(%rcx), %rax
jl 0xeea1e
jmp 0xeea9f
cmpq $0x0, -0x30(%rbp)
je 0xeea3a
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x17c1a0
movq $0x0, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x17c120
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x30(%rbp), %rdx
callq 0xef7d0
cmpl $0x0, %eax
jne 0xeea6f
jmp 0xeea9f
movq -0x30(%rbp), %rax
cmpq $0x0, 0x20(%rax)
jg 0xeea7c
jmp 0xeea9f
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
addq -0x20(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0xee9f5
jmp 0xeea9f
cmpq $0x0, -0x30(%rbp)
je 0xeeab3
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x17c1a0
cmpq $0x0, -0x18(%rbp)
je 0xeeac7
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x17c270
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
leaq 0xcf57e(%rip), %rcx     # 0x1be0b5
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
leaq 0xcf577(%rip), %rcx     # 0x1be0bc
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
leaq 0x1c(%rip), %rcx        # 0xeeb70
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
leaq 0x28d(%rip), %rcx       # 0xeedf0
movq %rcx, 0x20(%rax)
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/installshld.c
// Function: de_module_is_sfx
void de_module_is_sfx(deark *c, struct deark_module_info *mi)
{
	mi->id = "is_sfx";
	mi->desc = "InstallShield SFX EXE";
	mi->run_fn = de_run_is_sfx;
	mi->flags |= DE_MODFLAG_HIDDEN | DE_MODFLAG_INTERNALONLY;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
leaq 0xba70d(%rip), %rcx     # 0x1a9564
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
leaq 0xcf26f(%rip), %rcx     # 0x1be0d4
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
leaq 0x1c(%rip), %rcx        # 0xeee90
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movl 0x30(%rax), %ecx
orl $0x81, %ecx
movl %ecx, 0x30(%rax)
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/installshld.c
// Function: de_run_is_sfx
static void de_run_is_sfx(deark *c, de_module_params *mparams)
{
	struct ishieldsfxdata *d = NULL;

	d = de_malloc(c, sizeof(struct ishieldsfxdata));

	// This module isn't smart enough to decode NE format to find the
	// pointers it needs. It can only be used via the exe module.
	if(c->module_disposition!=DE_MODDISP_INTERNAL) {
		goto done;
	}

	d->rsrc_pos = (i64)mparams->in_params.uint1;
	d->rsrc_len = (i64)mparams->in_params.uint2;

	is_sfx_main(c, d);

done:
	if(d) {
		if(d->need_errmsg) {
			de_err(c, "Failed to extract InstallShield SFX data");
		}
		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 $0x30, %esi
callq 0x15b780
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x3, 0x24(%rax)
je 0xeeec6
jmp 0xeeef5
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movl 0x14(%rax), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xefbd0
cmpq $0x0, -0x18(%rbp)
je 0xeef24
movq -0x18(%rbp), %rax
cmpb $0x0, (%rax)
je 0xeef17
movq -0x8(%rbp), %rdi
leaq 0xcf4c5(%rip), %rsi     # 0x1be3d5
movb $0x0, %al
callq 0x15bfb0
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15b820
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/installshld.c
// Function: isz_do_dirlist
static void isz_do_dirlist(deark *c, struct isz_ctx *d)
{
	i64 pos;
	i64 i;

	pos = d->directory_pos;
	for(i=0; i<d->num_dirs; i++) {
		i64 bytes_consumed = 0;

		if(pos >= c->infile->len) goto done;
		if(!isz_do_onedir(c, d, i, pos, &bytes_consumed)) goto done;
		if(bytes_consumed<=0) goto done;
		pos += bytes_consumed;
	}
done:
	;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x18(%rcx), %rax
jge 0xeefc1
movq $0x0, -0x28(%rbp)
movq -0x18(%rbp), %rax
movq -0x8(%rbp), %rcx
movq 0x18(%rcx), %rcx
cmpq 0x18(%rcx), %rax
jl 0xeef7e
jmp 0xeefc3
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x18(%rbp), %rcx
leaq -0x28(%rbp), %r8
callq 0xef060
cmpl $0x0, %eax
jne 0xeef9e
jmp 0xeefc3
cmpq $0x0, -0x28(%rbp)
jg 0xeefa7
jmp 0xeefc3
movq -0x28(%rbp), %rax
addq -0x18(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0xeef54
jmp 0xeefc3
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/installshld.c
// Function: isz_do_filelist
static void isz_do_filelist(deark *c, struct isz_ctx *d)
{
	i64 pos = d->filelist_pos;
	i64 i;

	for(i=0; i<d->da->num_members; i++) {
		i64 bytes_consumed = 0;

		if(!isz_do_one_file(c, d, pos, &bytes_consumed)) goto done;
		if(bytes_consumed<=0) goto done;
		pos += bytes_consumed;
	}

done:
	;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rcx
cmpq 0x20(%rcx), %rax
jge 0xef04c
movq $0x0, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x28(%rbp), %rcx
callq 0xef250
cmpl $0x0, %eax
jne 0xef029
jmp 0xef04e
cmpq $0x0, -0x28(%rbp)
jg 0xef032
jmp 0xef04e
movq -0x28(%rbp), %rax
addq -0x18(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0xeeff4
jmp 0xef04e
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/installshld.c
// Function: is_sfx_acquire_filename
static void is_sfx_acquire_filename(deark *c, struct ishieldsfxdata *d,
	i64 idx, i64 member_dpos, i64 member_dlen, de_finfo *fi)
{
	de_ucstring *fn = NULL;
	struct fmtutil_fmtid_ctx *idctx = NULL;

	idctx = de_malloc(c, sizeof(struct fmtutil_fmtid_ctx));
	idctx->inf = c->infile;
	idctx->inf_pos = member_dpos;
	idctx->inf_len = member_dlen;
	idctx->default_ext = "dat";
	idctx->mode = FMTUTIL_FMTIDMODE_ISH_SFX;
	fmtutil_fmtid(c, idctx);

	fn = ucstring_create(c);
	ucstring_printf(fn, DE_ENCODING_LATIN1, "ishield%03u.%s", (UI)idx, idctx->ext_sz);
	de_finfo_set_name_from_ucstring(c, fi, fn, 0);

	ucstring_destroy(fn);
	de_free(c, idctx);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq $0x0, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x8(%rbp), %rdi
movl $0x78, %esi
callq 0x15b780
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x20(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x28(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x40(%rbp), %rax
leaq 0xb3141(%rip), %rcx     # 0x1a3076
movq %rcx, 0x8(%rax)
movq -0x40(%rbp), %rax
movb $0xa, (%rax)
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x176960
movq -0x8(%rbp), %rdi
callq 0x1711d0
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
movq -0x18(%rbp), %rax
movl %eax, %ecx
movq -0x40(%rbp), %r8
addq $0x6c, %r8
movl $0x5, %esi
leaq 0xce502(%rip), %rdx     # 0x1be47a
movb $0x0, %al
callq 0x171660
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x38(%rbp), %rdx
xorl %ecx, %ecx
callq 0x15d2c0
movq -0x38(%rbp), %rdi
callq 0x171750
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x15b820
addq $0x40, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/os2ea.c
// Function: de_module_ea_data
void de_module_ea_data(deark *c, struct deark_module_info *mi)
{
	mi->id = "ea_data";
	mi->desc = "EA DATA (OS/2 extended attributes)";
	mi->run_fn = de_run_eadata;
	mi->identify_fn = de_identify_eadata;
	mi->help_fn = de_help_eadata;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
leaq 0xbe433(%rip), %rcx     # 0x1ae3fa
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
leaq 0xce53f(%rip), %rcx     # 0x1be514
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
leaq 0x2c(%rip), %rcx        # 0xf0010
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
leaq 0x1fd(%rip), %rcx       # 0xf01f0
movq %rcx, 0x20(%rax)
movq -0x10(%rbp), %rax
leaq 0x27e(%rip), %rcx       # 0xf0280
movq %rcx, 0x28(%rax)
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/os2ea.c
// Function: de_identify_eadata
static int de_identify_eadata(deark *c)
{
	if(de_getu16be(0)!=0x4544) return 0;
	if(de_input_file_has_ext(c, " sf")) return 100;
	if(dbuf_is_all_zeroes(c->infile, 2, 30)) {
		return 20;
	}
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1651d0
cmpq $0x4544, %rax           # imm = 0x4544
je 0xf021e
movl $0x0, -0x4(%rbp)
jmp 0xf0268
movq -0x10(%rbp), %rdi
leaq 0xce455(%rip), %rsi     # 0x1be67e
callq 0x15d180
cmpl $0x0, %eax
je 0xf023c
movl $0x64, -0x4(%rbp)
jmp 0xf0268
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movl $0x2, %esi
movl $0x1e, %edx
callq 0x169d30
cmpl $0x0, %eax
je 0xf0261
movl $0x14, -0x4(%rbp)
jmp 0xf0268
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/os2ea.c
// Function: eadata_do_FEA2LIST
static void eadata_do_FEA2LIST(deark *c, struct eadata_ctx *d)
{
	i64 fea2list_len;
	i64 pos1 = 0;
	i64 pos = pos1;

	de_dbg(c, "FEA2LIST at %"I64_FMT, pos1);
	de_dbg_indent(c, 1);
	fea2list_len = de_getu32le_p(&pos);
	de_dbg(c, "list len: %"I64_FMT, fea2list_len);
	eadata_do_raw_list(c, d, pos, fea2list_len-4);
	de_dbg_indent(c, -1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq 0xce285(%rip), %rsi     # 0x1be564
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x15b560
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x28(%rbp), %rsi
callq 0x165580
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0xce25c(%rip), %rsi     # 0x1be574
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x18(%rbp), %rcx
subq $0x4, %rcx
callq 0xf0350
movq -0x8(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x15b560
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/os2ea.c
// Function: eadata_do_raw_list
static void eadata_do_raw_list(deark *c, struct eadata_ctx *d, i64 pos1, i64 len)
{
	i64 pos = pos1;
	i64 endpos;
	de_ucstring *tmps = NULL;
	int saved_indent_level;

	de_dbg_indent_save(c, &saved_indent_level);
	tmps = ucstring_create(c);

	endpos = pos1 + len;

	while(1) {
		int ret;
		i64 bytes_consumed = 0;
		i64 offset_to_next_attr;
		i64 attr_pos;

		if(pos >= endpos) goto done;

		attr_pos = pos;
		de_dbg(c, "attribute at %"I64_FMT, attr_pos);
		de_dbg_indent(c, 1);
		offset_to_next_attr = de_getu32le_p(&pos);
		de_dbg(c, "offset to next attr: %"I64_FMT, offset_to_next_attr);

		ret = eadata_do_attribute(c, d, pos, endpos-pos, tmps, &bytes_consumed);
		if(!ret || bytes_consumed<1) goto done;
		if(offset_to_next_attr==0) goto done;
		pos = attr_pos + offset_to_next_attr;
		de_dbg_indent(c, -1);
	}

done:
	ucstring_destroy(tmps);
	de_dbg_indent_restore(c, saved_indent_level);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq $0x0, -0x38(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x3c(%rbp), %rsi
callq 0x15b580
movq -0x8(%rbp), %rdi
callq 0x1711d0
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rax
addq -0x20(%rbp), %rax
movq %rax, -0x30(%rbp)
movq $0x0, -0x48(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x30(%rbp), %rax
jl 0xf03b5
jmp 0xf0467
movq -0x28(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x8(%rbp), %rdi
movq -0x58(%rbp), %rdx
leaq 0xce1b6(%rip), %rsi     # 0x1be582
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x15b560
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x28(%rbp), %rsi
callq 0x165580
movq %rax, -0x50(%rbp)
movq -0x8(%rbp), %rdi
movq -0x50(%rbp), %rdx
leaq 0xce18e(%rip), %rsi     # 0x1be593
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
subq -0x28(%rbp), %rcx
movq -0x38(%rbp), %r8
leaq -0x48(%rbp), %r9
callq 0xf0800
movl %eax, -0x40(%rbp)
cmpl $0x0, -0x40(%rbp)
je 0xf043d
cmpq $0x1, -0x48(%rbp)
jge 0xf043f
jmp 0xf0467
cmpq $0x0, -0x50(%rbp)
jne 0xf0448
jmp 0xf0467
movq -0x58(%rbp), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x15b560
jmp 0xf039e
movq -0x38(%rbp), %rdi
callq 0x171750
movq -0x8(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x15b5a0
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/os2ea.c
// Function: eadata_scan_file
static void eadata_scan_file(deark *c, struct eadata_ctx *d)
{
	i64 pos = 1024;

	while(pos < c->infile->len) {
		if(eadata_is_ea_sector_at_offset(c, d, pos, 1)) {
			i64 bytes_consumed;

			eadata_do_ea_sector_by_offset(c, d, pos, &bytes_consumed);

			if(bytes_consumed<1) bytes_consumed = 1;
			pos = de_pad_to_n(pos+bytes_consumed, 512);
		}
		else {
			pos += 512;
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x400, -0x18(%rbp)     # imm = 0x400
movq -0x18(%rbp), %rax
movq -0x8(%rbp), %rcx
movq 0x18(%rcx), %rcx
cmpq 0x18(%rcx), %rax
jge 0xf0521
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movl $0x1, %ecx
callq 0xf0f50
cmpl $0x0, %eax
je 0xf0511
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0xf0610
cmpq $0x1, -0x20(%rbp)
jge 0xf04f9
movq $0x1, -0x20(%rbp)
movq -0x18(%rbp), %rdi
addq -0x20(%rbp), %rdi
movl $0x200, %esi            # imm = 0x200
callq 0x15ce90
movq %rax, -0x18(%rbp)
jmp 0xf051f
movq -0x18(%rbp), %rax
addq $0x200, %rax            # imm = 0x200
movq %rax, -0x18(%rbp)
jmp 0xf04a8
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/os2ea.c
// Function: eadata_id_to_offset
static int eadata_id_to_offset(deark *c, struct eadata_ctx *d, UI id, i64 *poffset)
{
	int retval = 0;
	UI a_idx;
	UI a_val;
	UI b_val;
	i64 cluster_num;

	*poffset = 0;

	a_idx = id>>7;
	if(a_idx>=240) goto done;
	a_val = (UI)de_getu16le(32+2*(i64)a_idx);
	b_val = (UI)de_getu16le(512+2*(i64)id);
	if(b_val==0xffff) goto done;

	cluster_num = (i64)b_val + (i64)a_val;
	*poffset = d->bytes_per_cluster * cluster_num;

	if(eadata_is_ea_sector_at_offset(c, d, *poffset, 0)) {
		retval = 1;
	}

done:
	return retval;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq %rcx, -0x20(%rbp)
movl $0x0, -0x24(%rbp)
movq -0x20(%rbp), %rax
movq $0x0, (%rax)
movl -0x14(%rbp), %eax
shrl $0x7, %eax
movl %eax, -0x28(%rbp)
cmpl $0xf0, -0x28(%rbp)
jb 0xf0570
jmp 0xf05fb
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x28(%rbp), %eax
movl %eax, %esi
shlq %rsi
addq $0x20, %rsi
callq 0x165280
movl %eax, -0x2c(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x14(%rbp), %eax
movl %eax, %esi
shlq %rsi
addq $0x200, %rsi            # imm = 0x200
callq 0x165280
movl %eax, -0x30(%rbp)
cmpl $0xffff, -0x30(%rbp)    # imm = 0xFFFF
jne 0xf05b6
jmp 0xf05fb
movl -0x30(%rbp), %eax
movl -0x2c(%rbp), %ecx
addq %rcx, %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
imulq -0x38(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rax
movq (%rax), %rdx
xorl %ecx, %ecx
callq 0xf0f50
cmpl $0x0, %eax
je 0xf05f9
movl $0x1, -0x24(%rbp)
jmp 0xf05fb
movl -0x24(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/os2ea.c
// Function: eadata_get_data_type_name
static const char *eadata_get_data_type_name(UI t)
{
	const char *name = NULL;
	switch(t) {
	case 0xffde: name ="multi-val/single-type"; break;
	case 0xffdf: name ="multi-val/multi-type"; break;
	case 0xfffe: name ="binary"; break;
	case 0xfffd: name ="text"; break;
	case 0xfff9: name ="icon"; break;
	}

	return name?name:"?";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movl %edi, -0x4(%rbp)
movq $0x0, -0x10(%rbp)
movl -0x4(%rbp), %eax
addl $0xffff0022, %eax       # imm = 0xFFFF0022
movl %eax, %ecx
movq %rcx, -0x18(%rbp)
subl $0x20, %eax
ja 0xf0a25
movq -0x18(%rbp), %rax
leaq 0xcdab3(%rip), %rcx     # 0x1be490
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0xcdbd3(%rip), %rax     # 0x1be5c0
movq %rax, -0x10(%rbp)
jmp 0xf0a25
leaq 0xcdbdc(%rip), %rax     # 0x1be5d6
movq %rax, -0x10(%rbp)
jmp 0xf0a25
leaq 0xdb5f1(%rip), %rax     # 0x1cbff8
movq %rax, -0x10(%rbp)
jmp 0xf0a25
leaq 0xc7dc3(%rip), %rax     # 0x1b87d7
movq %rax, -0x10(%rbp)
jmp 0xf0a25
leaq 0xbfa29(%rip), %rax     # 0x1b044a
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0xf0a36
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0xf0a43
leaq 0xc71f0(%rip), %rax     # 0x1b7c2d
movq %rax, -0x20(%rbp)
jmp 0xf0a43
movq -0x20(%rbp), %rax
popq %rbp
retq
nopl (%rax)