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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x64
mov eax, dword [0x5599f4]
mov ebx, dword [ebp + 8]
xor eax, ebp
mov ecx, ebx
mov dword [ebp - 0x10], eax
call fcn.004060ca
mov esi, 0xfffffffe
test eax, eax
je 0x4062be
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004d4bc8
mov eax, esi
add esp, 0x64
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, dword [ebx + 0xc]
test edx, edx
je 0x4062aa
mov esi, dword [ebx]
test esi, esi
je 0x407c29
mov eax, dword [ebx + 0x1c]
lea edi, [eax + 4]
mov ecx, eax
mov eax, dword [eax + 4]
cmp eax, 0x3f3f
jne 0x4062f1
mov dword [edi], 0x3f40
mov eax, 0x3f40
mov esi, dword [ebx]
mov edx, dword [ebx + 0xc]
mov dword [ebp - 0x2c], esi
mov esi, ecx
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x28], edi
mov edi, dword [ebx + 4]
mov ebx, dword [ebx + 0x10]
mov dword [ebp - 0x34], 0
mov edx, dword [esi + 0x3c]
lea ecx, [ecx - 5]
mov dword [ebp - 0x70], edi
mov dword [ebp - 0x20], edi
mov edi, esi
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x50], ebx
mov dword [ebp - 0x6c], ecx
lea ecx, [esi + 0x5c]
mov dword [ebp - 0x18], edx
mov edx, dword [esi + 0x40]
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x68], ecx
lea ecx, [esi + 0x1c]
mov dword [ebp - 0x48], ecx
lea ecx, [esi + 0x58]
mov dword [ebp - 0x64], ecx
lea ecx, [esi + 0x534]
mov dword [ebp - 0x60], ecx
lea ecx, [esi + 0x70]
mov dword [ebp - 0x58], ecx
lea ecx, [esi + 0x2f4]
mov dword [ebp - 0x54], ecx
lea ecx, [esi + 0x74]
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x5c], ecx
xor ecx, ecx
inc ecx
mov dword [ebp - 0x3c], ecx
add eax, 0xffffc0cc
cmp eax, 0x1e
ja case.default.0x406376
mov ebx, dword [ebp - 0x20]
jmp dword [eax*4 + 0x50fb44]
mov eax, dword [edi + 0xc]
test eax, eax
mov dword [ebp - 0x1c], eax
je 0x406f3f
mov ecx, edx
cmp edx, 0xf
ja 0x406fb9
mov edx, dword [ebp - 0x18]
test ebx, ebx
mov dword [ebp - 0x18], edx
je 0x407c6b
movzx edx, byte [esi]
mov eax, ecx
dec ebx
inc esi
add eax, 8
shl edx, cl
mov ecx, dword [ebp - 0x18]
add ecx, edx
cmp eax, 0x10
mov edx, ecx
mov ecx, eax
jb 0x406399
jmp 0x406fbc
cmp edx, 0xf
ja 0x4063e4
test ebx, ebx
je 0x407c3d
movzx eax, byte [esi]
mov ecx, edx
add edx, 8
dec ebx
inc esi
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, 0x10
jb 0x4063c8
mov eax, dword [ebp - 0x18]
cmp al, 8
mov dword [edi + 0x14], eax
jne 0x406f54
test ah, 0xe0
je 0x407146
mov eax, dword [ebp + 8]
mov dword [ebp - 0x20], ebx
mov dword [eax + 0x18], str.unknown_header_flags_set
jmp 0x4076ce
cmp edx, 0x1f
jbe 0x40719e
jmp 0x4071ba
cmp edx, 0xf
jbe 0x40721a
jmp 0x407236
cmp edx, 0x1f
ja 0x40644a
test ebx, ebx
je 0x407c3d
movzx eax, byte [esi]
mov ecx, edx
add edx, 8
dec ebx
inc esi
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, 0x20
jb 0x40642e
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x48]
xor edx, edx
mov dword [ebp - 0x18], 0
bswap ecx
mov dword [eax], ecx
mov eax, dword [ebp + 8]
mov dword [eax + 0x30], ecx
mov ecx, dword [ebp - 0x28]
mov dword [ecx], 0x3f3e
cmp dword [edi + 0x10], 0
je 0x407e16
xor eax, eax
push eax
push eax
push eax
mov edi, edx
call fcn.00467d4c
mov edx, edi
mov edi, dword [ebp - 0x24]
add esp, 0xc
mov ecx, dword [ebp - 0x48]
mov dword [ecx], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x30], eax
mov ecx, dword [ebp - 0x28]
mov dword [ecx], 0x3f3f
cmp dword [ebp - 0x6c], 2
jb 0x407c3f
cmp dword [edi + 8], 0
je 0x4064c9
mov ecx, edx
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x20], ebx
and ecx, 7
shr dword [ebp - 0x18], cl
sub edx, ecx
mov dword [eax], 0x3f4e
jmp 0x407bc7
cmp edx, 2
ja 0x4067c7
test ebx, ebx
je 0x407c3d
movzx eax, byte [esi]
mov ecx, edx
lea edx, [edx + 8]
inc esi
dec ebx
shl eax, cl
mov ecx, dword [ebp - 0x18]
add ecx, eax
jmp 0x4067ca
mov ecx, edx
and ecx, 7
shr dword [ebp - 0x18], cl
sub edx, ecx
cmp edx, 0x1f
ja 0x40651b
test ebx, ebx
je 0x407c3d
movzx eax, byte [esi]
mov ecx, edx
add edx, 8
dec ebx
inc esi
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, 0x20
jb 0x4064ff
mov ecx, dword [ebp - 0x18]
movzx eax, cx
shr ecx, 0x10
xor ecx, 0xffff
cmp eax, ecx
jne 0x406f66
cmp dword [ebp + 0xc], 6
mov edx, 0
mov dword [edi + 0x44], eax
mov dword [ebp - 0x18], 0
mov dword [edi + 4], 0x3f42
je 0x407e6a
mov eax, dword [ebp - 0x28]
mov dword [eax], 0x3f43
mov edi, dword [edi + 0x44]
mov dword [ebp - 0x20], ebx
test edi, edi
je 0x4067bc
cmp edi, ebx
mov ecx, ebx
cmova edi, ebx
mov ebx, dword [ebp - 0x40]
cmp edi, ebx
cmova edi, ebx
test edi, edi
je 0x407e3f
push edi
push esi
push dword [ebp - 0x30]
mov dword [ebp - 0x1c], edx
call fcn.004d7b40
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x28]
add esp, 0xc
mov eax, dword [ebp - 0x24]
sub ebx, edi
sub dword [ebp - 0x20], edi
add dword [ebp - 0x30], edi
add esi, edi
mov dword [ebp - 0x40], ebx
sub dword [eax + 0x44], edi
mov edi, eax
mov eax, ecx
jmp 0x407bc7
mov edi, edx
cmp edx, 0xd
ja 0x406ab0
mov edx, dword [ebp - 0x18]
test ebx, ebx
je 0x407c56
movzx eax, byte [esi]
mov ecx, edi
dec ebx
inc esi
shl eax, cl
add ecx, 8
add edx, eax
mov edi, ecx
cmp ecx, 0xe
jb 0x4065c0
jmp 0x406ab3
mov eax, dword [edi + 0x60]
mov ecx, dword [edi + 0x6c]
mov ebx, edx
mov dword [ebp - 0x2c], esi
cmp ecx, eax
mov dword [ebp - 0x1c], eax
jb 0x406b1c
jmp 0x406b7c
mov ecx, dword [edi + 0x6c]
jmp 0x406bfd
mov ecx, dword [edi + 0x4c]
test ecx, ecx
jne 0x40662c
mov eax, dword [edi + 0x44]
jmp 0x40665d
test ebx, ebx
je 0x407c3d
movzx eax, byte [esi]
mov edi, ecx
mov ecx, edx
dec ebx
inc esi
add edx, 8
shl eax, cl
mov ecx, edi
add dword [ebp - 0x18], eax
cmp edx, ecx
jb 0x406611
xor eax, eax
mov edi, edx
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x2c], esi
mov esi, dword [ebp - 0x24]
inc eax
sub edi, ecx
shl eax, cl
dec eax
and eax, edx
add eax, dword [esi + 0x44]
mov dword [esi + 0x44], eax
add dword [esi + 0x1bc8], ecx
shr edx, cl
mov dword [ebp - 0x18], edx
mov edx, edi
mov edi, esi
mov esi, dword [ebp - 0x2c]
mov dword [edi + 0x1bcc], eax
mov dword [edi + 4], 0x3f4a
mov eax, edi
mov cl, byte [eax + 0x5c]
mov edi, dword [eax + 0x54]
xor eax, eax
inc eax
shl eax, cl
mov ecx, edx
mov dword [ebp - 0x38], edi
dec eax
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x20], eax
and eax, dword [ebp - 0x18]
mov dl, byte [edi + eax*4 + 1]
movzx edi, dl
cmp ecx, edi
mov dword [ebp - 0x44], edi
jae 0x4066ca
test ebx, ebx
je 0x407c44
movzx eax, byte [esi]
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x18]
dec ebx
inc esi
shl eax, cl
add ecx, 8
add edx, eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x18], edx
and eax, edx
mov edx, dword [ebp - 0x38]
mov dl, byte [edx + eax*4 + 1]
movzx edi, dl
cmp ecx, edi
jb 0x406694
mov dword [ebp - 0x44], edi
mov ecx, dword [ebp - 0x38]
movzx edi, word [ecx + eax*4 + 2]
movzx eax, byte [ecx + eax*4]
mov ecx, eax
test cl, 0xf0
je 0x40682f
mov dword [ebp - 0x20], ebx
mov ebx, dword [ebp - 0x24]
mov eax, ecx
mov word [ebp - 0x4a], di
mov dword [ebp - 0x2c], esi
mov ecx, dword [ebx + 0x1bc8]
jmp 0x4068cc
mov ecx, dword [edi + 0x4c]
mov eax, dword [ebp - 0x28]
jmp 0x40690b
mov eax, dword [ebp - 0x40]
test eax, eax
je 0x407e60
mov ecx, eax
mov ah, byte [edi + 0x44]
mov ebx, edi
mov edi, dword [ebp - 0x30]
dec ecx
mov dword [ebp - 0x40], ecx
mov byte [edi], ah
inc edi
mov dword [ebp - 0x30], edi
mov edi, ebx
mov dword [edi + 4], 0x3f48
jmp 0x407bc4
cmp dword [edi + 0xc], 0
je 0x406f4d
cmp edx, 0x1f
ja 0x40675e
test ebx, ebx
je 0x407c3d
movzx eax, byte [esi]
mov ecx, edx
add edx, 8
dec ebx
inc esi
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, 0x20
jb 0x406742
mov dword [ebp - 0x20], ebx
mov ebx, dword [ebp - 0x50]
mov eax, dword [ebp + 8]
mov dword [ebp - 0x2c], esi
sub ebx, dword [ebp - 0x40]
add dword [eax + 0x14], ebx
add dword [edi + 0x20], ebx
mov esi, ebx
mov dword [ebp - 0x1c], edx
mov eax, dword [edi + 0xc]
mov ecx, eax
and ecx, 4
test ebx, ebx
je 0x407602
mov ebx, dword [ebp - 0x20]
test ecx, ecx
je 0x407636
mov eax, dword [ebp - 0x30]
mov ecx, edi
sub eax, esi
cmp dword [ecx + 0x14], 0
mov ecx, dword [ecx + 0x1c]
je 0x407618
push esi
push eax
push ecx
call fcn.00467fee
jmp 0x407620
mov eax, dword [edi + 0xc]
jmp 0x40767f
mov eax, dword [ebp - 0x28]
mov edi, dword [ebp - 0x24]
jmp 0x4075dc
mov ecx, dword [ebp - 0x18]
mov eax, ecx
mov dword [ebp - 0x18], ecx
and eax, 1
mov dword [edi + 8], eax
mov eax, ecx
mov cl, 3
shr al, 1
and al, 3
cmp al, cl
je 0x406f8f
cmp al, 2
je 0x406fa0
cmp al, 1
mov eax, dword [ebp - 0x34]
mov ecx, 0x3f41
jne 0x406fa5
cmp dword [ebp + 0xc], 6
mov dword [edi + 0x50], 0x50f2c4
mov dword [edi + 0x58], 9
mov dword [edi + 0x54], 0x50fac4
mov dword [edi + 0x5c], 5
mov dword [edi + 4], 0x3f47
jne 0x406faa
jmp 0x407e71
movzx eax, di
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x44]
add ecx, eax
xor edx, edx
inc edx
shl edx, cl
mov ecx, eax
dec edx
and edi, edx
mov dword [ebp - 0x2c], edx
shr edi, cl
mov ecx, dword [ebp - 0x38]
add edi, dword [ebp - 0x20]
movzx edx, byte [ecx + edi*4 + 1]
lea ecx, [eax + edx]
cmp ecx, dword [ebp - 0x1c]
jbe 0x40689e
test ebx, ebx
je 0x407c44
mov eax, dword [ebp - 0x1c]
movzx edx, byte [esi]
mov edi, dword [ebp - 0x18]
dec ebx
inc esi
mov ecx, eax
add eax, 8
shl edx, cl
mov ecx, dword [ebp - 0x44]
mov dword [ebp - 0x1c], eax
add edi, edx
mov dword [ebp - 0x18], edi
and edi, dword [ebp - 0x2c]
shr edi, cl
mov ecx, dword [ebp - 0x38]
add edi, dword [ebp - 0x20]
movzx edx, byte [ecx + edi*4 + 1]
mov ecx, dword [ebp - 0x44]
lea ecx, [ecx + edx]
cmp ecx, eax
ja 0x40685f
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x20], ebx
mov ebx, dword [ebp - 0x24]
mov dword [ebp - 0x2c], esi
movzx eax, word [ecx + edi*4 + 2]
mov word [ebp - 0x4a], ax
movzx eax, byte [ecx + edi*4]
mov ecx, dword [ebp - 0x44]
shr dword [ebp - 0x18], cl
sub dword [ebp - 0x1c], ecx
add ecx, dword [ebx + 0x1bc8]
mov dword [ebx + 0x1bc8], ecx
movzx edi, dl
add ecx, edi
mov dword [ebx + 0x1bc8], ecx
mov ecx, edx
mov edx, dword [ebp - 0x1c]
shr dword [ebp - 0x18], cl
mov ecx, eax
sub edx, edi
test cl, 0x40
jne 0x406a03
movzx eax, word [ebp - 0x4a]
and ecx, 0xf
mov edi, ebx
mov esi, dword [ebp - 0x2c]
mov dword [ebx + 0x48], eax
mov dword [ebx + 0x4c], ecx
mov dword [ebx + 4], 0x3f4b
mov eax, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x20]
test ecx, ecx
jne 0x40692c
jmp 0x40695d
test ebx, ebx
je 0x407c3d
movzx eax, byte [esi]
mov edi, ecx
mov ecx, edx
dec ebx
inc esi
add edx, 8
shl eax, cl
mov ecx, edi
add dword [ebp - 0x18], eax
cmp edx, ecx
jb 0x406911
xor eax, eax
mov edi, edx
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x2c], esi
mov esi, dword [ebp - 0x24]
inc eax
sub edi, ecx
shl eax, cl
dec eax
and eax, edx
add dword [esi + 0x48], eax
add dword [esi + 0x1bc8], ecx
shr edx, cl
mov dword [ebp - 0x18], edx
mov edx, edi
mov edi, esi
mov esi, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x28]
mov dword [eax], 0x3f4c
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x20], ebx
test eax, eax
je 0x407e63
mov ecx, dword [ebp - 0x50]
mov edx, dword [edi + 0x48]
mov ebx, eax
sub ecx, eax
mov eax, edx
sub eax, ecx
jbe 0x4069a4
cmp eax, dword [edi + 0x30]
mov edx, dword [ebp - 0x1c]
jbe 0x4069ec
cmp dword [edi + 0x1bc4], 0
je 0x4069ec
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_distance_too_far_back
jmp 0x4076ce
mov ecx, dword [edi + 0x44]
mov eax, ebx
cmp ecx, ebx
mov edi, ecx
cmova edi, ebx
cmp ebx, 0x2f
jg 0x406a17
test edi, edi
je 0x4070e6
not eax
not ecx
neg edx
mov dword [ebp - 0x2c], esi
cmp eax, ecx
cmova ecx, eax
mov eax, dword [ebp - 0x30]
inc ecx
mov esi, eax
mov bl, byte [edx + eax]
mov byte [eax], bl
inc eax
inc ecx
jne 0x4069d1
mov ebx, edi
mov edi, dword [ebp - 0x24]
add esi, ebx
mov dword [ebp - 0x30], esi
mov esi, dword [ebp - 0x2c]
jmp 0x40713b
mov ecx, dword [edi + 0x34]
mov ebx, eax
sub ebx, ecx
jbe 0x406e7e
mov ecx, dword [edi + 0x2c]
sub ecx, ebx
jmp 0x406e82
mov eax, dword [ebp + 8]
mov esi, dword [ebp - 0x2c]
mov edi, ebx
mov dword [eax + 0x18], str.invalid_distance_code
jmp 0x4076ce
cmp edx, 0xf
mov ebx, edi
ja 0x407025
cmp edx, ebx
jae 0x407025
lea eax, [edx - 1]
mov dword [ebp - 0x38], ebx
cmp eax, 7
ja case.0x406a51.3
mov edi, ebx
mov dword [ebp - 0x2c], eax
lea ebx, [edi + 0xf]
and ebx, 0xf
mov eax, ebx
mov dword [ebp - 0x44], eax
lea eax, [ebx + 1]
mov ebx, edi
mov edi, dword [ebp - 0x2c]
jmp dword [edi*4 + 0x50fbc0]
mov edi, dword [ebp - 0x30]
movzx edx, byte [edi - 1]
movd xmm0, edx
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0x50
movdqu xmmword [edi], xmm0
add edi, eax
cmp ebx, eax
mov dword [ebp - 0x30], edi
je 0x407ba6
mov eax, dword [ebp - 0x40]
not ecx
mov edx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x30]
not eax
cmp eax, ecx
cmova ecx, eax
mov eax, dword [ebp - 0x44]
lea eax, [ecx + eax + 2]
mov ecx, 0x10
movdqu xmmword [edi], xmm0
add edi, 0x10
add eax, ecx
jne 0x406a9b
jmp 0x407afd
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x20], ebx
mov ebx, edx
mov dword [ebp - 0x2c], esi
mov esi, dword [ebp - 0x24]
and edx, 0x1f
add edi, 0xfffffff2
mov ecx, ebx
add edx, 0x101
shr ecx, 5
and ecx, 0x1f
lea eax, [ecx + 1]
mov dword [esi + 0x64], edx
mov dword [esi + 0x68], eax
mov eax, ebx
shr ebx, 0xe
shr eax, 0xa
mov dword [ebp - 0x18], ebx
and eax, 0xf
add eax, 4
cmp edx, 0x11e
mov dword [ebp - 0x1c], eax
mov dword [esi + 0x60], eax
ja 0x406f78
cmp ecx, 0x1e
jae 0x406f78
mov eax, dword [ebp - 0x24]
xor ecx, ecx
mov ebx, edi
mov dword [eax + 0x6c], 0
mov dword [eax + 4], 0x3f45
mov edx, ecx
mov ecx, ebx
cmp ebx, 2
ja 0x406b4a
mov esi, dword [ebp - 0x20]
test esi, esi
je 0x407c4e
mov ebx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x18]
dec esi
mov dword [ebp - 0x20], esi
movzx edi, byte [ebx]
inc ebx
mov dword [ebp - 0x2c], ebx
shl edi, cl
lea ecx, [ecx + 8]
add eax, edi
jmp 0x406b4d
mov eax, dword [ebp - 0x18]
mov ebx, ecx
mov edi, eax
lea ecx, [edx + 1]
mov esi, dword [ebp - 0x24]
movzx edx, word [edx + edx + 0x50f120]
shr eax, 3
and edi, 7
add ebx, 0xfffffffd
cmp ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x18], eax
mov dword [esi + 0x6c], ecx
mov word [esi + edx*2 + 0x74], di
mov edi, esi
mov edx, ecx
jb 0x406b1e
mov edx, dword [ebp - 0x58]
mov esi, dword [ebp - 0x54]
cmp ecx, 0x12
mov dword [ebp - 0x1c], ebx
ja 0x406ba3
inc ecx
movzx eax, word [ecx + ecx + 0x50f11e]
mov dword [edi + 0x6c], ecx
inc ecx
cmp ecx, 0x14
mov word [edi + eax*2 + 0x74], 0
jne 0x406b8b
mov eax, dword [ebp - 0x60]
mov dword [edi + 0x70], eax
mov dword [edi + 0x50], eax
mov dword [edi + 0x58], 7
push esi
push dword [ebp - 0x64]
push edx
push 0x13
push dword [ebp - 0x5c]
push 0
call fcn.004680e0
add esp, 0x18
mov esi, dword [ebp - 0x2c]
test eax, eax
je 0x406be0
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x34], eax
mov dword [ecx + 0x18], str.invalid_code_lengths_set
jmp 0x40712a
mov ebx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
xor ecx, ecx
mov dword [edi + 0x6c], 0
mov dword [edi + 4], 0x3f46
mov dword [ebp - 0x34], 0
mov eax, edi
mov edi, dword [eax + 0x64]
mov eax, dword [eax + 0x68]
add eax, edi
mov dword [ebp - 0x2c], edi
cmp ecx, eax
mov dword [ebp - 0x44], eax
jae 0x406e24
mov edi, dword [ebp - 0x24]
mov eax, edi
mov dword [ebp - 0x38], ecx
mov cl, byte [eax + 0x58]
mov edi, dword [eax + 0x50]
xor eax, eax
inc eax
shl eax, cl
mov dword [ebp - 0x20], edi
dec eax
mov ecx, eax
mov dword [ebp - 0x1c], eax
and ecx, dword [ebp - 0x18]
movzx eax, byte [edi + ecx*4 + 1]
jmp 0x406c68
test ebx, ebx
je 0x407c3d
movzx eax, byte [esi]
mov edi, edx
mov ecx, edx
mov edx, dword [ebp - 0x18]
dec ebx
inc esi
add edi, 8
shl eax, cl
mov ecx, dword [ebp - 0x1c]
add edx, eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x18], edx
and ecx, edx
mov edx, edi
movzx eax, byte [eax + ecx*4 + 1]
cmp edx, eax
jb 0x406c3b
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0x1c], edx
movzx ecx, word [edi + ecx*4 + 2]
cmp ecx, 0xf
ja 0x406cac
mov edx, dword [ebp - 0x38]
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x2c], eax
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x20]
lea edx, [edx + 1]
mov dword [edi + 0x6c], edx
mov edi, dword [ebp - 0x24]
mov edx, dword [ebp - 0x1c]
mov word [edi + ecx*2 + 0x74], ax
mov ecx, dword [ebp - 0x2c]
sub edx, ecx
shr dword [ebp - 0x18], cl
jmp 0x406df1
movzx ecx, cx
cmp ecx, 0x11
je 0x406d1c
cmp ecx, 0x10
jne 0x406d5e
lea edx, [eax + 2]
cmp dword [ebp - 0x1c], edx
jae 0x406ce4
test ebx, ebx
je 0x407c44
movzx edi, byte [esi]
mov ecx, dword [ebp - 0x1c]
dec ebx
inc esi
shl edi, cl
add ecx, 8
add dword [ebp - 0x18], edi
cmp ecx, edx
mov dword [ebp - 0x1c], ecx
jb 0x406cc5
mov edx, dword [ebp - 0x18]
mov ecx, eax
mov edi, dword [ebp - 0x1c]
shr edx, cl
mov ecx, dword [ebp - 0x38]
sub edi, eax
test ecx, ecx
je 0x407c11
mov eax, dword [ebp - 0x24]
add edi, 0xfffffffe
mov dword [ebp - 0x1c], edi
movzx eax, word [eax + ecx*2 + 0x72]
mov ecx, edx
shr edx, 2
and ecx, 3
mov dword [ebp - 0x18], edx
add ecx, 3
jmp 0x406da6
mov ecx, edx
lea edx, [eax + 3]
jmp 0x406d3e
test ebx, ebx
je 0x407c44
movzx edi, byte [esi]
mov ecx, dword [ebp - 0x1c]
dec ebx
inc esi
shl edi, cl
add ecx, 8
add dword [ebp - 0x18], edi
mov dword [ebp - 0x1c], ecx
cmp ecx, edx
jb 0x406d23
mov edx, dword [ebp - 0x18]
mov ecx, eax
shr edx, cl
mov ecx, edx
shr edx, 3
and ecx, 7
mov dword [ebp - 0x18], edx
mov edx, 0xfffffffd
add ecx, 3
jmp 0x406d9f
lea edx, [eax + 7]
cmp dword [ebp - 0x1c], edx
jae 0x406d85
test ebx, ebx
je 0x407c44
movzx edi, byte [esi]
mov ecx, dword [ebp - 0x1c]
dec ebx
inc esi
shl edi, cl
add ecx, 8
add dword [ebp - 0x18], edi
cmp ecx, edx
mov dword [ebp - 0x1c], ecx
jb 0x406d66
mov edx, dword [ebp - 0x18]
mov ecx, eax
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 - 0x1c], edx
mov edi, dword [ebp - 0x38]
lea edx, [ecx + edi]
cmp edx, dword [ebp - 0x44]
ja 0x407bd9
mov dword [ebp - 0x2c], esi
mov esi, dword [ebp - 0x24]
lea edx, [edi + 1]
mov dword [esi + 0x6c], edx
mov word [esi + edi*2 + 0x74], ax
xor esi, esi
inc esi
cmp ecx, esi
je 0x406de8
mov edi, dword [ebp - 0x24]
sub esi, ecx
mov ecx, dword [edi + 0x6c]
inc esi
lea edx, [ecx + 1]
mov dword [edi + 0x6c], edx
mov word [edi + ecx*2 + 0x74], ax
jne 0x406dd2
mov edx, dword [ebp - 0x1c]
jmp 0x406dee
mov edx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x24]
mov esi, dword [ebp - 0x2c]
mov eax, dword [edi + 0x64]
mov ecx, dword [edi + 0x6c]
mov dword [ebp - 0x2c], eax
mov eax, dword [edi + 0x68]
add eax, dword [ebp - 0x2c]
cmp ecx, eax
mov dword [ebp - 0x44], eax
jb 0x406c18
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0x20], ebx
cmp dword [ecx], 0x3f51
jne 0x406e27
mov eax, dword [ebp - 0x28]
mov edi, dword [ebp - 0x24]
jmp 0x407bc7
mov dword [ebp - 0x20], ebx
mov edi, dword [ebp - 0x24]
cmp word [edi + 0x274], 0
je 0x407067
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x1c], edx
mov dword [edi + 0x70], ecx
mov dword [edi + 0x50], ecx
mov dword [edi + 0x58], 9
push dword [ebp - 0x54]
push dword [ebp - 0x64]
push dword [ebp - 0x58]
push dword [ebp - 0x2c]
push dword [ebp - 0x5c]
push 1
call fcn.004680e0
add esp, 0x18
mov ebx, dword [ebp + 8]
test eax, eax
je 0x4070ed
mov dword [ebp - 0x34], eax
mov dword [ebx + 0x18], str.invalid_literal_lengths_set
jmp 0x40712a
sub ecx, eax
mov ebx, eax
mov eax, dword [edi + 0x44]
add ecx, dword [edi + 0x38]
mov edi, dword [ebp - 0x40]
cmp ebx, eax
cmova ebx, eax
cmp ebx, edi
cmova ebx, edi
cmp edi, 0xf
jg 0x406f00
test bl, 8
mov dword [ebp - 0x38], ebx
je 0x406eb6
movq xmm0, qword [ecx]
mov eax, dword [ebp - 0x30]
add ecx, 8
movq qword [eax], xmm0
add eax, 8
mov dword [ebp - 0x30], eax
test byte [ebp - 0x38], 4
je 0x406ecc
mov eax, dword [ecx]
mov edi, dword [ebp - 0x30]
add ecx, 4
mov dword [edi], eax
add edi, 4
mov dword [ebp - 0x30], edi
test byte [ebp - 0x38], 2
je 0x406ee4
movzx eax, word [ecx]
mov edi, dword [ebp - 0x30]
add ecx, 2
mov word [edi], ax
add edi, 2
mov dword [ebp - 0x30], edi
mov edi, dword [ebp - 0x24]
test byte [ebp - 0x38], 1
je 0x406ef8
mov al, byte [ecx]
mov ebx, dword [ebp - 0x30]
mov byte [ebx], al
inc ebx
mov dword [ebp - 0x30], ebx
mov eax, dword [ebp - 0x40]
jmp 0x407bb7
movdqu xmm0, xmmword [ecx]
mov edx, dword [ebp - 0x30]
lea eax, [ebx - 1]
mov edi, eax
and edi, 0xf
shr eax, 4
movdqu xmmword [edx], xmm0
lea edx, [edx + edi + 1]
je 0x407135
inc edi
neg eax
add ecx, edi
xor edi, edi
movdqu xmm0, xmmword [ecx + edi]
movdqu xmmword [edx + edi], xmm0
add edi, 0x10
inc eax
jne 0x406f27
add dword [ebp - 0x30], ebx
jmp 0x407138
mov eax, dword [ebp - 0x28]
mov dword [eax], 0x3f40
jmp 0x407bc7
xor eax, eax
jmp 0x407676
mov eax, dword [ebp + 8]
mov dword [ebp - 0x20], ebx
mov dword [eax + 0x18], str.unknown_compression_method
jmp 0x4076ce
mov eax, dword [ebp + 8]
mov dword [ebp - 0x20], ebx
mov dword [eax + 0x18], str.invalid_stored_block_lengths
jmp 0x4076ce
mov eax, dword [ebp + 8]
mov edx, edi
mov edi, dword [ebp - 0x24]
mov esi, dword [ebp - 0x2c]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
jmp 0x4076ce
mov eax, dword [ebp + 8]
mov ecx, 0x3f51
mov dword [eax + 0x18], str.invalid_block_type
jmp 0x406fa5
mov ecx, 0x3f44
mov eax, dword [ebp - 0x28]
mov dword [eax], ecx
shr dword [ebp - 0x18], 3
mov dword [ebp - 0x20], ebx
add edx, 0xfffffffd
jmp 0x407bc4
mov edx, dword [ebp - 0x18]
test byte [ebp - 0x1c], 2
mov dword [ebp - 0x20], ebx
je 0x407076
cmp edx, 0x8b1f
jne 0x407076
cmp dword [edi + 0x28], 0
mov ebx, esi
jne 0x406fe4
mov dword [edi + 0x28], 0xf
xor eax, eax
push eax
push eax
mov dword [ebp - 0x18], 0
push eax
call fcn.00467fee
add esp, 0xc
mov esi, dword [ebp - 0x48]
lea ecx, [ebp - 0x14]
mov dword [esi], eax
mov word [ecx], 0x8b1f
push 2
push ecx
push eax
call fcn.00467fee
add esp, 0xc
mov dword [esi], eax
mov eax, dword [ebp - 0x28]
xor edx, edx
mov esi, ebx
mov dword [eax], 0x3f35
jmp 0x407bc7
mov edi, dword [ebp - 0x30]
lea eax, [ebx - 1]
mov ecx, edi
sub ecx, edx
movdqu xmm0, xmmword [ecx]
mov ecx, eax
and ecx, 0xf
shr eax, 4
lea ecx, [edi + ecx + 1]
movdqu xmmword [edi], xmm0
je 0x407607
mov edi, dword [ebp - 0x24]
neg edx
neg eax
movdqu xmm0, xmmword [ecx + edx]
movdqu xmmword [ecx], xmm0
add ecx, 0x10
inc eax
jne 0x407050
add dword [ebp - 0x30], ebx
jmp 0x40713b
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_code____missing_end_of_block
jmp 0x4076ce
mov dword [edi + 0x14], 0
mov eax, dword [edi + 0x24]
test eax, eax
je 0x407091
mov dword [eax + 0x30], 0xffffffff
mov eax, dword [edi + 0xc]
mov dword [ebp - 0x1c], eax
test byte [ebp - 0x1c], 1
mov dword [ebp - 0x18], edx
je 0x4070d2
mov eax, edx
mov edi, edx
mov edx, 0x8421085
shl eax, 8
shr edi, 8
movzx eax, ax
add edi, eax
mov eax, edi
mul edx
mov eax, edi
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
mov edx, eax
shl edx, 5
sub edx, eax
cmp edi, edx
mov edi, dword [ebp - 0x24]
mov edx, dword [ebp - 0x18]
je 0x407b0b
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.incorrect_header_check
mov eax, dword [ebp - 0x28]
mov edx, ecx
jmp 0x4076d1
xor ebx, ebx
jmp 0x40760d
mov eax, dword [edi + 0x70]
mov dword [edi + 0x54], eax
mov dword [edi + 0x5c], 6
mov eax, dword [edi + 0x64]
lea eax, [edi + eax*2 + 0x74]
push dword [ebp - 0x54]
push dword [ebp - 0x68]
push dword [ebp - 0x58]
push dword [edi + 0x68]
push eax
push 2
call fcn.004680e0
add esp, 0x18
test eax, eax
je 0x4076fd
mov dword [ebp - 0x34], eax
mov dword [ebx + 0x18], str.invalid_distances_set
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x1c]
jmp 0x4076d1
mov dword [ebp - 0x30], edx
mov edi, dword [ebp - 0x24]
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x1c]
jmp 0x407bba
mov edx, dword [edi + 0x24]
mov ecx, eax
test edx, edx
je 0x40715a
shr eax, 8
and eax, 1
mov dword [edx], eax
mov ecx, dword [edi + 0x14]
test ch, 2
je 0x40718c
test byte [edi + 0xc], 4
je 0x40718c
mov ecx, dword [ebp - 0x18]
lea eax, [ebp - 0x14]
mov byte [eax], cl
mov byte [eax + 1], ch
push 2
push eax
mov dword [ebp - 0x20], ebx
mov ebx, esi
mov esi, dword [ebp - 0x48]
push dword [esi]
call fcn.00467fee
add esp, 0xc
mov dword [esi], eax
mov esi, ebx
mov ebx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x28]
xor edx, edx
mov dword [ebp - 0x18], 0
mov dword [eax], 0x3f36
test ebx, ebx
je 0x407c3d
movzx eax, byte [esi]
mov ecx, edx
add edx, 8
dec ebx
inc esi
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, 0x20
jb 0x40719e
mov eax, dword [edi + 0x24]
test eax, eax
je 0x4071c7
mov ecx, dword [ebp - 0x18]
mov dword [eax + 4], ecx
test byte [edi + 0x15], 2
je 0x407208
test byte [edi + 0xc], 4
je 0x407208
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 dword [ebp - 0x20], ebx
mov ebx, esi
mov esi, dword [ebp - 0x48]
push dword [esi]
call fcn.00467fee
add esp, 0xc
mov dword [esi], eax
mov esi, ebx
mov ebx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x28]
xor edx, edx
mov dword [ebp - 0x18], 0
mov dword [eax], 0x3f37
test ebx, ebx
je 0x407c3d
movzx eax, byte [esi]
mov ecx, edx
add edx, 8
dec ebx
inc esi
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, 0x10
jb 0x40721a
mov eax, dword [edi + 0x24]
test eax, eax
je 0x407251
mov edx, dword [ebp - 0x18]
movzx ecx, dl
mov dword [eax + 8], ecx
mov eax, edx
mov ecx, dword [edi + 0x24]
shr eax, 8
mov dword [ecx + 0xc], eax
test byte [edi + 0x15], 2
je 0x407284
test byte [edi + 0xc], 4
je 0x407284
mov ecx, dword [ebp - 0x18]
lea eax, [ebp - 0x14]
mov byte [eax], cl
mov byte [eax + 1], ch
push 2
push eax
mov dword [ebp - 0x20], ebx
mov ebx, esi
mov esi, dword [ebp - 0x48]
push dword [esi]
call fcn.00467fee
add esp, 0xc
mov dword [esi], eax
mov esi, ebx
mov ebx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x28]
xor edx, edx
mov dword [ebp - 0x18], 0
mov dword [eax], 0x3f38
mov eax, dword [edi + 0x14]
test ah, 4
jne 0x4072b1
mov eax, dword [edi + 0x24]
test eax, eax
je 0x4072ac
mov dword [eax + 0x10], 0
mov edi, dword [ebp - 0x18]
jmp 0x407320
cmp edx, 0xf
ja 0x4072d4
test ebx, ebx
je 0x407c3d
mov ecx, edx
movzx edx, byte [esi]
dec ebx
inc esi
shl edx, cl
add dword [ebp - 0x18], edx
mov edx, ecx
add edx, 8
cmp edx, 0x10
jb 0x4072b6
mov edx, dword [ebp - 0x18]
mov dword [edi + 0x44], edx
mov ecx, dword [edi + 0x24]
test ecx, ecx
je 0x4072e7
mov dword [ecx + 0x14], edx
mov eax, dword [edi + 0x14]
xor edi, edi
test ah, 2
je 0x40731e
mov eax, dword [ebp - 0x24]
test byte [eax + 0xc], 4
je 0x40731e
mov ecx, dword [ebp - 0x18]
lea eax, [ebp - 0x14]
mov byte [eax], cl
mov byte [eax + 1], ch
push 2
push eax
mov dword [ebp - 0x20], ebx
mov ebx, esi
mov esi, dword [ebp - 0x48]
push dword [esi]
call fcn.00467fee
add esp, 0xc
mov dword [esi], eax
mov esi, ebx
mov ebx, dword [ebp - 0x20]
xor edx, edx
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x18], edi
mov edi, dword [ebp - 0x24]
mov dword [eax], 0x3f39
mov ecx, dword [edi + 0x14]
test ch, 4
je 0x4073c9
mov eax, dword [edi + 0x44]
mov dword [ebp - 0x1c], edx
mov edx, edi
cmp eax, ebx
mov edi, eax
cmova edi, ebx
test edi, edi
je 0x4073bc
mov dword [ebp - 0x20], ebx
mov ebx, dword [edx + 0x24]
test ebx, ebx
je 0x407385
mov edx, dword [ebx + 0x10]
test edx, edx
je 0x407385
mov ecx, dword [ebx + 0x14]
mov ebx, dword [ebx + 0x18]
sub ecx, eax
mov eax, ebx
add edx, ecx
sub eax, ecx
add ecx, edi
cmp ecx, ebx
cmovbe eax, edi
push eax
push esi
push edx
call fcn.004d7b40
add esp, 0xc
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax + 0x14]
test ch, 2
je 0x4073a4
mov eax, dword [ebp - 0x24]
test byte [eax + 0xc], 4
je 0x4073a4
push edi
push esi
mov ebx, dword [ebp - 0x48]
push dword [ebx]
call fcn.00467fee
add esp, 0xc
mov dword [ebx], eax
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x20]
add esi, edi
mov eax, dword [ecx + 0x44]
sub edx, edi
mov ebx, edx
sub eax, edi
mov edi, ecx
mov dword [edi + 0x44], eax
jmp 0x4073be
mov edi, edx
mov edx, dword [ebp - 0x1c]
test eax, eax
jne 0x407c3f
mov dword [edi + 0x44], 0
mov dword [edi + 4], 0x3f3a
test byte [edi + 0x15], 8
jne 0x4073f4
mov eax, dword [edi + 0x24]
test eax, eax
je 0x40747c
mov dword [eax + 0x1c], 0
jmp 0x40747c
test ebx, ebx
je 0x407c3d
xor edi, edi
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x2c], esi
mov eax, dword [ebp - 0x24]
mov bl, byte [esi + edi]
inc edi
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x407436
mov eax, dword [ecx + 0x1c]
test eax, eax
je 0x407436
mov edx, dword [ebp - 0x24]
mov edx, dword [edx + 0x44]
cmp edx, dword [ecx + 0x20]
jae 0x407436
mov esi, dword [ebp - 0x24]
lea ecx, [edx + 1]
mov dword [esi + 0x44], ecx
mov esi, dword [ebp - 0x2c]
mov byte [eax + edx], bl
test bl, bl
je 0x40743f
cmp dword [ebp - 0x20], edi
ja 0x407407
mov eax, dword [ebp - 0x24]
test byte [eax + 0x15], 2
je 0x407465
mov eax, dword [ebp - 0x24]
test byte [eax + 0xc], 4
je 0x407465
push edi
push esi
mov esi, dword [ebp - 0x48]
push dword [esi]
call fcn.00467fee
add esp, 0xc
mov dword [esi], eax
mov esi, dword [ebp - 0x2c]
test bl, bl
jne 0x407dff
mov eax, dword [ebp - 0x20]
add esi, edi
mov edx, dword [ebp - 0x1c]
sub eax, edi
mov edi, dword [ebp - 0x24]
mov ebx, eax
mov dword [edi + 0x44], 0
mov dword [edi + 4], 0x3f3b
test byte [edi + 0x15], 0x10
jne 0x4074a7
mov eax, dword [edi + 0x24]
test eax, eax
je 0x40752f
mov dword [eax + 0x24], 0
jmp 0x40752f
test ebx, ebx
je 0x407c3d
xor edi, edi
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x2c], esi
mov eax, dword [ebp - 0x24]
mov bl, byte [esi + edi]
inc edi
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x4074e9
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x4074e9
mov edx, dword [ebp - 0x24]
mov edx, dword [edx + 0x44]
cmp edx, dword [ecx + 0x28]
jae 0x4074e9
mov esi, dword [ebp - 0x24]
lea ecx, [edx + 1]
mov dword [esi + 0x44], ecx
mov esi, dword [ebp - 0x2c]
mov byte [eax + edx], bl
test bl, bl
je 0x4074f2
cmp dword [ebp - 0x20], edi
ja 0x4074ba
mov eax, dword [ebp - 0x24]
test byte [eax + 0x15], 2
je 0x407518
mov eax, dword [ebp - 0x24]
test byte [eax + 0xc], 4
je 0x407518
push edi
push esi
mov esi, dword [ebp - 0x48]
push dword [esi]
call fcn.00467fee
add esp, 0xc
mov dword [esi], eax
mov esi, dword [ebp - 0x2c]
test bl, bl
jne 0x407dff
mov eax, dword [ebp - 0x20]
add esi, edi
mov edx, dword [ebp - 0x1c]
sub eax, edi
mov edi, dword [ebp - 0x24]
mov ebx, eax
mov eax, dword [ebp - 0x28]
mov dword [eax], 0x3f3c
mov eax, dword [edi + 0x14]
test ah, 2
jne 0x407545
mov ecx, dword [ebp - 0x18]
jmp 0x407599
mov edi, edx
cmp edx, 0xf
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x20], eax
ja 0x407579
test ebx, ebx
mov dword [ebp - 0x18], edx
je 0x407c59
movzx edx, byte [esi]
mov eax, edi
mov edi, dword [ebp - 0x18]
dec ebx
inc esi
mov ecx, eax
add eax, 8
shl edx, cl
add edi, edx
cmp eax, 0x10
mov edx, edi
mov edi, eax
jb 0x407552
mov eax, dword [ebp - 0x24]
test byte [eax + 0xc], 4
je 0x407592
mov ecx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x18], edx
movzx ecx, word [ecx]
cmp edx, ecx
jne 0x4075e7
mov eax, dword [ebp - 0x20]
xor ecx, ecx
xor edx, edx
mov dword [ebp - 0x20], ebx
mov ebx, dword [ebp - 0x24]
mov dword [ebp - 0x18], ecx
mov edi, edx
mov ecx, dword [ebx + 0x24]
test ecx, ecx
je 0x4075bd
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.00467fee
add esp, 0xc
mov ecx, dword [ebp - 0x48]
mov edx, dword [ebp + 8]
mov dword [ecx], eax
mov dword [edx + 0x30], eax
mov eax, dword [ebp - 0x28]
mov edx, edi
mov edi, ebx
mov dword [eax], 0x3f3f
jmp 0x407bc7
mov ecx, eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x20], ebx
mov dword [eax + 0x18], str.header_crc_mismatch
mov eax, ecx
mov edx, edi
mov edi, dword [ebp - 0x24]
jmp 0x4076d1
mov ebx, dword [ebp - 0x20]
jmp 0x407636
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x30], ecx
mov edx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x24]
jmp 0x407bba
push esi
push eax
push ecx
call fcn.00467d4c
add esp, 0xc
mov ecx, dword [ebp + 8]
mov edx, edi
mov dword [edx + 0x1c], eax
mov dword [ecx + 0x30], eax
mov eax, dword [edx + 0xc]
mov ecx, eax
and ecx, 4
test ecx, ecx
je 0x407664
mov edx, dword [ebp - 0x18]
mov esi, edi
cmp dword [esi + 0x14], 0
mov ecx, edx
bswap ecx
cmovne ecx, edx
cmp ecx, dword [esi + 0x1c]
mov esi, dword [ebp - 0x2c]
jne 0x4076dc
mov ecx, dword [ebp - 0x40]
xor edx, edx
mov dword [ebp - 0x18], 0
jmp 0x407673
mov ecx, dword [ebp - 0x40]
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x18], 0
xor edx, edx
mov dword [ebp - 0x50], ecx
mov ecx, dword [ebp - 0x28]
mov dword [ecx], 0x3f4f
test eax, eax
je 0x407e52
cmp dword [edi + 0x14], 0
mov eax, dword [ebp - 0x28]
je 0x407e55
cmp edx, 0x1f
ja 0x4076b5
test ebx, ebx
je 0x407c3d
movzx eax, byte [esi]
mov ecx, edx
add edx, 8
dec ebx
inc esi
shl eax, cl
add dword [ebp - 0x18], eax
cmp edx, 0x20
jb 0x407699
mov eax, dword [ebp - 0x18]
cmp eax, dword [edi + 0x20]
je 0x407e49
mov eax, dword [ebp + 8]
mov dword [ebp - 0x20], ebx
mov dword [eax + 0x18], str.incorrect_length_check
mov eax, dword [ebp - 0x28]
mov dword [eax], 0x3f51
jmp 0x407bc7
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x1c]
mov dword [eax + 0x18], str.incorrect_data_check
mov eax, dword [ebp - 0x40]
mov dword [ecx], 0x3f51
mov dword [ebp - 0x50], eax
jmp 0x4065ab
mov eax, dword [ebp - 0x28]
cmp dword [ebp + 0xc], 6
mov ebx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x34], 0
mov dword [eax], 0x3f47
je 0x407e7d
mov eax, dword [ebp - 0x28]
mov dword [eax], 0x3f48
mov eax, dword [ebp - 0x40]
cmp eax, 0x102
jb 0x40779f
cmp ebx, 6
jb 0x40779f
mov ecx, dword [ebp + 8]
mov edi, ecx
mov ecx, dword [ebp - 0x30]
mov dword [edi + 0xc], ecx
mov dword [edi + 0x10], eax
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x24]
mov dword [edi], esi
mov dword [edi + 4], ebx
mov dword [ecx + 0x3c], eax
mov ecx, dword [ebp - 0x24]
mov dword [ecx + 0x40], edx
push dword [ebp - 0x50]
push edi
call fcn.00405778
add esp, 8
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 0x10]
mov edx, dword [edi + 4]
mov esi, dword [edi]
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x20], edx
mov ecx, dword [edi + 0x3c]
cmp dword [edi + 4], 0x3f3f
mov edx, dword [edi + 0x40]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x18], ecx
jne 0x407bc4
mov dword [edi + 0x1bc8], 0xffffffff
jmp 0x407bc4
mov dword [edi + 0x1bc8], 0
mov eax, dword [edi + 0x50]
mov cl, byte [edi + 0x58]
mov dword [ebp - 0x38], eax
xor eax, eax
inc eax
shl eax, cl
mov ecx, edx
mov edx, dword [ebp - 0x38]
dec eax
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x20], eax
and eax, dword [ebp - 0x18]
mov dl, byte [edx + eax*4 + 1]
movzx edi, dl
cmp ecx, edi
mov dword [ebp - 0x44], edi
jae 0x40780a
test ebx, ebx
je 0x407c44
movzx eax, byte [esi]
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x18]
dec ebx
inc esi
shl eax, cl
add ecx, 8
add edx, eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x18], edx
and eax, edx
mov edx, dword [ebp - 0x38]
mov dl, byte [edx + eax*4 + 1]
movzx edi, dl
cmp ecx, edi
jb 0x4077d4
mov dword [ebp - 0x44], edi
mov ecx, dword [ebp - 0x38]
movzx edi, word [ecx + eax*4 + 2]
movzx ecx, byte [ecx + eax*4]
mov eax, ecx
test ecx, ecx
mov word [ebp - 0x4a], di
je 0x4078dc
mov edi, ecx
and edi, 0xf0
jne 0x4078dc
movzx eax, word [ebp - 0x4a]
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x44]
add ecx, eax
xor edx, edx
inc edx
shl edx, cl
mov ecx, eax
dec edx
and edi, edx
mov dword [ebp - 0x2c], edx
shr edi, cl
mov ecx, dword [ebp - 0x38]
add edi, dword [ebp - 0x20]
movzx edx, byte [ecx + edi*4 + 1]
lea ecx, [eax + edx]
cmp ecx, dword [ebp - 0x1c]
jbe 0x4078a4
test ebx, ebx
je 0x407c44
mov eax, dword [ebp - 0x1c]
movzx edx, byte [esi]
dec ebx
inc esi
mov ecx, eax
add eax, 8
shl edx, cl
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x1c], eax
add ecx, edx
mov edx, dword [ebp - 0x38]
mov edi, ecx
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x44]
and edi, dword [ebp - 0x2c]
shr edi, cl
add edi, dword [ebp - 0x20]
movzx edx, byte [edx + edi*4 + 1]
lea ecx, [ecx + edx]
cmp ecx, eax
ja 0x407863
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x2c], esi
mov ecx, dword [ebp - 0x38]
mov esi, dword [ebp - 0x18]
mov bl, byte [ecx + edi*4]
movzx ecx, word [ecx + edi*4 + 2]
mov word [ebp - 0x4a], cx
mov ecx, eax
mov byte [ebp - 0x44], bl
mov ebx, dword [ebp - 0x24]
shr esi, cl
mov ecx, eax
mov eax, dword [ebp - 0x1c]
movzx edi, byte [ebp - 0x44]
mov dword [ebx + 0x1bc8], ecx
sub eax, ecx
mov dword [ebp - 0x38], edi
jmp 0x4078f3
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x2c], esi
mov byte [ebp - 0x44], al
mov ebx, dword [ebp - 0x24]
mov esi, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x38], ecx
xor ecx, ecx
movzx edi, dl
add ecx, edi
sub eax, edi
movzx edi, word [ebp - 0x4a]
mov dword [ebx + 0x1bc8], ecx
mov ecx, edx
mov dword [ebp - 0x1c], eax
shr esi, cl
cmp byte [ebp - 0x44], 0
mov dword [ebp - 0x18], esi
mov dword [ebx + 0x44], edi
mov edi, ebx
je 0x407944
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x1c]
test cl, 0x20
jne 0x407958
mov esi, dword [ebp - 0x2c]
test cl, 0x40
jne 0x407971
mov ebx, dword [ebp - 0x20]
and ecx, 0xf
mov dword [edi + 0x4c], ecx
mov dword [edi + 4], 0x3f49
jmp 0x406608
mov eax, dword [ebp - 0x28]
mov esi, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x1c]
mov dword [eax], 0x3f4d
jmp 0x407bc7
mov esi, dword [ebp - 0x2c]
mov dword [edi + 0x1bc8], 0xffffffff
mov dword [edi + 4], 0x3f3f
jmp 0x407bc7
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.invalid_literal_length_code
jmp 0x4076ce
mov edi, dword [ebp - 0x30]
movzx edx, word [edi - 2]
movd xmm0, edx
mov edx, edi
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0x50
movdqu xmmword [edx], xmm0
add edx, eax
cmp ebx, eax
je 0x407ba3
movzx eax, word [edx - 2]
not ecx
mov edi, edx
mov edx, dword [ebp - 0x1c]
movd xmm0, eax
mov eax, dword [ebp - 0x40]
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0x50
not eax
cmp eax, ecx
cmova ecx, eax
mov eax, dword [ebp - 0x44]
lea eax, [ecx + eax + 2]
mov ecx, 0x10
movdqu xmmword [edi], xmm0
add edi, 0x10
add eax, ecx
jne 0x4079cf
jmp 0x407afd
mov edi, dword [ebp - 0x30]
mov eax, edx
mov dword [ebp - 0x2c], esi
mov ecx, ebx
neg eax
mov dword [ebp - 0x44], eax
mov esi, edi
mov ebx, edi
mov edi, dword [ebp - 0x44]
mov eax, ecx
sub ecx, edx
movdqu xmm0, xmmword [esi + edi]
lea edi, [ebx + edx]
add edx, edx
cmp edx, 0xf
movdqu xmmword [ebx], xmm0
ja 0x407a15
cmp edx, ecx
jb 0x4079f5
mov esi, edi
dec ecx
sub esi, edx
mov edx, ecx
movdqu xmm0, xmmword [esi]
and edx, 0xf
mov dword [ebp - 0x44], esi
shr ecx, 4
lea esi, [edi + edx + 1]
mov dword [ebp - 0x30], esi
movdqu xmmword [edi], xmm0
je 0x407bab
inc edx
mov edi, dword [ebp - 0x24]
neg ecx
add dword [ebp - 0x44], edx
xor edx, edx
mov esi, dword [ebp - 0x44]
movdqu xmm0, xmmword [esi + edx]
mov esi, dword [ebp - 0x30]
movdqu xmmword [esi + edx], xmm0
add edx, 0x10
inc ecx
jne 0x407a45
add ebx, eax
mov dword [ebp - 0x30], ebx
jmp 0x407bae
mov edi, dword [ebp - 0x30]
mov edx, dword [ebp - 0x1c]
movd xmm0, dword [edi - 4]
pshufd xmm0, xmm0, 0
movdqu xmmword [edi], xmm0
add edi, eax
cmp ebx, eax
je 0x407b89
mov eax, dword [ebp - 0x40]
not ecx
movd xmm0, dword [edi - 4]
not eax
pshufd xmm0, xmm0, 0
cmp eax, ecx
cmova ecx, eax
mov eax, dword [ebp - 0x44]
lea eax, [ecx + eax + 2]
mov ecx, 0x10
movdqu xmmword [edi], xmm0
add edi, 0x10
add eax, ecx
jne 0x407aa0
jmp 0x407afd
mov edi, dword [ebp - 0x30]
mov edx, dword [ebp - 0x1c]
movq xmm0, qword [edi - 8]
pshufd xmm0, xmm0, 0x44
movdqu xmmword [edi], xmm0
add edi, eax
cmp ebx, eax
je 0x407b89
mov eax, dword [ebp - 0x40]
not ecx
movq xmm0, qword [edi - 8]
not eax
pshufd xmm0, xmm0, 0x44
cmp eax, ecx
cmova ecx, eax
mov eax, dword [ebp - 0x44]
lea eax, [ecx + eax + 2]
mov ecx, 0x10
movdqu xmmword [edi], xmm0
add edi, 0x10
add eax, ecx
jne 0x407aed
mov dword [ebp - 0x30], edi
mov eax, dword [ebp - 0x40]
mov edi, dword [ebp - 0x24]
jmp 0x407bb7
mov eax, edx
and eax, 0xf
cmp eax, 8
jne 0x407b94
mov edi, dword [edi + 0x28]
mov eax, edx
shr eax, 4
mov dword [ebp - 0x1c], eax
and eax, 0xf
lea edx, [eax + 8]
test edi, edi
jne 0x407b36
mov edi, esi
mov esi, dword [ebp - 0x24]
mov dword [esi + 0x28], edx
mov esi, edi
mov edi, edx
mov ebx, dword [ebp + 8]
cmp edx, 0xf
ja 0x407bf1
cmp edx, edi
ja 0x407bf1
mov edi, dword [ebp - 0x24]
mov ecx, eax
mov edx, 0x100
xor eax, eax
shl edx, cl
mov dword [edi + 0x18], edx
push eax
push eax
push eax
call fcn.00467d4c
xor edx, edx
add esp, 0xc
mov ecx, dword [ebp - 0x18]
mov dword [edi + 0x1c], eax
mov dword [ebx + 0x30], eax
mov dword [ebp - 0x18], 0
shr ecx, 0xc
and ecx, 2
xor ecx, 0x3f3f
mov dword [edi + 4], ecx
jmp 0x407bc4
mov dword [ebp - 0x30], edi
mov edi, dword [ebp - 0x24]
jmp 0x406ef8
mov eax, dword [ebp + 8]
mov dword [eax + 0x18], str.unknown_compression_method
jmp 0x4070dc
mov dword [ebp - 0x30], edx
mov edi, dword [ebp - 0x24]
jmp 0x407bb1
mov edi, dword [ebp - 0x24]
mov esi, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x38]
sub eax, ebx
mov dword [ebp - 0x40], eax
sub dword [edi + 0x44], ebx
je 0x407bce
mov eax, dword [ebp - 0x28]
mov eax, dword [eax]
jmp 0x406365
mov eax, dword [ebp - 0x28]
mov dword [eax], 0x3f48
jmp 0x407bc7
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x20], ebx
mov dword [eax + 0x18], str.invalid_bit_length_repeat
jmp 0x4076ce
mov edx, ecx
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x28]
mov edi, dword [ebp - 0x24]
mov dword [ebx + 0x18], str.invalid_window_size
add edx, 0xfffffffc
mov dword [eax], 0x3f51
mov dword [ebp - 0x18], ecx
jmp 0x407bc7
mov eax, dword [ebp + 8]
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x20], ebx
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov eax, dword [ebp - 0x28]
jmp 0x4075f8
cmp dword [ebx + 4], 0
je 0x4062cf
mov esi, 0xfffffffe
jmp 0x4062aa
xor ebx, ebx
mov eax, dword [ebp - 0x34]
jmp 0x407c72
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x1c]
xor ebx, ebx
jmp 0x407c72
mov eax, dword [ebp - 0x34]
mov esi, dword [ebp - 0x2c]
jmp 0x407c6e
mov dword [ebp - 0x18], edx
mov eax, dword [ebp - 0x34]
xor ebx, ebx
mov edx, edi
jmp 0x407c72
mov dword [ebp - 0x3c], 0xfffffffd
jmp case.0x406376.16208
mov eax, dword [ebp - 0x34]
xor ebx, ebx
mov edx, ecx
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x20], ebx
cmp eax, 0x10
jb 0x407c97
mov edi, dword [ebp - 0x30]
mov ebx, eax
mov eax, 0x55555555
mov dword [edi + 0xc], eax
mov dword [edi + 8], eax
mov dword [edi + 4], eax
mov dword [edi], eax
jmp 0x407cba
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x34], ecx
push eax
push 0x55
mov edi, dword [ebp - 0x30]
push edi
mov ebx, eax
call fcn.004d7460
add esp, 0xc
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x24]
mov dword [eax + 0xc], edi
mov dword [eax + 0x10], ebx
mov ebx, eax
mov eax, dword [ebp - 0x20]
mov dword [ebx], esi
mov dword [ebx + 4], eax
mov eax, dword [ebp - 0x18]
mov dword [ecx + 0x3c], eax
mov dword [ecx + 0x40], edx
cmp dword [ecx + 0x2c], 0
mov eax, dword [ebx + 0x10]
je 0x407d0c
mov esi, dword [ebp - 0x50]
mov edx, dword [ebx + 0xc]
mov ecx, ebx
sub esi, eax
push esi
call fcn.00407e89
add esp, 4
test eax, eax
je 0x407d36
mov eax, dword [ebp - 0x28]
mov dword [eax], 0x3f52
mov esi, 0xfffffffc
jmp 0x4062aa
mov ecx, dword [ebp - 0x50]
mov esi, dword [ebp + 0xc]
cmp ecx, eax
mov edx, esi
je 0x407d39
mov ecx, dword [ebp - 0x28]
mov ecx, dword [ecx]
cmp ecx, 0x3f50
jg 0x407d32
cmp edx, 4
jne 0x407ce2
cmp ecx, 0x3f4d
jle 0x407ce2
mov ecx, eax
jmp 0x407d39
mov ecx, dword [ebx + 0x10]
mov eax, dword [ebp - 0x70]
mov edx, dword [ebp - 0x50]
sub eax, dword [ebx + 4]
sub edx, ecx
add dword [ebx + 8], eax
add dword [ebx + 0x14], edx
mov edi, eax
mov esi, dword [ebp - 0x24]
add dword [esi + 0x20], edx
test edx, edx
je 0x407d96
mov eax, dword [esi + 0xc]
and eax, 4
je 0x407d96
mov eax, dword [ebp + 8]
mov ecx, dword [esi + 0x1c]
mov ebx, edx
mov eax, dword [eax + 0xc]
sub eax, edx
cmp dword [esi + 0x14], 0
je 0x407d7b
push edx
push eax
push ecx
call fcn.00467fee
jmp 0x407d83
push edx
push eax
push ecx
call fcn.00467d4c
add esp, 0xc
mov ecx, dword [ebp - 0x48]
mov edx, dword [ebp + 8]
mov esi, dword [ebp - 0x24]
mov dword [ecx], eax
mov dword [edx + 0x30], eax
mov edx, ebx
xor eax, eax
xor ecx, ecx
mov ebx, edx
mov edx, dword [esi + 4]
cmp dword [esi + 8], eax
setne cl
xor eax, eax
shl ecx, 6
add ecx, dword [esi + 0x40]
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
mov ecx, dword [ebp + 8]
add edx, eax
or ebx, edi
mov dword [ecx + 0x2c], edx
mov ecx, dword [ebp - 0x3c]
mov edx, 0xfffffffb
mov esi, ecx
cmove esi, edx
cmp dword [ebp + 0xc], 4
cmove esi, edx
test ecx, ecx
cmovne esi, ecx
jmp 0x4062aa
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x34]
mov edx, dword [ebp - 0x1c]
add esi, edi
sub eax, edi
mov dword [ebp - 0x3c], ecx
mov ebx, eax
jmp case.0x406376.16208
mov eax, dword [ebp + 8]
mov ecx, eax
mov eax, dword [ebp - 0x30]
mov dword [ecx + 0xc], eax
mov eax, dword [ebp - 0x40]
mov dword [ecx + 0x10], eax
mov dword [ecx], esi
mov dword [ecx + 4], ebx
mov ecx, dword [ebp - 0x18]
mov esi, 2
mov dword [edi + 0x3c], ecx
mov dword [edi + 0x40], edx
jmp 0x4062aa
mov eax, dword [ebp - 0x34]
mov ebx, ecx
jmp 0x407c72
mov dword [ebp - 0x18], 0
xor edx, edx
mov eax, dword [ebp - 0x28]
mov dword [eax], 0x3f50
jmp case.0x406376.16208
mov dword [ebp - 0x1c], edx
xor eax, eax
jmp 0x407ca0
xor edx, edx
jmp 0x407c3f
shr dword [ebp - 0x18], 3
add edx, 0xfffffffd
jmp 0x407c72
mov dword [ebp - 0x3c], 0
jmp case.0x406376.16208