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

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
sub esp, 0x30
push esi
test eax, eax
je 0x450281
mov esi, dword [eax + 0x1c]
test esi, esi
je 0x450281
cmp dword [eax + 0xc], 0
je 0x450281
cmp dword [eax], 0
jne 0x44ee36
cmp dword [eax + 4], 0
jne 0x450281
cmp dword [esi], 0xb
jne 0x44ee41
mov dword [esi], 0xc
mov ecx, dword [eax + 0xc]
mov edx, dword [eax]
mov dword [ebp - 0x18], ecx
mov ecx, dword [eax + 0x10]
mov eax, dword [eax + 4]
push ebx
mov ebx, dword [esi + 0x38]
mov dword [ebp - 4], eax
mov dword [ebp - 0x30], eax
mov eax, dword [esi]
push edi
mov edi, dword [esi + 0x3c]
mov dword [ebp - 0x10], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x28], 0
cmp eax, 0x1e
ja case.default.0x44ee78
jmp dword [eax*4 + 0x45028c]
cmp dword [esi + 8], 0
jne 0x44ee90
mov dword [esi], 0xc
jmp 0x4500f7
cmp edi, 0x10
jae 0x44eeb7
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
inc edx
add edi, 8
mov dword [ebp - 8], edx
add ebx, eax
cmp edi, 0x10
jb 0x44ee95
test byte [esi + 8], 2
je 0x44eef9
cmp ebx, 0x8b1f
jne 0x44eef9
push 0
push 0
xor ecx, ecx
call fcn.00450530
push 2
lea ecx, [ebp - 0x14]
mov dword [esi + 0x18], eax
mov word [ebp - 0x14], bx
call fcn.00450550
mov edx, dword [ebp - 8]
add esp, 0xc
xor ebx, ebx
mov dword [esi + 0x18], eax
xor edi, edi
mov dword [esi], 1
jmp 0x4500f7
mov eax, dword [esi + 0x20]
mov dword [esi + 0x10], 0
test eax, eax
je 0x44ef0e
mov dword [eax + 0x30], 0xffffffff
test byte [esi + 8], 1
je 0x44efba
movzx eax, bl
shl eax, 8
mov ecx, ebx
shr ecx, 8
add eax, ecx
xor edx, edx
mov ecx, 0x1f
div ecx
test edx, edx
jne 0x44efba
mov edx, ebx
and dl, 0xf
cmp dl, 8
je 0x44ef52
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 8]
mov dword [eax + 0x18], str.unknown_compression_method
jmp 0x4500f1
mov eax, dword [esi + 0x24]
shr ebx, 4
mov ecx, ebx
and ecx, 0xf
sub edi, 4
add ecx, 8
test eax, eax
jne 0x44efa4
mov dword [esi + 0x24], ecx
mov edx, 1
shl edx, cl
push 0
xor eax, eax
xor ecx, ecx
mov dword [esi + 0x14], edx
call fcn.00452760
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 8]
shr ebx, 8
not ebx
and ebx, 2
or ebx, 9
mov dword [esi + 0x18], eax
mov dword [ecx + 0x30], eax
mov dword [esi], ebx
add esp, 4
xor ebx, ebx
xor edi, edi
jmp 0x4500f7
cmp ecx, eax
jbe 0x44ef6a
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 8]
mov dword [ecx + 0x18], str.invalid_window_size
jmp 0x4500f1
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], str.incorrect_header_check
mov edx, dword [ebp - 8]
jmp 0x4500f1
cmp edi, 0x10
jae 0x44eff3
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
inc edx
add edi, 8
mov dword [ebp - 8], edx
add ebx, eax
cmp edi, 0x10
jb 0x44efd1
mov dword [esi + 0x10], ebx
cmp bl, 8
je 0x44f00a
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.unknown_compression_method
jmp 0x4500f1
test ebx, 0xe000
je 0x44f021
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.unknown_header_flags_set
jmp 0x4500f1
mov eax, dword [esi + 0x20]
test eax, eax
je 0x44f032
mov ecx, ebx
shr ecx, 8
and ecx, 1
mov dword [eax], ecx
test dword [esi + 0x10], 0x200
je 0x44f05a
mov eax, dword [esi + 0x18]
mov byte [ebp - 0x14], bl
shr ebx, 8
push 2
lea ecx, [ebp - 0x14]
mov byte [ebp - 0x13], bl
call fcn.00450550
mov edx, dword [ebp - 8]
add esp, 4
mov dword [esi + 0x18], eax
xor ebx, ebx
xor edi, edi
mov dword [esi], 2
jmp 0x44f070
cmp edi, 0x20
jae 0x44f092
jmp 0x44f070
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
inc edx
add edi, 8
mov dword [ebp - 8], edx
add ebx, eax
cmp edi, 0x20
jb 0x44f070
mov eax, dword [esi + 0x20]
test eax, eax
je 0x44f09c
mov dword [eax + 4], ebx
test dword [esi + 0x10], 0x200
je 0x44f0d4
mov eax, dword [esi + 0x18]
mov ecx, ebx
shr ecx, 8
mov edx, ebx
mov byte [ebp - 0x14], bl
mov byte [ebp - 0x13], cl
shr edx, 0x10
shr ebx, 0x18
push 4
lea ecx, [ebp - 0x14]
mov byte [ebp - 0x12], dl
mov byte [ebp - 0x11], bl
call fcn.00450550
mov edx, dword [ebp - 8]
add esp, 4
mov dword [esi + 0x18], eax
xor ebx, ebx
xor edi, edi
mov dword [esi], 3
jmp 0x44f0e5
cmp edi, 0x10
jae 0x44f107
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
inc edx
add edi, 8
mov dword [ebp - 8], edx
add ebx, eax
cmp edi, 0x10
jb 0x44f0e5
mov eax, dword [esi + 0x20]
test eax, eax
je 0x44f124
mov ecx, ebx
and ecx, 0xff
mov dword [eax + 8], ecx
mov ecx, dword [esi + 0x20]
mov eax, ebx
shr eax, 8
mov dword [ecx + 0xc], eax
test dword [esi + 0x10], 0x200
je 0x44f14c
mov eax, dword [esi + 0x18]
mov byte [ebp - 0x14], bl
shr ebx, 8
push 2
lea ecx, [ebp - 0x14]
mov byte [ebp - 0x13], bl
call fcn.00450550
mov edx, dword [ebp - 8]
add esp, 4
mov dword [esi + 0x18], eax
xor ebx, ebx
xor edi, edi
mov dword [esi], 4
test dword [esi + 0x10], 0x400
je 0x44f1c1
cmp edi, 0x10
jae 0x44f186
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
inc edx
add edi, 8
mov dword [ebp - 8], edx
add ebx, eax
cmp edi, 0x10
jb 0x44f164
mov eax, dword [esi + 0x20]
mov dword [esi + 0x40], ebx
test eax, eax
je 0x44f193
mov dword [eax + 0x14], ebx
test dword [esi + 0x10], 0x200
je 0x44f1bb
mov eax, dword [esi + 0x18]
mov byte [ebp - 0x14], bl
shr ebx, 8
push 2
lea ecx, [ebp - 0x14]
mov byte [ebp - 0x13], bl
call fcn.00450550
mov edx, dword [ebp - 8]
add esp, 4
mov dword [esi + 0x18], eax
xor ebx, ebx
xor edi, edi
jmp 0x44f1cf
mov eax, dword [esi + 0x20]
test eax, eax
je 0x44f1cf
mov dword [eax + 0x10], 0
mov dword [esi], 5
test dword [esi + 0x10], 0x400
je 0x44f277
mov eax, dword [esi + 0x40]
mov ecx, dword [ebp - 4]
mov dword [ebp - 0xc], eax
cmp eax, ecx
jbe 0x44f1f4
mov eax, ecx
mov dword [ebp - 0xc], ecx
test eax, eax
je 0x44f26d
mov ecx, dword [esi + 0x20]
test ecx, ecx
je 0x44f23d
mov ecx, dword [ecx + 0x10]
mov dword [ebp - 0x2c], ecx
test ecx, ecx
je 0x44f23d
mov edx, dword [esi + 0x20]
mov ecx, dword [edx + 0x14]
sub ecx, dword [esi + 0x40]
mov edx, dword [edx + 0x18]
mov dword [ebp - 0x1c], ecx
add ecx, eax
cmp ecx, edx
jbe 0x44f223
sub edx, dword [ebp - 0x1c]
mov eax, edx
mov edx, dword [ebp - 8]
push eax
mov eax, dword [ebp - 0x2c]
add eax, dword [ebp - 0x1c]
push edx
push eax
call fcn.00478340
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 8]
add esp, 0xc
test dword [esi + 0x10], 0x200
je 0x44f262
mov edx, dword [ebp - 0xc]
mov eax, dword [esi + 0x18]
mov ecx, dword [ebp - 8]
push edx
push eax
call fcn.00450530
mov edx, dword [ebp - 8]
mov dword [esi + 0x18], eax
mov eax, dword [ebp - 0xc]
add esp, 8
sub dword [ebp - 4], eax
add edx, eax
sub dword [esi + 0x40], eax
mov dword [ebp - 8], edx
cmp dword [esi + 0x40], 0
jne 0x450151
mov dword [esi + 0x40], 0
mov dword [esi], 6
test dword [esi + 0x10], 0x800
je 0x44f321
cmp dword [ebp - 4], 0
je 0x450151
xor eax, eax
lea ecx, [ecx]
movzx ecx, byte [eax + edx]
inc eax
mov dword [ebp - 0xc], eax
mov eax, dword [esi + 0x20]
mov dword [ebp - 0x1c], ecx
test eax, eax
je 0x44f2d3
mov ecx, dword [eax + 0x1c]
mov dword [ebp - 0x2c], ecx
test ecx, ecx
je 0x44f2d3
mov ecx, dword [esi + 0x40]
cmp ecx, dword [eax + 0x20]
jae 0x44f2d3
mov edx, dword [ebp - 0x2c]
mov al, byte [ebp - 0x1c]
mov byte [edx + ecx], al
inc dword [esi + 0x40]
mov edx, dword [ebp - 8]
cmp dword [ebp - 0x1c], 0
mov eax, dword [ebp - 0xc]
je 0x44f2e1
cmp eax, dword [ebp - 4]
jb 0x44f2a0
test dword [esi + 0x10], 0x200
je 0x44f30d
mov eax, dword [esi + 0x18]
test edx, edx
jne 0x44f2f5
xor eax, eax
jmp 0x44f307
mov ecx, dword [ebp - 0xc]
push ecx
mov ecx, dword [ebp - 8]
call fcn.00450550
mov edx, dword [ebp - 8]
add esp, 4
mov dword [esi + 0x18], eax
mov eax, dword [ebp - 0xc]
sub dword [ebp - 4], eax
add edx, eax
cmp dword [ebp - 0x1c], 0
mov dword [ebp - 8], edx
jne 0x450151
jmp 0x44f32f
mov eax, dword [esi + 0x20]
test eax, eax
je 0x44f32f
mov dword [eax + 0x1c], 0
mov dword [esi + 0x40], 0
mov dword [esi], 7
test dword [esi + 0x10], 0x1000
je 0x44f3d6
cmp dword [ebp - 4], 0
je 0x450151
xor eax, eax
movzx ecx, byte [eax + edx]
inc eax
mov dword [ebp - 0xc], eax
mov eax, dword [esi + 0x20]
mov dword [ebp - 0x1c], ecx
test eax, eax
je 0x44f388
mov ecx, dword [eax + 0x24]
mov dword [ebp - 0x2c], ecx
test ecx, ecx
je 0x44f388
mov ecx, dword [esi + 0x40]
cmp ecx, dword [eax + 0x28]
jae 0x44f388
mov edx, dword [ebp - 0x2c]
mov al, byte [ebp - 0x1c]
mov byte [edx + ecx], al
inc dword [esi + 0x40]
mov edx, dword [ebp - 8]
cmp dword [ebp - 0x1c], 0
mov eax, dword [ebp - 0xc]
je 0x44f396
cmp eax, dword [ebp - 4]
jb 0x44f355
test dword [esi + 0x10], 0x200
je 0x44f3c2
mov eax, dword [esi + 0x18]
test edx, edx
jne 0x44f3aa
xor eax, eax
jmp 0x44f3bc
mov ecx, dword [ebp - 0xc]
push ecx
mov ecx, dword [ebp - 8]
call fcn.00450550
mov edx, dword [ebp - 8]
add esp, 4
mov dword [esi + 0x18], eax
mov eax, dword [ebp - 0xc]
sub dword [ebp - 4], eax
add edx, eax
cmp dword [ebp - 0x1c], 0
mov dword [ebp - 8], edx
jne 0x450151
jmp 0x44f3e4
mov eax, dword [esi + 0x20]
test eax, eax
je 0x44f3e4
mov dword [eax + 0x24], 0
mov dword [esi], 8
test dword [esi + 0x10], 0x200
je 0x44f43d
cmp edi, 0x10
jae 0x44f422
jmp 0x44f400
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
inc edx
add edi, 8
mov dword [ebp - 8], edx
add ebx, eax
cmp edi, 0x10
jb 0x44f400
movzx ecx, word [esi + 0x18]
cmp ebx, ecx
je 0x44f439
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.header_crc_mismatch
jmp 0x4500f1
xor ebx, ebx
xor edi, edi
mov eax, dword [esi + 0x20]
test eax, eax
je 0x44f45a
mov ecx, dword [esi + 0x10]
sar ecx, 9
and ecx, 1
mov dword [eax + 0x2c], ecx
mov edx, dword [esi + 0x20]
mov dword [edx + 0x30], 1
push 0
push 0
xor ecx, ecx
call fcn.00450530
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 8]
mov dword [esi + 0x18], eax
mov dword [ecx + 0x30], eax
add esp, 8
mov dword [esi], 0xb
jmp 0x4500f7
cmp edi, 0x20
jae 0x44f4a6
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
inc edx
add edi, 8
mov dword [ebp - 8], edx
add ebx, eax
cmp edi, 0x20
jb 0x44f484
mov ecx, ebx
mov eax, ebx
shl eax, 0x10
and ecx, 0xff00
add ecx, eax
mov eax, ebx
shr eax, 8
shl ecx, 8
and eax, 0xff00
add eax, ecx
mov ecx, dword [ebp + 8]
shr ebx, 0x18
add eax, ebx
mov dword [esi + 0x18], eax
mov dword [ecx + 0x30], eax
xor ebx, ebx
xor edi, edi
mov dword [esi], 0xa
cmp dword [esi + 0xc], 0
je 0x45010e
push 0
xor eax, eax
xor ecx, ecx
call fcn.00452760
mov edx, dword [ebp + 8]
mov dword [esi + 0x18], eax
mov dword [edx + 0x30], eax
mov edx, dword [ebp - 8]
add esp, 4
mov dword [esi], 0xb
cmp dword [esi + 4], 0
je 0x44f520
mov ecx, edi
and ecx, 7
shr ebx, cl
sub edi, ecx
mov dword [esi], 0x1a
jmp 0x4500f7
cmp edi, 3
jae 0x44f547
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
inc edx
add edi, 8
mov dword [ebp - 8], edx
add ebx, eax
cmp edi, 3
jb 0x44f525
mov ecx, ebx
shr ebx, 1
mov eax, ebx
and ecx, 1
and eax, 3
mov dword [esi + 4], ecx
cmp eax, 3
ja case.default.0x44f55b
jmp dword [eax*4 + 0x450308]
shr ebx, 2
mov dword [esi], 0xd
sub edi, 3
jmp 0x4500f7
shr ebx, 2
mov dword [esi + 0x4c], 0x484a58
mov dword [esi + 0x54], 9
mov dword [esi + 0x50], 0x485258
mov dword [esi + 0x58], 5
mov dword [esi], 0x13
sub edi, 3
jmp 0x4500f7
shr ebx, 2
mov dword [esi], 0x10
sub edi, 3
jmp 0x4500f7
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_block_type
mov dword [esi], 0x1d
shr ebx, 2
sub edi, 3
jmp 0x4500f7
mov ecx, edi
and ecx, 7
sub edi, ecx
shr ebx, cl
cmp edi, 0x20
jae 0x44f602
lea ebx, [ebx]
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
inc edx
add edi, 8
mov dword [ebp - 8], edx
add ebx, eax
cmp edi, 0x20
jb 0x44f5e0
mov ecx, ebx
mov eax, ebx
not ecx
and eax, 0xffff
shr ecx, 0x10
cmp eax, ecx
je 0x44f623
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_stored_block_lengths
jmp 0x4500f1
xor ebx, ebx
mov dword [esi + 0x40], eax
xor edi, edi
mov dword [esi], 0xe
mov dword [esi], 0xf
mov eax, dword [esi + 0x40]
mov dword [ebp - 0xc], eax
test eax, eax
je 0x44fcb1
mov ecx, dword [ebp - 4]
cmp eax, ecx
jbe 0x44f650
mov eax, ecx
mov dword [ebp - 0xc], ecx
mov ecx, dword [ebp - 0x10]
cmp eax, ecx
jbe 0x44f65c
mov eax, ecx
mov dword [ebp - 0xc], eax
test eax, eax
je 0x450151
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x18]
push ecx
push edx
push eax
call fcn.00478340
mov eax, dword [ebp - 0xc]
add dword [ebp - 8], eax
sub dword [ebp - 4], eax
sub dword [ebp - 0x10], eax
add dword [ebp - 0x18], eax
mov edx, dword [ebp - 8]
add esp, 0xc
sub dword [esi + 0x40], eax
jmp 0x4500f7
cmp edi, 0xe
jae 0x44f6c2
jmp 0x44f6a0
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
inc edx
add edi, 8
mov dword [ebp - 8], edx
add ebx, eax
cmp edi, 0xe
jb 0x44f6a0
mov ecx, ebx
and ecx, 0x1f
shr ebx, 5
add ecx, 0x101
mov eax, ebx
mov dword [esi + 0x60], ecx
shr ebx, 5
mov ecx, ebx
and eax, 0x1f
and ecx, 0xf
inc eax
add ecx, 4
shr ebx, 4
sub edi, 0xe
cmp dword [esi + 0x60], 0x11e
mov dword [esi + 0x64], eax
mov dword [esi + 0x5c], ecx
ja 0x44f7e1
cmp eax, 0x1e
ja 0x44f7e1
mov dword [esi + 0x68], 0
mov dword [esi], 0x11
mov ecx, dword [esi + 0x68]
cmp ecx, dword [esi + 0x5c]
jae 0x44f76d
jmp 0x44f720
cmp edi, 3
jae 0x44f747
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
inc edx
add edi, 8
mov dword [ebp - 8], edx
add ebx, eax
cmp edi, 3
jb 0x44f725
mov eax, dword [esi + 0x68]
movzx eax, word [eax*2 + 0x4852d8]
mov ecx, ebx
and ecx, 7
mov word [esi + eax*2 + 0x70], cx
inc dword [esi + 0x68]
mov ecx, dword [esi + 0x68]
shr ebx, 3
sub edi, 3
cmp ecx, dword [esi + 0x5c]
jb 0x44f720
mov eax, 0x13
cmp dword [esi + 0x68], eax
jae 0x44f79a
jmp 0x44f780
mov edx, dword [esi + 0x68]
movzx ecx, word [edx*2 + 0x4852d8]
xor edx, edx
mov word [esi + ecx*2 + 0x70], dx
inc dword [esi + 0x68]
cmp dword [esi + 0x68], eax
jb 0x44f780
lea eax, [esi + 0x530]
lea ecx, [esi + 0x6c]
lea edx, [esi + 0x2f0]
push edx
mov dword [ecx], eax
mov dword [esi + 0x4c], eax
lea eax, [esi + 0x54]
push eax
push 0x13
lea edx, [esi + 0x70]
push 0
mov dword [eax], 7
call fcn.00452a00
mov edx, dword [ebp - 8]
add esp, 0x10
mov dword [ebp - 0x28], eax
test eax, eax
je 0x44f7f0
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_code_lengths_set
jmp 0x4500f1
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
jmp 0x4500f1
mov dword [esi + 0x68], 0
mov dword [esi], 0x12
mov ecx, dword [esi + 0x64]
add ecx, dword [esi + 0x60]
cmp dword [esi + 0x68], ecx
jae 0x44f9f3
lea esp, [esp]
mov ecx, dword [esi + 0x54]
mov eax, 1
shl eax, cl
mov ecx, dword [esi + 0x4c]
dec eax
and eax, ebx
mov ecx, dword [ecx + eax*4]
mov eax, ecx
shr eax, 8
movzx eax, al
mov dword [ebp - 0xc], ecx
cmp eax, edi
jbe 0x44f871
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
mov ecx, dword [esi + 0x54]
inc edx
add edi, 8
add ebx, eax
mov eax, 1
shl eax, cl
mov ecx, dword [esi + 0x4c]
mov dword [ebp - 8], edx
dec eax
and eax, ebx
mov ecx, dword [ecx + eax*4]
mov eax, ecx
shr eax, 8
movzx eax, al
mov dword [ebp - 0xc], ecx
cmp eax, edi
ja 0x44f832
mov eax, ecx
shr eax, 0x10
mov dword [ebp - 0x2c], eax
cmp ax, 0x10
jae 0x44f899
shr ecx, 8
movzx ecx, cl
shr ebx, cl
sub edi, ecx
mov ecx, dword [esi + 0x68]
mov word [esi + ecx*2 + 0x70], ax
inc dword [esi + 0x68]
jmp 0x44f9e4
jne 0x44f90a
mov eax, ecx
shr eax, 8
movzx eax, al
add eax, 2
cmp edi, eax
jae 0x44f8da
lea ebx, [ebx]
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
mov ecx, dword [ebp - 0xc]
inc edx
add edi, 8
add ebx, eax
movzx eax, ch
add eax, 2
mov dword [ebp - 8], edx
cmp edi, eax
jb 0x44f8b0
mov eax, dword [esi + 0x68]
movzx ecx, ch
shr ebx, cl
sub edi, ecx
test eax, eax
je 0x44fa15
movzx ecx, word [esi + eax*2 + 0x6e]
mov eax, ebx
and eax, 3
add eax, 3
shr ebx, 2
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0xc], eax
sub edi, 2
jmp 0x44f9af
cmp word [ebp - 0xa], 0x11
movzx ecx, ch
mov dword [ebp - 0x24], ecx
jne 0x44f95e
lea eax, [ecx + 3]
cmp edi, eax
jae 0x44f947
mov edi, edi
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
mov ecx, dword [ebp - 0x24]
inc edx
add edi, 8
add ebx, eax
lea eax, [ecx + 3]
mov dword [ebp - 8], edx
cmp edi, eax
jb 0x44f920
shr ebx, cl
mov eax, ebx
and eax, 7
add eax, 3
mov dword [ebp - 0xc], eax
shr ebx, 3
mov eax, 0xfffffffd
jmp 0x44f9a1
lea eax, [ecx + 7]
cmp edi, eax
jae 0x44f98c
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
mov ecx, dword [ebp - 0x24]
inc edx
add edi, 8
add ebx, eax
lea eax, [ecx + 7]
mov dword [ebp - 8], edx
cmp edi, eax
jb 0x44f965
shr ebx, cl
mov eax, ebx
and eax, 0x7f
add eax, 0xb
mov dword [ebp - 0xc], eax
shr ebx, 7
mov eax, 0xfffffff9
sub eax, ecx
add edi, eax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x1c], 0
mov ecx, dword [esi + 0x68]
add ecx, eax
mov eax, dword [esi + 0x64]
add eax, dword [esi + 0x60]
cmp ecx, eax
ja 0x44fa24
cmp dword [ebp - 0xc], 0
je 0x44f9e4
mov eax, dword [ebp - 0x1c]
jmp 0x44f9d0
mov ecx, dword [esi + 0x68]
dec dword [ebp - 0xc]
mov word [esi + ecx*2 + 0x70], ax
inc dword [esi + 0x68]
cmp dword [ebp - 0xc], 0
jne 0x44f9d0
mov eax, dword [esi + 0x64]
add eax, dword [esi + 0x60]
cmp dword [esi + 0x68], eax
jb 0x44f810
cmp dword [esi], 0x1d
je 0x4500f7
cmp word [esi + 0x270], 0
jne 0x44fa33
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.invalid_code____missing_end_of_block
jmp 0x4500f1
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.invalid_bit_length_repeat
jmp 0x4500f1
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
jmp 0x4500f1
lea eax, [esi + 0x530]
lea ecx, [esi + 0x6c]
lea edx, [esi + 0x2f0]
push edx
mov edx, dword [esi + 0x60]
mov dword [ecx], eax
mov dword [esi + 0x4c], eax
lea eax, [esi + 0x54]
push eax
push edx
lea edx, [esi + 0x70]
push 1
mov dword [eax], 9
call fcn.00452a00
add esp, 0x10
mov dword [ebp - 0x28], eax
test eax, eax
je 0x44fa7c
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 8]
mov dword [eax + 0x18], str.invalid_literal_lengths_set
jmp 0x4500f1
mov edx, dword [esi + 0x6c]
lea ecx, [esi + 0x6c]
mov dword [esi + 0x50], edx
lea edx, [esi + 0x2f0]
push edx
mov edx, dword [esi + 0x60]
lea eax, [esi + 0x58]
push eax
mov dword [eax], 6
mov eax, dword [esi + 0x64]
push eax
lea edx, [esi + edx*2 + 0x70]
push 2
call fcn.00452a00
mov edx, dword [ebp - 8]
add esp, 0x10
mov dword [ebp - 0x28], eax
test eax, eax
je 0x44fac4
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_distances_set
jmp 0x4500f1
mov dword [esi], 0x13
mov dword [esi], 0x14
cmp dword [ebp - 4], 6
jb 0x44fb44
cmp dword [ebp - 0x10], 0x102
jb 0x44fb44
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x10]
mov dword [eax + 0xc], ecx
mov ecx, dword [ebp - 8]
mov dword [eax], ecx
mov ecx, dword [ebp - 0x20]
mov dword [eax + 0x10], edx
mov edx, dword [ebp - 4]
push ecx
mov dword [eax + 4], edx
push eax
mov dword [esi + 0x38], ebx
mov dword [esi + 0x3c], edi
call fcn.0046c030
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0xc]
mov ecx, dword [eax + 0x10]
mov ebx, dword [esi + 0x38]
mov edi, dword [esi + 0x3c]
mov dword [ebp - 0x18], edx
mov edx, dword [eax]
mov eax, dword [eax + 4]
add esp, 8
cmp dword [esi], 0xb
mov dword [ebp - 0x10], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
jne 0x4500f7
mov dword [esi + 0x1bc4], 0xffffffff
jmp 0x4500f7
mov ecx, dword [esi + 0x54]
mov eax, 1
shl eax, cl
mov dword [esi + 0x1bc4], 0
dec eax
and eax, ebx
mov ecx, eax
mov eax, dword [esi + 0x4c]
mov eax, dword [eax + ecx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [ebp - 0xc], eax
cmp ecx, edi
jbe 0x44fbb1
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
mov ecx, dword [esi + 0x54]
inc edx
add edi, 8
add ebx, eax
mov eax, 1
shl eax, cl
mov ecx, dword [esi + 0x4c]
mov dword [ebp - 8], edx
dec eax
and eax, ebx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [ebp - 0xc], eax
cmp ecx, edi
ja 0x44fb72
test al, al
je 0x44fc77
test al, 0xf0
jne 0x44fc77
mov ecx, eax
shr ecx, 8
mov dword [ebp - 0x2c], ecx
movzx ecx, cl
mov dword [ebp - 0x1c], ecx
movzx ecx, al
add ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x24], eax
mov eax, 1
shl eax, cl
mov ecx, dword [ebp - 0x1c]
dec eax
and eax, ebx
shr eax, cl
mov ecx, dword [ebp - 0xc]
shr ecx, 0x10
add eax, ecx
mov ecx, eax
mov eax, dword [esi + 0x4c]
mov eax, dword [eax + ecx*4]
movzx ecx, byte [ebp - 0x2c]
mov dword [ebp - 0xc], eax
shr eax, 8
movzx eax, al
add eax, ecx
cmp eax, edi
jbe 0x44fc66
lea ebx, [ebx]
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
mov ecx, edi
shl eax, cl
mov ecx, dword [ebp - 0x24]
dec dword [ebp - 4]
inc edx
add ebx, eax
movzx eax, ch
mov dword [ebp - 0x1c], eax
movzx ecx, cl
add ecx, eax
mov eax, 1
shl eax, cl
mov ecx, dword [ebp - 0x1c]
add edi, 8
mov dword [ebp - 8], edx
dec eax
and eax, ebx
shr eax, cl
movzx ecx, word [ebp - 0x22]
add eax, ecx
mov ecx, dword [esi + 0x4c]
mov eax, dword [ecx + eax*4]
mov dword [ebp - 0xc], eax
shr eax, 8
movzx eax, al
add eax, dword [ebp - 0x1c]
cmp eax, edi
ja 0x44fc10
movzx ecx, byte [ebp - 0x23]
mov eax, dword [ebp - 0xc]
shr ebx, cl
sub edi, ecx
mov dword [esi + 0x1bc4], ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [esi + 0x1bc4], ecx
shr ebx, cl
sub edi, ecx
mov dword [ebp - 0x1c], ecx
mov ecx, eax
shr ecx, 0x10
mov dword [esi + 0x40], ecx
test al, al
jne 0x44fca3
mov dword [esi], 0x19
jmp 0x4500f7
test al, 0x20
je 0x44fcbc
mov dword [esi + 0x1bc4], 0xffffffff
mov dword [esi], 0xb
jmp 0x4500f7
test al, 0x40
je 0x44fccf
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_literal_length_code
jmp 0x4500f1
movzx ecx, al
and ecx, 0xf
mov dword [esi + 0x48], ecx
mov dword [esi], 0x15
mov eax, dword [esi + 0x48]
test eax, eax
je 0x44fd2c
cmp edi, eax
jae 0x44fd12
lea esp, [esp]
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
inc edx
add edi, 8
mov dword [ebp - 8], edx
add ebx, eax
cmp edi, dword [esi + 0x48]
jb 0x44fcf0
mov ecx, dword [esi + 0x48]
mov eax, 1
shl eax, cl
sub edi, ecx
dec eax
and eax, ebx
add dword [esi + 0x40], eax
shr ebx, cl
add dword [esi + 0x1bc4], ecx
mov ecx, dword [esi + 0x40]
mov dword [esi + 0x1bc8], ecx
mov dword [esi], 0x16
mov ecx, dword [esi + 0x58]
mov eax, 1
shl eax, cl
dec eax
and eax, ebx
mov ecx, eax
mov eax, dword [esi + 0x50]
mov eax, dword [eax + ecx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [ebp - 0xc], eax
cmp ecx, edi
jbe 0x44fd9f
nop
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
mov ecx, dword [esi + 0x58]
inc edx
add edi, 8
add ebx, eax
mov eax, 1
shl eax, cl
mov ecx, dword [esi + 0x50]
mov dword [ebp - 8], edx
dec eax
and eax, ebx
mov eax, dword [ecx + eax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
mov dword [ebp - 0xc], eax
cmp ecx, edi
ja 0x44fd60
test al, 0xf0
jne 0x44fe57
mov ecx, eax
shr ecx, 8
mov dword [ebp - 0x2c], ecx
movzx ecx, cl
mov dword [ebp - 0x1c], ecx
movzx ecx, al
add ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x24], eax
mov eax, 1
shl eax, cl
mov ecx, dword [ebp - 0x1c]
dec eax
and eax, ebx
shr eax, cl
mov ecx, dword [ebp - 0xc]
shr ecx, 0x10
add eax, ecx
mov ecx, eax
mov eax, dword [esi + 0x50]
mov eax, dword [eax + ecx*4]
movzx ecx, byte [ebp - 0x2c]
mov dword [ebp - 0xc], eax
shr eax, 8
movzx eax, al
add eax, ecx
cmp eax, edi
jbe 0x44fe46
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
mov ecx, edi
shl eax, cl
mov ecx, dword [ebp - 0x24]
dec dword [ebp - 4]
inc edx
add ebx, eax
movzx eax, ch
mov dword [ebp - 0x1c], eax
movzx ecx, cl
add ecx, eax
mov eax, 1
shl eax, cl
mov ecx, dword [ebp - 0x1c]
add edi, 8
mov dword [ebp - 8], edx
dec eax
and eax, ebx
shr eax, cl
movzx ecx, word [ebp - 0x22]
add eax, ecx
mov ecx, dword [esi + 0x50]
mov eax, dword [ecx + eax*4]
mov dword [ebp - 0xc], eax
shr eax, 8
movzx eax, al
add eax, dword [ebp - 0x1c]
cmp eax, edi
ja 0x44fdf0
movzx ecx, byte [ebp - 0x23]
mov eax, dword [ebp - 0xc]
shr ebx, cl
sub edi, ecx
add dword [esi + 0x1bc4], ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add dword [esi + 0x1bc4], ecx
shr ebx, cl
sub edi, ecx
mov dword [ebp - 0x1c], ecx
test al, 0x40
je 0x44fe7f
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_distance_code
jmp 0x4500f1
mov ecx, eax
movzx eax, al
shr ecx, 0x10
and eax, 0xf
mov dword [esi + 0x44], ecx
mov dword [esi + 0x48], eax
mov dword [esi], 0x17
mov eax, dword [esi + 0x48]
test eax, eax
je 0x44fedd
cmp edi, eax
jae 0x44fec3
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
inc edx
add edi, 8
mov dword [ebp - 8], edx
add ebx, eax
cmp edi, dword [esi + 0x48]
jb 0x44fea1
mov ecx, dword [esi + 0x48]
mov eax, 1
shl eax, cl
sub edi, ecx
dec eax
and eax, ebx
add dword [esi + 0x44], eax
shr ebx, cl
add dword [esi + 0x1bc4], ecx
mov dword [esi], 0x18
cmp dword [ebp - 0x10], 0
je 0x450151
mov ecx, dword [ebp - 0x20]
sub ecx, dword [ebp - 0x10]
mov eax, dword [esi + 0x44]
cmp eax, ecx
jbe 0x44ff4e
sub eax, ecx
mov dword [ebp - 0xc], eax
cmp eax, dword [esi + 0x2c]
jbe 0x44ff1c
cmp dword [esi + 0x1bc0], 0
je 0x44ff1c
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.invalid_distance_too_far_back
jmp 0x4500f1
mov ecx, dword [esi + 0x30]
cmp eax, ecx
jbe 0x44ff32
sub eax, ecx
mov ecx, dword [esi + 0x34]
add ecx, dword [esi + 0x28]
mov dword [ebp - 0xc], eax
sub ecx, eax
jmp 0x44ff3d
mov ecx, dword [esi + 0x34]
sub ecx, eax
add ecx, dword [esi + 0x30]
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [esi + 0x40]
mov dword [ebp - 0x24], ecx
cmp eax, ecx
jbe 0x44ff5f
mov eax, ecx
jmp 0x44ff5c
mov ecx, dword [ebp - 0x18]
sub ecx, eax
mov eax, dword [esi + 0x40]
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x24], eax
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0x10]
cmp eax, ecx
jbe 0x44ff6b
mov eax, ecx
mov dword [ebp - 0xc], eax
sub ecx, eax
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x24]
sub ecx, eax
mov eax, dword [ebp - 0x18]
mov dword [esi + 0x40], ecx
mov ecx, dword [ebp - 0x2c]
sub ecx, dword [ebp - 0x18]
mov dword [ebp - 0x2c], ecx
jmp 0x44ff89
mov ecx, dword [ebp - 0x2c]
mov cl, byte [ecx + eax]
mov eax, dword [ebp - 0x18]
mov byte [eax], cl
inc eax
dec dword [ebp - 0xc]
mov dword [ebp - 0x18], eax
jne 0x44ff86
cmp dword [esi + 0x40], 0
jne 0x4500f7
mov dword [esi], 0x14
jmp 0x4500f7
cmp dword [ebp - 0x10], 0
je 0x450151
mov eax, dword [ebp - 0x18]
mov cl, byte [esi + 0x40]
mov byte [eax], cl
inc eax
dec dword [ebp - 0x10]
mov dword [ebp - 0x18], eax
mov dword [esi], 0x14
jmp 0x4500f7
cmp dword [esi + 8], 0
je 0x45009a
cmp edi, 0x20
jae 0x450004
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
inc edx
add edi, 8
mov dword [ebp - 8], edx
add ebx, eax
cmp edi, 0x20
jb 0x44ffe2
mov eax, dword [ebp - 0x20]
sub eax, dword [ebp - 0x10]
mov ecx, dword [ebp + 8]
add dword [ecx + 0x14], eax
add dword [esi + 0x1c], eax
mov dword [ebp - 0x20], eax
test eax, eax
je 0x450054
cmp dword [esi + 0x10], 0
je 0x450034
mov edx, dword [esi + 0x18]
mov ecx, dword [ebp - 0x18]
push eax
sub ecx, eax
push edx
call fcn.00450530
add esp, 8
jmp 0x450048
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x18]
push ecx
sub eax, ecx
mov ecx, dword [esi + 0x18]
call fcn.00452760
add esp, 4
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 8]
mov dword [esi + 0x18], eax
mov dword [ecx + 0x30], eax
cmp dword [esi + 0x10], 0
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x20], eax
mov eax, ebx
jne 0x450085
and eax, 0xff00
mov ecx, ebx
shl ecx, 0x10
add eax, ecx
mov ecx, ebx
shr ecx, 8
and ecx, 0xff00
shl eax, 8
add eax, ecx
mov ecx, ebx
shr ecx, 0x18
add eax, ecx
cmp eax, dword [esi + 0x18]
je 0x450096
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.incorrect_data_check
jmp 0x4500f1
xor ebx, ebx
xor edi, edi
mov dword [esi], 0x1b
cmp dword [esi + 8], 0
je 0x45013b
cmp dword [esi + 0x10], 0
je 0x45013b
cmp edi, 0x20
jae 0x4500e2
lea esp, [esp]
cmp dword [ebp - 4], 0
je 0x450151
movzx eax, byte [edx]
dec dword [ebp - 4]
mov ecx, edi
shl eax, cl
inc edx
add edi, 8
mov dword [ebp - 8], edx
add ebx, eax
cmp edi, 0x20
jb 0x4500c0
cmp ebx, dword [esi + 0x1c]
je 0x450137
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.incorrect_length_check
mov dword [esi], 0x1d
mov eax, dword [esi]
cmp eax, 0x1e
jbe switch.0x0044ee78
mov eax, 0xfffffffe
pop edi
pop ebx
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x18]
mov dword [eax + 0xc], ecx
mov ecx, dword [ebp - 0x10]
mov dword [eax], edx
mov edx, dword [ebp - 4]
mov dword [eax + 0x10], ecx
mov dword [eax + 4], edx
mov dword [esi + 0x3c], edi
pop edi
mov dword [esi + 0x38], ebx
pop ebx
mov eax, 2
pop esi
mov esp, ebp
pop ebp
ret
xor ebx, ebx
xor edi, edi
mov dword [esi], 0x1c
mov dword [ebp - 0x28], 1
jmp 0x450151
mov dword [ebp - 0x28], 0xfffffffd
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x18]
mov dword [eax + 0xc], ecx
mov ecx, dword [ebp - 0x10]
mov dword [eax], edx
mov edx, dword [ebp - 4]
mov dword [eax + 0x10], ecx
mov dword [eax + 4], edx
cmp dword [esi + 0x28], 0
mov dword [esi + 0x38], ebx
mov dword [esi + 0x3c], edi
jne 0x45018e
mov ecx, dword [ebp - 0x20]
cmp ecx, dword [eax + 0x10]
je 0x4501ba
mov eax, dword [esi]
cmp eax, 0x1d
jge 0x4501ba
cmp eax, 0x1a
jl 0x45018e
cmp dword [ebp + 0xc], 4
je 0x4501ba
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x20]
sub edx, dword [eax + 0x10]
mov ecx, dword [eax + 0xc]
push edx
push ecx
call fcn.0044ed10
add esp, 8
test eax, eax
je 0x4501ba
mov dword [esi], 0x1e
pop edi
pop ebx
mov eax, 0xfffffffc
pop esi
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 0x30]
sub eax, dword [edi + 4]
mov ebx, dword [ebp - 0x20]
sub ebx, dword [edi + 0x10]
add dword [edi + 8], eax
add dword [edi + 0x14], ebx
add dword [esi + 0x1c], ebx
cmp dword [esi + 8], 0
mov dword [ebp - 0x30], eax
je 0x450212
test ebx, ebx
je 0x450212
cmp dword [esi + 0x10], 0
je 0x4501fb
mov ecx, dword [edi + 0xc]
sub ecx, ebx
mov eax, dword [esi + 0x18]
jne 0x4501f3
xor eax, eax
jmp 0x45020c
push ebx
call fcn.00450550
jmp 0x450209
mov eax, dword [edi + 0xc]
mov ecx, dword [esi + 0x18]
push ebx
sub eax, ebx
call fcn.00452760
add esp, 4
mov dword [esi + 0x18], eax
mov dword [edi + 0x30], eax
mov eax, dword [esi]
cmp eax, 0x13
je 0x450225
mov dword [ebp + 8], 0
cmp eax, 0xe
jne 0x45022c
mov dword [ebp + 8], 0x100
mov edx, dword [esi + 4]
neg edx
sbb edx, edx
and edx, 0x40
xor ecx, ecx
cmp eax, 0xb
setne cl
dec ecx
and ecx, 0x80
add edx, ecx
add edx, dword [esi + 0x3c]
add edx, dword [ebp + 8]
cmp dword [ebp - 0x30], 0
mov dword [edi + 0x2c], edx
jne 0x45025a
test ebx, ebx
je 0x450260
cmp dword [ebp + 0xc], 4
jne 0x450277
mov eax, dword [ebp - 0x28]
test eax, eax
jne 0x450107
pop edi
pop ebx
mov eax, 0xfffffffb
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x28]
pop edi
pop ebx
pop esi
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffffe
pop esi
mov esp, ebp
pop ebp
ret