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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xac
mov eax, dword [esp + 0xc0]
test eax, eax
je case.default.0x668180
mov ebx, dword [esp + 0xc0]
mov ebp, dword [ebx + 0x1c]
test ebp, ebp
je case.default.0x668180
mov esi, dword [ebx + 0xc]
test esi, esi
mov dword [esp + 0x50], esi
je case.default.0x668180
mov esi, dword [ebx]
test esi, esi
je 0x669275
mov ebx, dword [ebx + 4]
mov dword [esp + 0x58], ebx
mov eax, dword [ebp]
cmp eax, 0xb
je 0x6682c0
mov ebx, dword [esp + 0xc0]
mov ecx, dword [esp + 0xc4]
mov edx, dword [ebp + 0x38]
mov edi, dword [esp + 0x58]
mov ebx, dword [ebx + 0x10]
sub ecx, 5
mov dword [esp + 0x64], ecx
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x4c], ebx
mov ecx, dword [esp + 0x4c]
mov ebx, dword [ebp + 0x3c]
mov dword [esp + 0x54], 0
mov dword [esp + 0x5c], ecx
lea ecx, [ebp + 0x530]
mov dword [esp + 0x68], ecx
lea ecx, [ebp + 0x2f0]
mov ebp, edx
mov dword [esp + 0x6c], ecx
cmp eax, 0x1e
jbe switch.0x00668180
mov dword [esp + 0x54], 0xfffffffe
mov eax, dword [esp + 0x54]
add esp, 0xac
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [esp + 0x3c]
xor eax, eax
mov ecx, dword [edx + 8]
test ecx, ecx
je 0x669513
cmp ebx, 0x1f
ja 0x6680d4
test edi, edi
je 0x669210
mov ecx, ebx
jmp 0x6680bd
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x6680b5
mov ebx, ecx
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0xc0]
mov edx, dword [esp + 0x3c]
sub eax, dword [esp + 0x4c]
add dword [ecx + 0x14], eax
add dword [edx + 0x1c], eax
test eax, eax
je 0x668126
mov ecx, dword [edx + 0x10]
mov dword [esp + 8], eax
test ecx, ecx
je 0x669d90
mov ecx, dword [esp + 0x50]
sub ecx, eax
mov dword [esp + 4], ecx
mov eax, dword [edx + 0x18]
mov dword [esp], eax
call fcn.0066df80
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0xc0]
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov edx, dword [edx + 0x10]
mov eax, ebp
test edx, edx
jne 0x668152
mov edx, ebp
mov ecx, ebp
shl edx, 0x18
and eax, 0xff00
shr ecx, 0x18
add ecx, edx
mov edx, ebp
shr edx, 8
and edx, 0xff00
shl eax, 8
add edx, ecx
add eax, edx
mov ecx, dword [esp + 0x3c]
cmp eax, dword [ecx + 0x18]
je 0x669500
mov eax, dword [esp + 0xc0]
mov dword [eax + 0x18], str.incorrect_data_check
mov eax, 0x1d
mov dword [ecx], 0x1d
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x5c], ecx
jmp dword [eax*4 + 0x776130]
cmp ebx, 0x1f
ja 0x6681b5
test edi, edi
je 0x669210
mov ecx, ebx
jmp 0x6681a0
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x668198
mov edx, ebp
mov eax, ebp
mov ebx, dword [esp + 0x3c]
shr eax, 0x18
shl edx, 0x18
add edx, eax
mov eax, ebp
shr eax, 8
and ebp, 0xff00
and eax, 0xff00
shl ebp, 8
add eax, edx
add eax, ebp
xor ebp, ebp
mov dword [ebx + 0x18], eax
mov ebx, dword [esp + 0xc0]
mov dword [ebx + 0x30], eax
mov ebx, dword [esp + 0x3c]
mov dword [ebx], 0xa
xor ebx, ebx
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x669dd0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0066e280
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0xc0]
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov dword [edx], 0xb
cmp dword [esp + 0x64], 1
jbe 0x669210
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 4]
test edx, edx
jne 0x6682d0
cmp ebx, 2
ja 0x668272
test edi, edi
je 0x669d39
movzx eax, byte [esi]
mov ecx, ebx
sub edi, 1
add esi, 1
add ebx, 8
shl eax, cl
add ebp, eax
mov edx, dword [esp + 0x3c]
mov eax, ebp
and eax, 1
mov dword [edx + 4], eax
mov edx, ebp
shr edx, 1
mov eax, edx
and eax, 3
cmp eax, 2
je 0x6695aa
cmp eax, 3
je 0x669a06
cmp eax, 1
je 0x6699c8
mov ecx, dword [esp + 0x3c]
mov eax, 0xd
mov dword [ecx], 0xd
mov ebp, edx
sub ebx, 3
shr ebp, 2
jmp 0x668073
mov dword [ebp], 0xc
mov al, 0xc
jmp 0x668023
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
mov dword [eax], 0x1a
shr ebp, cl
mov eax, 0x1a
jmp switch.0x00668180
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0x48]
test edx, edx
je 0x668353
cmp ebx, edx
jae 0x66832e
test edi, edi
je 0x669210
mov ecx, ebx
jmp 0x668318
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x668310
mov ebx, ecx
mov ecx, edx
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x3c]
sub ebx, edx
sub eax, 1
and eax, ebp
add dword [ecx + 0x44], eax
mov ecx, edx
mov eax, dword [esp + 0x3c]
shr ebp, cl
add dword [eax + 0x1bc4], edx
mov edx, dword [esp + 0x3c]
mov dword [edx], 0x18
mov ecx, dword [esp + 0x4c]
test ecx, ecx
je 0x669210
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x5c]
sub edx, dword [esp + 0x4c]
mov eax, dword [ecx + 0x44]
cmp edx, eax
jae 0x6692f4
sub eax, edx
cmp eax, dword [ecx + 0x2c]
ja 0x669530
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0x30]
cmp eax, edx
jbe 0x6696f0
sub eax, edx
mov edx, dword [ecx + 0x28]
sub edx, eax
add edx, dword [ecx + 0x34]
mov ecx, dword [esp + 0x3c]
mov ecx, dword [ecx + 0x40]
cmp eax, ecx
mov dword [esp + 0x40], ecx
cmova eax, ecx
jmp 0x669303
mov eax, dword [esp + 0x3c]
cmp dword [esp + 0xc4], 6
mov dword [eax], 0x13
je 0x669210
mov edx, dword [esp + 0x3c]
mov dword [edx], 0x14
cmp edi, 5
ja 0x669607
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x4c]
mov dword [ecx + 0x1bc4], 0
mov ecx, dword [ecx + 0x54]
mov dword [esp + 0x44], eax
mov eax, 1
mov edx, dword [esp + 0x44]
shl eax, cl
sub eax, 1
mov dword [esp + 0x48], eax
and eax, ebp
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [esp + 0x40], dl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x70], ax
movzx eax, dl
cmp ebx, eax
mov dword [esp + 0x60], eax
jae 0x668486
test edi, edi
je 0x669210
mov ecx, ebx
jmp 0x668448
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
mov edx, dword [esp + 0x44]
shl eax, cl
add ecx, 8
add ebp, eax
mov eax, dword [esp + 0x48]
and eax, ebp
lea eax, [edx + eax*4]
movzx ebx, byte [eax]
movzx edx, byte [eax + 1]
mov byte [esp + 0x40], bl
movzx ebx, word [eax + 2]
movzx eax, dl
cmp eax, ecx
ja 0x668440
mov word [esp + 0x70], bx
mov ebx, ecx
mov dword [esp + 0x60], eax
cmp byte [esp + 0x40], 0
jne 0x669710
movzx eax, dl
mov ecx, edx
mov edx, dword [esp + 0x3c]
sub ebx, dword [esp + 0x60]
shr ebp, cl
mov dword [edx + 0x1bc4], eax
movzx eax, word [esp + 0x70]
mov dword [edx + 0x40], eax
mov ecx, dword [esp + 0x3c]
mov eax, 0x19
mov dword [ecx], 0x19
jmp switch.0x00668180
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x48]
test edx, edx
jne 0x669497
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 0x40]
mov dword [edx + 0x1bc8], eax
mov dword [edx], 0x16
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
mov ecx, dword [ecx + 0x50]
mov dword [esp + 0x40], ecx
mov ecx, dword [eax + 0x58]
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x40]
sub eax, 1
mov dword [esp + 0x48], eax
and eax, ebp
lea edx, [ecx + eax*4]
movzx eax, byte [edx]
mov byte [esp + 0x44], al
movzx eax, byte [edx + 1]
movzx edx, word [edx + 2]
mov word [esp + 0x60], dx
movzx edx, al
cmp ebx, edx
jae 0x669c49
test edi, edi
je 0x669210
mov ecx, ebx
jmp 0x668540
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
mov ebx, dword [esp + 0x40]
shl eax, cl
add ecx, 8
add ebp, eax
mov eax, dword [esp + 0x48]
and eax, ebp
lea edx, [ebx + eax*4]
movzx eax, byte [edx]
movzx ebx, word [edx + 2]
mov byte [esp + 0x44], al
movzx eax, byte [edx + 1]
movzx edx, al
cmp edx, ecx
ja 0x668538
mov word [esp + 0x60], bx
mov ebx, ecx
mov dword [esp + 0x48], edx
movzx ecx, byte [esp + 0x44]
mov dword [esp + 0x74], ecx
and ecx, 0xf0
jne 0x669560
movzx ecx, word [esp + 0x60]
mov dword [esp + 0x44], 1
mov dword [esp + 0x70], ecx
movzx ecx, al
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x74]
add ecx, dword [esp + 0x48]
shl dword [esp + 0x44], cl
mov ecx, dword [esp + 0x44]
sub ecx, 1
mov dword [esp + 0x74], ecx
and ecx, ebp
mov dword [esp + 0x44], ecx
mov ecx, eax
shr dword [esp + 0x44], cl
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x40]
add eax, dword [esp + 0x70]
lea eax, [ecx + eax*4]
movzx ecx, byte [eax]
mov byte [esp + 0x44], cl
movzx ecx, byte [eax + 1]
movzx eax, word [eax + 2]
mov byte [esp + 0x78], cl
mov word [esp + 0x60], ax
movzx eax, cl
mov ecx, dword [esp + 0x48]
add ecx, eax
cmp ebx, ecx
jae 0x66866b
test edi, edi
je 0x669210
mov dword [esp + 0x7c], edx
jmp 0x668618
test edi, edi
je 0x669210
movzx eax, byte [esi]
mov ecx, ebx
add ebx, 8
mov edx, dword [esp + 0x40]
sub edi, 1
add esi, 1
shl eax, cl
movzx ecx, byte [esp + 0x48]
add ebp, eax
mov eax, dword [esp + 0x74]
and eax, ebp
shr eax, cl
mov ecx, dword [esp + 0x48]
add eax, dword [esp + 0x70]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [esp + 0x44], dl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x60], ax
movzx eax, dl
add ecx, eax
cmp ecx, ebx
ja 0x668610
mov byte [esp + 0x78], dl
mov edx, dword [esp + 0x7c]
movzx ecx, byte [esp + 0x48]
sub ebx, edx
mov edx, dword [esp + 0x48]
shr ebp, cl
mov ecx, dword [esp + 0x3c]
add edx, dword [ecx + 0x1bc4]
movzx ecx, byte [esp + 0x78]
mov dword [esp + 0x48], ecx
movzx ecx, byte [esp + 0x44]
mov dword [esp + 0x74], ecx
jmp 0x66956d
mov dword [ebp], 0x1e
mov dword [esp + 0x54], 0xfffffffc
jmp 0x668084
cmp ebx, 0x1f
ja 0x6686df
test edi, edi
je 0x669210
mov ecx, ebx
nop
jmp 0x6686ca
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x6686c2
mov ebx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x6686f1
mov ebx, dword [esp + 0x3c]
mov dword [eax + 4], ebp
test byte [ebx + 0x11], 2
jne 0x669a7e
mov dword [ebx], 3
xor ebp, ebp
xor ebx, ebx
jmp 0x66870c
cmp ebx, 0xf
ja 0x668735
test edi, edi
je 0x669210
mov ecx, ebx
jmp 0x668720
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x668718
mov ebx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x668757
mov edx, ebp
mov ebx, dword [esp + 0x3c]
and edx, 0xff
mov dword [eax + 8], edx
mov edx, ebp
shr edx, 8
mov dword [eax + 0xc], edx
mov edx, dword [ebx + 0x10]
test dh, 2
jne 0x669986
mov dword [ebx], 4
xor ebp, ebp
xor ebx, ebx
test dh, 4
mov dword [esp + 0x40], edx
je 0x6695c0
cmp ebx, 0xf
ja 0x6687ad
test edi, edi
je 0x669210
mov ecx, ebx
jmp 0x668798
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x668790
mov ebx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x20]
mov dword [ebx + 0x40], ebp
test eax, eax
je 0x6687be
mov dword [eax + 0x14], ebp
test dh, 2
jne 0x669b4d
mov ecx, edx
xor ebx, ebx
mov dword [esp + 0x40], edx
and ecx, 0x400
xor ebp, ebp
mov eax, dword [esp + 0x3c]
mov dword [eax], 5
jmp 0x668be7
mov ecx, ebx
and ebx, 0xfffffff8
and ecx, 7
shr ebp, cl
cmp ebx, 0x1f
ja 0x668820
test edi, edi
je 0x669210
mov ecx, ebx
jmp 0x668809
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x668801
mov ebx, ecx
mov eax, ebp
mov edx, ebp
shr eax, 0x10
and edx, 0xffff
xor eax, 0xffff
cmp edx, eax
je 0x669b03
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x3c]
mov dword [eax + 0x18], str.invalid_stored_block_lengths
mov eax, 0x1d
mov dword [edx], 0x1d
jmp switch.0x00668180
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
mov edx, dword [edx + 0x68]
mov dword [esp + 0x60], edx
mov ecx, dword [ecx + 0x60]
mov dword [esp + 0x78], ecx
add ecx, dword [eax + 0x64]
mov eax, dword [esp + 0x60]
mov dword [esp + 0x74], ecx
cmp dword [esp + 0x74], eax
mov edx, dword [esp + 0x3c]
jbe 0x669e01
mov eax, dword [esp + 0x3c]
mov edx, dword [edx + 0x4c]
mov ecx, dword [eax + 0x54]
mov dword [esp + 0x44], edx
mov edx, 1
shl edx, cl
mov ecx, edx
mov edx, dword [esp + 0x44]
sub ecx, 1
mov eax, ecx
and eax, ebp
lea eax, [edx + eax*4]
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov dword [esp + 0x40], ecx
mov word [esp + 0x70], ax
movzx eax, dl
cmp ebx, eax
mov dword [esp + 0x48], eax
jae 0x66891f
test edi, edi
je 0x669210
mov ecx, ebx
jmp 0x6688e8
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
mov edx, dword [esp + 0x44]
shl eax, cl
add ecx, 8
add ebp, eax
mov eax, dword [esp + 0x40]
and eax, ebp
lea eax, [edx + eax*4]
movzx edx, byte [eax + 1]
movzx ebx, word [eax + 2]
movzx eax, dl
cmp eax, ecx
ja 0x6688e0
mov word [esp + 0x70], bx
mov ebx, ecx
mov dword [esp + 0x48], eax
cmp word [esp + 0x70], 0xf
ja 0x669767
cmp ebx, dword [esp + 0x48]
jae 0x668963
test edi, edi
je 0x669210
mov ecx, ebx
mov ebx, edx
mov edx, dword [esp + 0x48]
jmp 0x66894b
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x668943
mov edx, ebx
mov ebx, ecx
mov ecx, edx
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x3c]
shr ebp, cl
movzx ecx, word [esp + 0x70]
sub ebx, dword [esp + 0x48]
mov word [edx + eax*2 + 0x70], cx
add eax, 1
mov dword [esp + 0x60], eax
mov dword [edx + 0x68], eax
jmp 0x668885
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0x10]
test dh, 2
je 0x668d7d
cmp ebx, 0xf
ja 0x6689d1
test edi, edi
je 0x669210
mov ecx, ebx
nop
jmp 0x6689ba
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x6689b2
mov ebx, ecx
mov ecx, dword [esp + 0x3c]
movzx eax, word [ecx + 0x18]
cmp eax, ebp
je 0x669700
mov eax, dword [esp + 0xc0]
mov dword [eax + 0x18], str.header_crc_mismatch
mov eax, 0x1d
mov dword [ecx], 0x1d
jmp switch.0x00668180
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x669210
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x50]
sub dword [esp + 0x4c], 1
mov eax, dword [edx + 0x40]
mov byte [ecx], al
add ecx, 1
mov eax, 0x14
mov dword [esp + 0x50], ecx
mov dword [edx], 0x14
jmp switch.0x00668180
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 8]
test eax, eax
je 0x669d76
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x669d76
cmp ebx, 0x1f
ja 0x668a83
test edi, edi
je 0x669c40
mov ecx, ebx
jmp 0x668a6c
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0x1f
jbe 0x668a64
mov ebx, ecx
mov eax, dword [esp + 0x3c]
cmp dword [eax + 0x1c], ebp
je 0x669e75
mov edx, dword [esp + 0xc0]
mov dword [edx + 0x18], str.incorrect_length_check
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00668180
mov edx, ebp
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x54], 1
nop
mov ecx, dword [esp + 0xc0]
mov eax, dword [esp + 0x50]
mov dword [ecx], esi
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x4c]
mov dword [ecx + 4], edi
mov dword [ecx + 0x10], eax
mov dword [ebp + 0x3c], ebx
mov ebx, dword [ebp + 0x28]
mov dword [ebp + 0x38], edx
test ebx, ebx
jne 0x668af3
cmp dword [ebp], 0x19
ja 0x668b0b
cmp dword [esp + 0x5c], eax
je 0x668b0b
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0xc0]
call fcn.006679b0
test eax, eax
jne 0x668699
mov esi, dword [esp + 0xc0]
mov eax, dword [esp + 0xc0]
mov ebx, dword [esp + 0x58]
sub ebx, dword [esi + 4]
mov esi, dword [esp + 0x5c]
sub esi, dword [eax + 0x10]
add dword [eax + 8], ebx
add dword [eax + 0x14], esi
add dword [ebp + 0x1c], esi
test esi, esi
je 0x668b6b
mov ecx, dword [ebp + 8]
test ecx, ecx
je 0x668b6b
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], esi
test edx, edx
je 0x669240
mov eax, dword [eax + 0xc]
sub eax, esi
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x18]
mov dword [esp], eax
call fcn.0066df80
mov edx, dword [esp + 0xc0]
mov dword [ebp + 0x18], eax
mov dword [edx + 0x30], eax
cmp dword [ebp + 4], 1
mov edx, dword [ebp]
sbb eax, eax
not eax
and eax, 0x40
add eax, dword [ebp + 0x3c]
cmp edx, 0xb
je 0x669230
cmp edx, 0xe
jne 0x669260
mov edx, 0x100
mov ecx, dword [esp + 0xc0]
add eax, edx
or esi, ebx
mov dword [ecx + 0x2c], eax
je 0x668bb1
cmp dword [esp + 0xc4], 4
jne 0x668084
mov eax, dword [esp + 0x54]
test eax, eax
mov eax, 0xfffffffb
cmovne eax, dword [esp + 0x54]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x54]
add esp, 0xac
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
mov ecx, edx
mov dword [esp + 0x40], edx
and ecx, 0x400
test ecx, ecx
je 0x668c10
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 0x40]
cmp edi, eax
mov edx, eax
cmovbe edx, edi
test edx, edx
jne 0x669400
test eax, eax
jne 0x669210
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
mov ecx, dword [esp + 0x3c]
mov dword [ecx + 0x40], 0
mov dword [ecx], 6
test dh, 8
je 0x6692c0
test edi, edi
je 0x669210
xor edx, edx
mov dword [esp + 0x60], esi
mov eax, edx
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], ebp
mov dword [esp + 0x48], ebx
mov esi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x60]
mov edx, dword [esi + 0x20]
movzx ecx, byte [ebx + eax]
add eax, 1
test edx, edx
movzx ebp, cl
je 0x668c77
mov edi, dword [edx + 0x1c]
test edi, edi
je 0x668c77
mov ebx, dword [esi + 0x40]
cmp ebx, dword [edx + 0x20]
jae 0x668c77
mov byte [edi + ebx], cl
add ebx, 1
mov dword [esi + 0x40], ebx
test ebp, ebp
je 0x668c81
cmp eax, dword [esp + 0x40]
jb 0x668c46
mov edx, eax
mov eax, dword [esp + 0x3c]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x60]
mov dword [esp + 0x40], ebp
mov ebx, dword [esp + 0x48]
test byte [eax + 0x11], 2
mov ebp, dword [esp + 0x44]
jne 0x6696a0
mov eax, dword [esp + 0x40]
sub edi, edx
add esi, edx
test eax, eax
jne 0x669210
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
mov eax, dword [esp + 0x3c]
mov dword [eax + 0x40], 0
mov dword [eax], 7
test dh, 0x10
je 0x6692a0
test edi, edi
je 0x669210
xor edx, edx
mov dword [esp + 0x60], esi
mov eax, edx
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], ebp
mov dword [esp + 0x48], ebx
mov edx, dword [esp + 0x60]
mov ebx, dword [esp + 0x3c]
movzx ecx, byte [edx + eax]
add eax, 1
mov edx, dword [ebx + 0x20]
movzx ebp, cl
test edx, edx
je 0x668d25
mov edi, dword [edx + 0x24]
test edi, edi
je 0x668d25
mov esi, ebx
mov ebx, dword [ebx + 0x40]
cmp ebx, dword [edx + 0x28]
jae 0x668d25
mov byte [edi + ebx], cl
add ebx, 1
mov dword [esi + 0x40], ebx
test ebp, ebp
je 0x668d2f
cmp eax, dword [esp + 0x40]
jb 0x668cf2
mov edx, eax
mov eax, dword [esp + 0x3c]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x60]
mov dword [esp + 0x40], ebp
mov ebx, dword [esp + 0x48]
test byte [eax + 0x11], 2
mov ebp, dword [esp + 0x44]
jne 0x6695e0
mov eax, dword [esp + 0x40]
sub edi, edx
add esi, edx
test eax, eax
jne 0x669210
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
mov eax, dword [esp + 0x3c]
test dh, 2
mov dword [eax], 8
jne 0x6689a0
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x668d98
sar edx, 9
and edx, 1
mov dword [eax + 0x2c], edx
mov dword [eax + 0x30], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0066df80
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0xc0]
mov dword [edx + 0x18], eax
mov dword [ecx + 0x30], eax
mov eax, 0xb
mov dword [edx], 0xb
jmp switch.0x00668180
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x40]
mov dword [eax], 0xf
test edx, edx
je 0x6692e0
cmp edi, edx
cmovbe edx, edi
cmp edx, dword [esp + 0x4c]
cmova edx, dword [esp + 0x4c]
test edx, edx
je 0x669210
mov ecx, dword [esp + 0x50]
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov dword [esp + 0x38], edx
mov dword [esp], ecx
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
sub dword [esp + 0x4c], edx
add dword [esp + 0x50], edx
sub edi, edx
add esi, edx
sub dword [eax + 0x40], edx
mov eax, dword [eax]
jmp 0x668073
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0x40]
jmp 0x668de2
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0x10]
jmp 0x668c21
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
jmp 0x668ccd
mov edx, ebp
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x54], 0xfffffffd
jmp 0x668ac0
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 8]
test edx, edx
je 0x669520
cmp ebx, 0xf
ja 0x668eb2
test edi, edi
je 0x669c40
mov ecx, ebx
jmp 0x668e9b
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x668e93
mov ebx, ecx
cmp ebp, 0x8b1f
je 0x669cca
mov eax, dword [esp + 0x3c]
mov dword [eax + 0x10], 0
mov eax, dword [eax + 0x20]
test eax, eax
je 0x668ed7
mov dword [eax + 0x30], 0xffffffff
and edx, 1
je 0x669b2b
mov ecx, ebp
mov eax, ebp
shl ecx, 8
mov edx, 0x8421085
shr eax, 8
and ecx, 0xffff
add ecx, eax
mov eax, ecx
mul edx
mov eax, ecx
sub eax, edx
shr eax, 1
add edx, eax
shr edx, 4
mov eax, edx
shl eax, 5
sub eax, edx
cmp ecx, eax
jne 0x669b2b
mov eax, ebp
and eax, 0xf
cmp eax, 8
je 0x669e80
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x3c]
mov dword [eax + 0x18], str.unknown_compression_method
mov eax, 0x1d
mov dword [edx], 0x1d
jmp switch.0x00668180
cmp ebx, 0xf
ja 0x668f75
test edi, edi
je 0x669210
mov ecx, ebx
jmp 0x668f5e
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xf
jbe 0x668f56
mov ebx, ecx
mov eax, dword [esp + 0x3c]
mov edx, ebp
cmp dl, 8
mov dword [eax + 0x10], ebp
je 0x669ad5
mov ecx, dword [esp + 0xc0]
mov dword [ecx + 0x18], str.unknown_compression_method
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00668180
cmp ebx, 0xd
ja 0x668fd5
test edi, edi
je 0x669210
mov ecx, ebx
jmp 0x668fbe
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, 0xd
jbe 0x668fb6
mov ebx, ecx
mov edx, dword [esp + 0x3c]
mov ecx, ebp
mov eax, ebp
shr ecx, 5
and eax, 0x1f
and ecx, 0x1f
add eax, 0x101
add ecx, 1
sub ebx, 0xe
mov dword [edx + 0x64], ecx
mov dword [edx + 0x60], eax
mov edx, ebp
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x3c]
shr edx, 0xa
and edx, 0xf
add edx, 4
shr ebp, 0xe
cmp eax, 0x11e
mov dword [esp + 0x40], edx
mov dword [ecx + 0x5c], edx
ja 0x6696c7
cmp dword [esp + 0x44], 0x1e
ja 0x6696c7
mov ecx, dword [esp + 0x3c]
xor edx, edx
mov dword [esp + 0x48], edx
mov dword [ecx + 0x68], 0
mov dword [ecx], 0x11
mov ecx, ebx
jmp 0x669061
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
mov ecx, dword [ecx + 0x5c]
mov edx, dword [eax + 0x68]
mov dword [esp + 0x40], ecx
cmp ecx, edx
jbe 0x6690b6
mov ecx, ebx
mov dword [esp + 0x48], edx
cmp ecx, 2
ja 0x66907e
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
mov ebx, dword [esp + 0x48]
mov eax, ebp
sub ecx, 3
mov edx, dword [esp + 0x3c]
and eax, 7
add dword [esp + 0x48], 1
shr ebp, 3
movzx ebx, word [ebx + ebx + 0x776a40]
mov word [edx + ebx*2 + 0x70], ax
mov ebx, dword [esp + 0x48]
mov eax, dword [esp + 0x40]
mov dword [edx + 0x68], ebx
cmp ebx, eax
jb 0x669061
mov edx, ebx
mov ebx, ecx
cmp edx, 0x12
ja 0x6690e5
mov ecx, dword [esp + 0x3c]
lea eax, [edx + edx + 0x776a40]
movzx edx, word [eax]
add eax, 2
cmp eax, 0x776a66
mov word [ecx + edx*2 + 0x70], 0
jne 0x6690c6
mov edx, dword [esp + 0x3c]
mov dword [edx + 0x68], 0x13
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x6c]
mov dword [ecx + 0x54], 7
mov dword [ecx + 0x6c], eax
mov dword [ecx + 0x4c], eax
mov eax, ecx
add eax, 0x54
mov dword [esp + 0x10], eax
add eax, 0x18
mov dword [esp + 0xc], eax
add eax, 4
mov dword [esp + 0x14], edx
mov dword [esp + 8], 0x13
mov dword [esp + 4], eax
mov dword [esp], 0
call fcn.0066e690
test eax, eax
mov dword [esp + 0x54], eax
je 0x669dae
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0xc0]
mov dword [ecx + 0x18], str.invalid_code_lengths_set
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00668180
movzx eax, word [esp + 0x70]
mov dword [esp + 0x70], eax
movzx eax, dl
add ecx, eax
mov dword [esp + 0x48], eax
mov eax, 1
shl eax, cl
mov ecx, edx
mov edx, dword [esp + 0x44]
sub eax, 1
mov dword [esp + 0x74], eax
and eax, ebp
shr eax, cl
add eax, dword [esp + 0x70]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
mov byte [esp + 0x40], dl
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov byte [esp + 0x7c], dl
mov word [esp + 0x78], ax
movzx eax, dl
mov edx, dword [esp + 0x48]
add edx, eax
cmp ebx, edx
jb 0x669205
jmp 0x669c03
movzx eax, byte [esi]
mov ecx, ebx
add ebx, 8
mov edx, dword [esp + 0x44]
sub edi, 1
add esi, 1
shl eax, cl
movzx ecx, byte [esp + 0x48]
add ebp, eax
mov eax, dword [esp + 0x74]
and eax, ebp
shr eax, cl
add eax, dword [esp + 0x70]
lea eax, [edx + eax*4]
movzx edx, byte [eax]
movzx ecx, byte [eax + 1]
movzx eax, word [eax + 2]
mov byte [esp + 0x40], dl
mov edx, dword [esp + 0x48]
mov word [esp + 0x78], ax
movzx eax, cl
add edx, eax
cmp edx, ebx
jbe 0x669bff
test edi, edi
jne 0x6691b6
lea esi, [esi]
mov edx, ebp
mov ebp, dword [esp + 0x3c]
jmp 0x668ac0
mov edx, ebp
mov ebx, ecx
mov ebp, dword [esp + 0x3c]
jmp 0x668ac0
sub eax, 0xffffff80
xor edx, edx
jmp 0x668b93
mov ecx, dword [esp + 0xc0]
mov eax, dword [ecx + 0xc]
sub eax, esi
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x18]
mov dword [esp], eax
call fcn.0066e280
jmp 0x668b5e
cmp edx, 0x13
je 0x668b8e
xor edx, edx
nop
lea esi, [esi]
jmp 0x668b93
mov ebx, dword [esp + 0xc0]
mov dword [esp + 0x54], 0xfffffffe
mov eax, dword [ebx + 4]
test eax, eax
jne 0x668084
mov dword [esp + 0x58], 0
jmp 0x668017
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x668d6a
mov dword [eax + 0x24], 0
jmp 0x668d6a
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x668cbc
mov dword [eax + 0x1c], 0
jmp 0x668cbc
mov ecx, dword [esp + 0x3c]
mov eax, 0xb
mov dword [ecx], 0xb
jmp switch.0x00668180
mov edx, dword [esp + 0x50]
sub edx, eax
mov eax, dword [ecx + 0x40]
mov dword [esp + 0x40], eax
mov ecx, eax
cmp eax, dword [esp + 0x4c]
cmova eax, dword [esp + 0x4c]
sub dword [esp + 0x4c], eax
sub ecx, eax
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x3c]
mov dword [eax + 0x40], ecx
mov ecx, dword [esp + 0x44]
shr ecx, 2
mov dword [esp + 0x40], ecx
shl ecx, 2
test ecx, ecx
mov dword [esp + 0x48], ecx
je 0x66a04e
mov eax, dword [esp + 0x50]
add eax, 4
cmp edx, eax
seta cl
lea eax, [edx + 4]
cmp dword [esp + 0x50], eax
seta al
or ecx, eax
mov eax, dword [esp + 0x50]
cmp dword [esp + 0x44], 9
seta byte [esp + 0x60]
or eax, edx
test al, 3
sete al
and byte [esp + 0x60], al
test byte [esp + 0x60], cl
je 0x66a04e
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x50]
xor eax, eax
lea esi, [esi]
mov ecx, dword [edx + eax*4]
mov dword [esi + eax*4], ecx
add eax, 1
cmp eax, dword [esp + 0x40]
jb 0x669380
mov eax, dword [esp + 0x44]
sub eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x50]
add ecx, dword [esp + 0x48]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x48]
add edx, dword [esp + 0x48]
cmp dword [esp + 0x44], eax
mov esi, dword [esp + 0x60]
je 0x6693d4
mov dword [esp + 0x48], esi
xor eax, eax
mov esi, edx
lea esi, [esi]
movzx edx, byte [esi + eax]
mov byte [ecx + eax], dl
add eax, 1
cmp eax, dword [esp + 0x40]
jne 0x6693c0
mov esi, dword [esp + 0x48]
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x44]
add dword [esp + 0x50], eax
mov eax, dword [edx + 0x40]
test eax, eax
je 0x6693f0
mov eax, dword [edx]
jmp 0x668073
mov dword [edx], 0x14
mov eax, 0x14
jmp switch.0x00668180
mov ecx, dword [esp + 0x3c]
mov ecx, dword [ecx + 0x20]
test ecx, ecx
mov dword [esp + 0x48], ecx
je 0x669474
mov ecx, dword [ecx + 0x10]
test ecx, ecx
mov dword [esp + 0x44], ecx
je 0x669474
mov ecx, dword [esp + 0x48]
mov ecx, dword [ecx + 0x14]
sub ecx, eax
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x48]
mov eax, dword [ecx + 0x18]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x38], edx
mov dword [esp + 4], esi
add ecx, edx
mov dword [esp + 0x60], ecx
mov ecx, eax
sub ecx, dword [esp + 0x40]
cmp dword [esp + 0x60], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x48], ecx
cmovbe ecx, edx
add eax, dword [esp + 0x40]
mov dword [esp + 8], ecx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x40], eax
test dword [esp + 0x40], 0x200
jne 0x669a28
mov ecx, dword [esp + 0x3c]
sub edi, edx
add esi, edx
mov eax, dword [ecx + 0x40]
sub eax, edx
mov dword [ecx + 0x40], eax
jmp 0x668c01
cmp ebx, edx
jae 0x6694c5
test edi, edi
je 0x669210
mov ecx, ebx
jmp 0x6694af
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x6694a7
mov ebx, ecx
mov ecx, edx
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x3c]
sub ebx, edx
sub eax, 1
and eax, ebp
add eax, dword [ecx + 0x40]
mov dword [ecx + 0x40], eax
mov ecx, edx
shr ebp, cl
mov ecx, dword [esp + 0x3c]
add dword [ecx + 0x1bc4], edx
mov edx, ecx
jmp 0x6684d8
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
jmp 0x66876d
mov ebx, dword [esp + 0x4c]
xor ebp, ebp
mov eax, dword [ecx + 8]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x5c], ebx
xor ebx, ebx
mov dword [edx], 0x1b
jmp 0x668a3c
mov dword [ecx], 0xc
mov eax, 0xc
jmp switch.0x00668180
mov edx, dword [ecx + 0x1bc0]
test edx, edx
je 0x66838b
mov eax, dword [esp + 0xc0]
mov dword [eax + 0x18], 0x7760e5
mov eax, 0x1d
mov dword [ecx], 0x1d
jmp switch.0x00668180
mov ecx, dword [esp + 0x3c]
movzx eax, al
mov edx, dword [ecx + 0x1bc4]
mov ecx, eax
add eax, edx
mov edx, dword [esp + 0x3c]
shr ebp, cl
sub ebx, dword [esp + 0x48]
test byte [esp + 0x74], 0x40
mov dword [edx + 0x1bc4], eax
je 0x669966
mov ecx, dword [esp + 0xc0]
mov eax, 0x1d
mov dword [ecx + 0x18], 0x7760cf
mov dword [edx], 0x1d
jmp switch.0x00668180
mov ecx, dword [esp + 0x3c]
mov eax, 0x10
mov dword [ecx], 0x10
jmp 0x6682b1
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x20]
xor ecx, ecx
test eax, eax
je 0x6687d7
mov dword [eax + 0x10], 0
jmp 0x6687d7
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov ecx, dword [eax + 0x18]
mov dword [esp + 0x38], edx
mov dword [esp], ecx
call fcn.0066df80
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov dword [ecx + 0x18], eax
jmp 0x668d53
cmp dword [esp + 0x4c], 0x101
jbe 0x6683e4
mov ecx, dword [esp + 0xc0]
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x4c]
mov dword [ecx], esi
mov esi, dword [esp + 0x3c]
mov dword [ecx + 0xc], eax
mov dword [ecx + 0x10], edx
mov dword [ecx + 4], edi
mov dword [esi + 0x3c], ebx
mov ebx, dword [esp + 0x5c]
mov dword [esi + 0x38], ebp
mov dword [esp], ecx
mov dword [esp + 4], ebx
call fcn.0066ef20
mov ebx, dword [esp + 0xc0]
mov esi, dword [esp + 0xc0]
mov ebx, dword [ebx + 0x10]
mov esi, dword [esi + 0xc]
mov dword [esp + 0x4c], ebx
mov ebx, dword [esp + 0xc0]
mov dword [esp + 0x50], esi
mov edi, dword [ebx + 4]
mov esi, dword [ebx]
mov ebx, dword [esp + 0x3c]
mov eax, ebx
mov ebp, dword [ebx + 0x38]
mov edx, eax
mov eax, dword [eax]
mov ebx, dword [ebx + 0x3c]
cmp eax, 0xb
jne 0x668073
mov dword [edx + 0x1bc4], 0xffffffff
jmp switch.0x00668180
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov ecx, dword [eax + 0x18]
mov dword [esp + 0x38], edx
mov dword [esp], ecx
call fcn.0066df80
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov dword [ecx + 0x18], eax
jmp 0x668ca5
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x3c]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov eax, 0x1d
mov dword [edx], 0x1d
jmp switch.0x00668180
sub edx, eax
add edx, dword [ecx + 0x34]
jmp 0x6683a8
xor ebx, ebx
xor ebp, ebp
jmp 0x668d7d
movzx ecx, byte [esp + 0x40]
test cl, 0xf0
je 0x66915b
movzx eax, dl
mov ecx, edx
mov edx, dword [esp + 0x3c]
sub ebx, dword [esp + 0x60]
shr ebp, cl
mov dword [edx + 0x1bc4], eax
movzx eax, word [esp + 0x70]
mov dword [edx + 0x40], eax
movzx edx, byte [esp + 0x40]
test dl, 0x20
je 0x669a53
mov eax, dword [esp + 0x3c]
mov dword [eax + 0x1bc4], 0xffffffff
mov dword [eax], 0xb
mov eax, 0xb
jmp switch.0x00668180
cmp word [esp + 0x70], 0x10
movzx edx, dl
je 0x669b8f
cmp word [esp + 0x70], 0x11
mov dword [esp + 0x40], edx
je 0x669c6a
add edx, 7
cmp ebx, edx
jae 0x6697be
test edi, edi
je 0x669210
mov ecx, ebx
jmp 0x6697a8
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x6697a0
mov ebx, ecx
movzx ecx, byte [esp + 0x40]
sub ebx, dword [esp + 0x48]
shr ebp, cl
sub ebx, 7
mov eax, ebp
and eax, 0x7f
add eax, 0xb
mov dword [esp + 0x40], eax
mov edx, dword [esp + 0x40]
shr ebp, 7
xor eax, eax
add edx, dword [esp + 0x60]
cmp dword [esp + 0x74], edx
mov dword [esp + 0x70], edx
jb 0x669fb2
mov edx, dword [esp + 0x40]
mov word [esp + 0x48], ax
mov eax, dword [esp + 0x60]
sub edx, 1
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x3c]
add eax, 0x38
mov dword [esp + 0x84], eax
lea ecx, [edx + eax*2]
mov eax, dword [esp + 0x60]
shl ecx, 0x1e
shr ecx, 0x1f
cmp dword [esp + 0x40], ecx
cmovbe ecx, dword [esp + 0x40]
test ecx, ecx
je 0x669885
mov dword [esp + 0x7c], esi
mov esi, edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x88], ebp
movzx ebp, word [esp + 0x48]
mov dword [esp + 0x80], edi
mov edi, eax
mov dword [esp + 0x8c], ebx
mov word [esi + eax*2 + 0x70], bp
add eax, 1
sub edx, 1
mov ebx, eax
sub ebx, edi
cmp ecx, ebx
ja 0x669855
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0x80]
mov ebp, dword [esp + 0x88]
mov ebx, dword [esp + 0x8c]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x40]
sub edx, ecx
mov dword [esp + 0x40], edx
shr edx, 1
mov dword [esp + 0x60], edx
add edx, edx
mov dword [esp + 0x7c], edx
je 0x669918
movzx edx, word [esp + 0x48]
add ecx, dword [esp + 0x84]
mov dword [esp + 0x84], esi
mov esi, dword [esp + 0x60]
shl edx, 0x10
mov dword [esp + 0x88], edx
movzx edx, word [esp + 0x48]
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x88]
or dword [esp + 0x80], edx
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x88], edi
mov edi, dword [esp + 0x80]
lea ecx, [edx + ecx*2]
xor edx, edx
nop
mov dword [ecx + edx*4], edi
add edx, 1
cmp esi, edx
ja 0x6698f0
mov ecx, dword [esp + 0x7c]
sub dword [esp + 0x44], ecx
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0x88]
add eax, ecx
cmp dword [esp + 0x40], ecx
je 0x669950
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x40], esi
movzx esi, word [esp + 0x48]
lea edx, [edx + edx + 2]
mov dword [esp + 0x44], edx
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x44]
xor edx, edx
lea esi, [esi]
mov word [eax + edx + 0x70], si
add edx, 2
cmp edx, ecx
jne 0x669940
mov esi, dword [esp + 0x40]
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x60], edx
mov dword [eax + 0x68], edx
mov eax, edx
jmp 0x668885
movzx eax, word [esp + 0x60]
mov ecx, edx
mov dword [ecx], 0x17
mov dword [edx + 0x44], eax
movzx edx, byte [esp + 0x44]
and edx, 0xf
mov dword [ecx + 0x48], edx
jmp 0x6682f7
mov eax, ebp
mov byte [esp + 0x9c], al
mov eax, ebp
shr eax, 8
mov byte [esp + 0x9d], al
lea eax, [esp + 0x9c]
mov dword [esp + 8], 2
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.0066df80
mov edx, dword [ebx + 0x10]
mov dword [ebx + 0x18], eax
mov ebx, dword [esp + 0x3c]
jmp 0x668763
mov eax, dword [esp + 0x3c]
cmp dword [esp + 0xc4], 6
mov dword [eax + 0x4c], 0x7761c0
mov dword [eax + 0x54], 9
mov dword [eax + 0x50], 0x7769c0
mov dword [eax + 0x58], 5
mov dword [eax], 0x13
je 0x669fa3
mov eax, 0x13
jmp 0x6682b1
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0x3c]
mov dword [eax + 0x18], str.invalid_block_type
mov eax, 0x1d
mov dword [ecx], 0x1d
jmp 0x6682b1
mov ecx, dword [esp + 0x3c]
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov eax, dword [ecx + 0x18]
mov dword [esp + 0x38], edx
mov dword [esp], eax
call fcn.0066df80
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov dword [ecx + 0x18], eax
jmp 0x669482
test dl, 0x40
je 0x669c55
mov edx, dword [esp + 0xc0]
mov eax, 0x1d
mov ecx, dword [esp + 0x3c]
mov dword [edx + 0x18], 0x7760b3
mov dword [ecx], 0x1d
jmp switch.0x00668180
mov eax, ebp
mov byte [esp + 0x9c], al
mov eax, ebp
shr eax, 8
mov byte [esp + 0x9d], al
mov eax, ebp
shr eax, 0x10
mov byte [esp + 0x9e], al
mov eax, ebp
shr eax, 0x18
mov byte [esp + 0x9f], al
lea eax, [esp + 0x9c]
mov dword [esp + 8], 4
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.0066df80
mov dword [ebx + 0x18], eax
mov ebx, dword [esp + 0x3c]
jmp 0x6686fb
test ebp, 0xe000
je 0x669d42
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x3c]
mov dword [eax + 0x18], str.unknown_header_flags_set
mov eax, 0x1d
mov dword [edx], 0x1d
jmp switch.0x00668180
mov ebx, dword [esp + 0x3c]
cmp dword [esp + 0xc4], 6
mov dword [ebx + 0x40], edx
mov dword [ebx], 0xe
je 0x669fcf
xor ebx, ebx
xor ebp, ebp
mov eax, dword [esp + 0x3c]
jmp 0x668ddc
mov edx, dword [esp + 0xc0]
mov eax, 0x1d
mov ecx, dword [esp + 0x3c]
mov dword [edx + 0x18], str.incorrect_header_check
mov dword [ecx], 0x1d
jmp switch.0x00668180
mov ebx, dword [esp + 0x3c]
mov eax, ebp
mov byte [esp + 0x9c], al
mov eax, ebp
shr eax, 8
mov byte [esp + 0x9d], al
lea eax, [esp + 0x9c]
mov dword [esp + 8], 2
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.0066df80
mov edx, dword [ebx + 0x10]
mov dword [ebx + 0x18], eax
jmp 0x6687c7
mov dword [esp + 0x40], edx
add edx, 2
cmp ebx, edx
jae 0x669bc4
test edi, edi
je 0x669210
mov ecx, ebx
jmp 0x669bae
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x669ba6
mov ebx, ecx
movzx ecx, byte [esp + 0x40]
mov eax, dword [esp + 0x60]
sub ebx, dword [esp + 0x48]
shr ebp, cl
test eax, eax
je 0x66a05f
mov edx, dword [esp + 0x60]
sub ebx, 2
mov ecx, dword [esp + 0x3c]
movzx eax, word [ecx + edx*2 + 0x6e]
mov edx, ebp
and edx, 3
add edx, 3
mov dword [esp + 0x40], edx
shr ebp, 2
jmp 0x6697e1
mov byte [esp + 0x7c], cl
movzx ecx, byte [esp + 0x48]
sub ebx, dword [esp + 0x60]
shr ebp, cl
mov ecx, eax
movzx eax, byte [esp + 0x7c]
shr ebp, cl
sub ebx, eax
mov eax, dword [esp + 0x3c]
cmp byte [esp + 0x40], 0
mov dword [eax + 0x1bc4], edx
movzx eax, word [esp + 0x78]
mov edx, dword [esp + 0x3c]
mov dword [edx + 0x40], eax
jne 0x66973b
jmp 0x6684ae
mov edx, ebp
mov ebp, ecx
jmp 0x668ac0
mov dword [esp + 0x48], edx
lea esi, [esi]
jmp 0x66857e
mov eax, dword [esp + 0x3c]
and edx, 0xf
mov dword [eax + 0x48], edx
mov dword [eax], 0x15
jmp 0x6684c9
add edx, 3
cmp ebx, edx
jae 0x669c9e
test edi, edi
je 0x669210
mov ecx, ebx
jmp 0x669c88
test edi, edi
je 0x669220
movzx eax, byte [esi]
sub edi, 1
add esi, 1
shl eax, cl
add ecx, 8
add ebp, eax
cmp ecx, edx
jb 0x669c80
mov ebx, ecx
movzx ecx, byte [esp + 0x40]
shr ebp, cl
mov eax, ebp
and eax, 7
add eax, 3
mov dword [esp + 0x40], eax
mov eax, 0xfffffffd
mov edx, dword [esp + 0x40]
sub eax, dword [esp + 0x48]
shr ebp, 3
add ebx, eax
xor eax, eax
jmp 0x6697e1
test dl, 2
je 0x668ebe
mov dword [esp + 8], 0
xor bp, bp
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0066df80
mov ebx, dword [esp + 0x3c]
lea edx, [esp + 0x9c]
mov byte [esp + 0x9c], 0x1f
mov byte [esp + 0x9d], 0x8b
mov dword [ebx + 0x18], eax
mov dword [esp + 8], 2
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0066df80
mov dword [ebx], 1
mov dword [ebx + 0x18], eax
mov eax, 1
xor ebx, ebx
jmp switch.0x00668180
mov edx, ebp
mov ebp, eax
jmp 0x668ac0
mov ebx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x669d57
mov edx, ebp
shr edx, 8
and edx, 1
mov dword [eax], edx
test ebp, 0x200
jne 0x669e36
mov ebx, dword [esp + 0x3c]
xor ebp, ebp
mov dword [ebx], 2
xor ebx, ebx
jmp 0x6686b5
mov edx, ebp
mov ebp, dword [esp + 0x3c]
mov dword [ebp], 0x1c
mov dword [esp + 0x54], 1
jmp 0x668ac0
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x3c]
sub edx, eax
mov dword [esp + 4], edx
mov eax, dword [ecx + 0x18]
mov dword [esp], eax
call fcn.0066e280
jmp 0x668115
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x60], 0
mov dword [edx + 0x68], 0
mov ecx, edx
mov eax, edx
mov dword [edx], 0x12
jmp 0x668873
mov ecx, dword [esp + 0xc0]
mov edx, ebp
mov ebp, eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x54], 2
mov dword [ecx], esi
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x4c]
mov dword [ecx + 4], edi
mov dword [ecx + 0x10], eax
mov dword [ebp + 0x38], edx
mov dword [ebp + 0x3c], ebx
jmp 0x668084
cmp dword [edx], 0x1d
je 0x668aa4
cmp word [edx + 0x270], 0
jne 0x669ef4
mov ecx, dword [esp + 0xc0]
mov eax, 0x1d
mov dword [ecx + 0x18], str.invalid_code____missing_end_of_block
mov dword [edx], 0x1d
jmp switch.0x00668180
mov ebx, dword [esp + 0x3c]
mov eax, ebp
mov byte [esp + 0x9c], al
mov eax, ebp
shr eax, 8
mov byte [esp + 0x9d], al
lea eax, [esp + 0x9c]
mov dword [esp + 8], 2
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x18]
mov dword [esp], eax
call fcn.0066df80
mov dword [ebx + 0x18], eax
jmp 0x669d63
mov ebp, eax
xor ebx, ebx
xor edx, edx
jmp 0x669d7c
mov edx, dword [esp + 0x3c]
shr ebp, 4
mov ecx, ebp
and ecx, 0xf
add ecx, 8
mov eax, dword [edx + 0x24]
test eax, eax
jne 0x669f76
mov dword [edx + 0x24], ecx
mov ebx, dword [esp + 0x3c]
mov eax, 1
and ebp, 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.0066e280
cmp ebp, 1
mov dword [ebx + 0x18], eax
mov ebx, dword [esp + 0xc0]
mov dword [ebx + 0x30], eax
mov ebx, dword [esp + 0x3c]
sbb eax, eax
and eax, 2
xor ebp, ebp
add eax, 9
mov dword [ebx], eax
xor ebx, ebx
jmp 0x668073
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x68]
mov ecx, dword [esp + 0x6c]
mov dword [eax + 0x54], 9
mov dword [eax + 0x6c], edx
mov dword [eax + 0x4c], edx
mov edx, eax
add eax, 0x54
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x78]
add edx, 0x6c
mov dword [esp + 0xc], edx
mov dword [esp + 0x38], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x3c]
mov dword [esp], 1
add eax, 0x70
mov dword [esp + 4], eax
call fcn.0066e690
mov edx, dword [esp + 0x38]
test eax, eax
mov dword [esp + 0x54], eax
je 0x669fdc
mov edx, dword [esp + 0xc0]
mov eax, 0x1d
mov ecx, dword [esp + 0x3c]
mov dword [edx + 0x18], str.invalid_literal_lengths_set
mov dword [ecx], 0x1d
jmp switch.0x00668180
cmp ecx, eax
jbe 0x669e9d
mov eax, dword [esp + 0x3c]
sub ebx, 4
mov ecx, dword [esp + 0xc0]
mov dword [ecx + 0x18], str.invalid_window_size
mov dword [eax], 0x1d
mov eax, 0x1d
jmp switch.0x00668180
mov edx, ebp
sub ebx, 3
mov ebp, eax
shr edx, 3
jmp 0x668ac0
mov ecx, dword [esp + 0xc0]
mov eax, dword [esp + 0x3c]
mov dword [ecx + 0x18], str.invalid_bit_length_repeat
mov dword [eax], 0x1d
jmp 0x668aa4
mov ebp, dword [esp + 0x3c]
xor ebx, ebx
xor edx, edx
jmp 0x668ac0
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x6c]
mov dword [ecx + 0x58], 6
mov dword [ecx + 0x50], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0xc], edx
mov dword [esp + 0x14], eax
mov eax, ecx
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.0066e690
test eax, eax
mov dword [esp + 0x54], eax
je 0x6683b9
mov edx, dword [esp + 0xc0]
mov eax, 0x1d
mov ecx, dword [esp + 0x3c]
mov dword [edx + 0x18], str.invalid_distances_set
mov dword [ecx], 0x1d
jmp switch.0x00668180
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x50]
jmp 0x6693b5
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x3c]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov dword [edx], 0x1d
jmp 0x668aa4