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

	d = de_malloc(c, sizeof(lctx));
	d->combine_images = (u8)de_get_ext_option_bool(c, "reko:combine", 1);

	d->fmt = reko_fmt_from_sig(c);
	if(d->fmt==0) {
		de_err(c, "Unsupported REKO version");
		goto done;
	}
	if(d->fmt==RKFMT_RKP8) fmtname = "RKP 8";
	else if(d->fmt==RKFMT_RKP16) fmtname = "RKP 16";
	else if(d->fmt==RKFMT_RKP24) fmtname = "RKP 24";
	else fmtname = "Amiga";
	de_declare_fmtf(c, "REKO cardset (%s)", fmtname);

	if(d->fmt==RKFMT_RKP8 || d->fmt==RKFMT_RKP16 || d->fmt==RKFMT_RKP24) {
		d->is_pc = 1;
	}

	if(d->is_pc) {
		d->idx_of_first_main_card = 1;
	}
	else {
		d->idx_of_first_main_card = 3;
	}

	if(d->fmt==RKFMT_RKP24) {
		read_header_rkp24(c, d);
	}
	else if(d->is_pc) {
		read_header_pc(c, d);
	}
	else {
		read_header_amiga(c, d);
	}
	if(d->fatalerrflag) goto done;

	if(!d->is_pc) {
		read_palette_amiga(c, d);
	}
	if(d->fatalerrflag) goto done;
	if(d->fmt==RKFMT_RKP24) {
		reko_main_rkp24(c, d);
	}
	else {
		reko_main(c, d);
	}

done:
	if(d) {
		if(d->need_errmsg) {
			de_err(c, "Bad or unsupported file");
		}
		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 $0x470, %esi            # imm = 0x470
callq 0x15b780
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x7ca5b(%rip), %rsi     # 0x1d1450
movl $0x1, %edx
callq 0x15cbc0
movb %al, %cl
movq -0x18(%rbp), %rax
movb %cl, 0x5(%rax)
movq -0x8(%rbp), %rdi
callq 0x154fa0
movb %al, %cl
movq -0x18(%rbp), %rax
movb %cl, (%rax)
movq -0x18(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x0, %eax
jne 0x154a3c
movq -0x8(%rbp), %rdi
leaq 0x7ca2d(%rip), %rsi     # 0x1d145d
movb $0x0, %al
callq 0x15bfb0
jmp 0x154b98
movq -0x18(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x4, %eax
jne 0x154a55
leaq 0x7ca27(%rip), %rax     # 0x1d1476
movq %rax, -0x20(%rbp)
jmp 0x154a96
movq -0x18(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x5, %eax
jne 0x154a6e
leaq 0x7ca14(%rip), %rax     # 0x1d147c
movq %rax, -0x20(%rbp)
jmp 0x154a94
movq -0x18(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x6, %eax
jne 0x154a87
leaq 0x7ca02(%rip), %rax     # 0x1d1483
movq %rax, -0x20(%rbp)
jmp 0x154a92
leaq 0x4f73e(%rip), %rax     # 0x1a41cc
movq %rax, -0x20(%rbp)
jmp 0x154a94
jmp 0x154a96
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq 0x7c9e5(%rip), %rsi     # 0x1d148a
movb $0x0, %al
callq 0x15e3d0
movq -0x18(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x4, %eax
je 0x154ad0
movq -0x18(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x5, %eax
je 0x154ad0
movq -0x18(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x6, %eax
jne 0x154ad8
movq -0x18(%rbp), %rax
movb $0x1, 0x1(%rax)
movq -0x18(%rbp), %rax
cmpb $0x0, 0x1(%rax)
je 0x154af0
movq -0x18(%rbp), %rax
movq $0x1, 0x68(%rax)
jmp 0x154afc
movq -0x18(%rbp), %rax
movq $0x3, 0x68(%rax)
movq -0x18(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x6, %eax
jne 0x154b17
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x155080
jmp 0x154b3f
movq -0x18(%rbp), %rax
cmpb $0x0, 0x1(%rax)
je 0x154b30
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x155230
jmp 0x154b3d
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x1553e0
jmp 0x154b3f
movq -0x18(%rbp), %rax
cmpb $0x0, 0x2(%rax)
je 0x154b4b
jmp 0x154b98
movq -0x18(%rbp), %rax
cmpb $0x0, 0x1(%rax)
jne 0x154b62
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x1556d0
movq -0x18(%rbp), %rax
cmpb $0x0, 0x2(%rax)
je 0x154b6e
jmp 0x154b98
movq -0x18(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x6, %eax
jne 0x154b89
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x155790
jmp 0x154b96
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x155a20
jmp 0x154b98
cmpq $0x0, -0x18(%rbp)
je 0x154bc8
movq -0x18(%rbp), %rax
cmpb $0x0, 0x3(%rax)
je 0x154bbb
movq -0x8(%rbp), %rdi
leaq 0x5007b(%rip), %rsi     # 0x1a4c2f
movb $0x0, %al
callq 0x15bfb0
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15b820
addq $0x20, %rsp
popq %rbp
retq
nop