// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/misc.c
// Function: de_run_vgafont
static void de_run_vgafont(deark *c, de_module_params *mparams)
{
	struct vgafont_ctx *d = NULL;

	d = de_malloc(c, sizeof(struct vgafont_ctx));
	d->height = c->infile->len / 256;
	if((c->infile->len % 256) || d->height<VGAFONT_MINH || d->height>VGAFONT_MAXH) {
		de_err(c, "Bad file size");
		goto done;
	}

	d->font_data_pos = 0;
	d->font_data_size = d->height*256;
	d->fontdata = de_malloc(c, d->font_data_size);
	dbuf_read(c->infile, d->fontdata, d->font_data_pos, d->font_data_size);

	if(de_get_ext_option(c, "vgafont:c")) {
		i64 i;
		dbuf *ff;

		ff = dbuf_create_output_file(c, "h", NULL, 0);
		for(i=0; i<(d->font_data_size); i++) {
			if(i%d->height==0) dbuf_puts(ff, "\t");
			dbuf_printf(ff, "%d", (int)d->fontdata[i]);
			if(i!=(d->font_data_size-1)) dbuf_puts(ff, ",");
			if(i%d->height==(d->height-1)) dbuf_puts(ff, "\n");
		}
		dbuf_close(ff);
		goto done;
	}

	vgafont_common_config1(c, d);
	vgafont_common_config2(c, d);
	vgafont_main(c, d, NULL, 0);

done:
	destroy_vgafont_ctx(c, d);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %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), %rax
movq 0x18(%rax), %rax
movl $0x100, %ecx            # imm = 0x100
cqto
idivq %rcx
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x18(%rax), %rax
movl $0x100, %ecx            # imm = 0x100
cqto
idivq %rcx
cmpq $0x0, %rdx
jne 0x925cd
movq -0x18(%rbp), %rax
cmpq $0x3, 0x10(%rax)
jl 0x925cd
movq -0x18(%rbp), %rax
cmpq $0x14, 0x10(%rax)
jle 0x925e4
movq -0x8(%rbp), %rdi
leaq 0x11be2e(%rip), %rsi    # 0x1ae406
movb $0x0, %al
callq 0x15bfb0
jmp 0x92778
movq -0x18(%rbp), %rax
movq $0x0, 0x18(%rax)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rcx
shlq $0x8, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x15b780
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rsi
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rdx
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rcx
callq 0x164d10
movq -0x8(%rbp), %rdi
leaq 0x11db40(%rip), %rsi    # 0x1b0190
callq 0x15cb30
cmpq $0x0, %rax
je 0x9274b
movq -0x8(%rbp), %rdi
leaq 0x146a1b(%rip), %rsi    # 0x1d9085
xorl %eax, %eax
movl %eax, %edx
xorl %ecx, %ecx
callq 0x166c60
movq %rax, -0x28(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq 0x20(%rcx), %rax
jge 0x92740
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rcx
cqto
idivq 0x10(%rcx)
cmpq $0x0, %rdx
jne 0x926b7
movq -0x28(%rbp), %rdi
leaq 0x11dae8(%rip), %rsi    # 0x1b019a
callq 0x168da0
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x20(%rbp), %rcx
movzbl (%rax,%rcx), %edx
leaq 0x12f54c(%rip), %rsi    # 0x1c1c1e
movb $0x0, %al
callq 0x167f00
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x20(%rcx), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
je 0x926fe
movq -0x28(%rbp), %rdi
leaq 0x11da70(%rip), %rsi    # 0x1b0169
callq 0x168da0
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rcx
cqto
idivq 0x10(%rcx)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
subq $0x1, %rax
cmpq %rax, %rdx
jne 0x9272d
movq -0x28(%rbp), %rdi
leaq 0x109a5b(%rip), %rsi    # 0x19c183
callq 0x168da0
jmp 0x9272f
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x92681
movq -0x28(%rbp), %rdi
callq 0x1676a0
jmp 0x92778
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x948b0
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x949b0
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
xorl %ecx, %ecx
callq 0x94af0
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x94b30
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)