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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb8
mov dword [ebp - 8], esi
mov esi, dword [ebp + 8]
mov dword [ebp - 0xc], ebx
mov ebx, 0xfffffffe
mov dword [ebp - 4], edi
test esi, esi
jne 0x440160
mov eax, ebx
mov esi, dword [ebp - 8]
mov ebx, dword [ebp - 0xc]
mov edi, dword [ebp - 4]
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x1c]
test eax, eax
mov dword [ebp - 0x2c], eax
je 0x44014e
mov edx, dword [esi + 0xc]
test edx, edx
mov dword [ebp - 0x48], edx
je 0x44014e
mov edx, dword [esi]
test edx, edx
je 0x441505
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx]
cmp eax, 0xb
je 0x4414b5
mov ecx, dword [ebp - 0x2c]
mov ebx, dword [esi + 0x10]
mov edi, dword [esi + 4]
mov dword [ebp - 0x3c], esi
mov esi, edx
mov ecx, dword [ecx + 0x38]
mov dword [ebp - 0x44], ebx
mov ebx, dword [ebp - 0x2c]
mov dword [ebp - 0x58], edi
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0x44]
mov edi, dword [ebx + 0x3c]
mov ebx, dword [ebp - 0x58]
mov dword [ebp - 0x54], ecx
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x30], ebx
xor ebx, ebx
mov dword [ebp - 0x50], ebx
mov ebx, dword [ebp - 0x30]
add ecx, 0x530
mov dword [ebp - 0x5c], ecx
mov ecx, dword [ebp - 0x2c]
add ecx, 0x2f0
mov dword [ebp - 0x60], ecx
mov ecx, dword [ebp - 0x2c]
add ecx, 0x6c
mov dword [ebp - 0x64], ecx
mov ecx, dword [ebp - 0x2c]
add ecx, 0x54
mov dword [ebp - 0x68], ecx
mov ecx, dword [ebp - 0x2c]
add ecx, 0x70
mov dword [ebp - 0x6c], ecx
cmp eax, 0x1e
jbe switch.0x00440202
mov ebx, 0xfffffffe
jmp 0x44014e
jmp dword [eax*4 + 0x44fd70]
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax + 4]
test ecx, ecx
jne 0x44192d
cmp edi, 2
ja 0x440237
test ebx, ebx
je 0x440350
movzx eax, byte [esi]
mov ecx, edi
sub ebx, 1
add esi, 1
add edi, 8
shl eax, cl
add dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x34]
lea ecx, [edi - 1]
mov edx, dword [ebp - 0x2c]
and eax, 1
mov dword [edx + 4], eax
mov edx, dword [ebp - 0x34]
shr edx, 1
mov eax, edx
and eax, 3
cmp eax, 2
je 0x44177b
cmp eax, 3
je 0x441763
cmp eax, 1
je 0x44171d
mov edi, dword [ebp - 0x2c]
mov dword [edi], 0xd
shr edx, 2
mov dword [ebp - 0x34], edx
lea edi, [ecx - 2]
lea esi, [esi]
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx]
jmp 0x4401f3
cmp edi, 0x1f
ja 0x4402c0
test ebx, ebx
je 0x440350
mov edx, dword [ebp - 0x34]
mov ecx, edi
jmp 0x4402a8
test ebx, ebx
je 0x4414a0
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x4402a0
mov dword [ebp - 0x34], edx
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x34]
mov edi, dword [ebp - 0x2c]
shl eax, 0x18
shr edx, 0x18
lea edx, [eax + edx]
mov eax, dword [ebp - 0x34]
shr eax, 8
and eax, 0xff00
add edx, eax
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x34], 0
and eax, 0xff00
shl eax, 8
lea eax, [edx + eax]
mov edx, dword [ebp - 0x3c]
mov dword [edi + 0x18], eax
mov dword [edx + 0x30], eax
mov dword [edi], 0xa
xor edi, edi
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + 0xc]
test eax, eax
je 0x441bcf
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00442980
mov edx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x3c]
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov dword [edx], 0xb
mov eax, dword [ebp + 0xc]
sub eax, 5
cmp eax, 1
ja case.0x440202.12
mov dword [ebp - 0x30], ebx
mov edx, esi
mov ebx, dword [ebp - 0x50]
mov esi, dword [ebp - 0x3c]
nop
lea esi, [esi]
mov eax, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x44]
mov dword [esi], edx
mov edx, dword [ebp - 0x34]
mov dword [esi + 0xc], eax
mov eax, dword [ebp - 0x30]
mov dword [esi + 0x10], ecx
mov ecx, dword [ebp - 0x2c]
mov dword [esi + 4], eax
mov dword [ecx + 0x38], edx
mov edx, dword [ecx + 0x28]
mov dword [ecx + 0x3c], edi
test edx, edx
jne 0x440394
cmp dword [ecx], 0x19
ja 0x4403a6
mov edi, dword [ebp - 0x44]
cmp dword [ebp - 0x54], edi
je 0x4403a6
mov edx, dword [ebp - 0x54]
mov eax, esi
call fcn.0043fcc0
test eax, eax
jne 0x440edf
mov edi, dword [ebp - 0x54]
mov ecx, dword [ebp - 0x2c]
sub edi, dword [esi + 0x10]
mov edx, dword [ebp - 0x58]
sub edx, dword [esi + 4]
add dword [esi + 0x14], edi
add dword [esi + 8], edx
add dword [ecx + 0x1c], edi
test edi, edi
je 0x4403fd
mov eax, dword [ecx + 8]
test eax, eax
je 0x4403fd
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x4414cc
mov eax, edi
mov dword [esp + 8], edi
neg eax
add eax, dword [esi + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x18]
mov dword [ebp - 0x7c], edx
mov dword [esp], eax
call fcn.00442d80
mov edx, dword [ebp - 0x7c]
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + 0x18], eax
mov dword [esi + 0x30], eax
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x2c]
cmp dword [eax + 4], 1
sbb eax, eax
not eax
and eax, 0x40
add eax, dword [ecx + 0x3c]
mov ecx, dword [ecx]
cmp ecx, 0xb
mov dword [ebp - 0x2c], ecx
je 0x4414c2
cmp ecx, 0xe
jne 0x4414f4
mov ecx, 0x100
add eax, ecx
or edi, edx
mov dword [esi + 0x2c], eax
je 0x440440
cmp dword [ebp + 0xc], 4
jne 0x44014e
test ebx, ebx
mov eax, 0xfffffffb
cmove ebx, eax
jmp 0x44014e
mov ecx, edi
and edi, 0xfffffff8
and ecx, 7
shr dword [ebp - 0x34], cl
cmp edi, 0x1f
ja 0x440492
test ebx, ebx
je 0x440350
mov edx, dword [ebp - 0x34]
mov ecx, edi
jmp 0x440478
test ebx, ebx
je 0x4414a0
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x440470
mov dword [ebp - 0x34], edx
mov edi, ecx
mov eax, dword [ebp - 0x34]
movzx edx, word [ebp - 0x34]
shr eax, 0x10
xor eax, 0xffff
cmp edx, eax
jne 0x44196d
mov ecx, dword [ebp - 0x2c]
cmp dword [ebp + 0xc], 6
mov dword [ecx + 0x40], edx
mov dword [ecx], 0xe
je 0x441c31
xor edi, edi
mov dword [ebp - 0x34], 0
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0xf
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x40]
test eax, eax
je 0x441990
cmp dword [ebp - 0x44], eax
mov edx, ebx
cmovbe eax, dword [ebp - 0x44]
cmp eax, ebx
cmovbe edx, eax
test edx, edx
je 0x440350
mov ecx, dword [ebp - 0x48]
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov dword [ebp - 0x7c], edx
mov dword [esp], ecx
call fcn.00447860
mov edx, dword [ebp - 0x7c]
mov eax, dword [ebp - 0x2c]
sub dword [ebp - 0x44], edx
add dword [ebp - 0x48], edx
sub ebx, edx
add esi, edx
sub dword [eax + 0x40], edx
jmp 0x440280
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x48]
test edx, edx
je 0x44058a
cmp edi, edx
jae 0x440565
test ebx, ebx
je 0x440350
mov ecx, edi
mov edi, edx
mov edx, dword [ebp - 0x34]
jmp 0x44054a
test ebx, ebx
je 0x4414a0
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, edi
jb 0x440542
mov dword [ebp - 0x34], edx
mov edx, edi
mov edi, ecx
mov ecx, edx
mov eax, 1
shl eax, cl
mov ecx, dword [ebp - 0x2c]
sub edi, edx
sub eax, 1
and eax, dword [ebp - 0x34]
add dword [ecx + 0x44], eax
mov ecx, edx
mov eax, dword [ebp - 0x2c]
shr dword [ebp - 0x34], cl
add dword [eax + 0x1bc4], edx
mov edx, dword [ebp - 0x2c]
mov dword [edx], 0x18
mov edx, dword [ebp - 0x44]
test edx, edx
je 0x440350
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x54]
sub edx, dword [ebp - 0x44]
mov eax, dword [ecx + 0x44]
cmp edx, eax
jae 0x44155b
sub eax, edx
cmp eax, dword [ecx + 0x2c]
jbe 0x4415c0
cmp dword [ecx + 0x1bc0], 0
je 0x4415c0
mov eax, dword [ebp - 0x3c]
mov dword [eax + 0x18], str.invalid_distance_too_far_back
mov dword [ecx], 0x1d
jmp 0x440280
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0x48]
test edx, edx
je 0x440648
cmp edi, edx
jae 0x440623
test ebx, ebx
je 0x440350
mov ecx, edi
mov edi, edx
mov edx, dword [ebp - 0x34]
jmp 0x440608
test ebx, ebx
je 0x4414a0
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, edi
jb 0x440600
mov dword [ebp - 0x34], edx
mov edx, edi
mov edi, ecx
mov ecx, edx
mov eax, 1
shl eax, cl
mov ecx, dword [ebp - 0x2c]
sub edi, edx
sub eax, 1
and eax, dword [ebp - 0x34]
add dword [ecx + 0x40], eax
mov ecx, edx
mov eax, dword [ebp - 0x2c]
shr dword [ebp - 0x34], cl
add dword [eax + 0x1bc4], edx
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x40]
mov dword [edx], 0x16
mov dword [edx + 0x1bc8], eax
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ecx + 0x50]
mov dword [ebp - 0x30], ecx
mov ecx, dword [eax + 0x58]
mov eax, 1
mov edx, dword [ebp - 0x30]
shl eax, cl
sub eax, 1
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x34]
and eax, dword [ebp - 0x4c]
lea eax, [edx + eax*4]
movzx ecx, byte [eax]
mov byte [ebp - 0x38], cl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [ebp - 0x40], ax
movzx eax, dl
cmp edi, eax
mov dword [ebp - 0x78], eax
jae 0x4406f5
test ebx, ebx
je 0x440350
mov ecx, edi
jmp 0x4406b8
test ebx, ebx
je 0x44152f
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
mov edx, dword [ebp - 0x30]
shl eax, cl
add ecx, 8
add dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x4c]
and eax, dword [ebp - 0x34]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [ebp - 0x38], dl
movzx edi, byte [eax + 1]
movzx eax, word [eax + 2]
mov edx, edi
mov word [ebp - 0x40], ax
movzx eax, dl
cmp eax, ecx
ja 0x4406b0
mov dword [ebp - 0x78], eax
mov edi, ecx
movzx eax, byte [ebp - 0x38]
test al, 0xf0
jne 0x4407bb
movzx ecx, word [ebp - 0x40]
mov dword [ebp - 0x74], ecx
movzx ecx, dl
mov dword [ebp - 0x4c], ecx
add ecx, eax
mov eax, 1
shl eax, cl
mov ecx, edx
mov edx, dword [ebp - 0x30]
sub eax, 1
mov dword [ebp - 0x70], eax
and eax, dword [ebp - 0x34]
shr eax, cl
add eax, dword [ebp - 0x74]
lea eax, [edx + eax*4]
movzx ecx, byte [eax]
mov byte [ebp - 0x38], cl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [ebp - 0x40], ax
movzx eax, dl
add eax, dword [ebp - 0x4c]
cmp edi, eax
jae 0x4407a5
test ebx, ebx
je 0x440350
mov edx, dword [ebp - 0x34]
jmp 0x44075e
test ebx, ebx
je 0x4416a5
movzx eax, byte [esi]
mov ecx, edi
add edi, 8
sub ebx, 1
add esi, 1
shl eax, cl
movzx ecx, byte [ebp - 0x4c]
add edx, eax
mov eax, dword [ebp - 0x70]
and eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x30]
add eax, dword [ebp - 0x74]
lea eax, [ecx + eax*4]
movzx ecx, byte [eax]
mov byte [ebp - 0x38], cl
movzx ecx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [ebp - 0x40], ax
movzx eax, cl
add eax, dword [ebp - 0x4c]
cmp eax, edi
ja 0x440756
mov dword [ebp - 0x34], edx
mov edx, ecx
mov eax, dword [ebp - 0x2c]
movzx ecx, byte [ebp - 0x4c]
shr dword [ebp - 0x34], cl
mov ecx, dword [ebp - 0x4c]
add dword [eax + 0x1bc4], ecx
sub edi, dword [ebp - 0x78]
movzx eax, dl
mov ecx, edx
mov edx, dword [ebp - 0x2c]
shr dword [ebp - 0x34], cl
sub edi, eax
add dword [edx + 0x1bc4], eax
movzx edx, byte [ebp - 0x38]
test dl, 0x40
jne 0x441a34
mov ecx, dword [ebp - 0x2c]
and edx, 0xf
movzx eax, word [ebp - 0x40]
mov dword [ecx + 0x48], edx
mov dword [ecx + 0x44], eax
mov dword [ecx], 0x17
jmp 0x440529
mov edx, dword [ebp - 0x2c]
cmp dword [edx], 0x1d
je 0x440280
cmp word [edx + 0x270], 0
je 0x441ca5
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x60]
mov dword [eax + 0x54], 9
mov dword [eax + 0x6c], edx
mov dword [eax + 0x4c], edx
mov eax, dword [ebp - 0x68]
mov dword [esp + 0x14], ecx
mov edx, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x78]
mov dword [esp], 1
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x6c]
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
call fcn.00442270
test eax, eax
mov dword [ebp - 0x50], eax
jne 0x441c8d
mov edx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x60]
mov eax, dword [edx + 0x6c]
mov dword [edx + 0x58], 6
mov dword [edx + 0x50], eax
mov eax, edx
add eax, 0x58
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x64]
mov dword [esp + 0x14], ecx
mov dword [esp + 0xc], eax
mov eax, dword [edx + 0x64]
mov dword [esp + 8], eax
mov eax, dword [edx + 0x60]
mov dword [esp], 2
lea eax, [edx + eax*2 + 0x70]
mov dword [esp + 4], eax
call fcn.00442270
test eax, eax
mov dword [ebp - 0x50], eax
jne 0x441c75
mov eax, dword [ebp - 0x2c]
cmp dword [ebp + 0xc], 6
mov dword [eax], 0x13
je 0x440350
mov edx, dword [ebp - 0x2c]
mov dword [edx], 0x14
cmp ebx, 5
ja 0x441b28
mov edx, dword [ebp - 0x2c]
mov eax, 1
mov ecx, dword [edx + 0x4c]
mov dword [edx + 0x1bc4], 0
mov dword [ebp - 0x40], ecx
mov ecx, dword [edx + 0x54]
mov edx, dword [ebp - 0x40]
shl eax, cl
sub eax, 1
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x34]
and eax, dword [ebp - 0x4c]
lea eax, [edx + eax*4]
movzx ecx, byte [eax]
mov byte [ebp - 0x30], cl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [ebp - 0x38], ax
movzx eax, dl
cmp edi, eax
mov dword [ebp - 0x70], eax
jae 0x440975
test ebx, ebx
je 0x440350
mov ecx, edi
jmp 0x440938
test ebx, ebx
je 0x44152f
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
mov edx, dword [ebp - 0x40]
shl eax, cl
add ecx, 8
add dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x4c]
and eax, dword [ebp - 0x34]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [ebp - 0x30], dl
movzx edi, byte [eax + 1]
movzx eax, word [eax + 2]
mov edx, edi
mov word [ebp - 0x38], ax
movzx eax, dl
cmp eax, ecx
ja 0x440930
mov dword [ebp - 0x70], eax
mov edi, ecx
cmp byte [ebp - 0x30], 0
je 0x440a45
movzx eax, byte [ebp - 0x30]
test al, 0xf0
jne 0x440a45
movzx ecx, word [ebp - 0x38]
mov dword [ebp - 0x78], ecx
movzx ecx, dl
mov dword [ebp - 0x4c], ecx
add ecx, eax
mov eax, 1
shl eax, cl
mov ecx, edx
mov edx, dword [ebp - 0x40]
sub eax, 1
mov dword [ebp - 0x74], eax
and eax, dword [ebp - 0x34]
shr eax, cl
add eax, dword [ebp - 0x78]
lea eax, [edx + eax*4]
movzx ecx, byte [eax]
mov byte [ebp - 0x30], cl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [ebp - 0x38], ax
movzx eax, dl
add eax, dword [ebp - 0x4c]
cmp edi, eax
jae 0x440a2f
test ebx, ebx
je 0x440350
mov edx, dword [ebp - 0x34]
jmp 0x4409e8
test ebx, ebx
je 0x4416a5
movzx eax, byte [esi]
mov ecx, edi
add edi, 8
sub ebx, 1
add esi, 1
shl eax, cl
movzx ecx, byte [ebp - 0x4c]
add edx, eax
mov eax, dword [ebp - 0x74]
and eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x40]
add eax, dword [ebp - 0x78]
lea eax, [ecx + eax*4]
movzx ecx, byte [eax]
mov byte [ebp - 0x30], cl
movzx ecx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [ebp - 0x38], ax
movzx eax, cl
add eax, dword [ebp - 0x4c]
cmp eax, edi
ja 0x4409e0
mov dword [ebp - 0x34], edx
mov edx, ecx
movzx ecx, byte [ebp - 0x4c]
shr dword [ebp - 0x34], cl
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x4c]
sub edi, dword [ebp - 0x70]
mov dword [eax + 0x1bc4], ecx
movzx eax, dl
mov ecx, edx
mov edx, dword [ebp - 0x2c]
sub edi, eax
shr dword [ebp - 0x34], cl
add dword [edx + 0x1bc4], eax
movzx eax, word [ebp - 0x38]
cmp byte [ebp - 0x30], 0
mov dword [edx + 0x40], eax
je 0x441985
movzx edx, byte [ebp - 0x30]
test dl, 0x20
jne 0x441c4a
test dl, 0x40
jne 0x441bb7
mov ecx, dword [ebp - 0x2c]
and edx, 0xf
mov dword [ecx + 0x48], edx
mov dword [ecx], 0x15
jmp 0x4405e5
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 8]
test edx, edx
je 0x440b6b
cmp edi, 0x1f
ja 0x440ad7
test ebx, ebx
je 0x440350
mov edx, dword [ebp - 0x34]
mov ecx, edi
jmp 0x440abd
test ebx, ebx
je 0x4414a0
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x440ab5
mov dword [ebp - 0x34], edx
mov edi, ecx
mov eax, dword [ebp - 0x54]
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x2c]
sub eax, dword [ebp - 0x44]
add dword [edx + 0x14], eax
add dword [ecx + 0x1c], eax
test eax, eax
je 0x440b1b
cmp dword [ecx + 0x10], 0
je 0x44199e
mov edx, dword [ebp - 0x48]
mov dword [esp + 8], eax
sub edx, eax
mov dword [esp + 4], edx
mov eax, dword [ecx + 0x18]
mov dword [esp], eax
call fcn.00442d80
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x3c]
mov dword [ecx + 0x18], eax
mov dword [edx + 0x30], eax
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x34]
cmp dword [ecx + 0x10], 0
jne 0x440b50
mov eax, dword [ebp - 0x34]
and edx, 0xff00
mov ecx, dword [ebp - 0x34]
shl edx, 8
shl eax, 0x18
shr ecx, 0x18
lea ecx, [eax + ecx]
mov eax, dword [ebp - 0x34]
shr eax, 8
and eax, 0xff00
lea eax, [ecx + eax]
lea edx, [eax + edx]
mov eax, dword [ebp - 0x2c]
cmp edx, dword [eax + 0x18]
jne 0x441aee
mov edi, dword [ebp - 0x44]
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x54], edi
xor edi, edi
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1b
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 8]
test eax, eax
je 0x441c16
mov ecx, dword [edx + 0x10]
test ecx, ecx
je 0x441c16
cmp edi, 0x1f
ja 0x440bc3
test ebx, ebx
je 0x440350
mov edx, dword [ebp - 0x34]
mov ecx, edi
jmp 0x440ba9
test ebx, ebx
je 0x4414a0
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x440ba1
mov dword [ebp - 0x34], edx
mov edi, ecx
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x34]
cmp dword [eax + 0x1c], ecx
je 0x441c62
mov edx, dword [ebp - 0x3c]
mov dword [edx + 0x18], str.incorrect_length_check
mov dword [eax], 0x1d
jmp 0x440280
cmp edi, 0xd
ja 0x440c22
test ebx, ebx
je 0x440350
mov edx, dword [ebp - 0x34]
mov ecx, edi
jmp 0x440c08
test ebx, ebx
je 0x4414a0
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xd
jbe 0x440c00
mov dword [ebp - 0x34], edx
mov edi, ecx
mov ecx, dword [ebp - 0x34]
sub edi, 0xe
mov eax, dword [ebp - 0x2c]
and ecx, 0x1f
add ecx, 0x101
mov dword [eax + 0x60], ecx
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x2c]
shr eax, 5
and eax, 0x1f
lea edx, [eax + 1]
mov eax, dword [ebp - 0x34]
shr dword [ebp - 0x34], 0xe
mov dword [ecx + 0x64], edx
shr eax, 0xa
and eax, 0xf
add eax, 4
cmp dword [ebp - 0x30], 0x11e
mov dword [ecx + 0x5c], eax
ja 0x441a4c
cmp edx, 0x1e
ja 0x441a4c
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + 0x68], 0
mov dword [ecx], 0x11
mov edx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x68]
mov ecx, dword [ecx + 0x5c]
cmp ecx, eax
mov dword [ebp - 0x30], ecx
jbe 0x440cf4
mov ecx, edi
mov dword [ebp - 0x40], eax
cmp ecx, 2
ja 0x440cbb
test ebx, ebx
je 0x44152f
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
shl eax, cl
add ecx, 8
add dword [ebp - 0x34], eax
mov edi, dword [ebp - 0x40]
sub ecx, 3
movzx eax, word [ebp - 0x34]
mov edx, dword [ebp - 0x2c]
movzx edi, word [edi + edi + 0x44fe00]
and eax, 7
mov word [edx + edi*2 + 0x70], ax
mov eax, dword [ebp - 0x30]
add dword [ebp - 0x40], 1
mov edi, dword [ebp - 0x40]
shr dword [ebp - 0x34], 3
cmp edi, eax
mov dword [edx + 0x68], edi
jb 0x440c9d
mov edx, dword [ebp - 0x40]
mov edi, ecx
mov eax, edx
cmp eax, 0x12
mov edx, eax
ja 0x440d1c
movzx eax, word [edx + edx + 0x44fe00]
add edx, 1
mov ecx, dword [ebp - 0x2c]
cmp edx, 0x13
mov word [ecx + eax*2 + 0x70], 0
jne 0x440cfb
mov dword [ecx + 0x68], 0x13
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x60]
mov dword [eax + 0x54], 7
mov dword [eax + 0x6c], edx
mov dword [eax + 0x4c], edx
mov eax, dword [ebp - 0x68]
mov dword [esp + 0x14], ecx
mov edx, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x6c]
mov dword [esp + 8], 0x13
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edx
mov dword [esp + 4], ecx
mov dword [esp], 0
call fcn.00442270
test eax, eax
mov dword [ebp - 0x50], eax
jne 0x441b9f
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + 0x68], 0
mov dword [ecx], 0x12
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x2c]
mov eax, dword [eax + 0x60]
mov dword [ebp - 0x78], eax
add eax, dword [edx + 0x64]
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x74]
mov eax, dword [eax + 0x68]
cmp eax, edx
mov dword [ebp - 0x70], eax
jae 0x4407f6
mov ecx, dword [ebp - 0x2c]
mov edx, 1
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ecx + 0x4c]
mov dword [ebp - 0x40], ecx
mov ecx, dword [eax + 0x54]
mov eax, dword [ebp - 0x34]
shl edx, cl
mov ecx, edx
sub ecx, 1
and eax, ecx
mov dword [ebp - 0x38], ecx
mov ecx, dword [ebp - 0x40]
lea eax, [ecx + eax*4]
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [ebp - 0x30], ax
movzx eax, dl
cmp edi, eax
mov dword [ebp - 0x4c], eax
jae 0x440e32
test ebx, ebx
je 0x440350
mov edx, dword [ebp - 0x34]
mov ecx, edi
jmp 0x440df8
test ebx, ebx
je 0x4414a0
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
mov edi, dword [ebp - 0x40]
shl eax, cl
add ecx, 8
add edx, eax
mov eax, dword [ebp - 0x38]
and eax, edx
lea eax, [edi + eax*4]
movzx edi, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [ebp - 0x30], ax
mov eax, edi
movzx eax, al
cmp eax, ecx
mov dword [ebp - 0x4c], eax
ja 0x440df0
mov dword [ebp - 0x34], edx
mov edx, edi
mov edi, ecx
cmp word [ebp - 0x30], 0xf
jbe 0x4416c5
cmp word [ebp - 0x30], 0x10
je 0x4418ce
cmp word [ebp - 0x30], 0x11
je 0x4419cc
movzx edx, dl
mov dword [ebp - 0x30], edx
add edx, 7
cmp edi, edx
jae 0x440e91
test ebx, ebx
je 0x440350
mov ecx, edi
mov edi, dword [ebp - 0x34]
jmp 0x440e78
test ebx, ebx
je 0x44181a
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
shl eax, cl
add ecx, 8
add edi, eax
cmp ecx, edx
jb 0x440e70
mov dword [ebp - 0x34], edi
mov edi, ecx
mov edx, dword [ebp - 0x34]
movzx ecx, byte [ebp - 0x30]
sub edi, dword [ebp - 0x4c]
shr edx, cl
sub edi, 7
mov eax, edx
and eax, 0x7f
shr edx, 7
add eax, 0xb
mov dword [ebp - 0x34], edx
xor edx, edx
add eax, dword [ebp - 0x70]
cmp dword [ebp - 0x74], eax
jb 0x441bfe
mov dword [ebp - 0x30], ebx
mov ecx, dword [ebp - 0x70]
mov ebx, dword [ebp - 0x2c]
mov word [ebx + ecx*2 + 0x70], dx
add ecx, 1
cmp eax, ecx
jne 0x440ec5
mov ecx, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x30]
mov dword [ecx + 0x68], eax
jmp 0x440d8c
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x1e
mov ebx, 0xfffffffc
jmp 0x44014e
cmp edi, 0x1f
ja 0x440f26
test ebx, ebx
je 0x440350
mov edx, dword [ebp - 0x34]
mov ecx, edi
jmp 0x440f0e
test ebx, ebx
je 0x4414a0
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x440f06
mov dword [ebp - 0x34], edx
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x20]
test eax, eax
je 0x440f36
mov ecx, dword [ebp - 0x34]
mov dword [eax + 4], ecx
mov edi, dword [ebp - 0x2c]
test byte [edi + 0x11], 2
jne 0x4417d6
mov edx, dword [ebp - 0x2c]
xor edi, edi
mov dword [ebp - 0x34], 0
mov dword [edx], 3
test ebx, ebx
je 0x440350
mov edx, dword [ebp - 0x34]
mov ecx, edi
jmp 0x440f6c
test ebx, ebx
je 0x4414a0
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x440f64
mov dword [ebp - 0x34], edx
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x440f9e
movzx edx, byte [ebp - 0x34]
mov dword [eax + 8], edx
mov edx, dword [ebp - 0x34]
shr edx, 8
mov dword [eax + 0xc], edx
mov edi, dword [ebp - 0x2c]
mov edx, dword [edi + 0x10]
test dh, 2
jne 0x441789
mov ecx, dword [ebp - 0x2c]
xor edi, edi
mov dword [ebp - 0x34], 0
mov dword [ecx], 4
test dh, 4
je 0x441641
cmp edi, 0xf
ja 0x441002
test ebx, ebx
je 0x440350
mov ecx, edi
mov edi, edx
mov edx, dword [ebp - 0x34]
jmp 0x440fe8
test ebx, ebx
je 0x4414a0
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x440fe0
mov dword [ebp - 0x34], edx
mov edx, edi
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + 0x40], eax
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x441018
mov ecx, dword [ebp - 0x34]
mov dword [eax + 0x14], ecx
test dh, 2
jne 0x44182f
mov eax, edx
xor edi, edi
and eax, 0x400
mov dword [ebp - 0x34], 0
mov ecx, dword [ebp - 0x2c]
mov dword [ecx], 5
jmp 0x441317
cmp edi, 0xf
ja 0x441075
test ebx, ebx
je 0x440350
mov edx, dword [ebp - 0x34]
mov ecx, edi
jmp 0x44105b
test ebx, ebx
je 0x4414a0
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x441053
mov dword [ebp - 0x34], edx
mov edi, ecx
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x2c]
cmp al, 8
mov dword [edx + 0x10], eax
jne 0x441a1f
test dword [ebp - 0x34], 0xe000
jne 0x441a64
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x4410a8
mov eax, dword [ebp - 0x34]
shr eax, 8
and eax, 1
mov dword [edx], eax
test dword [ebp - 0x34], 0x200
je 0x4410e4
movzx eax, byte [ebp - 0x34]
mov edx, dword [ebp - 0x2c]
mov dword [esp + 8], 2
mov byte [ebp - 0x1c], al
mov eax, dword [ebp - 0x34]
shr eax, 8
mov byte [ebp - 0x1b], al
lea eax, [ebp - 0x1c]
mov dword [esp + 4], eax
mov eax, dword [edx + 0x18]
mov dword [esp], eax
call fcn.00442d80
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + 0x18], eax
mov edi, dword [ebp - 0x2c]
mov dword [ebp - 0x34], 0
mov dword [edi], 2
xor edi, edi
jmp 0x440ef7
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 8]
test edx, edx
je 0x4419be
cmp edi, 0xf
ja 0x441144
test ebx, ebx
je 0x440350
mov ecx, edi
mov edi, edx
mov edx, dword [ebp - 0x34]
jmp 0x441128
test ebx, ebx
je 0x4414a0
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x441120
mov dword [ebp - 0x34], edx
mov edx, edi
mov edi, ecx
cmp dword [ebp - 0x34], 0x8b1f
je 0x44186a
mov eax, dword [ebp - 0x2c]
mov dword [eax + 0x10], 0
mov eax, dword [eax + 0x20]
test eax, eax
je 0x441169
mov dword [eax + 0x30], 0xffffffff
and dl, 1
je 0x4417be
mov eax, dword [ebp - 0x34]
mov ecx, 0x1f
mov edx, dword [ebp - 0x34]
shl eax, 8
shr edx, 8
and eax, 0xffff
add eax, edx
xor edx, edx
div ecx
test edx, edx
jne 0x4417be
mov eax, dword [ebp - 0x34]
and eax, 0xf
cmp eax, 8
je 0x441a7c
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x2c]
mov dword [ecx + 0x18], str.unknown_compression_method
mov dword [eax], 0x1d
jmp 0x440280
cmp edi, 0xf
jbe 0x440f55
jmp 0x440f84
mov ecx, dword [ebp - 0x44]
test ecx, ecx
je 0x440350
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x48]
mov eax, dword [ecx + 0x40]
mov byte [edx], al
add edx, 1
mov dword [ebp - 0x48], edx
sub dword [ebp - 0x44], 1
mov dword [ecx], 0x14
jmp 0x440280
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x10]
test dh, 2
je 0x4415f4
cmp edi, 0xf
ja 0x441244
test ebx, ebx
je 0x440350
mov ecx, edi
mov edi, edx
mov edx, dword [ebp - 0x34]
jmp 0x441228
test ebx, ebx
je 0x4414a0
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x441220
mov dword [ebp - 0x34], edx
mov edx, edi
mov edi, ecx
mov ecx, dword [ebp - 0x2c]
movzx eax, word [ecx + 0x18]
cmp eax, dword [ebp - 0x34]
je 0x4415eb
mov eax, dword [ebp - 0x3c]
mov dword [eax + 0x18], str.header_crc_mismatch
mov dword [ecx], 0x1d
jmp 0x440280
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0x10]
test dh, 0x10
je 0x441515
test ebx, ebx
je 0x440350
xor ecx, ecx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x40], edi
nop
lea esi, [esi]
mov ebx, dword [ebp - 0x4c]
mov edi, dword [ebp - 0x2c]
movzx edx, byte [ebx + ecx]
add ecx, 1
mov eax, dword [edi + 0x20]
movzx esi, dl
test eax, eax
mov dword [ebp - 0x30], esi
je 0x4412c5
mov edi, dword [eax + 0x24]
test edi, edi
je 0x4412c5
mov esi, dword [ebp - 0x2c]
mov ebx, dword [esi + 0x40]
cmp ebx, dword [eax + 0x28]
jae 0x4412c5
mov byte [edi + ebx], dl
add ebx, 1
mov dword [esi + 0x40], ebx
cmp ecx, dword [ebp - 0x38]
jae 0x4412d1
mov ebx, dword [ebp - 0x30]
test ebx, ebx
jne 0x441290
mov eax, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x38]
mov esi, dword [ebp - 0x4c]
mov edi, dword [ebp - 0x40]
test byte [eax + 0x11], 2
jne 0x44165d
mov edx, dword [ebp - 0x30]
sub ebx, ecx
add esi, ecx
test edx, edx
jne 0x440350
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0x10]
mov eax, dword [ebp - 0x2c]
mov dword [eax], 8
jmp 0x441201
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0x10]
mov eax, edx
and eax, 0x400
test eax, eax
je 0x4413b6
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x40]
cmp ebx, eax
mov ecx, eax
cmovbe ecx, ebx
test ecx, ecx
mov dword [ebp - 0x38], eax
je 0x4413a5
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x20]
test eax, eax
mov dword [ebp - 0x30], eax
je 0x441392
mov eax, dword [eax + 0x10]
test eax, eax
mov dword [ebp - 0x40], eax
je 0x441392
mov edx, dword [ebp - 0x30]
mov eax, dword [edx + 0x14]
mov edx, dword [edx + 0x18]
sub eax, dword [ebp - 0x38]
mov dword [ebp - 0x7c], ecx
mov dword [esp + 4], esi
mov dword [ebp - 0x4c], edx
lea edx, [ecx + eax]
mov dword [ebp - 0x30], edx
mov edx, dword [ebp - 0x4c]
sub edx, eax
mov dword [ebp - 0x38], edx
mov edx, dword [ebp - 0x4c]
cmp dword [ebp - 0x30], edx
mov edx, dword [ebp - 0x38]
cmovbe edx, ecx
add eax, dword [ebp - 0x40]
mov dword [esp + 8], edx
mov dword [esp], eax
call fcn.00447860
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x7c]
mov edx, dword [eax + 0x10]
and dh, 2
jne 0x441946
mov eax, dword [ebp - 0x2c]
sub ebx, ecx
add esi, ecx
sub dword [eax + 0x40], ecx
mov edx, dword [ebp - 0x2c]
mov ecx, dword [edx + 0x40]
test ecx, ecx
jne 0x440350
mov edx, dword [edx + 0x10]
mov eax, dword [ebp - 0x2c]
mov dword [eax + 0x40], 0
mov dword [eax], 6
test dh, 8
je 0x441541
test ebx, ebx
je 0x440350
xor ecx, ecx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x40], edi
mov ebx, dword [ebp - 0x4c]
mov edi, dword [ebp - 0x2c]
movzx edx, byte [ebx + ecx]
add ecx, 1
mov eax, dword [edi + 0x20]
movzx esi, dl
test eax, eax
mov dword [ebp - 0x30], esi
je 0x441417
mov edi, dword [eax + 0x1c]
test edi, edi
je 0x441417
mov esi, dword [ebp - 0x2c]
mov ebx, dword [esi + 0x40]
cmp ebx, dword [eax + 0x20]
jae 0x441417
mov byte [edi + ebx], dl
add ebx, 1
mov dword [esi + 0x40], ebx
cmp ecx, dword [ebp - 0x38]
jae 0x441423
mov edx, dword [ebp - 0x30]
test edx, edx
jne 0x4413e2
mov eax, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x38]
mov esi, dword [ebp - 0x4c]
mov edi, dword [ebp - 0x40]
test byte [eax + 0x11], 2
jne 0x441681
mov eax, dword [ebp - 0x30]
sub ebx, ecx
add esi, ecx
test eax, eax
jne 0x440350
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0x10]
mov eax, dword [ebp - 0x2c]
mov dword [eax + 0x40], 0
mov dword [eax], 7
jmp 0x44126f
mov dword [ebp - 0x30], ebx
mov edx, esi
mov ebx, 1
mov esi, dword [ebp - 0x3c]
jmp 0x440360
mov dword [ebp - 0x30], ebx
mov edx, esi
mov ebx, 0xfffffffd
mov esi, dword [ebp - 0x3c]
jmp 0x440360
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x10]
jmp 0x4413c6
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0x10]
jmp 0x440fbf
mov dword [ebp - 0x30], ebx
mov edi, ecx
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x34], edx
mov edx, esi
mov esi, dword [ebp - 0x3c]
jmp 0x440360
mov dword [ecx], 0xc
mov al, 0xc
jmp 0x44018c
sub eax, 0xffffff80
xor ecx, ecx
jmp 0x44042d
mov ecx, dword [ebp - 0x2c]
mov eax, edi
mov dword [esp + 8], edi
neg eax
add eax, dword [esi + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x18]
mov dword [ebp - 0x7c], edx
mov dword [esp], eax
call fcn.00442980
mov edx, dword [ebp - 0x7c]
jmp 0x4403f4
cmp ecx, 0x13
je 0x440428
xor ecx, ecx
nop
jmp 0x44042d
mov edi, dword [esi + 4]
test edi, edi
jne 0x44014e
jmp 0x44017e
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x4412fc
mov dword [eax + 0x24], 0
jmp 0x4412fc
mov dword [ebp - 0x30], ebx
mov edx, esi
mov ebx, dword [ebp - 0x50]
mov edi, ecx
mov esi, dword [ebp - 0x3c]
jmp 0x440360
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x44144e
mov dword [eax + 0x1c], 0
jmp 0x44144e
mov edx, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x2c]
sub edx, eax
mov eax, dword [ecx + 0x40]
mov dword [ebp - 0x38], eax
mov ecx, dword [ebp - 0x38]
cmp eax, dword [ebp - 0x44]
cmova eax, dword [ebp - 0x44]
sub dword [ebp - 0x44], eax
mov dword [ebp - 0x30], eax
sub ecx, eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x38], ebx
mov ebx, dword [ebp - 0x48]
mov dword [ebp - 0x40], esi
mov esi, dword [ebp - 0x30]
mov dword [eax + 0x40], ecx
xor eax, eax
nop
movzx ecx, byte [edx + eax]
mov byte [ebx + eax], cl
add eax, 1
cmp eax, esi
jne 0x441590
mov edx, dword [ebp - 0x2c]
add dword [ebp - 0x48], eax
mov ebx, dword [ebp - 0x38]
mov esi, dword [ebp - 0x40]
mov eax, dword [edx + 0x40]
test eax, eax
jne 0x440280
mov dword [edx], 0x14
jmp 0x440280
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0x30]
cmp eax, edx
jbe 0x4416b8
sub eax, edx
mov edx, dword [ecx + 0x28]
sub edx, eax
add edx, dword [ecx + 0x34]
mov ecx, dword [ebp - 0x2c]
mov ecx, dword [ecx + 0x40]
cmp eax, ecx
mov dword [ebp - 0x38], ecx
cmova eax, ecx
jmp 0x441569
xor edi, edi
mov dword [ebp - 0x34], 0
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x44160e
sar edx, 9
and edx, 1
mov dword [eax + 0x2c], edx
mov dword [eax + 0x30], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00442d80
mov edx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x3c]
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov dword [edx], 0xb
jmp 0x440280
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax + 0x20]
xor eax, eax
test ecx, ecx
je 0x441031
mov dword [ecx + 0x10], 0
jmp 0x441031
mov dword [esp + 8], ecx
mov dword [esp + 4], esi
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x7c], ecx
mov dword [esp], eax
call fcn.00442d80
mov edx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x7c]
mov dword [edx + 0x18], eax
jmp 0x4412e7
mov dword [esp + 8], ecx
mov dword [esp + 4], esi
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x7c], ecx
mov dword [esp], eax
call fcn.00442d80
mov edx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x7c]
mov dword [edx + 0x18], eax
jmp 0x441439
mov dword [ebp - 0x30], ebx
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x34], edx
mov edx, esi
mov esi, dword [ebp - 0x3c]
jmp 0x440360
mov ecx, dword [ebp - 0x2c]
sub edx, eax
add edx, dword [ecx + 0x34]
jmp 0x4415d8
cmp edi, dword [ebp - 0x4c]
jae 0x4416fb
test ebx, ebx
je 0x440350
mov ecx, edi
mov edi, dword [ebp - 0x34]
jmp 0x4416e1
test ebx, ebx
je 0x44181a
movzx eax, byte [esi]
sub ebx, 1
add esi, 1
shl eax, cl
add ecx, 8
add edi, eax
cmp ecx, dword [ebp - 0x4c]
jb 0x4416d9
mov dword [ebp - 0x34], edi
mov edi, ecx
mov ecx, edx
mov eax, dword [ebp - 0x70]
shr dword [ebp - 0x34], cl
mov edx, dword [ebp - 0x2c]
movzx ecx, word [ebp - 0x30]
sub edi, dword [ebp - 0x4c]
mov word [edx + eax*2 + 0x70], cx
add eax, 1
mov dword [edx + 0x68], eax
jmp 0x440d8c
mov eax, dword [ebp - 0x2c]
cmp dword [ebp + 0xc], 6
mov dword [eax + 0x4c], 0x44fec0
mov dword [eax + 0x54], 9
mov dword [eax + 0x50], 0x44fe40
mov dword [eax + 0x58], 5
mov dword [eax], 0x13
jne 0x440274
mov dword [ebp - 0x30], ebx
mov edx, esi
mov ebx, dword [ebp - 0x50]
mov esi, dword [ebp - 0x3c]
sub edi, 3
shr dword [ebp - 0x34], 3
jmp 0x440360
mov eax, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x2c]
mov dword [eax + 0x18], str.invalid_block_type
mov dword [edi], 0x1d
jmp 0x440274
mov edi, dword [ebp - 0x2c]
mov dword [edi], 0x10
jmp 0x440274
movzx eax, byte [ebp - 0x34]
mov dword [esp + 8], 2
mov byte [ebp - 0x1c], al
mov eax, dword [ebp - 0x34]
shr eax, 8
mov byte [ebp - 0x1b], al
lea eax, [ebp - 0x1c]
mov dword [esp + 4], eax
mov eax, dword [edi + 0x18]
mov dword [esp], eax
call fcn.00442d80
mov edx, dword [edi + 0x10]
mov dword [edi + 0x18], eax
jmp 0x440fad
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x2c]
mov dword [eax + 0x18], str.incorrect_header_check
mov dword [edx], 0x1d
jmp 0x440280
movzx eax, byte [ebp - 0x34]
mov dword [esp + 8], 4
mov byte [ebp - 0x1c], al
mov eax, dword [ebp - 0x34]
shr eax, 8
mov byte [ebp - 0x1b], al
mov eax, dword [ebp - 0x34]
shr eax, 0x10
mov byte [ebp - 0x1a], al
mov eax, dword [ebp - 0x34]
shr eax, 0x18
mov byte [ebp - 0x19], al
lea eax, [ebp - 0x1c]
mov dword [esp + 4], eax
mov eax, dword [edi + 0x18]
mov dword [esp], eax
call fcn.00442d80
mov dword [edi + 0x18], eax
jmp 0x440f43
mov dword [ebp - 0x30], ebx
mov edx, esi
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x34], edi
mov esi, dword [ebp - 0x3c]
mov edi, ecx
jmp 0x440360
movzx eax, byte [ebp - 0x34]
mov edx, dword [ebp - 0x2c]
mov dword [esp + 8], 2
mov byte [ebp - 0x1c], al
mov eax, dword [ebp - 0x34]
shr eax, 8
mov byte [ebp - 0x1b], al
lea eax, [ebp - 0x1c]
mov dword [esp + 4], eax
mov eax, dword [edx + 0x18]
mov dword [esp], eax
call fcn.00442d80
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0x10]
mov dword [ecx + 0x18], eax
jmp 0x441021
test dl, 2
je 0x441151
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00442d80
mov ecx, dword [ebp - 0x2c]
lea edx, [ebp - 0x1c]
mov byte [ebp - 0x1c], 0x1f
mov byte [ebp - 0x1b], 0x8b
mov dword [ecx + 0x18], eax
mov dword [esp + 8], 2
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00442d80
mov edi, dword [ebp - 0x2c]
mov dword [ebp - 0x34], 0
mov dword [edi], 1
mov dword [edi + 0x18], eax
xor edi, edi
jmp 0x440280
movzx edx, dl
lea eax, [edx + 2]
cmp edi, eax
mov dword [ebp - 0x30], eax
jae 0x4418fb
test ebx, ebx
je 0x440350
movzx eax, byte [esi]
mov ecx, edi
sub ebx, 1
add esi, 1
add edi, 8
shl eax, cl
add dword [ebp - 0x34], eax
cmp edi, dword [ebp - 0x30]
jb 0x4418db
mov ecx, edx
sub edi, dword [ebp - 0x4c]
shr dword [ebp - 0x34], cl
cmp dword [ebp - 0x70], 0
je 0x441bfe
mov eax, dword [ebp - 0x2c]
sub edi, 2
mov ecx, dword [ebp - 0x70]
movzx edx, word [eax + ecx*2 + 0x6e]
mov eax, dword [ebp - 0x34]
shr dword [ebp - 0x34], 2
and eax, 3
add eax, 3
jmp 0x440eb0
mov edx, dword [ebp - 0x2c]
mov ecx, edi
and edi, 0xfffffff8
and ecx, 7
shr dword [ebp - 0x34], cl
mov dword [edx], 0x1a
jmp 0x440280
mov edx, dword [ebp - 0x2c]
mov dword [esp + 8], ecx
mov dword [esp + 4], esi
mov eax, dword [edx + 0x18]
mov dword [ebp - 0x7c], ecx
mov dword [esp], eax
call fcn.00442d80
mov edx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x7c]
mov dword [edx + 0x18], eax
jmp 0x44139b
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x2c]
mov dword [eax + 0x18], str.invalid_stored_block_lengths
mov dword [edx], 0x1d
jmp 0x440280
mov dword [edx], 0x19
jmp 0x440280
mov edx, dword [ebp - 0x2c]
mov dword [edx], 0xb
jmp 0x440280
mov ecx, dword [ebp - 0x48]
mov edx, dword [ebp - 0x2c]
mov dword [esp + 8], eax
sub ecx, eax
mov dword [esp + 4], ecx
mov eax, dword [edx + 0x18]
mov dword [esp], eax
call fcn.00442980
jmp 0x440b0f
mov edx, dword [ebp - 0x2c]
mov dword [edx], 0xc
jmp 0x440280
movzx edx, dl
lea ecx, [edx + 3]
cmp edi, ecx
mov dword [ebp - 0x30], ecx
jae 0x4419f9
test ebx, ebx
je 0x440350
movzx eax, byte [esi]
mov ecx, edi
sub ebx, 1
add esi, 1
add edi, 8
shl eax, cl
add dword [ebp - 0x34], eax
cmp edi, dword [ebp - 0x30]
jb 0x4419d9
mov eax, dword [ebp - 0x34]
mov ecx, edx
shr eax, cl
mov edx, eax
and eax, 7
shr edx, 3
add eax, 3
mov dword [ebp - 0x34], edx
mov edx, 0xfffffffd
sub edx, dword [ebp - 0x4c]
add edi, edx
xor edx, edx
jmp 0x440eb0
mov ecx, dword [ebp - 0x3c]
mov dword [ecx + 0x18], str.unknown_compression_method
mov dword [edx], 0x1d
jmp 0x440280
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x2c]
mov dword [ecx + 0x18], str.invalid_distance_code
mov dword [eax], 0x1d
jmp 0x440280
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x2c]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov dword [edx], 0x1d
jmp 0x440280
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x2c]
mov dword [eax + 0x18], str.unknown_header_flags_set
mov dword [edx], 0x1d
jmp 0x440280
mov edx, dword [ebp - 0x2c]
shr dword [ebp - 0x34], 4
mov ecx, dword [ebp - 0x34]
mov eax, dword [edx + 0x24]
and ecx, 0xf
add ecx, 8
test eax, eax
jne 0x441b09
mov dword [edx + 0x24], ecx
mov edx, dword [ebp - 0x2c]
mov eax, 1
shl eax, cl
mov dword [edx + 0x14], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00442980
mov ecx, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x3c]
mov dword [ecx + 0x18], eax
mov dword [edi + 0x30], eax
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x34], 0
and eax, 0x200
cmp eax, 1
sbb eax, eax
xor edi, edi
and eax, 2
add eax, 9
mov dword [ecx], eax
jmp 0x440280
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x44]
mov dword [edx + 0x18], str.incorrect_data_check
mov dword [ebp - 0x54], ecx
mov dword [eax], 0x1d
jmp 0x440280
cmp ecx, eax
jbe 0x441a96
mov ecx, dword [ebp - 0x3c]
sub edi, 4
mov eax, dword [ebp - 0x2c]
mov dword [ecx + 0x18], str.invalid_window_size
mov dword [eax], 0x1d
jmp 0x440280
cmp dword [ebp - 0x44], 0x101
jbe 0x4408d2
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x48]
mov edx, dword [ebp - 0x44]
mov dword [ecx + 4], ebx
mov ebx, dword [ebp - 0x2c]
mov dword [ecx + 0xc], eax
mov dword [ecx + 0x10], edx
mov dword [ecx], esi
mov ecx, dword [ebp - 0x34]
mov dword [ebx + 0x3c], edi
mov esi, dword [ebp - 0x54]
mov edi, dword [ebp - 0x3c]
mov dword [ebx + 0x38], ecx
mov dword [esp + 4], esi
mov dword [esp], edi
call fcn.0043f750
mov eax, dword [edi + 0xc]
mov ecx, dword [ebp - 0x2c]
mov edx, dword [edi + 0x10]
mov esi, dword [edi]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ecx + 0x38]
mov ebx, dword [edi + 4]
mov dword [ebp - 0x44], edx
cmp dword [eax], 0xb
mov dword [ebp - 0x34], ecx
mov edi, dword [eax + 0x3c]
jne 0x440280
mov dword [eax + 0x1bc4], 0xffffffff
jmp 0x440280
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x2c]
mov dword [eax + 0x18], str.invalid_code_lengths_set
mov dword [edx], 0x1d
jmp 0x440280
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x2c]
mov dword [eax + 0x18], str.invalid_literal_length_code
mov dword [edx], 0x1d
jmp 0x440280
mov edx, esi
mov esi, dword [ebp - 0x3c]
mov dword [ebp - 0x30], ebx
mov ebx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x44]
mov dword [esi], edx
mov edx, dword [ebp - 0x30]
mov dword [esi + 0xc], ebx
mov ebx, dword [ebp - 0x34]
mov dword [esi + 0x10], eax
mov dword [esi + 4], edx
mov dword [ecx + 0x38], ebx
mov ebx, 2
mov dword [ecx + 0x3c], edi
jmp 0x44014e
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x2c]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov dword [edx], 0x1d
jmp 0x440280
mov edx, esi
mov esi, dword [ebp - 0x3c]
mov dword [ebp - 0x30], ebx
mov ecx, dword [ebp - 0x2c]
mov ebx, 1
mov dword [ecx], 0x1c
jmp 0x440360
mov dword [ebp - 0x30], ebx
mov edx, esi
mov ebx, dword [ebp - 0x50]
mov esi, dword [ebp - 0x3c]
xor edi, edi
mov dword [ebp - 0x34], 0
jmp 0x440360
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + 0x1bc4], 0xffffffff
mov dword [ecx], 0xb
jmp 0x440280
mov edx, esi
xor edi, edi
mov esi, dword [ebp - 0x3c]
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x34], 0
jmp 0x441c1e
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x2c]
mov dword [edx + 0x18], str.invalid_distances_set
mov dword [ecx], 0x1d
jmp 0x440280
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x2c]
mov dword [edx + 0x18], str.invalid_literal_lengths_set
mov dword [ecx], 0x1d
jmp 0x440280
mov ecx, dword [ebp - 0x3c]
mov dword [ecx + 0x18], str.invalid_code____missing_end_of_block
mov dword [edx], 0x1d
jmp 0x440280