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

Disassembly:
mov rax, rsp
mov qword [rax + 0x20], r9
mov qword [rax + 0x10], rdx
mov qword [rax + 8], rcx
push rbp
push r12
push r13
mov rbp, rsp
sub rsp, 0x60
mov r13, r8
mov r8, rcx
test rcx, rcx
je 0x18003b5c7
mov r12, qword [rcx + 0x28]
test r12, r12
je 0x18003b5c7
mov qword [rax + 0x18], rbx
xor r11d, r11d
mov qword [rax - 0x20], rsi
mov qword [rcx + 0x20], r11
mov qword [r12], reloc.WS2_32.dll_inet_addr
mov dword [r12 + 0x30], r11d
mov r10, qword [rcx]
mov qword [rax - 0x28], rdi
mov qword [rax - 0x30], r14
mov qword [rax - 0x38], r15
mov qword [rbp - 0x30], r10
test r10, r10
je 0x18003a6d0
mov edi, dword [rcx + 8]
jmp 0x18003a6d3
mov edi, r11d
mov rbx, qword [r12 + 0x38]
mov r14d, r11d
mov r9d, dword [r12 + 0x2c]
mov esi, r11d
mov dword [rbp + 0x38], r9d
mov qword [rbp - 0x28], rbx
mov eax, dword [r12]
sub eax, 0xb
cmp eax, 0x10
ja case.0x18003a714.12
lea rdx, [0x180000000]
cdqe
mov r15d, 1
mov ecx, dword [rdx + rax*4 + 0x3b5d8]
add rcx, rdx
jmp rcx
cmp dword [r12 + 4], 0
je 0x18003a736
mov ecx, esi
mov dword [r12], 0x1a
mov r10, qword [rbp - 0x30]
and ecx, 7
shr r14d, cl
sub esi, ecx
jmp 0x18003a6eb
cmp esi, 3
jae 0x18003a786
nop dword [rax + rax]
test edi, edi
jne 0x18003a75f
mov rax, qword [r13]
lea rdx, [rbp - 0x30]
mov rcx, r13
call qword [rax]
mov edi, eax
test eax, eax
je 0x18003b551
mov r10, qword [rbp - 0x30]
movzx eax, byte [r10]
mov ecx, esi
shl eax, cl
inc r10
add r14d, eax
mov qword [rbp - 0x30], r10
dec edi
add esi, 8
cmp esi, 3
jb 0x18003a740
mov r9d, dword [rbp + 0x38]
xor r11d, r11d
mov r8, qword [rbp + 0x20]
mov eax, r14d
shr r14d, 1
and eax, 1
mov dword [r12 + 4], eax
mov eax, r14d
and eax, 3
je 0x18003a830
sub eax, 1
je 0x18003a7ee
sub eax, 1
je 0x18003a7d6
cmp eax, 1
jne 0x18003a838
lea rax, str.invalid_block_type
shr r14d, 2
mov qword [r8 + 0x20], rax
add esi, 0xfffffffd
mov dword [r12], 0x1b
mov r10, qword [rbp - 0x30]
jmp 0x18003a6eb
shr r14d, 2
mov dword [r12], send
add esi, 0xfffffffd
mov r10, qword [rbp - 0x30]
jmp 0x18003a6eb
lea rax, [0x1800d9c00]
shr r14d, 2
mov qword [r12 + 0x58], rax
add esi, 0xfffffffd
lea rax, [0x1800d7010]
mov dword [r12 + 0x68], 9
mov qword [r12 + 0x60], rax
mov dword [r12 + 0x6c], 5
mov dword [r12], socket
mov r10, qword [rbp - 0x30]
jmp 0x18003a6eb
mov dword [r12], send
mov r10, qword [rbp - 0x30]
shr r14d, 2
add esi, 0xfffffffd
jmp 0x18003a6eb
mov ecx, esi
and ecx, 7
shr r14d, cl
sub esi, ecx
cmp esi, 0x20
jae 0x18003a89d
test edi, edi
jne 0x18003a876
mov rax, qword [r13]
lea rdx, [rbp - 0x30]
mov rcx, r13
call qword [rax]
mov edi, eax
test eax, eax
je 0x18003b551
mov r10, qword [rbp - 0x30]
movzx eax, byte [r10]
mov ecx, esi
shl eax, cl
inc r10
add r14d, eax
mov qword [rbp - 0x30], r10
dec edi
add esi, 8
cmp esi, 0x20
jb 0x18003a857
mov r9d, dword [rbp + 0x38]
xor r11d, r11d
mov r8, qword [rbp + 0x20]
mov eax, r14d
movzx ecx, r14w
not eax
shr eax, 0x10
cmp ecx, eax
je 0x18003a8c9
lea rax, str.invalid_stored_block_lengths
mov qword [r8 + 0x20], rax
mov dword [r12], 0x1b
mov r10, qword [rbp - 0x30]
jmp 0x18003a6eb
mov dword [r12 + 0x48], ecx
mov r14d, r11d
mov esi, r11d
test ecx, ecx
je 0x18003a981
nop dword [rax]
mov r15d, dword [r12 + 0x48]
test edi, edi
jne 0x18003a900
mov rax, qword [r13]
lea rdx, [rbp - 0x30]
mov rcx, r13
call qword [rax]
mov edi, eax
test eax, eax
je 0x18003b551
mov ebx, dword [rbp + 0x38]
test ebx, ebx
jne 0x18003a938
mov ebx, dword [r12 + 0x2c]
mov r8d, ebx
mov rcx, qword [r12 + 0x38]
mov r9, qword [rbp + 0x40]
mov rdx, rcx
mov dword [r12 + 0x30], ebx
mov qword [rbp - 0x28], rcx
mov rcx, r9
mov dword [rbp + 0x38], ebx
mov rax, qword [r9]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test eax, eax
jne 0x18003b184
mov rdx, qword [rbp - 0x30]
cmp r15d, edi
mov rcx, qword [rbp - 0x28]
cmova r15d, edi
cmp r15d, ebx
cmova r15d, ebx
mov r8d, r15d
mov ebx, r15d
call fcn.18008b7d0
mov r9d, dword [rbp + 0x38]
sub edi, r15d
add qword [rbp - 0x30], rbx
sub r9d, r15d
add qword [rbp - 0x28], rbx
sub dword [r12 + 0x48], r15d
mov dword [rbp + 0x38], r9d
jne 0x18003a8e0
mov rbx, qword [rbp - 0x28]
xor r11d, r11d
mov r8, qword [rbp + 0x20]
mov dword [r12], reloc.WS2_32.dll_inet_addr
mov r10, qword [rbp - 0x30]
jmp 0x18003a6eb
cmp esi, 0xe
jae 0x18003a9e6
nop dword [rax + rax]
test edi, edi
jne 0x18003a9bf
mov rax, qword [r13]
lea rdx, [rbp - 0x30]
mov rcx, r13
call qword [rax]
mov edi, eax
test eax, eax
je 0x18003b551
mov r10, qword [rbp - 0x30]
movzx eax, byte [r10]
mov ecx, esi
shl eax, cl
inc r10
add r14d, eax
mov qword [rbp - 0x30], r10
dec edi
add esi, 8
cmp esi, 0xe
jb 0x18003a9a0
mov r9d, dword [rbp + 0x38]
xor r11d, r11d
mov r8, qword [rbp + 0x20]
mov eax, r14d
add esi, 0xfffffff2
shr r14d, 5
and eax, 0x1f
mov ecx, r14d
add eax, 0x101
shr r14d, 5
and ecx, 0x1f
mov edx, r14d
mov dword [r12 + 0x74], eax
and edx, 0xf
shr r14d, 4
add edx, 4
inc ecx
mov dword [r12 + 0x78], ecx
mov dword [r12 + 0x70], edx
cmp eax, 0x11e
ja 0x18003afb7
cmp ecx, 0x1e
ja 0x18003afb7
test edx, edx
mov dword [r12 + 0x7c], r11d
lea rdx, [0x180000000]
je 0x18003aacb
cmp esi, 3
jae 0x18003aa92
mov rdx, qword [rbp - 0x30]
test edi, edi
jne 0x18003aa70
mov rax, qword [r13]
lea rdx, [rbp - 0x30]
mov rcx, r13
call qword [rax]
mov edi, eax
test eax, eax
je 0x18003b551
mov rdx, qword [rbp - 0x30]
movzx eax, byte [rdx]
mov ecx, esi
shl eax, cl
inc rdx
add r14d, eax
mov qword [rbp - 0x30], rdx
dec edi
add esi, 8
cmp esi, 3
jb 0x18003aa51
lea rdx, [0x180000000]
mov eax, dword [r12 + 0x7c]
movzx ecx, r14w
and cx, 7
shr r14d, 3
add esi, 0xfffffffd
movzx eax, word [rdx + rax*2 + 0xda400]
mov word [r12 + rax*2 + 0x88], cx
inc dword [r12 + 0x7c]
mov eax, dword [r12 + 0x7c]
cmp eax, dword [r12 + 0x70]
jb 0x18003aa48
xor r11d, r11d
cmp dword [r12 + 0x7c], 0x13
jae 0x18003aaf6
mov eax, dword [r12 + 0x7c]
movzx eax, word [rdx + rax*2 + 0xda400]
mov word [r12 + rax*2 + 0x88], r11w
inc dword [r12 + 0x7c]
cmp dword [r12 + 0x7c], 0x13
jb 0x18003aad3
lea rcx, [r12 + 0x548]
mov dword [r12 + 0x68], 7
mov qword [r12 + 0x80], rcx
lea r15, [r12 + 0x68]
mov qword [r12 + 0x58], rcx
lea rdx, [r12 + 0x88]
lea rcx, [r12 + 0x308]
mov qword [rsp + 0x28], rcx
lea r9, [r12 + 0x80]
xor ecx, ecx
mov qword [rsp + 0x20], r15
lea r8d, [rcx + 0x13]
call fcn.18003cce0
test eax, eax
je 0x18003ab71
lea rax, str.invalid_code_lengths_set
mov r8, qword [rbp + 0x20]
mov r9d, dword [rbp + 0x38]
mov qword [r8 + 0x20], rax
xor r11d, r11d
mov dword [r12], 0x1b
mov r10, qword [rbp - 0x30]
jmp 0x18003a6eb
mov eax, dword [r12 + 0x78]
mov dword [r12 + 0x7c], 0
add eax, dword [r12 + 0x74]
je 0x18003ae3a
nop word [rax + rax]
mov ecx, dword [r15]
mov ebx, 1
mov rdx, qword [rbp - 0x30]
mov eax, ebx
shl eax, cl
lea ecx, [rax - 1]
mov eax, r14d
and rcx, rax
mov rax, qword [r12 + 0x58]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [rbp + 0x28], eax
cmp ecx, esi
jbe 0x18003ac1c
test edi, edi
jne 0x18003abdf
mov rax, qword [r13]
lea rdx, [rbp - 0x30]
mov rcx, r13
call qword [rax]
mov edi, eax
test eax, eax
je 0x18003b551
mov rdx, qword [rbp - 0x30]
movzx eax, byte [rdx]
mov ecx, esi
shl eax, cl
inc rdx
add r14d, eax
mov qword [rbp - 0x30], rdx
mov ecx, dword [r15]
mov eax, ebx
shl eax, cl
dec edi
add esi, 8
lea ecx, [rax - 1]
mov eax, r14d
and rcx, rax
mov rax, qword [r12 + 0x58]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [rbp + 0x28], eax
cmp ecx, esi
ja 0x18003abc0
mov ecx, eax
shr ecx, 0x10
cmp cx, 0x10
jae 0x18003ac94
shr eax, 8
movzx ebx, al
cmp esi, ebx
jae 0x18003ac6a
test edi, edi
jne 0x18003ac50
mov rax, qword [r13]
lea rdx, [rbp - 0x30]
mov rcx, r13
call qword [rax]
mov edi, eax
test eax, eax
je 0x18003b551
mov rdx, qword [rbp - 0x30]
movzx eax, byte [rdx]
mov ecx, esi
shl eax, cl
inc rdx
add r14d, eax
mov qword [rbp - 0x30], rdx
dec edi
add esi, 8
cmp esi, ebx
jb 0x18003ac31
movzx ecx, byte [rbp + 0x29]
movzx eax, word [rbp + 0x2a]
sub esi, ecx
shr r14d, cl
mov ecx, dword [r12 + 0x7c]
mov word [r12 + rcx*2 + 0x88], ax
inc dword [r12 + 0x7c]
mov ecx, dword [r12 + 0x7c]
jmp 0x18003ae24
movzx eax, word [rbp + 0x2a]
movzx r15d, byte [rbp + 0x29]
cmp ax, 0x10
jne 0x18003ad1f
lea ebx, [r15 + 2]
cmp esi, ebx
jae 0x18003ace9
nop dword [rax + rax]
test edi, edi
jne 0x18003accf
mov rax, qword [r13]
lea rdx, [rbp - 0x30]
mov rcx, r13
call qword [rax]
mov edi, eax
test eax, eax
je 0x18003b551
mov rdx, qword [rbp - 0x30]
movzx eax, byte [rdx]
mov ecx, esi
shl eax, cl
inc rdx
add r14d, eax
mov qword [rbp - 0x30], rdx
dec edi
add esi, 8
cmp esi, ebx
jb 0x18003acb0
mov eax, dword [r12 + 0x7c]
mov ecx, r15d
shr r14d, cl
sub esi, r15d
test eax, eax
je 0x18003aea2
mov edx, r14d
dec eax
and edx, 3
shr r14d, 2
add edx, 3
add esi, 0xfffffffe
movzx r8d, word [r12 + rax*2 + 0x88]
jmp 0x18003ade9
cmp ax, 0x11
jne 0x18003ad83
lea ebx, [r15 + 3]
cmp esi, ebx
jae 0x18003ad69
nop dword [rax]
test edi, edi
jne 0x18003ad4f
mov rax, qword [r13]
lea rdx, [rbp - 0x30]
mov rcx, r13
call qword [rax]
mov edi, eax
test eax, eax
je 0x18003b551
mov rdx, qword [rbp - 0x30]
movzx eax, byte [rdx]
mov ecx, esi
shl eax, cl
inc rdx
add r14d, eax
mov qword [rbp - 0x30], rdx
dec edi
add esi, 8
cmp esi, ebx
jb 0x18003ad30
mov ecx, r15d
mov eax, 0xfffffffd
shr r14d, cl
mov edx, r14d
and edx, 7
add edx, 3
shr r14d, 3
jmp 0x18003ade1
lea ebx, [r15 + 7]
cmp esi, ebx
jae 0x18003adc9
nop dword [rax + rax]
test edi, edi
jne 0x18003adaf
mov rax, qword [r13]
lea rdx, [rbp - 0x30]
mov rcx, r13
call qword [rax]
mov edi, eax
test eax, eax
je 0x18003b551
mov rdx, qword [rbp - 0x30]
movzx eax, byte [rdx]
mov ecx, esi
shl eax, cl
inc rdx
add r14d, eax
mov qword [rbp - 0x30], rdx
dec edi
add esi, 8
cmp esi, ebx
jb 0x18003ad90
mov ecx, r15d
mov eax, 0xfffffff9
shr r14d, cl
mov edx, r14d
and edx, 0x7f
add edx, 0xb
shr r14d, 7
xor r8d, r8d
sub eax, r15d
add esi, eax
mov ecx, dword [r12 + 0x7c]
mov eax, dword [r12 + 0x78]
add ecx, edx
add eax, dword [r12 + 0x74]
cmp ecx, eax
ja 0x18003aea2
mov eax, dword [r12 + 0x7c]
mov word [r12 + rax*2 + 0x88], r8w
inc dword [r12 + 0x7c]
mov ecx, dword [r12 + 0x7c]
add edx, 0xffffffff
jne 0x18003ae02
lea r15, [r12 + 0x68]
mov eax, dword [r12 + 0x78]
add eax, dword [r12 + 0x74]
cmp ecx, eax
jb 0x18003ab90
mov rbx, qword [rbp - 0x28]
cmp dword [r12], 0x1b
je 0x18003b53d
mov r8d, dword [r12 + 0x74]
lea rax, [r12 + 0x548]
mov qword [r12 + 0x80], rax
lea r9, [r12 + 0x80]
mov qword [r12 + 0x58], rax
lea rdx, [r12 + 0x88]
lea rax, [r12 + 0x308]
mov dword [r15], 9
mov qword [rsp + 0x28], rax
mov ecx, 1
mov qword [rsp + 0x20], r15
call fcn.18003cce0
test eax, eax
je 0x18003aecd
lea rax, str.invalid_literal_lengths_set
jmp 0x18003ab51
mov r8, qword [rbp + 0x20]
lea rax, str.invalid_bit_length_repeat
mov rbx, qword [rbp - 0x28]
xor r11d, r11d
mov r9d, dword [rbp + 0x38]
mov qword [r8 + 0x20], rax
mov dword [r12], 0x1b
mov r10, qword [rbp - 0x30]
jmp 0x18003a6eb
mov rax, qword [r12 + 0x80]
lea rcx, [r12 + 0x6c]
mov r8d, dword [r12 + 0x78]
lea r9, [r12 + 0x80]
mov qword [r12 + 0x60], rax
mov eax, dword [r12 + 0x74]
add rax, 0x44
mov dword [rcx], 6
lea rdx, [r12 + rax*2]
lea rax, [r12 + 0x308]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rcx
mov ecx, 2
call fcn.18003cce0
mov r8, qword [rbp + 0x20]
mov r9d, dword [rbp + 0x38]
test eax, eax
je 0x18003af33
lea rax, str.invalid_distances_set
jmp 0x18003ab59
mov dword [r12], socket
mov r15d, 1
mov r10, qword [rbp - 0x30]
cmp edi, 6
jb 0x18003afd3
cmp r9d, 0x102
jb 0x18003afd3
mov qword [r8 + 0x10], rbx
mov dword [r8 + 0x18], r9d
mov qword [r8], r10
mov dword [r8 + 8], edi
mov edx, dword [r12 + 0x2c]
mov dword [r12 + 0x40], r14d
mov dword [r12 + 0x44], esi
cmp dword [r12 + 0x30], edx
jae 0x18003af86
mov eax, edx
sub eax, r9d
mov dword [r12 + 0x30], eax
mov rcx, r8
call fcn.18003d280
mov r8, qword [rbp + 0x20]
xor r11d, r11d
mov r10, qword [r8]
mov rbx, qword [r8 + 0x10]
mov r9d, dword [r8 + 0x18]
mov edi, dword [r8 + 8]
mov qword [rbp - 0x30], r10
mov r14d, dword [r12 + 0x40]
mov esi, dword [r12 + 0x44]
jmp 0x18003a6e3
lea rax, str.too_many_length_or_distance_symbols
mov qword [r8 + 0x20], rax
mov dword [r12], 0x1b
mov r10, qword [rbp - 0x30]
jmp 0x18003a6eb
mov ecx, dword [r12 + 0x68]
mov eax, r15d
shl eax, cl
lea ecx, [rax - 1]
mov eax, r14d
and rcx, rax
mov rax, qword [r12 + 0x58]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x18003b05d
nop word [rax + rax]
test edi, edi
jne 0x18003b01f
mov rax, qword [r13]
lea rdx, [rbp - 0x30]
mov rcx, r13
call qword [rax]
mov edi, eax
test eax, eax
je 0x18003b551
mov r10, qword [rbp - 0x30]
movzx eax, byte [r10]
mov ecx, esi
shl eax, cl
inc r10
add r14d, eax
mov qword [rbp - 0x30], r10
mov ecx, dword [r12 + 0x68]
mov eax, r15d
shl eax, cl
dec edi
add esi, 8
lea ecx, [rax - 1]
mov eax, r14d
and rcx, rax
mov rax, qword [r12 + 0x58]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x18003b000
test al, al
je 0x18003b13d
test al, 0xf0
jne 0x18003b13d
mov r9d, eax
movzx ecx, al
mov dword [rbp + 0x28], eax
mov r8d, r15d
movzx r15d, byte [rbp + 0x29]
mov ebx, eax
shr eax, 0x10
shr r9d, 8
movzx edx, r9b
add ecx, edx
shl r8d, cl
mov ecx, edx
dec r8d
and r8d, r14d
shr r8d, cl
add r8d, eax
mov rax, qword [r12 + 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 0x18003b12e
nop dword [rax]
test edi, edi
jne 0x18003b0df
mov rax, qword [r13]
lea rdx, [rbp - 0x30]
mov rcx, r13
call qword [rax]
mov edi, eax
test eax, eax
je 0x18003b551
mov r10, qword [rbp - 0x30]
movzx eax, byte [r10]
mov ecx, esi
shl eax, cl
mov edx, 1
add r14d, eax
movzx r8d, r15b
movzx eax, word [rbp + 0x2a]
inc r10
mov qword [rbp - 0x30], r10
dec edi
movzx ecx, bl
add esi, 8
add ecx, r8d
shl edx, cl
mov ecx, r8d
dec edx
and edx, r14d
shr edx, cl
add edx, eax
mov rax, qword [r12 + 0x58]
mov eax, dword [rax + rdx*4]
mov ecx, eax
shr ecx, 8
movzx edx, cl
add edx, r8d
cmp edx, esi
ja 0x18003b0c0
movzx ecx, r15b
mov r15d, 1
shr r14d, cl
sub esi, ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
shr r14d, cl
sub esi, ecx
mov ecx, eax
shr ecx, 0x10
mov dword [r12 + 0x48], ecx
test al, al
jne 0x18003b1c8
mov r15d, dword [rbp + 0x38]
test r15d, r15d
jne 0x18003b193
mov r15d, dword [r12 + 0x2c]
mov r8d, r15d
mov rcx, qword [rbp + 0x40]
mov rbx, qword [r12 + 0x38]
mov dword [r12 + 0x30], r15d
mov rdx, rbx
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test eax, eax
je 0x18003b197
mov r10, qword [rbp - 0x30]
mov r15d, 0xfffffffb
jmp 0x18003b594
mov rbx, qword [rbp - 0x28]
movzx eax, byte [r12 + 0x48]
dec r15d
mov r8, qword [rbp + 0x20]
mov r9d, r15d
mov byte [rbx], al
inc rbx
mov dword [r12], socket
xor r11d, r11d
mov r10, qword [rbp - 0x30]
mov qword [rbp - 0x28], rbx
mov dword [rbp + 0x38], r15d
jmp 0x18003a6eb
test al, 0x20
je 0x18003b1ec
mov rbx, qword [rbp - 0x28]
xor r11d, r11d
mov r9d, dword [rbp + 0x38]
mov r8, qword [rbp + 0x20]
mov dword [r12], reloc.WS2_32.dll_inet_addr
mov r10, qword [rbp - 0x30]
jmp 0x18003a6eb
test al, 0x40
je 0x18003b200
mov rbx, qword [rbp - 0x28]
lea rax, str.invalid_literal_length_code
jmp 0x18003ab51
movzx ecx, al
and ecx, 0xf
mov dword [r12 + 0x50], ecx
je 0x18003b26a
cmp esi, ecx
jae 0x18003b251
mov rdx, qword [rbp - 0x30]
test edi, edi
jne 0x18003b234
mov rax, qword [r13]
lea rdx, [rbp - 0x30]
mov rcx, r13
call qword [rax]
mov edi, eax
test eax, eax
je 0x18003b551
mov rdx, qword [rbp - 0x30]
movzx eax, byte [rdx]
mov ecx, esi
shl eax, cl
inc rdx
add r14d, eax
mov qword [rbp - 0x30], rdx
dec edi
add esi, 8
cmp esi, dword [r12 + 0x50]
jb 0x18003b215
mov ecx, dword [r12 + 0x50]
mov eax, r15d
shl eax, cl
dec eax
and eax, r14d
shr r14d, cl
add dword [r12 + 0x48], eax
sub esi, ecx
mov ecx, dword [r12 + 0x6c]
mov eax, r15d
mov r10, qword [rbp - 0x30]
shl eax, cl
lea ecx, [rax - 1]
mov eax, r14d
and rcx, rax
mov rax, qword [r12 + 0x60]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x18003b2f2
test edi, edi
jne 0x18003b2b4
mov rax, qword [r13]
lea rdx, [rbp - 0x30]
mov rcx, r13
call qword [rax]
mov edi, eax
test eax, eax
je 0x18003b551
mov r10, qword [rbp - 0x30]
movzx eax, byte [r10]
mov ecx, esi
shl eax, cl
inc r10
add r14d, eax
mov qword [rbp - 0x30], r10
mov ecx, dword [r12 + 0x6c]
mov eax, r15d
shl eax, cl
dec edi
add esi, 8
lea ecx, [rax - 1]
mov eax, r14d
and rcx, rax
mov rax, qword [r12 + 0x60]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x18003b295
test al, 0xf0
jne 0x18003b3d2
mov r9d, eax
movzx ecx, al
shr r9d, 8
mov ebx, eax
movzx edx, r9b
mov r8d, r15d
add ecx, edx
mov dword [rbp + 0x28], eax
shl r8d, cl
mov ecx, edx
dec r8d
shr eax, 0x10
and r8d, r14d
shr r8d, cl
add r8d, eax
mov rax, qword [r12 + 0x60]
mov eax, dword [rax + r8*4]
mov ecx, eax
shr ecx, 8
movzx edx, cl
movzx ecx, r9b
movzx r9d, byte [rbp + 0x29]
add edx, ecx
cmp edx, esi
jbe 0x18003b3c9
movzx r15d, word [rbp + 0x2a]
nop
test edi, edi
jne 0x18003b374
mov rax, qword [r13]
lea rdx, [rbp - 0x30]
mov rcx, r13
call qword [rax]
mov edi, eax
test eax, eax
je 0x18003b551
mov r10, qword [rbp - 0x30]
movzx r9d, byte [rbp + 0x29]
movzx eax, byte [r10]
mov ecx, esi
shl eax, cl
mov edx, 1
add r14d, eax
movzx r8d, r9b
inc r10
movzx eax, r15w
mov qword [rbp - 0x30], r10
dec edi
movzx ecx, bl
add esi, 8
add ecx, r8d
shl edx, cl
mov ecx, r8d
dec edx
and edx, r14d
shr edx, cl
add edx, eax
mov rax, qword [r12 + 0x60]
mov eax, dword [rax + rdx*4]
mov ecx, eax
shr ecx, 8
movzx edx, cl
add edx, r8d
cmp edx, esi
ja 0x18003b350
mov r15d, 1
movzx ecx, r9b
shr r14d, cl
sub esi, ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
shr r14d, cl
sub esi, ecx
test al, 0x40
je 0x18003b3f3
mov rbx, qword [rbp - 0x28]
lea rax, str.invalid_distance_code
jmp 0x18003ab51
mov ecx, eax
shr ecx, 0x10
mov dword [r12 + 0x4c], ecx
movzx ecx, al
and ecx, 0xf
mov dword [r12 + 0x50], ecx
je 0x18003b467
cmp esi, ecx
jae 0x18003b44e
mov rdx, qword [rbp - 0x30]
test edi, edi
jne 0x18003b431
mov rax, qword [r13]
lea rdx, [rbp - 0x30]
mov rcx, r13
call qword [rax]
mov edi, eax
test eax, eax
je 0x18003b551
mov rdx, qword [rbp - 0x30]
movzx eax, byte [rdx]
mov ecx, esi
shl eax, cl
inc rdx
add r14d, eax
mov qword [rbp - 0x30], rdx
dec edi
add esi, 8
cmp esi, dword [r12 + 0x50]
jb 0x18003b412
mov ecx, dword [r12 + 0x50]
mov eax, r15d
shl eax, cl
dec eax
and eax, r14d
shr r14d, cl
add dword [r12 + 0x4c], eax
sub esi, ecx
mov ecx, dword [r12 + 0x2c]
xor r11d, r11d
cmp dword [r12 + 0x30], ecx
mov eax, r11d
mov r15d, dword [rbp + 0x38]
mov rbx, qword [rbp - 0x28]
cmovb eax, r15d
sub ecx, eax
cmp dword [r12 + 0x4c], ecx
jbe 0x18003b4b0
mov r8, qword [rbp + 0x20]
lea rax, str.invalid_distance_too_far_back
mov r9d, r15d
mov qword [r8 + 0x20], rax
mov dword [r12], 0x1b
mov r10, qword [rbp - 0x30]
jmp 0x18003a6eb
test r15d, r15d
jne 0x18003b4dc
mov r15d, dword [r12 + 0x2c]
mov r8d, r15d
mov rcx, qword [rbp + 0x40]
mov rbx, qword [r12 + 0x38]
mov dword [r12 + 0x30], r15d
mov rdx, rbx
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test eax, eax
jne 0x18003b184
mov ecx, dword [r12 + 0x4c]
mov eax, dword [r12 + 0x2c]
sub eax, ecx
cmp eax, r15d
jae 0x18003b4f9
mov edx, eax
mov ecx, r15d
add rdx, rbx
sub ecx, eax
jmp 0x18003b502
mov rdx, rbx
sub rdx, rcx
mov ecx, r15d
cmp ecx, dword [r12 + 0x48]
cmova ecx, dword [r12 + 0x48]
sub dword [r12 + 0x48], ecx
sub r15d, ecx
mov dword [rbp + 0x38], r15d
sub rdx, rbx
nop dword [rax]
movzx eax, byte [rdx + rbx]
mov byte [rbx], al
inc rbx
add ecx, 0xffffffff
jne 0x18003b520
mov qword [rbp - 0x28], rbx
cmp dword [r12 + 0x48], ecx
jne 0x18003b4b0
mov r9d, dword [rbp + 0x38]
xor r11d, r11d
mov r8, qword [rbp + 0x20]
mov r10, qword [rbp - 0x30]
jmp 0x18003a6eb
xor r10d, r10d
lea r15d, [r10 - 5]
jmp 0x18003b594
mov r8d, dword [r12 + 0x2c]
cmp r9d, r8d
jae 0x18003b594
mov rcx, qword [rbp + 0x40]
sub r8d, r9d
mov rdx, qword [r12 + 0x38]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov r10, qword [rbp - 0x30]
test eax, eax
je 0x18003b594
mov r15d, 0xfffffffb
jmp 0x18003b594
mov r15d, 0xfffffffd
jmp 0x18003b594
mov r15d, 0xfffffffe
mov rax, qword [rbp + 0x20]
mov r14, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x58]
mov rbx, qword [rsp + 0x90]
mov dword [rax + 8], edi
mov rdi, qword [rsp + 0x50]
mov qword [rax], r10
mov eax, r15d
mov r15, qword [rsp + 0x40]
add rsp, 0x60
pop r13
pop r12
pop rbp
ret
mov eax, 0xfffffffe
add rsp, 0x60
pop r13
pop r12
pop rbp
ret