Function at 0x449d62
Capabilities:
Compress data via zlib inflate or deflate
Hash data with crc32

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov eax, 0xfffffffe
mov dword [esp + 0x1c], ecx
test ecx, ecx
je 0x44c459
mov ecx, dword [esp + 0x1c]
cmp dword [ecx + 0x20], 0
je 0x44c459
mov ecx, dword [esp + 0x1c]
cmp dword [ecx + 0x24], 0
je 0x44c459
mov ecx, dword [esp + 0x1c]
mov esi, dword [ecx + 0x1c]
test esi, esi
je 0x44c459
mov ecx, dword [esp + 0x1c]
cmp dword [esi], ecx
jne 0x44c459
mov dword [esp + 0x50], edx
mov edx, dword [esi + 4]
lea ecx, [edx - 0x3f34]
cmp ecx, 0x1f
ja 0x44c459
mov ecx, esi
mov esi, dword [esp + 0x1c]
mov esi, dword [esi + 0xc]
test esi, esi
je 0x44c459
mov edi, dword [esp + 0x1c]
mov edi, dword [edi]
test edi, edi
je 0x44bd9b
lea eax, [ecx + 4]
cmp edx, 0x3f3f
jne 0x449cc3
mov dword [eax], 0x3f40
mov edx, dword [esp + 0x1c]
mov edi, dword [edx]
mov esi, dword [edx + 0xc]
mov edx, 0x3f40
mov dword [esp + 0x28], esi
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x1c]
mov ebx, dword [eax + 4]
mov ebp, dword [eax + 0x10]
mov eax, dword [ecx + 0x3c]
mov dword [esp + 4], eax
mov esi, dword [ecx + 0x40]
lea eax, [ecx + 0x534]
mov dword [esp + 0x48], eax
lea eax, [ecx + 0x70]
mov dword [esp + 0x38], eax
mov dword [esp], edi
mov eax, dword [esp + 4]
mov dword [esp + 8], eax
mov dword [esp + 0x10], esi
lea eax, [ecx + 0x58]
mov dword [esp + 0x44], eax
lea edi, [ecx + 0x2f4]
lea eax, [ecx + 0x74]
mov dword [esp + 0x3c], eax
lea esi, [ecx + 0x5c]
mov dword [esp + 0x54], esi
mov esi, ecx
mov ecx, edi
mov dword [esp + 0x18], 0
mov dword [esp + 0x4c], ebx
mov dword [esp + 4], ebx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], ebp
mov dword [esp + 0xc], esi
mov dword [esp + 0x40], edi
add edx, 0xffffc0cc
cmp edx, 0x1e
ja case.default.0x449d5b
mov ebx, 0xfffffffd
mov ecx, 1
mov eax, dword [esp + 0x10]
jmp dword [edx*4 + 0x4ff0ac]
mov edx, eax
mov eax, dword [esi + 0xc]
test eax, eax
je 0x44a25b
mov ecx, edx
cmp edx, 0x10
jae 0x44a997
mov ebp, dword [esp + 8]
mov ecx, dword [esp + 4]
test ecx, ecx
je 0x44bfb7
dec ecx
mov dword [esp + 0x20], ecx
mov esi, dword [esp]
movzx edi, byte [esi]
mov ebx, edx
mov ecx, ebx
shl edi, cl
inc esi
add ebp, edi
lea ecx, [edx + 8]
cmp edx, 7
ja 0x44b381
cmp dword [esp + 0x20], 0
je 0x44be82
add dword [esp + 4], 0xfffffffe
mov esi, dword [esp]
movzx edi, byte [esi + 1]
add esi, 2
mov dword [esp], esi
shl edi, cl
add ebp, edi
mov ebx, ebp
add edx, 0x10
jmp 0x44b390
cmp eax, 0x10
jae 0x44a21f
mov dword [esp + 0x10], eax
mov ebp, dword [esp + 8]
mov eax, dword [esp + 4]
test eax, eax
je 0x44bf01
dec eax
mov edx, dword [esp]
movzx esi, byte [edx]
mov ebx, dword [esp + 0x10]
mov ecx, ebx
shl esi, cl
inc edx
add ebp, esi
mov esi, ebp
lea ecx, [ebx + 8]
cmp ebx, 7
ja 0x44aa04
test eax, eax
je 0x44bee3
add dword [esp + 4], 0xfffffffe
mov edx, dword [esp]
movzx eax, byte [edx + 1]
add edx, 2
mov dword [esp], edx
shl eax, cl
mov ebx, esi
add ebx, eax
mov eax, dword [esp + 0x10]
add eax, 0x10
jmp 0x44aa0f
cmp eax, 0x1f
mov ebx, dword [esp + 8]
jbe 0x44af9f
jmp 0x44b055
cmp eax, 0xf
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 8]
jbe 0x44b0dc
jmp 0x44b138
mov edi, dword [esi + 0x14]
test edi, 0x400
jne 0x44a228
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x14]
jmp 0x44b1b4
mov ebp, dword [esi + 0x14]
jmp 0x44badc
cmp eax, 0x20
jae 0x44a23e
mov ecx, eax
mov esi, dword [esp + 8]
mov eax, dword [esp + 4]
test eax, eax
je 0x44bf81
mov ebp, dword [esp]
movzx edx, byte [ebp]
shl edx, cl
dec eax
add esi, edx
lea edx, [ebp + 1]
cmp ecx, 0x17
ja 0x44a27b
mov ebx, ecx
add ecx, 8
test eax, eax
je 0x44bee3
mov ebp, dword [esp]
movzx edx, byte [ebp + 1]
shl edx, cl
mov eax, dword [esp + 4]
add eax, 0xfffffffe
add esi, edx
lea edx, [ebp + 2]
cmp ebx, 0xf
ja 0x44a27b
lea ecx, [ebx + 0x10]
test eax, eax
je 0x44bee3
mov ebp, dword [esp]
movzx edx, byte [ebp + 2]
shl edx, cl
mov eax, dword [esp + 4]
add eax, 0xfffffffd
add esi, edx
mov edx, esi
lea ecx, [ebp + 3]
cmp ebx, 7
ja 0x44b941
add ebx, 0x18
test eax, eax
mov esi, dword [esp + 0xc]
je 0x44c5f9
add dword [esp + 4], 0xfffffffc
mov ecx, dword [esp]
movzx eax, byte [ecx + 3]
add ecx, 4
mov dword [esp], ecx
mov ecx, ebx
shl eax, cl
add edx, eax
jmp 0x44a288
mov ecx, eax
and cl, 7
mov edx, dword [esp + 8]
shr edx, cl
and eax, 0xfffffff8
mov dword [esp + 0x10], eax
cmp eax, 0x1f
ja 0x44a3b6
mov ebp, edx
mov eax, dword [esp + 4]
test eax, eax
je 0x44bf93
dec eax
mov edx, dword [esp]
movzx esi, byte [edx]
mov ebx, dword [esp + 0x10]
mov ecx, ebx
shl esi, cl
inc edx
add ebp, esi
lea ecx, [ebx + 8]
cmp ebx, 0x17
ja 0x44a3a5
test eax, eax
je 0x44bfaf
mov eax, dword [esp + 4]
add eax, 0xfffffffe
mov edx, dword [esp]
movzx esi, byte [edx + 1]
shl esi, cl
add edx, 2
add ebp, esi
mov esi, dword [esp + 0x10]
lea ecx, [esi + 0x10]
cmp esi, 0xf
ja 0x44a3a5
test eax, eax
je 0x44bfaf
mov eax, dword [esp + 4]
add eax, 0xfffffffd
mov edx, dword [esp]
movzx esi, byte [edx + 2]
shl esi, cl
add edx, 3
add ebp, esi
mov esi, ebp
mov ebx, dword [esp + 0x10]
lea ecx, [ebx + 0x18]
test ebx, ebx
je 0x44b94d
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [esp + 0x10], ecx
mov edx, esi
jmp 0x44a3b2
cmp eax, 0xe
jae 0x44a244
mov dword [esp + 0x10], eax
mov ebp, dword [esp + 8]
mov eax, dword [esp + 4]
test eax, eax
je 0x44bf01
dec eax
mov edx, dword [esp]
movzx esi, byte [edx]
mov ebx, dword [esp + 0x10]
mov ecx, ebx
shl esi, cl
inc edx
add ebp, esi
mov esi, ebp
lea ecx, [ebx + 8]
cmp ebx, 5
ja 0x44aa6b
test eax, eax
je 0x44bee3
add dword [esp + 4], 0xfffffffe
mov edx, dword [esp]
movzx eax, byte [edx + 1]
add edx, 2
mov dword [esp], edx
shl eax, cl
add esi, eax
mov eax, dword [esp + 0x10]
add eax, 0x10
mov ebp, eax
jmp 0x44aa74
mov edi, dword [esi + 0x60]
mov ecx, dword [esi + 0x6c]
cmp ecx, edi
jb 0x44aad4
mov dword [esp + 0x10], eax
cmp ecx, 0x12
ja 0x44abc2
mov edx, 3
sub edx, ecx
and edx, 3
je 0x44ab67
mov esi, ecx
mov ebx, dword [esp + 0xc]
lea eax, [esi + 1]
movzx esi, word [esi + esi + 0x4fe7e4]
mov word [ebx + esi*2 + 0x74], 0
mov esi, eax
dec edx
jne 0x44a08d
jmp 0x44ab6d
mov dword [esp + 0x10], eax
mov ecx, dword [esi + 0x6c]
jmp 0x44ac1f
mov eax, dword [esi + 0x4c]
test eax, eax
mov ebx, dword [esp]
je 0x44a24f
mov ebp, dword [esp + 8]
mov edx, dword [esp + 0x10]
cmp edx, eax
jae 0x44a578
mov esi, dword [esp + 4]
sub esi, 1
jb 0x44bde9
movzx edi, byte [ebx]
mov ecx, edx
shl edi, cl
inc ebx
add ebp, edi
add edx, 8
cmp edx, eax
jb 0x44a0d7
jmp 0x44a57c
mov edx, eax
mov eax, dword [esi + 0x4c]
mov ebx, dword [esp + 8]
jmp 0x44a75f
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x44bf26
movzx eax, byte [esi + 0x44]
mov edx, dword [esp + 0x28]
mov byte [edx], al
inc edx
mov dword [esp + 0x28], edx
dec ecx
mov dword [esp + 0x24], ecx
mov dword [esi + 4], 0x3f48
mov edx, dword [esp + 0x14]
mov edx, dword [edx]
jmp 0x449d3e
cmp dword [esi + 0xc], 0
je 0x44a26c
mov dword [esp + 0x10], eax
cmp eax, 0x1f
mov eax, dword [esp + 8]
ja 0x44a9ab
mov ebp, eax
mov eax, dword [esp + 4]
test eax, eax
je 0x44bf01
dec eax
mov edx, dword [esp]
movzx esi, byte [edx]
mov ebx, dword [esp + 0x10]
mov ecx, ebx
shl esi, cl
inc edx
add ebp, esi
mov dword [esp + 8], ebp
lea ecx, [ebx + 8]
cmp ebx, 0x17
ja 0x44a9a0
test eax, eax
je 0x44bfc9
mov eax, dword [esp + 4]
add eax, 0xfffffffe
mov edx, dword [esp]
movzx esi, byte [edx + 1]
shl esi, cl
add edx, 2
add dword [esp + 8], esi
mov esi, dword [esp + 0x10]
lea ecx, [esi + 0x10]
cmp esi, 0xf
ja 0x44a9a0
test eax, eax
je 0x44bfc9
mov eax, dword [esp + 4]
add eax, 0xfffffffd
mov edx, dword [esp]
movzx esi, byte [edx + 2]
shl esi, cl
add edx, 3
add dword [esp + 8], esi
mov esi, dword [esp + 0x10]
lea ecx, [esi + 0x18]
cmp esi, 7
ja 0x44a9a0
test eax, eax
je 0x44bfc9
add dword [esp + 4], 0xfffffffc
mov edx, dword [esp]
movzx eax, byte [edx + 3]
add edx, 4
mov dword [esp], edx
shl eax, cl
add dword [esp + 8], eax
mov eax, dword [esp + 0x10]
add eax, 0x20
mov dword [esp + 0x10], eax
jmp 0x44a9ab
mov edi, dword [esi + 0xc]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 8]
jmp 0x44b49a
mov ebx, dword [esp + 8]
jmp 0x44aa13
cmp eax, 0xf
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 8]
ja 0x44b22f
jmp 0x44b1cf
mov edx, dword [esp + 8]
jmp 0x44a288
mov ebp, eax
mov esi, dword [esp + 8]
jmp 0x44aa74
mov edi, dword [esi + 0x44]
mov eax, dword [esp + 0x10]
jmp 0x44a5b4
mov edx, dword [esp + 0x14]
mov dword [edx], 0x3f40
mov edx, dword [edx]
jmp 0x449d3e
xor edi, edi
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 8]
jmp 0x44b494
mov dword [esp], edx
mov dword [esp + 4], eax
mov edx, esi
mov esi, dword [esp + 0xc]
bswap edx
mov dword [esi + 0x1c], edx
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x30], edx
mov dword [esi + 4], 0x3f3e
mov dword [esp + 8], 0
xor eax, eax
cmp dword [esi + 0x10], 0
je 0x44beaf
mov dword [esi + 0x1c], 1
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x30], 1
mov dword [esi + 4], 0x3f3f
cmp dword [esi + 8], 0
je 0x44a2f7
mov ecx, eax
and cl, 7
mov edx, dword [esp + 8]
shr edx, cl
and eax, 0xfffffff8
mov ecx, dword [esp + 0x14]
mov dword [ecx], 0x3f4e
mov dword [esp + 8], edx
mov edx, ecx
mov dword [esp + 0x10], eax
mov edx, dword [ecx]
jmp 0x449d3e
cmp eax, 3
mov ebx, dword [esp + 8]
jae 0x44a331
mov ecx, eax
mov eax, dword [esp + 4]
test eax, eax
je 0x44bf53
dec eax
mov dword [esp + 4], eax
mov ebp, dword [esp]
movzx eax, byte [ebp]
mov esi, ebx
mov edx, ecx
shl eax, cl
inc ebp
mov dword [esp], ebp
add esi, eax
add edx, 8
mov ebx, esi
mov esi, dword [esp + 0xc]
jmp 0x44a333
mov edx, eax
mov eax, ebx
and eax, 1
mov dword [esi + 8], eax
mov ecx, ebx
shr ecx, 1
and ecx, 3
mov eax, 0x3f41
jmp dword [ecx*4 + 0x4ff128]
mov dword [esi + 0x50], 0x4fe80a
mov dword [esi + 0x58], 9
mov dword [esi + 0x54], 0x4ff00a
mov dword [esi + 0x5c], 5
mov eax, 0x3f47
jmp case.0x44a347.0
mov eax, 0x3f44
jmp case.0x44a347.0
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_block_type
mov eax, 0x3f51
mov ecx, dword [esp + 0x14]
mov dword [ecx], eax
shr ebx, 3
mov dword [esp + 8], ebx
add edx, 0xfffffffd
mov dword [esp + 0x10], edx
mov edx, ecx
mov edx, dword [ecx]
jmp 0x449d3e
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [esp + 0x10], ecx
mov edx, ebp
mov esi, dword [esp + 0xc]
movzx eax, dx
mov ecx, edx
not ecx
shr ecx, 0x10
cmp eax, ecx
jne 0x44a48d
mov dword [esi + 0x44], eax
mov dword [esp + 8], 0
xor eax, eax
mov ecx, dword [esp + 0x14]
mov dword [ecx], 0x3f43
mov edx, dword [esi + 0x44]
test edx, edx
mov dword [esp + 0x10], eax
je 0x44a47c
mov ecx, eax
mov eax, dword [esp + 4]
cmp edx, eax
cmovae edx, eax
mov eax, dword [esp + 0x24]
cmp edx, eax
cmovae edx, eax
test edx, edx
je 0x44be1d
mov edi, edx
mov ecx, edx
mov ebx, dword [esp]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x20], ecx
cmp ecx, 8
jb 0x44a4e1
mov edx, dword [esp + 0x28]
mov eax, edx
mov ebx, dword [esp]
sub eax, ebx
mov edi, dword [esp + 0x20]
cmp eax, 0x10
jb 0x44a4e1
xor esi, esi
mov ebx, dword [esp + 0x20]
cmp ebx, 0x10
mov ecx, dword [esp]
jae 0x44a4a1
mov eax, ebx
and eax, 0xfffffff8
mov edi, ebx
and edi, 7
lea ebx, [ecx + eax]
mov edx, dword [esp + 0x28]
add edx, eax
movsd xmm0, qword [ecx + esi]
mov ebp, dword [esp + 0x28]
movsd qword [ebp + esi], xmm0
add esi, 8
cmp eax, esi
jne 0x44a45b
cmp dword [esp + 0x20], eax
jne 0x44a4e1
jmp 0x44a553
mov edx, dword [esp + 0x14]
mov dword [edx], 0x3f3f
mov edx, dword [edx]
jmp 0x449d3e
mov dword [esp + 8], edx
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_stored_block_lengths
jmp 0x44bd53
mov esi, ebx
and esi, 0xfffffff0
xor eax, eax
movups xmm0, xmmword [ecx + eax]
mov edx, dword [esp + 0x28]
movups xmmword [edx + eax], xmm0
add eax, 0x10
cmp esi, eax
jne 0x44a4a8
cmp ebx, esi
je 0x44a553
mov ebx, dword [esp + 0x20]
test bl, 8
jne 0x44b5c3
mov eax, dword [esp + 0x28]
lea edx, [eax + esi]
add esi, dword [esp]
mov edi, ebx
and edi, 0xf
mov ebx, esi
lea esi, [edi - 1]
mov ebp, edi
and ebp, 7
je 0x44a4ff
xor eax, eax
movzx ecx, byte [ebx + eax]
mov byte [edx + eax], cl
inc eax
cmp ebp, eax
jne 0x44a4ed
sub edi, eax
add ebx, eax
add edx, eax
cmp esi, 7
jb 0x44a553
xor esi, esi
movzx eax, byte [ebx + esi]
mov byte [edx + esi], al
movzx eax, byte [ebx + esi + 1]
mov byte [edx + esi + 1], al
movzx eax, byte [ebx + esi + 2]
mov byte [edx + esi + 2], al
movzx eax, byte [ebx + esi + 3]
mov byte [edx + esi + 3], al
movzx eax, byte [ebx + esi + 4]
mov byte [edx + esi + 4], al
movzx eax, byte [ebx + esi + 5]
mov byte [edx + esi + 5], al
movzx eax, byte [ebx + esi + 6]
mov byte [edx + esi + 6], al
movzx eax, byte [ebx + esi + 7]
mov byte [edx + esi + 7], al
add esi, 8
cmp edi, esi
jne 0x44a506
mov eax, dword [esp + 0x20]
sub dword [esp + 4], eax
add dword [esp], eax
sub dword [esp + 0x24], eax
add dword [esp + 0x28], eax
mov esi, dword [esp + 0xc]
sub dword [esi + 0x44], eax
mov edx, dword [esp + 0x14]
mov edx, dword [edx]
jmp 0x449d3e
mov esi, dword [esp + 4]
mov dword [esp + 4], ebp
mov edi, 0xffffffff
mov ecx, eax
shl edi, cl
not edi
and edi, ebp
mov ebp, dword [esp + 0xc]
add edi, dword [ebp + 0x44]
mov dword [ebp + 0x44], edi
sub edx, eax
add dword [ebp + 0x1bc8], eax
mov eax, dword [esp + 4]
shr eax, cl
mov dword [esp], ebx
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov esi, ebp
mov eax, edx
mov dword [esi + 0x1bcc], edi
mov dword [esi + 4], 0x3f4a
mov edi, dword [esi + 0x54]
movzx ecx, byte [esi + 0x5c]
mov ebx, eax
mov edx, 0xffffffff
shl edx, cl
not edx
mov ecx, dword [esp + 8]
and ecx, edx
movzx eax, byte [edi + ecx*4 + 1]
cmp ebx, eax
mov dword [esp + 0x10], ebx
jae 0x44a633
mov ebp, edi
mov ecx, ebx
mov esi, dword [esp + 4]
mov edi, dword [esp]
sub esi, 1
jb 0x44bdb2
movzx eax, byte [edi]
shl eax, cl
inc edi
mov ebx, dword [esp + 8]
add ebx, eax
add ecx, 8
mov dword [esp + 8], ebx
and ebx, edx
movzx eax, byte [ebp + ebx*4 + 1]
cmp ecx, eax
jb 0x44a5f1
lea edx, [ebx*4]
add edx, ebp
mov ebx, edi
mov edi, ebp
mov dword [esp + 4], esi
mov dword [esp + 0x10], ecx
mov esi, dword [esp + 0xc]
jmp 0x44a639
lea edx, [edi + ecx*4]
mov ebx, dword [esp]
movzx ebp, word [edx + 2]
movzx edx, byte [edx]
cmp edx, 0x10
mov dword [esp], ebx
jae 0x44a6df
add edx, eax
mov esi, 0xffffffff
mov ecx, edx
shl esi, cl
movzx ebp, bp
not esi
mov edx, dword [esp + 8]
mov dword [esp + 0x20], esi
and edx, esi
mov ecx, eax
shr edx, cl
mov dword [esp + 0x2c], ebp
add edx, ebp
mov ebp, edi
movzx edi, byte [edi + edx*4 + 1]
lea ecx, [eax + edi]
mov esi, dword [esp + 0x10]
cmp ecx, esi
jbe 0x44a6f6
mov dword [esp + 0x34], ebp
mov edx, esi
mov esi, dword [esp + 4]
mov ebp, ebx
sub esi, 1
jb 0x44bdb2
movzx edi, byte [ebp]
inc ebp
mov ecx, edx
shl edi, cl
mov ebx, dword [esp + 8]
add ebx, edi
add edx, 8
mov dword [esp + 8], ebx
and ebx, dword [esp + 0x20]
mov ecx, eax
shr ebx, cl
add ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x34]
movzx edi, byte [ecx + ebx*4 + 1]
lea ecx, [eax + edi]
cmp ecx, edx
ja 0x44a68e
mov ecx, dword [esp + 0x34]
lea ecx, [ecx + ebx*4]
mov dword [esp], ebp
mov dword [esp + 4], esi
mov dword [esp + 0x10], edx
mov edx, ecx
jmp 0x44a6ff
mov word [esp + 0x20], bp
mov ebp, dword [esp + 0x10]
mov ebx, dword [esi + 0x1bc8]
mov edi, esi
mov esi, dword [esp + 8]
jmp 0x44a729
lea edx, [edx*4]
add edx, ebp
mov ebp, dword [esp + 0x10]
mov esi, dword [esp + 8]
movzx ecx, word [edx + 2]
mov word [esp + 0x20], cx
mov ecx, eax
shr esi, cl
sub ebp, eax
mov ebx, eax
mov ecx, dword [esp + 0xc]
add ebx, dword [ecx + 0x1bc8]
movzx edx, byte [edx]
mov eax, edi
mov edi, ecx
mov ecx, eax
shr esi, cl
sub ebp, eax
mov dword [esp + 0x10], ebp
add ebx, eax
mov dword [edi + 0x1bc8], ebx
movzx eax, dl
test al, 0x40
jne 0x44a790
movzx ecx, word [esp + 0x20]
mov dword [edi + 0x48], ecx
and eax, 0xf
mov dword [edi + 0x4c], eax
mov dword [edi + 4], 0x3f4b
mov ebx, esi
mov edx, dword [esp + 0x10]
mov esi, edi
test eax, eax
je 0x44a7b2
mov ebp, ebx
cmp edx, eax
jae 0x44a7b8
mov dword [esp + 0x10], edx
mov esi, dword [esp + 4]
mov ebx, dword [esp]
sub esi, 1
jb 0x44bde9
movzx edi, byte [ebx]
mov ecx, edx
shl edi, cl
inc ebx
add ebp, edi
add edx, 8
cmp edx, eax
jb 0x44a774
jmp 0x44a7bf
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_distance_code
mov edx, dword [esp + 0x14]
mov dword [edx], 0x3f51
mov dword [esp + 8], esi
mov esi, edi
mov edx, dword [edx]
jmp 0x449d3e
mov dword [esp + 8], ebx
jmp 0x44a7f0
mov ebx, dword [esp]
mov esi, dword [esp + 4]
mov edi, ebp
mov ebp, 0xffffffff
mov ecx, eax
shl ebp, cl
not ebp
and ebp, edi
mov ecx, dword [esp + 0xc]
add dword [ecx + 0x48], ebp
mov ebp, ecx
sub edx, eax
add dword [ecx + 0x1bc8], eax
mov ecx, eax
shr edi, cl
mov dword [esp], ebx
mov dword [esp + 4], esi
mov esi, ebp
mov dword [esp + 8], edi
mov eax, edx
mov ecx, dword [esp + 0x14]
mov dword [ecx], 0x3f4c
mov ebx, eax
mov eax, dword [esp + 0x24]
test eax, eax
je 0x44be66
mov edx, dword [esp + 0x30]
sub edx, eax
mov eax, dword [esi + 0x48]
mov ecx, eax
sub ecx, edx
mov dword [esp + 0x10], ebx
jbe 0x44a83b
cmp ecx, dword [esi + 0x30]
jbe 0x44a850
cmp dword [esi + 0x1bc4], 0
je 0x44a850
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_distance_too_far_back
jmp 0x44bd53
mov edx, esi
mov ebp, dword [esp + 0x28]
mov esi, ebp
sub ebp, eax
mov ecx, dword [edx + 0x44]
mov edi, ecx
mov eax, dword [esp + 0x24]
jmp 0x44a87c
mov edx, esi
mov esi, dword [esp + 0x28]
mov ebp, dword [edx + 0x34]
mov edi, ecx
sub edi, ebp
jbe 0x44a869
mov ebp, dword [edx + 0x2c]
sub ebp, edi
add ebp, dword [edx + 0x38]
jmp 0x44a870
sub ebp, ecx
add ebp, dword [edx + 0x38]
mov edi, ecx
mov eax, dword [esp + 0x24]
mov ecx, dword [edx + 0x44]
cmp edi, ecx
cmovae edi, ecx
cmp edi, eax
cmovae edi, eax
sub ecx, edi
mov dword [edx + 0x44], ecx
cmp edi, 0x10
mov dword [esp + 0x20], edi
jb 0x44a8d1
mov dword [esp + 0x24], eax
mov eax, esi
mov ecx, esi
sub ecx, ebp
cmp ecx, 0x10
jb 0x44a8d9
mov esi, edi
and esi, 0xfffffff0
lea ecx, [eax + esi]
mov edx, edi
and edx, 0xf
lea ebx, [esi + ebp]
xor edi, edi
movups xmm0, xmmword [ebp + edi]
movups xmmword [eax + edi], xmm0
add edi, 0x10
cmp esi, edi
jne 0x44a8b0
mov edi, dword [esp + 0x20]
cmp edi, esi
mov eax, dword [esp + 0x24]
jne 0x44a8e3
jmp 0x44a963
mov ecx, esi
mov edx, edi
mov ebx, ebp
jmp 0x44a8e3
mov ecx, eax
mov edx, edi
mov ebx, ebp
mov eax, dword [esp + 0x24]
lea esi, [edx - 1]
mov ebp, edx
and ebp, 7
je 0x44a909
xor edi, edi
movzx eax, byte [ebx + edi]
mov byte [ecx + edi], al
inc edi
cmp ebp, edi
jne 0x44a8ef
add ecx, edi
sub edx, edi
add ebx, edi
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x20]
cmp esi, 7
jb 0x44a963
xor esi, esi
movzx eax, byte [ebx + esi]
mov byte [ecx + esi], al
movzx eax, byte [ebx + esi + 1]
mov byte [ecx + esi + 1], al
movzx eax, byte [ebx + esi + 2]
mov byte [ecx + esi + 2], al
movzx eax, byte [ebx + esi + 3]
mov byte [ecx + esi + 3], al
movzx eax, byte [ebx + esi + 4]
mov byte [ecx + esi + 4], al
movzx eax, byte [ebx + esi + 5]
mov byte [ecx + esi + 5], al
movzx eax, byte [ebx + esi + 6]
mov byte [ecx + esi + 6], al
movzx eax, byte [ebx + esi + 7]
mov byte [ecx + esi + 7], al
add esi, 8
cmp edx, esi
jne 0x44a910
add ecx, esi
mov eax, dword [esp + 0x24]
sub eax, edi
mov dword [esp + 0x24], eax
mov esi, dword [esp + 0xc]
cmp dword [esi + 0x44], 0
je 0x44a982
mov dword [esp + 0x28], ecx
mov edx, dword [esp + 0x14]
mov edx, dword [edx]
jmp 0x449d3e
mov edx, dword [esp + 0x14]
mov dword [edx], 0x3f48
mov dword [esp + 0x28], ecx
mov edx, dword [edx]
jmp 0x449d3e
mov ebx, dword [esp + 8]
jmp 0x44b394
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x30]
mov esi, edx
sub esi, eax
mov ecx, dword [esp + 0x1c]
add dword [ecx + 0x14], esi
mov ecx, dword [esp + 0xc]
add dword [ecx + 0x20], esi
mov ecx, dword [ecx + 0xc]
mov edi, ecx
and ecx, 4
je 0x44b44e
mov ebp, eax
cmp edx, eax
je 0x44b44e
mov edx, dword [esp + 0x28]
sub edx, esi
mov eax, dword [esp + 0xc]
cmp dword [eax + 0x14], 0
mov ecx, dword [eax + 0x1c]
je 0x44b42f
push esi
push edx
push ecx
call fcn.00449920
add esp, 0xc
jmp 0x44b438
mov dword [esp], edx
mov dword [esp + 4], eax
mov eax, ecx
mov ebx, esi
mov esi, dword [esp + 0xc]
mov dword [esi + 0x14], ebx
cmp bl, 8
mov edx, dword [esp + 0x14]
jne 0x44aa4b
test ebx, 0xe000
je 0x44af3e
mov dword [esp + 8], ebx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.unknown_header_flags_set
mov dword [edx], 0x3f51
mov edx, dword [edx]
jmp 0x449d3e
mov dword [esp + 8], ebx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.unknown_compression_method
mov dword [edx], 0x3f51
mov edx, dword [edx]
jmp 0x449d3e
mov dword [esp], edx
mov dword [esp + 4], eax
mov ebp, ecx
mov edx, esi
and edx, 0x1f
lea eax, [edx + 0x101]
mov ebx, dword [esp + 0xc]
mov dword [ebx + 0x64], eax
mov ecx, esi
shr ecx, 5
and ecx, 0x1f
lea eax, [ecx + 1]
mov dword [ebx + 0x68], eax
mov edi, esi
shr edi, 0xa
and edi, 0xf
add edi, 4
mov dword [ebx + 0x60], edi
shr esi, 0xe
mov dword [esp + 8], esi
add ebp, 0xfffffff2
cmp edx, 0x1d
mov eax, ebp
ja 0x44ab43
cmp ecx, 0x1e
jae 0x44ab43
mov esi, dword [esp + 0xc]
mov dword [esi + 0x6c], 0
mov dword [esi + 4], 0x3f45
xor ecx, ecx
mov edx, ecx
jmp 0x44ab12
mov ebp, dword [esp + 8]
mov ebx, eax
mov esi, ebp
and esi, 7
lea ecx, [edx + 1]
mov eax, dword [esp + 0xc]
mov dword [eax + 0x6c], ecx
movzx edx, word [edx + edx + 0x4fe7e4]
mov word [eax + edx*2 + 0x74], si
mov esi, eax
shr ebp, 3
mov dword [esp + 8], ebp
add ebx, 0xfffffffd
mov edx, ecx
cmp ecx, edi
mov eax, ebx
jae 0x44a06a
cmp eax, 2
ja 0x44aad8
mov ecx, eax
mov eax, dword [esp + 4]
test eax, eax
je 0x44be15
mov ebx, dword [esp]
movzx esi, byte [ebx]
shl esi, cl
dec eax
mov dword [esp + 4], eax
inc ebx
mov dword [esp], ebx
mov ebx, ecx
mov ebp, dword [esp + 8]
add ebp, esi
add ebx, 8
jmp 0x44aade
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov edx, dword [esp + 0x14]
mov dword [edx], 0x3f51
mov esi, dword [esp + 0xc]
mov edx, dword [edx]
jmp 0x449d3e
mov eax, ecx
mov ebx, dword [esp + 0xc]
add ecx, 0xfffffff0
mov edx, eax
cmp ecx, 3
mov esi, ebx
jb 0x44abbf
movzx ecx, word [eax + eax + 0x4fe7e4]
mov word [esi + ecx*2 + 0x74], 0
movzx ecx, word [eax + eax + 0x4fe7e6]
mov word [esi + ecx*2 + 0x74], 0
movzx ecx, word [eax + eax + 0x4fe7e8]
mov word [esi + ecx*2 + 0x74], 0
lea edx, [eax + 4]
movzx eax, word [eax + eax + 0x4fe7ea]
mov word [esi + eax*2 + 0x74], 0
mov eax, edx
cmp edx, 0x13
jne 0x44ab79
mov dword [esi + 0x6c], edx
mov eax, dword [esp + 0x48]
mov dword [esi + 0x70], eax
mov dword [esi + 0x50], eax
mov dword [esi + 0x58], 7
push dword [esp + 0x40]
push dword [esp + 0x48]
push dword [esp + 0x40]
push 0x13
push dword [esp + 0x4c]
push 0
call fcn.004490c0
add esp, 0x18
test eax, eax
je 0x44ac07
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_code_lengths_set
jmp 0x44bd53
mov dword [esi + 0x6c], 0
mov dword [esi + 4], 0x3f46
xor ecx, ecx
mov dword [esp + 0x18], 0
mov ebx, dword [esp + 8]
mov eax, dword [esi + 0x64]
mov edx, dword [esi + 0x68]
add edx, eax
cmp ecx, edx
jae 0x44aec7
mov dword [esp + 0x34], edx
mov dword [esp + 0x2c], ecx
mov eax, esi
mov esi, dword [esi + 0x50]
movzx ecx, byte [eax + 0x58]
mov edi, 0xffffffff
shl edi, cl
not edi
mov dword [esp + 8], ebx
mov ecx, ebx
and ecx, edi
movzx edx, byte [esi + ecx*4 + 1]
mov eax, dword [esp + 0x10]
cmp eax, edx
jae 0x44aca2
mov ebp, eax
mov ecx, dword [esp + 4]
mov dword [esp + 0x20], ecx
mov ebx, dword [esp]
mov ecx, dword [esp + 0x20]
sub ecx, 1
jb 0x44bdbf
mov dword [esp + 0x20], ecx
movzx edx, byte [ebx]
mov ecx, eax
shl edx, cl
inc ebx
mov ecx, dword [esp + 8]
add ecx, edx
add eax, 8
mov dword [esp + 8], ecx
and ecx, edi
movzx edx, byte [esi + ecx*4 + 1]
cmp eax, edx
jb 0x44ac6f
jmp 0x44acad
mov ebx, dword [esp]
mov edi, dword [esp + 4]
mov dword [esp + 0x20], edi
movzx ecx, word [esi + ecx*4 + 2]
cmp ecx, 0xf
ja 0x44ace6
mov edi, dword [esp + 0x2c]
lea esi, [edi + 1]
mov ebp, dword [esp + 0xc]
mov dword [ebp + 0x6c], esi
mov word [ebp + edi*2 + 0x74], cx
mov ecx, edx
shr dword [esp + 8], cl
sub eax, edx
mov dword [esp], ebx
mov ecx, dword [esp + 0x20]
mov dword [esp + 4], ecx
mov dword [esp + 0x10], eax
jmp 0x44ae87
cmp ecx, 0x10
je 0x44ad40
cmp ecx, 0x11
jne 0x44ad9e
lea esi, [edx + 3]
cmp eax, esi
jae 0x44ad1f
mov ecx, dword [esp + 0x20]
sub ecx, 1
jb 0x44be2a
mov dword [esp + 0x20], ecx
movzx edi, byte [ebx]
mov ecx, eax
shl edi, cl
inc ebx
add dword [esp + 8], edi
add eax, 8
cmp eax, esi
jb 0x44acfb
mov ecx, edx
mov esi, dword [esp + 8]
shr esi, cl
mov ecx, esi
and ecx, 7
add ecx, 3
shr esi, 3
mov dword [esp + 8], esi
sub eax, edx
add eax, 0xfffffffd
jmp 0x44ade5
lea esi, [edx + 2]
cmp eax, esi
jae 0x44ad6b
mov ecx, dword [esp + 0x20]
sub ecx, 1
jb 0x44be2a
mov dword [esp + 0x20], ecx
movzx edi, byte [ebx]
mov ecx, eax
shl edi, cl
inc ebx
add dword [esp + 8], edi
add eax, 8
cmp eax, esi
jb 0x44ad47
mov ecx, edx
mov esi, dword [esp + 8]
shr esi, cl
sub eax, edx
mov edx, dword [esp + 0x2c]
test edx, edx
je 0x44bd64
mov ecx, dword [esp + 0xc]
movzx edx, word [ecx + edx*2 + 0x72]
mov ecx, esi
and ecx, 3
add ecx, 3
shr esi, 2
mov dword [esp + 8], esi
add eax, 0xfffffffe
jmp 0x44ade7
lea esi, [edx + 7]
cmp eax, esi
jae 0x44adc9
mov ecx, dword [esp + 0x20]
sub ecx, 1
jb 0x44be2a
mov dword [esp + 0x20], ecx
movzx edi, byte [ebx]
mov ecx, eax
shl edi, cl
inc ebx
add dword [esp + 8], edi
add eax, 8
cmp eax, esi
jb 0x44ada5
mov ecx, edx
mov esi, dword [esp + 8]
shr esi, cl
mov ecx, esi
and ecx, 0x7f
add ecx, 0xb
shr esi, 7
mov dword [esp + 8], esi
sub eax, edx
add eax, 0xfffffff9
xor edx, edx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x2c]
add eax, ecx
cmp eax, dword [esp + 0x34]
ja 0x44b97d
lea eax, [ecx - 1]
mov esi, ecx
and esi, 3
je 0x44ae36
mov dword [esp], ecx
mov dword [esp + 4], eax
xor edi, edi
mov ebp, dword [esp + 0xc]
mov eax, dword [ebp + 0x6c]
mov ecx, edx
mov edx, esi
lea esi, [eax + 1]
mov dword [ebp + 0x6c], esi
mov esi, edx
mov edx, ecx
mov word [ebp + eax*2 + 0x74], dx
inc edi
cmp esi, edi
jne 0x44ae12
mov ecx, dword [esp]
sub ecx, edi
mov eax, dword [esp + 4]
cmp eax, 3
mov ebp, dword [esp + 0xc]
jb 0x44ae7c
mov eax, dword [ebp + 0x6c]
lea esi, [eax + 1]
mov dword [ebp + 0x6c], esi
mov word [ebp + eax*2 + 0x74], dx
mov eax, dword [ebp + 0x6c]
lea esi, [eax + 1]
mov dword [ebp + 0x6c], esi
mov word [ebp + eax*2 + 0x74], dx
mov eax, dword [ebp + 0x6c]
lea esi, [eax + 1]
mov dword [ebp + 0x6c], esi
mov word [ebp + eax*2 + 0x74], dx
mov eax, dword [ebp + 0x6c]
lea esi, [eax + 1]
mov dword [ebp + 0x6c], esi
mov word [ebp + eax*2 + 0x74], dx
add ecx, 0xfffffffc
jne 0x44ae3f
mov dword [esp], ebx
mov eax, dword [esp + 0x20]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x64]
mov ecx, dword [ebp + 0x6c]
mov edx, dword [ebp + 0x68]
add edx, eax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x34], edx
cmp ecx, edx
mov esi, ebp
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 8]
jb 0x44ac3b
cmp dword [edx], 0x3f51
mov edi, dword [esp + 0x38]
jne 0x44aecb
mov dword [esp + 8], ebx
mov edx, dword [esp + 0x14]
mov edx, dword [edx]
jmp 0x449d3e
mov edi, dword [esp + 0x38]
cmp word [esi + 0x274], 0
mov dword [esp + 8], ebx
je 0x44af2e
mov ecx, dword [esp + 0x48]
mov dword [esi + 0x70], ecx
mov dword [esi + 0x50], ecx
mov dword [esi + 0x58], 9
mov ebp, dword [esp + 0x40]
push ebp
push dword [esp + 0x48]
push edi
push eax
mov ebx, dword [esp + 0x4c]
push ebx
push 1
call fcn.004490c0
add esp, 0x18
test eax, eax
je 0x44b31d
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_literal_lengths_set
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f51
mov edx, eax
mov edx, dword [eax]
jmp 0x449d3e
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_code____missing_end_of_block
jmp 0x44bd53
mov eax, dword [esi + 0x24]
mov ecx, ebx
test eax, eax
je 0x44af54
mov ecx, ebx
shr ecx, 8
and ecx, 1
mov dword [eax], ecx
mov ecx, dword [esi + 0x14]
test ecx, 0x200
je 0x44af95
test byte [esi + 0xc], 4
je 0x44af95
mov ecx, ebx
mov eax, dword [esi + 0x1c]
not eax
mov edx, ebx
xor edx, eax
shr eax, 8
movzx edx, dl
xor eax, dword [edx*4 + 0x4fe364]
mov edx, dword [esp + 0x14]
shr ecx, 8
xor ecx, eax
shr eax, 8
movzx ecx, cl
xor eax, dword [ecx*4 + 0x4fe364]
not eax
mov dword [esi + 0x1c], eax
mov dword [edx], 0x3f36
xor eax, eax
xor ebx, ebx
mov ecx, eax
mov eax, dword [esp + 4]
test eax, eax
je 0x44be79
mov esi, ebx
mov ebp, dword [esp]
movzx edx, byte [ebp]
shl edx, cl
dec eax
add esi, edx
lea edx, [ebp + 1]
cmp ecx, 0x17
ja 0x44b048
mov ebx, ecx
add ecx, 8
test eax, eax
je 0x44bee3
mov ebp, dword [esp]
movzx edx, byte [ebp + 1]
shl edx, cl
mov eax, dword [esp + 4]
add eax, 0xfffffffe
add esi, edx
lea edx, [ebp + 2]
cmp ebx, 0xf
ja 0x44b048
lea ecx, [ebx + 0x10]
test eax, eax
je 0x44bee3
mov edi, ebx
mov ebp, dword [esp]
movzx edx, byte [ebp + 2]
shl edx, cl
mov eax, dword [esp + 4]
add eax, 0xfffffffd
add esi, edx
mov ebx, esi
lea ecx, [ebp + 3]
mov edx, edi
cmp edi, 7
ja 0x44b5cb
add edi, 0x18
mov edx, edi
test eax, eax
mov esi, dword [esp + 0xc]
je 0x44bfdb
add dword [esp + 4], 0xfffffffc
mov ecx, dword [esp]
movzx eax, byte [ecx + 3]
add ecx, 4
mov dword [esp], ecx
mov ecx, edx
shl eax, cl
add ebx, eax
jmp 0x44b055
mov dword [esp], edx
mov dword [esp + 4], eax
mov ebx, esi
mov esi, dword [esp + 0xc]
mov eax, dword [esi + 0x24]
test eax, eax
mov edx, dword [esp + 0x14]
je 0x44b063
mov dword [eax + 4], ebx
test byte [esi + 0x15], 2
je 0x44b0d2
test byte [esi + 0xc], 4
je 0x44b0d2
mov eax, ebx
shr ebx, 8
mov edx, eax
shr edx, 0x10
mov esi, eax
shr esi, 0x18
mov ecx, dword [esp + 0xc]
mov ecx, dword [ecx + 0x1c]
not ecx
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x4fe364]
xor ebx, ecx
shr ecx, 8
movzx eax, bl
mov ebx, dword [esp + 0x14]
xor ecx, dword [eax*4 + 0x4fe364]
xor edx, ecx
shr ecx, 8
movzx eax, dl
mov edx, ebx
xor ecx, dword [eax*4 + 0x4fe364]
movzx eax, cl
shr ecx, 8
xor eax, esi
mov esi, dword [esp + 0xc]
xor ecx, dword [eax*4 + 0x4fe364]
not ecx
mov dword [esi + 0x1c], ecx
mov dword [edx], 0x3f37
xor eax, eax
xor ebx, ebx
mov ecx, eax
mov eax, dword [esp + 4]
test eax, eax
je 0x44be79
mov esi, ebx
mov ebp, dword [esp]
movzx edx, byte [ebp]
shl edx, cl
dec eax
add esi, edx
mov ebx, esi
lea edx, [ebp + 1]
cmp ecx, 7
ja 0x44b129
add ecx, 8
test eax, eax
mov esi, dword [esp + 0xc]
je 0x44bf4c
add dword [esp + 4], 0xfffffffe
mov edx, dword [esp]
movzx eax, byte [edx + 1]
add edx, 2
mov dword [esp], edx
shl eax, cl
add ebx, eax
jmp 0x44b134
mov dword [esp], edx
mov dword [esp + 4], eax
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 0x14]
mov eax, dword [esi + 0x24]
test eax, eax
je 0x44b152
mov ecx, ebx
movzx ecx, bl
mov dword [eax + 8], ecx
mov eax, ebx
shr eax, 8
mov ecx, dword [esi + 0x24]
mov dword [ecx + 0xc], eax
mov edi, dword [esi + 0x14]
test edi, 0x200
je 0x44b19a
test byte [esi + 0xc], 4
je 0x44b19a
mov edx, ebx
mov ecx, dword [esi + 0x1c]
not ecx
xor ebx, ecx
shr ecx, 8
movzx esi, bl
mov eax, dword [esp + 0x14]
xor ecx, dword [esi*4 + 0x4fe364]
mov esi, dword [esp + 0xc]
shr edx, 8
xor edx, ecx
shr ecx, 8
movzx edx, dl
xor ecx, dword [edx*4 + 0x4fe364]
mov edx, eax
not ecx
mov dword [esi + 0x1c], ecx
mov dword [edx], 0x3f38
xor ebx, ebx
mov eax, 0
mov ecx, 0
test edi, 0x400
jne 0x44b1cf
mov ebx, edx
mov edx, eax
mov eax, dword [esi + 0x24]
test eax, eax
je 0x44b1c6
mov dword [eax + 0x10], 0
mov eax, edx
mov edx, ebx
jmp 0x44b288
mov dword [esp + 8], ebx
mov ebx, dword [esp + 4]
test ebx, ebx
je 0x44bf3b
mov esi, dword [esp + 8]
mov ebp, dword [esp]
movzx edx, byte [ebp]
mov ecx, eax
shl edx, cl
lea eax, [ebx - 1]
add esi, edx
lea edx, [ebp + 1]
cmp ecx, 7
ja 0x44b21e
add ecx, 8
test eax, eax
je 0x44bf68
add dword [esp + 4], 0xfffffffe
mov eax, dword [esp]
movzx edx, byte [eax + 1]
add eax, 2
mov dword [esp], eax
shl edx, cl
add esi, edx
jmp 0x44b225
mov dword [esp], edx
mov dword [esp + 4], eax
mov ebx, esi
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 0x14]
mov dword [esi + 0x44], ebx
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x44b23f
mov dword [ecx + 0x14], ebx
mov edi, dword [esi + 0x14]
xor ecx, ecx
test edi, 0x200
je 0x44b286
test byte [esi + 0xc], 4
je 0x44b286
mov edx, ebx
shr edx, 8
mov eax, dword [esi + 0x1c]
not eax
xor ebx, eax
shr eax, 8
movzx esi, bl
mov ebx, dword [esp + 0x14]
xor eax, dword [esi*4 + 0x4fe364]
mov esi, dword [esp + 0xc]
xor edx, eax
shr eax, 8
movzx edx, dl
xor eax, dword [edx*4 + 0x4fe364]
mov edx, ebx
not eax
mov dword [esi + 0x1c], eax
xor eax, eax
mov dword [edx], 0x3f39
mov dword [esp + 8], ecx
mov ebx, eax
mov ebp, dword [esi + 0x14]
test ebp, 0x400
je 0x44bac8
mov ecx, dword [esi + 0x44]
mov edx, dword [esp + 4]
cmp ecx, edx
mov edi, edx
cmovb edi, ecx
test edi, edi
je 0x44bac0
mov eax, dword [esi + 0x24]
test eax, eax
je 0x44ba8c
mov edx, dword [eax + 0x10]
mov dword [esp + 0x2c], edx
test edx, edx
je 0x44ba8c
mov edx, dword [eax + 0x14]
mov dword [esp + 0x20], edi
mov esi, dword [eax + 0x18]
mov dword [esp + 0x34], edx
mov eax, edx
sub eax, ecx
mov edx, dword [esp + 0x20]
add edx, eax
mov edi, esi
sub edi, eax
cmp edx, esi
mov edx, edi
mov edi, dword [esp + 0x20]
cmovbe edx, edi
test edx, edx
je 0x44ba8c
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x2c]
add eax, ebx
cmp edx, 8
jae 0x44b360
mov ebp, edx
mov ecx, dword [esp]
mov edx, eax
jmp 0x44ba0b
mov eax, dword [esi + 0x70]
mov dword [esi + 0x54], eax
mov dword [esi + 0x5c], 6
mov eax, dword [esi + 0x64]
lea eax, [ebx + eax*2]
push ebp
push dword [esp + 0x58]
push edi
push dword [esi + 0x68]
push eax
push 2
call fcn.004490c0
add esp, 0x18
test eax, eax
je 0x44b61c
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_distances_set
jmp 0x44bd53
mov esi, dword [esp + 0x34]
add esi, ebx
mov ebx, dword [esp]
add ecx, ebx
sub esi, ecx
cmp esi, 0x10
jae 0x44b5d7
mov ebp, edx
mov ecx, ebx
mov edx, eax
jmp 0x44ba0b
mov dword [esp], esi
mov edx, dword [esp + 0x20]
mov dword [esp + 4], edx
mov edx, ecx
mov ebx, ebp
mov esi, dword [esp + 0xc]
test al, 2
je 0x44b3d6
cmp ebx, 0x8b1f
jne 0x44b3d6
cmp dword [esi + 0x28], 0
mov edx, dword [esp + 0x14]
jne 0x44b3b1
mov dword [esi + 0x28], 0xf
mov dword [esi + 0x1c], 0xf6e946c9
mov dword [esi + 4], 0x3f35
mov dword [esp + 8], 0
mov dword [esp + 0x10], 0
mov edx, dword [edx]
jmp 0x449d3e
mov dword [esp + 0x10], edx
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x44b3eb
mov dword [ecx + 0x30], 0xffffffff
mov eax, dword [esi + 0xc]
test al, 1
mov edx, dword [esp + 0x14]
mov dword [esp + 8], ebx
je 0x44b417
mov eax, ebx
shl eax, 8
movzx eax, ax
mov ecx, ebx
shr ecx, 8
add ecx, eax
imul eax, ecx, 0xbdef7bdf
cmp eax, 0x8421085
jb 0x44b8ae
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.incorrect_header_check
mov dword [edx], 0x3f51
mov edx, dword [edx]
jmp 0x449d3e
push esi
call fcn.0044c720
add esp, 4
mov ecx, dword [esp + 0xc]
mov dword [ecx + 0x1c], eax
mov edx, dword [esp + 0x1c]
mov dword [edx + 0x30], eax
mov ecx, dword [ecx + 0xc]
mov edi, ecx
and ecx, 4
test ecx, ecx
je 0x44b480
mov esi, dword [esp + 0xc]
cmp dword [esi + 0x14], 0
mov eax, dword [esp + 8]
mov ecx, eax
bswap ecx
cmovne ecx, eax
cmp ecx, dword [esi + 0x1c]
mov edx, dword [esp + 0x14]
jne 0x44b59f
xor ebx, ebx
xor eax, eax
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x30], ecx
jmp 0x44b494
xor ebx, ebx
xor eax, eax
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x30], ecx
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 0x14]
mov dword [edx], 0x3f4f
test edi, edi
je 0x44be4c
cmp dword [esi + 0x14], 0
je 0x44be4c
mov dword [esp + 8], edi
mov ecx, eax
cmp eax, 0x1f
ja 0x44b569
mov ecx, dword [esp + 4]
test ecx, ecx
je 0x44bf37
mov ebp, ebx
lea edx, [ecx - 1]
mov esi, dword [esp]
movzx edi, byte [esi]
mov ebx, eax
mov ecx, eax
shl edi, cl
inc esi
add ebp, edi
lea ecx, [eax + 8]
cmp eax, 0x17
ja 0x44b556
test edx, edx
je 0x44be82
mov edx, dword [esp + 4]
add edx, 0xfffffffe
mov esi, dword [esp]
movzx edi, byte [esi + 1]
shl edi, cl
add esi, 2
add ebp, edi
mov edi, eax
lea ecx, [eax + 0x10]
cmp eax, 0xf
ja 0x44b556
test edx, edx
je 0x44be82
mov edx, dword [esp + 4]
add edx, 0xfffffffd
mov esi, dword [esp]
movzx edi, byte [esi + 2]
shl edi, cl
add esi, 3
add ebp, edi
mov edi, eax
lea ecx, [eax + 0x18]
cmp eax, 7
ja 0x44b556
test edx, edx
je 0x44be82
add dword [esp + 4], 0xfffffffc
mov esi, dword [esp]
movzx edx, byte [esi + 3]
add esi, 4
mov dword [esp], esi
shl edx, cl
add ebp, edx
mov ebx, ebp
add eax, 0x20
jmp 0x44b561
mov dword [esp], esi
mov dword [esp + 4], edx
mov eax, ecx
mov ebx, ebp
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 0x14]
xor ecx, ecx
test byte [esp + 8], 4
je 0x44be50
cmp ebx, dword [esi + 0x20]
je 0x44be50
mov dword [esp + 8], ebx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.incorrect_length_check
mov dword [edx], 0x3f51
mov edx, dword [edx]
jmp 0x449d3e
mov dword [esp + 8], eax
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.incorrect_data_check
mov dword [edx], 0x3f51
mov eax, dword [esp + 0x24]
mov dword [esp + 0x30], eax
mov edx, dword [edx]
jmp 0x449d3e
mov ecx, dword [esp]
jmp 0x44a448
mov dword [esp], ecx
mov dword [esp + 4], eax
jmp 0x44b051
xor esi, esi
cmp edx, 0x10
jb 0x44b9d6
mov esi, edx
and esi, 0xfffffff0
xor ecx, ecx
movups xmm0, xmmword [ebx + ecx]
movups xmmword [eax + ecx], xmm0
add ecx, 0x10
cmp esi, ecx
jne 0x44b5e9
cmp edx, esi
je 0x44ba81
test dl, 8
jne 0x44b9d3
add eax, esi
add esi, dword [esp]
and edx, 0xf
mov ebp, edx
mov ecx, esi
mov edx, eax
jmp 0x44ba0b
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dword [ecx], 0x3f48
mov ebx, eax
cmp dword [esp + 4], 6
mov eax, dword [esp + 0x24]
jb 0x44b6c5
cmp eax, 0x102
jb 0x44b6c5
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
mov dword [edi + 0xc], ecx
mov dword [edi + 0x10], eax
mov eax, dword [esp]
mov dword [edi], eax
mov eax, dword [esp + 4]
mov dword [edi + 4], eax
mov eax, dword [esp + 8]
mov dword [esi + 0x3c], eax
mov dword [esi + 0x40], ebx
push dword [esp + 0x30]
push edi
call fcn.004484a0
add esp, 8
mov eax, dword [edi + 0xc]
mov dword [esp + 0x28], eax
mov eax, dword [edi + 0x10]
mov dword [esp + 0x24], eax
mov eax, dword [edi]
mov dword [esp], eax
mov eax, dword [edi + 4]
mov dword [esp + 4], eax
mov ecx, dword [esi + 0x3c]
mov eax, dword [esi + 0x40]
mov dword [esp + 0x10], eax
cmp dword [esi + 4], 0x3f3f
mov dword [esp + 8], ecx
jne 0x44b73c
mov dword [esi + 0x1bc8], 0xffffffff
mov edx, dword [esp + 0x14]
mov edx, dword [edx]
jmp 0x449d3e
mov dword [esi + 0x1bc8], 0
mov ebp, dword [esi + 0x50]
movzx ecx, byte [esi + 0x58]
mov edx, 0xffffffff
shl edx, cl
not edx
mov ecx, dword [esp + 8]
and ecx, edx
movzx eax, byte [ebp + ecx*4 + 1]
cmp ebx, eax
mov dword [esp + 0x10], ebx
jae 0x44b747
mov ecx, ebx
mov esi, dword [esp + 4]
mov edi, dword [esp]
sub esi, 1
jb 0x44bdb2
movzx eax, byte [edi]
shl eax, cl
inc edi
mov ebx, dword [esp + 8]
add ebx, eax
add ecx, 8
mov dword [esp + 8], ebx
and ebx, edx
movzx eax, byte [ebp + ebx*4 + 1]
cmp ecx, eax
jb 0x44b6fb
lea edx, [ebx*4]
add edx, ebp
mov dword [esp], edi
mov dword [esp + 4], esi
mov dword [esp + 0x10], ecx
mov esi, dword [esp + 0xc]
jmp 0x44b750
mov edx, dword [esp + 0x14]
mov edx, dword [edx]
jmp 0x449d3e
lea edx, [ecx*4]
add edx, ebp
movzx ebx, word [edx + 2]
mov ch, byte [edx]
mov cl, ch
dec cl
cmp cl, 0xe
ja 0x44b7f1
movzx ecx, ch
add ecx, eax
mov edx, 0xffffffff
shl edx, cl
movzx ebx, bx
not edx
mov esi, dword [esp + 8]
mov dword [esp + 0x20], edx
and esi, edx
mov ecx, eax
shr esi, cl
mov dword [esp + 0x2c], ebx
add esi, ebx
movzx edx, byte [ebp + esi*4 + 1]
lea ecx, [eax + edx]
mov ebx, dword [esp + 0x10]
cmp ecx, ebx
jbe 0x44b801
mov dword [esp + 0x34], ebp
mov edi, dword [esp + 4]
mov esi, dword [esp]
sub edi, 1
jb 0x44bdb2
movzx edx, byte [esi]
inc esi
mov ecx, ebx
shl edx, cl
mov ebp, dword [esp + 8]
add ebp, edx
add ebx, 8
mov dword [esp + 8], ebp
and ebp, dword [esp + 0x20]
mov ecx, eax
shr ebp, cl
add ebp, dword [esp + 0x2c]
mov ecx, dword [esp + 0x34]
movzx edx, byte [ecx + ebp*4 + 1]
lea ecx, [eax + edx]
cmp ecx, ebx
ja 0x44b7a3
mov ecx, dword [esp + 0x34]
lea ebp, [ecx + ebp*4]
mov dword [esp], esi
mov dword [esp + 4], edi
mov dword [esp + 0x10], ebx
jmp 0x44b805
mov edx, eax
xor eax, eax
mov edi, ebx
mov ebx, dword [esp + 8]
mov ebp, dword [esp + 0x10]
jmp 0x44b81e
lea ebp, [ebp + esi*4]
mov ebx, dword [esp + 8]
mov ecx, eax
shr ebx, cl
movzx edi, word [ebp + 2]
mov ch, byte [ebp]
mov ebp, dword [esp + 0x10]
sub ebp, eax
mov esi, dword [esp + 0xc]
sub ebp, edx
mov dword [esp + 0x10], ebp
add eax, edx
mov cl, dl
shr ebx, cl
mov dword [esi + 0x1bc8], eax
movzx eax, di
mov edx, esi
mov dword [esi + 0x44], eax
test ch, ch
mov dword [esp + 8], ebx
je 0x44b863
movzx eax, ch
test al, 0x20
mov ecx, dword [esp + 0x14]
jne 0x44b878
test al, 0x40
mov esi, edx
jne 0x44b894
and eax, 0xf
mov dword [esi + 0x4c], eax
mov dword [esi + 4], 0x3f49
jmp 0x44a0b8
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f4d
mov esi, edx
mov edx, eax
mov edx, dword [eax]
jmp 0x449d3e
mov esi, edx
mov dword [edx + 0x1bc8], 0xffffffff
mov dword [edx + 4], 0x3f3f
mov edx, ecx
mov edx, dword [ecx]
jmp 0x449d3e
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_literal_length_code
mov edx, ecx
mov dword [ecx], 0x3f51
mov edx, dword [ecx]
jmp 0x449d3e
mov eax, ebx
and eax, 0xf
cmp eax, 8
jne 0x44aa53
mov eax, ebx
shr eax, 4
mov ecx, eax
and ecx, 0xf
lea edx, [ecx + 8]
mov esi, dword [esi + 0x28]
test esi, esi
jne 0x44b8d9
mov esi, dword [esp + 0xc]
mov dword [esi + 0x28], edx
mov esi, edx
cmp ecx, 7
ja 0x44b9aa
cmp edx, esi
ja 0x44b9aa
mov eax, 0x100
shl eax, cl
mov esi, dword [esp + 0xc]
mov dword [esi + 0x18], eax
mov dword [esi + 0x14], 0
mov dword [esi + 0x1c], 1
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x30], 1
xor eax, eax
test ebx, 0x2000
sete al
lea eax, [eax + eax + 0x3f3d]
mov dword [esi + 4], eax
mov dword [esp + 8], 0
mov dword [esp + 0x10], 0
mov edx, dword [esp + 0x14]
mov edx, dword [edx]
jmp 0x449d3e
mov dword [esp], ecx
mov dword [esp + 4], eax
jmp 0x44a284
test eax, eax
je 0x44bee3
add dword [esp + 4], 0xfffffffc
mov edx, dword [esp]
movzx eax, byte [edx + 3]
add edx, 4
mov dword [esp], edx
shl eax, cl
mov edx, esi
add edx, eax
mov eax, dword [esp + 0x10]
add eax, 0x20
mov dword [esp + 0x10], eax
jmp 0x44a3b2
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f51
mov dword [esp], ebx
mov edx, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 4], eax
mov esi, dword [esp + 0xc]
mov edx, dword [edx]
jmp 0x449d3e
add dword [esp + 0x10], 0xfffffffc
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], str.invalid_window_size
mov edx, dword [esp + 0x14]
mov dword [edx], 0x3f51
mov dword [esp + 8], eax
mov esi, dword [esp + 0xc]
mov edx, dword [edx]
jmp 0x449d3e
mov ebx, dword [esp]
mov ecx, edx
and ecx, 0xfffffff8
mov dword [esp + 0x34], edx
mov ebp, edx
and ebp, 7
mov edx, ecx
add ecx, ebx
mov dword [esp + 0x2c], edx
add edx, eax
movsd xmm0, qword [ebx + esi]
movsd qword [eax + esi], xmm0
add esi, 8
cmp dword [esp + 0x2c], esi
jne 0x44b9ee
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x34], eax
je 0x44ba81
lea ebx, [ebp - 1]
mov edi, ebp
and edi, 7
je 0x44ba29
xor esi, esi
movzx eax, byte [ecx + esi]
mov byte [edx + esi], al
inc esi
cmp edi, esi
jne 0x44ba17
sub ebp, esi
add ecx, esi
add edx, esi
cmp ebx, 7
mov edi, dword [esp + 0x20]
jb 0x44ba81
xor eax, eax
movzx ebx, byte [ecx + eax]
mov byte [edx + eax], bl
movzx ebx, byte [ecx + eax + 1]
mov byte [edx + eax + 1], bl
movzx ebx, byte [ecx + eax + 2]
mov byte [edx + eax + 2], bl
movzx ebx, byte [ecx + eax + 3]
mov byte [edx + eax + 3], bl
movzx ebx, byte [ecx + eax + 4]
mov byte [edx + eax + 4], bl
movzx ebx, byte [ecx + eax + 5]
mov byte [edx + eax + 5], bl
movzx ebx, byte [ecx + eax + 6]
mov byte [edx + eax + 6], bl
movzx ebx, byte [ecx + eax + 7]
mov byte [edx + eax + 7], bl
add eax, 8
cmp ebp, eax
jne 0x44ba34
mov eax, dword [esp + 0xc]
mov ebp, dword [eax + 0x14]
mov ebx, dword [esp + 0x10]
test ebp, 0x200
mov esi, dword [esp + 0xc]
je 0x44bab1
test byte [esi + 0xc], 4
je 0x44bab1
push edi
push dword [esp + 4]
push dword [esi + 0x1c]
call fcn.00449920
add esp, 0xc
mov dword [esi + 0x1c], eax
sub dword [esp + 4], edi
add dword [esp], edi
mov ecx, dword [esi + 0x44]
sub ecx, edi
mov dword [esi + 0x44], ecx
test ecx, ecx
jne 0x44bea0
mov eax, dword [esp + 0xc]
mov dword [eax + 0x44], 0
mov dword [eax + 4], 0x3f3a
mov eax, ebx
test ebp, 0x800
jne 0x44baff
mov ecx, eax
mov esi, dword [esp + 0xc]
mov eax, dword [esi + 0x24]
test eax, eax
je 0x44baf8
mov dword [eax + 0x1c], 0
mov eax, ecx
jmp 0x44bb99
cmp dword [esp + 4], 0
mov esi, dword [esp + 0xc]
je 0x44bf3b
mov ebp, esi
mov dword [esp + 0x10], eax
xor esi, esi
nop word cs:[eax + eax]
mov eax, dword [esp]
movzx ebx, byte [eax + esi]
mov ecx, dword [ebp + 0x24]
test ecx, ecx
je 0x44bb50
mov eax, dword [ecx + 0x1c]
test eax, eax
je 0x44bb50
mov edx, dword [ebp + 0x44]
cmp edx, dword [ecx + 0x20]
jae 0x44bb50
lea ecx, [edx + 1]
mov dword [ebp + 0x44], ecx
mov byte [eax + edx], bl
nop word cs:[eax + eax]
inc esi
test bl, bl
mov ecx, dword [esp + 4]
je 0x44bb5d
cmp ecx, esi
ja 0x44bb20
test byte [ebp + 0x15], 2
je 0x44bb82
mov edi, ebp
test byte [ebp + 0xc], 4
je 0x44bb82
push esi
push dword [esp + 4]
push dword [edi + 0x1c]
call fcn.00449920
add esp, 0xc
mov dword [edi + 0x1c], eax
mov ecx, dword [esp + 4]
test bl, bl
jne 0x44be2f
sub ecx, esi
mov dword [esp + 4], ecx
add dword [esp], esi
mov eax, dword [esp + 0x10]
mov esi, ebp
mov dword [esi + 0x44], 0
mov dword [esi + 4], 0x3f3b
test byte [esi + 0x15], 0x10
jne 0x44bbc8
mov ecx, eax
mov eax, dword [esi + 0x24]
test eax, eax
je 0x44bbbd
mov dword [eax + 0x24], 0
mov eax, ecx
mov edx, dword [esp + 0x14]
jmp 0x44bc5d
cmp dword [esp + 4], 0
je 0x44bf3b
mov ebp, esi
mov dword [esp + 0x10], eax
xor esi, esi
nop dword [eax + eax]
mov eax, dword [esp]
movzx ebx, byte [eax + esi]
mov ecx, dword [ebp + 0x24]
test ecx, ecx
je 0x44bc10
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x44bc10
mov edx, dword [ebp + 0x44]
cmp edx, dword [ecx + 0x28]
jae 0x44bc10
lea ecx, [edx + 1]
mov dword [ebp + 0x44], ecx
mov byte [eax + edx], bl
nop word cs:[eax + eax]
inc esi
test bl, bl
mov ecx, dword [esp + 4]
je 0x44bc1d
cmp ecx, esi
ja 0x44bbe0
test byte [ebp + 0x15], 2
je 0x44bc42
mov edi, ebp
test byte [ebp + 0xc], 4
je 0x44bc42
push esi
push dword [esp + 4]
push dword [edi + 0x1c]
call fcn.00449920
add esp, 0xc
mov dword [edi + 0x1c], eax
mov ecx, dword [esp + 4]
test bl, bl
jne 0x44be2f
sub ecx, esi
mov dword [esp + 4], ecx
add dword [esp], esi
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov esi, ebp
mov dword [edx], 0x3f3c
mov edx, eax
mov eax, dword [esi + 0x14]
test eax, 0x200
jne 0x44bc78
mov ebx, dword [esp + 8]
jmp 0x44bcfa
mov ecx, edx
cmp edx, 0xf
mov ebx, dword [esp + 8]
ja 0x44bce8
mov ecx, dword [esp + 4]
test ecx, ecx
je 0x44bfe2
mov ebp, ebx
dec ecx
mov dword [esp + 0x10], ecx
mov esi, dword [esp]
movzx edi, byte [esi]
mov ebx, edx
mov ecx, ebx
shl edi, cl
inc esi
add ebp, edi
lea ecx, [edx + 8]
cmp edx, 7
ja 0x44bcd5
cmp dword [esp + 0x10], 0
je 0x44be82
add dword [esp + 4], 0xfffffffe
mov esi, dword [esp]
movzx ebx, byte [esi + 1]
add esi, 2
mov dword [esp], esi
shl ebx, cl
add ebp, ebx
mov ebx, ebp
add edx, 0x10
jmp 0x44bce4
mov dword [esp], esi
mov edx, dword [esp + 0x10]
mov dword [esp + 4], edx
mov edx, ecx
mov ebx, ebp
mov esi, dword [esp + 0xc]
test byte [esi + 0xc], 4
je 0x44bcf6
movzx ecx, word [esi + 0x1c]
cmp ebx, ecx
jne 0x44bd40
xor ebx, ebx
xor edx, edx
mov dword [esp + 0x10], edx
mov ecx, dword [esi + 0x24]
test ecx, ecx
je 0x44bd18
shr eax, 9
and eax, 1
mov dword [ecx + 0x2c], eax
mov eax, dword [esi + 0x24]
mov dword [eax + 0x30], 1
mov dword [esp + 8], ebx
mov dword [esi + 0x1c], 0
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x30], 0
mov dword [esi + 4], 0x3f3f
mov edx, dword [esp + 0x14]
mov edx, dword [edx]
jmp 0x449d3e
mov dword [esp + 8], ebx
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x18], str.header_crc_mismatch
mov edx, dword [esp + 0x14]
mov dword [edx], 0x3f51
mov edx, dword [edx]
jmp 0x449d3e
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], str.invalid_bit_length_repeat
mov ecx, dword [esp + 0x14]
mov dword [ecx], 0x3f51
mov dword [esp], ebx
mov edx, ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 4], ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 8], esi
mov esi, eax
mov edx, dword [edx]
jmp 0x449d3e
mov ebx, edi
mov edi, dword [esp + 0x1c]
cmp dword [edi + 4], 0
mov edi, ebx
jne 0x44c459
jmp 0x449ca4
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x10]
lea eax, [eax + edx*8]
jmp 0x44bdcc
mov edx, dword [esp + 4]
lea eax, [edx*8]
add eax, ebp
mov ecx, dword [esp]
add ecx, edx
mov dword [esp], ecx
mov dword [esp + 4], 0
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
jmp case.0x449d5b.16208
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x10]
lea eax, [eax + edx*8]
mov ecx, dword [esp]
add ecx, edx
mov dword [esp], ecx
mov dword [esp + 4], 0
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
mov dword [esp + 8], ebp
jmp case.0x449d5b.16208
mov dword [esp + 4], 0
mov edx, dword [esp + 0x18]
mov eax, ecx
mov ecx, edx
jmp case.0x449d5b.16208
mov dword [esp], ebx
jmp 0x44bdd4
mov eax, dword [esp]
add eax, esi
sub ecx, esi
mov dword [esp], eax
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
mov esi, ebp
jmp case.0x449d5b.16208
mov ecx, ebx
jmp 0x44be52
xor eax, eax
mov dword [edx], 0x3f50
mov dword [esp + 8], ecx
mov ecx, 1
jmp case.0x449d5b.16208
mov dword [esp + 0x24], 0
mov ecx, dword [esp + 0x18]
mov eax, ebx
jmp case.0x449d5b.16208
mov dword [esp + 8], ebx
jmp 0x44bf53
mov dword [esp], esi
mov dword [esp + 4], 0
mov eax, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 8], ebp
mov esi, dword [esp + 0xc]
jmp case.0x449d5b.16208
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
mov eax, ebx
jmp case.0x449d5b.16208
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
mov dword [edx + 0xc], ecx
mov ecx, eax
mov eax, dword [esp + 0x24]
mov dword [edx + 0x10], eax
mov eax, dword [esp]
mov dword [edx], eax
mov eax, dword [esp + 4]
mov dword [edx + 4], eax
mov eax, dword [esp + 8]
mov dword [esi + 0x3c], eax
mov dword [esi + 0x40], ecx
mov eax, 2
jmp 0x44c459
mov dword [esp], edx
mov dword [esp + 4], 0
mov eax, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 8], esi
mov esi, dword [esp + 0xc]
jmp case.0x449d5b.16208
mov dword [esp + 4], 0
mov ebx, dword [esp + 0x18]
jmp 0x44bfa3
mov eax, 0xfffffffe
jmp 0x44c459
mov eax, 0xfffffffc
jmp 0x44c459
mov dword [esp + 0x24], 0
mov ecx, dword [esp + 0x18]
jmp case.0x449d5b.16208
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov ecx, dword [esp + 0x18]
jmp case.0x449d5b.16208
mov dword [esp + 8], ebx
mov dword [esp], edx
mov dword [esp + 4], 0
mov ebx, dword [esp + 0x18]
mov eax, ecx
mov ecx, ebx
jmp case.0x449d5b.16208
mov dword [esp], edx
mov dword [esp + 4], 0
mov ebx, dword [esp + 0x18]
mov dword [esp + 8], esi
mov esi, dword [esp + 0xc]
jmp 0x44bf5f
mov dword [esp + 4], 0
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
jmp 0x44bf5f
mov dword [esp + 4], 0
mov ebx, dword [esp + 0x18]
mov dword [esp + 8], ebp
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
mov ecx, ebx
jmp case.0x449d5b.16208
mov dword [esp], edx
jmp 0x44be85
mov dword [esp + 4], 0
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
jmp 0x44bfee
mov dword [esp], edx
mov dword [esp + 4], 0
mov eax, ecx
jmp 0x44bddc
mov dword [esp + 8], ebx
mov dword [esp], ecx
mov dword [esp + 4], 0
mov ecx, dword [esp + 0x18]
mov eax, edx
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
mov dword [edx + 0xc], ecx
mov ecx, eax
mov eax, dword [esp + 0x24]
mov dword [edx + 0x10], eax
mov eax, dword [esp]
mov dword [edx], eax
mov eax, dword [esp + 4]
mov dword [edx + 4], eax
mov eax, dword [esp + 8]
mov dword [esi + 0x3c], eax
mov eax, ecx
mov dword [esi + 0x40], ecx
cmp dword [esi + 0x2c], 0
mov eax, dword [edx + 0x10]
mov dword [esp + 4], eax
je 0x44c24a
mov eax, dword [esp + 0x1c]
mov edi, dword [eax + 0xc]
mov ebx, dword [eax + 0x1c]
mov edx, dword [ebx + 0x38]
test edx, edx
jne 0x44c06a
movzx ecx, byte [ebx + 0x28]
mov eax, 1
shl eax, cl
push 1
push eax
mov eax, dword [esp + 0x24]
push dword [eax + 0x28]
call dword [eax + 0x20]
add esp, 0xc
mov edx, eax
mov dword [ebx + 0x38], eax
test eax, eax
je 0x44c2d0
mov ebp, dword [esp + 0x30]
sub ebp, dword [esp + 4]
mov eax, dword [ebx + 0x2c]
test eax, eax
jne 0x44c095
movzx ecx, byte [ebx + 0x28]
mov eax, 1
shl eax, cl
mov dword [ebx + 0x2c], eax
mov dword [ebx + 0x34], 0
mov dword [ebx + 0x30], 0
cmp eax, ebp
jbe 0x44c284
mov dword [esp + 0x20], edi
mov dword [esp + 8], ebx
mov esi, eax
mov eax, dword [ebx + 0x34]
sub esi, eax
cmp esi, ebp
mov dword [esp], ebp
mov dword [esp + 0x28], esi
cmovb ebp, esi
mov dword [esp + 0x14], ebp
test ebp, ebp
je 0x44c16c
lea edi, [edx + eax]
mov esi, dword [esp + 0x20]
mov ecx, esi
sub ecx, dword [esp]
mov ebx, dword [esp + 0x14]
cmp ebx, 8
jb 0x44c0f2
add edx, eax
mov eax, dword [esp + 4]
add eax, esi
mov esi, dword [esp + 0x30]
sub esi, eax
add esi, edx
cmp esi, 0x10
jae 0x44c461
mov eax, ebx
mov ebp, ecx
mov edx, edi
lea ecx, [eax - 1]
mov edi, eax
and edi, 7
je 0x44c117
xor esi, esi
movzx ebx, byte [ebp + esi]
mov byte [edx + esi], bl
inc esi
cmp edi, esi
jne 0x44c104
sub eax, esi
add ebp, esi
add edx, esi
cmp ecx, 7
jb 0x44c16c
xor ecx, ecx
movzx ebx, byte [ebp + ecx]
mov byte [edx + ecx], bl
movzx ebx, byte [ebp + ecx + 1]
mov byte [edx + ecx + 1], bl
movzx ebx, byte [ebp + ecx + 2]
mov byte [edx + ecx + 2], bl
movzx ebx, byte [ebp + ecx + 3]
mov byte [edx + ecx + 3], bl
movzx ebx, byte [ebp + ecx + 4]
mov byte [edx + ecx + 4], bl
movzx ebx, byte [ebp + ecx + 5]
mov byte [edx + ecx + 5], bl
movzx ebx, byte [ebp + ecx + 6]
mov byte [edx + ecx + 6], bl
movzx ebx, byte [ebp + ecx + 7]
mov byte [edx + ecx + 7], bl
add ecx, 8
cmp eax, ecx
jne 0x44c11e
mov eax, dword [esp]
cmp dword [esp + 0x28], eax
jae 0x44c299
mov edx, dword [esp + 0x14]
sub eax, edx
mov dword [esp], eax
je 0x44c231
mov eax, dword [esp + 8]
mov edi, dword [eax + 0x38]
mov esi, dword [esp + 0x20]
mov eax, esi
mov ebp, dword [esp]
sub eax, ebp
cmp ebp, 8
jb 0x44c1bd
mov ecx, dword [esp + 4]
add ecx, esi
add ecx, edx
mov ebx, dword [esp + 0x30]
mov edx, ebx
sub edx, ecx
add edx, edi
cmp edx, 0x10
jae 0x44c4d7
mov ebp, dword [esp]
mov edx, edi
lea esi, [ebp - 1]
mov ebx, ebp
and ebx, 7
je 0x44c1dd
xor edi, edi
movzx ecx, byte [eax + edi]
mov byte [edx + edi], cl
inc edi
cmp ebx, edi
jne 0x44c1cb
sub ebp, edi
add eax, edi
add edx, edi
cmp esi, 7
jb 0x44c231
xor esi, esi
movzx ecx, byte [eax + esi]
mov byte [edx + esi], cl
movzx ecx, byte [eax + esi + 1]
mov byte [edx + esi + 1], cl
movzx ecx, byte [eax + esi + 2]
mov byte [edx + esi + 2], cl
movzx ecx, byte [eax + esi + 3]
mov byte [edx + esi + 3], cl
movzx ecx, byte [eax + esi + 4]
mov byte [edx + esi + 4], cl
movzx ecx, byte [eax + esi + 5]
mov byte [edx + esi + 5], cl
movzx ecx, byte [eax + esi + 6]
mov byte [edx + esi + 6], cl
movzx ecx, byte [eax + esi + 7]
mov byte [edx + esi + 7], cl
add esi, 8
cmp ebp, esi
jne 0x44c1e4
mov ecx, dword [esp + 8]
mov eax, dword [esp]
mov dword [ecx + 0x34], eax
mov eax, dword [ecx + 0x2c]
mov dword [ecx + 0x30], eax
mov esi, dword [esp + 0xc]
jmp 0x44c380
mov eax, dword [esp + 4]
cmp dword [esp + 0x30], eax
je 0x44c380
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
cmp eax, 0x3f50
jg 0x44c380
cmp dword [esp + 0x50], 4
jne 0x44c031
cmp eax, 0x3f4d
jg 0x44c380
jmp 0x44c031
test eax, eax
je 0x44c2c9
mov esi, edi
sub edi, eax
cmp eax, 8
mov dword [esp + 8], ebx
jae 0x44c2e4
mov ecx, eax
jmp 0x44c2f3
mov ebx, dword [esp + 8]
mov ecx, dword [ebx + 0x34]
mov ebp, dword [esp + 0x14]
add ecx, ebp
mov edx, dword [ebx + 0x2c]
mov eax, dword [ebx + 0x30]
xor esi, esi
cmp ecx, edx
cmovne esi, ecx
mov dword [ebx + 0x34], esi
cmp eax, edx
mov esi, dword [esp + 0xc]
jae 0x44c380
add eax, ebp
jmp 0x44c37d
xor eax, eax
jmp 0x44c376
mov eax, dword [esp + 0x14]
mov dword [eax], 0x3f52
mov eax, 0xfffffffc
jmp 0x44c459
mov ecx, eax
sub eax, esi
add eax, edx
cmp eax, 0x10
jae 0x44c49a
mov ebp, edi
mov eax, edx
lea edx, [ecx - 1]
mov edi, ecx
and edi, 7
je 0x44c316
xor esi, esi
movzx ebx, byte [ebp + esi]
mov byte [eax + esi], bl
inc esi
cmp edi, esi
jne 0x44c303
sub ecx, esi
add ebp, esi
add eax, esi
cmp edx, 7
jb 0x44c36b
xor edx, edx
movzx ebx, byte [ebp + edx]
mov byte [eax + edx], bl
movzx ebx, byte [ebp + edx + 1]
mov byte [eax + edx + 1], bl
movzx ebx, byte [ebp + edx + 2]
mov byte [eax + edx + 2], bl
movzx ebx, byte [ebp + edx + 3]
mov byte [eax + edx + 3], bl
movzx ebx, byte [ebp + edx + 4]
mov byte [eax + edx + 4], bl
movzx ebx, byte [ebp + edx + 5]
mov byte [eax + edx + 5], bl
movzx ebx, byte [ebp + edx + 6]
mov byte [eax + edx + 6], bl
movzx ebx, byte [ebp + edx + 7]
mov byte [eax + edx + 7], bl
add edx, 8
cmp ecx, edx
jne 0x44c31d
mov ebx, dword [esp + 8]
mov eax, dword [ebx + 0x2c]
mov esi, dword [esp + 0xc]
mov dword [ebx + 0x34], 0
mov dword [ebx + 0x30], eax
mov edx, dword [esp + 0x1c]
mov edi, dword [edx + 4]
mov ecx, esi
mov ebp, dword [edx + 0x10]
mov eax, dword [esp + 0x4c]
sub eax, edi
add dword [edx + 8], eax
mov esi, dword [esp + 0x30]
mov eax, esi
sub eax, ebp
add dword [edx + 0x14], eax
add dword [ecx + 0x20], eax
test byte [ecx + 0xc], 4
je 0x44c3eb
cmp esi, ebp
je 0x44c3eb
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx + 0xc]
sub edx, eax
mov ecx, dword [esp + 0xc]
cmp dword [ecx + 0x14], 0
mov ecx, dword [ecx + 0x1c]
je 0x44c3d0
push eax
push edx
push ecx
call fcn.00449920
add esp, 0xc
jmp 0x44c3d9
push eax
call fcn.0044c720
add esp, 4
mov ecx, dword [esp + 0xc]
mov dword [ecx + 0x1c], eax
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x30], eax
mov esi, dword [esp + 0x30]
xor eax, eax
mov ecx, dword [esp + 0xc]
cmp dword [ecx + 8], 0
setne al
shl eax, 6
add eax, dword [ecx + 0x40]
mov edx, dword [ecx + 4]
xor ecx, ecx
cmp edx, 0x3f3f
sete cl
shl ecx, 7
cmp edx, 0x3f47
sete bl
cmp edx, 0x3f42
sete dl
or dl, bl
movzx edx, dl
shl edx, 8
add edx, ecx
add edx, eax
mov ecx, dword [esp + 0x4c]
xor ecx, edi
xor esi, ebp
mov ebx, dword [esp + 0x10]
test ebx, ebx
mov eax, 0xfffffffb
cmovne eax, ebx
mov edi, dword [esp + 0x1c]
mov dword [edi + 0x2c], edx
or esi, ecx
cmove ebx, eax
cmp dword [esp + 0x50], 4
cmove ebx, eax
mov eax, ebx
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret
xor esi, esi
cmp ebx, 0x10
jae 0x44c549
mov eax, ebx
and ebx, 0xfffffff8
and eax, 7
lea ebp, [ecx + ebx]
lea edx, [edi + ebx]
movsd xmm0, qword [ecx + esi]
movsd qword [edi + esi], xmm0
add esi, 8
cmp ebx, esi
jne 0x44c47a
cmp dword [esp + 0x14], ebx
jne 0x44c0f8
jmp 0x44c16c
xor esi, esi
cmp ecx, 0x10
jae 0x44c582
mov ebx, ecx
and ebx, 0xfffffff8
mov dword [esp + 0x28], ecx
and ecx, 7
lea ebp, [edi + ebx]
lea eax, [edx + ebx]
movsd xmm0, qword [edi + esi]
movsd qword [edx + esi], xmm0
add esi, 8
cmp ebx, esi
jne 0x44c4b7
cmp dword [esp + 0x28], ebx
jne 0x44c2f7
jmp 0x44c36b
xor esi, esi
mov ecx, 0
mov ebp, dword [esp]
cmp ebp, 0x10
jae 0x44c5b9
and ebp, 0xfffffff8
mov dword [esp + 0x28], ebp
mov ebp, dword [esp + 4]
add ebp, ecx
add ebp, dword [esp + 0x14]
mov edx, dword [esp + 0x28]
add edx, edi
add edi, ecx
sub ebp, ebx
add dword [esp + 0x20], ebp
mov ebx, dword [esp + 0x28]
sub ebx, ecx
mov ebp, dword [esp + 0x20]
mov ecx, dword [esp]
and ecx, 7
mov dword [esp + 4], ecx
add eax, dword [esp + 0x28]
mov ecx, dword [esp]
movsd xmm0, qword [ebp + esi]
movsd qword [edi + esi], xmm0
add esi, 8
cmp ebx, esi
jne 0x44c524
cmp ecx, dword [esp + 0x28]
mov ebp, dword [esp + 4]
jne 0x44c1bf
jmp 0x44c231
mov esi, ebx
and esi, 0xfffffff0
xor eax, eax
movups xmm0, xmmword [ecx + eax]
movups xmmword [edi + eax], xmm0
add eax, 0x10
cmp esi, eax
jne 0x44c550
cmp ebx, esi
je 0x44c16c
mov ebx, dword [esp + 0x14]
test bl, 8
jne 0x44c46c
add edi, esi
add ecx, esi
mov eax, ebx
and eax, 0xf
jmp 0x44c0f4
mov ebx, ecx
mov esi, ecx
and esi, 0xfffffff0
xor eax, eax
movups xmm0, xmmword [edi + eax]
movups xmmword [edx + eax], xmm0
add eax, 0x10
cmp esi, eax
jne 0x44c58b
cmp ebx, esi
je 0x44c36b
mov ecx, ebx
test cl, 8
jne 0x44c4a5
add edx, esi
add edi, esi
and ecx, 0xf
jmp 0x44c2f3
mov ecx, ebp
and ecx, 0xfffffff0
xor edx, edx
movups xmm0, xmmword [eax + edx]
movups xmmword [edi + edx], xmm0
add edx, 0x10
cmp ecx, edx
jne 0x44c5c0
cmp dword [esp], ecx
je 0x44c231
test byte [esp], 8
jne 0x44c5ed
add edi, ecx
add eax, ecx
mov ebp, dword [esp]
and ebp, 0xf
jmp 0x44c1bd
mov ebx, dword [esp + 0x30]
mov ebp, dword [esp]
jmp 0x44c4ea
mov dword [esp + 8], edx
mov dword [esp], ecx
mov dword [esp + 4], 0
mov eax, ebx
mov ecx, dword [esp + 0x18]
jmp case.0x449d5b.16208