// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/binscii.c
// Function: de_run_binscii
static void de_run_binscii(deark *c, de_module_params *mparams)
{
	struct binscii_ctx *d = NULL;
	int saved_indent_level;

	de_dbg_indent_save(c, &saved_indent_level);
	d = de_malloc(c, sizeof(struct binscii_ctx));
	d->tmpdbuf = dbuf_create_membuf(c, 128, 0);
	d->crco_segdata = de_crcobj_create(c, DE_CRCOBJ_CRC16_XMODEM);
	d->crco_header = de_crcobj_create(c, DE_CRCOBJ_CRC16_XMODEM);

	while(1) {
		int ret;
		i64 content_len, total_len;

		if(d->errflag) goto done;
		ret = dbuf_find_line(c->infile, d->pos, &content_len, &total_len);
		if(!ret) goto done;

		d->linebuf_used = (content_len<=BINSCII_LINE_MAXLEN) ? content_len : BINSCII_LINE_MAXLEN;
		binscii_read_line_to_linebuf(c, d);
		do_binscii_line(c, d);
		d->pos += total_len;
	}

done:
	de_dbg_indent_restore(c, saved_indent_level);
	if(d) {
		binscii_close_cur_file(c, d);
		dbuf_close(d->tmpdbuf);
		de_crcobj_destroy(d->crco_header);
		de_crcobj_destroy(d->crco_segdata);
		if(d->need_errmsg) {
			de_err(c, "Failed to decode file");
		}
		else if(d->seg_count_total==0 && !d->errflag) {
			de_err(c, "No BinSCII data found");
		}
		de_free(c, d);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x18(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x1c(%rbp), %rsi
callq 0x15b580
movq -0x8(%rbp), %rdi
movl $0x220, %esi            # imm = 0x220
callq 0x15b780
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movl $0x80, %esi
xorl %edx, %edx
callq 0x168020
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
movl $0x20, %esi
callq 0x15eac0
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x8(%rbp), %rdi
movl $0x20, %esi
callq 0x15eac0
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x18(%rbp), %rax
cmpb $0x0, 0xc(%rax)
je 0x351b3
jmp 0x35235
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rsi
leaq -0x28(%rbp), %rdx
leaq -0x30(%rbp), %rcx
callq 0x169640
movl %eax, -0x20(%rbp)
cmpl $0x0, -0x20(%rbp)
jne 0x351db
jmp 0x35235
cmpq $0x80, -0x28(%rbp)
jg 0x351ef
movq -0x28(%rbp), %rax
movq %rax, -0x38(%rbp)
jmp 0x351fa
movl $0x80, %eax
movq %rax, -0x38(%rbp)
jmp 0x351fa
movq -0x38(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x353c0
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x354a0
movq -0x30(%rbp), %rcx
movq -0x18(%rbp), %rax
addq 0x18(%rax), %rcx
movq %rcx, 0x18(%rax)
jmp 0x351a4
movq -0x8(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0x15b5a0
cmpq $0x0, -0x18(%rbp)
je 0x352d3
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x355f0
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x1676a0
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x15f2e0
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x15f2e0
movq -0x18(%rbp), %rax
cmpb $0x0, 0xd(%rax)
je 0x3529e
movq -0x8(%rbp), %rdi
leaq 0x16bcc3(%rip), %rsi    # 0x1a0f58
movb $0x0, %al
callq 0x15bfb0
jmp 0x352c6
movq -0x18(%rbp), %rax
cmpl $0x0, 0x10(%rax)
jne 0x352c4
movq -0x18(%rbp), %rax
cmpb $0x0, 0xc(%rax)
jne 0x352c4
movq -0x8(%rbp), %rdi
leaq 0x16bcb1(%rip), %rsi    # 0x1a0f6e
movb $0x0, %al
callq 0x15bfb0
jmp 0x352c6
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15b820
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)