// File: /workspace/github_c_makefile_star2_O2/jsummers[P]deark/modules/mscompress.c
// Function: de_run_mscompress
static void de_run_mscompress(deark *c, de_module_params *mparams)
{
	lctx *d = NULL;
	const char *varname;

	d = de_malloc(c, sizeof(lctx));
	d->input_encoding = de_get_input_encoding(c, NULL, DE_ENCODING_ASCII);

	d->fmt = detect_fmt_internal(c);
	if(d->fmt==FMT_SZDD) {
		varname = "SZDD";
	}
	else if(d->fmt==FMT_KWAJ) {
		varname = "KWAJ";
	}
	else if(d->fmt==FMT_SZ) {
		varname = "SZ";
	}
	else {
		de_err(c, "Unidentified format");
		goto done;
	}
	de_declare_fmtf(c, "MS Installation Compression, %s variant", varname);

	if(mparams && mparams->in_params.fi) {
		d->fi_override = mparams->in_params.fi;
	}

	d->inf = c->infile;
	mscompress_handle_multipart(c, d);
	if(d->errflag) goto done;

	if(d->fmt==FMT_KWAJ) {
		if(!do_header_KWAJ(c, d, 0)) goto done;
	}
	else if(d->fmt==FMT_SZ) {
		if(!do_header_SZ(c, d, 0)) goto done;
	}
	else {
		if(!do_header_SZDD(c, d, 0)) goto done;
	}

	do_extract_file(c, d);

done:
	if(d) {
		ucstring_destroy(d->filename);
		dbuf_close(d->combined_inf);
		de_free(c, d);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x128, %rsp            # imm = 0x128
movq %rsi, %r15
movq %rdi, %rbx
pushq $0x50
popq %rsi
callq 0xdecaf
movq %rax, %r13
pushq $0x1
popq %rdx
movq %rbx, %rdi
xorl %esi, %esi
callq 0xe08d2
movl %eax, 0x4(%r13)
movq %rbx, %rdi
callq 0x94c37
movl %eax, (%r13)
movl %eax, %eax
leaq 0x90690(%rip), %rcx     # 0x123dac
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x7b910(%rip), %rsi     # 0x10f03c
movq %rbx, %rdi
xorl %eax, %eax
callq 0xdf2a5
jmp 0x945dc
leaq 0x90732(%rip), %rdx     # 0x123e74
jmp 0x93754
leaq 0x9072e(%rip), %rdx     # 0x123e79
jmp 0x93754
leaq 0x9071b(%rip), %rdx     # 0x123e6f
leaq 0x90721(%rip), %rsi     # 0x123e7c
movq %rbx, %rdi
xorl %eax, %eax
callq 0xe0824
testq %r15, %r15
je 0x93777
movq 0x28(%r15), %rax
testq %rax, %rax
je 0x93777
movq %rax, 0x38(%r13)
movq 0x18(%rbx), %rax
movq %r13, 0x28(%rsp)
movq %rax, 0x40(%r13)
cmpq $0x0, 0x30(%rbx)
je 0x93882
movq 0x28(%rsp), %r14
cmpl $0x3, (%r14)
jne 0x9384d
movq 0x18(%rax), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xe59cd
movq %rax, 0x48(%r14)
movq %rax, 0x40(%r14)
movq 0x18(%rbx), %rdi
movq 0x18(%rdi), %rdx
xorl %esi, %esi
movq %rax, %rcx
callq 0xe45f4
pushq $0x2
popq %r15
pushq $0x7
popq %r12
pushq $0x8
popq %r13
leaq 0xb0(%rsp), %rbp
leal -0x2(%r15), %eax
movq 0x30(%rbx), %rcx
cmpl (%rcx), %eax
jge 0x93882
leal -0x1(%r15), %r14d
movq %rbx, %rdi
movl %r14d, %esi
callq 0xe10d7
movq %rax, 0xb0(%rsp)
testq %rax, %rax
je 0x93879
movq %rax, %rdi
movq %r12, %rsi
callq 0xe3eb4
movzbl %al, %eax
cmpl %eax, %r15d
jne 0x93865
movq 0xb0(%rsp), %rdi
movq 0x18(%rdi), %rdx
addq $-0x8, %rdx
movq 0x28(%rsp), %rax
movq 0x40(%rax), %rcx
movq %r13, %rsi
callq 0xe45f4
movq %rbx, %rdi
movl %r14d, %esi
movq %rbp, %rdx
callq 0xe1130
incl %r15d
jmp 0x937da
leaq 0x9066a(%rip), %rsi     # 0x123ebe
movq %rbx, %rdi
xorl %eax, %eax
callq 0xdf2a5
movb $0x1, 0x8(%r14)
jmp 0x93882
leaq 0x90684(%rip), %rsi     # 0x123ef0
movq %rbx, %rdi
movl %r15d, %edx
xorl %eax, %eax
callq 0xdf2a5
movq 0x28(%rsp), %rax
movb $0x1, 0x8(%rax)
movq 0x28(%rsp), %r13
cmpb $0x0, 0x8(%r13)
jne 0x945dc
movl (%r13), %eax
leaq 0x98b51(%rip), %rsi     # 0x12c3ee
movq %rbx, %rdi
xorl %edx, %edx
cmpl $0x3, %eax
je 0x93af9
cmpl $0x2, %eax
jne 0x93b81
xorl %eax, %eax
callq 0xde896
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0xdeba7
leaq 0xb0(%rsp), %r15
movq $0x8, (%r15)
movq 0x40(%r13), %rdi
movq %r15, %rsi
callq 0xe3fc4
movq %rax, %r14
movl %r14d, 0xc(%r13)
movl %r14d, %edi
callq 0x94c9f
leaq 0xa1751(%rip), %rsi     # 0x135048
movq %rbx, %rdi
movl %r14d, %edx
movq %rax, %rcx
xorl %eax, %eax
callq 0xde896
movq 0x40(%r13), %rdi
movq %r15, %rsi
callq 0xe3fc4
movq %rax, 0x10(%r13)
leaq 0x905f4(%rip), %rsi     # 0x123f12
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xde896
movq 0x40(%r13), %rdi
movq 0x18(%rdi), %rax
subq 0x10(%r13), %rax
movq %rax, 0x18(%r13)
movq %r15, %rsi
callq 0xe3fc4
movq %rax, %r15
leaq 0x905e1(%rip), %rsi     # 0x123f2e
movq %rbx, %rdi
movl %r15d, %edx
xorl %eax, %eax
callq 0xde896
testb $0x1, %r15b
je 0x9398e
movq 0x40(%r13), %rdi
leaq 0xb0(%rsp), %rsi
callq 0xe40bf
movq %rax, 0x28(%r13)
movb $0x1, 0x20(%r13)
leaq 0x7d200(%rip), %rsi     # 0x110b81
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xde896
testb $0x2, %r15b
je 0x9399d
addq $0x2, 0xb0(%rsp)
testb $0x4, %r15b
je 0x939ba
movq 0x40(%r13), %rdi
leaq 0xb0(%rsp), %r14
movq %r14, %rsi
callq 0xe3fc4
addq %rax, (%r14)
testb $0x8, %r15b
je 0x93a26
leaq 0x40(%rsp), %r8
andq $0x0, (%r8)
movq 0x40(%r13), %rdi
movq 0xb0(%rsp), %rdx
pushq $0x9
popq %rcx
xorl %esi, %esi
callq 0xe4b21
testl %eax, %eax
je 0x93aa3
movq %rbx, %rdi
callq 0xeac74
movq %rax, 0x30(%r13)
movq 0x40(%r13), %rdi
movq 0xb0(%rsp), %rsi
movq 0x40(%rsp), %rdx
subq %rsi, %rdx
movl 0x4(%r13), %r9d
movq %rax, %rcx
xorl %r8d, %r8d
callq 0xe4c9a
movq 0x40(%rsp), %rax
incq %rax
movq %rax, 0xb0(%rsp)
testb $0x10, %r15b
je 0x93aa3
leaq 0x40(%rsp), %r8
andq $0x0, (%r8)
movq 0x40(%r13), %rdi
movq 0xb0(%rsp), %rdx
pushq $0x4
popq %rcx
xorl %esi, %esi
callq 0xe4b21
testl %eax, %eax
je 0x93aa3
movq 0x30(%r13), %rdi
movq 0x40(%rsp), %rax
testq %rdi, %rdi
je 0x93a98
cmpq 0xb0(%rsp), %rax
jle 0x93a98
pushq $0x2e
popq %rsi
callq 0xeada5
movq 0x40(%r13), %rdi
movq 0xb0(%rsp), %rsi
movq 0x40(%rsp), %rdx
subq %rsi, %rdx
movq 0x30(%r13), %rcx
movl 0x4(%r13), %r9d
xorl %r8d, %r8d
callq 0xe4c9a
movq 0x40(%rsp), %rax
incq %rax
movq %rax, 0xb0(%rsp)
movq 0x30(%r13), %rdi
callq 0xeaf8a
testl %eax, %eax
je 0x93acd
movq 0x30(%r13), %rdi
callq 0xeb877
leaq 0x9af9e(%rip), %rsi     # 0x12ea5e
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xde896
cmpb $0x0, 0x20(%r13)
je 0x93ae9
cmpl $0x1, 0xc(%r13)
ja 0x93ae9
movq 0x28(%r13), %rax
cmpq 0x18(%r13), %rax
jge 0x93ae9
movq %rax, 0x18(%r13)
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0xdeba7
jmp 0x93cf8
xorl %eax, %eax
callq 0xde896
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0xdeba7
leaq 0xb0(%rsp), %rsi
movq $0x7, (%rsi)
movq 0x40(%r13), %rdi
callq 0xe3f2a
movl %eax, %ebp
cmpb $-0x2f, %al
jne 0x93c27
movl $0x2, 0xc(%r13)
movq 0x40(%r13), %rdi
leaq 0xb0(%rsp), %r14
movq %r14, %rsi
callq 0xe40bf
movq %rax, 0x28(%r13)
movb $0x1, 0x20(%r13)
leaq 0x7d028(%rip), %rsi     # 0x110b81
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xde896
movq (%r14), %rax
movq %rax, 0x10(%r13)
movq 0x40(%r13), %rcx
movq 0x18(%rcx), %rcx
subq %rax, %rcx
movq %rcx, 0x18(%r13)
jmp 0x93c38
xorl %eax, %eax
callq 0xde896
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0xdeba7
movq $0xe, 0x10(%r13)
movq 0x40(%r13), %rdi
movq 0x18(%rdi), %rax
addq $-0xe, %rax
movq %rax, 0x18(%r13)
leaq 0x40(%rsp), %rsi
movq $0x8, (%rsi)
callq 0xe3f2a
movl %eax, %ebp
movzbl %al, %r14d
movl %r14d, %edi
callq 0xe1f0f
movsbl %al, %ecx
leaq 0x9039f(%rip), %rsi     # 0x123f73
movq %rbx, %rdi
movl %r14d, %edx
xorl %eax, %eax
callq 0xde896
cmpb $0x41, %r14b
jne 0x93c52
movl $0x10000, 0xc(%r13)     # imm = 0x10000
movq 0x40(%r13), %rdi
leaq 0x40(%rsp), %rsi
callq 0xe3f2a
movzbl %al, %r15d
leal -0x20(%r15), %eax
cmpb $0x5e, %al
ja 0x93c65
leaq 0x9037b(%rip), %rdx     # 0x123f8b
leaq 0xb0(%rsp), %rdi
pushq $0x50
popq %rsi
movl %r15d, %ecx
xorl %eax, %eax
callq 0xde40c
jmp 0x93c9c
leaq 0x9032a(%rip), %rsi     # 0x123f58
movq %rbx, %rdi
xorl %eax, %eax
callq 0xdf2a5
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0xdeba7
cmpb $-0x2f, %bpl
je 0x93cf8
jmp 0x945dc
leaq 0x9033a(%rip), %rsi     # 0x123f93
movq %rbx, %rdi
xorl %eax, %eax
callq 0xdf2a5
jmp 0x93ce3
testl %r15d, %r15d
je 0x93c83
leaq 0xa3fef(%rip), %rsi     # 0x137c60
leaq 0xb0(%rsp), %rdi
pushq $0x50
popq %rdx
callq 0xde492
jmp 0x93c9c
leaq 0x8726b(%rip), %rdx     # 0x11aef5
leaq 0xb0(%rsp), %rdi
pushq $0x50
popq %rsi
xorl %eax, %eax
callq 0xde40c
leaq 0x9030d(%rip), %rsi     # 0x123fb0
leaq 0xb0(%rsp), %rcx
movq %rbx, %rdi
movl %r15d, %edx
xorl %eax, %eax
callq 0xde896
movq 0x40(%r13), %rdi
leaq 0x40(%rsp), %rsi
callq 0xe40bf
movq %rax, 0x28(%r13)
movb $0x1, 0x20(%r13)
leaq 0x7ceab(%rip), %rsi     # 0x110b81
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xde896
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0xdeba7
cmpb $0x41, %bpl
jne 0x945dc
movq 0x10(%r13), %rdx
leaq 0x9123d(%rip), %rsi     # 0x124f40
movq %rbx, %rdi
xorl %eax, %eax
callq 0xde896
movl 0xc(%r13), %ebp
cmpl $0x5, %ebp
jae 0x93d5d
cmpq $0x0, 0x18(%r13)
js 0x93d58
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0xdeba7
movq %rbx, %rdi
callq 0xdfd1a
movq %rax, %r14
movq 0x30(%r13), %rdi
callq 0xeaf8a
testl %eax, %eax
je 0x93d8d
movq 0x30(%r13), %rdx
movq %rbx, %rdi
movq %r14, %rsi
xorl %ecx, %ecx
callq 0xdfd55
movb $0x1, 0x8(%r14)
jmp 0x93da5
xorl %r14d, %r14d
jmp 0x93d85
cmpl $0x10000, %ebp          # imm = 0x10000
je 0x93d16
movl %ebp, %edi
callq 0x94c9f
leaq 0x9025d(%rip), %rsi     # 0x123fd0
xorl %r14d, %r14d
movq %rbx, %rdi
movl %ebp, %edx
movq %rax, %rcx
xorl %eax, %eax
callq 0xdf2a5
xorl %r15d, %r15d
jmp 0x945c9
leaq 0x94749(%rip), %rdx     # 0x1284dd
pushq $0x5
popq %r8
movq %rbx, %rdi
movq %r14, %rsi
xorl %ecx, %ecx
callq 0xdffbd
movq 0x38(%r13), %rax
testq %rax, %rax
movq %r14, 0x10(%rsp)
cmovneq %rax, %r14
movq %rbx, %rdi
xorl %esi, %esi
movq %r14, %rdx
xorl %ecx, %ecx
callq 0xe4e62
movq %rax, %r14
movq %rax, %rdi
callq 0xe589c
leaq 0x78(%rsp), %r12
leaq 0x98(%rsp), %r15
leaq 0xb0(%rsp), %rcx
movq %rbx, %rdi
movq %r12, %rsi
movq %r15, %rdx
callq 0xee7ee
movq 0x40(%r13), %rdi
movq %rdi, (%r12)
movq 0x10(%r13), %rbp
movq %rbp, 0x8(%r12)
movq 0x18(%r13), %rdx
movq %rdx, 0x10(%r12)
movq %r14, (%r15)
movb 0x20(%r13), %al
movb %al, 0x8(%r15)
movq 0x28(%r13), %rax
movq %rax, 0x10(%r15)
movl 0xc(%r13), %eax
cmpq $0x4, %rax
ja 0x93e5e
leaq 0x8ff8c(%rip), %rcx     # 0x123dbc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x78(%rsp), %rsi
leaq 0x98(%rsp), %rdx
leaq 0xb0(%rsp), %rcx
movq %rbx, %rdi
xorl %r8d, %r8d
callq 0xeea8f
jmp 0x941fa
cmpl $0x10000, %eax          # imm = 0x10000
movq 0x10(%rsp), %r15
jne 0x94583
leaq 0x78(%rsp), %rsi
leaq 0x98(%rsp), %rdx
leaq 0xb0(%rsp), %rcx
pushq $0x1
popq %r8
movq %rbx, %rdi
callq 0xef3c0
jmp 0x94583
movq %r14, 0x68(%rsp)
leaq 0x18(%rsp), %r12
movq %rbp, (%r12)
leaq 0x74(%rsp), %rsi
movq %rbx, %rdi
callq 0xdebae
movq %rbx, %rdi
movl $0x8000, %esi           # imm = 0x8000
callq 0xef27c
movq %rax, %r15
movq 0x78(%rsp), %rax
leaq 0x40(%rsp), %rcx
movq %rax, (%rcx)
movq 0x80(%rsp), %rax
movq 0x88(%rsp), %rcx
addq %rcx, %rax
addq $-0x4, %rax
cmpq %rax, %rbp
jg 0x94540
movq %rbx, %rdi
leaq 0x901d1(%rip), %rsi     # 0x1240c7
movq %rbp, %rdx
xorl %eax, %eax
callq 0xde896
movq %rbx, %rdi
pushq $0x1
popq %rsi
callq 0xdeba7
movq 0x78(%rsp), %rdi
movq %r12, %rsi
callq 0xe3fc4
movq %rax, %r14
movq 0x78(%rsp), %rdi
movq %r12, %rsi
callq 0xe3f6e
cmpl $0x434b, %eax           # imm = 0x434B
jne 0x9451d
leaq -0x2(%r14), %rbp
movq 0x18(%rsp), %rdx
movq %rbx, %rdi
leaq 0x90194(%rip), %rsi     # 0x1240da
movl %ebp, %ecx
xorl %eax, %eax
callq 0xde896
cmpq $0x2, %r14
jl 0x94540
movq 0x18(%rsp), %rax
movq %rax, 0x48(%rsp)
andq $0x0, 0x118(%rsp)
movq %rbp, 0x50(%rsp)
movq %r15, 0x120(%rsp)
movq 0x98(%rsp), %rax
movq 0x18(%rax), %r13
movq %rbx, %rdi
leaq 0x40(%rsp), %rsi
leaq 0x98(%rsp), %rdx
leaq 0xb0(%rsp), %rcx
leaq 0x118(%rsp), %r8
callq 0xf38de
movq 0x98(%rsp), %rdi
callq 0xe58e8
cmpl $0x0, 0xb0(%rsp)
jne 0x94540
addq %rbp, 0x18(%rsp)
movq 0x98(%rsp), %rax
movq 0x18(%rax), %r14
subq %r13, %r14
movq %rbx, %rdi
leaq 0x90111(%rip), %rsi     # 0x1240f4
movq %r14, %rdx
xorl %eax, %eax
callq 0xde896
cmpq $0x8000, %r14           # imm = 0x8000
jl 0x94540
movq %rbx, %rdi
pushq $-0x1
popq %rsi
callq 0xdeba7
movq 0x18(%rsp), %rbp
jmp 0x93ecc
leaq 0x78(%rsp), %rsi
leaq 0x98(%rsp), %rdx
leaq 0xb0(%rsp), %rcx
movq %rbx, %rdi
xorl %r8d, %r8d
callq 0xef3c0
jmp 0x941fa
movq %r14, 0x68(%rsp)
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0xdebae
movl $0xe0, %esi
movq %rbx, %rdi
callq 0xdecaf
movq %rax, %r13
movq %rbx, (%rax)
leaq 0x8ffbf(%rip), %rax     # 0x12401f
movq %rax, 0x58(%r13)
movq %r15, 0x8(%r13)
leaq 0xb0(%rsp), %rax
movq %rax, 0x50(%r13)
movq 0x78(%rsp), %rax
leaq 0x20(%r13), %r15
movq %rax, 0x20(%r13)
movq 0x80(%rsp), %rax
movq %rax, 0x28(%r13)
addq 0x88(%rsp), %rax
movq %rax, 0x30(%r13)
leaq 0x68(%r13), %rax
movq %rax, 0x38(%rsp)
pushq $0x10
popq %rax
movl %eax, 0x6c(%r13)
movl %eax, 0x84(%r13)
movl $0x20, 0x9c(%r13)
movl $0x40, 0xb4(%r13)
movl $0x100, 0xcc(%r13) # imm = 0x100
pushq $0x78
popq %r14
cmpq $0xf0, %r14
je 0x940f9
movl -0xc(%r13,%r14), %edx
movq %rbx, %rdi
movq %rdx, %rsi
callq 0xf8601
movq %rax, (%r13,%r14)
addq $0x18, %r14
jmp 0x940d5
movq %r15, (%rsp)
movq 0x28(%r13), %rdx
leaq 0x8ff1e(%rip), %rsi     # 0x124026
movq %rbx, %rdi
xorl %eax, %eax
callq 0xde896
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0xdeba7
pushq $0x4
popq %r14
leaq 0x8ff10(%rip), %r15     # 0x124038
movq 0x38(%rsp), %rbp
xorl %r12d, %r12d
movq (%rsp), %rdi
movl %r14d, %esi
callq 0xe6a4a
cmpq $0x5, %r12
je 0x94160
movl %eax, (%rbp)
movq %rbx, %rdi
movq %r15, %rsi
movl %r12d, %edx
movl %eax, %ecx
xorl %eax, %eax
callq 0xde9f1
incq %r12
addq $0x18, %rbp
jmp 0x94130
movq %r13, 0x20(%rsp)
cmpb $0x0, 0x38(%r13)
je 0x94204
movq 0x20(%rsp), %r13
movl $0x1, 0x18(%r13)
movb $0x1, 0x38(%r13)
movq 0x10(%rsp), %r15
movq 0x58(%r13), %rdx
leaq 0xb0(%rsp), %rsi
movq %rbx, %rdi
callq 0xee91c
movq 0x60(%r13), %rsi
movq %rbx, %rdi
callq 0xef395
pushq $0x78
popq %r14
cmpq $0xf0, %r14
je 0x941c7
movq (%r13,%r14), %rsi
movq %rbx, %rdi
callq 0xf86b0
addq $0x18, %r14
jmp 0x941ab
movq %rbx, %rdi
movq %r13, %rsi
callq 0xded32
movl 0x18(%rsp), %esi
movq %rbx, %rdi
callq 0xdebb7
movq 0x28(%rsp), %r13
jmp 0x9457e
leaq 0xaff(%rip), %rcx       # 0x94cee
movq %rbp, %rsi
movq %r14, %r8
callq 0xe4745
movq 0x10(%rsp), %r15
jmp 0x94583
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0xdeba7
xorl %r12d, %r12d
cmpq $0x5, %r12
je 0x94660
movq 0x20(%rsp), %r13
movq (%r13), %r14
imulq $0x18, %r12, %r15
movq %r12, 0x30(%rsp)
movq 0x38(%rsp), %r12
leaq (%r12,%r15), %rbp
movq %r14, %rdi
leaq 0x118(%rsp), %rsi
callq 0xdebae
movq (%r13), %rax
movq %rax, 0x8(%rsp)
movq (%rsp), %rdi
leaq 0x40(%rsp), %rsi
pushq $0x20
popq %rdx
callq 0xe6b25
movl (%r12,%r15), %r9d
movl 0x4(%r12,%r15), %r8d
movq 0x8(%rsp), %rdi
leaq 0x8fde0(%rip), %rsi     # 0x124056
movq 0x30(%rsp), %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0xde896
movq %r14, %rdi
pushq $0x1
popq %rsi
callq 0xdeba7
movl 0x4(%r12,%r15), %esi
movq %r14, 0x8(%rsp)
movq %r14, %rdi
pushq $0x1
popq %rdx
callq 0xdf66f
movq %rax, 0x8(%r12,%r15)
movl (%r12,%r15), %eax
cmpq $0x3, %rax
ja 0x94414
leaq 0x8fb11(%rip), %rcx     # 0x123dd0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl 0x4(%rbp), %edi
callq 0xdfbd6
xorl %edx, %edx
movl 0x4(%rbp), %ecx
cmpq %rcx, %rdx
jae 0x9440d
movq 0x8(%rbp), %rcx
movb %al, (%rcx,%rdx)
incq %rdx
jmp 0x942d2
movq (%rsp), %rdi
pushq $0x4
popq %rsi
callq 0xe6a4a
movq 0x8(%rbp), %rcx
movb %al, (%rcx)
movq 0x8(%rbp), %rax
pushq $0x1
popq %r15
movl 0x4(%rbp), %ecx
cmpq %rcx, %r15
jae 0x9440d
cmpb $0x0, 0x38(%r13)
jne 0x94414
movb (%rax), %r14b
movq (%rsp), %r12
movq %r12, %rdi
pushq $0x2
popq %rsi
callq 0xe6a4a
cmpl $0x3, %eax
jne 0x94342
movq %r12, %rdi
pushq $0x4
popq %rsi
callq 0xe6a4a
movq %rax, %r14
jmp 0x94348
addb %al, %r14b
decb %r14b
movq 0x8(%rbp), %rax
movb %r14b, (%rax,%r15)
movq 0x8(%rbp), %rax
addq %r15, %rax
incq %r15
jmp 0x94304
xorl %r14d, %r14d
movl 0x4(%rbp), %ecx
cmpq %rcx, %r14
jae 0x9440d
cmpb $0x0, 0x38(%r13)
jne 0x94414
movq (%rsp), %rdi
pushq $0x4
popq %rsi
callq 0xe6a4a
movq 0x8(%rbp), %rcx
movb %al, (%rcx,%r14)
incq %r14
jmp 0x9435f
movq (%rsp), %rdi
pushq $0x4
popq %rsi
callq 0xe6a4a
movq 0x8(%rbp), %rcx
movb %al, (%rcx)
movq 0x8(%rbp), %rax
pushq $0x1
popq %r15
movl 0x4(%rbp), %ecx
cmpq %rcx, %r15
jae 0x9440d
cmpb $0x0, 0x38(%r13)
jne 0x94414
movb (%rax), %r14b
movq (%rsp), %r12
movq %r12, %rdi
pushq $0x1
popq %r13
movl %r13d, %esi
callq 0xe6a4a
testl %eax, %eax
je 0x943f4
movq %r12, %rdi
movl %r13d, %esi
callq 0xe6a4a
testl %eax, %eax
je 0x943f1
movq %r12, %rdi
pushq $0x4
popq %rsi
callq 0xe6a4a
movq %rax, %r14
jmp 0x943f4
incb %r14b
movq 0x20(%rsp), %r13
movq 0x8(%rbp), %rax
movb %r14b, (%rax,%r15)
movq 0x8(%rbp), %rax
addq %r15, %rax
incq %r15
jmp 0x943a9
cmpb $0x0, 0x38(%r13)
je 0x9445e
movl $0x1, 0x18(%r13)
movb $0x1, 0x38(%r13)
movq 0x30(%rsp), %r12
movq 0x8(%rbp), %rsi
movq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0xded32
andq $0x0, 0x8(%rbp)
movl 0x118(%rsp), %esi
movq %r14, %rdi
callq 0xdebb7
incq %r12
cmpb $0x0, 0x38(%r13)
je 0x94212
jmp 0x94170
xorl %r15d, %r15d
movq 0x30(%rsp), %r12
movl %ecx, %eax
cmpq %rax, %r15
jae 0x944b3
movq 0x8(%rbp), %rax
movzbl (%rax,%r15), %ecx
movq 0x8(%rsp), %r14
movq %r14, %rdi
leaq 0xa9d31(%rip), %rsi     # 0x13e1b6
movl %r15d, %edx
xorl %eax, %eax
callq 0xde9f1
movq 0x8(%rbp), %rax
movq 0x10(%rbp), %rcx
movq 0x10(%rcx), %rsi
movzbl (%rax,%r15), %ecx
movq %r14, %rdi
movl %r15d, %edx
callq 0xf82ee
incq %r15
movl 0x4(%rbp), %ecx
jmp 0x94466
movq 0x10(%rbp), %rax
movq 0x8(%rax), %rsi
movq 0x10(%rax), %rdx
movq 0x8(%rsp), %r14
movq %r14, %rdi
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0xf8362
testl %eax, %eax
je 0x944f2
cmpl $0x4, (%r14)
jl 0x94426
movq 0x10(%rbp), %rsi
movq 0x8(%rsp), %rdi
callq 0xf811c
jmp 0x94426
movq 0x50(%r13), %rsi
movq 0x58(%r13), %rdx
movq %r14, %rdi
leaq 0x8fb7f(%rip), %rcx     # 0x124083
xorl %eax, %eax
callq 0xee823
movl $0x1, 0x18(%r13)
movb $0x1, 0x38(%r13)
jmp 0x94426
leaq 0x8fb8e(%rip), %rdx     # 0x1240b2
leaq 0x8fb8d(%rip), %rcx     # 0x1240b8
leaq 0xb0(%rsp), %rsi
movq %rbx, %rdi
movq %rbp, %r8
xorl %eax, %eax
callq 0xee823
movb $0x1, 0xb4(%rsp)
movq 0x18(%rsp), %rax
subq 0x80(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq %rbx, %rdi
movq %r15, %rsi
callq 0xef395
movl 0x74(%rsp), %esi
movq %rbx, %rdi
callq 0xdebb7
movq 0x28(%rsp), %r13
movq 0x10(%rsp), %r15
movq 0x68(%rsp), %r14
movq 0x98(%rsp), %rdi
callq 0xe58e8
cmpl $0x0, 0xb0(%rsp)
je 0x9460b
leaq 0xb0(%rsp), %rsi
movq %rbx, %rdi
callq 0xee7bc
leaq 0x7374e(%rip), %rsi     # 0x107cff
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xdf2a5
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0xdeba7
movq %r14, %rdi
callq 0xe5591
movq %rbx, %rdi
movq %r15, %rsi
callq 0xdfd24
movq 0x30(%r13), %rdi
callq 0xeaf3c
movq 0x48(%r13), %rdi
callq 0xe5591
movq %rbx, %rdi
movq %r13, %rsi
callq 0xded32
addq $0x128, %rsp            # imm = 0x128
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpb $0x0, 0xb4(%rsp)
je 0x94632
movq 0xb8(%rsp), %rdx
movq 0x18(%r14), %rcx
leaq 0x7fe37(%rip), %rsi     # 0x11445f
movq %rbx, %rdi
xorl %eax, %eax
callq 0xde896
cmpb $0x0, 0x20(%r13)
je 0x945be
movq 0x18(%r14), %rcx
movq 0x28(%r13), %rdx
cmpq %rdx, %rcx
je 0x945be
leaq 0x8f9ab(%rip), %rsi     # 0x123ffc
movq %rbx, %rdi
xorl %eax, %eax
callq 0xdf05a
jmp 0x945be
movq %rbx, %rdi
movl $0x1000, %esi           # imm = 0x1000
callq 0xef27c
movq 0x20(%rsp), %r13
movq %rax, 0x60(%r13)
leaq 0x6b8(%rip), %rcx       # 0x94d35
movq %rcx, 0x8(%rax)
movq %r13, (%rax)
pushq $0x20
popq %rsi
movq %rax, %rdi
callq 0xef2e9
movq (%r13), %r14
leaq 0x40(%rsp), %rsi
pushq $0x20
popq %rdx
movq (%rsp), %rdi
callq 0xe6b25
leaq 0x8f9f9(%rip), %rsi     # 0x1240a4
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xde896
leaq 0xb0(%r13), %rax
movq %rax, 0x8(%rsp)
leaq 0x98(%r13), %rax
movq %rax, 0x30(%rsp)
leaq 0x80(%r13), %rbp
movq %r13, %r12
addq $0xc8, %r12
movq 0x38(%rsp), %r15
movq %r13, %rdi
callq 0x94d64
testl %eax, %eax
jne 0x947aa
cmpb $0x0, 0x38(%r13)
jne 0x947aa
movq %r13, %rdi
movq %r15, %rsi
callq 0x94d7f
cmpb $0x0, 0x38(%r13)
jne 0x947aa
movl %eax, %r14d
movq %r13, %rdi
testb %al, %al
jne 0x94767
movq 0x30(%rsp), %rsi
callq 0x94d7f
cmpb $0x0, 0x38(%r13)
jne 0x947aa
movzbl %al, %r14d
cmpb $0x1f, %r14b
cmovneq %rbp, %r15
incl %r14d
subl $0x1, %r14d
jb 0x946e6
movq %r13, %rdi
movq %r12, %rsi
callq 0x94d7f
cmpb $0x0, 0x38(%r13)
jne 0x947aa
movq 0x60(%r13), %rdi
movzbl %al, %esi
callq 0xef336
jmp 0x94741
movq 0x8(%rsp), %rsi
callq 0x94d7f
movl %eax, %r15d
movq (%rsp), %rdi
pushq $0x6
popq %rsi
callq 0xe6a4a
cmpb $0x0, 0x38(%r13)
jne 0x947aa
movzbl %r15b, %ecx
movzbl %r14b, %edx
addl $0x2, %edx
movq 0x60(%r13), %rdi
movl 0x10(%rdi), %esi
shll $0x6, %ecx
orl %eax, %ecx
subl %ecx, %esi
callq 0xef363
jmp 0x946e1
cmpl $0x0, 0x18(%r13)
movq 0x10(%rsp), %r15
jne 0x94187
jmp 0x9419b