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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x7c
mov edi, dword [esp + 0x90]
test edi, edi
je case.default.0x406d09
mov eax, dword [esp + 0x90]
mov edi, dword [eax + 0x1c]
test edi, edi
je case.default.0x406d09
mov eax, dword [eax + 0xc]
test eax, eax
mov dword [esp + 0x30], eax
je case.default.0x406d09
mov eax, dword [esp + 0x90]
mov ebx, dword [eax]
test ebx, ebx
je 0x408050
mov eax, dword [eax + 4]
mov dword [esp + 0x34], eax
mov eax, dword [edi]
cmp eax, 0xb
je 0x406e50
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.0x406d09
jmp dword [eax*4 + 0x428e90]
cmp ebx, 0x1f
ja 0x406d3f
test edi, edi
je 0x407100
mov ecx, ebx
jmp 0x406d29
test edi, edi
je 0x407fd0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x406d21
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 0x4088a5
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.004014d0
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x90]
mov dword [ecx + 0x18], eax
mov dword [edx + 0x30], eax
mov dword [ecx], 0xb
mov eax, dword [esp + 0x94]
sub eax, 5
cmp eax, 1
jbe 0x407100
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 4]
test edx, edx
jne 0x406e60
cmp ebx, 2
ja 0x406e02
test edi, edi
je 0x408583
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 0x408322
cmp eax, 3
je 0x40853a
cmp eax, 1
je 0x4084fc
mov dword [ecx], 0xd
mov eax, 0xd
mov esi, edx
sub ebx, 3
shr esi, 2
jmp 0x406d00
mov dword [edi], 0xc
mov al, 0xc
jmp 0x406cba
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.0x00406d09
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x48]
test edx, edx
je 0x406ee4
cmp ebx, edx
jae 0x406ebf
test edi, edi
je 0x407100
mov ecx, ebx
jmp 0x406ea8
test edi, edi
je 0x407fd0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, edx
jb 0x406ea0
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 0x407100
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x2c]
mov ecx, dword [ecx + 0x44]
sub eax, edx
cmp eax, ecx
jae 0x4080b4
sub ecx, eax
mov eax, dword [esp + 0x24]
cmp ecx, dword [eax + 0x2c]
ja 0x408284
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x30]
cmp ecx, eax
jbe 0x408420
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
jbe 0x4080c7
mov ecx, edx
jmp 0x4080c7
cmp dword [esp + 0x94], 6
mov eax, dword [esp + 0x24]
mov dword [eax], 0x13
je 0x407100
mov eax, dword [esp + 0x24]
mov dword [eax], 0x14
cmp edi, 5
jbe 0x406f8e
cmp dword [esp + 0x28], 0x101
ja 0x408140
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x54]
mov edx, dword [eax + 0x4c]
mov dword [eax + 0x1bc4], 0
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 0x40703b
test edi, edi
je 0x407100
mov ecx, ebx
mov ebx, esi
mov esi, edi
jmp 0x406ff8
test esi, esi
je 0x408353
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 0x406ff0
mov word [esp + 0x54], di
mov edi, esi
mov esi, ebx
mov ebx, ecx
cmp byte [esp + 0x3c], 0
je 0x4083a0
test byte [esp + 0x3c], 0xf0
jne 0x4083a0
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
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]
mov word [esp + 0x54], cx
add edx, eax
cmp ebx, edx
jb 0x4070f8
jmp 0x408713
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 0x40870e
test edi, edi
jne 0x4070b0
lea esi, [esi]
mov dword [esp + 0x3c], esi
mov esi, ebx
mov ebx, ebp
mov ebp, edi
mov edi, dword [esp + 0x24]
jmp 0x407350
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x48]
test edx, edx
jne 0x4081d0
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 0x4071d0
test edi, edi
je 0x407100
mov ecx, ebx
mov ebx, edi
mov edi, ebp
jmp 0x40718d
test ebx, ebx
je 0x408340
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 0x407185
mov word [esp + 0x54], bp
mov ebp, edi
mov edi, ebx
mov ebx, ecx
test byte [esp + 0x3c], 0xf0
jne 0x4082b4
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
add eax, dword [esp + 0x48]
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 + 0x5c]
mov word [esp + 0x54], cx
add edx, eax
cmp ebx, edx
jae 0x407293
test edi, edi
je 0x407100
mov eax, esi
mov edx, dword [esp + 0x5c]
mov esi, edi
mov edi, eax
jmp 0x40724a
test esi, esi
je 0x4084c5
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 0x407242
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 0x4082be
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
test dh, 4
je 0x407920
cmp ebx, 0xf
ja 0x4072ef
test edi, edi
je 0x407100
mov ecx, ebx
jmp 0x4072d9
test edi, edi
je 0x407fd0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x4072d1
mov eax, dword [esp + 0x24]
mov dword [eax + 0x40], esi
mov eax, dword [eax + 0x20]
test eax, eax
je 0x407300
mov dword [eax + 0x14], esi
test dh, 2
jne 0x40865b
xor ebx, ebx
xor esi, esi
mov eax, dword [esp + 0x24]
mov dword [eax], 5
jmp 0x4076ec
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 0x4073a0
cmp dword [esp + 0x2c], eax
je 0x4073c0
mov eax, dword [edi]
cmp eax, 0x1c
ja 0x4073c0
cmp dword [esp + 0x94], 4
jne 0x4073a0
cmp eax, 0x19
ja 0x4073c0
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.004067f0
test eax, eax
jne 0x40847c
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 0x40741d
mov ecx, dword [edi + 8]
test ecx, ecx
je 0x40741d
mov edx, dword [edi + 0x10]
mov dword [esp + 8], esi
test edx, edx
je 0x408070
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.00401b40
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 0x407fe3
cmp edx, 0xe
je 0x407fc0
cmp edx, 0x13
je 0x407fc0
xor edx, edx
mov edi, dword [esp + 0x90]
add eax, edx
or esi, ebx
mov dword [edi + 0x2c], eax
je 0x40746c
cmp dword [esp + 0x94], 4
mov eax, dword [esp + 0x38]
jne 0x407325
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x407325
add esp, 0x7c
mov eax, 0xfffffffb
pop ebx
pop esi
pop edi
pop ebp
ret
cmp ebx, 0x1f
ja 0x4074be
test edi, edi
je 0x407100
mov ecx, ebx
jmp 0x4074a8
test edi, edi
je 0x407fd0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x4074a0
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x4074cc
mov dword [eax + 4], esi
mov eax, dword [esp + 0x24]
test byte [eax + 0x11], 2
jne 0x4085c1
mov eax, dword [esp + 0x24]
xor esi, esi
xor ebx, ebx
mov dword [eax], 3
jmp 0x4078aa
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x40]
mov edx, dword [esp + 0x24]
mov dword [edx], 0xf
test eax, eax
je 0x4080a0
cmp edi, eax
mov edx, edi
ja 0x408240
cmp edx, dword [esp + 0x28]
ja 0x408230
test edx, edx
je 0x407100
mov eax, dword [esp + 0x30]
mov dword [esp + 8], edx
mov dword [esp + 4], ebp
mov dword [esp + 0x3c], edx
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 0x406d00
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 0x408864
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 0x407611
test edi, edi
je 0x408738
mov ebp, dword [esp + 0x44]
mov ecx, ebx
jmp 0x4075da
test edi, edi
je 0x407fd0
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 0x4075d2
mov dword [esp + 0x44], ebp
mov ebp, ebx
mov ebx, ecx
mov ecx, ebp
cmp dx, 0xf
jbe 0x408300
cmp dx, 0x10
je 0x40869a
cmp dx, 0x11
je 0x40874d
lea edx, [eax + 7]
cmp ebx, edx
jae 0x407675
test edi, edi
je 0x408738
mov ecx, ebx
mov ebp, dword [esp + 0x44]
mov ebx, eax
mov eax, edx
jmp 0x407658
test edi, edi
je 0x407fd0
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add esi, edx
cmp ecx, eax
jb 0x407650
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 0x408adc
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 0x4076c3
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 0x407581
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
test dh, 4
mov eax, edx
je 0x40779e
mov edx, dword [esp + 0x24]
mov dword [esp + 0x3c], edi
mov ecx, dword [edx + 0x40]
cmp edi, ecx
mov dword [esp + 0x40], ecx
ja 0x408134
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x40]
test ecx, ecx
je 0x40778f
mov edx, dword [esp + 0x24]
mov edx, dword [edx + 0x20]
test edx, edx
je 0x40776e
mov ecx, dword [edx + 0x10]
test ecx, ecx
mov dword [esp + 0x44], ecx
je 0x40776e
mov eax, dword [edx + 0x18]
mov ecx, dword [edx + 0x14]
sub ecx, dword [esp + 0x40]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x3c]
lea edx, [eax + ecx]
cmp edx, dword [esp + 0x40]
jbe 0x407751
mov eax, dword [esp + 0x40]
sub eax, ecx
mov edx, dword [esp + 0x44]
mov dword [esp + 8], eax
mov dword [esp + 4], ebp
add edx, ecx
mov dword [esp], edx
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
test ah, 2
jne 0x40855c
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x3c]
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 0x407100
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 0x4077dc
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x407870
mov dword [eax + 0x1c], 0
jmp 0x407870
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
test dh, 8
je 0x4077b4
test edi, edi
je 0x407100
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 0x407806
cmp edx, dword [esp + 0x40]
jae 0x407837
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 0x407833
mov edi, dword [eax + 0x1c]
test edi, edi
je 0x407833
mov ebx, dword [esi + 0x40]
cmp ebx, dword [eax + 0x20]
jae 0x407833
lea eax, [ebx + 1]
mov dword [esi + 0x40], eax
mov byte [edi + ebx], cl
test ebp, ebp
jne 0x407800
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 0x4083d5
mov eax, dword [esp + 0x44]
sub edi, edx
add ebp, edx
test eax, eax
jne 0x407100
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 0x407bc0
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x407c50
mov dword [eax + 0x24], 0
jmp 0x407c50
cmp ebx, 0xf
ja 0x4078de
test edi, edi
je 0x407100
mov ecx, ebx
jmp 0x4078c8
test edi, edi
je 0x407fd0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x4078c0
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x4078f9
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 0x40848c
mov eax, dword [esp + 0x24]
xor ebx, ebx
xor esi, esi
test dh, 4
mov dword [eax], 4
jne 0x4072c5
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x40730d
mov dword [eax + 0x10], 0
jmp 0x40730d
cmp ebx, 0xd
ja 0x407971
test edi, edi
je 0x407100
mov ecx, ebx
jmp 0x407959
test edi, edi
je 0x407fd0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xd
jbe 0x407951
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 0x4083fc
cmp edx, 0x11e
ja 0x4083fc
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 0x4079ff
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 0x407a51
mov dword [esp + 0x3c], ebp
mov ecx, ebx
cmp ecx, 2
ja 0x407a23
test edi, edi
je 0x408723
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 + 0x4297be]
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 0x4079ff
mov ebp, dword [esp + 0x3c]
mov ebx, ecx
cmp edx, 0x12
lea eax, [edx + edx + 0x4297c0]
mov ecx, dword [esp + 0x24]
ja 0x407a80
movzx edx, word [eax]
add eax, 2
cmp eax, 0x4297e6
mov word [ecx + edx*2 + 0x70], 0
jne 0x407a61
mov eax, dword [esp + 0x24]
mov dword [eax + 0x68], 0x13
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x50]
mov dword [eax + 0x6c], edx
mov dword [eax + 0x4c], edx
mov edx, dword [esp + 0x4c]
mov dword [eax + 0x54], 7
mov dword [esp + 8], 0x13
mov dword [esp], 0
mov dword [esp + 0x14], edx
mov edx, eax
add eax, 0x54
mov dword [esp + 0x10], eax
mov eax, edx
add eax, 0x6c
mov dword [esp + 0xc], eax
mov eax, edx
add eax, 0x70
mov dword [esp + 4], eax
call fcn.00409110
test eax, eax
mov dword [esp + 0x38], eax
je 0x408846
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.0x00406d09
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x40]
jmp 0x407501
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 8]
test eax, eax
je 0x408807
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
test edx, edx
je 0x408807
cmp ebx, 0x1f
ja 0x407b60
test edi, edi
je 0x408583
mov ecx, ebx
jmp 0x407b48
test edi, edi
je 0x407fd0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x407b40
mov ebx, ecx
mov eax, dword [esp + 0x24]
cmp dword [eax + 0x1c], esi
je 0x408915
mov ecx, dword [esp + 0x90]
mov dword [ecx + 0x18], str.incorrect_length_check
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00406d09
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 0x407350
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
test dh, 0x10
je 0x40788a
test edi, edi
je 0x407100
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 0x407be6
cmp edx, dword [esp + 0x40]
jae 0x407c17
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 0x407c13
mov edi, dword [eax + 0x24]
test edi, edi
je 0x407c13
mov ebx, dword [esi + 0x40]
cmp ebx, dword [eax + 0x28]
jae 0x407c13
lea eax, [ebx + 1]
mov dword [esi + 0x40], eax
mov byte [edi + ebx], cl
test ebp, ebp
jne 0x407be0
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 0x408370
mov eax, dword [esp + 0x44]
sub edi, edx
add ebp, edx
test eax, eax
jne 0x407100
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
mov eax, dword [esp + 0x24]
mov dword [eax], 8
test dh, 2
je 0x407ff4
cmp ebx, 0xf
ja 0x407c94
test edi, edi
je 0x407100
mov ecx, ebx
jmp 0x407c7c
test edi, edi
je 0x407fd0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x407c74
mov ebx, ecx
mov ecx, dword [esp + 0x24]
movzx eax, word [ecx + 0x18]
cmp eax, esi
je 0x407ff0
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.header_crc_mismatch
mov dword [ecx], 0x1d
mov eax, 0x1d
jmp switch.0x00406d09
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
jmp 0x407c5a
cmp ebx, 0xf
ja 0x407d01
test edi, edi
je 0x407100
mov ecx, ebx
jmp 0x407ce9
test edi, edi
je 0x407fd0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x407ce1
mov ebx, ecx
mov edx, dword [esp + 0x24]
mov eax, esi
cmp al, 8
mov dword [edx + 0x10], esi
je 0x408609
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.unknown_compression_method
mov dword [edx], 0x1d
mov eax, 0x1d
jmp switch.0x00406d09
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 8]
test edx, edx
je 0x408270
cmp ebx, 0xf
ja 0x407d70
test edi, edi
je 0x408583
mov ecx, ebx
jmp 0x407d58
test edi, edi
je 0x407fd0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0xf
jbe 0x407d50
mov ebx, ecx
cmp esi, 0x8b1f
jne 0x407d81
test dl, 2
jne 0x40892c
mov eax, dword [esp + 0x24]
mov dword [eax + 0x10], 0
mov eax, dword [eax + 0x20]
test eax, eax
je 0x407d9a
mov dword [eax + 0x30], 0xffffffff
and edx, 1
je 0x4084da
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 0x4084da
mov eax, esi
and eax, 0xf
cmp eax, 8
je 0x408989
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.0x00406d09
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr esi, cl
cmp ebx, 0x1f
ja 0x407e40
test edi, edi
je 0x407100
mov ecx, ebx
jmp 0x407e28
test edi, edi
je 0x407fd0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x407e20
mov ebx, ecx
mov edx, esi
movzx eax, si
shr edx, 0x10
xor edx, 0xffff
cmp eax, edx
je 0x408637
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.0x00406d09
mov edx, dword [esp + 0x28]
test edx, edx
je 0x407100
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x30]
mov eax, dword [eax + 0x40]
mov byte [ecx], al
mov eax, edx
sub eax, 1
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
mov dword [eax], 0x14
lea eax, [ecx + 1]
mov dword [esp + 0x30], eax
mov eax, 0x14
jmp switch.0x00406d09
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 8]
test eax, eax
je 0x408260
cmp ebx, 0x1f
ja 0x407f00
test edi, edi
je 0x407100
mov ecx, ebx
jmp 0x407ee8
test edi, edi
je 0x407fd0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, 0x1f
jbe 0x407ee0
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 0x407f56
mov edx, dword [edx + 0x10]
mov dword [esp + 8], eax
test edx, edx
je 0x408828
mov edx, dword [esp + 0x30]
sub edx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 4], edx
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call fcn.00401b40
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x90]
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov ecx, dword [esp + 0x24]
mov eax, esi
mov ecx, dword [ecx + 0x10]
test ecx, ecx
jne 0x407f85
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 0x408247
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.0x00406d09
mov edx, 0x100
jmp 0x40744a
mov ebx, ebp
mov dword [esp + 0x3c], esi
mov ebp, edi
mov esi, ecx
mov edi, dword [esp + 0x24]
jmp 0x407350
sub eax, 0xffffff80
jmp 0x407448
xor ebx, ebx
xor esi, esi
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x40800f
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.00401b40
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.0x00406d09
mov eax, dword [esp + 0x90]
mov esi, dword [eax + 4]
test esi, esi
jne case.default.0x406d09
mov dword [esp + 0x34], 0
jmp 0x406caf
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.004014d0
jmp 0x407410
mov eax, 0xfffffffe
jmp 0x407325
mov eax, dword [esp + 0x24]
mov dword [eax], 0xb
mov eax, 0xb
jmp switch.0x00406d09
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
cmp ecx, dword [esp + 0x28]
jbe 0x4080d1
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x24]
sub edx, ecx
sub dword [esp + 0x28], ecx
mov dword [esp + 0x3c], ebx
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 0x4080f0
mov eax, dword [esp + 0x24]
mov dword [esp + 0x30], edx
mov ebx, dword [esp + 0x3c]
mov ecx, dword [eax + 0x40]
test ecx, ecx
je 0x408120
mov eax, dword [eax]
jmp 0x406d00
mov eax, dword [esp + 0x24]
mov dword [eax], 0x14
mov eax, 0x14
jmp switch.0x00406d09
mov dword [esp + 0x3c], ecx
jmp 0x40770e
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x30]
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0x28]
mov dword [eax], ebp
mov dword [eax + 4], edi
mov dword [eax + 0x10], edx
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.00406160
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 0x406d00
mov edx, dword [esp + 0x24]
mov dword [edx + 0x1bc4], 0xffffffff
jmp switch.0x00406d09
cmp ebx, edx
jae 0x4081ff
test edi, edi
je 0x407100
mov ecx, ebx
jmp 0x4081e8
test edi, edi
je 0x407fd0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add esi, eax
cmp ecx, edx
jb 0x4081e0
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 0x407129
mov edx, dword [esp + 0x28]
jmp 0x40751d
mov edx, eax
jmp 0x407513
mov ebx, dword [esp + 0x28]
mov eax, dword [edx + 8]
xor esi, esi
mov dword [esp + 0x2c], ebx
xor ebx, ebx
lea esi, [esi]
lea edi, [edi]
mov ecx, dword [esp + 0x24]
mov dword [ecx], 0x1b
jmp 0x407b17
mov eax, dword [esp + 0x24]
mov dword [eax], 0xc
mov eax, 0xc
jmp switch.0x00406d09
mov eax, dword [eax + 0x1bc0]
test eax, eax
je 0x406f1e
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.invalid_distance_too_far_back
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00406d09
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 0x408432
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.invalid_distance_code
mov dword [ecx], 0x1d
mov eax, 0x1d
jmp switch.0x00406d09
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 0x407581
mov eax, dword [esp + 0x24]
mov dword [eax], 0x10
mov eax, 0x10
jmp 0x406e3d
mov ebp, ebx
mov dword [esp + 0x3c], esi
mov ebx, edi
mov esi, ecx
mov edi, dword [esp + 0x24]
jmp 0x407350
mov dword [esp + 0x3c], ebx
mov edi, dword [esp + 0x24]
mov ebx, ebp
mov ebp, esi
mov esi, ecx
jmp 0x407350
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.00401b40
mov edx, dword [esp + 0x24]
mov dword [edx + 0x18], eax
mov edx, dword [esp + 0x3c]
jmp 0x407c39
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 0x408453
mov dword [ecx], 0x19
mov eax, 0x19
jmp switch.0x00406d09
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.00401b40
mov edx, dword [esp + 0x24]
mov dword [edx + 0x18], eax
mov edx, dword [esp + 0x3c]
jmp 0x407859
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.0x00406d09
mov edx, dword [esp + 0x24]
sub eax, ecx
add eax, dword [edx + 0x34]
mov dword [esp + 0x40], eax
jmp 0x406f43
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 0x406e87
test byte [esp + 0x3c], 0x20
je 0x408594
mov eax, dword [esp + 0x24]
mov dword [eax + 0x1bc4], 0xffffffff
mov dword [eax], 0xb
mov eax, 0xb
jmp switch.0x00406d09
mov dword [edi], 0x1e
mov eax, 0xfffffffc
jmp 0x407325
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.00401b40
mov edx, dword [ebx + 0x10]
mov dword [ebx + 0x18], eax
jmp 0x407909
mov eax, ebx
mov dword [esp + 0x3c], edi
mov ebx, ebp
mov edi, dword [esp + 0x24]
mov ebp, esi
mov esi, eax
jmp 0x407350
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.0x00406d09
cmp dword [esp + 0x94], 6
mov eax, dword [esp + 0x24]
mov dword [eax + 0x4c], 0x428fc0
mov dword [eax + 0x54], 9
mov dword [eax + 0x50], 0x428f40
mov dword [eax + 0x58], 5
mov dword [eax], 0x13
je 0x408ac1
mov eax, 0x13
jmp 0x406e3d
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 0x406e3d
mov eax, dword [esp + 0x3c]
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.00401b40
mov ecx, dword [esp + 0x24]
mov dword [ecx + 0x18], eax
jmp 0x407777
mov dword [esp + 0x3c], esi
mov esi, ebx
mov ebx, ebp
mov ebp, edi
mov edi, eax
jmp 0x407350
test byte [esp + 0x3c], 0x40
je 0x4087ba
mov eax, dword [esp + 0x90]
mov dword [eax + 0x18], str.invalid_literal_length_code
mov eax, dword [esp + 0x24]
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00406d09
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.00401b40
mov dword [ebx + 0x18], eax
jmp 0x4074da
test esi, 0xe000
je 0x4087d3
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.0x00406d09
cmp dword [esp + 0x94], 6
mov ebx, dword [esp + 0x24]
mov dword [ebx + 0x40], eax
mov dword [ebx], 0xe
je 0x408aaa
xor ebx, ebx
xor esi, esi
jmp 0x4074f7
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.00401b40
mov ecx, ebx
mov dword [ebx + 0x18], eax
xor ebx, ebx
mov edx, dword [ecx + 0x10]
jmp 0x40730d
lea edx, [eax + 2]
cmp ebx, edx
jae 0x4086da
test edi, edi
je 0x408738
mov ecx, ebx
mov ebp, dword [esp + 0x44]
mov ebx, eax
mov eax, edx
jmp 0x4086bd
test edi, edi
je 0x407fd0
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add esi, edx
cmp ecx, eax
jb 0x4086b5
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 0x408adc
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 0x407691
mov word [esp + 0x54], cx
movzx ecx, byte [esp + 0x48]
sub ebx, dword [esp + 0x44]
shr esi, cl
jmp 0x4083a2
mov ebx, dword [esp + 0x3c]
mov ebp, edi
mov dword [esp + 0x3c], esi
mov edi, dword [esp + 0x24]
mov esi, ecx
jmp 0x407350
mov dword [esp + 0x3c], esi
mov ebp, edi
mov esi, ebx
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x44]
jmp 0x407350
lea ecx, [eax + 3]
cmp ebx, ecx
mov edx, ecx
jae 0x408795
test edi, edi
je 0x408738
mov ecx, ebx
mov ebp, dword [esp + 0x44]
mov ebx, eax
mov eax, edx
jmp 0x408778
test edi, edi
je 0x407fd0
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add esi, edx
cmp ecx, eax
jb 0x408770
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 0x407691
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x24]
and edx, 0xf
mov dword [eax], 0x15
mov dword [eax + 0x48], edx
jmp 0x40711a
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x4087e8
mov edx, esi
shr edx, 8
and edx, 1
mov dword [eax], edx
test esi, 0x200
jne 0x4088df
mov eax, dword [esp + 0x24]
xor esi, esi
xor ebx, ebx
mov dword [eax], 2
jmp 0x40748a
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 0x407350
mov ecx, dword [esp + 0x30]
sub ecx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 4], ecx
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call fcn.004014d0
jmp 0x407f45
mov eax, dword [esp + 0x24]
mov dword [esp + 0x48], 0
mov dword [eax + 0x68], 0
mov dword [eax], 0x12
jmp 0x40756b
mov edx, dword [esp + 0x24]
mov ebp, dword [esp + 0x44]
mov eax, dword [edx]
cmp eax, 0x1d
je switch.0x00406d09
cmp word [edx + 0x270], 0
mov eax, edx
jne 0x4089fd
mov edx, dword [esp + 0x90]
mov dword [edx + 0x18], str.invalid_code____missing_end_of_block
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00406d09
mov dword [esp + 0x3c], esi
mov ecx, dword [esp + 0x30]
mov esi, ebx
mov edx, dword [esp + 0x28]
mov ebx, ebp
mov ebp, edi
mov edi, eax
mov eax, dword [esp + 0x90]
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], edx
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 0x407325
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.00401b40
mov dword [ebx + 0x18], eax
jmp 0x4087f4
mov ebx, ebp
xor esi, esi
mov ebp, edi
mov dword [esp + 0x3c], 0
mov edi, dword [esp + 0x24]
jmp 0x408815
mov dword [esp + 8], 0
mov dword [esp + 4], 0
xor si, si
mov dword [esp], 0
call fcn.00401b40
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.00401b40
mov dword [ebx], 1
mov dword [ebx + 0x18], eax
mov eax, 1
xor ebx, ebx
jmp switch.0x00406d09
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 0x408a7d
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.004014d0
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 0x406d00
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.00409110
test eax, eax
mov dword [esp + 0x38], eax
mov edx, dword [esp + 0x3c]
je 0x408b02
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.0x00406d09
cmp ecx, eax
jbe 0x4089aa
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.0x00406d09
mov ebx, ebp
xor esi, esi
mov ebp, edi
mov dword [esp + 0x3c], 0
mov edi, dword [esp + 0x24]
jmp 0x407350
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 0x407350
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.0x00406d09
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.00409110
test eax, eax
mov dword [esp + 0x38], eax
je 0x406f59
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.0x00406d09