Function at 0x180040340
Capabilities:
Compress data via zlib inflate or deflate

Disassembly:
mov rax, rsp
mov qword [rax + 8], rcx
push r14
push r15
sub rsp, 0x68
mov r15, r8
mov r8, rcx
test rcx, rcx
je 0x180041478
mov r14, qword [rcx + 0x28]
test r14, r14
je 0x180041478
mov qword [rax + 0x10], rbx
xor r9d, r9d
mov qword [rax + 0x18], rbp
mov qword [rcx + 0x20], r9
mov qword [rax + 0x20], rsi
mov dword [r14], 0xb
mov dword [r14 + 4], r9d
mov dword [r14 + 0x30], r9d
mov r10, qword [rcx]
mov qword [rax - 0x18], rdi
mov qword [rax - 0x20], r12
mov qword [rax - 0x28], r13
mov qword [rax - 0x40], r10
test r10, r10
je 0x1800403aa
mov edi, dword [rcx + 8]
jmp 0x1800403ad
mov edi, r9d
mov eax, dword [r14]
mov r13, qword [r14 + 0x38]
mov ebx, dword [r14 + 0x2c]
sub eax, 0xb
mov r12d, r9d
mov esi, r9d
mov qword [rsp + 0x40], r13
mov dword [rsp + 0x30], ebx
cmp eax, 0x10
ja case.0x1800403fd.1
lea r11, [0x180000000]
lea rdx, str.invalid_block_type
mov ebp, 1
nop word [rax + rax]
cdqe
mov ecx, dword [r11 + rax*4 + 0x41488]
add rcx, r11
jmp rcx
cmp dword [r14 + 4], 0
je 0x180040421
mov ecx, esi
mov dword [r14], 0x1a
mov r10, qword [rsp + 0x38]
and ecx, 7
shr r12d, cl
sub esi, ecx
jmp 0x180041307
cmp esi, 3
jae 0x180040475
test edi, edi
jne 0x180040446
mov rax, qword [r15]
lea rdx, [rsp + 0x38]
mov rcx, r15
call qword [rax]
mov edi, eax
test eax, eax
je 0x18004132e
mov r10, qword [rsp + 0x38]
movzx edx, byte [r10]
mov ecx, esi
inc r10
shl edx, cl
add esi, 8
dec edi
add r12d, edx
mov qword [rsp + 0x38], r10
cmp esi, 3
jb 0x180040426
mov r8, qword [rsp + 0x80]
xor r9d, r9d
lea rdx, str.invalid_block_type
mov eax, r12d
shr r12d, 1
dec esi
and eax, 1
mov dword [r14 + 4], eax
mov eax, r12d
and eax, 3
je 0x180040511
sub eax, 1
je 0x1800404d3
sub eax, 1
je 0x1800404bb
cmp eax, 1
jne 0x180040518
mov qword [r8 + 0x20], rdx
shr r12d, 2
mov dword [r14], 0x1b
mov r10, qword [rsp + 0x38]
add esi, 0xfffffffe
jmp 0x180041307
mov dword [r14], 0xf
mov r10, qword [rsp + 0x38]
shr r12d, 2
add esi, 0xfffffffe
jmp 0x180041307
lea rax, [0x1800dc040]
mov dword [r14 + 0x68], 9
mov dword [r14 + 0x6c], 5
mov qword [r14 + 0x58], rax
lea rax, [0x1800dd1c0]
mov dword [r14], 0x12
shr r12d, 2
mov qword [r14 + 0x60], rax
mov r10, qword [rsp + 0x38]
add esi, 0xfffffffe
jmp 0x180041307
mov dword [r14], 0xd
mov r10, qword [rsp + 0x38]
shr r12d, 2
add esi, 0xfffffffe
jmp 0x180041307
mov ecx, esi
and ecx, 7
sub esi, ecx
shr r12d, cl
cmp esi, 0x20
jae 0x180040580
test edi, edi
jne 0x180040558
mov rax, qword [r15]
lea rdx, [rsp + 0x38]
mov rcx, r15
call qword [rax]
mov edi, eax
test eax, eax
je 0x18004133a
mov r10, qword [rsp + 0x38]
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
add esi, 8
dec edi
add r12d, eax
mov qword [rsp + 0x38], r10
cmp esi, 0x20
jb 0x180040538
mov r8, qword [rsp + 0x80]
xor r9d, r9d
mov eax, r12d
movzx ecx, r12w
not eax
shr eax, 0x10
cmp ecx, eax
je 0x1800405ac
lea rax, str.invalid_stored_block_lengths
mov qword [r8 + 0x20], rax
mov dword [r14], 0x1b
mov r10, qword [rsp + 0x38]
jmp 0x180041307
mov dword [r14 + 0x48], ecx
mov r12d, r9d
mov esi, r9d
test ecx, ecx
je 0x180040654
nop
mov ebp, dword [r14 + 0x48]
test edi, edi
jne 0x1800405df
mov rax, qword [r15]
lea rdx, [rsp + 0x38]
mov rcx, r15
call qword [rax]
mov edi, eax
test eax, eax
je 0x180041346
test ebx, ebx
jne 0x18004060f
mov ebx, dword [r14 + 0x2c]
mov rcx, qword [rsp + 0xa0]
mov r13, qword [r14 + 0x38]
mov dword [r14 + 0x30], ebx
mov rax, qword [rcx]
mov r8d, ebx
mov rdx, r13
mov dword [rsp + 0x30], ebx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test eax, eax
jne 0x180041352
mov rdx, qword [rsp + 0x38]
cmp ebp, edi
mov rcx, r13
cmova ebp, edi
cmp ebp, ebx
cmova ebp, ebx
mov r8d, ebp
mov ebx, ebp
call fcn.180063290
add qword [rsp + 0x38], rbx
sub dword [rsp + 0x30], ebp
sub dword [r14 + 0x48], ebp
add r13, rbx
mov ebx, dword [rsp + 0x30]
sub edi, ebp
cmp dword [r14 + 0x48], 0
mov qword [rsp + 0x40], r13
jne 0x1800405c0
xor r9d, r9d
mov r8, qword [rsp + 0x80]
mov dword [r14], 0xb
mov r10, qword [rsp + 0x38]
jmp 0x180041307
cmp esi, 0xe
jae 0x1800406c1
test edi, edi
jne 0x180040692
mov rax, qword [r15]
lea rdx, [rsp + 0x38]
mov rcx, r15
call qword [rax]
mov edi, eax
test eax, eax
je 0x180041361
mov r10, qword [rsp + 0x38]
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
add esi, 8
dec edi
add r12d, eax
mov qword [rsp + 0x38], r10
cmp esi, 0xe
jb 0x180040672
mov r8, qword [rsp + 0x80]
xor r9d, r9d
lea r11, [0x180000000]
mov eax, r12d
shr r12d, 5
add esi, 0xfffffff2
mov ecx, r12d
shr r12d, 5
and eax, 0x1f
mov edx, r12d
and ecx, 0x1f
add eax, 0x101
and edx, 0xf
inc ecx
shr r12d, 4
add edx, 4
mov dword [r14 + 0x74], eax
mov dword [r14 + 0x78], ecx
mov dword [r14 + 0x70], edx
cmp eax, 0x11e
ja 0x180040d12
cmp ecx, 0x1e
ja 0x180040d12
mov dword [r14 + 0x7c], r9d
test edx, edx
je 0x18004079b
cmp esi, 3
jae 0x180040765
mov rdx, qword [rsp + 0x38]
test edi, edi
jne 0x180040742
mov rax, qword [r15]
lea rdx, [rsp + 0x38]
mov rcx, r15
call qword [rax]
mov edi, eax
test eax, eax
je 0x18004136d
mov rdx, qword [rsp + 0x38]
movzx eax, byte [rdx]
mov ecx, esi
inc rdx
shl eax, cl
add esi, 8
dec edi
add r12d, eax
mov qword [rsp + 0x38], rdx
cmp esi, 3
jb 0x180040722
lea r11, [0x180000000]
mov eax, dword [r14 + 0x7c]
movzx ecx, r12w
add esi, 0xfffffffd
movzx eax, word [r11 + rax*2 + 0xdd240]
and cx, 7
shr r12d, 3
mov word [r14 + rax*2 + 0x88], cx
inc dword [r14 + 0x7c]
mov eax, dword [r14 + 0x70]
cmp dword [r14 + 0x7c], eax
jb 0x180040718
xor r9d, r9d
cmp dword [r14 + 0x7c], 0x13
jae 0x1800407c3
mov eax, dword [r14 + 0x7c]
movzx eax, word [r11 + rax*2 + 0xdd240]
mov word [r14 + rax*2 + 0x88], r9w
inc dword [r14 + 0x7c]
cmp dword [r14 + 0x7c], 0x13
jb 0x1800407a2
lea rbx, [r14 + 0x80]
lea r13, [r14 + 0x68]
lea rax, [r14 + 0x308]
lea rbp, [r14 + 0x548]
mov qword [rsp + 0x28], rax
lea rdx, [r14 + 0x88]
mov r9, rbx
mov r8d, 0x13
xor ecx, ecx
mov qword [rbx], rbp
mov qword [r14 + 0x58], rbp
mov dword [r13], 7
mov qword [rsp + 0x20], r13
call fcn.18005aa60
test eax, eax
je 0x180040840
mov r8, qword [rsp + 0x80]
mov r13, qword [rsp + 0x40]
mov ebx, dword [rsp + 0x30]
lea rax, str.invalid_code_lengths_set
xor r9d, r9d
mov qword [r8 + 0x20], rax
mov dword [r14], 0x1b
mov r10, qword [rsp + 0x38]
jmp 0x180041307
mov eax, dword [r14 + 0x78]
mov dword [r14 + 0x7c], 0
add eax, dword [r14 + 0x74]
je 0x180040b8e
mov r10, qword [rsp + 0x38]
nop dword [rax + rax]
mov ecx, dword [r13]
mov ebx, 1
mov eax, ebx
shl eax, cl
lea ecx, [rax - 1]
mov eax, r12d
and rcx, rax
mov rax, qword [r14 + 0x58]
mov eax, dword [rax + rcx*4]
mov ecx, eax
mov dword [rsp + 0x34], eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x1800408f0
nop dword [rax]
test edi, edi
jne 0x1800408b0
mov rax, qword [r15]
lea rdx, [rsp + 0x38]
mov rcx, r15
call qword [rax]
mov edi, eax
test eax, eax
je 0x180041379
mov r10, qword [rsp + 0x38]
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
mov qword [rsp + 0x38], r10
mov ecx, dword [r13]
add r12d, eax
mov eax, ebx
add esi, 8
shl eax, cl
dec edi
lea ecx, [rax - 1]
mov eax, r12d
and rcx, rax
mov rax, qword [r14 + 0x58]
mov eax, dword [rax + rcx*4]
mov ecx, eax
mov dword [rsp + 0x34], eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x180040890
mov ecx, eax
shr ecx, 0x10
cmp cx, 0x10
jae 0x180040977
movzx ebx, byte [rsp + 0x35]
shr eax, 8
movzx ecx, al
cmp esi, ecx
jae 0x18004094f
nop word [rax + rax]
test edi, edi
jne 0x180040930
mov rax, qword [r15]
lea rdx, [rsp + 0x38]
mov rcx, r15
call qword [rax]
mov edi, eax
test eax, eax
je 0x180041385
mov r10, qword [rsp + 0x38]
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
add esi, 8
dec edi
add r12d, eax
movzx eax, bl
mov qword [rsp + 0x38], r10
cmp esi, eax
jb 0x180040910
movzx eax, word [rsp + 0x36]
movzx ecx, bl
shr r12d, cl
sub esi, ecx
mov ecx, dword [r14 + 0x7c]
mov word [r14 + rcx*2 + 0x88], ax
inc dword [r14 + 0x7c]
mov r10, qword [rsp + 0x38]
jmp 0x180040b0c
movzx eax, word [rsp + 0x36]
cmp ax, 0x10
jne 0x1800409ff
movzx ebp, byte [rsp + 0x35]
lea ebx, [rbp + 2]
cmp esi, ebx
jae 0x1800409cc
nop
test edi, edi
jne 0x1800409b0
mov rax, qword [r15]
lea rdx, [rsp + 0x38]
mov rcx, r15
call qword [rax]
mov edi, eax
test eax, eax
je 0x180041391
mov r10, qword [rsp + 0x38]
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
add esi, 8
dec edi
add r12d, eax
mov qword [rsp + 0x38], r10
cmp esi, ebx
jb 0x180040990
mov eax, dword [r14 + 0x7c]
mov ecx, ebp
sub esi, ebp
shr r12d, cl
test eax, eax
je 0x180040b2e
mov edx, r12d
dec eax
shr r12d, 2
movzx r8d, word [r14 + rax*2 + 0x88]
and edx, 3
add edx, 3
add esi, 0xfffffffe
jmp 0x180040ada
cmp ax, 0x11
jne 0x180040a6d
movzx ebp, byte [rsp + 0x35]
lea ebx, [rbp + 3]
cmp esi, ebx
jae 0x180040a4d
test edi, edi
jne 0x180040a31
mov rax, qword [r15]
lea rdx, [rsp + 0x38]
mov rcx, r15
call qword [rax]
mov edi, eax
test eax, eax
je 0x18004139d
mov r10, qword [rsp + 0x38]
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
add esi, 8
dec edi
add r12d, eax
mov qword [rsp + 0x38], r10
cmp esi, ebx
jb 0x180040a11
mov ecx, ebp
mov eax, 0xfffffffd
xor r8d, r8d
shr r12d, cl
sub eax, ebp
mov edx, r12d
shr r12d, 3
and edx, 7
add edx, 3
add esi, eax
jmp 0x180040ada
movzx ebp, byte [rsp + 0x35]
lea ebx, [rbp + 7]
cmp esi, ebx
jae 0x180040abc
nop dword [rax]
test edi, edi
jne 0x180040aa0
mov rax, qword [r15]
lea rdx, [rsp + 0x38]
mov rcx, r15
call qword [rax]
mov edi, eax
test eax, eax
je 0x1800413a9
mov r10, qword [rsp + 0x38]
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
add esi, 8
dec edi
add r12d, eax
mov qword [rsp + 0x38], r10
cmp esi, ebx
jb 0x180040a80
mov ecx, ebp
mov eax, 0xfffffff9
xor r8d, r8d
shr r12d, cl
sub eax, ebp
mov edx, r12d
shr r12d, 7
and edx, 0x7f
add edx, 0xb
add esi, eax
mov eax, dword [r14 + 0x7c]
lea ecx, [rdx + rax]
mov eax, dword [r14 + 0x78]
add eax, dword [r14 + 0x74]
cmp ecx, eax
ja 0x180040b5e
test edx, edx
je 0x180040b0c
mov eax, dword [r14 + 0x7c]
mov word [r14 + rax*2 + 0x88], r8w
inc dword [r14 + 0x7c]
add edx, 0xffffffff
jne 0x180040af1
mov r10, qword [rsp + 0x38]
mov eax, dword [r14 + 0x78]
add eax, dword [r14 + 0x74]
cmp dword [r14 + 0x7c], eax
jb 0x180040860
lea rbx, [r14 + 0x80]
lea rbp, [r14 + 0x548]
jmp 0x180040b93
mov r8, qword [rsp + 0x80]
mov r13, qword [rsp + 0x40]
mov ebx, dword [rsp + 0x30]
lea rax, str.invalid_bit_length_repeat
xor r9d, r9d
mov qword [r8 + 0x20], rax
mov dword [r14], 0x1b
mov r10, qword [rsp + 0x38]
jmp 0x180041307
mov r8, qword [rsp + 0x80]
mov r13, qword [rsp + 0x40]
mov ebx, dword [rsp + 0x30]
lea rax, str.invalid_bit_length_repeat
xor r9d, r9d
mov qword [r8 + 0x20], rax
mov dword [r14], 0x1b
mov r10, qword [rsp + 0x38]
jmp 0x180041307
mov r10, qword [rsp + 0x38]
cmp dword [r14], 0x1b
je 0x1800412f3
mov r8d, dword [r14 + 0x74]
mov qword [rbx], rbp
mov qword [r14 + 0x58], rbp
lea rbp, [r14 + 0x308]
lea rdx, [r14 + 0x88]
mov r9, rbx
mov ecx, 1
mov qword [rsp + 0x28], rbp
mov dword [r13], 9
mov qword [rsp + 0x20], r13
call fcn.18005aa60
test eax, eax
je 0x180040c09
mov r8, qword [rsp + 0x80]
mov r13, qword [rsp + 0x40]
mov ebx, dword [rsp + 0x30]
lea rax, str.invalid_literal_lengths_set
xor r9d, r9d
mov qword [r8 + 0x20], rax
mov dword [r14], 0x1b
mov r10, qword [rsp + 0x38]
jmp 0x180041307
mov rax, qword [rbx]
mov r8d, dword [r14 + 0x78]
lea rcx, [r14 + 0x6c]
mov qword [r14 + 0x60], rax
mov eax, dword [r14 + 0x74]
mov dword [rcx], 6
mov qword [rsp + 0x28], rbp
mov qword [rsp + 0x20], rcx
lea rdx, [r14 + rax*2 + 0x88]
mov r9, rbx
mov ecx, 2
call fcn.18005aa60
test eax, eax
je 0x180040c75
mov r8, qword [rsp + 0x80]
mov r13, qword [rsp + 0x40]
mov ebx, dword [rsp + 0x30]
lea rax, str.invalid_distances_set
xor r9d, r9d
mov qword [r8 + 0x20], rax
mov dword [r14], 0x1b
mov r10, qword [rsp + 0x38]
jmp 0x180041307
mov r13, qword [rsp + 0x40]
mov ebx, dword [rsp + 0x30]
mov r8, qword [rsp + 0x80]
mov dword [r14], 0x12
mov r10, qword [rsp + 0x38]
mov ebp, 1
cmp edi, 6
jb 0x180040d2e
cmp ebx, 0x102
jb 0x180040d2e
mov qword [r8 + 0x10], r13
mov dword [r8 + 0x18], ebx
mov qword [r8], r10
mov dword [r8 + 8], edi
mov edx, dword [r14 + 0x2c]
mov dword [r14 + 0x40], r12d
mov dword [r14 + 0x44], esi
cmp dword [r14 + 0x30], edx
jae 0x180040cd5
mov eax, edx
sub eax, ebx
mov dword [r14 + 0x30], eax
mov rcx, r8
call fcn.180042cb0
mov r8, qword [rsp + 0x80]
xor r9d, r9d
mov r10, qword [r8]
mov r13, qword [r8 + 0x10]
mov ebx, dword [r8 + 0x18]
mov edi, dword [r8 + 8]
mov qword [rsp + 0x38], r10
mov r12d, dword [r14 + 0x40]
mov esi, dword [r14 + 0x44]
mov qword [rsp + 0x40], r13
mov dword [rsp + 0x30], ebx
jmp 0x180041307
lea rax, str.too_many_length_or_distance_symbols
mov qword [r8 + 0x20], rax
mov dword [r14], 0x1b
mov r10, qword [rsp + 0x38]
jmp 0x180041307
mov ecx, dword [r14 + 0x68]
mov eax, ebp
shl eax, cl
lea ecx, [rax - 1]
mov eax, r12d
and rcx, rax
mov rax, qword [r14 + 0x58]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x180040dae
test edi, edi
jne 0x180040d72
mov rax, qword [r15]
lea rdx, [rsp + 0x38]
mov rcx, r15
call qword [rax]
mov edi, eax
test eax, eax
je 0x1800413b5
mov r10, qword [rsp + 0x38]
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
mov qword [rsp + 0x38], r10
mov ecx, dword [r14 + 0x68]
add r12d, eax
mov eax, ebp
add esi, 8
shl eax, cl
dec edi
lea ecx, [rax - 1]
mov eax, r12d
and rcx, rax
mov rax, qword [r14 + 0x58]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x180040d52
test al, al
je 0x180040e8c
test al, 0xf0
jne 0x180040e8c
mov r9d, eax
movzx ecx, al
mov dword [rsp + 0x34], eax
movzx r13d, byte [rsp + 0x35]
shr r9d, 8
mov ebx, eax
shr eax, 0x10
movzx edx, r9b
mov r8d, ebp
add ecx, edx
shl r8d, cl
mov ecx, edx
dec r8d
and r8d, r12d
shr r8d, cl
add r8d, eax
mov rax, qword [r14 + 0x58]
mov eax, dword [rax + r8*4]
mov ecx, eax
shr ecx, 8
movzx edx, cl
movzx ecx, r9b
add edx, ecx
cmp edx, esi
jbe 0x180040e83
movzx ebp, word [rsp + 0x36]
test edi, edi
jne 0x180040e30
mov rax, qword [r15]
lea rdx, [rsp + 0x38]
mov rcx, r15
call qword [rax]
mov edi, eax
test eax, eax
je 0x1800413be
mov r10, qword [rsp + 0x38]
movzx eax, byte [r10]
mov ecx, esi
movzx r8d, r13b
shl eax, cl
mov edx, 1
inc r10
add r12d, eax
movzx eax, bp
mov qword [rsp + 0x38], r10
movzx ecx, bl
add esi, 8
dec edi
add ecx, r8d
shl edx, cl
mov ecx, r8d
dec edx
and edx, r12d
shr edx, cl
add edx, eax
mov rax, qword [r14 + 0x58]
mov eax, dword [rax + rdx*4]
mov ecx, eax
shr ecx, 8
movzx edx, cl
add edx, r8d
cmp edx, esi
ja 0x180040e10
mov ebp, 1
movzx ecx, r13b
shr r12d, cl
sub esi, ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
shr r12d, cl
sub esi, ecx
mov ecx, eax
shr ecx, 0x10
mov dword [r14 + 0x48], ecx
test al, al
jne 0x180040f19
mov ebx, dword [rsp + 0x30]
test ebx, ebx
jne 0x180040ee1
mov ebx, dword [r14 + 0x2c]
mov rcx, qword [rsp + 0xa0]
mov r13, qword [r14 + 0x38]
mov dword [r14 + 0x30], ebx
mov rax, qword [rcx]
mov r8d, ebx
mov rdx, r13
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test eax, eax
je 0x180040ee6
mov r10, qword [rsp + 0x38]
mov ebp, 0xfffffffb
jmp 0x180041438
mov r13, qword [rsp + 0x40]
movzx eax, byte [r14 + 0x48]
mov r8, qword [rsp + 0x80]
inc r13
mov byte [r13 - 1], al
dec ebx
mov dword [r14], 0x12
mov r10, qword [rsp + 0x38]
mov qword [rsp + 0x40], r13
xor r9d, r9d
mov dword [rsp + 0x30], ebx
jmp 0x180041307
test al, 0x20
je 0x180040f42
mov r13, qword [rsp + 0x40]
mov ebx, dword [rsp + 0x30]
mov r8, qword [rsp + 0x80]
mov dword [r14], 0xb
mov r10, qword [rsp + 0x38]
xor r9d, r9d
jmp 0x180041307
test al, 0x40
je 0x180040f76
mov r8, qword [rsp + 0x80]
mov r13, qword [rsp + 0x40]
mov ebx, dword [rsp + 0x30]
lea rax, str.invalid_literal_length_code
xor r9d, r9d
mov qword [r8 + 0x20], rax
mov dword [r14], 0x1b
mov r10, qword [rsp + 0x38]
jmp 0x180041307
movzx ecx, al
and ecx, 0xf
mov dword [r14 + 0x50], ecx
je 0x180040fe3
cmp esi, ecx
jae 0x180040fcd
mov rdx, qword [rsp + 0x38]
nop dword [rax + rax]
test edi, edi
jne 0x180040fb0
mov rax, qword [r15]
lea rdx, [rsp + 0x38]
mov rcx, r15
call qword [rax]
mov edi, eax
test eax, eax
je 0x1800413c7
mov rdx, qword [rsp + 0x38]
movzx eax, byte [rdx]
mov ecx, esi
inc rdx
shl eax, cl
add esi, 8
dec edi
add r12d, eax
mov qword [rsp + 0x38], rdx
cmp esi, dword [r14 + 0x50]
jb 0x180040f90
mov ecx, dword [r14 + 0x50]
mov eax, ebp
shl eax, cl
dec eax
and eax, r12d
shr r12d, cl
add dword [r14 + 0x48], eax
sub esi, ecx
mov ecx, dword [r14 + 0x6c]
mov eax, ebp
shl eax, cl
lea ecx, [rax - 1]
mov eax, r12d
and rcx, rax
mov rax, qword [r14 + 0x60]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x18004106e
mov r10, qword [rsp + 0x38]
nop dword [rax]
test edi, edi
jne 0x180041030
mov rax, qword [r15]
lea rdx, [rsp + 0x38]
mov rcx, r15
call qword [rax]
mov edi, eax
test eax, eax
je 0x1800413d0
mov r10, qword [rsp + 0x38]
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
mov qword [rsp + 0x38], r10
mov ecx, dword [r14 + 0x6c]
add r12d, eax
mov eax, ebp
add esi, 8
shl eax, cl
dec edi
lea ecx, [rax - 1]
mov eax, r12d
and rcx, rax
mov rax, qword [r14 + 0x60]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x180041010
jmp 0x180041073
mov r10, qword [rsp + 0x38]
test al, 0xf0
jne 0x18004114c
mov r9d, eax
movzx ecx, al
mov dword [rsp + 0x34], eax
movzx r13d, byte [rsp + 0x35]
shr r9d, 8
mov ebx, eax
shr eax, 0x10
movzx edx, r9b
mov r8d, ebp
add ecx, edx
shl r8d, cl
mov ecx, edx
dec r8d
and r8d, r12d
shr r8d, cl
add r8d, eax
mov rax, qword [r14 + 0x60]
mov eax, dword [rax + r8*4]
mov ecx, eax
shr ecx, 8
movzx edx, cl
movzx ecx, r9b
add edx, ecx
cmp edx, esi
jbe 0x180041143
movzx ebp, word [rsp + 0x36]
nop dword [rax]
test edi, edi
jne 0x1800410f0
mov rax, qword [r15]
lea rdx, [rsp + 0x38]
mov rcx, r15
call qword [rax]
mov edi, eax
test eax, eax
je 0x1800413d9
mov r10, qword [rsp + 0x38]
movzx eax, byte [r10]
mov ecx, esi
movzx r8d, r13b
shl eax, cl
mov edx, 1
inc r10
add r12d, eax
movzx eax, bp
mov qword [rsp + 0x38], r10
movzx ecx, bl
add esi, 8
dec edi
add ecx, r8d
shl edx, cl
mov ecx, r8d
dec edx
and edx, r12d
shr edx, cl
add edx, eax
mov rax, qword [r14 + 0x60]
mov eax, dword [rax + rdx*4]
mov ecx, eax
shr ecx, 8
movzx edx, cl
add edx, r8d
cmp edx, esi
ja 0x1800410d0
mov ebp, 1
movzx ecx, r13b
shr r12d, cl
sub esi, ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
shr r12d, cl
sub esi, ecx
test al, 0x40
je 0x18004118d
mov r8, qword [rsp + 0x80]
mov r13, qword [rsp + 0x40]
mov ebx, dword [rsp + 0x30]
lea rax, str.invalid_distance_code
xor r9d, r9d
mov qword [r8 + 0x20], rax
mov dword [r14], 0x1b
mov r10, qword [rsp + 0x38]
jmp 0x180041307
mov ecx, eax
shr ecx, 0x10
mov dword [r14 + 0x4c], ecx
movzx ecx, al
and ecx, 0xf
mov dword [r14 + 0x50], ecx
je 0x180041203
cmp esi, ecx
jae 0x1800411ed
mov rdx, qword [rsp + 0x38]
nop dword [rax + rax]
test edi, edi
jne 0x1800411d0
mov rax, qword [r15]
lea rdx, [rsp + 0x38]
mov rcx, r15
call qword [rax]
mov edi, eax
test eax, eax
je 0x1800413e2
mov rdx, qword [rsp + 0x38]
movzx eax, byte [rdx]
mov ecx, esi
inc rdx
shl eax, cl
add esi, 8
dec edi
add r12d, eax
mov qword [rsp + 0x38], rdx
cmp esi, dword [r14 + 0x50]
jb 0x1800411b0
mov ecx, dword [r14 + 0x50]
mov eax, ebp
shl eax, cl
dec eax
and eax, r12d
shr r12d, cl
add dword [r14 + 0x4c], eax
sub esi, ecx
mov ecx, dword [r14 + 0x2c]
mov ebx, dword [rsp + 0x30]
xor r9d, r9d
cmp dword [r14 + 0x30], ecx
mov eax, r9d
cmovb eax, ebx
sub ecx, eax
cmp dword [r14 + 0x4c], ecx
jbe 0x180041249
mov r8, qword [rsp + 0x80]
mov r13, qword [rsp + 0x40]
lea rax, str.invalid_distance_too_far_back
mov qword [r8 + 0x20], rax
mov dword [r14], 0x1b
mov r10, qword [rsp + 0x38]
jmp 0x180041307
mov r13, qword [rsp + 0x40]
nop
test ebx, ebx
jne 0x18004127c
mov ebx, dword [r14 + 0x2c]
mov rcx, qword [rsp + 0xa0]
mov r13, qword [r14 + 0x38]
mov dword [r14 + 0x30], ebx
mov rax, qword [rcx]
mov r8d, ebx
mov rdx, r13
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test eax, eax
jne 0x1800413eb
mov ecx, dword [r14 + 0x4c]
mov eax, dword [r14 + 0x2c]
sub eax, ecx
cmp eax, ebx
jae 0x180041295
mov ecx, eax
mov edx, ebx
add rcx, r13
sub edx, eax
jmp 0x1800412a0
mov rax, rcx
mov rcx, r13
mov edx, ebx
sub rcx, rax
mov eax, dword [r14 + 0x48]
cmp edx, eax
cmova edx, eax
sub eax, edx
sub ebx, edx
mov dword [rsp + 0x30], ebx
mov dword [r14 + 0x48], eax
nop word [rax + rax]
movzx eax, byte [rcx]
inc r13
inc rcx
add edx, 0xffffffff
mov byte [r13 - 1], al
jne 0x1800412c0
mov qword [rsp + 0x40], r13
cmp dword [r14 + 0x48], edx
jne 0x180041250
mov r10, qword [rsp + 0x38]
mov r8, qword [rsp + 0x80]
xor r9d, r9d
jmp 0x180041307
mov r13, qword [rsp + 0x40]
mov ebx, dword [rsp + 0x30]
mov r8, qword [rsp + 0x80]
xor r9d, r9d
mov eax, dword [r14]
sub eax, 0xb
cmp eax, 0x10
ja case.0x1800403fd.1
mov ebp, 1
lea r11, [0x180000000]
lea rdx, str.invalid_block_type
jmp 0x1800403f0
xor r10d, r10d
lea ebp, [r10 - 5]
jmp 0x180041438
xor r10d, r10d
lea ebp, [r10 - 5]
jmp 0x180041438
xor r10d, r10d
lea ebp, [r10 - 5]
jmp 0x180041438
mov r10, qword [rsp + 0x38]
mov ebp, 0xfffffffb
jmp 0x180041438
xor r10d, r10d
lea ebp, [r10 - 5]
jmp 0x180041438
xor r10d, r10d
lea ebp, [r10 - 5]
jmp 0x180041438
xor r10d, r10d
lea ebp, [r10 - 5]
jmp 0x180041438
xor r10d, r10d
lea ebp, [r10 - 5]
jmp 0x180041438
xor r10d, r10d
lea ebp, [r10 - 5]
jmp 0x180041438
xor r10d, r10d
lea ebp, [r10 - 5]
jmp 0x180041438
xor r10d, r10d
lea ebp, [r10 - 5]
jmp 0x180041438
xor r10d, r10d
lea ebp, [r10 - 5]
jmp 0x180041438
xor r10d, r10d
lea ebp, [r10 - 5]
jmp 0x180041438
xor r10d, r10d
lea ebp, [r10 - 5]
jmp 0x180041438
xor r10d, r10d
lea ebp, [r10 - 5]
jmp 0x180041438
xor r10d, r10d
lea ebp, [r10 - 5]
jmp 0x180041438
xor r10d, r10d
lea ebp, [r10 - 5]
jmp 0x180041438
mov r10, qword [rsp + 0x38]
mov ebp, 0xfffffffb
jmp 0x180041438
mov r8d, dword [r14 + 0x2c]
cmp ebx, r8d
jae 0x180041438
mov rcx, qword [rsp + 0xa0]
mov rdx, qword [r14 + 0x38]
sub r8d, ebx
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test eax, eax
je 0x180041425
mov r10, qword [rsp + 0x38]
mov ebp, 0xfffffffb
jmp 0x180041438
mov r10, qword [rsp + 0x38]
jmp 0x180041438
mov ebp, 0xfffffffd
jmp 0x180041438
mov ebp, 0xfffffffe
mov rax, qword [rsp + 0x80]
mov r13, qword [rsp + 0x50]
mov r12, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x98]
mov rbx, qword [rsp + 0x88]
mov dword [rax + 8], edi
mov rdi, qword [rsp + 0x60]
mov qword [rax], r10
mov eax, ebp
mov rbp, qword [rsp + 0x90]
add rsp, 0x68
pop r15
pop r14
ret
mov eax, 0xfffffffe
add rsp, 0x68
pop r15
pop r14
ret