// File: /workspace/github_c_makefile_star2_O2/jsummers[P]deark/modules/zoo.c
// Function: de_run_zoo
static void de_run_zoo(deark *c, de_module_params *mparams)
{
	lctx *d = NULL;
	i64 pos = 0;
	int saved_indent_level;

	de_dbg_indent_save(c, &saved_indent_level);
	d = de_malloc(c, sizeof(lctx));
	d->da = de_arch_create_lctx(c);
	d->da->userdata = (void*)d;
	d->da->is_le = 1;

	d->da->input_encoding = de_get_input_encoding(c, NULL, DE_ENCODING_ASCII);
	d->undelete = de_get_ext_option_bool(c, "zoo:undelete", 0);
	d->extract_comments_to_files = (c->extract_level>=2);

	d->da->crco = de_crcobj_create(c, DE_CRCOBJ_CRC16_ARC);
	d->min_offset_found = c->infile->len;

	if(!do_global_header(c, d, pos)) {
		de_err(c, "Bad global header");
		goto done;
	}

	d->offsets_seen = de_inthashtable_create(c); // For protection against infinite loops
	pos = d->first_member_hdr_pos;
	while ( 1 ) {
		i64 next_member_hdr_pos;

		de_dbg_indent_restore(c, saved_indent_level);

		if(pos==0) break;

		if(pos >= c->infile->len) {
			de_err(c, "Unexpected EOF, expected member header at %"I64_FMT, pos);
			goto after_members;
		}

		if(!de_inthashtable_add_item(c, d->offsets_seen, pos, NULL)) {
			de_err(c, "Loop detected");
			goto after_members;
		}

		de_dbg(c, "entry at %"I64_FMT, pos);
		de_dbg_indent(c, 1);

		next_member_hdr_pos = 0;
		do_member(c, d, pos, &next_member_hdr_pos);
		pos = next_member_hdr_pos;
	}

after_members:
	check_for_orphaned_comment(c, d);

	if(d->num_deleted_files_found>0 && !d->undelete) {
		de_info(c, "Note: %d deleted file(s) found. Use \"-opt zoo:undelete\" "
			"to extract them.", d->num_deleted_files_found);
	}

done:
	if(d) {
		de_inthashtable_destroy(c, d->offsets_seen);
		de_arch_destroy_lctx(c, d->da);
		de_free(c, d);
	}
	de_dbg_indent_restore(c, saved_indent_level);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %rdi, %rbx
leaq 0x2c(%rsp), %rsi
callq 0xdebae
pushq $0x48
popq %rsi
movq %rbx, %rdi
callq 0xdecaf
movq %rax, %r14
movq %rbx, %rdi
callq 0xf16ce
movq %rax, (%r14)
movq %r14, 0x40(%rax)
movl $0x1, 0x10(%rax)
xorl %r12d, %r12d
pushq $0x1
popq %rbp
movq %rbx, %rdi
xorl %esi, %esi
movl %ebp, %edx
callq 0xe08d2
movq (%r14), %rcx
movl %eax, 0x18(%rcx)
leaq 0x60e12(%rip), %rsi     # 0x1376ea
movq %rbx, %rdi
xorl %edx, %edx
callq 0xdfae5
movl %eax, 0xc(%r14)
xorl %eax, %eax
cmpl $0x2, 0x90(%rbx)
setge %al
movl %eax, 0x8(%r14)
pushq $0x21
popq %rsi
movq %rbx, %rdi
callq 0xe0ae9
movq (%r14), %rcx
movq %rax, 0x30(%rcx)
movq 0x18(%rbx), %rax
movq 0x18(%rax), %rax
movq %rax, 0x40(%r14)
leaq 0x3f537(%rip), %rsi     # 0x115e52
movq %rbx, %rdi
xorl %edx, %edx
xorl %eax, %eax
callq 0xde896
movq %rbx, %rdi
movl %ebp, %esi
callq 0xdeba7
movq %rbx, %rdi
callq 0xeac74
movq %rax, %r15
pushq $0x5f
popq %rbp
cmpq $0x14, %r12
je 0xd6977
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe3eb4
testb %al, %al
je 0xd6977
movzbl %al, %ecx
cmpl $0x1a, %ecx
je 0xd6977
addb $-0x7f, %al
movl %ebp, %edx
cmpb $-0x5f, %al
jb 0xd6967
movl %ecx, %edx
movzbl %dl, %esi
movq %r15, %rdi
callq 0xeada5
incq %r12
jmp 0xd693f
movq %r15, %rdi
callq 0xeb877
leaq 0x60dfa(%rip), %rsi     # 0x137780
xorl %ebp, %ebp
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xde896
leaq 0x50(%rsp), %rsi
movq $0x14, (%rsi)
movq 0x18(%rbx), %rdi
callq 0xe40bf
cmpl $0xfdc4a7dc, %eax       # imm = 0xFDC4A7DC
jne 0xd6aa3
movq 0x18(%rbx), %rdi
leaq 0x50(%rsp), %r12
movq %r12, %rsi
callq 0xe40bf
movq %rax, 0x18(%r14)
leaq 0x60dc1(%rip), %rsi     # 0x137792
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xde896
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe40bf
movq %rax, %r12
leaq 0x60db3(%rip), %rsi     # 0x1377a7
movq %rbx, %rdi
movl %r12d, %edx
xorl %eax, %eax
callq 0xde896
subl 0x18(%r14), %ebp
cmpl %ebp, %r12d
je 0xd6a20
leaq 0x60db0(%rip), %rsi     # 0x1377c1
movq %rbx, %rdi
movl %r12d, %edx
movl %ebp, %ecx
xorl %eax, %eax
callq 0xdf05a
movq 0x18(%rbx), %rdi
leaq 0x50(%rsp), %r12
movq %r12, %rsi
callq 0xe3f2a
movb %al, 0x20(%r14)
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe3f2a
movb %al, 0x21(%r14)
movzbl 0x20(%r14), %edx
movzbl %al, %ecx
leaq 0x60db2(%rip), %rsi     # 0x137806
movq %rbx, %rdi
xorl %eax, %eax
callq 0xde896
cmpq $0x23, 0x18(%r14)
jl 0xd6b4a
movq 0x18(%rbx), %rdi
leaq 0x50(%rsp), %rsi
callq 0xe3f2a
movb %al, 0x22(%r14)
movzbl %al, %edx
leaq 0x60dad(%rip), %rsi     # 0x137832
movq %rbx, %rdi
xorl %eax, %eax
callq 0xde896
movb 0x22(%r14), %al
addb $-0x6, %al
cmpb $-0x6, %al
ja 0xd6acc
movb $0x0, 0x22(%r14)
jmp 0xd6b4a
movq %r15, %rdi
callq 0xeaf3c
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0xdeba7
leaq 0x60c3a(%rip), %rsi     # 0x1376f7
movq %rbx, %rdi
xorl %eax, %eax
callq 0xdf2a5
jmp 0xd76c3
movq 0x18(%rbx), %rdi
leaq 0x50(%rsp), %r12
movq %r12, %rsi
callq 0xe40bf
movq %rax, 0x28(%r14)
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe3fc4
movq %rax, 0x30(%r14)
movq 0x28(%r14), %rdx
leaq 0x60d61(%rip), %rsi     # 0x13785d
movq %rbx, %rdi
movl %eax, %ecx
xorl %eax, %eax
callq 0xde896
movq 0x28(%r14), %rdx
movq 0x30(%r14), %rcx
movl 0x8(%r14), %r9d
leaq 0x610c8(%rip), %r8      # 0x137be3
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd7c6f
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe3f2a
movb %al, 0x38(%r14)
movzbl %al, %edx
leaq 0x60d3e(%rip), %rsi     # 0x13787e
movq %rbx, %rdi
xorl %eax, %eax
callq 0xde896
movl $0xfdc4a7dc, %ebp       # imm = 0xFDC4A7DC
movq %r15, %rdi
callq 0xeaf3c
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0xdeba7
movq %rbx, %rdi
callq 0xe0955
movq %rax, 0x10(%r14)
movq 0x18(%r14), %r12
movq %r14, 0x20(%rsp)
movl 0x2c(%rsp), %esi
movq %rbx, %rdi
callq 0xdebb7
testq %r12, %r12
je 0xd7602
movq 0x18(%rbx), %rax
cmpq 0x18(%rax), %r12
jge 0xd75db
movq 0x10(%r14), %rsi
movq %rbx, %rdi
movq %r12, %rdx
xorl %ecx, %ecx
callq 0xe0a0b
testl %eax, %eax
je 0xd75f1
movq %rbx, %rdi
leaq 0x2ea60(%rip), %rsi     # 0x10561d
movq %r12, %rdx
xorl %eax, %eax
callq 0xde896
movq %rbx, %rdi
pushq $0x1
popq %rsi
callq 0xdeba7
movq %rbx, %rdi
leaq 0x3c(%rsp), %rsi
callq 0xdebae
testq %r12, %r12
js 0xd6bee
cmpq %r12, 0x40(%r14)
jle 0xd6bee
movq %r12, 0x40(%r14)
movq %rbx, %rdi
pushq $0x48
popq %rsi
callq 0xdecaf
movq %rax, %r13
movq (%r14), %rsi
movq %rbx, %rdi
callq 0xf1630
movq %rax, %r15
movq %r13, 0x88(%rax)
movq %r12, 0x18(%rax)
movq %r12, 0x8(%rsp)
movq 0x18(%rbx), %rdi
leaq 0x8(%rsp), %r12
movq %r12, %rsi
callq 0xe40bf
movl %eax, %eax
movq %rax, 0x48(%rsp)
cmpq %rbp, %rax
jne 0xd6f61
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe3f2a
movb %al, (%r13)
cmpb $0x2, %al
sete 0x2(%r13)
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe3f2a
movb %al, 0x1(%r13)
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe40bf
movq %rax, 0x8(%r13)
movzbl (%r13), %edx
movq %rbx, %rdi
leaq 0x60cc1(%rip), %rsi     # 0x137942
xorl %eax, %eax
callq 0xde896
cmpq $0x0, 0x8(%r13)
leaq 0x60cd8(%rip), %rdx     # 0x13796c
leaq 0x50(%rsp), %rbp
je 0xd6ce4
movzbl 0x1(%r13), %edx
leaq 0x4823a(%rip), %rcx     # 0x11eee1
cmpl $0x2, %edx
ja 0xd6cbc
movl %edx, %eax
leaq 0x61043(%rip), %rsi     # 0x137cf8
movslq (%rsi,%rax,4), %rcx
addq %rsi, %rcx
movq %rbx, %rdi
leaq 0x60189(%rip), %rsi     # 0x136e4f
xorl %eax, %eax
callq 0xde896
cmpq $0x0, 0x8(%r13)
leaq 0x60f87(%rip), %rdx     # 0x137c60
leaq 0x60c8c(%rip), %rax     # 0x13796c
cmoveq %rax, %rdx
movq %rbp, %rdi
pushq $0x50
popq %rsi
xorl %eax, %eax
callq 0xde40c
movq 0x8(%r13), %rdx
movq %rbx, %rdi
leaq 0x60c92(%rip), %rsi     # 0x137991
movq %rbp, %rcx
xorl %eax, %eax
callq 0xde896
cmpq $0x0, 0x8(%r13)
je 0xd6f80
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe40bf
movq %rax, 0x40(%r15)
movq %rbx, %rdi
leaq 0x60c79(%rip), %rsi     # 0x1379a7
movq %rax, %rdx
xorl %eax, %eax
callq 0xde896
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe3fc4
movl %eax, 0x20(%r13)
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe3fc4
movl %eax, 0x24(%r13)
movl 0x20(%r13), %edx
movq %rbx, %rdi
leaq 0x60c57(%rip), %rsi     # 0x1379bd
movl %eax, %ecx
xorl %eax, %eax
callq 0xde9f1
cmpb $0x0, 0x2(%r13)
jne 0xd6d86
movb $0x7f, 0x37(%r13)
movq %rbx, %rdi
movq %r15, %rsi
callq 0xd7e12
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe3fc4
movl %eax, 0x48(%r15)
xorl %ebp, %ebp
movq %rbx, %rdi
leaq 0x60c30(%rip), %rsi     # 0x1379d2
movl %eax, %edx
xorl %eax, %eax
callq 0xde896
movq %r15, %rdi
movq %r12, %rsi
callq 0xf1766
movq %r15, %rdi
movq %r12, %rsi
callq 0xf17ab
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe3f2a
movb %al, 0x34(%r13)
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe3f2a
movb %al, 0x35(%r13)
movzbl 0x34(%r13), %edx
movzbl %al, %ecx
movq %rbx, %rdi
leaq 0x60c00(%rip), %rsi     # 0x1379f3
xorl %eax, %eax
callq 0xde896
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe3f2a
movb %al, 0x36(%r13)
movzbl %al, %edx
movq %rbx, %rdi
leaq 0x60bfd(%rip), %rsi     # 0x137a14
xorl %eax, %eax
callq 0xde896
incq 0x8(%rsp)
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe40bf
movq %rax, 0x10(%r13)
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe3fc4
movq %rax, 0x18(%r13)
movq 0x10(%r13), %rdx
movq %rbx, %rdi
leaq 0x60a14(%rip), %rsi     # 0x137865
movl %eax, %ecx
xorl %eax, %eax
callq 0xde896
movq 0x10(%r13), %rdx
movq 0x18(%r13), %rcx
cmpl $0x0, 0x8(%r14)
je 0xd6e7e
cmpb $0x0, 0x36(%r13)
pushq $0x1
popq %rbp
je 0xd6e7e
xorl %ebp, %ebp
cmpl $0x0, 0xc(%r14)
setne %bpl
movq %rbx, %rdi
movq %r14, %rsi
leaq 0x60537(%rip), %r8      # 0x1373c2
movl %ebp, %r9d
callq 0xd7c6f
movq %rbx, %rdi
callq 0xeac74
movq %rax, %rbp
movq 0x18(%rbx), %rdi
movq 0x8(%rsp), %rsi
movq (%r14), %rax
movl 0x18(%rax), %r9d
pushq $0xd
popq %rdx
movq %rbp, %rcx
pushq $0x1
popq %r8
callq 0xe4c9a
movq %rbp, %rdi
callq 0xeb7e4
movq %rbx, %rdi
leaq 0x60b54(%rip), %rsi     # 0x137a23
movq %rax, %rdx
xorl %eax, %eax
callq 0xde896
movq %rbp, %rdi
callq 0xeaf76
testl %eax, %eax
je 0xd6ef7
movq %rbp, %rdi
leaq 0x4a80d(%rip), %rsi     # 0x1216fc
pushq $0x5
popq %rdx
callq 0xeae42
addq $0xd, 0x8(%rsp)
cmpb $0x0, 0x2(%r13)
je 0xd719f
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0xe3fc4
movq %rax, %r12
movq %rbx, %rdi
leaq 0x60b13(%rip), %rsi     # 0x137a34
movl %r12d, %edx
xorl %eax, %eax
callq 0xde896
movq 0x18(%rbx), %rdi
leaq 0x8(%rsp), %rsi
callq 0xe3f2a
movb %al, 0x37(%r13)
cmpb $0x7f, %al
jne 0xd7033
leaq 0x50(%rsp), %r14
movq %r14, %rdi
leaq 0x2e528(%rip), %rsi     # 0x10547c
pushq $0x50
popq %rdx
callq 0xde492
jmp 0xd7083
movq 0x18(%r15), %rdx
movq %rbx, %rdi
leaq 0x609a7(%rip), %rsi     # 0x137916
xorl %eax, %eax
callq 0xdf2a5
xorl %r12d, %r12d
xorl %ebp, %ebp
jmp 0xd7213
movq 0x88(%r15), %r14
cmpb $0x0, 0x2(%r14)
je 0xd7024
movq 0x18(%r15), %rbp
movq 0x18(%rbx), %rdi
leaq 0x33(%rbp), %rsi
callq 0xe3fa3
movq %rax, %r12
movq %rbx, %rdi
leaq 0x60a84(%rip), %rsi     # 0x137a34
movl %r12d, %edx
xorl %eax, %eax
callq 0xde896
movq 0x18(%rbx), %rdi
addq $0x36, %rbp
movq %rbp, %rsi
callq 0xe3fa3
movl %eax, 0x2c(%r14)
movq %rbx, %rdi
leaq 0x60ab9(%rip), %rsi     # 0x137a91
movl %eax, %edx
xorl %eax, %eax
callq 0xde896
movq %rbx, %rdi
movq 0x20(%rsp), %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0xd7eef
movl 0x30(%r14), %edx
movq %rbx, %rdi
leaq 0x60aac(%rip), %rsi     # 0x137aae
xorl %eax, %eax
callq 0xde896
movl 0x30(%r14), %eax
cmpl 0x2c(%r14), %eax
je 0xd7024
movq %rbx, %rdi
leaq 0x34296(%rip), %rsi     # 0x10b2b3
xorl %eax, %eax
callq 0xdf05a
xorl %r12d, %r12d
xorl %ebp, %ebp
movq 0x20(%rsp), %r14
jmp 0xd7213
movzbl %al, %ecx
cvtsi2sd %ecx, %xmm0
testb %al, %al
js 0xd705a
mulsd 0x6063a(%rip), %xmm0    # 0x137680
leaq 0x50(%rsp), %r14
movq %r14, %rdi
pushq $0x50
popq %rsi
leaq 0x60a0f(%rip), %rdx     # 0x137a67
jmp 0xd707c
addsd 0x60626(%rip), %xmm0    # 0x137688
mulsd 0x60626(%rip), %xmm0    # 0x137690
leaq 0x50(%rsp), %r14
movq %r14, %rdi
pushq $0x50
popq %rsi
leaq 0x609d4(%rip), %rdx     # 0x137a50
movb $0x1, %al
callq 0xde40c
movzbl 0x37(%r13), %edx
movq %rbx, %rdi
leaq 0x609ec(%rip), %rsi     # 0x137a7e
movq %r14, %rcx
xorl %eax, %eax
callq 0xde896
movq %rbx, %rdi
movq %r15, %rsi
callq 0xd7e12
movq 0x18(%rbx), %rdi
leaq 0x8(%rsp), %rsi
callq 0xe3fc4
movl %eax, 0x2c(%r13)
movq %rbx, %rdi
leaq 0x609ce(%rip), %rsi     # 0x137a91
movl %eax, %edx
xorl %eax, %eax
callq 0xde896
movq %rbx, %rdi
movq 0x20(%rsp), %r14
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0xd7eef
movl 0x30(%r13), %edx
movq %rbx, %rdi
leaq 0x609be(%rip), %rsi     # 0x137aae
xorl %eax, %eax
callq 0xde896
movl 0x30(%r13), %eax
cmpl 0x2c(%r13), %eax
je 0xd7112
movq %rbx, %rdi
leaq 0x341a8(%rip), %rsi     # 0x10b2b3
xorl %eax, %eax
callq 0xdf05a
testq %r12, %r12
jle 0xd719f
movq %rbp, 0x30(%rsp)
movq 0x8(%rsp), %rbp
addq %r12, %rbp
movq 0x18(%rbx), %rdi
leaq 0x8(%rsp), %rsi
callq 0xe3f2a
movzbl %al, %r12d
movq %rbx, %rdi
leaq 0x60989(%rip), %rsi     # 0x137acd
movl %r12d, %edx
xorl %eax, %eax
callq 0xde9f1
cmpq 0x8(%rsp), %rbp
jle 0xd71a4
movq 0x18(%rbx), %rdi
leaq 0x8(%rsp), %rsi
movq %rbp, 0x18(%rsp)
callq 0xe3f2a
movzbl %al, %edx
movq %rbx, %rdi
leaq 0x6096a(%rip), %rsi     # 0x137adf
movq %rdx, 0x10(%rsp)
xorl %eax, %eax
callq 0xde9f1
movq 0x18(%rsp), %rdx
movq 0x8(%rsp), %rax
movq %rdx, %rcx
subq %rax, %rcx
cmpq %r12, %rcx
movq 0x30(%rsp), %rbp
jge 0xd7394
xorl %r12d, %r12d
jmp 0xd71ac
xorl %r12d, %r12d
movq 0x30(%rsp), %rbp
movq 0x70(%r15), %rdi
callq 0xeaf8a
testl %eax, %eax
je 0xd71d9
movq 0x58(%r15), %rdi
movq 0x70(%r15), %rsi
callq 0xead71
movq 0x58(%r15), %rdi
leaq 0x2de8d(%rip), %rsi     # 0x10505e
pushq $0x5
popq %rdx
callq 0xeae42
movq %r12, %rdi
callq 0xeaf8a
testl %eax, %eax
movq 0x58(%r15), %rdi
movq %rbp, %rsi
cmovneq %r12, %rsi
callq 0xead71
cmpb $0x0, 0x36(%r13)
je 0xd7213
movq 0x58(%r15), %rdi
movl 0x3c(%r14), %ecx
pushq $0x5
popq %rsi
leaq 0x60972(%rip), %rdx     # 0x137b7e
xorl %eax, %eax
callq 0xeae8b
movq 0x58(%r15), %rdi
callq 0xeaf76
testl %eax, %eax
je 0xd7233
movq 0x58(%r15), %rdi
leaq 0x4a4d1(%rip), %rsi     # 0x1216fc
pushq $0x5
popq %rdx
callq 0xeae42
movq %rbp, %rdi
callq 0xeaf3c
movq %r12, %rdi
callq 0xeaf3c
movl $0xfdc4a7dc, %ebp       # imm = 0xFDC4A7DC
cmpl %ebp, 0x48(%rsp)
jne 0xd72c0
movq 0x30(%r15), %rcx
movq 0x40(%r15), %rdx
testq %rcx, %rcx
sete %al
testq %rdx, %rdx
sets %sil
orb %al, %sil
jne 0xd7272
cmpq %rdx, 0x40(%r14)
jle 0xd7272
movq %rdx, 0x40(%r14)
movq 0x8(%r13), %r12
testq %r12, %r12
je 0xd72d4
cmpb $0x0, 0x36(%r13)
je 0xd728d
cmpl $0x0, 0xc(%r14)
je 0xd732d
cmpb $0x2, 0x34(%r13)
jbe 0xd72dc
movq 0x58(%r15), %rdi
callq 0xeb877
movzbl 0x34(%r13), %ecx
movzbl 0x35(%r13), %r8d
movq %rbx, %rdi
leaq 0x60618(%rip), %rsi     # 0x1378c9
movq %rax, %rdx
xorl %eax, %eax
callq 0xdf2a5
jmp 0xd7362
movl $0x0, %r12d
testq %r13, %r13
jne 0xd7362
jmp 0xd7378
xorl %r12d, %r12d
jmp 0xd7362
jne 0xd72e5
cmpb $0x2, 0x35(%r13)
jae 0xd7294
movq %rbx, %rdi
leaq 0x41d3c(%rip), %rsi     # 0x11902b
xorl %eax, %eax
callq 0xde896
movq %rbx, %rdi
pushq $0x1
popq %rsi
callq 0xdeba7
cmpb $0x3, 0x1(%r13)
jae 0xd7340
orb $0x1, 0x78(%r15)
movb $0x1, 0xa1(%r15)
leaq 0xa79(%rip), %rax       # 0xd7d95
movq %rax, 0xa8(%r15)
movq %r15, %rdi
callq 0xf1a85
jmp 0xd7362
movq %rbx, %rdi
leaq 0x6057b(%rip), %rsi     # 0x1378b2
xorl %eax, %eax
callq 0xde896
jmp 0xd7362
movq 0x58(%r15), %rdi
callq 0xeb877
movzbl 0x1(%r13), %ecx
movq %rbx, %rdi
leaq 0x60597(%rip), %rsi     # 0x1378ef
movq %rax, %rdx
xorl %eax, %eax
callq 0xdf2a5
cmpb $0x0, 0x36(%r13)
je 0xd736d
incl 0x3c(%r14)
movq %rbx, %rdi
movq %r13, %rsi
callq 0xded32
movq %rbx, %rdi
movq %r15, %rsi
callq 0xf167c
movl 0x3c(%rsp), %esi
movq %rbx, %rdi
callq 0xdebb7
jmp 0xd6b77
movq %r12, %rcx
testq %r12, %r12
je 0xd73fa
movq %rbx, %rdi
movq %rcx, 0x40(%rsp)
callq 0xeac74
movq %rax, %r12
movq 0x18(%rbx), %rdi
movq 0x8(%rsp), %rsi
movq (%r14), %rax
movl 0x18(%rax), %r9d
movq 0x40(%rsp), %rdx
movq %r12, %rcx
pushq $0x1
popq %r8
callq 0xe4c9a
movq %r12, %rdi
callq 0xeb7e4
movq %rbx, %rdi
leaq 0x60711(%rip), %rsi     # 0x137af0
movq %rax, %rdx
xorl %eax, %eax
callq 0xde896
movq 0x40(%rsp), %rcx
movq 0x18(%rsp), %rdx
movq 0x8(%rsp), %rax
jmp 0xd73fd
xorl %r12d, %r12d
addq %rcx, %rax
movq %rax, 0x8(%rsp)
movq %rdx, %rcx
subq %rax, %rcx
movq 0x10(%rsp), %rsi
cmpq %rsi, %rcx
jl 0xd71ac
movq %rsi, %rcx
testq %rsi, %rsi
je 0xd747a
movq %rbx, %rdi
callq 0xeac74
movq %rax, 0x70(%r15)
movq 0x18(%rbx), %rdi
movq 0x8(%rsp), %rsi
movq (%r14), %rcx
movl 0x18(%rcx), %r9d
movq 0x10(%rsp), %rdx
movq %rax, %rcx
pushq $0x1
popq %r8
callq 0xe4c9a
movq 0x70(%r15), %rdi
callq 0xeb7e4
movq %rbx, %rdi
leaq 0x3a5df(%rip), %rsi     # 0x111a40
movq %rax, %rdx
xorl %eax, %eax
callq 0xde896
movq 0x10(%rsp), %rcx
movq 0x18(%rsp), %rdx
movq 0x8(%rsp), %rax
addq %rcx, %rax
movq %rax, 0x8(%rsp)
movq %rdx, %rcx
subq %rax, %rcx
cmpq $0x2, %rcx
jl 0xd71ac
movq 0x18(%rbx), %rdi
leaq 0x8(%rsp), %rsi
callq 0xe3fc4
movl %eax, 0x38(%r13)
movq %rbx, %rdi
leaq 0x60652(%rip), %rsi     # 0x137b00
movl %eax, %edx
xorl %eax, %eax
callq 0xde896
movq 0x8(%rsp), %rsi
movq 0x18(%rsp), %rax
subq %rsi, %rax
cmpq $0x3, %rax
jl 0xd71ac
movq 0x18(%rbx), %rdi
pushq $0x3
popq %rdx
pushq $0x1
popq %rcx
xorl %r8d, %r8d
callq 0xe424b
movl %eax, 0x3c(%r13)
addq $0x3, 0x8(%rsp)
movq %rbx, %rdi
leaq 0x6061a(%rip), %rsi     # 0x137b0e
movl %eax, %edx
xorl %eax, %eax
callq 0xde896
movq %rbx, %rdi
pushq $0x1
popq %rsi
callq 0xdeba7
movl 0x3c(%r13), %edx
shrl $0x16, %edx
movl %edx, 0x10(%rsp)
movq %rbx, %rdi
leaq 0x60601(%rip), %rsi     # 0x137b1e
xorl %eax, %eax
callq 0xde896
cmpl $0x1, 0x10(%rsp)
jne 0xd755e
movl 0x3c(%r13), %edx
movl $0x1ff, %eax            # imm = 0x1FF
andl %eax, %edx
movq %rbx, %rdi
leaq 0x605ef(%rip), %rsi     # 0x137b2f
xorl %eax, %eax
callq 0xde896
movl 0x3c(%r13), %eax
andl $0x49, %eax
cmpl $0x1, %eax
pushq $0x2
popq %rax
sbbl $0x0, %eax
movq 0x50(%r15), %rcx
orl %eax, 0x14(%rcx)
movq %rbx, %rdi
pushq $-0x1
popq %rsi
callq 0xdeba7
movq 0x18(%rsp), %rcx
cmpq 0x8(%rsp), %rcx
jle 0xd71ac
movq 0x18(%rbx), %rdi
leaq 0x8(%rsp), %rsi
movq %rcx, %rbp
callq 0xe3f2a
movb %al, 0x40(%r13)
movzbl %al, %edx
movq %rbx, %rdi
leaq 0x605a5(%rip), %rsi     # 0x137b40
xorl %eax, %eax
callq 0xde896
subq 0x8(%rsp), %rbp
cmpq $0x2, %rbp
jl 0xd71a7
movq 0x18(%rbx), %rdi
leaq 0x8(%rsp), %rsi
callq 0xe3fc4
movl %eax, 0x44(%r13)
movq %rbx, %rdi
leaq 0x60599(%rip), %rsi     # 0x137b66
movl %eax, %edx
xorl %eax, %eax
callq 0xde896
jmp 0xd71a7
leaq 0x60127(%rip), %rsi     # 0x137709
movq %rbx, %rdi
movq %r12, %rdx
xorl %eax, %eax
callq 0xdf2a5
jmp 0xd7602
leaq 0x5db14(%rip), %rsi     # 0x13510c
movq %rbx, %rdi
xorl %eax, %eax
callq 0xdf2a5
andq $0x0, 0x50(%rsp)
cmpb $0x1, 0x22(%r14)
jne 0xd76a3
cmpq $0x0, 0x28(%r14)
je 0xd76a3
cmpq $0x0, 0x30(%r14)
je 0xd76a3
movq 0x40(%r14), %r15
cmpq $0x2b, %r15
jl 0xd76a3
leaq -0x413(%r15), %rax
cmpq $-0x3e4, %rax           # imm = 0xFC1C
jb 0xd76a3
movq 0x18(%rbx), %rdi
leaq -0x1(%r15), %rsi
callq 0xe3eb4
cmpb $0xa, %al
jne 0xd76a3
addq $-0x2a, %r15
movq 0x18(%rbx), %rdi
pushq $0x2a
popq %rdx
leaq 0x50(%rsp), %r8
xorl %esi, %esi
movq %r15, %rcx
callq 0xe4b21
testl %eax, %eax
jne 0xd76a3
leaq 0x6052e(%rip), %rsi     # 0x137ba2
pushq $0x2a
popq %r12
movq %rbx, %rdi
movq %r12, %rdx
movq %r15, %rcx
xorl %eax, %eax
callq 0xde896
leaq 0x6054b(%rip), %r8      # 0x137bda
movq %rbx, %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r9d, %r9d
callq 0xd7c6f
movl 0x3c(%r14), %edx
testl %edx, %edx
jle 0xd76c3
cmpl $0x0, 0xc(%r14)
jne 0xd76c3
leaq 0x6007e(%rip), %rsi     # 0x137737
movq %rbx, %rdi
xorl %eax, %eax
callq 0xdf37f
movq 0x10(%r14), %rsi
movq %rbx, %rdi
callq 0xe095f
movq (%r14), %rsi
movq %rbx, %rdi
callq 0xf16e7
movq %rbx, %rdi
movq %r14, %rsi
callq 0xded32
movl 0x2c(%rsp), %esi
movq %rbx, %rdi
callq 0xdebb7
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq