// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/macbinary.c
// Function: run_macbinary_internal
static void run_macbinary_internal(deark *c, lctx *d)
{
	i64 pos = 128;
	struct de_advfile *advf = NULL;
	struct extract_ctx *ectx = NULL;

	ectx = de_malloc(c, sizeof(struct extract_ctx));
	advf = de_advfile_create(c);

	do_header(c, d, advf);
	if(d->filename_srd && ucstring_isnonempty(d->filename_srd->str)) {
		ucstring_append_ucstring(advf->filename, d->filename_srd->str);
		advf->original_filename_flag = 1;
	}
	if(d->filename_srd) {
		de_advfile_set_orig_filename(advf, d->filename_srd->sz,
			d->filename_srd->sz_strlen);
	}
	advf->mainfork.fi->timestamp[DE_TIMESTAMPIDX_MODIFY] = d->mod_time;
	advf->mainfork.fi->timestamp[DE_TIMESTAMPIDX_CREATE] = d->create_time;

	if(d->dflen>0) {
		d->dfpos = pos;
		ectx->fki_data.pos = d->dfpos;
		advf->mainfork.fork_len = d->dflen;

		if(d->extract_files) {
			do_prepare_one_fork(c, d, &advf->mainfork, &ectx->fki_data);
			if(!ectx->fki_data.extract_error_flag) {
				advf->mainfork.fork_exists = 1;
			}
		}

		pos += de_pad_to_n(d->dflen, 128);
	}

	if(d->rflen>0) {
		d->rfpos = pos;

		ectx->fki_rsrc.is_rsrc = 1;
		ectx->fki_rsrc.pos = d->rfpos;
		advf->rsrcfork.fork_len = d->rflen;

		if(d->extract_files) {
			do_prepare_one_fork(c, d, &advf->rsrcfork, &ectx->fki_rsrc);
			if(!ectx->fki_rsrc.extract_error_flag) {
				advf->rsrcfork.fork_exists = 1;
			}
		}
	}

	if(d->extract_files) {
		advf->userdata = (void*)ectx;
		advf->writefork_cbfn = my_advfile_cbfn;
		de_advfile_run(advf);
	}

	de_advfile_destroy(advf);
	de_free(c, ectx);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x80, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movl $0x28, %esi
callq 0x15b780
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
callq 0x17aa20
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0xd1820
movq -0x10(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0xd165a
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x18(%rax), %rdi
callq 0x1717f0
cmpl $0x0, %eax
je 0xd165a
movq -0x20(%rbp), %rax
movq 0x68(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x18(%rax), %rsi
callq 0x171460
movq -0x20(%rbp), %rax
movb $0x1, 0x79(%rax)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0xd1686
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rsi
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x10(%rax), %rdx
callq 0x17ab20
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x48(%rcx), %rdx
movq %rdx, 0x18(%rax)
movq 0x50(%rcx), %rcx
movq %rcx, 0x20(%rax)
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x38(%rcx), %rdx
movq %rdx, 0x28(%rax)
movq 0x40(%rcx), %rcx
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x20(%rax)
jle 0xd174e
movq -0x18(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
cmpb $0x0, 0x4(%rax)
je 0xd1734
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
addq $0x10, %rdx
movq -0x28(%rbp), %rcx
addq $0x8, %rcx
callq 0xd1f90
movq -0x28(%rbp), %rax
cmpb $0x0, 0x9(%rax)
jne 0xd1732
movq -0x20(%rbp), %rax
movb $0x1, 0x10(%rax)
jmp 0xd1734
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x80, %esi
callq 0x15ce90
addq -0x18(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x28(%rax)
jle 0xd17ca
movq -0x18(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x28(%rbp), %rax
movb $0x1, 0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x40(%rax)
movq -0x10(%rbp), %rax
cmpb $0x0, 0x4(%rax)
je 0xd17c8
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
addq $0x38, %rdx
movq -0x28(%rbp), %rcx
addq $0x18, %rcx
callq 0xd1f90
movq -0x28(%rbp), %rax
cmpb $0x0, 0x19(%rax)
jne 0xd17c6
movq -0x20(%rbp), %rax
movb $0x1, 0x38(%rax)
jmp 0xd17c8
jmp 0xd17ca
movq -0x10(%rbp), %rax
cmpb $0x0, 0x4(%rax)
je 0xd17f8
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x20(%rbp), %rax
leaq 0x895(%rip), %rcx       # 0xd2080
movq %rcx, 0x60(%rax)
movq -0x20(%rbp), %rdi
callq 0x17ac20
movq -0x20(%rbp), %rdi
callq 0x17aaa0
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x15b820
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)