Function at 0x405d30
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]
test eax, eax
je case.default.0x405dd9
mov eax, dword [esp + 0x90]
mov edi, dword [eax + 0x1c]
test edi, edi
je case.default.0x405dd9
mov eax, dword [eax + 0xc]
test eax, eax
mov dword [esp + 0x30], eax
je case.default.0x405dd9
mov eax, dword [esp + 0x90]
mov ebx, dword [eax]
test ebx, ebx
je 0x407120
mov eax, dword [eax + 4]
mov dword [esp + 0x34], eax
mov eax, dword [edi]
cmp eax, 0xb
je 0x405f20
mov esi, dword [esp + 0x90]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x24], edi
mov dword [esp + 0x38], 0
mov edx, dword [esi + 0x10]
mov esi, dword [edi + 0x38]
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], edx
lea edx, [edi + 0x530]
mov ecx, esi
mov esi, dword [edi + 0x3c]
mov dword [esp + 0x50], edx
lea edx, [edi + 0x2f0]
mov edi, ebp
mov ebp, ebx
mov dword [esp + 0x4c], edx
mov ebx, esi
mov esi, ecx
cmp eax, 0x1e
ja case.default.0x405dd9
jmp dword [eax*4 + 0x40d6d0]
cmp ebx, 0x1f
ja 0x405e0f
test edi, edi
je 0x4061d0
mov ecx, ebx
jmp 0x405df9
test edi, edi
je 0x4070a0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x405df1
mov edx, esi
mov eax, esi
mov ebx, dword [esp + 0x24]
shr eax, 0x18
shl edx, 0x18
add edx, eax
mov eax, esi
shr eax, 8
and eax, 0xff00
add edx, eax
mov eax, esi
mov esi, dword [esp + 0x90]
and eax, 0xff00
shl eax, 8
add eax, edx
mov dword [ebx + 0x18], eax
mov dword [esi + 0x30], eax
xor esi, esi
mov dword [ebx], 0xa
xor ebx, ebx
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x407933
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00408240
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x90]
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov dword [edx], 0xb
mov eax, dword [esp + 0x94]
sub eax, 5
cmp eax, 1
jbe 0x4061d0
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 4]
test edx, edx
jne 0x405f30
cmp ebx, 2
ja 0x405ed2
test edi, edi
je 0x407623
add ebp, 1
movzx eax, byte [ebp - 1]
mov ecx, ebx
sub edi, 1
add ebx, 8
shl eax, cl
add esi, eax
mov ecx, dword [esp + 0x24]
mov eax, esi
mov edx, esi
and eax, 1
shr edx, 1
mov dword [ecx + 4], eax
mov eax, edx
and eax, 3
cmp eax, 2
je 0x4073c2
cmp eax, 3
je 0x4075da
cmp eax, 1
je 0x40759c
mov dword [ecx], 0xd
mov eax, 0xd
mov esi, edx
sub ebx, 3
shr esi, 2
jmp 0x405dd0
mov dword [edi], 0xc
mov al, 0xc
jmp 0x405d8a
mov eax, dword [esp + 0x24]
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr esi, cl
mov dword [eax], 0x1a
mov eax, 0x1a
jmp switch.0x00405dd9
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x48]
test edx, edx
je 0x405fb4
cmp ebx, edx
jae 0x405f8f
test edi, edi
je 0x4061d0
mov ecx, ebx
jmp 0x405f78
test edi, edi
je 0x4070a0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, edx
jb 0x405f70
mov ebx, ecx
mov ecx, edx
mov eax, 1
sub ebx, edx
shl eax, cl
mov ecx, dword [esp + 0x24]
sub eax, 1
and eax, esi
add dword [ecx + 0x44], eax
mov ecx, edx
shr esi, cl
mov ecx, dword [esp + 0x24]
add dword [ecx + 0x1bc4], edx
mov eax, dword [esp + 0x24]
mov dword [eax], 0x18
mov edx, dword [esp + 0x28]
test edx, edx
je 0x4061d0
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x2c]
mov ecx, dword [ecx + 0x44]
sub eax, edx
cmp eax, ecx
jae 0x407184
sub ecx, eax
mov eax, dword [esp + 0x24]
cmp ecx, dword [eax + 0x2c]
ja 0x407324
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x30]
cmp ecx, eax
jbe 0x4074c0
mov edx, dword [esp + 0x24]
sub ecx, eax
mov eax, dword [edx + 0x28]
mov dword [esp + 0x3c], eax
sub eax, ecx
add eax, dword [edx + 0x34]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x40]
cmp ecx, edx
cmova ecx, edx
jmp 0x407197
cmp dword [esp + 0x94], 6
mov eax, dword [esp + 0x24]
mov dword [eax], 0x13
je 0x4061d0
lea esi, [esi]
mov eax, dword [esp + 0x24]
mov dword [eax], 0x14
cmp edi, 5
jbe 0x40605d
cmp dword [esp + 0x28], 0x101
ja 0x407204
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x4c]
mov dword [eax + 0x1bc4], 0
mov edx, ecx
mov dword [esp + 0x40], ecx
mov ecx, dword [eax + 0x54]
mov eax, 1
shl eax, cl
sub eax, 1
mov dword [esp + 0x48], eax
and eax, esi
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [esp + 0x3c], dl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x54], ax
movzx eax, dl
cmp ebx, eax
mov dword [esp + 0x44], eax
jae 0x40610b
test edi, edi
je 0x4061d0
mov ecx, ebx
mov ebx, esi
mov esi, edi
jmp 0x4060c8
test esi, esi
je 0x4073f3
add ebp, 1
movzx eax, byte [ebp - 1]
mov edx, dword [esp + 0x40]
sub esi, 1
shl eax, cl
add ecx, 8
add ebx, eax
mov eax, dword [esp + 0x48]
and eax, ebx
lea eax, [edx + eax*4]
movzx edx, byte [eax]
movzx edi, word [eax + 2]
mov byte [esp + 0x3c], dl
movzx edx, byte [eax + 1]
movzx eax, dl
cmp eax, ecx
mov dword [esp + 0x44], eax
ja 0x4060c0
mov word [esp + 0x54], di
mov edi, esi
mov esi, ebx
mov ebx, ecx
cmp byte [esp + 0x3c], 0
je 0x407440
test byte [esp + 0x3c], 0xf0
jne 0x407440
movzx ecx, word [esp + 0x54]
mov dword [esp + 0x48], eax
mov eax, 1
mov dword [esp + 0x58], ecx
movzx ecx, byte [esp + 0x3c]
add cl, byte [esp + 0x48]
shl eax, cl
mov ecx, edx
mov edx, dword [esp + 0x40]
sub eax, 1
mov dword [esp + 0x5c], eax
and eax, esi
shr eax, cl
add eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x48]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [esp + 0x3c], dl
movzx edx, word [eax + 2]
movzx eax, byte [eax + 1]
mov word [esp + 0x54], dx
lea edx, [ecx + eax]
cmp ebx, edx
jb 0x4061c8
jmp 0x4077af
add ebp, 1
movzx eax, byte [ebp - 1]
mov ecx, ebx
add ebx, 8
sub edi, 1
shl eax, cl
movzx ecx, byte [esp + 0x48]
add esi, eax
mov eax, dword [esp + 0x5c]
and eax, esi
shr eax, cl
add eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x40]
lea eax, [ecx + eax*4]
movzx edx, byte [eax]
movzx ecx, word [eax + 2]
movzx eax, byte [eax + 1]
mov byte [esp + 0x3c], dl
mov edx, dword [esp + 0x48]
add edx, eax
cmp edx, ebx
jbe 0x4077aa
test edi, edi
jne 0x406180
lea esi, [esi]
mov dword [esp + 0x3c], esi
mov esi, ebx
mov ebx, ebp
mov ebp, edi
mov edi, dword [esp + 0x24]
jmp 0x406420
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x48]
test edx, edx
jne 0x407290
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x40]
mov edx, dword [esp + 0x24]
mov dword [edx + 0x1bc8], eax
mov dword [edx], 0x16
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x58]
mov edx, dword [eax + 0x50]
mov eax, 1
shl eax, cl
mov dword [esp + 0x40], edx
sub eax, 1
mov dword [esp + 0x48], eax
and eax, esi
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [esp + 0x3c], dl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x54], ax
movzx eax, dl
cmp ebx, eax
mov dword [esp + 0x44], eax
jae 0x4062a0
test edi, edi
je 0x4061d0
mov ecx, ebx
mov ebx, edi
mov edi, ebp
jmp 0x40625d
test ebx, ebx
je 0x4073e0
add edi, 1
movzx eax, byte [edi - 1]
mov edx, dword [esp + 0x40]
sub ebx, 1
shl eax, cl
add ecx, 8
add esi, eax
mov eax, dword [esp + 0x48]
and eax, esi
lea eax, [edx + eax*4]
movzx edx, byte [eax]
movzx ebp, word [eax + 2]
mov byte [esp + 0x3c], dl
movzx edx, byte [eax + 1]
movzx eax, dl
cmp eax, ecx
mov dword [esp + 0x44], eax
ja 0x406255
mov word [esp + 0x54], bp
mov ebp, edi
mov edi, ebx
mov ebx, ecx
test byte [esp + 0x3c], 0xf0
jne 0x407354
movzx ecx, word [esp + 0x54]
mov dword [esp + 0x5c], eax
mov eax, 1
mov dword [esp + 0x48], ecx
movzx ecx, byte [esp + 0x3c]
add cl, byte [esp + 0x5c]
shl eax, cl
mov ecx, edx
mov edx, dword [esp + 0x40]
sub eax, 1
mov dword [esp + 0x58], eax
and eax, esi
shr eax, cl
add eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x5c]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [esp + 0x3c], dl
movzx edx, word [eax + 2]
movzx eax, byte [eax + 1]
mov word [esp + 0x54], dx
lea edx, [ecx + eax]
cmp ebx, edx
jae 0x406364
test edi, edi
je 0x4061d0
mov eax, esi
mov edx, dword [esp + 0x5c]
mov esi, edi
mov edi, eax
jmp 0x40631b
test esi, esi
je 0x407565
add ebp, 1
movzx eax, byte [ebp - 1]
mov ecx, ebx
add ebx, 8
sub esi, 1
shl eax, cl
mov ecx, edx
add edi, eax
mov eax, dword [esp + 0x58]
and eax, edi
shr eax, cl
add eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x40]
lea eax, [ecx + eax*4]
movzx ecx, byte [eax]
mov byte [esp + 0x3c], cl
movzx ecx, word [eax + 2]
movzx eax, byte [eax + 1]
mov word [esp + 0x54], cx
lea ecx, [eax + edx]
cmp ecx, ebx
ja 0x406313
mov edx, edi
mov edi, esi
mov esi, edx
mov edx, dword [esp + 0x5c]
sub ebx, dword [esp + 0x44]
mov ecx, edx
shr esi, cl
mov ecx, dword [esp + 0x24]
add edx, dword [ecx + 0x1bc4]
jmp 0x40735e
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
test dh, 4
je 0x406bc0
cmp ebx, 0xf
ja 0x4063bf
test edi, edi
je 0x4061d0
mov ecx, ebx
jmp 0x4063a9
test edi, edi
je 0x4070a0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x4063a1
mov eax, dword [esp + 0x24]
mov dword [eax + 0x40], esi
mov eax, dword [eax + 0x20]
test eax, eax
je 0x4063d0
mov dword [eax + 0x14], esi
test dh, 2
jne 0x4076fb
xor ebx, ebx
xor esi, esi
mov eax, dword [esp + 0x24]
mov dword [eax], 5
jmp 0x406987
mov eax, 0xfffffffc
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x3c], esi
mov esi, ebx
mov ebx, ebp
mov ebp, edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x38], 1
lea esi, [esi]
lea edi, [edi]
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x30]
mov dword [eax + 0xc], edx
mov edx, eax
mov eax, dword [esp + 0x28]
mov dword [edx], ebx
mov ebx, dword [esp + 0x3c]
mov dword [edx + 4], ebp
mov dword [edx + 0x10], eax
mov dword [edi + 0x3c], esi
mov dword [edi + 0x38], ebx
mov ebx, dword [edi + 0x28]
test ebx, ebx
jne 0x406470
cmp dword [esp + 0x2c], eax
je 0x406490
mov eax, dword [edi]
cmp eax, 0x1c
ja 0x406490
cmp dword [esp + 0x94], 4
jne 0x406470
cmp eax, 0x19
ja 0x406490
lea esi, [esi]
mov ecx, dword [esp + 0x2c]
sub ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x90]
call fcn.004058d0
test eax, eax
jne 0x40751c
mov eax, dword [esp + 0x90]
mov esi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x34]
sub esi, dword [eax + 0x10]
sub ebx, dword [eax + 4]
add dword [eax + 8], ebx
add dword [eax + 0x14], esi
add dword [edi + 0x1c], esi
test esi, esi
je 0x4064ed
mov ecx, dword [edi + 8]
test ecx, ecx
je 0x4064ed
mov edx, dword [edi + 0x10]
mov dword [esp + 8], esi
test edx, edx
je 0x407140
mov eax, dword [eax + 0xc]
mov dword [esp + 0x24], eax
sub eax, esi
mov dword [esp + 4], eax
mov eax, dword [edi + 0x18]
mov dword [esp], eax
call fcn.00408790
mov edx, dword [esp + 0x90]
mov dword [edi + 0x18], eax
mov dword [edx + 0x30], eax
cmp dword [edi + 4], 1
mov edx, dword [edi]
sbb eax, eax
not eax
and eax, 0x40
add eax, dword [edi + 0x3c]
cmp edx, 0xb
je 0x4070b3
cmp edx, 0xe
je 0x407090
cmp edx, 0x13
je 0x407090
xor edx, edx
mov edi, dword [esp + 0x90]
add eax, edx
or esi, ebx
mov dword [edi + 0x2c], eax
je 0x40653c
cmp dword [esp + 0x94], 4
mov eax, dword [esp + 0x38]
jne 0x4063f5
mov ebx, dword [esp + 0x38]
mov eax, 0xfffffffb
test ebx, ebx
cmovne eax, ebx
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp ebx, 0x1f
ja 0x406581
test edi, edi
je 0x4061d0
mov ecx, ebx
jmp 0x40656b
test edi, edi
je 0x4070a0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x406563
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x40658f
mov dword [eax + 4], esi
mov eax, dword [esp + 0x24]
test byte [eax + 0x11], 2
jne 0x407634
mov eax, dword [esp + 0x24]
xor esi, esi
xor ebx, ebx
mov dword [eax], 3
jmp 0x406b4a
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x40]
mov ecx, dword [esp + 0x24]
mov dword [ecx], 0xf
test eax, eax
je 0x407170
mov ecx, dword [esp + 0x28]
cmp edi, eax
cmovbe eax, edi
cmp eax, ecx
cmova eax, ecx
test eax, eax
je 0x4061d0
mov dword [esp + 8], eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 4], ebp
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x24]
sub dword [esp + 0x28], edx
add dword [esp + 0x30], edx
sub dword [eax + 0x40], edx
sub edi, edx
add ebp, edx
mov eax, dword [eax]
jmp 0x405dd0
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x68]
mov dword [esp + 0x48], eax
mov edx, dword [esp + 0x24]
mov dword [esp + 0x44], ebp
mov eax, dword [edx + 0x60]
mov dword [esp + 0x58], eax
add eax, dword [edx + 0x64]
mov dword [esp + 0x54], eax
mov edx, dword [esp + 0x54]
cmp dword [esp + 0x48], edx
jae 0x4078f2
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x54]
mov edx, dword [eax + 0x4c]
mov eax, 1
shl eax, cl
mov ebp, edx
mov dword [esp + 0x40], edx
lea eax, [eax - 1]
mov dword [esp + 0x3c], eax
and eax, esi
lea eax, [ebp + eax*4]
movzx ecx, byte [eax + 1]
movzx edx, word [eax + 2]
movzx eax, cl
cmp ebx, eax
jae 0x4066cf
test edi, edi
je 0x4077bf
mov ebp, dword [esp + 0x44]
mov ecx, ebx
jmp 0x406698
test edi, edi
je 0x4070a0
add ebp, 1
movzx eax, byte [ebp - 1]
mov ebx, dword [esp + 0x40]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
mov eax, dword [esp + 0x3c]
and eax, esi
lea eax, [ebx + eax*4]
movzx ebx, byte [eax + 1]
movzx edx, word [eax + 2]
movzx eax, bl
cmp eax, ecx
ja 0x406690
mov dword [esp + 0x44], ebp
mov ebp, ebx
mov ebx, ecx
mov ecx, ebp
cmp dx, 0xf
jbe 0x4073a0
cmp dx, 0x10
je 0x40773a
cmp dx, 0x11
je 0x4077e9
lea ecx, [eax + 7]
cmp ebx, ecx
mov edx, ecx
jae 0x406735
test edi, edi
je 0x4077bf
mov ecx, ebx
mov ebp, dword [esp + 0x44]
mov ebx, eax
mov eax, edx
jmp 0x406718
test edi, edi
je 0x4070a0
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add esi, edx
cmp ecx, eax
jb 0x406710
mov eax, ebx
mov dword [esp + 0x44], ebp
mov ebx, ecx
mov ecx, eax
sub ebx, eax
shr esi, cl
sub ebx, 7
mov ecx, esi
mov edx, esi
and ecx, 0x7f
lea esi, [ecx + 0xb]
mov ecx, esi
mov esi, edx
xor edx, edx
shr esi, 7
mov eax, dword [esp + 0x48]
mov ebp, ecx
add eax, ecx
cmp eax, dword [esp + 0x54]
mov dword [esp + 0x3c], eax
ja 0x407b32
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x24]
add ecx, 0x38
lea eax, [eax + ecx*2]
add ecx, ebp
mov ebp, dword [esp + 0x24]
lea ecx, [ebp + ecx*2]
mov ebp, dword [esp + 0x44]
mov word [eax], dx
add eax, 2
cmp eax, ecx
jne 0x406783
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x44], ebp
mov dword [edx + 0x68], eax
mov dword [esp + 0x48], eax
jmp 0x406636
cmp ebx, 0xd
ja 0x4067e0
test edi, edi
je 0x4061d0
mov ecx, ebx
jmp 0x4067c8
test edi, edi
je 0x4070a0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xd
jbe 0x4067c0
mov ebx, ecx
mov eax, esi
mov ecx, dword [esp + 0x24]
mov edx, esi
shr eax, 5
and edx, 0x1f
sub ebx, 0xe
and eax, 0x1f
add edx, 0x101
add eax, 1
mov dword [ecx + 0x60], edx
mov dword [ecx + 0x64], eax
mov ecx, esi
mov dword [esp + 0x3c], eax
shr ecx, 0xa
shr esi, 0xe
and ecx, 0xf
add ecx, 4
cmp dword [esp + 0x3c], 0x1e
mov eax, ecx
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x24]
mov dword [ecx + 0x5c], eax
ja 0x40749c
cmp edx, 0x11e
ja 0x40749c
mov eax, dword [esp + 0x24]
xor edx, edx
mov dword [esp + 0x3c], ebp
mov ecx, ebx
mov dword [eax + 0x68], 0
mov dword [eax], 0x11
jmp 0x40687a
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x40]
jmp 0x4065c1
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x5c]
mov ecx, edx
mov dword [esp + 0x40], edx
mov edx, dword [eax + 0x68]
cmp ecx, edx
jbe 0x4068cc
mov dword [esp + 0x3c], ebp
mov ecx, ebx
cmp ecx, 2
ja 0x40689e
test edi, edi
je 0x4077d4
add dword [esp + 0x3c], 1
sub edi, 1
mov eax, dword [esp + 0x3c]
movzx eax, byte [eax - 1]
shl eax, cl
add ecx, 8
add esi, eax
add edx, 1
mov ebx, esi
sub ecx, 3
and ebx, 7
movzx eax, word [edx + edx + 0x40dffe]
shr esi, 3
cmp edx, dword [esp + 0x40]
mov ebp, dword [esp + 0x24]
mov dword [ebp + 0x68], edx
mov word [ebp + eax*2 + 0x70], bx
jb 0x40687a
mov ebp, dword [esp + 0x3c]
mov ebx, ecx
cmp edx, 0x12
lea eax, [edx + edx + 0x40e000]
mov ecx, dword [esp + 0x24]
ja 0x4068ff
lea esi, [esi]
movzx edx, word [eax]
add eax, 2
cmp eax, 0x40e026
mov word [ecx + edx*2 + 0x70], 0
jne 0x4068e0
mov eax, dword [esp + 0x24]
mov dword [eax + 0x68], 0x13
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x50]
mov dword [eax + 0x6c], ecx
mov dword [eax + 0x4c], ecx
mov ecx, dword [esp + 0x4c]
mov dword [eax + 0x54], 7
mov dword [esp + 8], 0x13
mov dword [esp], 0
mov dword [esp + 0x14], ecx
mov ecx, eax
add eax, 0x54
mov dword [esp + 0x10], eax
mov eax, ecx
add eax, 0x6c
mov dword [esp + 0xc], eax
mov eax, ecx
add eax, 0x70
mov dword [esp + 4], eax
call fcn.00408aa0
test eax, eax
mov dword [esp + 0x38], eax
je 0x4078d4
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.invalid_code_lengths_set
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
test dh, 4
mov eax, edx
je 0x406a36
mov ecx, dword [esp + 0x24]
mov edx, dword [ecx + 0x40]
cmp edi, edx
mov dword [esp + 0x3c], edx
cmovbe edx, edi
mov ecx, edx
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x3c]
test ecx, ecx
je 0x406a27
mov edx, dword [esp + 0x24]
mov edx, dword [edx + 0x20]
test edx, edx
je 0x406a06
mov ecx, dword [edx + 0x10]
test ecx, ecx
mov dword [esp + 0x44], ecx
je 0x406a06
mov eax, dword [edx + 0x14]
sub eax, dword [esp + 0x3c]
mov edx, dword [edx + 0x18]
mov dword [esp + 4], ebp
mov ecx, eax
mov eax, dword [esp + 0x40]
add eax, ecx
mov dword [esp + 0x3c], eax
mov eax, edx
sub eax, ecx
cmp dword [esp + 0x3c], edx
mov edx, dword [esp + 0x44]
cmovbe eax, dword [esp + 0x40]
add edx, ecx
mov dword [esp], edx
mov dword [esp + 8], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x24]
mov eax, dword [edx + 0x10]
test ah, 2
jne 0x4075fc
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x40]
mov edx, dword [ecx + 0x40]
sub edi, eax
add ebp, eax
mov dword [esp + 0x3c], edx
sub edx, eax
mov dword [ecx + 0x40], edx
test edx, edx
jne 0x4061d0
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
mov eax, dword [esp + 0x24]
test dh, 8
mov dword [eax + 0x40], 0
mov dword [eax], 6
jne 0x406a7c
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x406b10
mov dword [eax + 0x1c], 0
jmp 0x406b10
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
test dh, 8
je 0x406a4c
test edi, edi
je 0x4061d0
mov dword [esp + 0x48], esi
xor edx, edx
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x40], edi
mov dword [esp + 0x54], ebx
mov esi, dword [esp + 0x24]
jmp 0x406aa6
cmp edx, dword [esp + 0x40]
jae 0x406ad7
mov eax, dword [esp + 0x3c]
add edx, 1
movzx ebp, byte [eax + edx - 1]
mov eax, dword [esi + 0x20]
test eax, eax
mov ecx, ebp
je 0x406ad3
mov edi, dword [eax + 0x1c]
test edi, edi
je 0x406ad3
mov ebx, dword [esi + 0x40]
cmp ebx, dword [eax + 0x20]
jae 0x406ad3
lea eax, [ebx + 1]
mov dword [esi + 0x40], eax
mov byte [edi + ebx], cl
test ebp, ebp
jne 0x406aa0
mov eax, dword [esp + 0x24]
mov dword [esp + 0x44], ebp
mov edi, dword [esp + 0x40]
mov ebp, dword [esp + 0x3c]
mov esi, dword [esp + 0x48]
mov ebx, dword [esp + 0x54]
test byte [eax + 0x11], 2
jne 0x407475
mov eax, dword [esp + 0x44]
sub edi, edx
add ebp, edx
test eax, eax
jne 0x4061d0
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
mov eax, dword [esp + 0x24]
test dh, 0x10
mov dword [eax + 0x40], 0
mov dword [eax], 7
jne 0x406c90
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x406d20
mov dword [eax + 0x24], 0
jmp 0x406d20
cmp ebx, 0xf
ja 0x406b7e
test edi, edi
je 0x4061d0
mov ecx, ebx
jmp 0x406b68
test edi, edi
je 0x4070a0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x406b60
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x406b99
mov ebx, esi
movzx edx, bl
mov dword [eax + 8], edx
mov edx, esi
shr edx, 8
mov dword [eax + 0xc], edx
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
test dh, 2
jne 0x40752c
mov eax, dword [esp + 0x24]
xor ebx, ebx
xor esi, esi
test dh, 4
mov dword [eax], 4
jne 0x406395
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x4063dd
mov dword [eax + 0x10], 0
jmp 0x4063dd
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 8]
test eax, eax
je 0x4078b3
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
test edx, edx
je 0x4078b3
cmp ebx, 0x1f
ja 0x406c30
test edi, edi
je 0x407623
mov ecx, ebx
jmp 0x406c18
test edi, edi
je 0x4070a0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x406c10
mov ebx, ecx
mov eax, dword [esp + 0x24]
cmp dword [eax + 0x1c], esi
je 0x40799d
mov ecx, dword [esp + 0x90]
mov dword [ecx + 0x18], str.incorrect_length_check
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9
mov dword [esp + 0x3c], esi
mov dword [esp + 0x38], 0xfffffffd
mov esi, ebx
mov ebx, ebp
mov ebp, edi
mov edi, dword [esp + 0x24]
jmp 0x406420
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
test dh, 0x10
je 0x406b2a
test edi, edi
je 0x4061d0
mov dword [esp + 0x48], esi
xor edx, edx
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x40], edi
mov dword [esp + 0x54], ebx
mov esi, dword [esp + 0x24]
jmp 0x406cb6
cmp edx, dword [esp + 0x40]
jae 0x406ce7
mov eax, dword [esp + 0x3c]
add edx, 1
movzx ebp, byte [eax + edx - 1]
mov eax, dword [esi + 0x20]
test eax, eax
mov ecx, ebp
je 0x406ce3
mov edi, dword [eax + 0x24]
test edi, edi
je 0x406ce3
mov ebx, dword [esi + 0x40]
cmp ebx, dword [eax + 0x28]
jae 0x406ce3
lea eax, [ebx + 1]
mov dword [esi + 0x40], eax
mov byte [edi + ebx], cl
test ebp, ebp
jne 0x406cb0
mov eax, dword [esp + 0x24]
mov dword [esp + 0x44], ebp
mov edi, dword [esp + 0x40]
mov ebp, dword [esp + 0x3c]
mov esi, dword [esp + 0x48]
mov ebx, dword [esp + 0x54]
test byte [eax + 0x11], 2
jne 0x407410
mov eax, dword [esp + 0x44]
sub edi, edx
add ebp, edx
test eax, eax
jne 0x4061d0
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
mov eax, dword [esp + 0x24]
mov dword [eax], 8
test dh, 2
je 0x4070c4
cmp ebx, 0xf
ja 0x406d64
test edi, edi
je 0x4061d0
mov ecx, ebx
jmp 0x406d4c
test edi, edi
je 0x4070a0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x406d44
mov ebx, ecx
mov ecx, dword [esp + 0x24]
movzx eax, word [ecx + 0x18]
cmp eax, esi
je 0x4070c0
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.header_crc_mismatch
mov dword [ecx], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
jmp 0x406d2a
cmp ebx, 0xf
ja 0x406dd1
test edi, edi
je 0x4061d0
mov ecx, ebx
jmp 0x406db9
test edi, edi
je 0x4070a0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x406db1
mov ebx, ecx
mov edx, dword [esp + 0x24]
mov eax, esi
cmp al, 8
mov dword [edx + 0x10], esi
je 0x4076cd
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.unknown_compression_method
mov dword [edx], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 8]
test edx, edx
je 0x407310
cmp ebx, 0xf
ja 0x406e40
test edi, edi
je 0x407623
mov ecx, ebx
jmp 0x406e28
test edi, edi
je 0x4070a0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x406e20
mov ebx, ecx
cmp esi, 0x8b1f
jne 0x406e51
test dl, 2
jne 0x407a28
mov eax, dword [esp + 0x24]
mov dword [eax + 0x10], 0
mov eax, dword [eax + 0x20]
test eax, eax
je 0x406e6a
mov dword [eax + 0x30], 0xffffffff
and edx, 1
je 0x40757a
mov eax, esi
mov ecx, esi
mov edx, 0x8421085
shl eax, 8
shr ecx, 8
movzx eax, ax
add ecx, eax
mov eax, ecx
mul edx
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 0x40757a
mov eax, esi
and eax, 0xf
cmp eax, 8
je 0x4079b4
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.unknown_compression_method
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr esi, cl
cmp ebx, 0x1f
ja 0x406f10
test edi, edi
je 0x4061d0
mov ecx, ebx
jmp 0x406ef8
test edi, edi
je 0x4070a0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x406ef0
mov ebx, ecx
mov edx, esi
movzx eax, si
shr edx, 0x10
xor edx, 0xffff
cmp eax, edx
je 0x4076a9
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.invalid_stored_block_lengths
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x4061d0
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x30]
mov eax, dword [eax + 0x40]
mov byte [edx], al
mov eax, ecx
sub eax, 1
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
mov dword [eax], 0x14
lea eax, [edx + 1]
mov dword [esp + 0x30], eax
mov eax, 0x14
jmp switch.0x00405dd9
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 8]
test eax, eax
je 0x407300
cmp ebx, 0x1f
ja 0x406fd0
test edi, edi
je 0x4061d0
mov ecx, ebx
jmp 0x406fb8
test edi, edi
je 0x4070a0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x406fb0
mov ebx, ecx
mov eax, dword [esp + 0x2c]
sub eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x24]
add dword [ecx + 0x14], eax
add dword [edx + 0x1c], eax
test eax, eax
je 0x407026
mov edx, dword [edx + 0x10]
mov dword [esp + 8], eax
test edx, edx
mov edx, dword [esp + 0x30]
je 0x407899
sub edx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 4], edx
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call fcn.00408790
mov edx, dword [esp + 0x24]
mov dword [edx + 0x18], eax
mov edx, dword [esp + 0x90]
mov dword [edx + 0x30], eax
mov ecx, dword [esp + 0x24]
mov eax, esi
mov ecx, dword [ecx + 0x10]
test ecx, ecx
jne 0x407055
mov edx, esi
shr eax, 0x18
shl edx, 0x18
add edx, eax
mov eax, esi
shr eax, 8
and eax, 0xff00
add edx, eax
mov eax, esi
and eax, 0xff00
shl eax, 8
add eax, edx
mov edx, dword [esp + 0x24]
cmp eax, dword [edx + 0x18]
je 0x4072ec
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.incorrect_data_check
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, dword [esp + 0x28]
mov dword [esp + 0x2c], eax
mov eax, 0x1d
jmp switch.0x00405dd9
mov edx, 0x100
jmp 0x40651a
mov ebx, ebp
mov dword [esp + 0x3c], esi
mov ebp, edi
mov esi, ecx
mov edi, dword [esp + 0x24]
jmp 0x406420
sub eax, 0xffffff80
jmp 0x406518
xor ebx, ebx
xor esi, esi
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x4070df
sar edx, 9
mov dword [eax + 0x30], 1
and edx, 1
mov dword [eax + 0x2c], edx
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00408790
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x90]
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov eax, 0xb
mov dword [edx], 0xb
jmp switch.0x00405dd9
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 4]
test eax, eax
jne case.default.0x405dd9
mov dword [esp + 0x34], 0
jmp 0x405d7f
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x24], eax
sub eax, esi
mov dword [esp + 4], eax
mov eax, dword [edi + 0x18]
mov dword [esp], eax
call fcn.00408240
jmp 0x4064e0
mov eax, 0xfffffffe
jmp 0x4063f5
mov eax, dword [esp + 0x24]
mov dword [eax], 0xb
mov eax, 0xb
jmp switch.0x00405dd9
mov eax, dword [esp + 0x30]
sub eax, ecx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x40]
mov edx, ecx
mov eax, dword [esp + 0x28]
mov dword [esp + 0x3c], ebx
cmp ecx, eax
cmova ecx, eax
sub eax, ecx
sub edx, ecx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
mov dword [eax + 0x40], edx
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x40]
add ecx, edx
lea esi, [esi]
add eax, 1
movzx ebx, byte [eax - 1]
add edx, 1
cmp edx, ecx
mov byte [edx - 1], bl
jne 0x4071c0
mov eax, dword [esp + 0x24]
mov dword [esp + 0x30], edx
mov ebx, dword [esp + 0x3c]
mov ecx, dword [eax + 0x40]
test ecx, ecx
je 0x4071f0
mov eax, dword [eax]
jmp 0x405dd0
mov eax, dword [esp + 0x24]
mov dword [eax], 0x14
mov eax, 0x14
jmp switch.0x00405dd9
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
mov dword [eax], ebp
mov dword [eax + 4], edi
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], ecx
mov eax, dword [esp + 0x24]
mov dword [eax + 0x38], esi
mov dword [eax + 0x3c], ebx
mov esi, eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x90]
mov dword [esp], eax
call fcn.00409050
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x90]
mov ebp, dword [eax]
mov edi, dword [eax + 4]
mov eax, esi
mov ebx, dword [eax + 0x3c]
mov eax, dword [eax]
mov esi, dword [esi + 0x38]
cmp eax, 0xb
jne 0x405dd0
mov ecx, dword [esp + 0x24]
mov dword [ecx + 0x1bc4], 0xffffffff
jmp switch.0x00405dd9
cmp ebx, edx
jae 0x4072bf
test edi, edi
je 0x4061d0
mov ecx, ebx
jmp 0x4072a8
test edi, edi
je 0x4070a0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, edx
jb 0x4072a0
mov ebx, ecx
mov ecx, edx
mov eax, 1
sub ebx, edx
shl eax, cl
mov ecx, dword [esp + 0x24]
sub eax, 1
and eax, esi
add eax, dword [ecx + 0x40]
mov dword [ecx + 0x40], eax
mov ecx, edx
shr esi, cl
mov ecx, dword [esp + 0x24]
add dword [ecx + 0x1bc4], edx
jmp 0x4061f9
mov ebx, dword [esp + 0x28]
mov eax, dword [edx + 8]
xor esi, esi
mov dword [esp + 0x2c], ebx
xor ebx, ebx
nop
lea esi, [esi]
mov edx, dword [esp + 0x24]
mov dword [edx], 0x1b
jmp 0x406be7
mov eax, dword [esp + 0x24]
mov dword [eax], 0xc
mov eax, 0xc
jmp switch.0x00405dd9
mov eax, dword [eax + 0x1bc0]
test eax, eax
je 0x405fee
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], 0x40d685
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9
mov edx, dword [esp + 0x24]
mov edx, dword [edx + 0x1bc4]
mov ecx, eax
sub ebx, eax
add eax, edx
shr esi, cl
test byte [esp + 0x3c], 0x40
mov ecx, dword [esp + 0x24]
mov dword [ecx + 0x1bc4], eax
je 0x4074d2
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], 0x40d66f
mov dword [ecx], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9
shr esi, cl
mov ecx, dword [esp + 0x48]
mov ebp, dword [esp + 0x24]
sub ebx, eax
mov eax, ecx
add eax, 1
mov dword [ebp + 0x68], eax
mov dword [esp + 0x48], eax
mov word [ebp + ecx*2 + 0x70], dx
jmp 0x406636
mov eax, dword [esp + 0x24]
mov dword [eax], 0x10
mov eax, 0x10
jmp 0x405f0d
mov ebp, ebx
mov dword [esp + 0x3c], esi
mov ebx, edi
mov esi, ecx
mov edi, dword [esp + 0x24]
jmp 0x406420
mov dword [esp + 0x3c], ebx
mov edi, dword [esp + 0x24]
mov ebx, ebp
mov ebp, esi
mov esi, ecx
jmp 0x406420
mov dword [esp + 8], edx
mov dword [esp + 4], ebp
mov eax, dword [eax + 0x18]
mov dword [esp + 0x3c], edx
mov dword [esp], eax
call fcn.00408790
mov edx, dword [esp + 0x24]
mov dword [edx + 0x18], eax
mov edx, dword [esp + 0x3c]
jmp 0x406d09
mov edx, eax
mov ecx, eax
sub ebx, eax
movzx eax, word [esp + 0x54]
shr esi, cl
cmp byte [esp + 0x3c], 0
mov ecx, dword [esp + 0x24]
mov dword [ecx + 0x1bc4], edx
mov dword [ecx + 0x40], eax
jne 0x4074f3
mov dword [ecx], 0x19
mov eax, 0x19
jmp switch.0x00405dd9
mov dword [esp + 8], edx
mov dword [esp + 4], ebp
mov eax, dword [eax + 0x18]
mov dword [esp + 0x3c], edx
mov dword [esp], eax
call fcn.00408790
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x3c]
mov dword [ecx + 0x18], eax
jmp 0x406af9
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9
mov edx, dword [esp + 0x24]
sub eax, ecx
add eax, dword [edx + 0x34]
mov dword [esp + 0x40], eax
jmp 0x406013
movzx eax, word [esp + 0x54]
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x24]
and edx, 0xf
mov dword [ecx + 0x44], eax
mov dword [ecx + 0x48], edx
mov dword [ecx], 0x17
jmp 0x405f57
test byte [esp + 0x3c], 0x20
je 0x40767c
mov eax, dword [esp + 0x24]
mov dword [eax + 0x1bc4], 0xffffffff
mov dword [eax], 0xb
mov eax, 0xb
jmp switch.0x00405dd9
mov dword [edi], 0x1e
mov eax, 0xfffffffc
jmp 0x4063f5
mov eax, esi
mov ebx, dword [esp + 0x24]
mov dword [esp + 8], 2
mov byte [esp + 0x6c], al
mov eax, esi
shr eax, 8
mov byte [esp + 0x6d], al
lea eax, [esp + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.00408790
mov edx, dword [ebx + 0x10]
mov dword [ebx + 0x18], eax
jmp 0x406ba9
mov eax, ebx
mov dword [esp + 0x3c], edi
mov ebx, ebp
mov edi, dword [esp + 0x24]
mov ebp, esi
mov esi, eax
jmp 0x406420
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.incorrect_header_check
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9
cmp dword [esp + 0x94], 6
mov eax, dword [esp + 0x24]
mov dword [eax + 0x4c], 0x40d800
mov dword [eax + 0x54], 9
mov dword [eax + 0x50], 0x40d780
mov dword [eax + 0x58], 5
mov dword [eax], 0x13
je 0x407b6f
mov eax, 0x13
jmp 0x405f0d
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.invalid_block_type
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp 0x405f0d
mov eax, dword [esp + 0x40]
mov dword [esp + 4], ebp
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call fcn.00408790
mov ecx, dword [esp + 0x24]
mov dword [ecx + 0x18], eax
jmp 0x406a0f
mov dword [esp + 0x3c], esi
mov esi, ebx
mov ebx, ebp
mov ebp, edi
mov edi, eax
jmp 0x406420
mov eax, esi
mov ebx, dword [esp + 0x24]
mov dword [esp + 8], 4
mov byte [esp + 0x6c], al
mov eax, esi
shr eax, 8
mov byte [esp + 0x6d], al
mov eax, esi
shr eax, 0x10
mov byte [esp + 0x6e], al
mov eax, esi
shr eax, 0x18
mov byte [esp + 0x6f], al
lea eax, [esp + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.00408790
mov dword [ebx + 0x18], eax
jmp 0x40659d
test byte [esp + 0x3c], 0x40
je 0x40784c
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], 0x40d653
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9
cmp dword [esp + 0x94], 6
mov ebx, dword [esp + 0x24]
mov dword [ebx + 0x40], eax
mov dword [ebx], 0xe
je 0x407b58
xor ebx, ebx
xor esi, esi
jmp 0x4065b7
test esi, 0xe000
je 0x407865
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.unknown_header_flags_set
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9
mov eax, esi
mov ebx, dword [esp + 0x24]
mov dword [esp + 8], 2
mov byte [esp + 0x6c], al
mov eax, esi
xor esi, esi
shr eax, 8
mov byte [esp + 0x6d], al
lea eax, [esp + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.00408790
mov edx, ebx
mov dword [ebx + 0x18], eax
xor ebx, ebx
mov edx, dword [edx + 0x10]
jmp 0x4063dd
lea edx, [eax + 2]
cmp ebx, edx
jae 0x407776
test edi, edi
je 0x4077bf
mov ecx, ebx
mov ebp, dword [esp + 0x44]
mov ebx, eax
mov eax, edx
jmp 0x407759
test edi, edi
je 0x4070a0
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add esi, edx
cmp ecx, eax
jb 0x407751
mov eax, ebx
mov dword [esp + 0x44], ebp
mov ebx, ecx
mov ecx, eax
sub ebx, eax
mov eax, dword [esp + 0x48]
shr esi, cl
test eax, eax
je 0x407b32
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x48]
sub ebx, 2
movzx edx, word [eax + ecx*2 + 0x6e]
mov ecx, esi
shr esi, 2
and ecx, 3
lea eax, [ecx + 3]
mov ecx, eax
jmp 0x406751
mov word [esp + 0x54], cx
movzx ecx, byte [esp + 0x48]
sub ebx, dword [esp + 0x44]
shr esi, cl
jmp 0x407442
mov dword [esp + 0x3c], esi
mov ebp, edi
mov esi, ebx
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x44]
jmp 0x406420
mov ebx, dword [esp + 0x3c]
mov ebp, edi
mov dword [esp + 0x3c], esi
mov edi, dword [esp + 0x24]
mov esi, ecx
jmp 0x406420
lea ecx, [eax + 3]
cmp ebx, ecx
mov edx, ecx
jae 0x407827
test edi, edi
je 0x4077bf
mov ecx, ebx
mov ebp, dword [esp + 0x44]
mov ebx, eax
mov eax, edx
jmp 0x40780a
test edi, edi
je 0x4070a0
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add esi, edx
cmp ecx, eax
jb 0x407802
mov eax, ebx
mov dword [esp + 0x44], ebp
mov ebx, ecx
mov ecx, eax
shr esi, cl
mov ecx, esi
mov edx, esi
and ecx, 7
lea esi, [ecx + 3]
mov ecx, esi
mov esi, edx
mov edx, 0xfffffffd
sub edx, eax
shr esi, 3
add ebx, edx
xor edx, edx
jmp 0x406751
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x24]
and edx, 0xf
mov dword [eax], 0x15
mov dword [eax + 0x48], edx
jmp 0x4061ea
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x40787a
mov edx, esi
shr edx, 8
and edx, 1
mov dword [eax], edx
test esi, 0x200
jne 0x407967
mov eax, dword [esp + 0x24]
xor esi, esi
xor ebx, ebx
mov dword [eax], 2
jmp 0x406557
sub edx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 4], edx
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call fcn.00408240
jmp 0x407015
mov dword [esp + 0x3c], esi
mov esi, ebx
mov ebx, ebp
mov ebp, edi
mov edi, dword [esp + 0x24]
mov dword [edi], 0x1c
mov dword [esp + 0x38], 1
jmp 0x406420
mov eax, dword [esp + 0x24]
mov dword [esp + 0x48], 0
mov dword [eax + 0x68], 0
mov dword [eax], 0x12
jmp 0x406620
mov ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x44]
mov eax, dword [ecx]
cmp eax, 0x1d
je switch.0x00405dd9
cmp word [ecx + 0x270], 0
mov eax, ecx
jne 0x407a85
mov ecx, dword [esp + 0x90]
mov dword [ecx + 0x18], str.invalid_code____missing_end_of_block
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9
mov edx, esi
mov ecx, dword [esp + 0x30]
mov esi, ebx
mov ebx, ebp
mov ebp, edi
mov edi, eax
mov eax, dword [esp + 0x90]
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x28]
mov dword [eax], ebx
mov dword [eax + 4], ebp
mov dword [eax + 0x10], ecx
mov dword [edi + 0x38], edx
mov eax, 2
mov dword [edi + 0x3c], esi
jmp 0x4063f5
mov eax, esi
mov ebx, dword [esp + 0x24]
mov dword [esp + 8], 2
mov byte [esp + 0x6c], al
mov eax, esi
shr eax, 8
mov byte [esp + 0x6d], al
lea eax, [esp + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.00408790
mov dword [ebx + 0x18], eax
jmp 0x407886
mov ebx, ebp
xor esi, esi
mov ebp, edi
mov dword [esp + 0x3c], 0
mov edi, dword [esp + 0x24]
jmp 0x4078c1
mov eax, dword [esp + 0x24]
shr esi, 4
mov ecx, esi
and ecx, 0xf
mov eax, dword [eax + 0x24]
add ecx, 8
test eax, eax
jne 0x407b05
mov eax, dword [esp + 0x24]
mov dword [eax + 0x24], ecx
mov ebx, dword [esp + 0x24]
mov eax, 1
and esi, 0x200
shl eax, cl
mov dword [ebx + 0x14], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00408240
mov ecx, dword [esp + 0x90]
cmp esi, 1
mov dword [ebx + 0x18], eax
mov dword [ecx + 0x30], eax
sbb eax, eax
xor esi, esi
and eax, 2
add eax, 9
mov dword [ebx], eax
xor ebx, ebx
jmp 0x405dd0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
xor si, si
mov dword [esp], 0
call fcn.00408790
mov ebx, dword [esp + 0x24]
lea edx, [esp + 0x6c]
mov byte [esp + 0x6c], 0x1f
mov byte [esp + 0x6d], 0x8b
mov dword [ebx + 0x18], eax
mov dword [esp + 8], 2
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00408790
mov dword [ebx], 1
mov dword [ebx + 0x18], eax
mov eax, 1
xor ebx, ebx
jmp switch.0x00405dd9
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
mov dword [eax + 0x6c], edx
mov dword [eax + 0x4c], edx
lea edx, [eax + 0x6c]
mov dword [eax + 0x54], 9
mov dword [esp + 0x14], ecx
mov ecx, eax
add eax, 0x54
mov dword [esp + 0xc], edx
mov dword [esp], 1
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x3c], edx
mov dword [esp + 8], eax
mov eax, ecx
add eax, 0x70
mov dword [esp + 4], eax
call fcn.00408aa0
test eax, eax
mov dword [esp + 0x38], eax
mov edx, dword [esp + 0x3c]
je 0x407b8a
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x90]
mov dword [edx + 0x18], str.invalid_literal_lengths_set
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9
cmp ecx, eax
jbe 0x4079d5
mov eax, dword [esp + 0x90]
sub ebx, 4
mov dword [eax + 0x18], str.invalid_window_size
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9
mov eax, dword [esp + 0x90]
mov ebp, dword [esp + 0x44]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9
mov ebx, ebp
xor esi, esi
mov ebp, edi
mov dword [esp + 0x3c], 0
mov edi, dword [esp + 0x24]
jmp 0x406420
mov eax, esi
mov esi, ebx
mov ebx, ebp
shr eax, 3
mov ebp, edi
sub esi, 3
mov edi, dword [esp + 0x24]
mov dword [esp + 0x3c], eax
jmp 0x406420
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x6c]
mov dword [ecx + 0x58], 6
mov dword [ecx + 0x50], eax
mov eax, ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0xc], edx
mov dword [esp + 0x14], ecx
mov ecx, eax
add eax, 0x58
mov dword [esp + 0x10], eax
mov eax, dword [ecx + 0x64]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x60]
mov dword [esp], 2
lea eax, [ecx + eax*2 + 0x70]
mov dword [esp + 4], eax
call fcn.00408aa0
test eax, eax
mov dword [esp + 0x38], eax
je 0x406024
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.invalid_distances_set
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405dd9