// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/comicchat.c
// Function: de_run_comicchat
static void de_run_comicchat(deark *c, de_module_params *mparams)
{
	i64 pos = 0;
	lctx *d = NULL;
	const char *tstr;

	d = de_malloc(c, sizeof(lctx));
	d->char_name = ucstring_create(c);
	d->tmpstr = ucstring_create(c);
	d->input_encoding = de_get_input_encoding(c, NULL, DE_ENCODING_WINDOWS1252);
	d->opt_applymasks = de_get_ext_option_bool(c, "comicchat:applymasks", 1);
	d->prefer_bmp_output = (u8)de_get_ext_option_bool(c, "comicchat:tobmp", 0);

	de_dbg(c, "header at %"I64_FMT, pos);
	de_dbg_indent(c, 1);
	pos += 2;
	d->fmt_code = (UI)de_getu16le_p(&pos);
	d->major_ver = (UI)de_getu16le_p(&pos);
	if(d->major_ver==1) tstr = "v1.0-2.1";
	else if(d->major_ver==2) tstr = "v2.5";
	else tstr = "?";
	de_dbg(c, "fmt ver: %u (%s)", d->major_ver, tstr);
	if(d->major_ver==2 && d->fmt_code==3) tstr = " (BGB)";
	else tstr = "";
	de_dbg(c, "fmt subtype: %u%s", d->fmt_code, tstr);
	de_dbg_indent(c, -1);

	d->images_seen = de_inthashtable_create(c);
	while(1) {
		comicchat_read_chunk(c, d, pos);
		if(d->stopflag || d->last_chunklen==0) goto done;
		pos += d->last_chunklen;
	}

done:
	if(d) {
		ucstring_destroy(d->char_name);
		ucstring_destroy(d->tmpstr);
		de_inthashtable_destroy(c, d->images_seen);
		de_free(c, d);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movl $0x38, %esi
callq 0x15b780
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
callq 0x1711d0
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x8(%rbp), %rdi
callq 0x1711d0
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x9, %edx
callq 0x15e4a0
movl %eax, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x8(%rbp), %rdi
leaq 0x12502c(%rip), %rsi    # 0x1aee8b
movl $0x1, %edx
callq 0x15cbc0
movb %al, %cl
movq -0x20(%rbp), %rax
movb %cl, 0x5(%rax)
movq -0x8(%rbp), %rdi
leaq 0x125023(%rip), %rsi    # 0x1aeea0
xorl %edx, %edx
callq 0x15cbc0
movb %al, %cl
movq -0x20(%rbp), %rax
movb %cl, 0x6(%rax)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x124ec7(%rip), %rsi    # 0x1aed63
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x15b560
movq -0x18(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x18(%rbp), %rsi
callq 0x1652c0
movl %eax, %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x18(%rbp), %rsi
callq 0x1652c0
movl %eax, %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0x20(%rbp), %rax
cmpl $0x1, 0xc(%rax)
jne 0x89f08
leaq 0x124fae(%rip), %rax    # 0x1aeeb0
movq %rax, -0x28(%rbp)
jmp 0x89f2c
movq -0x20(%rbp), %rax
cmpl $0x2, 0xc(%rax)
jne 0x89f1f
leaq 0x132b54(%rip), %rax    # 0x1bca6d
movq %rax, -0x28(%rbp)
jmp 0x89f2a
leaq 0x12dd07(%rip), %rax    # 0x1b7c2d
movq %rax, -0x28(%rbp)
jmp 0x89f2c
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movl 0xc(%rax), %edx
movq -0x28(%rbp), %rcx
leaq 0x124f77(%rip), %rsi    # 0x1aeeb9
movb $0x0, %al
callq 0x15b0d0
movq -0x20(%rbp), %rax
cmpl $0x2, 0xc(%rax)
jne 0x89f6a
movq -0x20(%rbp), %rax
cmpl $0x3, 0x8(%rax)
jne 0x89f6a
leaq 0x124f66(%rip), %rax    # 0x1aeeca
movq %rax, -0x28(%rbp)
jmp 0x89f75
leaq 0x146c5f(%rip), %rax    # 0x1d0bd0
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movl 0x8(%rax), %edx
movq -0x28(%rbp), %rcx
leaq 0x124f46(%rip), %rsi    # 0x1aeed1
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x15b560
movq -0x8(%rbp), %rdi
callq 0x15e600
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x8a1f0
movq -0x20(%rbp), %rax
movzbl 0x4(%rax), %eax
cmpl $0x0, %eax
jne 0x89fdd
movq -0x20(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x89fdf
jmp 0x89ff1
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
addq -0x18(%rbp), %rax
movq %rax, -0x18(%rbp)
jmp 0x89fb4
cmpq $0x0, -0x20(%rbp)
je 0x8a030
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x171750
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x171750
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x15e630
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x15b820
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)