Function at 0x40b880
Capabilities:
Compress data via zlib inflate or deflate
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xac
mov esi, dword [esp + 0xc0]
test esi, esi
je case.default.0x40ba40
mov ebx, dword [esp + 0xc0]
mov ebx, dword [ebx + 0x1c]
test ebx, ebx
mov dword [esp + 0x40], ebx
je case.default.0x40ba40
mov ebx, dword [esp + 0xc0]
mov ebx, dword [ebx + 0xc]
test ebx, ebx
mov dword [esp + 0x54], ebx
je case.default.0x40ba40
mov ebx, dword [esp + 0xc0]
mov esi, dword [ebx]
test esi, esi
je 0x40ca40
mov ebx, dword [ebx + 4]
mov dword [esp + 0x5c], ebx
mov ebx, dword [esp + 0x40]
mov eax, dword [ebx]
cmp eax, 0xb
je 0x40ba47
mov ebx, dword [esp + 0xc0]
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x58], 0
mov ebx, dword [ebx + 0x10]
mov dword [esp + 0x4c], ebx
mov ebx, dword [esp + 0x40]
mov ecx, dword [esp + 0x4c]
mov edx, ebx
mov ebp, dword [ebx + 0x30]
add edx, 0x528
mov ebx, dword [ebx + 0x34]
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x40]
mov dword [esp + 0x60], ecx
add edx, 0x2e8
mov dword [esp + 0x6c], edx
cmp eax, 0x1d
jbe switch.0x0040ba40
mov dword [esp + 0x58], 0xfffffffe
mov eax, dword [esp + 0x58]
add esp, 0xac
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [esp + 0x40]
xor eax, eax
mov ecx, dword [edx + 8]
test ecx, ecx
je 0x40cb57
cmp ebx, 0x1f
ja 0x40b991
test edi, edi
je 0x40bf40
mov ecx, ebx
jmp 0x40b97a
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x40b972
mov ebx, ecx
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0xc0]
mov edx, dword [esp + 0x40]
sub eax, dword [esp + 0x4c]
add dword [ecx + 0x14], eax
add dword [edx + 0x18], eax
test eax, eax
je 0x40b9e3
mov ecx, dword [edx + 0x10]
mov dword [esp + 8], eax
test ecx, ecx
je 0x40d2f0
mov ecx, dword [esp + 0x54]
sub ecx, eax
mov dword [esp + 4], ecx
mov eax, dword [edx + 0x14]
mov dword [esp], eax
call fcn.0040dc60
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0xc0]
mov dword [edx + 0x14], eax
mov dword [ecx + 0x30], eax
mov edx, dword [edx + 0x10]
mov eax, ebp
test edx, edx
jne 0x40ba0f
mov edx, ebp
mov ecx, ebp
shl edx, 0x18
and eax, 0xff00
shr ecx, 0x18
add ecx, edx
mov edx, ebp
shr edx, 8
and edx, 0xff00
shl eax, 8
add edx, ecx
add eax, edx
mov ecx, dword [esp + 0x40]
cmp eax, dword [ecx + 0x14]
je 0x40cb44
mov eax, dword [esp + 0xc0]
mov dword [eax + 0x18], str.incorrect_data_check
mov eax, 0x1c
mov dword [ecx], 0x1c
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x60], ecx
lea esi, [esi]
jmp dword [eax*4 + 0x414aac]
mov dword [ebx], 0xc
mov al, 0xc
jmp 0x40b8e8
cmp ebx, 0x1f
ja 0x40ba82
test edi, edi
je 0x40bf40
mov ecx, ebx
jmp 0x40ba6d
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x40ba65
mov edx, ebp
mov eax, ebp
mov ebx, dword [esp + 0x40]
shr eax, 0x18
shl edx, 0x18
add edx, eax
mov eax, ebp
shr eax, 8
and ebp, 0xff00
and eax, 0xff00
shl ebp, 8
add eax, edx
add eax, ebp
xor ebp, ebp
mov dword [ebx + 0x14], eax
mov ebx, dword [esp + 0xc0]
mov dword [ebx + 0x30], eax
mov ebx, dword [esp + 0x40]
mov dword [ebx], 0xa
xor ebx, ebx
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x40d3d3
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0040df20
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0xc0]
mov dword [ecx + 0x14], eax
mov dword [edx + 0x30], eax
mov dword [ecx], 0xb
cmp dword [esp + 0xc4], 5
je 0x40bf40
mov ecx, dword [esp + 0x40]
mov eax, dword [ecx + 4]
test eax, eax
jne 0x40caa1
cmp ebx, 2
ja 0x40bb42
test edi, edi
je 0x40bf40
movzx eax, byte [esi]
mov ecx, ebx
sub edi, 1
add esi, 1
add ebx, 8
shl eax, cl
add ebp, eax
mov edx, dword [esp + 0x40]
mov eax, ebp
and eax, 1
shr ebp, 1
mov dword [edx + 4], eax
mov eax, ebp
and eax, 3
cmp eax, 2
je 0x40cb72
cmp eax, 3
je 0x40cfd4
cmp eax, 1
je 0x40cfa4
mov dword [edx], 0xd
mov eax, 0xd
shr ebp, 2
sub ebx, 3
jmp 0x40b92e
mov ecx, dword [esp + 0x40]
mov edx, dword [ecx + 0x40]
test edx, edx
je 0x40bbdb
cmp ebx, edx
jae 0x40bbc0
test edi, edi
je 0x40bf40
mov ecx, ebx
nop
jmp 0x40bbaa
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x40bba2
mov ebx, ecx
mov ecx, edx
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x40]
sub ebx, edx
sub eax, 1
and eax, ebp
add dword [ecx + 0x38], eax
mov ecx, edx
shr ebp, cl
mov eax, dword [esp + 0x40]
mov dword [eax], 0x15
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x40]
mov ecx, dword [eax + 0x50]
mov eax, 1
mov edx, dword [edx + 0x48]
shl eax, cl
sub eax, 1
mov dword [esp + 0x50], eax
and eax, ebp
mov dword [esp + 0x44], edx
lea edx, [edx + eax*4]
movzx eax, byte [edx]
mov byte [esp + 0x48], al
movzx eax, byte [edx + 1]
movzx edx, word [edx + 2]
mov word [esp + 0x64], dx
movzx edx, al
cmp ebx, edx
jae 0x40d1fc
test edi, edi
je 0x40bf40
mov ecx, ebx
jmp 0x40bc3d
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
mov ebx, dword [esp + 0x44]
shl eax, cl
add ecx, 8
add ebp, eax
mov eax, dword [esp + 0x50]
and eax, ebp
lea edx, [ebx + eax*4]
movzx eax, byte [edx]
movzx ebx, word [edx + 2]
mov byte [esp + 0x48], al
movzx eax, byte [edx + 1]
movzx edx, al
cmp edx, ecx
ja 0x40bc35
mov word [esp + 0x64], bx
mov ebx, ecx
mov dword [esp + 0x50], edx
movzx ecx, byte [esp + 0x48]
mov dword [esp + 0x70], ecx
and ecx, 0xf0
je 0x40cbf0
movzx eax, al
mov ecx, eax
shr ebp, cl
sub ebx, dword [esp + 0x50]
test byte [esp + 0x70], 0x40
je 0x40cf16
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x40]
mov dword [eax + 0x18], str.invalid_distance_code
mov eax, 0x1c
mov dword [edx], 0x1c
jmp switch.0x0040ba40
mov dword [ecx], 0x17
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x40bf40
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0x4c]
mov ecx, dword [edx + 0x3c]
cmp eax, ecx
jae 0x40cac0
sub ecx, eax
mov eax, edx
mov edx, dword [edx + 0x28]
cmp ecx, edx
jbe 0x40cd12
sub ecx, edx
mov edx, dword [eax + 0x20]
sub edx, ecx
add edx, dword [eax + 0x2c]
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 0x38]
cmp ecx, eax
mov dword [esp + 0x44], eax
cmova ecx, eax
cmp ecx, dword [esp + 0x4c]
cmova ecx, dword [esp + 0x4c]
sub dword [esp + 0x4c], ecx
sub eax, ecx
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x40]
mov dword [ecx + 0x38], eax
mov eax, dword [esp + 0x48]
shr eax, 2
mov dword [esp + 0x44], eax
shl eax, 2
test eax, eax
mov dword [esp + 0x50], eax
je 0x40d573
mov eax, dword [esp + 0x54]
cmp dword [esp + 0x48], 9
mov ecx, dword [esp + 0x54]
seta byte [esp + 0x70]
or eax, edx
test al, 3
sete al
and byte [esp + 0x70], al
lea eax, [edx + 4]
cmp dword [esp + 0x54], eax
seta al
add ecx, 4
cmp edx, ecx
seta cl
or eax, ecx
test byte [esp + 0x70], al
je 0x40d573
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x54]
xor eax, eax
mov ecx, dword [edx + eax*4]
mov dword [esi + eax*4], ecx
add eax, 1
cmp dword [esp + 0x44], eax
ja 0x40bd93
mov eax, dword [esp + 0x48]
sub eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
add ecx, dword [esp + 0x50]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x50]
add edx, dword [esp + 0x50]
cmp dword [esp + 0x48], eax
mov esi, dword [esp + 0x64]
je 0x40bde4
mov dword [esp + 0x50], esi
xor eax, eax
mov esi, edx
movzx edx, byte [esi + eax]
mov byte [ecx + eax], dl
add eax, 1
cmp dword [esp + 0x44], eax
jne 0x40bdd0
mov esi, dword [esp + 0x50]
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x48]
add dword [esp + 0x54], eax
mov eax, dword [edx + 0x38]
test eax, eax
je 0x40cb82
mov eax, dword [edx]
jmp 0x40b92e
mov ebx, dword [esp + 0x40]
mov dword [ebx], 0x1d
mov dword [esp + 0x58], 0xfffffffc
jmp 0x40b93f
cmp ebx, 0x1f
ja 0x40be4f
test edi, edi
je 0x40bf40
mov ecx, ebx
nop
jmp 0x40be3a
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x40be32
mov ebx, dword [esp + 0x40]
test byte [ebx + 0x11], 2
jne 0x40d024
mov dword [ebx], 3
xor ebp, ebp
xor ebx, ebx
jmp 0x40c955
mov eax, dword [esp + 0x40]
mov edx, dword [eax + 0x40]
test edx, edx
je 0x40cad6
cmp ebx, edx
jae 0x40beb0
test edi, edi
je 0x40bf40
mov ecx, ebx
lea esi, [esi]
jmp 0x40be9a
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x40be92
mov ebx, ecx
mov ecx, edx
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x40]
sub ebx, edx
sub eax, 1
and eax, ebp
add eax, dword [ecx + 0x3c]
mov dword [ecx + 0x3c], eax
mov ecx, edx
shr ebp, cl
mov ecx, dword [esp + 0x40]
jmp 0x40cadf
cmp ebx, 0xf
ja 0x40bf03
test edi, edi
je 0x40bf40
mov ecx, ebx
jmp 0x40beec
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x40bee4
mov ebx, ecx
mov eax, dword [esp + 0x40]
mov edx, ebp
cmp dl, 8
mov dword [eax + 0x10], ebp
je 0x40d091
mov ecx, dword [esp + 0xc0]
mov dword [ecx + 0x18], str.unknown_compression_method
mov dword [eax], 0x1c
mov eax, 0x1c
jmp switch.0x0040ba40
mov eax, dword [esp + 0x40]
mov dword [eax], 0x13
lea esi, [esi]
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x4c]
mov dword [eax], esi
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], ecx
mov dword [eax + 4], edi
mov eax, dword [esp + 0x40]
mov dword [eax + 0x30], ebp
mov ebp, dword [eax + 0x20]
mov dword [eax + 0x34], ebx
test ebp, ebp
jne 0x40bf76
cmp dword [eax], 0x18
ja 0x40bf95
cmp dword [esp + 0x60], ecx
je 0x40bf95
mov ebx, dword [esp + 0x60]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0xc0]
mov dword [esp], ebx
call fcn.0040b720
test eax, eax
jne 0x40be02
mov eax, dword [esp + 0xc0]
mov esi, dword [esp + 0x60]
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 0x5c]
sub esi, dword [eax + 0x10]
sub ebx, dword [eax + 4]
add dword [eax + 0x14], esi
add dword [eax + 8], ebx
add dword [edx + 0x18], esi
test esi, esi
je 0x40bff6
mov edi, dword [edx + 8]
test edi, edi
je 0x40bff6
mov ecx, dword [edx + 0x10]
mov dword [esp + 8], esi
test ecx, ecx
je 0x40ca18
mov eax, dword [eax + 0xc]
sub eax, esi
mov dword [esp + 4], eax
mov eax, dword [edx + 0x14]
mov dword [esp], eax
call fcn.0040dc60
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0xc0]
mov dword [edx + 0x14], eax
mov dword [ecx + 0x30], eax
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x40]
cmp dword [eax + 4], 1
sbb eax, eax
not eax
and eax, 0x40
add eax, dword [edx + 0x34]
mov edx, pe_nt_image_headers32
cmp dword [ecx], 0xb
mov ecx, 0
cmovne edx, ecx
add eax, edx
mov edx, dword [esp + 0xc0]
or esi, ebx
mov dword [edx + 0x2c], eax
je 0x40c03e
cmp dword [esp + 0xc4], 4
jne 0x40b93f
mov eax, dword [esp + 0x58]
test eax, eax
mov eax, 0xfffffffb
cmovne eax, dword [esp + 0x58]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x58]
add esp, 0xac
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x40]
mov ecx, dword [eax + 0x4c]
mov eax, 1
mov edx, dword [edx + 0x44]
shl eax, cl
sub eax, 1
mov dword [esp + 0x50], eax
and eax, ebp
mov dword [esp + 0x44], edx
lea edx, [edx + eax*4]
movzx eax, byte [edx]
mov byte [esp + 0x48], al
movzx eax, byte [edx + 1]
movzx edx, word [edx + 2]
mov word [esp + 0x64], dx
movzx edx, al
cmp ebx, edx
jae 0x40c0f2
test edi, edi
je 0x40bf40
mov ecx, ebx
jmp 0x40c0b8
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
mov ebx, dword [esp + 0x44]
shl eax, cl
add ecx, 8
add ebp, eax
mov eax, dword [esp + 0x50]
and eax, ebp
lea edx, [ebx + eax*4]
movzx eax, byte [edx]
movzx ebx, word [edx + 2]
mov byte [esp + 0x48], al
movzx eax, byte [edx + 1]
movzx edx, al
cmp edx, ecx
ja 0x40c0b0
mov word [esp + 0x64], bx
mov ebx, ecx
cmp byte [esp + 0x48], 0
je 0x40cf38
movzx ecx, byte [esp + 0x48]
mov dword [esp + 0x70], ecx
and ecx, 0xf0
jne 0x40d12d
movzx ecx, word [esp + 0x64]
mov dword [esp + 0x48], 1
mov dword [esp + 0x74], ecx
movzx ecx, al
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x70]
add ecx, dword [esp + 0x50]
shl dword [esp + 0x48], cl
mov ecx, dword [esp + 0x48]
sub ecx, 1
mov dword [esp + 0x64], ecx
and ecx, ebp
mov dword [esp + 0x48], ecx
mov ecx, eax
shr dword [esp + 0x48], cl
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
add eax, dword [esp + 0x74]
lea eax, [ecx + eax*4]
movzx ecx, byte [eax]
mov byte [esp + 0x48], cl
movzx ecx, byte [eax + 1]
movzx eax, word [eax + 2]
mov byte [esp + 0x78], cl
mov word [esp + 0x70], ax
movzx eax, cl
mov ecx, dword [esp + 0x50]
add ecx, eax
cmp ebx, ecx
jae 0x40c1eb
test edi, edi
je 0x40bf40
mov dword [esp + 0x7c], edx
jmp 0x40c198
test edi, edi
je 0x40bf40
movzx eax, byte [esi]
mov ecx, ebx
add ebx, 8
mov edx, dword [esp + 0x44]
sub edi, 1
add esi, 1
shl eax, cl
movzx ecx, byte [esp + 0x50]
add ebp, eax
mov eax, dword [esp + 0x64]
and eax, ebp
shr eax, cl
mov ecx, dword [esp + 0x50]
add eax, dword [esp + 0x74]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [esp + 0x48], dl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x70], ax
movzx eax, dl
add ecx, eax
cmp ecx, ebx
ja 0x40c190
mov byte [esp + 0x78], dl
mov edx, dword [esp + 0x7c]
movzx ecx, byte [esp + 0x50]
sub ebx, edx
mov edx, dword [esp + 0x40]
shr ebp, cl
mov ecx, eax
movzx eax, byte [esp + 0x78]
shr ebp, cl
sub ebx, eax
movzx eax, word [esp + 0x70]
cmp byte [esp + 0x48], 0
mov dword [edx + 0x38], eax
je 0x40cf4a
movzx eax, byte [esp + 0x48]
mov dword [esp + 0x70], eax
test byte [esp + 0x70], 0x20
je 0x40d144
mov edx, dword [esp + 0x40]
mov eax, 0xb
mov dword [edx], 0xb
jmp switch.0x0040ba40
mov ecx, dword [esp + 0x40]
mov eax, dword [ecx + 8]
test eax, eax
je 0x40d1e5
mov ecx, dword [esp + 0x40]
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x40d1e5
cmp ebx, 0x1f
ja 0x40c291
test edi, edi
je 0x40bf40
mov ecx, ebx
lea esi, [esi]
jmp 0x40c27a
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x40c272
mov ebx, ecx
mov eax, dword [esp + 0x40]
cmp dword [eax + 0x18], ebp
je 0x40d1e1
mov edx, dword [esp + 0xc0]
mov dword [edx + 0x18], str.incorrect_length_check
mov dword [eax], 0x1c
mov eax, 0x1c
jmp switch.0x0040ba40
mov dword [esp + 0x58], 1
jmp 0x40bf40
mov dword [esp + 0x58], 0xfffffffd
jmp 0x40bf40
mov ecx, dword [esp + 0x40]
mov ecx, dword [ecx + 0x10]
mov edx, ecx
mov dword [esp + 0x44], ecx
and edx, 0x400
test edx, edx
je 0x40c320
mov edx, dword [esp + 0x40]
mov eax, dword [edx + 0x38]
cmp edi, eax
mov edx, eax
cmovbe edx, edi
test edx, edx
jne 0x40cb10
test eax, eax
jne 0x40bf40
mov ecx, dword [esp + 0x40]
mov ecx, dword [ecx + 0x10]
mov dword [esp + 0x44], ecx
mov eax, dword [esp + 0x40]
mov dword [eax], 6
test dword [esp + 0x44], 0x800
je 0x40c37c
test edi, edi
je 0x40bf40
xor edx, edx
nop
movzx ecx, byte [esi + edx]
add edx, 1
test ecx, ecx
je 0x40c34f
cmp edx, edi
jb 0x40c340
test dword [esp + 0x44], 0x2000
mov dword [esp + 0x48], ecx
jne 0x40cbc0
mov ecx, dword [esp + 0x48]
sub edi, edx
add esi, edx
test ecx, ecx
jne 0x40bf40
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x44], eax
mov edx, dword [esp + 0x40]
mov dword [edx], 7
test dword [esp + 0x44], 0x1000
je 0x40c3dc
test edi, edi
je 0x40bf40
xor edx, edx
lea esi, [esi]
movzx ecx, byte [esi + edx]
add edx, 1
test ecx, ecx
je 0x40c3af
cmp edx, edi
jb 0x40c3a0
test dword [esp + 0x44], 0x2000
mov dword [esp + 0x48], ecx
jne 0x40cb92
sub edi, edx
add esi, edx
mov edx, dword [esp + 0x48]
test edx, edx
jne 0x40bf40
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x44], eax
mov edx, dword [esp + 0x40]
mov dword [edx], 8
test dword [esp + 0x44], 0x200
je 0x40ca64
cmp ebx, 0xf
ja 0x40c424
test edi, edi
je 0x40bf40
mov ecx, ebx
jmp 0x40c40d
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x40c405
mov ebx, ecx
mov ecx, dword [esp + 0x40]
movzx eax, word [ecx + 0x14]
cmp eax, ebp
je 0x40ca60
mov eax, dword [esp + 0xc0]
mov dword [eax + 0x18], str.header_crc_mismatch
mov eax, 0x1c
mov dword [ecx], 0x1c
jmp switch.0x0040ba40
mov edx, dword [esp + 0x40]
mov eax, dword [edx + 0x38]
test eax, eax
je 0x40cb30
cmp edi, eax
mov edx, dword [esp + 0x4c]
cmovbe eax, edi
cmp eax, dword [esp + 0x4c]
cmovbe edx, eax
test edx, edx
je 0x40bf40
mov eax, dword [esp + 0x54]
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov dword [esp + 0x3c], edx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
sub dword [esp + 0x4c], edx
add dword [esp + 0x54], edx
sub edi, edx
add esi, edx
sub dword [ecx + 0x38], edx
mov eax, dword [ecx]
jmp 0x40b92e
cmp ebx, 0xd
ja 0x40c4e1
test edi, edi
je 0x40bf40
mov ecx, ebx
nop
jmp 0x40c4ca
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xd
jbe 0x40c4c2
mov ebx, ecx
mov edx, dword [esp + 0x40]
mov ecx, ebp
mov eax, ebp
shr ecx, 5
and eax, 0x1f
and ecx, 0x1f
add eax, 0x101
add ecx, 1
sub ebx, 0xe
mov dword [edx + 0x5c], ecx
mov dword [edx + 0x58], eax
mov edx, ebp
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x40]
shr edx, 0xa
and edx, 0xf
add edx, 4
shr ebp, 0xe
cmp eax, 0x11e
mov dword [esp + 0x44], edx
mov dword [ecx + 0x54], edx
ja 0x40ccf0
cmp dword [esp + 0x48], 0x1e
ja 0x40ccf0
mov ecx, dword [esp + 0x40]
xor edx, edx
mov dword [esp + 0x50], edx
mov dword [ecx + 0x60], 0
mov dword [ecx], 0x10
mov ecx, ebx
jmp 0x40c5ee
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr ebp, cl
cmp ebx, 0x1f
ja 0x40c58f
test edi, edi
je 0x40bf40
mov ecx, ebx
jmp 0x40c578
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x40c570
mov ebx, ecx
mov edx, ebp
mov eax, ebp
shr edx, 0x10
and eax, 0xffff
xor edx, 0xffff
cmp eax, edx
je 0x40d07b
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x40]
mov dword [eax + 0x18], str.invalid_stored_block_lengths
mov eax, 0x1c
mov dword [edx], 0x1c
jmp switch.0x0040ba40
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x40]
mov edx, dword [edx + 0x54]
mov dword [esp + 0x44], edx
mov edx, dword [ecx + 0x60]
cmp dword [esp + 0x44], edx
jbe 0x40c643
mov ecx, ebx
mov dword [esp + 0x50], edx
cmp ecx, 2
ja 0x40c60b
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
mov ebx, dword [esp + 0x50]
mov eax, ebp
sub ecx, 3
mov edx, dword [esp + 0x40]
and eax, 7
add dword [esp + 0x50], 1
shr ebp, 3
movzx ebx, word [ebx + ebx + 0x4153c0]
mov word [edx + ebx*2 + 0x68], ax
mov ebx, dword [esp + 0x50]
mov eax, dword [esp + 0x44]
mov dword [edx + 0x60], ebx
cmp ebx, eax
jb 0x40c5ee
mov edx, ebx
mov ebx, ecx
cmp edx, 0x12
ja 0x40c672
mov ecx, dword [esp + 0x40]
lea eax, [edx + edx + 0x4153c0]
movzx edx, word [eax]
add eax, 2
cmp eax, 0x4153e6
mov word [ecx + edx*2 + 0x68], 0
jne 0x40c653
mov edx, dword [esp + 0x40]
mov dword [edx + 0x60], 0x13
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x6c]
mov dword [ecx + 0x4c], 7
mov dword [ecx + 0x64], eax
mov dword [ecx + 0x44], eax
mov eax, ecx
add eax, 0x4c
mov dword [esp + 0x10], eax
add eax, 0x18
mov dword [esp + 0xc], eax
add eax, 4
mov dword [esp + 0x14], edx
mov dword [esp + 8], 0x13
mov dword [esp + 4], eax
mov dword [esp], 0
call fcn.0040e080
test eax, eax
mov dword [esp + 0x58], eax
je 0x40d328
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0xc0]
mov dword [ecx + 0x18], str.invalid_code_lengths_set
mov dword [eax], 0x1c
mov eax, 0x1c
jmp switch.0x0040ba40
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x40]
mov eax, dword [eax + 0x60]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x40]
mov ecx, dword [ecx + 0x58]
mov dword [esp + 0x78], ecx
add ecx, dword [eax + 0x5c]
mov eax, dword [esp + 0x64]
mov dword [esp + 0x70], ecx
cmp dword [esp + 0x70], eax
mov edx, dword [esp + 0x40]
jbe 0x40d34a
mov eax, dword [esp + 0x40]
mov edx, dword [edx + 0x44]
mov ecx, dword [eax + 0x4c]
mov dword [esp + 0x48], edx
mov edx, 1
shl edx, cl
mov ecx, edx
mov edx, dword [esp + 0x48]
sub ecx, 1
mov eax, ecx
and eax, ebp
lea eax, [edx + eax*4]
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov dword [esp + 0x44], ecx
mov word [esp + 0x74], ax
movzx eax, dl
cmp ebx, eax
mov dword [esp + 0x50], eax
jae 0x40c7a7
test edi, edi
je 0x40bf40
mov ecx, ebx
jmp 0x40c770
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
mov edx, dword [esp + 0x48]
shl eax, cl
add ecx, 8
add ebp, eax
mov eax, dword [esp + 0x44]
and eax, ebp
lea eax, [edx + eax*4]
movzx edx, byte [eax + 1]
movzx ebx, word [eax + 2]
movzx eax, dl
cmp eax, ecx
ja 0x40c768
mov word [esp + 0x74], bx
mov ebx, ecx
mov dword [esp + 0x50], eax
cmp word [esp + 0x74], 0xf
ja 0x40cd20
cmp ebx, dword [esp + 0x50]
jae 0x40c7f0
test edi, edi
je 0x40bf40
mov ecx, ebx
mov ebx, edx
mov edx, dword [esp + 0x50]
jmp 0x40c7d8
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x40c7d0
mov edx, ebx
mov ebx, ecx
mov ecx, edx
mov eax, dword [esp + 0x64]
mov edx, dword [esp + 0x40]
shr ebp, cl
movzx ecx, word [esp + 0x74]
sub ebx, dword [esp + 0x50]
mov word [edx + eax*2 + 0x68], cx
add eax, 1
mov dword [esp + 0x64], eax
mov dword [edx + 0x60], eax
jmp 0x40c70d
mov edx, dword [esp + 0x40]
mov edx, dword [edx + 0x10]
mov dword [esp + 0x44], edx
jmp 0x40c32a
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x44], eax
jmp 0x40c386
mov ecx, dword [esp + 0x40]
mov ecx, dword [ecx + 0x10]
mov dword [esp + 0x44], ecx
jmp 0x40c3e6
mov ecx, dword [esp + 0x40]
mov edx, dword [ecx + 8]
test edx, edx
je 0x40cb62
cmp ebx, 0xf
ja 0x40c891
test edi, edi
je 0x40bf40
mov ecx, ebx
nop
jmp 0x40c87a
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x40c872
mov ebx, ecx
cmp ebp, 0x8b1f
je 0x40d205
mov eax, dword [esp + 0x40]
and edx, 1
mov dword [eax + 0x10], 0
je 0x40d0bf
mov ecx, ebp
mov eax, ebp
shl ecx, 8
mov edx, 0x8421085
shr eax, 8
and ecx, 0xffff
add ecx, eax
mov eax, ecx
mul edx
mov eax, ecx
sub eax, edx
shr eax, 1
add edx, eax
shr edx, 4
mov eax, edx
shl eax, 5
sub eax, edx
cmp ecx, eax
jne 0x40d0bf
mov eax, ebp
and eax, 0xf
cmp eax, 8
je 0x40d441
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x40]
mov dword [eax + 0x18], str.unknown_compression_method
mov eax, 0x1c
mov dword [edx], 0x1c
jmp switch.0x0040ba40
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x40bf40
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x54]
sub dword [esp + 0x4c], 1
mov eax, dword [edx + 0x38]
mov byte [ecx], al
add ecx, 1
mov eax, 0x12
mov dword [esp + 0x54], ecx
mov dword [edx], 0x12
jmp switch.0x0040ba40
cmp ebx, 0xf
ja 0x40c97f
test edi, edi
je 0x40bf40
mov ecx, ebx
nop
jmp 0x40c96a
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x40c962
mov ebx, dword [esp + 0x40]
mov ebx, dword [ebx + 0x10]
mov dword [esp + 0x44], ebx
and bh, 2
jne 0x40cf5e
mov ebx, dword [esp + 0x40]
xor ebp, ebp
mov edx, dword [esp + 0x44]
mov dword [ebx], 4
xor ebx, ebx
jmp 0x40c9b4
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x44], eax
mov edx, eax
and edx, 0x400
je 0x40ca02
cmp ebx, 0xf
ja 0x40c9e9
test edi, edi
je 0x40bf40
mov ecx, ebx
jmp 0x40c9d4
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x40c9d0
mov ebx, dword [esp + 0x40]
test dword [esp + 0x44], 0x200
mov dword [ebx + 0x38], ebp
jne 0x40d0e1
xor ebx, ebx
xor ebp, ebp
mov ecx, dword [esp + 0x40]
mov dword [ecx], 5
jmp 0x40c2f3
mov ebx, ecx
jmp 0x40bf40
mov edx, dword [esp + 0xc0]
mov ecx, dword [esp + 0x40]
mov eax, dword [edx + 0xc]
sub eax, esi
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x14]
mov dword [esp], eax
call fcn.0040df20
jmp 0x40bfe5
mov ebx, dword [ebx + 4]
mov dword [esp + 0x58], 0xfffffffe
test ebx, ebx
jne 0x40b93f
mov dword [esp + 0x5c], 0
jmp 0x40b8d9
xor ebx, ebx
xor ebp, ebp
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0040dc60
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0xc0]
mov dword [edx + 0x14], eax
mov dword [ecx + 0x30], eax
mov eax, 0xb
mov dword [edx], 0xb
jmp switch.0x0040ba40
mov eax, ecx
mov ecx, ebx
and ecx, 7
and ebx, 0xfffffff8
mov dword [eax], 0x19
shr ebp, cl
mov eax, 0x19
jmp switch.0x0040ba40
mov eax, edx
mov edx, dword [esp + 0x54]
sub edx, ecx
mov ecx, dword [eax + 0x38]
mov dword [esp + 0x44], ecx
mov eax, ecx
jmp 0x40bd1a
mov edx, dword [esp + 0x40]
mov eax, dword [edx + 0x3c]
mov ecx, edx
mov edx, dword [esp + 0x60]
add edx, dword [ecx + 0x24]
sub edx, dword [esp + 0x4c]
cmp edx, eax
jae 0x40bcc8
mov eax, dword [esp + 0xc0]
mov dword [eax + 0x18], str.invalid_distance_too_far_back
mov eax, 0x1c
mov dword [ecx], 0x1c
jmp switch.0x0040ba40
test dword [esp + 0x44], 0x200
jne 0x40cff6
sub eax, edx
sub edi, edx
add esi, edx
mov edx, dword [esp + 0x40]
mov dword [edx + 0x38], eax
jmp 0x40c30d
mov eax, dword [esp + 0x40]
mov dword [eax], 0xb
mov eax, 0xb
jmp switch.0x0040ba40
mov ebx, dword [esp + 0x4c]
xor ebp, ebp
mov eax, dword [ecx + 8]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x60], ebx
xor ebx, ebx
mov dword [edx], 0x1a
jmp 0x40c247
mov dword [ecx], 0xc
mov eax, 0xc
jmp switch.0x0040ba40
mov dword [edx], 0xf
mov eax, 0xf
jmp 0x40bb7b
mov dword [edx], 0x12
mov eax, 0x12
jmp switch.0x0040ba40
mov eax, dword [esp + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x3c], edx
mov dword [esp], ecx
call fcn.0040dc60
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
mov dword [ecx + 0x14], eax
jmp 0x40c3c1
mov eax, dword [esp + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x3c], edx
mov dword [esp], ecx
call fcn.0040dc60
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
mov dword [ecx + 0x14], eax
jmp 0x40c361
movzx ecx, word [esp + 0x64]
mov dword [esp + 0x48], 1
mov dword [esp + 0x74], ecx
movzx ecx, al
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x70]
add ecx, dword [esp + 0x50]
shl dword [esp + 0x48], cl
mov ecx, dword [esp + 0x48]
sub ecx, 1
mov dword [esp + 0x70], ecx
and ecx, ebp
mov dword [esp + 0x48], ecx
mov ecx, eax
shr dword [esp + 0x48], cl
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
add eax, dword [esp + 0x74]
lea eax, [ecx + eax*4]
movzx ecx, byte [eax]
mov byte [esp + 0x48], cl
movzx ecx, byte [eax + 1]
movzx eax, word [eax + 2]
mov byte [esp + 0x78], cl
mov word [esp + 0x64], ax
movzx eax, cl
mov ecx, dword [esp + 0x50]
add ecx, eax
cmp ebx, ecx
jae 0x40cccb
test edi, edi
je 0x40bf40
mov dword [esp + 0x7c], edx
jmp 0x40cc78
test edi, edi
je 0x40bf40
movzx eax, byte [esi]
mov ecx, ebx
add ebx, 8
mov edx, dword [esp + 0x44]
sub edi, 1
add esi, 1
shl eax, cl
movzx ecx, byte [esp + 0x50]
add ebp, eax
mov eax, dword [esp + 0x70]
and eax, ebp
shr eax, cl
mov ecx, dword [esp + 0x50]
add eax, dword [esp + 0x74]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [esp + 0x48], dl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x64], ax
movzx eax, dl
add ecx, eax
cmp ecx, ebx
ja 0x40cc70
mov byte [esp + 0x78], dl
mov edx, dword [esp + 0x7c]
sub ebx, edx
movzx edx, byte [esp + 0x78]
movzx ecx, byte [esp + 0x50]
mov dword [esp + 0x50], edx
movzx edx, byte [esp + 0x48]
shr ebp, cl
mov dword [esp + 0x70], edx
jmp 0x40bc93
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x40]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov eax, 0x1c
mov dword [edx], 0x1c
jmp switch.0x0040ba40
mov eax, dword [esp + 0x40]
sub edx, ecx
add edx, dword [eax + 0x2c]
jmp 0x40bd0e
cmp word [esp + 0x74], 0x10
movzx edx, dl
je 0x40d171
cmp word [esp + 0x74], 0x11
mov dword [esp + 0x44], edx
je 0x40d293
add edx, 7
cmp ebx, edx
jae 0x40cd70
test edi, edi
je 0x40bf40
mov ecx, ebx
jmp 0x40cd5a
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x40cd52
mov ebx, ecx
movzx ecx, byte [esp + 0x44]
sub ebx, dword [esp + 0x50]
shr ebp, cl
sub ebx, 7
mov eax, ebp
and eax, 0x7f
add eax, 0xb
mov dword [esp + 0x44], eax
mov edx, dword [esp + 0x44]
shr ebp, 7
xor eax, eax
add edx, dword [esp + 0x64]
cmp dword [esp + 0x70], edx
mov dword [esp + 0x74], edx
jb 0x40d4ec
mov edx, dword [esp + 0x44]
mov word [esp + 0x50], ax
mov eax, dword [esp + 0x64]
sub edx, 1
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x40]
add eax, 0x34
mov dword [esp + 0x84], eax
lea ecx, [edx + eax*2]
mov eax, dword [esp + 0x64]
shl ecx, 0x1e
shr ecx, 0x1f
cmp dword [esp + 0x44], ecx
cmovbe ecx, dword [esp + 0x44]
test ecx, ecx
je 0x40ce37
mov dword [esp + 0x7c], esi
mov esi, edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x88], ebp
movzx ebp, word [esp + 0x50]
mov dword [esp + 0x80], edi
mov edi, eax
mov dword [esp + 0x8c], ebx
mov word [esi + eax*2 + 0x68], bp
add eax, 1
sub edx, 1
mov ebx, eax
sub ebx, edi
cmp ebx, ecx
jb 0x40ce07
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0x80]
mov ebp, dword [esp + 0x88]
mov ebx, dword [esp + 0x8c]
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x44]
sub edx, ecx
mov dword [esp + 0x44], edx
shr edx, 1
mov dword [esp + 0x64], edx
add edx, edx
mov dword [esp + 0x7c], edx
je 0x40cecb
movzx edx, word [esp + 0x50]
add ecx, dword [esp + 0x84]
mov dword [esp + 0x84], esi
mov esi, dword [esp + 0x64]
shl edx, 0x10
mov dword [esp + 0x88], edx
movzx edx, word [esp + 0x50]
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x88]
or dword [esp + 0x80], edx
mov edx, dword [esp + 0x40]
mov dword [esp + 0x88], edi
mov edi, dword [esp + 0x80]
lea ecx, [edx + ecx*2]
xor edx, edx
mov dword [ecx + edx*4], edi
add edx, 1
cmp esi, edx
ja 0x40cea1
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x44]
sub dword [esp + 0x48], ecx
mov esi, dword [esp + 0x84]
add eax, ecx
mov edi, dword [esp + 0x88]
cmp ecx, edx
je 0x40cf00
mov ecx, dword [esp + 0x48]
xor edx, edx
mov dword [esp + 0x44], esi
movzx esi, word [esp + 0x50]
lea ecx, [ecx + ecx + 2]
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x40]
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x48]
lea esi, [esi]
mov word [eax + edx + 0x68], si
add edx, 2
cmp edx, ecx
jne 0x40cef0
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0x40]
mov dword [esp + 0x64], edx
mov dword [eax + 0x60], edx
mov eax, edx
jmp 0x40c70d
movzx edx, byte [esp + 0x48]
mov ecx, dword [esp + 0x40]
movzx eax, word [esp + 0x64]
and edx, 0xf
mov dword [ecx + 0x40], edx
mov dword [ecx + 0x3c], eax
mov dword [ecx], 0x16
jmp 0x40be77
mov ecx, eax
sub ebx, edx
movzx eax, word [esp + 0x64]
mov edx, dword [esp + 0x40]
shr ebp, cl
mov dword [edx + 0x38], eax
mov ecx, dword [esp + 0x40]
mov eax, 0x18
mov dword [ecx], 0x18
jmp switch.0x0040ba40
mov ebx, dword [esp + 0x40]
mov eax, ebp
mov byte [esp + 0x9c], al
mov eax, ebp
shr eax, 8
mov byte [esp + 0x9d], al
lea eax, [esp + 0x9c]
mov dword [esp + 8], 2
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x14]
mov dword [esp], eax
call fcn.0040dc60
mov dword [ebx + 0x14], eax
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x44], eax
jmp 0x40c993
mov ecx, dword [esp + 0x40]
mov eax, 0x12
mov dword [ecx + 0x44], 0x414b40
mov dword [ecx + 0x4c], 9
mov dword [ecx + 0x48], 0x415340
mov dword [ecx + 0x50], 5
mov dword [ecx], 0x12
jmp 0x40bb7b
mov edx, dword [esp + 0xc0]
mov eax, 0x1c
mov ecx, dword [esp + 0x40]
mov dword [edx + 0x18], str.invalid_block_type
mov dword [ecx], 0x1c
jmp 0x40bb7b
mov ecx, dword [esp + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov eax, dword [ecx + 0x14]
mov dword [esp + 0x3c], edx
mov dword [esp], eax
call fcn.0040dc60
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
mov dword [ecx + 0x14], eax
mov eax, dword [ecx + 0x38]
jmp 0x40cb1e
mov eax, ebp
mov byte [esp + 0x9c], al
mov eax, ebp
shr eax, 8
mov byte [esp + 0x9d], al
mov eax, ebp
shr eax, 0x10
mov byte [esp + 0x9e], al
mov eax, ebp
shr eax, 0x18
mov byte [esp + 0x9f], al
lea eax, [esp + 0x9c]
mov dword [esp + 8], 4
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x14]
mov dword [esp], eax
call fcn.0040dc60
mov dword [ebx + 0x14], eax
mov ebx, dword [esp + 0x40]
jmp 0x40be5d
mov ebx, dword [esp + 0x40]
xor ebp, ebp
mov dword [ebx + 0x38], eax
mov dword [ebx], 0xe
xor ebx, ebx
jmp 0x40c459
test ebp, 0xe000
je 0x40d274
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x40]
mov dword [eax + 0x18], str.unknown_header_flags_set
mov eax, 0x1c
mov dword [edx], 0x1c
jmp switch.0x0040ba40
mov edx, dword [esp + 0xc0]
mov eax, 0x1c
mov ecx, dword [esp + 0x40]
mov dword [edx + 0x18], str.incorrect_header_check
mov dword [ecx], 0x1c
jmp switch.0x0040ba40
mov eax, ebp
mov byte [esp + 0x9c], al
mov eax, ebp
xor ebp, ebp
shr eax, 8
mov byte [esp + 0x9d], al
lea eax, [esp + 0x9c]
mov dword [esp + 8], 2
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x14]
mov dword [esp], eax
call fcn.0040dc60
mov edx, dword [ebx + 0x10]
mov dword [esp + 0x44], edx
and edx, 0x400
mov dword [ebx + 0x14], eax
xor ebx, ebx
jmp 0x40ca02
mov ecx, eax
sub ebx, edx
movzx eax, word [esp + 0x64]
mov edx, dword [esp + 0x40]
shr ebp, cl
mov dword [edx + 0x38], eax
jmp 0x40c21f
test byte [esp + 0x70], 0x40
je 0x40d30e
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0xc0]
mov dword [ecx + 0x18], str.invalid_literal_length_code
mov dword [eax], 0x1c
mov eax, 0x1c
jmp switch.0x0040ba40
mov dword [esp + 0x44], edx
add edx, 2
cmp ebx, edx
jae 0x40d1a6
test edi, edi
je 0x40bf40
mov ecx, ebx
jmp 0x40d190
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x40d188
mov ebx, ecx
movzx ecx, byte [esp + 0x44]
mov eax, dword [esp + 0x64]
sub ebx, dword [esp + 0x50]
shr ebp, cl
test eax, eax
je 0x40d556
mov edx, dword [esp + 0x64]
sub ebx, 2
mov ecx, dword [esp + 0x40]
movzx eax, word [ecx + edx*2 + 0x66]
mov edx, ebp
and edx, 3
add edx, 3
mov dword [esp + 0x44], edx
shr ebp, 2
jmp 0x40cd93
xor ebx, ebx
xor ebp, ebp
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x58], 1
mov dword [ecx], 0x1b
jmp 0x40bf40
mov dword [esp + 0x50], edx
jmp 0x40bc7b
test dl, 2
je 0x40c89d
mov dword [esp + 8], 0
xor bp, bp
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0040dc60
mov ebx, dword [esp + 0x40]
lea edx, [esp + 0x9c]
mov byte [esp + 0x9c], 0x1f
mov byte [esp + 0x9d], 0x8b
mov dword [ebx + 0x14], eax
mov dword [esp + 8], 2
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0040dc60
mov dword [ebx], 1
mov dword [ebx + 0x14], eax
mov eax, 1
xor ebx, ebx
jmp switch.0x0040ba40
test ebp, 0x200
jne 0x40d404
mov ebx, dword [esp + 0x40]
xor ebp, ebp
mov dword [ebx], 2
xor ebx, ebx
jmp 0x40be25
add edx, 3
cmp ebx, edx
jae 0x40d2c4
test edi, edi
je 0x40bf40
mov ecx, ebx
jmp 0x40d2ae
test edi, edi
je 0x40ca11
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x40d2a6
mov ebx, ecx
movzx ecx, byte [esp + 0x44]
shr ebp, cl
mov eax, ebp
and eax, 7
add eax, 3
mov dword [esp + 0x44], eax
mov eax, 0xfffffffd
mov edx, dword [esp + 0x44]
sub eax, dword [esp + 0x50]
shr ebp, 3
add ebx, eax
xor eax, eax
jmp 0x40cd93
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x40]
sub edx, eax
mov dword [esp + 4], edx
mov eax, dword [ecx + 0x14]
mov dword [esp], eax
call fcn.0040df20
jmp 0x40b9d2
movzx edx, byte [esp + 0x48]
mov ecx, dword [esp + 0x40]
and edx, 0xf
mov dword [ecx + 0x40], edx
mov dword [ecx], 0x14
jmp 0x40bb8d
mov edx, dword [esp + 0x40]
mov dword [esp + 0x64], 0
mov dword [edx + 0x60], 0
mov ecx, edx
mov eax, edx
mov dword [edx], 0x11
jmp 0x40c6fb
cmp dword [edx], 0x1c
je 0x40c2b2
mov ecx, dword [esp + 0x68]
mov eax, dword [esp + 0x6c]
mov dword [edx + 0x4c], 9
mov dword [edx + 0x64], ecx
mov dword [edx + 0x44], ecx
add edx, 0x64
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0xc], edx
mov dword [esp + 0x3c], edx
mov dword [esp], 1
add eax, 0x4c
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x40]
add eax, 0x68
mov dword [esp + 4], eax
call fcn.0040e080
mov edx, dword [esp + 0x3c]
test eax, eax
mov dword [esp + 0x58], eax
je 0x40d47a
mov edx, dword [esp + 0xc0]
mov eax, 0x1c
mov ecx, dword [esp + 0x40]
mov dword [edx + 0x18], str.invalid_literal_lengths_set
mov dword [ecx], 0x1c
jmp switch.0x0040ba40
mov edx, dword [esp + 0xc0]
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x58], 2
mov dword [edx], esi
mov dword [edx + 0xc], ecx
mov dword [edx + 0x10], eax
mov dword [edx + 4], edi
mov edx, dword [esp + 0x40]
mov dword [edx + 0x30], ebp
mov dword [edx + 0x34], ebx
jmp 0x40b93f
mov ebx, dword [esp + 0x40]
mov eax, ebp
shr eax, 8
mov byte [esp + 0x9d], al
lea eax, [esp + 0x9c]
mov dword [esp + 8], 2
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x14]
mov byte [esp + 0x9c], dl
mov dword [esp], eax
call fcn.0040dc60
mov dword [ebx + 0x14], eax
jmp 0x40d280
mov ecx, dword [esp + 0x40]
shr ebp, 4
mov eax, ebp
and eax, 0xf
add eax, 8
cmp eax, dword [ecx + 0x1c]
jbe 0x40d509
mov eax, dword [esp + 0xc0]
sub ebx, 4
mov dword [eax + 0x18], str.invalid_window_size
mov eax, 0x1c
mov dword [ecx], 0x1c
jmp switch.0x0040ba40
mov ecx, dword [esp + 0x40]
mov eax, dword [ecx + 0x64]
mov dword [ecx + 0x50], 6
mov dword [ecx + 0x48], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0xc], edx
mov dword [esp + 0x14], eax
mov eax, ecx
add eax, 0x50
mov dword [esp + 0x10], eax
mov eax, dword [ecx + 0x5c]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x58]
mov dword [esp], 2
lea eax, [ecx + eax*2 + 0x68]
mov dword [esp + 4], eax
call fcn.0040e080
test eax, eax
mov dword [esp + 0x58], eax
je case.0x40ba40.18
mov edx, dword [esp + 0xc0]
mov eax, 0x1c
mov ecx, dword [esp + 0x40]
mov dword [edx + 0x18], str.invalid_distances_set
mov dword [ecx], 0x1c
jmp switch.0x0040ba40
mov ecx, dword [esp + 0xc0]
mov eax, dword [esp + 0x40]
mov dword [ecx + 0x18], str.invalid_bit_length_repeat
mov dword [eax], 0x1c
jmp 0x40c2b2
mov dword [esp + 8], 0
and ebp, 0x200
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0040df20
mov ebx, dword [esp + 0x40]
cmp ebp, 1
mov dword [ebx + 0x14], eax
mov ebx, dword [esp + 0xc0]
mov dword [ebx + 0x30], eax
mov ebx, dword [esp + 0x40]
sbb eax, eax
and eax, 2
xor ebp, ebp
add eax, 9
mov dword [ebx], eax
xor ebx, ebx
jmp 0x40b92e
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x40]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov dword [edx], 0x1c
jmp 0x40c2b2
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x54]
jmp 0x40bdc8