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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x68
mov eax, dword [0x4df19c]
mov edi, dword [ebp + 8]
xor eax, ebp
mov ecx, edi
mov dword [ebp - 0x10], eax
call fcn.00405c66
mov esi, 0xfffffffe
test eax, eax
je 0x405e55
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004956a1
mov eax, esi
add esp, 0x68
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebx, dword [edi + 0xc]
test ebx, ebx
je 0x405e41
mov esi, dword [edi]
test esi, esi
je 0x407812
mov edx, dword [edi + 0x1c]
lea eax, [edx + 4]
mov ecx, edx
mov dword [ebp - 0x2c], eax
mov eax, dword [edx + 4]
cmp eax, 0x3f3f
jne 0x405e8e
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x3f40
mov eax, 0x3f40
mov esi, dword [edi]
mov ebx, dword [edi + 0xc]
mov edx, dword [edi + 4]
mov edi, dword [edi + 0x10]
mov dword [ebp - 0x30], ebx
mov ebx, esi
lea esi, [ecx + 0x1c]
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x4c], esi
mov esi, ebx
mov ebx, ecx
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x34], edi
mov edi, dword [ecx + 0x3c]
mov dword [ebp - 0x74], edx
mov dword [ebp - 0x18], edi
mov edi, dword [ecx + 0x40]
lea ecx, [ecx + 0x534]
mov dword [ebp - 0x68], ecx
lea ecx, [ebx + 0x70]
mov dword [ebp - 0x64], ecx
lea ecx, [ebx + 0x58]
mov dword [ebp - 0x60], ecx
lea ecx, [ebx + 0x2f4]
mov dword [ebp - 0x58], ecx
lea ecx, [ebx + 0x74]
mov dword [ebp - 0x24], edi
mov edi, edx
mov dword [ebp - 0x5c], ecx
lea ecx, [ebx + 0x5c]
mov dword [ebp - 0x6c], ecx
mov ecx, dword [ebp + 0xc]
lea ecx, [ecx - 5]
mov dword [ebp - 0x70], ecx
xor ecx, ecx
inc ecx
mov dword [ebp - 0x40], ecx
mov ecx, dword [ebp - 0x34]
mov dword [ebp - 0x3c], ecx
add eax, 0xffffc0cc
cmp eax, 0x1e
ja case.default.0x405f11
mov edx, dword [ebp - 0x24]
jmp dword [eax*4 + 0x4bf1a4]
mov ebx, dword [ebp - 0x1c]
mov eax, dword [ebx + 0xc]
test eax, eax
je 0x406ba7
cmp edx, 0xf
ja 0x405f49
test edi, edi
je 0x40780b
mov ecx, edx
movzx edx, byte [esi]
dec edi
inc esi
shl edx, cl
add dword [ebp - 0x18], edx
mov edx, ecx
add edx, 8
cmp edx, 0x10
jb 0x405f2b
test al, 2
je 0x406c70
cmp dword [ebp - 0x18], 0x8b1f
jne 0x406c70
mov eax, ebx
mov ebx, esi
cmp dword [eax + 0x28], 0
jne 0x405f72
mov eax, dword [ebp - 0x1c]
mov dword [eax + 0x28], 0xf
xor eax, eax
push eax
push eax
mov dword [ebp - 0x18], 0
push eax
call fcn.0042d14a
add esp, 0xc
mov esi, dword [ebp - 0x4c]
lea ecx, [ebp - 0x14]
mov dword [esi], eax
mov word [ecx], 0x8b1f
push 2
push ecx
push eax
call fcn.0042d14a
add esp, 0xc
mov dword [esi], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x24], 0
mov esi, ebx
mov dword [eax], 0x3f35
jmp 0x4077b0
mov ebx, dword [ebp - 0x1c]
cmp edx, 0xf
ja 0x405fdc
test edi, edi
je 0x40780b
movzx eax, byte [esi]
mov ecx, edx
add edx, 8
dec edi
inc esi
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, 0x10
jb 0x405fc0
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 0x18]
cmp dl, 8
mov dword [ebx + 0x14], edx
jne 0x40779d
mov eax, dword [ebp - 0x2c]
test edx, 0xe000
je 0x406d28
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], str.unknown_header_flags_set
jmp 0x4077aa
mov ebx, dword [ebp - 0x1c]
cmp edx, 0x1f
jbe 0x406d80
jmp 0x406d9c
mov ebx, dword [ebp - 0x1c]
cmp edx, 0xf
jbe 0x406df9
jmp 0x406e15
cmp edx, 0x1f
ja 0x40604f
test edi, edi
je 0x40780b
movzx eax, byte [esi]
mov ecx, edx
add edx, 8
dec edi
inc esi
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, 0x20
jb 0x406033
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x4c]
mov ebx, dword [ebp + 8]
xor edx, edx
mov dword [ebp - 0x18], 0
bswap ecx
mov dword [eax], ecx
mov dword [ebx + 0x30], ecx
mov ecx, dword [ebp - 0x2c]
mov dword [ecx], 0x3f3e
mov ecx, dword [ebp - 0x1c]
cmp dword [ecx + 0x10], 0
je 0x407a09
xor eax, eax
push eax
push eax
push eax
mov ebx, edi
mov edi, esi
mov esi, edx
call fcn.0042ce49
mov edx, esi
mov esi, edi
mov edi, ebx
add esp, 0xc
mov ecx, dword [ebp - 0x4c]
mov dword [ecx], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x30], eax
mov ecx, dword [ebp - 0x2c]
mov dword [ecx], 0x3f3f
cmp dword [ebp - 0x70], 2
jb 0x40780d
mov ebx, dword [ebp - 0x1c]
cmp dword [ebx + 8], 0
je 0x4060e0
mov ecx, edx
mov eax, dword [ebp - 0x18]
and ecx, 7
sub edx, ecx
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 0x2c]
shr eax, cl
mov dword [ebp - 0x18], eax
mov dword [edx], 0x3f4e
mov eax, edx
jmp 0x4077b0
cmp edx, 3
jae 0x4063f8
test edi, edi
je 0x40780b
movzx eax, byte [esi]
mov ecx, edx
mov ebx, edi
inc esi
lea edx, [edx + 8]
mov edi, esi
dec ebx
mov esi, edx
shl eax, cl
mov ecx, dword [ebp - 0x18]
add ecx, eax
jmp 0x406401
mov ecx, edx
and ecx, 7
shr dword [ebp - 0x18], cl
sub edx, ecx
cmp edx, 0x1f
ja 0x406457
mov ebx, dword [ebp - 0x1c]
test edi, edi
je 0x40780b
movzx eax, byte [esi]
mov ecx, edx
add edx, 8
dec edi
inc esi
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, 0x20
jb 0x406123
jmp 0x40645a
cmp edx, 0xd
ja 0x406165
test edi, edi
je 0x40780b
movzx eax, byte [esi]
mov ecx, edx
add edx, 8
dec edi
inc esi
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, 0xe
jb 0x406149
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x20], edi
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x28], esi
mov esi, edx
add esi, 0xfffffff2
mov dword [ebp - 0x24], esi
mov edi, ecx
mov edx, ecx
shr edi, 5
and edx, 0x1f
and edi, 0x1f
add edx, 0x101
lea eax, [edi + 1]
mov dword [ebx + 0x64], edx
mov dword [ebx + 0x68], eax
mov eax, ecx
shr ecx, 0xe
shr eax, 0xa
mov dword [ebp - 0x18], ecx
and eax, 0xf
add eax, 4
cmp edx, 0x11e
mov dword [ebp - 0x44], eax
mov dword [ebx + 0x60], eax
ja 0x406bbc
cmp edi, 0x1e
jae 0x406bbc
mov eax, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x24]
xor ecx, ecx
mov dword [eax + 0x6c], 0
mov dword [eax + 4], 0x3f45
jmp 0x4061f4
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x20], edi
mov edi, dword [ebp + 8]
mov ebx, edx
mov esi, dword [eax + 0x60]
mov ecx, dword [eax + 0x6c]
cmp ecx, esi
mov dword [ebp - 0x44], esi
jae 0x406255
mov edx, ecx
mov ecx, ebx
cmp ebx, 2
ja 0x406222
mov esi, dword [ebp - 0x20]
test esi, esi
je 0x4079c0
mov ebx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x18]
dec esi
mov dword [ebp - 0x20], esi
movzx edi, byte [ebx]
inc ebx
mov dword [ebp - 0x28], ebx
shl edi, cl
lea ecx, [ecx + 8]
add eax, edi
jmp 0x406225
mov eax, dword [ebp - 0x18]
mov ebx, ecx
lea ecx, [edx + 1]
mov esi, dword [ebp - 0x1c]
movzx edx, word [edx + edx + 0x4be780]
mov edi, eax
shr eax, 3
and edi, 7
add ebx, 0xfffffffd
cmp ecx, dword [ebp - 0x44]
mov dword [ebp - 0x18], eax
mov dword [esi + 0x6c], ecx
mov word [esi + edx*2 + 0x74], di
mov edi, dword [ebp + 8]
mov edx, ecx
jb 0x4061f6
mov dword [ebp - 0x24], ebx
mov edx, dword [ebp - 0x64]
mov esi, dword [ebp - 0x58]
mov ebx, dword [ebp - 0x1c]
cmp ecx, 0x12
ja 0x40627f
inc ecx
movzx eax, word [ecx + ecx + 0x4be77e]
mov dword [ebx + 0x6c], ecx
inc ecx
cmp ecx, 0x14
mov word [ebx + eax*2 + 0x74], 0
jne 0x406267
mov eax, dword [ebp - 0x68]
mov dword [ebx + 0x70], eax
mov dword [ebx + 0x50], eax
mov dword [ebx + 0x58], 7
push esi
push dword [ebp - 0x60]
push edx
push 0x13
push dword [ebp - 0x5c]
push 0
call fcn.0042d150
add esp, 0x18
mov esi, dword [ebp - 0x28]
test eax, eax
je 0x40682f
mov dword [ebp - 0x38], eax
mov dword [edi + 0x18], str.invalid_code_lengths_set
jmp 0x406d1d
mov ebx, dword [ebp - 0x1c]
mov ecx, dword [ebx + 0x6c]
jmp 0x40684c
mov ebx, dword [ebp - 0x1c]
mov eax, dword [ebx + 0x4c]
test eax, eax
je 0x4064f9
cmp edx, eax
mov ebx, eax
jae 0x4062f7
test edi, edi
je 0x40780b
movzx eax, byte [esi]
mov ecx, edx
add edx, 8
dec edi
inc esi
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, ebx
jb 0x4062dc
xor eax, eax
mov dword [ebp - 0x20], edi
mov edi, esi
mov esi, edx
mov ecx, ebx
mov edx, dword [ebp - 0x18]
dec eax
shl eax, cl
mov ecx, ebx
mov ebx, dword [ebp - 0x1c]
not eax
sub esi, ecx
and eax, edx
add eax, dword [ebx + 0x44]
mov dword [ebx + 0x44], eax
add dword [ebx + 0x1bc8], ecx
shr edx, cl
mov dword [ebp - 0x18], edx
mov edx, esi
mov esi, edi
mov edi, dword [ebp - 0x20]
jmp 0x4064fc
mov ebx, dword [ebp - 0x1c]
mov ecx, dword [ebx + 0x4c]
jmp 0x40667d
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x4079fd
mov ebx, dword [ebp - 0x1c]
mov ecx, eax
mov edx, dword [ebp - 0x30]
dec ecx
mov dword [ebp - 0x34], ecx
mov al, byte [ebx + 0x44]
mov byte [edx], al
inc edx
mov dword [ebx + 4], 0x3f48
mov dword [ebp - 0x30], edx
jmp 0x4076e4
mov ebx, dword [ebp - 0x1c]
cmp dword [ebx + 0xc], 0
je 0x406bb5
cmp edx, 0x1f
ja 0x406395
test edi, edi
je 0x40780b
movzx eax, byte [esi]
mov ecx, edx
add edx, 8
dec edi
inc esi
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, 0x20
jb 0x406379
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp + 8]
sub eax, dword [ebp - 0x34]
add dword [ecx + 0x14], eax
add dword [ebx + 0x20], eax
mov dword [ebp - 0x3c], eax
mov ecx, dword [ebx + 0xc]
mov ebx, ecx
and ecx, 4
test eax, eax
je 0x4071e6
test ecx, ecx
mov eax, ebx
je 0x407221
mov eax, dword [ebp - 0x30]
mov ebx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x20], edi
mov edi, esi
mov esi, edx
sub eax, ebx
cmp dword [ecx + 0x14], 0
mov ecx, dword [ecx + 0x1c]
je 0x4071fb
push ebx
push eax
push ecx
call fcn.0042d14a
jmp 0x407203
mov ebx, dword [ebp - 0x1c]
mov eax, dword [ebx + 0xc]
jmp 0x407267
mov ecx, dword [ebp - 0x18]
mov ebx, edi
mov edi, esi
mov esi, edx
mov edx, dword [ebp - 0x1c]
mov eax, ecx
and eax, 1
mov dword [edx + 8], eax
mov edx, ecx
shr ecx, 1
mov eax, 0x3f41
and ecx, 3
jmp dword [ecx*4 + 0x4bf240]
mov eax, dword [ebp - 0x1c]
cmp dword [ebp + 0xc], 6
mov dword [eax + 0x50], 0x4be924
mov dword [eax + 0x58], 9
mov dword [eax + 0x54], 0x4bf124
mov dword [eax + 0x5c], 5
mov dword [eax + 4], 0x3f47
mov eax, dword [ebp - 0x2c]
jne 0x406c00
jmp 0x407a56
mov ebx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
movzx eax, cx
not ecx
shr ecx, 0x10
cmp eax, ecx
jne 0x406bd1
cmp dword [ebp + 0xc], 6
mov edx, 0
mov dword [ebx + 0x44], eax
mov dword [ebp - 0x18], 0
mov dword [ebx + 4], 0x3f42
je 0x407a4f
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x3f43
mov eax, dword [ebp - 0x1c]
mov ebx, edi
mov dword [ebp - 0x24], edx
mov edi, dword [eax + 0x44]
test edi, edi
je 0x4064ef
cmp edi, ebx
mov ecx, ebx
mov eax, dword [ebp - 0x30]
cmova edi, ebx
mov ebx, dword [ebp - 0x34]
cmp edi, ebx
cmova edi, ebx
test edi, edi
je 0x407a30
push edi
push esi
mov dword [ebp - 0x30], eax
push eax
mov dword [ebp - 0x20], ecx
call fcn.00498e50
add esp, 0xc
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x20]
sub ebx, edi
add dword [ebp - 0x30], edi
add esi, edi
mov dword [ebp - 0x34], ebx
sub dword [eax + 0x44], edi
sub ecx, edi
mov eax, dword [ebp - 0x2c]
mov edi, ecx
jmp 0x4077b0
mov eax, dword [ebp - 0x2c]
mov edi, ebx
jmp 0x4071c9
mov eax, dword [ebx + 0x44]
mov dword [ebx + 0x1bcc], eax
mov dword [ebx + 4], 0x3f4a
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x28], esi
mov cl, byte [eax + 0x5c]
mov esi, dword [eax + 0x54]
xor eax, eax
dec eax
shl eax, cl
mov ecx, dword [ebp - 0x18]
not eax
mov dword [ebp - 0x20], eax
and ecx, eax
mov eax, edx
mov dl, byte [esi + ecx*4 + 1]
mov dword [ebp - 0x24], eax
movzx ebx, dl
cmp eax, ebx
jae 0x40657b
mov dword [ebp - 0x44], esi
mov esi, dword [ebp - 0x30]
test edi, edi
je 0x407826
mov ecx, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x24]
dec edi
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x28], ecx
mov ecx, ebx
add ebx, 8
mov dword [ebp - 0x24], ebx
shl eax, cl
mov ecx, dword [ebp - 0x18]
add ecx, eax
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x18], ecx
and ecx, dword [ebp - 0x20]
mov dl, byte [eax + ecx*4 + 1]
movzx eax, dl
cmp ebx, eax
jb 0x40653a
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x44]
jmp 0x406580
mov eax, ebx
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x20], edi
movzx edi, word [esi + ecx*4 + 2]
movzx ecx, byte [esi + ecx*4]
test cl, 0xf0
je 0x4065a2
mov eax, dword [ebx + 0x1bc8]
mov word [ebp - 0x44], di
mov esi, ecx
jmp 0x406643
movzx edx, di
mov ebx, dword [ebp - 0x18]
add ecx, eax
mov dword [ebp - 0x44], edx
xor edx, edx
dec edx
shl edx, cl
mov ecx, eax
not edx
mov edi, ebx
and edi, edx
mov dword [ebp - 0x48], edx
shr edi, cl
add edi, dword [ebp - 0x44]
movzx edx, byte [esi + edi*4 + 1]
lea ecx, [eax + edx]
cmp ecx, dword [ebp - 0x24]
jbe 0x40661d
mov ebx, dword [ebp - 0x20]
mov dword [ebp - 0x50], eax
test ebx, ebx
je 0x407826
mov eax, dword [ebp - 0x28]
mov edi, dword [ebp - 0x18]
dec ebx
movzx edx, byte [eax]
inc eax
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x24]
mov ecx, eax
add eax, 8
shl edx, cl
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 0x24], eax
add edi, edx
mov dword [ebp - 0x18], edi
and edi, dword [ebp - 0x48]
shr edi, cl
add edi, dword [ebp - 0x44]
movzx edx, byte [esi + edi*4 + 1]
lea ecx, [ecx + edx]
cmp ecx, eax
ja 0x4065d5
mov dword [ebp - 0x20], ebx
mov ebx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x50]
movzx ecx, word [esi + edi*4 + 2]
movzx esi, byte [esi + edi*4]
sub dword [ebp - 0x24], eax
mov word [ebp - 0x44], cx
mov ecx, eax
shr ebx, cl
mov dword [ebp - 0x18], ebx
mov ebx, dword [ebp - 0x1c]
add eax, dword [ebx + 0x1bc8]
mov dword [ebx + 0x1bc8], eax
movzx edi, dl
mov ecx, edx
mov edx, dword [ebp - 0x24]
shr dword [ebp - 0x18], cl
mov ecx, esi
add eax, edi
mov dword [ebx + 0x1bc8], eax
sub edx, edi
test cl, 0x40
jne 0x40677f
movzx eax, word [ebp - 0x44]
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x28]
and ecx, 0xf
mov dword [ebx + 0x48], eax
mov dword [ebx + 0x4c], ecx
mov dword [ebx + 4], 0x3f4b
test ecx, ecx
je 0x4066d1
mov ebx, ecx
jmp 0x40669c
test edi, edi
je 0x40780b
movzx eax, byte [esi]
mov ecx, edx
dec edi
inc esi
add edx, 8
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, ebx
jb 0x406685
xor eax, eax
mov dword [ebp - 0x28], esi
mov esi, edx
mov ecx, ebx
mov edx, dword [ebp - 0x18]
dec eax
shl eax, cl
mov ecx, ebx
mov ebx, edi
mov edi, dword [ebp - 0x1c]
not eax
sub esi, ecx
and eax, edx
add dword [edi + 0x48], eax
add dword [edi + 0x1bc8], ecx
shr edx, cl
mov edi, ebx
mov dword [ebp - 0x18], edx
mov edx, esi
mov esi, dword [ebp - 0x28]
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x3f4c
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x24], edx
test eax, eax
je 0x4079fd
mov ecx, dword [ebp - 0x1c]
mov ebx, eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x20], edi
mov edx, dword [ecx + 0x48]
sub eax, ebx
mov edi, edx
sub edi, eax
jbe 0x40671b
cmp edi, dword [ecx + 0x30]
jbe 0x406763
cmp dword [ecx + 0x1bc4], 0
je 0x406763
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_distance_too_far_back
jmp 0x406d1d
mov eax, ecx
mov ecx, dword [ecx + 0x44]
mov dword [ebp - 0x34], ebx
cmp ecx, ebx
mov edi, ecx
cmova edi, ebx
cmp ebx, 0x2f
mov dword [ebp - 0x28], edi
jg 0x40679a
mov ebx, dword [ebp - 0x20]
test edi, edi
je 0x406cd1
mov edi, dword [ebp - 0x34]
not ecx
neg edx
not edi
cmp edi, ecx
cmova ecx, edi
mov edi, dword [ebp - 0x30]
inc ecx
mov bl, byte [edi + edx]
mov byte [edi], bl
inc edi
inc ecx
jne 0x40674f
mov dword [ebp - 0x30], edi
mov ebx, dword [ebp - 0x1c]
jmp 0x4076cb
mov eax, ecx
mov ecx, dword [ecx + 0x34]
mov dword [ebp - 0x34], ebx
mov ebx, edi
sub ebx, ecx
jbe 0x406ad4
mov ecx, dword [eax + 0x2c]
sub ecx, ebx
jmp 0x406ad8
mov eax, dword [ebp + 8]
mov dword [ebp - 0x24], edx
mov dword [eax + 0x18], str.invalid_distance_code
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x3f51
jmp 0x40753c
cmp edx, 0xf
mov eax, edi
ja 0x406c15
cmp edx, eax
jae 0x406c15
lea edi, [edx - 1]
cmp edi, 7
ja case.0x4067cd.3
lea ebx, [eax - 1]
mov dword [ebp - 0x44], edi
and ebx, 0xf
mov edi, ebx
mov dword [ebp - 0x48], ebx
lea edi, [ebx + 1]
mov ebx, dword [ebp - 0x44]
jmp dword [ebx*4 + 0x4bf220]
mov eax, dword [ebp - 0x30]
movzx edx, byte [eax - 1]
movd xmm0, edx
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0xe0
pshufd xmm0, xmm0, 0
movdqu xmmword [eax], xmm0
add eax, edi
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x28]
cmp eax, edi
je 0x4077b7
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x48]
not ecx
mov ebx, dword [ebp - 0x1c]
not edx
cmp edx, ecx
cmova ecx, edx
lea ecx, [ecx + eax + 2]
mov eax, dword [ebp - 0x30]
mov edx, 0x10
movdqu xmmword [eax], xmm0
add eax, 0x10
add ecx, edx
jne 0x40681a
jmp 0x406b99
mov edi, dword [ebp - 0x20]
mov edx, dword [ebp - 0x24]
xor ecx, ecx
mov dword [ebx + 0x6c], 0
mov dword [ebx + 4], 0x3f46
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x24], edx
mov eax, dword [ebx + 0x64]
mov edx, dword [ebx + 0x68]
add edx, eax
cmp ecx, edx
jae 0x406a7e
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x44], ecx
mov cl, byte [ebx + 0x58]
xor edi, edi
mov esi, dword [ebp - 0x18]
mov dword [ebp - 0x48], edx
mov edx, dword [ebx + 0x50]
dec edi
shl edi, cl
not edi
and esi, edi
movzx eax, byte [edx + esi*4 + 1]
cmp dword [ebp - 0x24], eax
jae 0x4068be
mov ebx, dword [ebp - 0x20]
test ebx, ebx
je 0x407826
mov ecx, dword [ebp - 0x28]
mov esi, dword [ebp - 0x18]
dec ebx
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 0x24]
shl eax, cl
add ecx, 8
add esi, eax
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x18], esi
and esi, edi
movzx eax, byte [edx + esi*4 + 1]
cmp ecx, eax
jb 0x40688a
mov dword [ebp - 0x20], ebx
movzx ecx, word [edx + esi*4 + 2]
mov edi, dword [ebp - 0x20]
cmp cx, 0xf
ja 0x4068ea
mov esi, dword [ebp - 0x44]
mov ebx, dword [ebp - 0x1c]
sub dword [ebp - 0x24], eax
lea edx, [esi + 1]
mov dword [ebx + 0x6c], edx
mov word [ebx + esi*2 + 0x74], cx
mov ecx, eax
shr dword [ebp - 0x18], cl
jmp 0x406a4c
mov ebx, dword [ebp - 0x1c]
cmp cx, 0x10
je 0x406950
mov esi, dword [ebp - 0x28]
cmp cx, 0x11
jne 0x4069c0
lea edx, [eax + 3]
cmp dword [ebp - 0x24], edx
jae 0x40692e
test edi, edi
je 0x4079db
mov ebx, edi
movzx edi, byte [esi]
mov ecx, dword [ebp - 0x24]
inc esi
shl edi, cl
add ecx, 8
add dword [ebp - 0x18], edi
mov edi, ebx
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x24], ecx
dec edi
cmp ecx, edx
jb 0x406908
mov edx, dword [ebp - 0x18]
mov ecx, eax
mov dword [ebp - 0x20], edi
shr edx, cl
mov ecx, edx
shr edx, 3
and ecx, 7
mov dword [ebp - 0x18], edx
mov edx, 0xfffffffd
add ecx, 3
jmp 0x406a0b
lea edx, [eax + 2]
mov ebx, edi
mov edi, dword [ebp + 8]
mov esi, dword [ebp - 0x28]
cmp dword [ebp - 0x24], edx
jae 0x406982
test ebx, ebx
je 0x4079db
movzx edi, byte [esi]
mov ecx, dword [ebp - 0x24]
dec ebx
inc esi
shl edi, cl
add ecx, 8
add dword [ebp - 0x18], edi
mov edi, dword [ebp + 8]
cmp ecx, edx
mov dword [ebp - 0x24], ecx
jb 0x406960
mov dword [ebp - 0x28], esi
mov esi, dword [ebp - 0x24]
mov ecx, eax
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x20], ebx
sub esi, eax
mov eax, dword [ebp - 0x44]
shr edx, cl
test eax, eax
je 0x4077f9
mov ebx, dword [ebp - 0x1c]
add esi, 0xfffffffe
mov ecx, edx
shr edx, 2
mov dword [ebp - 0x24], esi
mov esi, dword [ebp - 0x28]
and ecx, 3
mov dword [ebp - 0x18], edx
add ecx, 3
movzx eax, word [ebx + eax*2 + 0x72]
jmp 0x406a12
lea edx, [eax + 7]
cmp dword [ebp - 0x24], edx
jae 0x4069ee
test edi, edi
je 0x4079db
mov ebx, edi
movzx edi, byte [esi]
mov ecx, dword [ebp - 0x24]
inc esi
shl edi, cl
add ecx, 8
add dword [ebp - 0x18], edi
mov edi, ebx
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x24], ecx
dec edi
cmp ecx, edx
jb 0x4069c8
mov edx, dword [ebp - 0x18]
mov ecx, eax
mov dword [ebp - 0x20], edi
shr edx, cl
mov ecx, edx
shr edx, 7
and ecx, 0x7f
mov dword [ebp - 0x18], edx
mov edx, 0xfffffff9
add ecx, 0xb
sub edx, eax
xor eax, eax
add dword [ebp - 0x24], edx
mov edi, dword [ebp - 0x44]
lea edx, [ecx + edi]
cmp edx, dword [ebp - 0x48]
ja 0x4077c8
lea edx, [edi + 1]
dec ecx
mov dword [ebp - 0x28], esi
mov dword [ebx + 0x6c], edx
mov word [ebx + edi*2 + 0x74], ax
je 0x406a49
mov edx, dword [ebx + 0x6c]
mov ebx, dword [ebp - 0x1c]
dec ecx
lea edi, [edx + 1]
mov dword [ebx + 0x6c], edi
mov ebx, dword [ebp - 0x1c]
mov word [ebx + edx*2 + 0x74], ax
jne 0x406a32
mov edi, dword [ebp - 0x20]
mov eax, dword [ebx + 0x64]
mov edx, dword [ebx + 0x68]
mov ecx, dword [ebx + 0x6c]
mov dword [ebp - 0x20], edi
add edx, eax
cmp ecx, edx
jb 0x406865
mov ecx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x28]
mov edi, dword [ebp - 0x20]
cmp dword [ecx], 0x3f51
mov ecx, dword [ebp - 0x3c]
jne 0x406a81
mov dword [ebp - 0x3c], ecx
jmp 0x4076e4
mov ecx, dword [ebp - 0x3c]
cmp word [ebx + 0x274], 0
je 0x406c5e
mov ecx, dword [ebp - 0x68]
mov dword [ebp - 0x20], edi
mov dword [ebx + 0x70], ecx
mov dword [ebx + 0x50], ecx
mov dword [ebx + 0x58], 9
push dword [ebp - 0x58]
push dword [ebp - 0x60]
mov edi, dword [ebp - 0x64]
push edi
push eax
push dword [ebp - 0x5c]
push 1
call fcn.0042d150
add esp, 0x18
test eax, eax
je 0x406cdf
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x38], eax
mov dword [ecx + 0x18], str.invalid_literal_lengths_set
jmp 0x406d1d
sub ecx, edi
mov ebx, edi
mov edx, dword [eax + 0x44]
add ecx, dword [eax + 0x38]
mov eax, dword [ebp - 0x34]
cmp ebx, edx
cmova ebx, edx
cmp ebx, eax
cmova ebx, eax
cmp eax, 0xf
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x28], ebx
jg 0x406b69
mov dword [ebp - 0x30], eax
test bl, 8
mov eax, ebx
je 0x406b18
movq xmm0, qword [ecx]
mov edx, eax
mov eax, dword [ebp - 0x30]
add ecx, 8
movq qword [eax], xmm0
add eax, 8
mov dword [ebp - 0x30], eax
mov eax, edx
mov edi, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x1c]
test al, 4
je 0x406b35
mov edx, dword [ecx]
mov eax, dword [ebp - 0x30]
add ecx, 4
mov dword [eax], edx
add eax, 4
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x28]
test al, 2
je 0x406b4e
movzx edx, word [ecx]
mov eax, dword [ebp - 0x30]
add ecx, 2
mov word [eax], dx
add eax, 2
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x3c]
test al, 1
je 0x4071f3
mov cl, byte [ecx]
mov eax, dword [ebp - 0x30]
mov byte [eax], cl
inc eax
mov dword [ebp - 0x30], eax
jmp 0x4071f0
movdqu xmm0, xmmword [ecx]
lea edx, [ebx - 1]
mov edi, edx
and edi, 0xf
shr edx, 4
movdqu xmmword [eax], xmm0
lea eax, [eax + edi + 1]
je 0x406b96
inc edi
add ecx, edi
movdqu xmm0, xmmword [ecx]
dec edx
lea ecx, [ecx + 0x10]
movdqu xmmword [eax], xmm0
lea eax, [eax + 0x10]
jne 0x406b85
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x30], eax
mov edx, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x20]
jmp 0x4071f0
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x3f40
jmp 0x4077b0
xor eax, eax
jmp 0x40725e
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov eax, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x28]
jmp 0x406d20
mov eax, dword [ebp + 8]
mov dword [ebp - 0x24], edx
mov dword [eax + 0x18], str.invalid_stored_block_lengths
jmp 0x4077a7
mov eax, 0x3f44
jmp case.0x406418.0
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_block_type
mov eax, 0x3f51
mov ecx, dword [ebp - 0x2c]
mov dword [ecx], eax
mov eax, ecx
shr edx, 3
add esi, 0xfffffffd
mov dword [ebp - 0x24], esi
mov esi, edi
mov dword [ebp - 0x18], edx
mov edi, ebx
jmp 0x4077b0
mov ecx, eax
mov eax, dword [ebp - 0x30]
dec ecx
mov edi, eax
sub edi, edx
movdqu xmm0, xmmword [edi]
mov edi, ecx
and edi, 0xf
shr ecx, 4
movdqu xmmword [eax], xmm0
lea eax, [eax + edi + 1]
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0x30], eax
je 0x4071ea
mov ebx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x30]
neg edx
movdqu xmm0, xmmword [eax + edx]
dec ecx
movdqu xmmword [eax], xmm0
lea eax, [eax + 0x10]
jne 0x406c47
mov dword [ebp - 0x30], eax
jmp 0x4071ed
mov eax, dword [ebp + 8]
mov dword [ebp - 0x3c], ecx
mov dword [eax + 0x18], str.invalid_code____missing_end_of_block
jmp 0x4077a7
mov dword [ebx + 0x14], 0
mov dword [ebp - 0x24], edx
mov ecx, dword [ebx + 0x24]
test ecx, ecx
je 0x406c8b
mov dword [ecx + 0x30], 0xffffffff
mov eax, dword [ebx + 0xc]
test al, 1
je 0x406cc2
mov ecx, dword [ebp - 0x18]
mov edx, 0x8421085
mov eax, ecx
shr ecx, 8
shl eax, 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 eax, edx
add eax, ecx
je 0x40770b
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.incorrect_header_check
jmp 0x4077a7
mov edx, dword [ebp - 0x3c]
mov edi, ebx
mov ebx, eax
xor eax, eax
jmp 0x4071f3
mov eax, dword [ebx + 0x70]
mov dword [ebx + 0x54], eax
mov dword [ebx + 0x5c], 6
mov eax, dword [ebx + 0x64]
lea eax, [ebx + eax*2 + 0x74]
push dword [ebp - 0x58]
push dword [ebp - 0x6c]
push edi
push dword [ebx + 0x68]
push eax
push 2
call fcn.0042d150
add esp, 0x18
test eax, eax
je 0x4072d0
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x38], eax
mov dword [ecx + 0x18], str.invalid_distances_set
mov eax, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x20]
jmp 0x4077aa
mov eax, dword [ebx + 0x24]
mov ecx, edx
test eax, eax
je 0x406d3e
mov ecx, edx
shr ecx, 8
and ecx, 1
mov dword [eax], ecx
mov ecx, dword [ebx + 0x14]
bt ecx, 9
jae 0x406d6e
test byte [ebx + 0xc], 4
je 0x406d6e
mov ecx, dword [ebp - 0x18]
lea eax, [ebp - 0x14]
mov byte [eax], cl
mov byte [eax + 1], ch
push 2
push eax
mov ebx, esi
mov esi, dword [ebp - 0x4c]
push dword [esi]
call fcn.0042d14a
add esp, 0xc
mov dword [esi], eax
mov esi, ebx
mov ebx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x2c]
xor edx, edx
mov dword [ebp - 0x18], 0
mov dword [eax], 0x3f36
test edi, edi
je 0x40780b
movzx eax, byte [esi]
mov ecx, edx
add edx, 8
dec edi
inc esi
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, 0x20
jb 0x406d80
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x406da9
mov ecx, dword [ebp - 0x18]
mov dword [eax + 4], ecx
test byte [ebx + 0x15], 2
je 0x406de7
test byte [ebx + 0xc], 4
je 0x406de7
mov edx, dword [ebp - 0x18]
lea eax, [ebp - 0x14]
mov ecx, edx
mov byte [eax], dl
mov byte [eax + 1], dh
shr edx, 0x18
shr ecx, 0x10
mov byte [eax + 2], cl
mov byte [eax + 3], dl
push 4
push eax
mov ebx, esi
mov esi, dword [ebp - 0x4c]
push dword [esi]
call fcn.0042d14a
add esp, 0xc
mov dword [esi], eax
mov esi, ebx
mov ebx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x2c]
xor edx, edx
mov dword [ebp - 0x18], 0
mov dword [eax], 0x3f37
test edi, edi
je 0x40780b
movzx eax, byte [esi]
mov ecx, edx
add edx, 8
dec edi
inc esi
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, 0x10
jb 0x406df9
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x406e2e
mov edx, dword [ebp - 0x18]
movzx ecx, dl
shr edx, 8
mov dword [eax + 8], ecx
mov ecx, dword [ebx + 0x24]
mov dword [ecx + 0xc], edx
test byte [ebx + 0x15], 2
je 0x406e5b
test byte [ebx + 0xc], 4
je 0x406e5b
mov ecx, dword [ebp - 0x18]
lea eax, [ebp - 0x14]
mov byte [eax], cl
mov byte [eax + 1], ch
push 2
push eax
mov ebx, esi
mov esi, dword [ebp - 0x4c]
push dword [esi]
call fcn.0042d14a
add esp, 0xc
mov dword [esi], eax
mov esi, ebx
mov eax, dword [ebp - 0x2c]
xor edx, edx
mov dword [ebp - 0x18], 0
mov dword [eax], 0x3f38
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ecx + 0x14]
bt eax, 0xa
jb 0x406e8e
mov eax, dword [ecx + 0x24]
mov ebx, edi
test eax, eax
je 0x406e89
mov dword [eax + 0x10], 0
mov edi, dword [ebp - 0x18]
jmp 0x406f0d
cmp edx, 0xf
ja 0x406eb1
test edi, edi
je 0x40780b
mov ecx, edx
movzx edx, byte [esi]
dec edi
inc esi
shl edx, cl
add dword [ebp - 0x18], edx
mov edx, ecx
add edx, 8
cmp edx, 0x10
jb 0x406e93
mov ebx, edi
mov edx, dword [ebp - 0x18]
mov edi, dword [ebp - 0x1c]
mov dword [edi + 0x44], edx
mov ecx, dword [edi + 0x24]
test ecx, ecx
je 0x406ec9
mov dword [ecx + 0x14], edx
mov eax, dword [edi + 0x14]
mov ecx, dword [ebp - 0x3c]
xor edi, edi
bt eax, 9
jae 0x406edd
mov eax, dword [ebp - 0x1c]
test byte [eax + 0xc], 4
jne 0x406ee2
mov dword [ebp - 0x3c], ecx
jmp 0x406f0b
mov edx, dword [ebp - 0x18]
lea ecx, [ebp - 0x14]
mov eax, edx
mov byte [ecx], al
mov byte [ecx + 1], dh
push 2
push ecx
mov dword [ebp - 0x20], ebx
mov ebx, esi
mov esi, dword [ebp - 0x4c]
push dword [esi]
call fcn.0042d14a
add esp, 0xc
mov dword [esi], eax
mov esi, ebx
mov ebx, dword [ebp - 0x20]
xor edx, edx
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x18], edi
mov edi, ebx
mov dword [eax], 0x3f39
mov ebx, dword [ebp - 0x1c]
mov eax, dword [ebx + 0x14]
bt eax, 0xa
jae 0x406fd7
mov ecx, dword [ebx + 0x44]
mov dword [ebp - 0x44], eax
cmp ecx, edi
mov eax, ecx
cmova eax, edi
test eax, eax
mov dword [ebp - 0x28], eax
je 0x406fcf
mov dword [ebp - 0x20], edi
mov edi, dword [ebx + 0x24]
mov dword [ebp - 0x24], edx
test edi, edi
je 0x406f85
mov edx, dword [edi + 0x10]
mov eax, dword [ebp - 0x44]
test edx, edx
je 0x406f88
mov ebx, dword [edi + 0x14]
mov edi, dword [edi + 0x18]
sub ebx, ecx
mov ecx, dword [ebp - 0x28]
mov eax, edi
add edx, ebx
sub eax, ebx
add ebx, ecx
cmp ebx, edi
cmovbe eax, ecx
push eax
push esi
push edx
call fcn.00498e50
add esp, 0xc
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x14]
jmp 0x406f88
mov eax, dword [ebp - 0x44]
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x20]
bt eax, 9
jae 0x406fba
test byte [ebx + 0xc], 4
je 0x406fba
push dword [ebp - 0x28]
push esi
mov edi, esi
mov esi, dword [ebp - 0x4c]
push dword [esi]
call fcn.0042d14a
mov edx, dword [ebp - 0x3c]
add esp, 0xc
mov dword [esi], eax
mov esi, edi
mov edi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebx + 0x44]
mov dword [ebp - 0x3c], edx
mov edx, dword [ebp - 0x24]
sub ecx, eax
sub edi, eax
add esi, eax
mov dword [ebx + 0x44], ecx
test ecx, ecx
jne 0x40780d
mov dword [ebx + 0x44], 0
mov dword [ebx + 4], 0x3f3a
mov ecx, dword [ebp - 0x1c]
test byte [ecx + 0x15], 8
jne 0x407005
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x40708d
mov dword [eax + 0x1c], 0
jmp 0x40708d
test edi, edi
je 0x40780b
mov dword [ebp - 0x20], edi
xor edi, edi
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x28], esi
mov eax, dword [ebp - 0x1c]
mov bl, byte [esi + edi]
inc edi
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x407047
mov eax, dword [ecx + 0x1c]
test eax, eax
je 0x407047
mov edx, dword [ebp - 0x1c]
mov edx, dword [edx + 0x44]
cmp edx, dword [ecx + 0x20]
jae 0x407047
mov esi, dword [ebp - 0x1c]
lea ecx, [edx + 1]
mov dword [esi + 0x44], ecx
mov esi, dword [ebp - 0x28]
mov byte [eax + edx], bl
test bl, bl
je 0x407050
cmp dword [ebp - 0x20], edi
ja 0x407018
mov eax, dword [ebp - 0x1c]
test byte [eax + 0x15], 2
je 0x407076
mov eax, dword [ebp - 0x1c]
test byte [eax + 0xc], 4
je 0x407076
push edi
push esi
mov esi, dword [ebp - 0x4c]
push dword [esi]
call fcn.0042d14a
add esp, 0xc
mov dword [esi], eax
mov esi, dword [ebp - 0x28]
test bl, bl
jne 0x4079e6
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x24]
add esi, edi
sub eax, edi
mov edi, eax
mov dword [ecx + 0x44], 0
mov dword [ecx + 4], 0x3f3b
mov eax, dword [ebp - 0x1c]
test byte [eax + 0x15], 0x10
jne 0x4070bb
mov eax, dword [eax + 0x24]
test eax, eax
je 0x407140
mov dword [eax + 0x24], 0
jmp 0x407140
test edi, edi
je 0x40780b
mov dword [ebp - 0x20], edi
xor edi, edi
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x28], esi
mov eax, dword [ebp - 0x1c]
mov bl, byte [esi + edi]
inc edi
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x4070fd
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x4070fd
mov edx, dword [ebp - 0x1c]
mov edx, dword [edx + 0x44]
cmp edx, dword [ecx + 0x28]
jae 0x4070fd
mov esi, dword [ebp - 0x1c]
lea ecx, [edx + 1]
mov dword [esi + 0x44], ecx
mov esi, dword [ebp - 0x28]
mov byte [eax + edx], bl
test bl, bl
je 0x407106
cmp dword [ebp - 0x20], edi
ja 0x4070ce
mov eax, dword [ebp - 0x1c]
test byte [eax + 0x15], 2
je 0x40712c
mov eax, dword [ebp - 0x1c]
test byte [eax + 0xc], 4
je 0x40712c
push edi
push esi
mov esi, dword [ebp - 0x4c]
push dword [esi]
call fcn.0042d14a
add esp, 0xc
mov dword [esi], eax
mov esi, dword [ebp - 0x28]
test bl, bl
jne 0x4079e6
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x24]
add esi, edi
sub eax, edi
mov edi, eax
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x3f3c
mov ebx, dword [ebp - 0x1c]
mov eax, dword [ebx + 0x14]
bt eax, 9
jae 0x407192
cmp edx, 0xf
ja 0x407178
test edi, edi
je 0x40780b
mov ecx, edx
movzx edx, byte [esi]
dec edi
inc esi
shl edx, cl
add dword [ebp - 0x18], edx
mov edx, ecx
add edx, 8
cmp edx, 0x10
jb 0x40715a
test byte [ebx + 0xc], 4
je 0x407189
mov ecx, dword [ebp - 0x4c]
movzx ecx, word [ecx]
cmp dword [ebp - 0x18], ecx
jne 0x4071d4
xor edx, edx
mov dword [ebp - 0x18], 0
mov ecx, dword [ebx + 0x24]
mov dword [ebp - 0x24], edx
test ecx, ecx
je 0x4071ae
shr eax, 9
and eax, 1
mov dword [ecx + 0x2c], eax
xor ecx, ecx
mov eax, dword [ebx + 0x24]
inc ecx
mov dword [eax + 0x30], ecx
xor eax, eax
push eax
push eax
push eax
call fcn.0042d14a
add esp, 0xc
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ebp + 8]
mov dword [ecx], eax
mov dword [edx + 0x30], eax
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x3f3f
jmp 0x4077b0
mov eax, dword [ebp + 8]
mov dword [ebp - 0x24], edx
mov dword [eax + 0x18], str.header_crc_mismatch
jmp 0x4077a7
mov eax, ebx
jmp 0x407221
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x34]
jmp 0x4076d7
push ebx
push eax
push ecx
call fcn.0042ce49
add esp, 0xc
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp + 8]
mov dword [ecx + 0x1c], eax
mov dword [edx + 0x30], eax
mov edx, esi
mov esi, edi
mov edi, dword [ebp - 0x20]
mov eax, dword [ecx + 0xc]
mov ecx, eax
and ecx, 4
test ecx, ecx
je 0x40724c
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 0x18]
cmp dword [ebx + 0x14], 0
mov ecx, edx
bswap ecx
cmovne ecx, edx
cmp ecx, dword [ebx + 0x1c]
jne 0x4072b8
mov ecx, dword [ebp - 0x34]
xor edx, edx
mov dword [ebp - 0x18], 0
jmp 0x40725b
mov ecx, dword [ebp - 0x34]
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x18], 0
xor edx, edx
mov dword [ebp - 0x3c], ecx
mov ecx, dword [ebp - 0x2c]
mov dword [ecx], 0x3f4f
test eax, eax
je 0x407a04
cmp dword [ebx + 0x14], 0
je 0x407a04
cmp edx, 0x1f
ja 0x40729a
test edi, edi
je 0x40780b
movzx eax, byte [esi]
mov ecx, edx
add edx, 8
dec edi
inc esi
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, 0x20
jb 0x40727e
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebx + 0x20]
je 0x407a3a
mov eax, dword [ebp + 8]
mov dword [ebp - 0x24], edx
mov dword [eax + 0x18], str.incorrect_length_check
jmp 0x4077a7
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x34]
mov dword [eax + 0x18], str.incorrect_data_check
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x3c], ecx
jmp 0x4077aa
mov eax, dword [ebp - 0x2c]
cmp dword [ebp + 0xc], 6
mov edx, dword [ebp - 0x24]
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0x38], 0
mov dword [eax], 0x3f47
je 0x407a72
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x3f48
mov eax, dword [ebp - 0x34]
cmp eax, 0x102
jb 0x40736d
cmp edi, 6
jb 0x40736d
mov ebx, dword [ebp + 8]
mov ecx, dword [ebp - 0x30]
mov dword [ebx + 0xc], ecx
mov dword [ebx + 0x10], eax
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x1c]
mov dword [ebx], esi
mov dword [ebx + 4], edi
mov dword [ecx + 0x3c], eax
mov dword [ecx + 0x40], edx
push dword [ebp - 0x3c]
push ebx
call fcn.004053b0
add esp, 8
mov eax, dword [ebx + 0xc]
mov ecx, dword [ebx + 0x10]
mov esi, dword [ebx]
mov edi, dword [ebx + 4]
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x34], ecx
mov edx, dword [ebx + 0x3c]
cmp dword [ebx + 4], 0x3f3f
mov ecx, dword [ebx + 0x40]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x24], ecx
jne 0x4076e4
mov dword [ebx + 0x1bc8], 0xffffffff
jmp 0x4076e4
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x24], edx
mov dword [eax + 0x1bc8], 0
mov cl, byte [eax + 0x58]
mov edi, dword [eax + 0x50]
xor eax, eax
dec eax
shl eax, cl
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x44], edi
not eax
mov esi, eax
and ecx, eax
mov al, byte [edi + ecx*4 + 1]
movzx ebx, al
mov dword [ebp - 0x48], eax
cmp edx, ebx
jae 0x4073e9
mov edi, dword [ebp - 0x20]
test edi, edi
je 0x407826
mov ecx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x24]
dec edi
movzx eax, byte [ecx]
inc ecx
mov dword [ebp - 0x28], ecx
mov ecx, edx
add edx, 8
mov dword [ebp - 0x24], edx
shl eax, cl
mov ecx, dword [ebp - 0x18]
add ecx, eax
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x18], ecx
and ecx, esi
mov al, byte [eax + ecx*4 + 1]
movzx ebx, al
cmp edx, ebx
jb 0x4073ab
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x20], edi
mov esi, dword [ebp - 0x44]
movzx eax, word [esi + ecx*4 + 2]
movzx ecx, byte [esi + ecx*4]
mov edx, ecx
test ecx, ecx
je 0x40748a
mov edi, ecx
and edi, 0xfffffff0
jne 0x40748a
add ecx, ebx
xor edx, edx
mov edi, dword [ebp - 0x18]
movzx eax, ax
dec edx
shl edx, cl
mov ecx, ebx
not edx
and edi, edx
mov dword [ebp - 0x48], edx
mov edx, eax
shr edi, cl
add edi, eax
movzx eax, byte [esi + edi*4 + 1]
lea ecx, [ebx + eax]
cmp ecx, dword [ebp - 0x24]
jbe 0x4074a1
mov esi, dword [ebp - 0x20]
mov dword [ebp - 0x50], ebx
mov ebx, edx
test esi, esi
je 0x407826
mov eax, dword [ebp - 0x28]
mov edi, dword [ebp - 0x18]
dec esi
movzx edx, byte [eax]
inc eax
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x24]
mov ecx, eax
add eax, 8
shl edx, cl
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 0x24], eax
add edi, edx
mov edx, dword [ebp - 0x44]
mov dword [ebp - 0x18], edi
and edi, dword [ebp - 0x48]
shr edi, cl
add edi, ebx
movzx edx, byte [edx + edi*4 + 1]
lea ecx, [ecx + edx]
cmp ecx, eax
ja 0x40743b
mov dword [ebp - 0x20], esi
mov ebx, dword [ebp - 0x50]
mov esi, dword [ebp - 0x44]
mov dword [ebp - 0x48], edx
jmp 0x4074a4
mov word [ebp - 0x52], ax
mov byte [ebp - 0x50], dl
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x24]
mov dword [ebp - 0x44], ecx
xor ebx, ebx
jmp 0x4074d0
mov dword [ebp - 0x48], eax
mov ch, byte [esi + edi*4]
movzx eax, word [esi + edi*4 + 2]
mov esi, dword [ebp - 0x24]
mov edi, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x18]
mov cl, bl
mov word [ebp - 0x52], ax
shr edx, cl
mov byte [ebp - 0x50], ch
movzx ecx, ch
sub esi, ebx
mov eax, edi
mov dword [edi + 0x1bc8], ebx
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0x48]
movzx edi, cl
shr edx, cl
sub esi, edi
add ebx, edi
movzx edi, word [ebp - 0x52]
cmp byte [ebp - 0x50], 0
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x24], esi
mov esi, eax
mov dword [eax + 0x1bc8], ebx
mov dword [esi + 0x44], edi
je 0x407533
mov ecx, dword [ebp - 0x44]
mov edi, dword [ebp - 0x30]
mov ebx, esi
mov eax, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x28]
test cl, 0x20
mov dword [ebp - 0x30], edi
jne 0x407547
mov dword [ebp - 0x44], ecx
test cl, 0x40
mov ecx, dword [ebp + 8]
jne 0x407560
mov eax, dword [ebp - 0x44]
mov edx, dword [ebp - 0x24]
mov edi, dword [ebp - 0x20]
and eax, 0xf
mov dword [ebx + 0x4c], eax
mov dword [ebx + 4], 0x3f49
jmp 0x4062ce
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x3f4d
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x28]
jmp 0x4077b0
mov edi, dword [ebp - 0x20]
mov dword [ebx + 0x1bc8], 0xffffffff
mov dword [ebx + 4], 0x3f3f
jmp 0x4077b0
mov dword [ecx + 0x18], str.invalid_literal_length_code
jmp 0x406d20
mov ebx, dword [ebp - 0x30]
movzx edx, word [ebx - 2]
movd xmm0, edx
pshuflw xmm0, xmm0, 0xe0
pshufd xmm0, xmm0, 0
movdqu xmmword [ebx], xmm0
add ebx, edi
cmp eax, edi
je 0x4076fa
mov eax, dword [ebp - 0x34]
not ecx
movzx edx, word [ebx - 2]
not eax
movd xmm0, edx
cmp eax, ecx
pshuflw xmm0, xmm0, 0xe0
cmova ecx, eax
mov eax, dword [ebp - 0x48]
pshufd xmm0, xmm0, 0
lea ecx, [ecx + eax + 2]
mov eax, ebx
mov ebx, dword [ebp - 0x1c]
mov edx, 0x10
movdqu xmmword [eax], xmm0
add eax, 0x10
add ecx, edx
jne 0x4075b9
jmp 0x4076c8
mov ebx, dword [ebp - 0x30]
mov edi, edx
mov ecx, eax
neg edi
mov eax, dword [ebp - 0x30]
sub ecx, edx
movdqu xmm0, xmmword [eax + edi]
movdqu xmmword [ebx], xmm0
add ebx, edx
add edx, edx
cmp edx, 0xf
ja 0x4075f2
cmp edx, ecx
jb 0x4075d7
mov edi, ebx
dec ecx
sub edi, edx
mov edx, ecx
movdqu xmm0, xmmword [edi]
and edx, 0xf
shr ecx, 4
lea eax, [ebx + edx + 1]
mov dword [ebp - 0x30], eax
movdqu xmmword [ebx], xmm0
je 0x40675b
mov eax, dword [ebp - 0x30]
inc edx
add edi, edx
movdqu xmm0, xmmword [edi]
dec ecx
lea edi, [edi + 0x10]
movdqu xmmword [eax], xmm0
lea eax, [eax + 0x10]
jne 0x40761a
jmp 0x406b96
mov ebx, dword [ebp - 0x30]
movd xmm0, dword [ebx - 4]
pshufd xmm0, xmm0, 0
movdqu xmmword [ebx], xmm0
add ebx, edi
cmp eax, edi
je 0x4076fa
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x48]
not ecx
movd xmm0, dword [ebx - 4]
not edx
pshufd xmm0, xmm0, 0
cmp edx, ecx
cmova ecx, edx
lea ecx, [ecx + eax + 2]
mov eax, ebx
mov ebx, dword [ebp - 0x1c]
mov edx, 0x10
movdqu xmmword [eax], xmm0
add eax, 0x10
add ecx, edx
jne 0x40766d
jmp 0x4076c8
mov ebx, dword [ebp - 0x30]
movq xmm0, qword [ebx - 8]
pshufd xmm0, xmm0, 0x44
movdqu xmmword [ebx], xmm0
add ebx, edi
cmp eax, edi
je 0x4076fa
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x48]
not ecx
movq xmm0, qword [ebx - 8]
not edx
pshufd xmm0, xmm0, 0x44
cmp edx, ecx
cmova ecx, edx
lea ecx, [ecx + eax + 2]
mov eax, ebx
mov ebx, dword [ebp - 0x1c]
mov edx, 0x10
movdqu xmmword [eax], xmm0
add eax, 0x10
add ecx, edx
jne 0x4076b8
mov dword [ebp - 0x30], eax
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x34]
mov edi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x28]
sub ecx, eax
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x34], ecx
sub dword [ebx + 0x44], eax
je 0x4076ec
mov eax, dword [ebp - 0x2c]
jmp 0x4077b0
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x3f48
jmp 0x4077b0
mov dword [ebp - 0x30], ebx
mov ecx, dword [ebp - 0x34]
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x3c]
jmp 0x4077c0
mov ecx, dword [ebp - 0x18]
mov eax, ecx
and eax, 0xf
cmp eax, 8
jne 0x40779d
mov eax, ecx
mov dword [ebp - 0x20], edi
mov edi, dword [ebx + 0x28]
shr eax, 4
mov ecx, eax
and ecx, 0xf
lea edx, [ecx + 8]
test edi, edi
jne 0x40773f
mov edi, esi
mov esi, dword [ebp - 0x1c]
mov dword [esi + 0x28], edx
mov esi, edi
mov edi, edx
cmp edx, 0xf
ja 0x4077d7
cmp edx, edi
ja 0x4077d7
mov ebx, dword [ebp - 0x1c]
mov eax, 0x100
shl eax, cl
mov dword [ebx + 0x18], eax
xor eax, eax
push eax
push eax
mov dword [ebp - 0x24], 0
push eax
call fcn.0042ce49
add esp, 0xc
mov ecx, dword [ebp + 8]
mov dword [ebx + 0x1c], eax
mov edi, dword [ebp - 0x20]
mov dword [ecx + 0x30], eax
xor eax, eax
bt dword [ebp - 0x18], 0xd
mov dword [ebp - 0x18], 0
setae al
lea eax, [eax + eax + 0x3f3d]
mov dword [ebx + 4], eax
jmp 0x4076e4
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.unknown_compression_method
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x3f51
mov eax, dword [eax]
jmp 0x405f00
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x34]
mov edi, dword [ebp - 0x20]
jmp 0x4076d7
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
jmp 0x406d1d
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 0x2c]
add dword [ebp - 0x24], 0xfffffffc
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0x18], eax
mov dword [ecx + 0x18], str.invalid_window_size
mov dword [edx], 0x3f51
jmp 0x4060d9
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x18], edx
mov dword [edi + 0x18], str.invalid_bit_length_repeat
jmp 0x406bc6
xor edi, edi
mov eax, dword [ebp - 0x38]
jmp 0x407831
cmp dword [edi + 4], 0
je 0x405e66
mov esi, 0xfffffffe
jmp 0x405e41
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x24]
mov esi, dword [ebp - 0x28]
xor edi, edi
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x18]
cmp eax, 0x10
jb 0x407859
mov ebx, edi
mov edi, dword [ebp - 0x30]
mov dword [ebp - 0x34], eax
mov eax, 0x55555555
mov dword [edi + 0xc], eax
mov dword [edi + 8], eax
mov dword [edi + 4], eax
mov dword [edi], eax
jmp 0x407885
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 0x40]
mov ebx, edi
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x34], eax
push eax
push 0x55
mov edi, dword [ebp - 0x30]
push edi
call fcn.00499950
add esp, 0xc
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp + 8]
mov dword [eax + 0xc], edi
mov edi, dword [ebp - 0x34]
mov dword [eax + 0x10], edi
mov dword [eax], esi
mov dword [eax + 4], ebx
mov ebx, dword [ebp - 0x1c]
mov edi, eax
mov dword [ebx + 0x3c], ecx
mov dword [ebx + 0x40], edx
mov edx, dword [ebp - 0x3c]
cmp dword [ebx + 0x2c], 0
mov eax, dword [eax + 0x10]
je 0x4078d8
mov esi, edx
mov ebx, edx
mov edx, dword [edi + 0xc]
mov ecx, edi
sub esi, eax
push esi
call fcn.00407a7e
add esp, 4
test eax, eax
je 0x4078ff
mov eax, dword [ebp - 0x2c]
mov dword [eax], 0x3f52
mov esi, 0xfffffffc
jmp 0x405e41
mov esi, dword [ebp + 0xc]
cmp edx, eax
mov ecx, edx
je 0x407907
mov ecx, dword [ebp - 0x2c]
mov ecx, dword [ecx]
cmp ecx, 0x3f50
jg 0x4078fb
cmp esi, 4
jne 0x4078ad
cmp ecx, 0x3f4d
jle 0x4078ad
mov ecx, eax
jmp 0x407907
mov edx, ebx
mov ecx, dword [edi + 0x10]
mov ebx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x74]
sub edx, ecx
sub eax, dword [edi + 4]
add dword [edi + 8], eax
add dword [edi + 0x14], edx
add dword [ebx + 0x20], edx
mov esi, eax
test edx, edx
je 0x407958
mov eax, dword [ebx + 0xc]
and eax, 4
je 0x407958
mov eax, dword [edi + 0xc]
mov ecx, dword [ebx + 0x1c]
sub eax, edx
cmp dword [ebx + 0x14], 0
mov ebx, edx
je 0x407940
push edx
push eax
push ecx
call fcn.0042d14a
jmp 0x407948
push edx
push eax
push ecx
call fcn.0042ce49
add esp, 0xc
mov ecx, dword [ebp - 0x4c]
mov edx, ebx
mov ebx, dword [ebp - 0x1c]
mov dword [ecx], eax
mov dword [edi + 0x30], eax
xor eax, eax
xor ecx, ecx
cmp dword [ebx + 8], eax
mov eax, ebx
setne cl
shl ecx, 6
add ecx, dword [ebx + 0x40]
mov ebx, edx
mov edx, dword [eax + 4]
xor eax, eax
cmp edx, 0x3f3f
sete al
shl eax, 7
add eax, ecx
xor ecx, ecx
cmp edx, 0x3f42
sete cl
shl ecx, 8
cmp edx, 0x3f47
mov edx, 0x100
cmovne edx, ecx
add edx, eax
or ebx, esi
mov eax, 0xfffffffb
mov dword [edi + 0x2c], edx
mov edx, dword [ebp - 0x40]
mov esi, edx
cmove esi, eax
cmp dword [ebp + 0xc], 4
cmove esi, eax
test edx, edx
cmovne esi, edx
jmp 0x405e41
mov eax, dword [ebp - 0x38]
mov esi, dword [ebp - 0x28]
xor edi, edi
mov edx, ecx
jmp 0x407831
mov dword [ebp - 0x40], 0xfffffffd
jmp case.0x405f11.16208
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x24]
jmp 0x40782f
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x24]
add esi, edi
sub eax, edi
mov dword [ebp - 0x40], ecx
mov edi, eax
jmp case.0x405f11.16208
mov ebx, edi
jmp 0x407867
mov eax, dword [ebp - 0x18]
jmp 0x407a3e
mov eax, dword [ebp - 0x30]
mov ebx, dword [ebp + 8]
mov dword [ebx + 0xc], eax
mov eax, dword [ebp - 0x34]
mov dword [ebx + 0x10], eax
mov dword [ebx], esi
mov esi, dword [ebp - 0x18]
mov dword [ebx + 4], edi
mov dword [ecx + 0x3c], esi
mov dword [ecx + 0x40], edx
mov esi, 2
jmp 0x405e41
mov eax, dword [ebp - 0x38]
mov edi, ecx
jmp 0x407831
xor eax, eax
xor edx, edx
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x18], eax
mov dword [ecx], 0x3f50
jmp case.0x405f11.16208
xor edx, edx
jmp 0x40780d
mov ecx, dword [ebp - 0x38]
mov eax, edx
mov edx, esi
mov esi, edi
mov edi, ebx
shr eax, 3
add edx, 0xfffffffd
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x40], ecx
jmp case.0x405f11.16208
mov dword [ebp - 0x40], 0
jmp case.0x405f11.16208