Function at 0x4056a0
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.0x405748
mov eax, dword [esp + 0x90]
mov edi, dword [eax + 0x1c]
test edi, edi
je case.default.0x405748
mov edx, dword [eax + 0xc]
test edx, edx
je case.default.0x405748
mov ecx, dword [eax]
test ecx, ecx
je 0x406a60
mov eax, dword [edi]
cmp eax, 0xb
je 0x405890
mov ebx, ecx
mov dword [esp + 0x30], edx
mov esi, dword [esp + 0x90]
mov dword [esp + 0x24], edi
mov dword [esp + 0x34], 0
mov esi, dword [esi + 0x10]
mov edx, esi
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x90]
mov dword [esp + 0x28], edx
lea edx, [edi + 0x70]
mov dword [esp + 0x4c], edx
lea edx, [edi + 0x530]
mov dword [esp + 0x50], edx
mov esi, dword [esi + 4]
mov ebp, esi
mov dword [esp + 0x38], esi
mov esi, dword [edi + 0x38]
mov ecx, esi
mov esi, dword [edi + 0x3c]
mov edi, ebp
mov ebp, ebx
mov ebx, esi
mov esi, ecx
cmp eax, 0x1e
ja case.default.0x405748
jmp dword [eax*4 + 0x4289d0]
cmp ebx, 0x1f
ja 0x405780
test edi, edi
je 0x405b40
mov ecx, ebx
nop
jmp 0x40576a
test edi, edi
je 0x4069d0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x405762
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 0x407233
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00407c00
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 0x405b40
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 4]
test edx, edx
jne 0x4058b0
cmp ebx, 2
ja 0x405843
test edi, edi
je 0x406f69
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 0x406c87
cmp eax, 3
je 0x406f20
cmp eax, 1
je 0x406ee2
mov dword [ecx], 0xd
mov eax, 0xd
mov esi, edx
sub ebx, 3
shr esi, 2
jmp 0x40573f
mov eax, dword [esp + 0x90]
mov dword [edi], 0xc
mov ebx, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x30], eax
mov eax, 0xc
jmp 0x4056ee
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.0x00405748
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x48]
test edx, edx
je 0x405934
cmp ebx, edx
jae 0x40590f
test edi, edi
je 0x405b40
mov ecx, ebx
jmp 0x4058f8
test edi, edi
je 0x4069d0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, edx
jb 0x4058f0
mov ebx, ecx
mov ecx, edx
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x24]
sub ebx, edx
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 + 0x2c]
test edx, edx
je 0x405b40
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
mov ecx, dword [ecx + 0x44]
sub eax, edx
cmp eax, ecx
jae 0x406ad4
sub ecx, eax
mov eax, dword [esp + 0x24]
cmp ecx, dword [eax + 0x2c]
ja 0x406be4
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x30]
cmp ecx, eax
jbe 0x406e12
sub ecx, eax
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x28]
mov eax, dword [eax + 0x34]
mov dword [esp + 0x3c], edx
sub dword [esp + 0x3c], ecx
add dword [esp + 0x3c], eax
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x40]
cmp ecx, edx
cmova ecx, edx
jmp 0x406ae7
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x94], 6
mov dword [eax], 0x13
je 0x405b40
nop
mov eax, dword [esp + 0x24]
mov dword [eax], 0x14
cmp edi, 5
ja 0x406cf0
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 0x405a7b
test edi, edi
je 0x405b40
mov ecx, ebx
mov ebx, esi
mov esi, edi
jmp 0x405a38
test esi, esi
je 0x406cb5
add ebp, 1
movzx eax, byte [ebp - 1]
sub esi, 1
mov edx, dword [esp + 0x40]
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 0x405a30
mov word [esp + 0x54], di
mov edi, esi
mov esi, ebx
mov ebx, ecx
cmp byte [esp + 0x3c], 0
je 0x406d90
test byte [esp + 0x3c], 0xf0
jne 0x406d90
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
sub eax, 1
mov dword [esp + 0x5c], eax
and eax, esi
shr eax, cl
mov ecx, dword [esp + 0x40]
add eax, dword [esp + 0x58]
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]
mov word [esp + 0x54], cx
add edx, eax
cmp ebx, edx
jb 0x405b38
jmp 0x4070ed
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
mov ecx, dword [esp + 0x40]
add eax, dword [esp + 0x58]
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 0x4070e8
test edi, edi
jne 0x405af0
lea esi, [esi]
mov dword [esp + 0x3c], esi
mov esi, ebx
mov ebx, ebp
mov ebp, edi
mov edi, dword [esp + 0x24]
jmp 0x405d20
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x48]
test edx, edx
jne 0x406b54
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
sub eax, 1
mov dword [esp + 0x48], eax
and eax, esi
lea eax, [edx + eax*4]
mov dword [esp + 0x40], edx
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 0x405c10
test edi, edi
je 0x405b40
mov ecx, ebx
mov ebx, edi
mov edi, ebp
jmp 0x405bcd
test ebx, ebx
je 0x406ca2
add edi, 1
movzx eax, byte [edi - 1]
sub ebx, 1
mov edx, dword [esp + 0x40]
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 0x405bc5
mov word [esp + 0x54], bp
mov ebp, edi
mov edi, ebx
mov ebx, ecx
test byte [esp + 0x3c], 0xf0
jne 0x406c14
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
sub eax, 1
mov dword [esp + 0x58], eax
and eax, esi
shr eax, cl
mov ecx, dword [esp + 0x40]
add eax, dword [esp + 0x48]
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 + 0x5c]
mov word [esp + 0x54], cx
add edx, eax
cmp ebx, edx
jae 0x405cd3
test edi, edi
je 0x405b40
mov eax, esi
mov edx, dword [esp + 0x5c]
mov esi, edi
mov edi, eax
jmp 0x405c8a
test esi, esi
je 0x406eab
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
mov ecx, dword [esp + 0x40]
add eax, dword [esp + 0x48]
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 0x405c82
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 0x406c1e
mov dword [edi], 0x1e
mov eax, 0xfffffffc
lea esi, [esi]
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 + 0x34], 1
nop
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x30]
mov dword [eax], ebx
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0x2c]
mov dword [eax + 4], ebp
mov dword [eax + 0x10], edx
mov eax, dword [esp + 0x3c]
mov ebx, dword [edi + 0x28]
mov dword [edi + 0x3c], esi
mov dword [edi + 0x38], eax
mov eax, dword [esp + 0x90]
test ebx, ebx
mov eax, dword [eax + 0x10]
jne 0x405d75
cmp eax, dword [esp + 0x28]
je 0x407500
mov edx, dword [edi]
cmp edx, 0x1c
ja 0x405d9c
cmp edx, 0x19
jbe 0x405d75
cmp dword [esp + 0x94], 4
je 0x405d9c
mov ecx, dword [esp + 0x28]
sub ecx, eax
mov eax, dword [esp + 0x90]
mov edx, dword [eax + 0xc]
call fcn.00405250
test eax, eax
jne 0x405cee
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0x10]
mov esi, dword [esp + 0x90]
mov ebx, dword [esp + 0x38]
sub ebx, dword [esi + 4]
mov esi, dword [esp + 0x28]
sub esi, eax
mov eax, dword [esp + 0x90]
add dword [eax + 8], ebx
add dword [eax + 0x14], esi
mov ecx, dword [edi + 8]
add dword [edi + 0x1c], esi
test ecx, ecx
je 0x405dfb
test esi, esi
je 0x405dfb
mov edx, dword [edi + 0x10]
mov dword [esp + 8], esi
test edx, edx
je 0x406aa0
mov eax, dword [eax + 0xc]
sub eax, esi
mov dword [esp + 4], eax
mov eax, dword [edi + 0x18]
mov dword [esp], eax
call fcn.00408190
mov ecx, dword [esp + 0x90]
mov dword [edi + 0x18], eax
mov dword [ecx + 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 0x4069e3
cmp edx, 0xe
jne 0x4069f0
mov edx, 0x100
mov edi, dword [esp + 0x90]
add eax, edx
or esi, ebx
mov dword [edi + 0x2c], eax
je 0x405e44
cmp dword [esp + 0x94], 4
mov eax, dword [esp + 0x34]
jne 0x405d00
mov ebx, dword [esp + 0x34]
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 0x405e90
test edi, edi
je 0x405b40
mov ecx, ebx
nop
jmp 0x405e7a
test edi, edi
je 0x4069d0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x405e72
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x405e9e
mov dword [eax + 4], esi
mov eax, dword [esp + 0x24]
test byte [eax + 0x11], 2
jne 0x406f7a
mov eax, dword [esp + 0x24]
xor esi, esi
xor ebx, ebx
mov dword [eax], 3
jmp 0x405f2a
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x40]
mov ecx, dword [esp + 0x24]
mov dword [ecx], 0xf
test eax, eax
je 0x406ac0
mov edx, dword [esp + 0x2c]
cmp edi, eax
cmovbe eax, edi
cmp eax, edx
cmova eax, edx
test eax, eax
je 0x405b40
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 + 0x2c], edx
add dword [esp + 0x30], edx
sub edi, edx
add ebp, edx
sub dword [eax + 0x40], edx
mov eax, dword [eax]
jmp 0x40573f
cmp ebx, 0xf
ja 0x405f54
test edi, edi
je 0x405b40
mov ecx, ebx
jmp 0x405f3e
test edi, edi
je 0x4069d0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x405f36
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x405f72
mov ebx, esi
movzx edx, bl
mov dword [eax + 8], edx
mov eax, dword [ecx + 0x20]
mov edx, esi
shr edx, 8
mov dword [eax + 0xc], edx
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
test ah, 2
jne 0x406e72
mov ebx, dword [esp + 0x24]
xor esi, esi
mov dword [ebx], 4
xor ebx, ebx
test ah, 4
jne 0x406958
mov ecx, dword [esp + 0x24]
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x406c9b
mov dword [edx + 0x10], 0
mov eax, dword [ecx + 0x10]
mov edx, eax
and edx, 0x400
mov ecx, dword [esp + 0x24]
mov dword [ecx], 5
jmp 0x4066a7
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x68]
mov dword [esp + 0x44], eax
mov edx, dword [esp + 0x24]
mov eax, dword [edx + 0x60]
mov dword [esp + 0x54], eax
add eax, dword [edx + 0x64]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
cmp dword [esp + 0x44], eax
mov eax, dword [esp + 0x24]
jae 0x4071fe
mov ecx, dword [eax + 0x54]
mov edx, dword [eax + 0x4c]
mov eax, 1
shl eax, cl
lea eax, [eax - 1]
mov dword [esp + 0x40], eax
and eax, esi
lea eax, [edx + eax*4]
movzx ecx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x3c], ax
movzx eax, cl
cmp ebx, eax
jae 0x40607a
test edi, edi
je 0x405b40
mov ecx, ebx
mov ebx, edx
jmp 0x406048
test edi, edi
je 0x4069d0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
mov eax, dword [esp + 0x40]
and eax, esi
lea eax, [ebx + eax*4]
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x3c], ax
movzx eax, dl
cmp eax, ecx
ja 0x406040
mov ebx, ecx
mov ecx, edx
cmp word [esp + 0x3c], 0xf
jbe 0x406c60
cmp word [esp + 0x3c], 0x10
je 0x40707a
cmp word [esp + 0x3c], 0x11
je 0x4070fd
lea edx, [eax + 7]
cmp ebx, edx
jae 0x4060d6
test edi, edi
je 0x405b40
mov ecx, ebx
mov ebx, eax
mov eax, edx
jmp 0x4060bd
test edi, edi
je 0x4069d0
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add esi, edx
cmp ecx, eax
jb 0x4060b5
mov eax, ebx
mov ebx, ecx
mov ecx, eax
sub ebx, eax
shr esi, cl
sub ebx, 7
mov edx, esi
and esi, 0x7f
add esi, 0xb
xor ecx, ecx
mov dword [esp + 0x3c], esi
mov esi, edx
shr esi, 7
mov eax, dword [esp + 0x3c]
add eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x48]
mov edx, eax
mov dword [esp + 0x3c], eax
ja 0x40743b
mov word [esp + 0x40], cx
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x24]
lea eax, [ecx + eax*2 + 0x70]
mov ecx, dword [esp + 0x4c]
lea edx, [ecx + edx*2]
movzx ecx, word [esp + 0x40]
mov word [eax], cx
add eax, 2
cmp eax, edx
jne 0x406127
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x44], eax
mov dword [edx + 0x68], eax
jmp 0x405fed
cmp ebx, 0xf
ja 0x406176
test edi, edi
je 0x405b40
mov ecx, ebx
jmp 0x40615e
test edi, edi
je 0x4069d0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x406156
mov ebx, ecx
mov edx, dword [esp + 0x24]
mov eax, esi
cmp al, 8
mov dword [edx + 0x10], esi
je 0x406fef
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.unknown_compression_method
mov eax, 0x1d
mov dword [edx], 0x1d
jmp switch.0x00405748
cmp ebx, 0xd
ja 0x4061d6
test edi, edi
je 0x405b40
mov ecx, ebx
jmp 0x4061be
test edi, edi
je 0x4069d0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xd
jbe 0x4061b6
mov ebx, ecx
mov ecx, dword [esp + 0x24]
mov edx, esi
mov eax, esi
shr edx, 5
and eax, 0x1f
and edx, 0x1f
add eax, 0x101
add edx, 1
sub ebx, 0xe
mov dword [ecx + 0x64], edx
mov dword [ecx + 0x60], eax
mov ecx, esi
shr ecx, 0xa
and ecx, 0xf
add ecx, 4
mov dword [esp + 0x3c], edx
mov edx, ecx
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x24]
shr esi, 0xe
cmp eax, 0x11e
mov dword [ecx + 0x5c], edx
ja 0x406df0
cmp dword [esp + 0x3c], 0x1e
ja 0x406df0
mov eax, dword [esp + 0x24]
xor edx, edx
mov ecx, ebx
mov dword [esp + 0x3c], edx
mov dword [eax + 0x68], 0
mov dword [eax], 0x11
jmp 0x406260
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x5c]
mov edx, dword [eax + 0x68]
mov dword [esp + 0x40], ecx
cmp ecx, edx
jbe 0x4062b6
mov ecx, ebx
mov dword [esp + 0x3c], edx
cmp ecx, 2
ja 0x40627e
test edi, edi
je 0x4069d0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
add dword [esp + 0x3c], 1
sub ecx, 3
mov ebx, dword [esp + 0x3c]
mov edx, dword [esp + 0x24]
movzx eax, word [ebx + ebx + 0x4292de]
mov dword [edx + 0x68], ebx
mov ebx, esi
and ebx, 7
shr esi, 3
mov word [edx + eax*2 + 0x70], bx
mov edx, dword [esp + 0x40]
cmp dword [esp + 0x3c], edx
jb 0x406260
mov edx, dword [esp + 0x3c]
mov ebx, ecx
cmp edx, 0x12
mov ecx, dword [esp + 0x24]
lea eax, [edx + edx + 0x4292e0]
ja 0x4062e5
movzx edx, word [eax]
add eax, 2
cmp eax, 0x429306
mov word [ecx + edx*2 + 0x70], 0
jne 0x4062c6
mov eax, dword [esp + 0x24]
mov dword [eax + 0x68], 0x13
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x50]
mov dword [eax + 0x54], 7
mov dword [eax + 0x6c], edx
mov dword [eax + 0x4c], edx
mov edx, eax
add eax, 0x2f0
mov dword [esp + 0x14], eax
mov eax, edx
add eax, 0x54
mov dword [esp + 0x10], eax
mov eax, edx
add eax, 0x6c
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 8], 0x13
mov dword [esp], 0
mov dword [esp + 4], eax
call fcn.00408480
test eax, eax
mov dword [esp + 0x34], eax
je 0x4071e0
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.0x00405748
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x40]
jmp 0x405ed1
mov dword [esp + 0x3c], esi
mov esi, ebx
mov ebx, ebp
mov dword [esp + 0x34], 0xfffffffd
mov ebp, edi
mov edi, dword [esp + 0x24]
jmp 0x405d20
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x405b40
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x30]
sub dword [esp + 0x2c], 1
mov eax, dword [edx + 0x40]
mov byte [ecx], al
lea eax, [ecx + 1]
mov dword [esp + 0x30], eax
mov eax, 0x14
mov dword [edx], 0x14
jmp switch.0x00405748
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 8]
test eax, eax
je 0x406bc0
cmp ebx, 0x1f
ja 0x406405
test edi, edi
je 0x405b40
mov ecx, ebx
jmp 0x4063ed
test edi, edi
je 0x4069d0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x4063e5
mov ebx, ecx
mov edx, dword [esp + 0x90]
mov eax, dword [esp + 0x28]
sub eax, dword [esp + 0x2c]
add dword [edx + 0x14], eax
mov edx, dword [esp + 0x24]
add dword [edx + 0x1c], eax
test eax, eax
je 0x406457
mov ecx, dword [edx + 0x10]
mov dword [esp + 8], eax
test ecx, ecx
mov ecx, dword [esp + 0x30]
je 0x4071a5
sub ecx, eax
mov dword [esp + 4], ecx
mov eax, dword [edx + 0x18]
mov dword [esp], eax
call fcn.00408190
mov ecx, dword [esp + 0x24]
mov dword [ecx + 0x18], eax
mov ecx, dword [esp + 0x90]
mov dword [ecx + 0x30], eax
mov edx, dword [esp + 0x24]
mov eax, esi
mov ecx, dword [edx + 0x10]
test ecx, ecx
jne 0x406486
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 0x406bb0
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 + 0x2c]
mov dword [esp + 0x28], eax
mov eax, 0x1d
jmp switch.0x00405748
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 8]
test eax, eax
je 0x4071bf
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
test edx, edx
je 0x4071bf
cmp ebx, 0x1f
ja 0x406512
test edi, edi
je 0x406f69
mov ecx, ebx
lea esi, [esi]
jmp 0x4064fa
test edi, edi
je 0x4069d0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x4064f2
mov ebx, ecx
mov eax, dword [esp + 0x24]
cmp dword [eax + 0x1c], esi
je 0x407318
mov ecx, dword [esp + 0x90]
mov dword [ecx + 0x18], str.incorrect_length_check
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405748
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 8]
test edx, edx
je 0x406bd0
cmp ebx, 0xf
ja 0x406582
test edi, edi
je 0x406f69
mov ecx, ebx
nop
jmp 0x40656a
test edi, edi
je 0x4069d0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x406562
mov ebx, ecx
test dl, 2
je 0x406593
cmp esi, 0x8b1f
je 0x40732f
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x20]
mov dword [ecx + 0x10], 0
test eax, eax
je 0x4065af
mov dword [eax + 0x30], 0xffffffff
mov edx, dword [ecx + 8]
and edx, 1
je 0x406ec0
mov ecx, esi
mov eax, esi
shl ecx, 8
mov edx, 0x8421085
shr eax, 8
movzx ecx, cx
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 0x406ec0
mov eax, esi
and eax, 0xf
cmp eax, 8
je 0x4072a3
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.0x00405748
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr esi, cl
cmp ebx, 0x1f
ja 0x406660
test edi, edi
je 0x405b40
mov ecx, ebx
jmp 0x406648
test edi, edi
je 0x4069d0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x406640
mov ebx, ecx
mov edx, esi
movzx eax, si
shr edx, 0x10
xor edx, 0xffff
cmp eax, edx
je 0x40701d
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.0x00405748
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
mov edx, eax
and edx, 0x400
test edx, edx
je 0x40674d
mov edx, dword [esp + 0x24]
mov ecx, dword [edx + 0x40]
cmp edi, ecx
mov dword [esp + 0x3c], ecx
cmovbe ecx, edi
mov edx, ecx
test edx, edx
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x3c]
je 0x40673e
mov ecx, dword [esp + 0x24]
mov ecx, dword [ecx + 0x20]
test ecx, ecx
je 0x406721
mov edx, dword [ecx + 0x10]
test edx, edx
mov dword [esp + 0x44], edx
je 0x406721
mov edx, dword [ecx + 0x18]
mov eax, dword [ecx + 0x14]
mov ecx, dword [esp + 0x40]
sub eax, dword [esp + 0x3c]
mov dword [esp + 4], ebp
add ecx, eax
mov dword [esp + 0x3c], ecx
mov ecx, edx
sub ecx, eax
cmp dword [esp + 0x3c], edx
mov edx, ecx
cmovbe edx, dword [esp + 0x40]
add eax, dword [esp + 0x44]
mov dword [esp + 8], edx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x10]
test ah, 2
jne 0x406f42
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x40]
mov ecx, dword [edx + 0x40]
sub edi, eax
add ebp, eax
sub ecx, eax
mov dword [edx + 0x40], ecx
test ecx, ecx
jne 0x405b40
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
mov edx, dword [esp + 0x24]
test ah, 8
mov dword [edx + 0x40], 0
mov dword [edx], 6
jne 0x40678d
mov ecx, dword [esp + 0x24]
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x406821
mov dword [edx + 0x1c], 0
mov eax, dword [ecx + 0x10]
jmp 0x406821
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
test ah, 8
je 0x406763
test edi, edi
je 0x405b40
mov dword [esp + 0x44], esi
xor edx, edx
mov esi, dword [esp + 0x24]
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x40], edi
mov dword [esp + 0x48], ebx
jmp 0x4067b6
cmp edx, dword [esp + 0x40]
jae 0x4067e8
mov eax, dword [esp + 0x3c]
add edx, 1
movzx ecx, byte [eax + edx - 1]
mov eax, dword [esi + 0x20]
movzx ebp, cl
test eax, eax
je 0x4067e4
mov edi, dword [eax + 0x1c]
test edi, edi
je 0x4067e4
mov ebx, dword [esi + 0x40]
cmp ebx, dword [eax + 0x20]
jae 0x4067e4
lea eax, [ebx + 1]
mov dword [esi + 0x40], eax
mov byte [edi + ebx], cl
test ebp, ebp
jne 0x4067b0
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov dword [esp + 0x40], ebp
mov ebx, dword [esp + 0x48]
test byte [eax + 0x11], 2
mov ebp, dword [esp + 0x3c]
jne 0x406dc5
mov eax, dword [esp + 0x40]
sub edi, edx
add ebp, edx
test eax, eax
jne 0x405b40
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
mov ecx, dword [esp + 0x24]
mov dword [ecx + 0x40], 0
mov dword [ecx], 7
test ah, 0x10
je 0x406a80
test edi, edi
je 0x405b40
mov dword [esp + 0x44], esi
xor edx, edx
mov esi, dword [esp + 0x24]
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x40], edi
mov dword [esp + 0x48], ebx
jmp 0x406866
cmp edx, dword [esp + 0x40]
jae 0x406898
mov eax, dword [esp + 0x3c]
add edx, 1
movzx ecx, byte [eax + edx - 1]
mov eax, dword [esi + 0x20]
movzx ebp, cl
test eax, eax
je 0x406894
mov edi, dword [eax + 0x24]
test edi, edi
je 0x406894
mov ebx, dword [esi + 0x40]
cmp ebx, dword [eax + 0x28]
jae 0x406894
lea eax, [ebx + 1]
mov dword [esi + 0x40], eax
mov byte [edi + ebx], cl
test ebp, ebp
jne 0x406860
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov dword [esp + 0x40], ebp
mov ebx, dword [esp + 0x48]
test byte [eax + 0x11], 2
mov ebp, dword [esp + 0x3c]
jne 0x406cc8
mov eax, dword [esp + 0x40]
sub edi, edx
add ebp, edx
test eax, eax
jne 0x405b40
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
mov edx, dword [esp + 0x24]
mov dword [edx], 8
test ah, 2
je 0x406a04
cmp ebx, 0xf
ja 0x406915
test edi, edi
je 0x405b40
mov ecx, ebx
jmp 0x4068fd
test edi, edi
je 0x4069d0
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add esi, edx
cmp ecx, 0xf
jbe 0x4068f5
mov ebx, ecx
mov ecx, dword [esp + 0x24]
movzx edx, word [ecx + 0x18]
cmp edx, esi
je 0x406a00
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.header_crc_mismatch
mov eax, 0x1d
mov dword [ecx], 0x1d
jmp switch.0x00405748
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
test ah, 4
je 0x405f99
cmp ebx, 0xf
ja 0x40697e
test edi, edi
je 0x405b40
mov ecx, ebx
jmp 0x406968
test edi, edi
je 0x4069d0
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add esi, edx
cmp ecx, 0xf
jbe 0x406964
mov ebx, dword [esp + 0x24]
mov edx, dword [ebx + 0x20]
mov dword [ebx + 0x40], esi
test edx, edx
je 0x406992
mov dword [edx + 0x14], esi
mov eax, dword [ebx + 0x10]
test ah, 2
jne 0x407041
mov edx, eax
xor ebx, ebx
and edx, 0x400
xor esi, esi
jmp 0x405fba
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
jmp 0x406832
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
jmp 0x4068db
mov ebx, ebp
mov ebp, edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x3c], esi
mov esi, ecx
jmp 0x405d20
sub eax, 0xffffff80
xor edx, edx
jmp 0x405e22
cmp edx, 0x13
je 0x405e1d
xor edx, edx
jmp 0x405e22
xor ebx, ebx
xor esi, esi
mov ecx, dword [esp + 0x24]
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x406a22
sar eax, 9
and eax, 1
mov dword [edx + 0x2c], eax
mov eax, dword [ecx + 0x20]
mov dword [eax + 0x30], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00408190
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.0x00405748
mov eax, dword [eax + 4]
test eax, eax
je 0x4056dd
nop
lea esi, [esi]
mov eax, 0xfffffffe
jmp 0x405d00
mov ecx, dword [esp + 0x24]
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x4068d1
mov dword [edx + 0x24], 0
mov eax, dword [ecx + 0x10]
jmp 0x4068d1
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0xc]
sub eax, esi
mov dword [esp + 4], eax
mov eax, dword [edi + 0x18]
mov dword [esp], eax
call fcn.00407c00
jmp 0x405dee
mov eax, dword [esp + 0x24]
mov dword [eax], 0xb
mov eax, 0xb
jmp switch.0x00405748
mov eax, dword [esp + 0x30]
sub eax, ecx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x40]
mov edx, ecx
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x40], ebx
cmp ecx, eax
cmova ecx, eax
mov eax, dword [esp + 0x24]
sub edx, ecx
sub dword [esp + 0x2c], ecx
mov dword [eax + 0x40], edx
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x3c]
add ecx, edx
nop
lea esi, [esi]
add eax, 1
movzx ebx, byte [eax - 1]
add edx, 1
cmp edx, ecx
mov byte [edx - 1], bl
jne 0x406b10
mov eax, dword [esp + 0x24]
mov dword [esp + 0x30], edx
mov ebx, dword [esp + 0x40]
mov edx, dword [eax + 0x40]
test edx, edx
je 0x406b40
mov eax, dword [eax]
jmp 0x40573f
mov eax, dword [esp + 0x24]
mov dword [eax], 0x14
mov eax, 0x14
jmp switch.0x00405748
cmp ebx, edx
jae 0x406b83
test edi, edi
je 0x405b40
mov ecx, ebx
jmp 0x406b6c
test edi, edi
je 0x4069d0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, edx
jb 0x406b64
mov ebx, ecx
mov ecx, edx
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x24]
sub ebx, edx
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 0x405b69
mov ebx, dword [esp + 0x2c]
xor esi, esi
mov eax, dword [edx + 8]
mov dword [esp + 0x28], ebx
xor ebx, ebx
nop
mov edx, dword [esp + 0x24]
mov dword [edx], 0x1b
jmp 0x4064c7
mov eax, dword [esp + 0x24]
mov dword [eax], 0xc
mov eax, 0xc
jmp switch.0x00405748
mov eax, dword [eax + 0x1bc0]
test eax, eax
je 0x40596e
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], 0x428985
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405748
mov edx, dword [esp + 0x24]
mov edx, dword [edx + 0x1bc4]
mov ecx, eax
sub ebx, eax
shr esi, cl
mov ecx, dword [esp + 0x24]
add eax, edx
test byte [esp + 0x3c], 0x40
mov dword [ecx + 0x1bc4], eax
je 0x406e28
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], 0x42896f
mov eax, 0x1d
mov dword [ecx], 0x1d
jmp switch.0x00405748
mov edx, dword [esp + 0x44]
shr esi, cl
sub ebx, eax
mov ecx, dword [esp + 0x24]
mov eax, edx
add eax, 1
mov dword [ecx + 0x68], eax
mov dword [esp + 0x44], eax
movzx eax, word [esp + 0x3c]
mov word [ecx + edx*2 + 0x70], ax
jmp 0x405fed
mov eax, dword [esp + 0x24]
mov dword [eax], 0x10
mov eax, 0x10
jmp 0x40587e
xor edx, edx
jmp 0x405fba
mov ebp, ebx
mov ebx, edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x3c], esi
mov esi, ecx
jmp 0x405d20
mov dword [esp + 0x3c], ebx
mov edi, dword [esp + 0x24]
mov ebx, ebp
mov ebp, esi
mov esi, ecx
jmp 0x405d20
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.00408190
mov edx, dword [esp + 0x24]
mov dword [edx + 0x18], eax
mov edx, dword [esp + 0x3c]
jmp 0x4068ba
cmp dword [esp + 0x2c], 0x101
jbe 0x4059d3
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x30]
mov dword [eax], ebp
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0x2c]
mov dword [eax + 4], edi
mov dword [eax + 0x10], edx
mov eax, dword [esp + 0x24]
mov dword [eax + 0x38], esi
mov esi, eax
mov dword [eax + 0x3c], ebx
mov eax, dword [esp + 0x28]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x90]
mov dword [esp], eax
call fcn.004089e0
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 + 0x2c], 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 0x40573f
mov ecx, dword [esp + 0x24]
mov dword [ecx + 0x1bc4], 0xffffffff
jmp switch.0x00405748
mov edx, eax
mov ecx, eax
sub ebx, eax
movzx eax, word [esp + 0x54]
shr esi, cl
mov ecx, dword [esp + 0x24]
cmp byte [esp + 0x3c], 0
mov dword [ecx + 0x1bc4], edx
mov dword [ecx + 0x40], eax
jne 0x406e49
mov dword [ecx], 0x19
mov eax, 0x19
jmp switch.0x00405748
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.00408190
mov edx, dword [esp + 0x24]
mov dword [edx + 0x18], eax
mov edx, dword [esp + 0x3c]
jmp 0x40680a
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.0x00405748
sub eax, ecx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x34]
add dword [esp + 0x3c], eax
jmp 0x405995
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x24]
movzx eax, word [esp + 0x54]
and edx, 0xf
mov dword [ecx + 0x48], edx
mov dword [ecx + 0x44], eax
mov dword [ecx], 0x17
jmp 0x4058d7
test byte [esp + 0x3c], 0x20
je 0x406fc2
mov eax, dword [esp + 0x24]
mov dword [eax + 0x1bc4], 0xffffffff
mov dword [eax], 0xb
mov eax, 0xb
jmp switch.0x00405748
mov ebx, dword [esp + 0x24]
mov eax, esi
mov byte [esp + 0x6c], al
mov eax, esi
shr eax, 8
mov byte [esp + 0x6d], al
lea eax, [esp + 0x6c]
mov dword [esp + 8], 2
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.00408190
mov dword [ebx + 0x18], eax
mov eax, dword [ebx + 0x10]
jmp 0x405f82
mov eax, ebx
mov ebx, ebp
mov dword [esp + 0x3c], edi
mov ebp, esi
mov edi, dword [esp + 0x24]
mov esi, eax
jmp 0x405d20
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.0x00405748
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x94], 6
mov dword [eax + 0x4c], 0x428ae0
mov dword [eax + 0x54], 9
mov dword [eax + 0x50], 0x428a60
mov dword [eax + 0x58], 5
mov dword [eax], 0x13
je 0x40746f
mov eax, 0x13
jmp 0x40587e
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 0x40587e
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.00408190
mov edx, dword [esp + 0x24]
mov dword [edx + 0x18], eax
jmp 0x40672a
mov dword [esp + 0x3c], esi
mov esi, ebx
mov ebx, ebp
mov ebp, edi
mov edi, eax
jmp 0x405d20
mov eax, esi
mov ebx, dword [esp + 0x24]
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 + 8], 4
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.00408190
mov dword [ebx + 0x18], eax
jmp 0x405eac
test byte [esp + 0x3c], 0x40
je 0x407156
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], 0x428953
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00405748
test esi, 0xe000
je 0x40716f
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.0x00405748
mov ebx, dword [esp + 0x24]
cmp dword [esp + 0x94], 6
mov dword [ebx + 0x40], eax
mov dword [ebx], 0xe
je 0x407458
xor ebx, ebx
xor esi, esi
jmp 0x405ec7
mov ebx, dword [esp + 0x24]
mov eax, esi
mov byte [esp + 0x6c], al
mov eax, esi
shr eax, 8
mov byte [esp + 0x6d], al
lea eax, [esp + 0x6c]
mov dword [esp + 8], 2
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.00408190
mov dword [ebx + 0x18], eax
mov eax, dword [ebx + 0x10]
jmp 0x40699b
lea edx, [eax + 2]
cmp ebx, edx
jae 0x4070b2
test edi, edi
je 0x405b40
mov ecx, ebx
mov ebx, eax
mov eax, edx
jmp 0x407099
test edi, edi
je 0x4069d0
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add esi, edx
cmp ecx, eax
jb 0x407091
mov eax, ebx
mov ebx, ecx
mov ecx, eax
sub ebx, eax
mov eax, dword [esp + 0x44]
shr esi, cl
test eax, eax
je 0x40743b
mov eax, dword [esp + 0x24]
sub ebx, 2
mov edx, dword [esp + 0x44]
movzx ecx, word [eax + edx*2 + 0x6e]
mov eax, esi
and eax, 3
add eax, 3
mov dword [esp + 0x3c], eax
shr esi, 2
jmp 0x4060f2
mov word [esp + 0x54], cx
movzx ecx, byte [esp + 0x48]
sub ebx, dword [esp + 0x44]
shr esi, cl
jmp 0x406d92
lea edx, [eax + 3]
cmp ebx, edx
jae 0x407135
test edi, edi
je 0x405b40
mov ecx, ebx
mov ebx, eax
mov eax, edx
jmp 0x40711c
test edi, edi
je 0x4069d0
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add esi, edx
cmp ecx, eax
jb 0x407114
mov eax, ebx
mov ebx, ecx
mov ecx, eax
sub ebx, eax
shr esi, cl
sub ebx, 3
mov edx, esi
and esi, 7
add esi, 3
xor ecx, ecx
mov dword [esp + 0x3c], esi
mov esi, edx
shr esi, 3
jmp 0x4060f2
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x24]
and edx, 0xf
mov dword [eax + 0x48], edx
mov dword [eax], 0x15
jmp 0x405b5a
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x407184
mov edx, esi
shr edx, 8
and edx, 1
mov dword [eax], edx
mov eax, dword [esp + 0x24]
test byte [eax + 0x11], 2
jne 0x40726d
mov eax, dword [esp + 0x24]
xor ebx, ebx
xor esi, esi
mov dword [eax], 2
jmp 0x405e65
sub ecx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 4], ecx
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call fcn.00407c00
jmp 0x406446
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 + 0x34], 1
jmp 0x405d20
mov eax, dword [esp + 0x24]
mov dword [esp + 0x44], 0
mov dword [eax + 0x68], 0
mov dword [eax], 0x12
jmp 0x405fdb
cmp dword [eax], 0x1d
je 0x406533
cmp word [eax + 0x270], 0
jne 0x4073b9
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.0x00405748
mov dword [esp + 0x3c], esi
mov edx, dword [esp + 0x30]
mov esi, ebx
mov ecx, dword [esp + 0x2c]
mov ebx, ebp
mov ebp, edi
mov edi, eax
mov eax, dword [esp + 0x90]
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], ecx
mov dword [eax], ebx
mov dword [eax + 4], ebp
mov eax, dword [esp + 0x3c]
mov dword [edi + 0x3c], esi
mov dword [edi + 0x38], eax
mov eax, 2
jmp 0x405d00
mov ebx, dword [esp + 0x24]
mov eax, esi
mov byte [esp + 0x6c], al
mov eax, esi
shr eax, 8
mov byte [esp + 0x6d], al
lea eax, [esp + 0x6c]
mov dword [esp + 8], 2
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.00408190
mov dword [ebx + 0x18], eax
jmp 0x407192
mov eax, dword [esp + 0x24]
shr esi, 4
mov ecx, esi
and ecx, 0xf
add ecx, 8
mov eax, dword [eax + 0x24]
test eax, eax
jne 0x40738c
mov eax, dword [esp + 0x24]
mov dword [eax + 0x24], ecx
mov ebx, dword [esp + 0x24]
mov eax, 1
shl eax, cl
mov dword [ebx + 0x14], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00407c00
mov ecx, dword [esp + 0x90]
mov dword [ebx + 0x18], eax
mov dword [ecx + 0x30], eax
mov eax, esi
and eax, 0x200
cmp eax, 1
sbb eax, eax
xor esi, esi
and eax, 2
add eax, 9
mov dword [ebx], eax
xor ebx, ebx
jmp 0x40573f
mov ebx, ebp
xor esi, esi
mov ebp, edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x3c], 0
jmp 0x4071cd
mov dword [esp + 8], 0
xor si, si
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00408190
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.00408190
mov dword [ebx], 1
mov dword [ebx + 0x18], eax
mov eax, 1
xor ebx, ebx
jmp switch.0x00405748
cmp ecx, eax
jbe 0x4072c4
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.0x00405748
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x50]
lea ecx, [eax + 0x2f0]
mov dword [eax + 0x6c], edx
mov dword [eax + 0x4c], edx
lea edx, [eax + 0x6c]
add eax, 0x54
mov dword [eax], 9
mov dword [esp + 0x40], ecx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0xc], edx
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x54]
mov dword [esp + 0x10], eax
mov dword [esp + 4], ecx
mov dword [esp], 1
mov dword [esp + 8], edx
call fcn.00408480
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
test eax, eax
mov dword [esp + 0x34], eax
je 0x407488
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.0x00405748
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
jmp 0x406533
mov ebx, ebp
xor esi, esi
mov ebp, edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x3c], 0
jmp 0x405d20
mov dword [esp + 0x3c], esi
mov esi, ebx
mov ebx, ebp
shr dword [esp + 0x3c], 3
mov ebp, edi
sub esi, 3
mov edi, eax
jmp 0x405d20
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x24]
mov eax, dword [edx + 0x6c]
mov dword [edx + 0x58], 6
mov dword [edx + 0x50], eax
mov eax, edx
mov dword [esp + 0x14], ecx
mov ecx, edx
mov edx, dword [esp + 0x34]
add eax, 0x58
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edx
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.00408480
test eax, eax
mov dword [esp + 0x34], eax
je 0x4059a6
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.0x00405748
mov eax, dword [esp + 0x90]
xor esi, esi
mov ebx, dword [esp + 0x38]
sub ebx, dword [eax + 4]
add dword [eax + 8], ebx
jmp 0x405dfb