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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x7c
mov eax, dword [esp + 0x90]
call fcn.0040af00
test eax, eax
jne case.default.0x40b38f
mov ebp, eax
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x3c], eax
test eax, eax
je case.default.0x40b38f
mov eax, dword [esp + 0x90]
mov esi, dword [eax]
mov ebx, dword [eax + 4]
test esi, esi
je 0x40b580
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x28], eax
mov eax, dword [eax + 4]
cmp eax, 0x3f3f
jne 0x40b34f
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f40
mov eax, 0x3f40
mov edx, dword [esp + 0x28]
mov edi, dword [esp + 0x90]
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebp
mov ecx, dword [edx + 0x3c]
mov edx, dword [edx + 0x40]
mov edi, dword [edi + 0x10]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x38], edi
mov dword [esp + 0x34], edi
mov edi, ebx
mov ebx, esi
mov ebp, edi
sub eax, 0x3f34
cmp eax, 0x1e
ja case.default.0x40b38f
jmp dword [eax*4 + 0x41de74]
cmp dword [esp + 0x2c], 0x1f
ja 0x40b3e1
test ebp, ebp
je 0x40c378
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
jmp 0x40b3c8
test ebp, ebp
je 0x40c3b0
movzx eax, byte [ebx]
add ebx, 1
sub ebp, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x40b3c0
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 0x28]
mov dword [esp + 0x2c], 0
mov esi, dword [esp + 0x90]
mov dword [esp + 0x30], 0
bswap eax
mov dword [edi + 0x1c], eax
mov dword [esi + 0x30], eax
mov dword [edi + 4], 0x3f3e
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x40d17c
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00409fc0
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x90]
mov dword [esi + 0x1c], eax
mov dword [edi + 0x30], eax
mov dword [esi + 4], 0x3f3f
mov eax, dword [esp + 0x94]
sub eax, 5
cmp eax, 1
jbe 0x40c378
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 8]
test eax, eax
je 0x40b6a0
mov eax, dword [esp + 0x2c]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
mov ecx, eax
and eax, 0xfffffff8
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x28]
and ecx, 7
shr dword [esp + 0x30], cl
mov dword [eax + 4], 0x3f4e
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 0xc]
test edx, edx
je 0x40c7b8
cmp dword [esp + 0x2c], 0x1f
ja 0x40b4f9
test edi, edi
je 0x40c388
mov dword [esp + 0x40], edx
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
jmp 0x40b4d8
test edi, edi
je 0x40cbe0
movzx eax, byte [esi]
add esi, 1
sub edi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x40b4d0
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
sub ecx, eax
mov eax, dword [esp + 0x90]
add dword [eax + 0x14], ecx
mov eax, dword [esp + 0x28]
add dword [eax + 0x20], ecx
mov eax, edx
and eax, 4
je 0x40ce0c
test ecx, ecx
jne 0x40cf25
test eax, eax
je 0x40ce0c
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x30]
mov eax, dword [eax + 0x14]
mov dword [esp + 0x38], ecx
test eax, eax
jne 0x40b54a
mov eax, ecx
bswap eax
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x38]
cmp dword [ecx + 0x1c], eax
je 0x40ce0c
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.incorrect_data_check
mov eax, dword [esp + 0x34]
mov dword [ecx + 4], 0x3f51
mov dword [esp + 0x38], eax
jmp 0x40b827
test ebx, ebx
je 0x40b327
mov ebp, 0xfffffffe
jmp 0x40b94c
mov ebx, dword [esp + 0x28]
cmp dword [esp + 0x94], 6
mov dword [ebx + 0x50], 0x41df80
mov dword [ebx + 0x58], 9
mov dword [ebx + 0x54], 0x41df00
mov dword [ebx + 0x5c], 5
mov dword [ebx + 4], 0x3f47
je 0x40d46b
sub dword [esp + 0x2c], 3
mov ebx, eax
shr dword [esp + 0x30], 3
lea esi, [esi]
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f48
cmp ebp, 5
jbe 0x40c5a0
mov eax, dword [esp + 0x34]
cmp eax, 0x101
jbe 0x40c5a0
mov esi, dword [esp + 0x90]
mov edi, dword [esp + 0x3c]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x30]
mov dword [esi], ebx
mov dword [esi + 4], ebp
mov dword [esi + 0xc], edi
mov esi, dword [esp + 0x28]
mov dword [esi + 0x3c], eax
mov eax, dword [esp + 0x2c]
mov dword [esi + 0x40], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x90]
mov dword [esp], eax
call fcn.0040a820
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x90]
mov ebx, dword [eax]
mov ebp, dword [eax + 4]
mov eax, dword [esi + 0x3c]
mov dword [esp + 0x30], eax
mov eax, dword [esi + 0x40]
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 4]
cmp eax, 0x3f3f
jne 0x40b381
mov eax, dword [esp + 0x28]
mov dword [eax + 0x1bc8], 0xffffffff
jmp case.0x40b38f.16191
cmp dword [esp + 0x2c], 2
ja 0x40d080
test ebp, ebp
je 0x40d0a1
mov esi, dword [esp + 0x2c]
movzx edx, byte [ebx]
sub ebp, 1
lea eax, [ebx + 1]
mov ecx, esi
add esi, 8
shl edx, cl
add dword [esp + 0x30], edx
mov dword [esp + 0x2c], esi
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x28]
mov edx, ebx
and edx, 1
mov dword [edi + 8], edx
mov edx, ebx
shr edx, 1
and edx, 3
cmp edx, 2
je 0x40c23f
cmp edx, 3
je 0x40cc4d
cmp edx, 1
je 0x40b598
sub dword [esp + 0x2c], 3
shr ebx, 3
mov dword [edi + 4], 0x3f41
mov dword [esp + 0x30], ebx
mov ebx, eax
lea esi, [esi]
lea esi, [esi]
mov eax, dword [esp + 0x2c]
mov ecx, eax
and eax, 0xfffffff8
and ecx, 7
mov dword [esp + 0x2c], eax
shr dword [esp + 0x30], cl
cmp eax, 0x1f
ja 0x40b775
test ebp, ebp
je 0x40c378
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
jmp 0x40b758
test ebp, ebp
je 0x40c3b0
movzx eax, byte [ebx]
add ebx, 1
sub ebp, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x40b750
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x30]
movzx edx, ax
shr eax, 0x10
xor eax, 0xffff
cmp edx, eax
je 0x40cbf7
mov eax, dword [esp + 0x90]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov dword [eax + 0x18], str.invalid_stored_block_lengths
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f51
jmp 0x40b827
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 0x4c]
test edx, edx
jne 0x40ca70
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f4c
mov esi, dword [esp + 0x34]
test esi, esi
je 0x40cf10
mov edx, dword [esp + 0x28]
mov edi, dword [esp + 0x38]
mov ecx, dword [edx + 0x48]
mov eax, edi
sub eax, esi
cmp eax, ecx
jae 0x40ca30
add ecx, esi
mov eax, ecx
sub eax, edi
cmp dword [edx + 0x30], eax
jae 0x40c6a8
mov esi, dword [edx + 0x1bc4]
test esi, esi
je 0x40c6a8
mov eax, dword [esp + 0x90]
mov esi, ebx
mov ebx, dword [esp + 0x40]
mov edi, ebp
mov dword [eax + 0x18], str.invalid_distance_too_far_back
mov dword [edx + 4], 0x3f51
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
mov ebp, 0xfffffffd
sub ecx, eax
lea esi, [esi]
lea esi, [esi]
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x3c]
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0x34]
mov dword [eax], esi
mov esi, dword [esp + 0x30]
mov dword [eax + 0x10], edx
mov dword [eax + 4], edi
mov eax, dword [esp + 0x28]
mov dword [eax + 0x3c], esi
mov esi, dword [esp + 0x2c]
mov dword [eax + 0x40], esi
mov esi, dword [eax + 0x2c]
test esi, esi
jne 0x40b898
cmp dword [esp + 0x38], edx
je 0x40b8c7
mov eax, dword [eax + 4]
cmp eax, 0x3f50
ja 0x40b8c7
cmp dword [esp + 0x94], 4
jne 0x40b898
cmp eax, 0x3f4d
ja 0x40b8c7
lea esi, [esi]
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x90]
call fcn.0040add0
test eax, eax
jne 0x40c710
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x38]
mov edi, dword [eax + 4]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x34], eax
sub ecx, eax
mov esi, ebx
mov eax, dword [esp + 0x90]
sub esi, edi
mov edi, dword [esp + 0x28]
add dword [eax + 8], esi
add dword [eax + 0x14], ecx
add dword [edi + 0x20], ecx
test byte [edi + 0xc], 4
je 0x40b8ed
test ecx, ecx
jne 0x40c3c0
mov edi, dword [esp + 0x28]
xor eax, eax
mov edx, dword [edi + 8]
mov ebx, dword [edi + 4]
test edx, edx
setne al
shl eax, 6
add eax, dword [edi + 0x40]
cmp ebx, 0x3f3f
je 0x40c3a0
cmp ebx, 0x3f47
sete dl
cmp ebx, 0x3f42
sete bl
or edx, ebx
movzx edx, dl
shl edx, 8
add eax, edx
mov ebx, dword [esp + 0x90]
or esi, ecx
mov dword [ebx + 0x2c], eax
je 0x40b944
cmp dword [esp + 0x94], 4
jne 0x40b94c
test ebp, ebp
je 0x40cc43
add esp, 0x7c
mov eax, ebp
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 0x4c]
test edx, edx
jne 0x40c730
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x44]
mov esi, dword [esp + 0x28]
mov dword [esi + 0x1bcc], eax
mov dword [esi + 4], 0x3f4a
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 0x5c]
mov edi, dword [eax + 0x54]
mov eax, 0xffffffff
shl eax, cl
mov dword [esp + 0x4c], edi
mov ecx, eax
mov eax, dword [esp + 0x30]
not ecx
and eax, ecx
lea eax, [edi + eax*4]
movzx edx, byte [eax]
movzx edi, word [eax + 2]
mov byte [esp + 0x48], dl
movzx edx, byte [eax + 1]
movzx eax, dl
mov esi, eax
cmp dword [esp + 0x2c], eax
jae 0x40ba29
test ebp, ebp
je 0x40c378
mov esi, dword [esp + 0x30]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x2c]
jmp 0x40b9e8
test ebp, ebp
je 0x40c410
movzx eax, byte [ebx]
mov edi, dword [esp + 0x4c]
add ebx, 1
sub ebp, 1
shl eax, cl
add ecx, 8
add esi, eax
mov eax, dword [esp + 0x30]
and eax, esi
lea eax, [edi + eax*4]
movzx edx, byte [eax]
movzx edi, word [eax + 2]
mov byte [esp + 0x48], dl
movzx edx, byte [eax + 1]
movzx eax, dl
mov dword [esp + 0x2c], eax
cmp ecx, eax
jb 0x40b9e0
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], esi
mov esi, eax
cmp byte [esp + 0x48], 0xf
mov dword [esp + 0x58], eax
jbe 0x40c887
mov esi, dword [esp + 0x28]
mov edx, dword [esi + 0x1bc8]
mov ecx, eax
sub dword [esp + 0x2c], eax
add eax, edx
mov edx, dword [esp + 0x28]
shr dword [esp + 0x30], cl
mov dword [edx + 0x1bc8], eax
test byte [esp + 0x48], 0x40
je 0x40ca48
mov eax, dword [esp + 0x90]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov dword [eax + 0x18], str.invalid_distance_code
mov dword [edx + 4], 0x3f51
jmp 0x40b827
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x14]
test ah, 2
jne 0x40bb0a
lea esi, [esi]
mov esi, dword [esp + 0x28]
mov edx, dword [esi + 0x24]
test edx, edx
je 0x40bab3
sar eax, 9
mov dword [edx + 0x30], 1
and eax, 1
mov dword [edx + 0x2c], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0040a520
jmp 0x40b43a
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x14]
test ah, 0x10
jne 0x40c430
mov esi, dword [esp + 0x28]
mov edx, dword [esi + 0x24]
test edx, edx
je 0x40bafa
mov dword [edx + 0x24], 0
mov esi, dword [esp + 0x28]
mov dword [esi + 4], 0x3f3c
test ah, 2
je 0x40ba98
cmp dword [esp + 0x2c], 0xf
ja 0x40bb4d
test ebp, ebp
je 0x40c378
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
jmp 0x40bb30
test ebp, ebp
je 0x40c410
movzx edx, byte [ebx]
add ebx, 1
sub ebp, 1
shl edx, cl
add ecx, 8
add esi, edx
cmp ecx, 0xf
jbe 0x40bb28
mov dword [esp + 0x30], esi
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x28]
test byte [ecx + 0xc], 4
je 0x40c860
movzx edx, word [ecx + 0x1c]
mov esi, dword [esp + 0x30]
cmp edx, esi
je 0x40c860
mov eax, dword [esp + 0x90]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov dword [eax + 0x18], str.header_crc_mismatch
mov dword [ecx + 4], 0x3f51
jmp 0x40b827
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 0x44]
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f43
test edx, edx
je 0x40c4e0
cmp ebp, edx
mov eax, edx
mov edi, dword [esp + 0x34]
cmovbe eax, ebp
cmp eax, edi
cmova eax, edi
mov esi, eax
test eax, eax
je 0x40c378
mov edi, dword [esp + 0x3c]
mov dword [esp + 4], ebx
sub ebp, esi
add ebx, esi
mov dword [esp + 8], eax
mov dword [esp], edi
add edi, esi
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x28]
sub dword [esp + 0x34], esi
mov dword [esp + 0x3c], edi
sub dword [eax + 0x44], esi
mov eax, dword [eax + 4]
jmp 0x40b381
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 0x44]
jmp 0x40bba2
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov ebp, 1
sub ecx, eax
jmp 0x40b840
mov eax, dword [esp + 0x28]
mov edi, dword [eax + 0x6c]
mov esi, dword [eax + 0x60]
cmp edi, esi
jae 0x40cceb
mov ecx, dword [esp + 0x2c]
add edi, 1
mov dword [esp + 0x2c], esi
mov dword [esp + 0x48], edi
mov esi, dword [esp + 0x30]
cmp ecx, 2
ja 0x40bcab
test ebp, ebp
je 0x40c410
movzx eax, byte [ebx]
sub ebp, 1
lea edx, [ebx + 1]
shl eax, cl
add ecx, 8
add esi, eax
mov edi, dword [esp + 0x28]
mov ebx, dword [esp + 0x48]
sub ecx, 3
mov dword [edi + 0x6c], ebx
movzx eax, word [ebx + ebx + 0x41e77e]
mov ebx, esi
shr esi, 3
and ebx, 7
mov word [edi + eax*2 + 0x74], bx
mov edi, dword [esp + 0x48]
mov ebx, dword [esp + 0x2c]
lea eax, [edi + 1]
cmp edi, ebx
je 0x40cce1
mov dword [esp + 0x48], eax
mov ebx, edx
cmp ecx, 2
jbe 0x40bc52
mov edx, ebx
jmp 0x40bc6a
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x6c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 0x64]
mov esi, dword [eax + 0x68]
add esi, edx
mov dword [esp + 0x50], esi
cmp dword [esp + 0x4c], esi
jae 0x40c81d
mov ecx, dword [eax + 0x58]
mov edi, dword [eax + 0x50]
mov eax, 0xffffffff
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x30]
shl eax, cl
not eax
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x2c], edi
mov ecx, dword [esp + 0x48]
mov edi, dword [esp + 0x2c]
and ecx, edx
lea esi, [edi + ecx*4]
movzx ecx, byte [esi + 1]
movzx edi, word [esi + 2]
movzx esi, cl
cmp eax, esi
jae 0x40bd5e
test ebp, ebp
je 0x40cda5
mov ecx, eax
jmp 0x40bd28
test ebp, ebp
je 0x40c3b0
movzx eax, byte [ebx]
mov esi, dword [esp + 0x2c]
add ebx, 1
sub ebp, 1
shl eax, cl
add ecx, 8
add edx, eax
mov eax, dword [esp + 0x48]
and eax, edx
lea esi, [esi + eax*4]
movzx eax, byte [esi + 1]
movzx edi, word [esi + 2]
movzx esi, al
cmp ecx, esi
jb 0x40bd20
mov dword [esp + 0x30], ecx
mov ecx, eax
mov eax, dword [esp + 0x30]
cmp di, 0xf
jbe 0x40c7e0
cmp di, 0x10
je 0x40cea2
cmp di, 0x11
je 0x40cc7d
lea ecx, [esi + 7]
cmp eax, ecx
jae 0x40bdb8
test ebp, ebp
je 0x40cda5
mov edi, esi
mov esi, ecx
mov ecx, eax
mov eax, edi
jmp 0x40bda0
test ebp, ebp
je 0x40c3b0
movzx edi, byte [ebx]
add ebx, 1
sub ebp, 1
shl edi, cl
add ecx, 8
add edx, edi
cmp ecx, esi
jb 0x40bd98
mov esi, eax
mov eax, ecx
mov ecx, esi
sub eax, esi
xor esi, esi
shr edx, cl
sub eax, 7
mov ecx, edx
and edx, 0x7f
lea edi, [edx + 0xb]
mov edx, ecx
mov dword [esp + 0x30], edi
shr edx, 7
mov ecx, dword [esp + 0x4c]
mov edi, dword [esp + 0x30]
add ecx, edi
cmp dword [esp + 0x50], ecx
jb 0x40d33e
mov ecx, dword [esp + 0x28]
mov edi, dword [ecx + 0x6c]
lea ecx, [ecx + edi*2]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x30]
add edi, ecx
mov ecx, edi
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x28]
lea edi, [edi + ecx*2]
mov ecx, dword [esp + 0x58]
lea esi, [esi]
mov word [ecx + 0x74], si
add ecx, 2
cmp ecx, edi
jne 0x40be10
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x4c]
mov dword [esi + 0x6c], edi
jmp 0x40c803
mov eax, dword [esp + 0x28]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
mov edx, dword [eax + 0xc]
test edx, edx
je 0x40c7b8
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x14]
test eax, eax
je 0x40c7b8
cmp dword [esp + 0x2c], 0x1f
ja 0x40bea5
test edi, edi
je 0x40c388
mov dword [esp + 0x40], ebp
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x30]
jmp 0x40be88
test edi, edi
je 0x40ca10
movzx eax, byte [esi]
add esi, 1
sub edi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x40be80
mov dword [esp + 0x30], ebp
mov dword [esp + 0x2c], ecx
and edx, 4
je 0x40c7a4
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x30]
cmp dword [eax + 0x20], edx
je 0x40c7a4
mov edx, dword [esp + 0x90]
mov dword [edx + 0x18], str.incorrect_length_check
mov dword [eax + 4], 0x3f51
jmp 0x40b827
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 0xc]
test edx, edx
jne 0x40cb05
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f40
jmp case.0x40b38f.16192
cmp dword [esp + 0x2c], 0x1f
ja 0x40bf41
test ebp, ebp
je 0x40c378
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
jmp 0x40bf28
test ebp, ebp
je 0x40c3b0
movzx eax, byte [ebx]
add ebx, 1
sub ebp, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x40bf20
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x40bf53
mov edi, dword [esp + 0x30]
mov dword [eax + 4], edi
mov eax, dword [esp + 0x28]
test byte [eax + 0x15], 2
je 0x40bf67
test byte [eax + 0xc], 4
jne 0x40ce34
mov eax, dword [esp + 0x28]
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [eax + 4], 0x3f37
jmp 0x40bf8f
cmp dword [esp + 0x2c], 0xf
ja 0x40bfc9
test ebp, ebp
je 0x40c378
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
jmp 0x40bfb0
test ebp, ebp
je 0x40c3b0
movzx eax, byte [ebx]
add ebx, 1
sub ebp, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x40bfa8
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x40bfe6
mov ecx, dword [esp + 0x30]
movzx edx, cl
mov dword [eax + 8], edx
mov edx, ecx
shr edx, 8
mov dword [eax + 0xc], edx
mov edi, dword [esp + 0x28]
mov edx, dword [edi + 0x14]
mov eax, edx
test dh, 2
je 0x40c030
test byte [edi + 0xc], 4
je 0x40c030
movzx eax, word [esp + 0x30]
mov dword [esp + 8], 2
mov word [esp + 0x6c], ax
lea eax, [esp + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [edi + 0x1c]
mov dword [esp], eax
call fcn.0040a520
mov edx, dword [edi + 0x14]
mov dword [edi + 0x1c], eax
mov eax, edx
lea esi, [esi]
nop
mov esi, dword [esp + 0x28]
mov dword [esi + 4], 0x3f38
test dh, 4
jne 0x40c96a
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
jmp 0x40c072
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 0x14]
mov eax, edx
test dh, 4
jne 0x40caf5
mov esi, dword [esp + 0x28]
mov edx, dword [esi + 0x24]
test edx, edx
je 0x40c084
mov dword [edx + 0x10], 0
xor edx, edx
mov esi, dword [esp + 0x28]
mov dword [esi + 4], 0x3f39
test edx, edx
je 0x40c14f
mov esi, dword [esp + 0x28]
mov edx, dword [esi + 0x44]
cmp ebp, edx
mov ecx, edx
cmovbe ecx, ebp
test ecx, ecx
je 0x40c140
mov edi, dword [esi + 0x24]
test edi, edi
je 0x40c117
mov esi, dword [edi + 0x10]
mov dword [esp + 0x50], esi
test esi, esi
je 0x40c117
mov esi, dword [edi + 0x14]
mov dword [esp + 0x4c], edi
mov edi, esi
sub edi, edx
mov dword [esp + 0x48], edi
mov edi, dword [esp + 0x4c]
mov edi, dword [edi + 0x18]
cmp dword [esp + 0x48], edi
jae 0x40c117
mov eax, dword [esp + 0x48]
add edx, edi
mov dword [esp + 4], ebx
sub edx, esi
mov dword [esp + 0x4c], ecx
add eax, ecx
cmp edi, eax
mov edi, dword [esp + 0x48]
mov eax, edx
mov edx, dword [esp + 0x50]
cmovae eax, ecx
add edx, edi
mov dword [esp + 8], eax
mov dword [esp], edx
call sub.msvcrt.dll_memcpy
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x4c]
mov eax, dword [esi + 0x14]
test ah, 2
je 0x40c12a
mov eax, dword [esp + 0x28]
test byte [eax + 0xc], 4
jne 0x40cdb6
mov eax, dword [esp + 0x28]
sub ebp, ecx
add ebx, ecx
mov edi, dword [eax + 0x44]
mov edx, edi
mov dword [esp + 0x48], edi
sub edx, ecx
mov dword [eax + 0x44], edx
test edx, edx
jne 0x40c378
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x14]
mov esi, dword [esp + 0x28]
mov dword [esi + 0x44], 0
mov dword [esi + 4], 0x3f3a
jmp 0x40c187
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x14]
mov edx, eax
and edx, 0x400
jmp 0x40c091
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x14]
test ah, 8
jne 0x40c4f0
mov esi, dword [esp + 0x28]
mov edx, dword [esi + 0x24]
test edx, edx
je 0x40c1a2
mov dword [edx + 0x1c], 0
mov esi, dword [esp + 0x28]
mov dword [esi + 0x44], 0
mov dword [esi + 4], 0x3f3b
jmp 0x40badf
cmp dword [esp + 0x2c], 0xf
ja 0x40c205
test ebp, ebp
je 0x40c378
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
jmp 0x40c1e8
test ebp, ebp
je 0x40c3b0
movzx eax, byte [ebx]
add ebx, 1
sub ebp, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x40c1e0
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], ecx
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x30]
mov dword [edi + 0x14], eax
cmp al, 8
je 0x40cc28
mov esi, ebx
mov ebx, dword [esp + 0x40]
mov edi, ebp
mov eax, str.unknown_compression_method
mov edx, dword [esp + 0x90]
mov dword [edx + 0x18], eax
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f51
jmp 0x40b827
sub dword [esp + 0x2c], 3
mov ebx, dword [esp + 0x28]
shr dword [esp + 0x30], 3
mov dword [ebx + 4], 0x3f44
mov ebx, eax
lea esi, [esi]
lea esi, [esi]
cmp dword [esp + 0x2c], 0xd
ja 0x40c2a5
test ebp, ebp
je 0x40c378
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
jmp 0x40c288
test ebp, ebp
je 0x40c3b0
movzx eax, byte [ebx]
add ebx, 1
sub ebp, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xd
jbe 0x40c280
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], ecx
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x28]
sub dword [esp + 0x2c], 0xe
mov eax, edi
mov edx, edi
mov ecx, edi
shr edi, 0xe
shr eax, 5
and edx, 0x1f
shr ecx, 0xa
mov dword [esp + 0x30], edi
and eax, 0x1f
and ecx, 0xf
add edx, 0x101
add eax, 1
mov dword [esi + 0x64], edx
mov dword [esi + 0x68], eax
lea esi, [ecx + 4]
mov ecx, dword [esp + 0x28]
mov dword [ecx + 0x60], esi
cmp eax, 0x1e
ja 0x40c2f8
cmp edx, 0x11e
jbe 0x40ce89
mov eax, dword [esp + 0x90]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f51
jmp 0x40b827
mov edi, dword [esp + 0x28]
movzx edx, si
sub dword [esp + 0x2c], eax
shr dword [esp + 0x30], cl
mov dword [edi + 0x1bc8], eax
mov dword [edi + 0x44], edx
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f4d
mov esi, dword [esp + 0x34]
test esi, esi
je 0x40cf10
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x3c]
sub esi, 1
mov dword [esp + 0x34], esi
mov eax, dword [edi + 0x44]
mov byte [edx], al
lea eax, [edx + 1]
mov dword [edi + 4], 0x3f48
mov dword [esp + 0x3c], eax
jmp case.0x40b38f.16200
mov esi, ebx
mov edi, ebp
lea esi, [esi]
mov ebx, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
sub ecx, eax
jmp 0x40b840
sub eax, 0xffffff80
jmp 0x40b92c
mov dword [esp + 0x30], edx
mov esi, ebx
mov edi, ebp
mov dword [esp + 0x2c], ecx
jmp 0x40c380
mov ebx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
mov dword [esp + 0x2c], ecx
mov edx, dword [edi + 0x1c]
sub eax, ebx
mov ebx, dword [esp + 0x90]
add eax, dword [ebx + 0xc]
mov ebx, dword [edi + 0x14]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
test ebx, ebx
mov dword [esp], edx
je 0x40c420
call fcn.0040a520
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x28]
mov dword [ebx + 0x1c], eax
mov ebx, dword [esp + 0x90]
mov dword [ebx + 0x30], eax
jmp 0x40b8ed
mov dword [esp + 0x30], esi
mov edi, ebp
mov esi, ebx
jmp 0x40c3b8
call fcn.00409fc0
mov ecx, dword [esp + 0x2c]
jmp 0x40c3f6
test ebp, ebp
je 0x40c378
mov dword [esp + 0x48], ebp
xor ecx, ecx
mov ebp, dword [esp + 0x28]
jmp 0x40c450
mov eax, dword [esp + 0x48]
cmp ecx, eax
jae 0x40c47b
mov eax, dword [ebp + 0x24]
add ecx, 1
movzx edx, byte [ebx + ecx - 1]
test eax, eax
je 0x40c477
mov esi, dword [eax + 0x24]
test esi, esi
je 0x40c477
mov edi, dword [ebp + 0x44]
cmp edi, dword [eax + 0x28]
jae 0x40c477
lea eax, [edi + 1]
mov dword [ebp + 0x44], eax
mov byte [esi + edi], dl
test dl, dl
jne 0x40c448
mov eax, dword [esp + 0x28]
mov ebp, dword [esp + 0x48]
test byte [eax + 0x15], 2
je 0x40c4c0
test byte [eax + 0xc], 4
je 0x40c4c0
mov dword [esp + 8], ecx
mov edi, eax
mov dword [esp + 4], ebx
mov eax, dword [eax + 0x1c]
mov byte [esp + 0x4c], dl
mov dword [esp], eax
mov dword [esp + 0x48], ecx
call fcn.0040a520
movzx edx, byte [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov dword [edi + 0x1c], eax
lea esi, [esi]
nop
sub ebp, ecx
add ebx, ecx
test dl, dl
jne 0x40c378
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x14]
jmp 0x40bafa
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f3f
jmp case.0x40b38f.16191
test ebp, ebp
je 0x40c378
mov dword [esp + 0x48], ebp
mov ebp, dword [esp + 0x28]
xor ecx, ecx
lea esi, [esi]
mov eax, dword [ebp + 0x24]
add ecx, 1
movzx edx, byte [ebx + ecx - 1]
test eax, eax
je 0x40c52f
mov esi, dword [eax + 0x1c]
test esi, esi
je 0x40c52f
mov edi, dword [ebp + 0x44]
cmp edi, dword [eax + 0x20]
jae 0x40c52f
lea eax, [edi + 1]
mov dword [ebp + 0x44], eax
mov byte [esi + edi], dl
test dl, dl
je 0x40c53b
mov eax, dword [esp + 0x48]
cmp ecx, eax
jb 0x40c508
mov eax, dword [esp + 0x28]
mov ebp, dword [esp + 0x48]
test byte [eax + 0x15], 2
je 0x40c580
test byte [eax + 0xc], 4
je 0x40c580
mov dword [esp + 8], ecx
mov esi, eax
mov dword [esp + 4], ebx
mov eax, dword [eax + 0x1c]
mov byte [esp + 0x4c], dl
mov dword [esp], eax
mov dword [esp + 0x48], ecx
call fcn.0040a520
movzx edx, byte [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov dword [esi + 0x1c], eax
lea esi, [esi]
nop
sub ebp, ecx
add ebx, ecx
test dl, dl
jne 0x40c378
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x14]
jmp 0x40c1a2
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 0x58]
mov edi, dword [eax + 0x50]
mov dword [eax + 0x1bc8], 0
mov eax, 0xffffffff
shl eax, cl
not eax
mov edx, eax
mov eax, dword [esp + 0x30]
and eax, edx
lea eax, [edi + eax*4]
movzx ecx, byte [eax]
movzx esi, word [eax + 2]
mov byte [esp + 0x48], cl
movzx ecx, byte [eax + 1]
movzx eax, cl
cmp dword [esp + 0x2c], eax
jae 0x40c64d
test ebp, ebp
je 0x40c378
mov ecx, dword [esp + 0x2c]
mov esi, edi
mov edi, dword [esp + 0x30]
mov dword [esp + 0x2c], edx
jmp 0x40c608
test ebp, ebp
je 0x40cae8
movzx eax, byte [ebx]
add ebx, 1
sub ebp, 1
shl eax, cl
add ecx, 8
add edi, eax
mov eax, dword [esp + 0x2c]
and eax, edi
lea eax, [esi + eax*4]
movzx edx, byte [eax]
mov byte [esp + 0x48], dl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x4c], ax
movzx eax, dl
cmp ecx, eax
jb 0x40c600
mov dword [esp + 0x30], edi
mov edi, esi
movzx esi, word [esp + 0x4c]
mov dword [esp + 0x2c], ecx
mov ecx, edx
movzx edx, byte [esp + 0x48]
test dl, dl
je 0x40c31e
cmp dl, 0xf
jbe 0x40cf7d
mov edi, dword [esp + 0x28]
movzx edx, si
sub dword [esp + 0x2c], eax
mov ecx, eax
shr dword [esp + 0x30], cl
mov dword [edi + 0x1bc8], eax
mov dword [edi + 0x44], edx
test byte [esp + 0x48], 0x20
je 0x40cddb
mov eax, dword [esp + 0x28]
mov dword [eax + 0x1bc8], 0xffffffff
mov dword [eax + 4], 0x3f3f
jmp case.0x40b38f.16191
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x38]
mov edx, dword [edi + 0x34]
sub esi, ecx
mov ecx, dword [edi + 0x38]
cmp edx, eax
jb 0x40c878
add edx, esi
lea esi, [ecx + edx]
mov edi, dword [esp + 0x28]
mov ecx, dword [edi + 0x44]
cmp ecx, eax
cmovbe eax, ecx
mov edi, dword [esp + 0x34]
cmp eax, edi
cmova eax, edi
sub edi, eax
sub ecx, eax
mov dword [esp + 0x34], edi
mov edi, dword [esp + 0x28]
mov dword [edi + 0x44], ecx
mov edi, dword [esp + 0x3c]
add eax, edi
nop
movsb byte es:[edi], byte [esi]
cmp eax, edi
jne 0x40c6f0
mov eax, dword [esp + 0x28]
mov dword [esp + 0x3c], edi
mov edx, dword [eax + 0x44]
test edx, edx
je case.0x40b38f.16199
mov eax, dword [eax + 4]
jmp 0x40b381
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f52
lea esi, [esi]
nop
mov ebp, 0xfffffffc
jmp 0x40b94c
cmp dword [esp + 0x2c], edx
jae 0x40c774
test ebp, ebp
je 0x40c378
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
jmp 0x40c758
test ebp, ebp
je 0x40c410
movzx eax, byte [ebx]
add ebx, 1
sub ebp, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, edx
jb 0x40c750
mov dword [esp + 0x30], esi
mov dword [esp + 0x2c], ecx
mov ecx, edx
mov eax, 0xffffffff
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x28]
shl eax, cl
sub dword [esp + 0x2c], edx
not eax
add dword [esi + 0x1bc8], edx
and eax, edi
shr edi, cl
add eax, dword [esi + 0x44]
mov dword [esi + 0x44], eax
mov dword [esp + 0x30], edi
jmp 0x40b976
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
lea esi, [esi]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x38]
mov ebp, 1
mov dword [eax + 4], 0x3f50
mov eax, dword [esp + 0x34]
sub ecx, eax
jmp 0x40b840
sub eax, esi
mov esi, dword [esp + 0x4c]
shr edx, cl
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x30], esi
add esi, 1
mov dword [ecx + 0x6c], esi
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x30]
mov word [ecx + esi*2 + 0x74], di
mov esi, dword [esp + 0x50]
cmp dword [esp + 0x4c], esi
jb 0x40bcf8
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x28]
cmp dword [eax + 4], 0x3f51
je case.0x40b38f.16209
cmp word [eax + 0x274], 0
jne 0x40d237
mov edx, dword [esp + 0x90]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov dword [edx + 0x18], str.invalid_code____missing_end_of_block
mov dword [eax + 4], 0x3f51
jmp 0x40b827
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
jmp 0x40ba98
sub eax, edx
add edx, dword [edi + 0x2c]
add edx, esi
lea esi, [ecx + edx]
jmp 0x40c6c5
movzx ecx, byte [esp + 0x48]
mov dword [esp + 0x50], edi
add ecx, eax
mov eax, 0xffffffff
shl eax, cl
mov ecx, edx
not eax
mov edi, eax
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x30]
and eax, edi
mov edi, dword [esp + 0x50]
shr eax, cl
add eax, edi
mov edi, dword [esp + 0x4c]
lea eax, [edi + eax*4]
movzx edx, byte [eax]
movzx edi, word [eax + 2]
movzx eax, byte [eax + 1]
mov byte [esp + 0x48], dl
mov edx, dword [esp + 0x58]
add edx, eax
cmp dword [esp + 0x2c], edx
jae 0x40c94d
test ebp, ebp
je 0x40c378
mov edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x58]
mov dword [esp + 0x5c], esi
mov esi, dword [esp + 0x30]
jmp 0x40c8f8
test ebp, ebp
je 0x40cd94
movzx eax, byte [ebx]
mov ecx, edx
add edx, 8
add ebx, 1
sub ebp, 1
shl eax, cl
mov ecx, edi
add esi, eax
mov eax, dword [esp + 0x54]
and eax, esi
shr eax, cl
mov ecx, dword [esp + 0x50]
add eax, ecx
mov ecx, dword [esp + 0x4c]
lea eax, [ecx + eax*4]
movzx ecx, byte [eax]
mov byte [esp + 0x48], cl
movzx ecx, word [eax + 2]
movzx eax, byte [eax + 1]
mov word [esp + 0x2c], cx
lea ecx, [eax + edi]
cmp edx, ecx
jb 0x40c8f0
movzx edi, word [esp + 0x2c]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x5c]
mov edx, dword [esp + 0x58]
sub dword [esp + 0x2c], esi
mov esi, dword [esp + 0x28]
mov ecx, edx
shr dword [esp + 0x30], cl
add edx, dword [esi + 0x1bc8]
jmp 0x40ba42
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
test ebp, ebp
je 0x40c378
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
jmp 0x40c998
test ebp, ebp
je 0x40c410
movzx eax, byte [ebx]
add ebx, 1
sub ebp, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x40c990
mov dword [esp + 0x30], esi
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x30]
mov dword [eax + 0x44], esi
mov eax, dword [eax + 0x24]
test eax, eax
je 0x40c9c6
mov dword [eax + 0x14], esi
test dh, 2
je 0x40c9d9
mov eax, dword [esp + 0x28]
test byte [eax + 0xc], 4
jne 0x40d107
mov eax, edx
mov dword [esp + 0x2c], 0
and edx, 0x400
mov dword [esp + 0x30], 0
jmp 0x40c086
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
jmp 0x40b49f
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x30], ebp
mov ebp, dword [esp + 0x40]
sub ecx, eax
jmp 0x40b840
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x3c]
mov eax, dword [eax + 0x44]
sub esi, ecx
mov ecx, eax
jmp 0x40c6d1
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0x28]
movzx eax, di
and edx, 0xf
mov dword [esi + 0x48], eax
mov dword [esi + 0x4c], edx
mov dword [esi + 4], 0x3f4b
jmp 0x40b7b7
cmp dword [esp + 0x2c], edx
jae 0x40cab4
test ebp, ebp
je 0x40c378
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
jmp 0x40ca98
test ebp, ebp
je 0x40c410
movzx eax, byte [ebx]
add ebx, 1
sub ebp, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, edx
jb 0x40ca90
mov dword [esp + 0x30], esi
mov dword [esp + 0x2c], ecx
mov ecx, edx
mov eax, 0xffffffff
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x28]
shl eax, cl
sub dword [esp + 0x2c], edx
not eax
add dword [edi + 0x1bc8], edx
and eax, esi
shr esi, cl
add dword [edi + 0x48], eax
mov dword [esp + 0x30], esi
jmp 0x40b7bf
mov dword [esp + 0x30], edi
mov esi, ebx
mov edi, ebp
jmp 0x40c3b8
cmp dword [esp + 0x2c], 0xf
jbe 0x40c97a
jmp 0x40c9b1
cmp dword [esp + 0x2c], 0xf
ja 0x40cb45
test ebp, ebp
je 0x40c378
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
jmp 0x40cb28
test ebp, ebp
je 0x40c410
movzx eax, byte [ebx]
add ebx, 1
sub ebp, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x40cb20
mov dword [esp + 0x30], esi
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x28]
test dl, 2
je 0x40cb5c
cmp dword [esp + 0x30], 0x8b1f
je 0x40d1c3
mov eax, dword [eax + 0x24]
test eax, eax
je 0x40cb6a
mov dword [eax + 0x30], 0xffffffff
and edx, 1
je 0x40ce63
mov esi, dword [esp + 0x30]
mov eax, esi
shr esi, 8
shl eax, 8
movzx eax, ax
lea ecx, [eax + esi]
mov eax, 0x8421085
mul ecx
mov eax, ecx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
mov edx, eax
shl edx, 5
sub edx, eax
cmp ecx, edx
jne 0x40ce63
mov eax, dword [esp + 0x30]
and eax, 0xf
cmp eax, 8
je 0x40d2b6
mov eax, dword [esp + 0x90]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov dword [eax + 0x18], str.unknown_compression_method
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f51
jmp 0x40b827
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x30], edx
sub ecx, eax
jmp 0x40b840
mov eax, dword [esp + 0x28]
cmp dword [esp + 0x94], 6
mov dword [eax + 0x44], edx
mov dword [eax + 4], 0x3f42
je 0x40d446
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
jmp 0x40bb97
test ah, 0xe0
je 0x40d0b8
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov eax, str.unknown_header_flags_set
jmp 0x40c225
mov ebp, 0xfffffffb
jmp 0x40b94c
mov esi, dword [esp + 0x90]
mov ebx, dword [esp + 0x40]
mov edi, ebp
shr dword [esp + 0x30], 3
sub dword [esp + 0x2c], 3
mov dword [esi + 0x18], str.invalid_block_type
mov esi, dword [esp + 0x28]
mov dword [esi + 4], 0x3f51
mov esi, eax
jmp 0x40b827
lea ecx, [esi + 3]
cmp eax, ecx
jae 0x40ccc0
test ebp, ebp
je 0x40cda5
mov edi, esi
mov esi, ecx
mov ecx, eax
mov eax, edi
jmp 0x40cca8
test ebp, ebp
je 0x40c3b0
movzx edi, byte [ebx]
add ebx, 1
sub ebp, 1
shl edi, cl
add ecx, 8
add edx, edi
cmp ecx, esi
jb 0x40cca0
mov esi, eax
mov eax, ecx
mov ecx, esi
sub eax, esi
xor esi, esi
shr edx, cl
sub eax, 3
mov ecx, edx
and edx, 7
lea edi, [edx + 3]
mov edx, ecx
mov dword [esp + 0x30], edi
shr edx, 3
jmp 0x40bdd4
mov dword [esp + 0x30], esi
mov ebx, edx
mov dword [esp + 0x2c], ecx
cmp edi, 0x12
ja 0x40cd1c
mov esi, dword [esp + 0x28]
lea eax, [edi + edi + 0x41e780]
mov ecx, 0x41e7a6
movzx edx, word [eax]
xor edi, edi
add eax, 2
mov word [esi + edx*2 + 0x74], di
cmp ecx, eax
jne 0x40cd00
mov eax, dword [esp + 0x28]
mov dword [eax + 0x6c], 0x13
mov edi, dword [esp + 0x28]
lea eax, [edi + 0x534]
mov dword [edi + 0x58], 7
mov dword [edi + 0x70], eax
mov dword [edi + 0x50], eax
lea eax, [edi + 0x2f4]
mov dword [esp + 0x14], eax
lea eax, [edi + 0x58]
mov dword [esp + 0x10], eax
lea eax, [edi + 0x70]
mov dword [esp + 0xc], eax
lea eax, [edi + 0x74]
mov dword [esp + 8], 0x13
mov dword [esp + 4], eax
mov dword [esp], 0
call fcn.0040de70
test eax, eax
je 0x40d15d
mov edx, dword [esp + 0x90]
mov eax, dword [esp + 0x28]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov dword [edx + 0x18], str.invalid_code_lengths_set
mov dword [eax + 4], 0x3f51
jmp 0x40b827
mov dword [esp + 0x30], esi
mov edi, ebp
mov esi, ebx
mov dword [esp + 0x2c], edx
jmp 0x40c380
mov dword [esp + 0x30], edx
mov esi, ebx
mov edi, ebp
mov dword [esp + 0x2c], eax
jmp 0x40c380
mov dword [esp + 8], ecx
mov esi, eax
mov dword [esp + 4], ebx
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x48], ecx
mov dword [esp], eax
call fcn.0040a520
mov ecx, dword [esp + 0x48]
mov dword [esi + 0x1c], eax
jmp 0x40c12a
test byte [esp + 0x48], 0x40
je 0x40d087
mov eax, dword [esp + 0x90]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov dword [eax + 0x18], str.invalid_literal_length_code
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f51
jmp 0x40b827
mov eax, dword [esp + 0x28]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [eax + 4], 0x3f4f
mov eax, dword [esp + 0x34]
mov dword [esp + 0x38], eax
jmp 0x40be43
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x28]
mov dword [esp + 8], 4
mov dword [esp + 0x6c], eax
lea eax, [esp + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1c]
mov dword [esp], eax
call fcn.0040a520
mov dword [esi + 0x1c], eax
jmp 0x40bf67
mov eax, dword [esp + 0x90]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov dword [eax + 0x18], str.incorrect_header_check
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f51
jmp 0x40b827
mov eax, dword [esp + 0x28]
xor edi, edi
mov dword [eax + 0x6c], 0
mov dword [eax + 4], 0x3f45
jmp 0x40bc3a
lea ecx, [esi + 2]
cmp eax, ecx
jae 0x40cede
test ebp, ebp
je 0x40cda5
mov edi, ecx
mov ecx, eax
mov eax, edi
jmp 0x40cec8
test ebp, ebp
je 0x40c3b0
movzx edi, byte [ebx]
add ebx, 1
sub ebp, 1
shl edi, cl
add ecx, 8
add edx, edi
cmp ecx, eax
jb 0x40cec0
mov eax, ecx
mov ecx, esi
sub eax, esi
mov esi, dword [esp + 0x4c]
shr edx, cl
test esi, esi
je 0x40d33e
mov edi, dword [esp + 0x28]
mov ecx, edx
sub eax, 2
shr edx, 2
and ecx, 3
movzx esi, word [edi + esi*2 + 0x72]
lea edi, [ecx + 3]
mov dword [esp + 0x30], edi
jmp 0x40bdd4
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
mov ecx, dword [esp + 0x38]
jmp 0x40b840
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
sub eax, edx
mov edx, dword [esp + 0x3c]
add eax, edx
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 0x1c]
mov eax, dword [eax + 0x14]
mov dword [esp + 8], ecx
test eax, eax
mov eax, dword [esp + 0x38]
mov dword [esp], edx
mov dword [esp + 4], eax
je 0x40d153
call fcn.0040a520
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x90]
mov dword [edx + 0x1c], eax
mov edx, dword [edx + 0xc]
mov dword [ecx + 0x30], eax
mov eax, edx
and eax, 4
jmp 0x40b527
mov ecx, edx
mov edx, 0xffffffff
mov dword [esp + 0x50], esi
add ecx, eax
shl edx, cl
mov ecx, eax
not edx
mov esi, edx
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x30]
and edx, esi
mov esi, dword [esp + 0x50]
shr edx, cl
add edx, esi
lea edx, [edi + edx*4]
movzx esi, word [edx + 2]
movzx ecx, byte [edx]
movzx edx, byte [edx + 1]
mov word [esp + 0x4c], si
lea esi, [edx + eax]
mov byte [esp + 0x48], cl
mov dword [esp + 0x58], esi
cmp dword [esp + 0x2c], esi
jae 0x40d03a
test ebp, ebp
je 0x40c378
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x2c], edi
mov edi, ebp
mov ebp, dword [esp + 0x30]
jmp 0x40cfe8
test edi, edi
je 0x40d1b4
movzx edx, byte [ebx]
mov ecx, esi
add esi, 8
add ebx, 1
sub edi, 1
shl edx, cl
mov ecx, eax
add ebp, edx
mov edx, dword [esp + 0x54]
and edx, ebp
shr edx, cl
mov ecx, dword [esp + 0x50]
add edx, ecx
mov ecx, dword [esp + 0x2c]
lea edx, [ecx + edx*4]
movzx ecx, byte [edx]
mov byte [esp + 0x48], cl
movzx ecx, word [edx + 2]
movzx edx, byte [edx + 1]
mov word [esp + 0x4c], cx
lea ecx, [edx + eax]
cmp esi, ecx
jb 0x40cfe0
mov dword [esp + 0x58], ecx
mov dword [esp + 0x2c], esi
mov dword [esp + 0x30], ebp
mov ebp, edi
mov esi, dword [esp + 0x2c]
mov ecx, eax
mov edi, dword [esp + 0x30]
sub esi, eax
mov eax, dword [esp + 0x58]
shr edi, cl
mov ecx, edx
sub esi, edx
shr edi, cl
cmp byte [esp + 0x48], 0
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x28]
mov dword [esp + 0x30], edi
mov dword [esi + 0x1bc8], eax
movzx eax, word [esp + 0x4c]
mov dword [esi + 0x44], eax
jne 0x40c67d
jmp 0x40c336
mov eax, ebx
jmp 0x40b6cf
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x28]
and edx, 0xf
mov dword [eax + 4], 0x3f49
mov dword [eax + 0x4c], edx
jmp 0x40b967
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
sub ecx, eax
jmp 0x40b840
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 0x24]
test edx, edx
je 0x40d0cf
mov eax, dword [esp + 0x30]
shr eax, 8
and eax, 1
mov dword [edx], eax
test dword [esp + 0x30], 0x200
je 0x40d0e7
mov eax, dword [esp + 0x28]
test byte [eax + 0xc], 4
jne 0x40d30d
mov eax, dword [esp + 0x28]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [eax + 4], 0x3f36
jmp 0x40bf07
movzx eax, word [esp + 0x30]
mov esi, dword [esp + 0x28]
mov dword [esp + 8], 2
mov word [esp + 0x6c], ax
lea eax, [esp + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1c]
mov dword [esp], eax
call fcn.0040a520
mov dword [esp + 0x2c], 0
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x14]
mov dword [esp + 0x30], 0
mov edx, eax
and edx, 0x400
jmp 0x40c086
call fcn.00409fc0
jmp 0x40cf5f
mov eax, dword [esp + 0x28]
mov dword [esp + 0x4c], 0
mov dword [eax + 0x6c], 0
mov dword [eax + 4], 0x3f46
jmp 0x40bcbb
mov eax, dword [esp + 0x90]
mov esi, ebx
mov ebx, dword [esp + 0x3c]
mov dword [eax + 0xc], ebx
mov ebx, dword [esp + 0x34]
mov dword [eax + 4], ebp
mov ebp, 2
mov dword [eax + 0x10], ebx
mov ebx, dword [esp + 0x30]
mov dword [eax], esi
mov eax, dword [esp + 0x28]
mov dword [eax + 0x3c], ebx
mov ebx, dword [esp + 0x2c]
mov dword [eax + 0x40], ebx
jmp 0x40b94c
mov dword [esp + 0x2c], esi
mov esi, ebx
mov dword [esp + 0x30], ebp
jmp 0x40c380
mov ecx, dword [eax + 0x28]
test ecx, ecx
jne 0x40d1d1
mov dword [eax + 0x28], 0xf
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0040a520
movzx edx, word [0x41e7a6]
mov esi, dword [esp + 0x28]
mov word [esp + 0x6c], dx
lea edx, [esp + 0x6c]
mov dword [esi + 0x1c], eax
mov dword [esp + 8], 2
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0040a520
mov dword [esi + 4], 0x3f35
mov dword [esi + 0x1c], eax
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
jmp 0x40c1c7
mov esi, dword [esp + 0x28]
mov eax, esi
mov dword [esi + 0x58], 9
lea ecx, [esi + 0x2f4]
lea edi, [esi + 0x70]
add eax, 0x534
mov dword [esp + 0x48], ecx
mov dword [esi + 0x70], eax
mov dword [esi + 0x50], eax
mov eax, esi
lea esi, [esi + 0x74]
add eax, 0x58
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edi
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov dword [esp], 1
call fcn.0040de70
mov ecx, dword [esp + 0x48]
test eax, eax
je 0x40d3da
mov edx, dword [esp + 0x90]
mov eax, dword [esp + 0x28]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov dword [edx + 0x18], str.invalid_literal_lengths_set
mov dword [eax + 4], 0x3f51
jmp 0x40b827
shr dword [esp + 0x30], 4
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x28]
and eax, 0xf
mov ecx, eax
mov eax, dword [esi + 0x28]
add ecx, 8
test eax, eax
jne 0x40d379
mov dword [esi + 0x28], ecx
cmp ecx, 0xf
jbe 0x40d38a
mov eax, dword [esp + 0x90]
mov esi, ebx
sub dword [esp + 0x2c], 4
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov dword [eax + 0x18], str.invalid_window_size
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f51
jmp 0x40b827
movzx eax, word [esp + 0x30]
mov esi, dword [esp + 0x28]
mov dword [esp + 8], 2
mov word [esp + 0x6c], ax
lea eax, [esp + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1c]
mov dword [esp], eax
call fcn.0040a520
mov dword [esi + 0x1c], eax
jmp 0x40d0e7
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x90]
mov esi, ebx
mov edi, ebp
mov dword [esp + 0x30], edx
mov ebx, dword [esp + 0x40]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f51
jmp 0x40b827
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
jmp 0x40b827
cmp ecx, 0xf
ja 0x40d2e2
cmp eax, ecx
jb 0x40d2e2
mov esi, dword [esp + 0x28]
mov eax, 1
xor edx, edx
shl eax, cl
mov dword [esi + 0x18], eax
mov dword [esi + 0x14], edx
mov dword [esp + 8], edx
mov dword [esp + 4], edx
mov dword [esp], edx
call fcn.00409fc0
and dword [esp + 0x30], 0x200
mov edi, dword [esp + 0x90]
mov dword [esi + 0x1c], eax
mov dword [edi + 0x30], eax
jne 0x40d48e
xor eax, eax
mov dword [esi + 4], 0x3f3f
mov dword [esp + 0x2c], eax
jmp case.0x40b38f.16191
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 0x70]
mov dword [edx + 0x5c], 6
mov dword [edx + 0x54], eax
lea eax, [edx + 0x5c]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edi
mov eax, dword [edx + 0x68]
mov dword [esp + 8], eax
mov eax, dword [edx + 0x64]
mov dword [esp], 2
add eax, eax
add eax, esi
mov dword [esp + 4], eax
call fcn.0040de70
test eax, eax
je 0x40d4a8
mov edx, dword [esp + 0x90]
mov eax, dword [esp + 0x28]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov dword [edx + 0x18], str.invalid_distances_set
mov dword [eax + 4], 0x3f51
jmp 0x40b827
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
sub ecx, eax
xor eax, eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
jmp 0x40b840
mov esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
mov edi, ebp
shr dword [esp + 0x30], 3
sub dword [esp + 0x2c], 3
mov ebx, dword [esp + 0x40]
xor ebp, ebp
sub ecx, esi
mov esi, eax
jmp 0x40b840
mov eax, dword [esp + 0x28]
mov dword [eax + 4], 0x3f3d
xor eax, eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], eax
jmp 0x40b3a7
mov eax, dword [esp + 0x28]
cmp dword [esp + 0x94], 6
mov dword [eax + 4], 0x3f47
jne case.0x40b38f.16199
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
mov esi, ebx
mov edi, ebp
mov ebx, dword [esp + 0x40]
xor ebp, ebp
sub ecx, eax
jmp 0x40b840