Function at 0x405d00
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.0x405ec0
mov ebx, dword [esp + 0xc0]
mov ebx, dword [ebx + 0x1c]
test ebx, ebx
mov dword [esp + 0x40], ebx
je case.default.0x405ec0
mov ebx, dword [esp + 0xc0]
mov ebx, dword [ebx + 0xc]
test ebx, ebx
mov dword [esp + 0x54], ebx
je case.default.0x405ec0
mov ebx, dword [esp + 0xc0]
mov esi, dword [ebx]
test esi, esi
je 0x406ec0
mov ebx, dword [ebx + 4]
mov dword [esp + 0x5c], ebx
mov ebx, dword [esp + 0x40]
mov eax, dword [ebx]
cmp eax, 0xb
je 0x405ec7
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.0x00405ec0
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 0x406fd7
cmp ebx, 0x1f
ja 0x405e11
test edi, edi
je 0x4063c0
mov ecx, ebx
jmp 0x405dfa
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x405df2
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 0x405e63
mov ecx, dword [edx + 0x10]
mov dword [esp + 8], eax
test ecx, ecx
je 0x407770
mov ecx, dword [esp + 0x54]
sub ecx, eax
mov dword [esp + 4], ecx
mov eax, dword [edx + 0x14]
mov dword [esp], eax
call fcn.00408070
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 0x405e8f
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 0x406fc4
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 + 0x413c8c]
mov dword [ebx], 0xc
mov al, 0xc
jmp 0x405d68
cmp ebx, 0x1f
ja 0x405f02
test edi, edi
je 0x4063c0
mov ecx, ebx
jmp 0x405eed
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x405ee5
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 0x407853
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.004083a0
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 0x4063c0
mov ecx, dword [esp + 0x40]
mov eax, dword [ecx + 4]
test eax, eax
jne 0x406f21
cmp ebx, 2
ja 0x405fc2
test edi, edi
je 0x4063c0
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 0x406ff2
cmp eax, 3
je 0x407454
cmp eax, 1
je 0x407424
mov dword [edx], 0xd
mov eax, 0xd
shr ebp, 2
sub ebx, 3
jmp 0x405dae
mov ecx, dword [esp + 0x40]
mov edx, dword [ecx + 0x40]
test edx, edx
je 0x40605b
cmp ebx, edx
jae 0x406040
test edi, edi
je 0x4063c0
mov ecx, ebx
nop
jmp 0x40602a
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x406022
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 0x40767c
test edi, edi
je 0x4063c0
mov ecx, ebx
jmp 0x4060bd
test edi, edi
je 0x406e91
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 0x4060b5
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 0x407070
movzx eax, al
mov ecx, eax
shr ebp, cl
sub ebx, dword [esp + 0x50]
test byte [esp + 0x70], 0x40
je 0x407396
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.0x00405ec0
mov dword [ecx], 0x17
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x4063c0
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0x4c]
mov ecx, dword [edx + 0x3c]
cmp eax, ecx
jae 0x406f40
sub ecx, eax
mov eax, edx
mov edx, dword [edx + 0x28]
cmp ecx, edx
jbe 0x407192
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 0x4079f3
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 0x4079f3
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 0x406213
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 0x406264
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 0x406250
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 0x407002
mov eax, dword [edx]
jmp 0x405dae
mov ebx, dword [esp + 0x40]
mov dword [ebx], 0x1d
mov dword [esp + 0x58], 0xfffffffc
jmp 0x405dbf
cmp ebx, 0x1f
ja 0x4062cf
test edi, edi
je 0x4063c0
mov ecx, ebx
nop
jmp 0x4062ba
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x4062b2
mov ebx, dword [esp + 0x40]
test byte [ebx + 0x11], 2
jne 0x4074a4
mov dword [ebx], 3
xor ebp, ebp
xor ebx, ebx
jmp 0x406dd5
mov eax, dword [esp + 0x40]
mov edx, dword [eax + 0x40]
test edx, edx
je 0x406f56
cmp ebx, edx
jae 0x406330
test edi, edi
je 0x4063c0
mov ecx, ebx
lea esi, [esi]
jmp 0x40631a
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x406312
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 0x406f5f
cmp ebx, 0xf
ja 0x406383
test edi, edi
je 0x4063c0
mov ecx, ebx
jmp 0x40636c
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x406364
mov ebx, ecx
mov eax, dword [esp + 0x40]
mov edx, ebp
cmp dl, 8
mov dword [eax + 0x10], ebp
je 0x407511
mov ecx, dword [esp + 0xc0]
mov dword [ecx + 0x18], str.unknown_compression_method
mov dword [eax], 0x1c
mov eax, 0x1c
jmp switch.0x00405ec0
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 0x4063f6
cmp dword [eax], 0x18
ja 0x406415
cmp dword [esp + 0x60], ecx
je 0x406415
mov ebx, dword [esp + 0x60]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0xc0]
mov dword [esp], ebx
call fcn.00405ba0
test eax, eax
jne 0x406282
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 0x406476
mov edi, dword [edx + 8]
test edi, edi
je 0x406476
mov ecx, dword [edx + 0x10]
mov dword [esp + 8], esi
test ecx, ecx
je 0x406e98
mov eax, dword [eax + 0xc]
sub eax, esi
mov dword [esp + 4], eax
mov eax, dword [edx + 0x14]
mov dword [esp], eax
call fcn.00408070
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 0x4064be
cmp dword [esp + 0xc4], 4
jne 0x405dbf
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 0x406572
test edi, edi
je 0x4063c0
mov ecx, ebx
jmp 0x406538
test edi, edi
je 0x406e91
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 0x406530
mov word [esp + 0x64], bx
mov ebx, ecx
cmp byte [esp + 0x48], 0
je 0x4073b8
movzx ecx, byte [esp + 0x48]
mov dword [esp + 0x70], ecx
and ecx, 0xf0
jne 0x4075ad
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 0x40666b
test edi, edi
je 0x4063c0
mov dword [esp + 0x7c], edx
jmp 0x406618
test edi, edi
je 0x4063c0
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 0x406610
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 0x4073ca
movzx eax, byte [esp + 0x48]
mov dword [esp + 0x70], eax
test byte [esp + 0x70], 0x20
je 0x4075c4
mov edx, dword [esp + 0x40]
mov eax, 0xb
mov dword [edx], 0xb
jmp switch.0x00405ec0
mov ecx, dword [esp + 0x40]
mov eax, dword [ecx + 8]
test eax, eax
je 0x407665
mov ecx, dword [esp + 0x40]
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x407665
cmp ebx, 0x1f
ja 0x406711
test edi, edi
je 0x4063c0
mov ecx, ebx
lea esi, [esi]
jmp 0x4066fa
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x4066f2
mov ebx, ecx
mov eax, dword [esp + 0x40]
cmp dword [eax + 0x18], ebp
je 0x407661
mov edx, dword [esp + 0xc0]
mov dword [edx + 0x18], str.incorrect_length_check
mov dword [eax], 0x1c
mov eax, 0x1c
jmp switch.0x00405ec0
mov dword [esp + 0x58], 1
jmp 0x4063c0
mov dword [esp + 0x58], 0xfffffffd
jmp 0x4063c0
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 0x4067a0
mov edx, dword [esp + 0x40]
mov eax, dword [edx + 0x38]
cmp edi, eax
mov edx, eax
cmovbe edx, edi
test edx, edx
jne 0x406f90
test eax, eax
jne 0x4063c0
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 0x4067fc
test edi, edi
je 0x4063c0
xor edx, edx
nop
movzx ecx, byte [esi + edx]
add edx, 1
test ecx, ecx
je 0x4067cf
cmp edx, edi
jb 0x4067c0
test dword [esp + 0x44], 0x2000
mov dword [esp + 0x48], ecx
jne 0x407040
mov ecx, dword [esp + 0x48]
sub edi, edx
add esi, edx
test ecx, ecx
jne 0x4063c0
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 0x40685c
test edi, edi
je 0x4063c0
xor edx, edx
lea esi, [esi]
movzx ecx, byte [esi + edx]
add edx, 1
test ecx, ecx
je 0x40682f
cmp edx, edi
jb 0x406820
test dword [esp + 0x44], 0x2000
mov dword [esp + 0x48], ecx
jne 0x407012
sub edi, edx
add esi, edx
mov edx, dword [esp + 0x48]
test edx, edx
jne 0x4063c0
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 0x406ee4
cmp ebx, 0xf
ja 0x4068a4
test edi, edi
je 0x4063c0
mov ecx, ebx
jmp 0x40688d
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x406885
mov ebx, ecx
mov ecx, dword [esp + 0x40]
movzx eax, word [ecx + 0x14]
cmp eax, ebp
je 0x406ee0
mov eax, dword [esp + 0xc0]
mov dword [eax + 0x18], str.header_crc_mismatch
mov eax, 0x1c
mov dword [ecx], 0x1c
jmp switch.0x00405ec0
mov edx, dword [esp + 0x40]
mov eax, dword [edx + 0x38]
test eax, eax
je 0x406fb0
cmp edi, eax
mov edx, dword [esp + 0x4c]
cmovbe eax, edi
cmp eax, dword [esp + 0x4c]
cmovbe edx, eax
test edx, edx
je 0x4063c0
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 0x405dae
cmp ebx, 0xd
ja 0x406961
test edi, edi
je 0x4063c0
mov ecx, ebx
nop
jmp 0x40694a
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xd
jbe 0x406942
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 0x407170
cmp dword [esp + 0x48], 0x1e
ja 0x407170
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 0x406a6e
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr ebp, cl
cmp ebx, 0x1f
ja 0x406a0f
test edi, edi
je 0x4063c0
mov ecx, ebx
jmp 0x4069f8
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x4069f0
mov ebx, ecx
mov edx, ebp
mov eax, ebp
shr edx, 0x10
and eax, 0xffff
xor edx, 0xffff
cmp eax, edx
je 0x4074fb
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.0x00405ec0
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 0x406ac3
mov ecx, ebx
mov dword [esp + 0x50], edx
cmp ecx, 2
ja 0x406a8b
test edi, edi
je 0x406e91
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 + 0x4145a0]
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 0x406a6e
mov edx, ebx
mov ebx, ecx
cmp edx, 0x12
ja 0x406af2
mov ecx, dword [esp + 0x40]
lea eax, [edx + edx + 0x4145a0]
movzx edx, word [eax]
add eax, 2
cmp eax, 0x4145c6
mov word [ecx + edx*2 + 0x68], 0
jne 0x406ad3
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.00408500
test eax, eax
mov dword [esp + 0x58], eax
je 0x4077a8
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.0x00405ec0
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 0x4077ca
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 0x406c27
test edi, edi
je 0x4063c0
mov ecx, ebx
jmp 0x406bf0
test edi, edi
je 0x406e91
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 0x406be8
mov word [esp + 0x74], bx
mov ebx, ecx
mov dword [esp + 0x50], eax
cmp word [esp + 0x74], 0xf
ja 0x4071a0
cmp ebx, dword [esp + 0x50]
jae 0x406c70
test edi, edi
je 0x4063c0
mov ecx, ebx
mov ebx, edx
mov edx, dword [esp + 0x50]
jmp 0x406c58
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x406c50
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 0x406b8d
mov edx, dword [esp + 0x40]
mov edx, dword [edx + 0x10]
mov dword [esp + 0x44], edx
jmp 0x4067aa
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x44], eax
jmp 0x406806
mov ecx, dword [esp + 0x40]
mov ecx, dword [ecx + 0x10]
mov dword [esp + 0x44], ecx
jmp 0x406866
mov ecx, dword [esp + 0x40]
mov edx, dword [ecx + 8]
test edx, edx
je 0x406fe2
cmp ebx, 0xf
ja 0x406d11
test edi, edi
je 0x4063c0
mov ecx, ebx
nop
jmp 0x406cfa
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x406cf2
mov ebx, ecx
cmp ebp, 0x8b1f
je 0x407685
mov eax, dword [esp + 0x40]
and edx, 1
mov dword [eax + 0x10], 0
je 0x40753f
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 0x40753f
mov eax, ebp
and eax, 0xf
cmp eax, 8
je 0x4078c1
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.0x00405ec0
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x4063c0
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.0x00405ec0
cmp ebx, 0xf
ja 0x406dff
test edi, edi
je 0x4063c0
mov ecx, ebx
nop
jmp 0x406dea
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x406de2
mov ebx, dword [esp + 0x40]
mov ebx, dword [ebx + 0x10]
mov dword [esp + 0x44], ebx
and bh, 2
jne 0x4073de
mov ebx, dword [esp + 0x40]
xor ebp, ebp
mov edx, dword [esp + 0x44]
mov dword [ebx], 4
xor ebx, ebx
jmp 0x406e34
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x44], eax
mov edx, eax
and edx, 0x400
je 0x406e82
cmp ebx, 0xf
ja 0x406e69
test edi, edi
je 0x4063c0
mov ecx, ebx
jmp 0x406e54
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x406e50
mov ebx, dword [esp + 0x40]
test dword [esp + 0x44], 0x200
mov dword [ebx + 0x38], ebp
jne 0x407561
xor ebx, ebx
xor ebp, ebp
mov ecx, dword [esp + 0x40]
mov dword [ecx], 5
jmp 0x406773
mov ebx, ecx
jmp 0x4063c0
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.004083a0
jmp 0x406465
mov ebx, dword [ebx + 4]
mov dword [esp + 0x58], 0xfffffffe
test ebx, ebx
jne 0x405dbf
mov dword [esp + 0x5c], 0
jmp 0x405d59
xor ebx, ebx
xor ebp, ebp
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00408070
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.0x00405ec0
mov eax, ecx
mov ecx, ebx
and ecx, 7
and ebx, 0xfffffff8
mov dword [eax], 0x19
shr ebp, cl
mov eax, 0x19
jmp switch.0x00405ec0
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 0x40619a
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 0x406148
mov eax, dword [esp + 0xc0]
mov dword [eax + 0x18], str.invalid_distance_too_far_back
mov eax, 0x1c
mov dword [ecx], 0x1c
jmp switch.0x00405ec0
test dword [esp + 0x44], 0x200
jne 0x407476
sub eax, edx
sub edi, edx
add esi, edx
mov edx, dword [esp + 0x40]
mov dword [edx + 0x38], eax
jmp 0x40678d
mov eax, dword [esp + 0x40]
mov dword [eax], 0xb
mov eax, 0xb
jmp switch.0x00405ec0
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 0x4066c7
mov dword [ecx], 0xc
mov eax, 0xc
jmp switch.0x00405ec0
mov dword [edx], 0xf
mov eax, 0xf
jmp 0x405ffb
mov dword [edx], 0x12
mov eax, 0x12
jmp switch.0x00405ec0
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.00408070
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
mov dword [ecx + 0x14], eax
jmp 0x406841
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.00408070
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
mov dword [ecx + 0x14], eax
jmp 0x4067e1
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 0x40714b
test edi, edi
je 0x4063c0
mov dword [esp + 0x7c], edx
jmp 0x4070f8
test edi, edi
je 0x4063c0
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 0x4070f0
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 0x406113
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.0x00405ec0
mov eax, dword [esp + 0x40]
sub edx, ecx
add edx, dword [eax + 0x2c]
jmp 0x40618e
cmp word [esp + 0x74], 0x10
movzx edx, dl
je 0x4075f1
cmp word [esp + 0x74], 0x11
mov dword [esp + 0x44], edx
je 0x407713
add edx, 7
cmp ebx, edx
jae 0x4071f0
test edi, edi
je 0x4063c0
mov ecx, ebx
jmp 0x4071da
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x4071d2
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 0x40796c
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 0x4072b7
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 0x407287
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 0x40734b
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 0x407321
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 0x407380
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 0x407370
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 0x406b8d
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 0x4062f7
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.0x00405ec0
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.00408070
mov dword [ebx + 0x14], eax
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x44], eax
jmp 0x406e13
mov ecx, dword [esp + 0x40]
mov eax, 0x12
mov dword [ecx + 0x44], 0x413d20
mov dword [ecx + 0x4c], 9
mov dword [ecx + 0x48], 0x414520
mov dword [ecx + 0x50], 5
mov dword [ecx], 0x12
jmp 0x405ffb
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 0x405ffb
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.00408070
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
mov dword [ecx + 0x14], eax
mov eax, dword [ecx + 0x38]
jmp 0x406f9e
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.00408070
mov dword [ebx + 0x14], eax
mov ebx, dword [esp + 0x40]
jmp 0x4062dd
mov ebx, dword [esp + 0x40]
xor ebp, ebp
mov dword [ebx + 0x38], eax
mov dword [ebx], 0xe
xor ebx, ebx
jmp 0x4068d9
test ebp, 0xe000
je 0x4076f4
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.0x00405ec0
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.0x00405ec0
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.00408070
mov edx, dword [ebx + 0x10]
mov dword [esp + 0x44], edx
and edx, 0x400
mov dword [ebx + 0x14], eax
xor ebx, ebx
jmp 0x406e82
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 0x40669f
test byte [esp + 0x70], 0x40
je 0x40778e
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.0x00405ec0
mov dword [esp + 0x44], edx
add edx, 2
cmp ebx, edx
jae 0x407626
test edi, edi
je 0x4063c0
mov ecx, ebx
jmp 0x407610
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x407608
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 0x4079d6
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 0x407213
xor ebx, ebx
xor ebp, ebp
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x58], 1
mov dword [ecx], 0x1b
jmp 0x4063c0
mov dword [esp + 0x50], edx
jmp 0x4060fb
test dl, 2
je 0x406d1d
mov dword [esp + 8], 0
xor bp, bp
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00408070
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.00408070
mov dword [ebx], 1
mov dword [ebx + 0x14], eax
mov eax, 1
xor ebx, ebx
jmp switch.0x00405ec0
test ebp, 0x200
jne 0x407884
mov ebx, dword [esp + 0x40]
xor ebp, ebp
mov dword [ebx], 2
xor ebx, ebx
jmp 0x4062a5
add edx, 3
cmp ebx, edx
jae 0x407744
test edi, edi
je 0x4063c0
mov ecx, ebx
jmp 0x40772e
test edi, edi
je 0x406e91
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x407726
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 0x407213
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.004083a0
jmp 0x405e52
movzx edx, byte [esp + 0x48]
mov ecx, dword [esp + 0x40]
and edx, 0xf
mov dword [ecx + 0x40], edx
mov dword [ecx], 0x14
jmp 0x40600d
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 0x406b7b
cmp dword [edx], 0x1c
je 0x406732
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.00408500
mov edx, dword [esp + 0x3c]
test eax, eax
mov dword [esp + 0x58], eax
je 0x4078fa
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.0x00405ec0
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 0x405dbf
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.00408070
mov dword [ebx + 0x14], eax
jmp 0x407700
mov ecx, dword [esp + 0x40]
shr ebp, 4
mov eax, ebp
and eax, 0xf
add eax, 8
cmp eax, dword [ecx + 0x1c]
jbe 0x407989
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.0x00405ec0
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.00408500
test eax, eax
mov dword [esp + 0x58], eax
je case.0x405ec0.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.0x00405ec0
mov ecx, dword [esp + 0xc0]
mov eax, dword [esp + 0x40]
mov dword [ecx + 0x18], str.invalid_bit_length_repeat
mov dword [eax], 0x1c
jmp 0x406732
mov dword [esp + 8], 0
and ebp, 0x200
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.004083a0
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 0x405dae
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x40]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov dword [edx], 0x1c
jmp 0x406732
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x54]
jmp 0x406248