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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x8c
mov eax, dword [esp + 0xa0]
test eax, eax
je case.default.0x4a8b08
mov eax, dword [esp + 0xa0]
mov ebp, dword [eax + 0x20]
test ebp, ebp
je case.default.0x4a8b08
mov edi, dword [eax + 0x24]
test edi, edi
je case.default.0x4a8b08
mov edi, dword [eax + 0x1c]
mov eax, 0xfffffffe
test edi, edi
je 0x4a8a41
mov esi, dword [edi]
cmp dword [esp + 0xa0], esi
je 0x4a8a60
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret
add esp, 0x8c
mov eax, 0xfffffffe
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebx, dword [edi + 4]
lea edx, [ebx - 0x3f34]
cmp edx, 0x1f
ja 0x4a8a41
mov esi, dword [esp + 0xa0]
mov edx, dword [esi + 0xc]
test edx, edx
je 0x4a8a41
mov ecx, dword [esi]
test ecx, ecx
je 0x4aa2a0
cmp ebx, 0x3f3f
je 0x4aa250
mov eax, ebx
mov ebx, ecx
mov dword [esp + 0x2c], edx
mov esi, dword [esp + 0xa0]
mov edx, dword [esp + 0xa4]
mov dword [esp + 0x20], edi
mov dword [esp + 0x34], 0
mov esi, dword [esi + 0x10]
sub edx, 5
mov dword [esp + 0x4c], edx
lea edx, [edi + 0x2f4]
mov dword [esp + 0x50], edx
mov ecx, esi
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0xa0]
mov dword [esp + 0x28], ecx
lea ecx, [edi + 0x534]
mov dword [esp + 0x54], ecx
mov esi, dword [esi + 4]
mov ebp, esi
mov dword [esp + 0x38], esi
mov esi, dword [edi + 0x3c]
mov dword [esp + 0x24], esi
mov esi, dword [edi + 0x40]
mov edi, ebp
mov ebp, ebx
sub eax, 0x3f34
cmp eax, 0x1e
ja case.default.0x4a8b08
jmp dword [eax*4 + 0x574930]
cmp esi, 0x1f
ja 0x4a8ba8
test edi, edi
nop
lea esi, [esi]
je 0x4aa240
movzx eax, byte [ebp]
mov ecx, esi
lea edx, [edi - 1]
lea ebx, [ebp + 1]
shl eax, cl
lea ecx, [esi + 8]
add dword [esp + 0x24], eax
cmp ecx, 0x1f
ja 0x4aab61
test edx, edx
je 0x4aa7e0
movzx eax, byte [ebp + 1]
lea edx, [edi - 2]
lea ebx, [ebp + 2]
shl eax, cl
lea ecx, [esi + 0x10]
add dword [esp + 0x24], eax
cmp ecx, 0x1f
ja 0x4aab61
test edx, edx
je 0x4aa7e0
movzx eax, byte [ebp + 2]
add esi, 0x18
lea edx, [edi - 3]
lea ebx, [ebp + 3]
shl eax, cl
add dword [esp + 0x24], eax
cmp esi, 0x1f
ja 0x4aab61
test edx, edx
je 0x4aa7fa
movzx eax, byte [ebp + 3]
mov ecx, esi
sub edi, 4
lea ebx, [ebp + 4]
shl eax, cl
add dword [esp + 0x24], eax
mov ebp, ebx
mov esi, dword [esp + 0x24]
mov ebx, dword [esp + 0xa0]
mov dword [esp + 0x24], 0
mov edx, esi
mov eax, esi
shr eax, 0x18
shl edx, 0x18
add edx, eax
mov eax, esi
shr eax, 8
and eax, 0xff00
add edx, eax
mov eax, esi
mov esi, dword [esp + 0x20]
and eax, 0xff00
shl eax, 8
add eax, edx
mov dword [esi + 0x1c], eax
mov dword [ebx + 0x30], eax
mov dword [esi + 4], 0x3f3e
xor esi, esi
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x10]
test ecx, ecx
je 0x4ab028
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.004a2b60
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0xa0]
mov dword [ebx + 0x1c], eax
mov dword [edx + 0x30], eax
mov dword [ebx + 4], 0x3f3f
cmp dword [esp + 0x4c], 1
jbe 0x4aa240
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 8]
test edx, edx
jne 0x4aa2b0
cmp esi, 2
ja 0x4aae10
test edi, edi
je 0x4aa240
movzx eax, byte [ebp]
mov ecx, esi
sub edi, 1
lea edx, [ebp + 1]
add esi, 8
shl eax, cl
add dword [esp + 0x24], eax
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x20]
mov eax, ecx
and eax, 1
shr ecx, 1
mov dword [ebx + 8], eax
mov eax, ecx
and eax, 3
cmp eax, 2
je 0x4aa765
cmp eax, 3
je 0x4aaacf
cmp eax, 1
je 0x4aaa90
mov dword [ebx + 4], 0x3f41
mov eax, 0x3f41
shr ecx, 2
sub esi, 3
mov dword [esp + 0x24], ecx
mov ebp, edx
jmp 0x4a8afa
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x4c]
test ebx, ebx
je 0x4a8d2b
cmp esi, ebx
jae 0x4a8d06
test edi, edi
je 0x4aa240
mov edx, dword [esp + 0x24]
mov ecx, esi
jmp 0x4a8ceb
test edi, edi
je 0x4aa2f0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, ebx
jb 0x4a8ce3
mov dword [esp + 0x24], edx
mov esi, ecx
mov edx, dword [esp + 0x20]
mov ecx, ebx
mov eax, 1
shl eax, cl
mov ecx, ebx
sub eax, 1
sub esi, ebx
and eax, dword [esp + 0x24]
add dword [edx + 0x1bc8], ebx
add dword [edx + 0x48], eax
shr dword [esp + 0x24], cl
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f4c
mov ebx, dword [esp + 0x30]
test ebx, ebx
je 0x4aa240
mov eax, dword [esp + 0x28]
sub eax, ebx
mov ebx, dword [esp + 0x20]
mov edx, dword [ebx + 0x48]
cmp eax, edx
jae 0x4aa3a0
sub edx, eax
cmp edx, dword [ebx + 0x30]
mov ecx, edx
ja 0x4aa671
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x34]
cmp ecx, eax
jbe 0x4aa8f6
mov ebx, dword [esp + 0x20]
sub ecx, eax
mov eax, dword [ebx + 0x2c]
sub eax, ecx
add eax, dword [ebx + 0x38]
mov edx, dword [ebx + 0x44]
cmp ecx, edx
cmova ecx, edx
jmp 0x4aa3ab
mov eax, dword [esp + 0x20]
cmp dword [esp + 0xa4], 6
mov dword [eax + 4], 0x3f47
je 0x4aa240
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f48
cmp edi, 5
ja 0x4aa843
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov ecx, dword [eax + 0x58]
mov ebx, dword [eax + 0x50]
mov dword [eax + 0x1bc8], 0
mov eax, 1
shl eax, cl
sub eax, 1
and edx, eax
mov dword [esp + 0x44], eax
lea eax, [ebx + edx*4]
movzx edx, byte [eax + 1]
mov dword [esp + 0x3c], ebx
movzx ebx, byte [eax]
movzx eax, word [eax + 2]
mov word [esp + 0x40], ax
movzx eax, dl
cmp esi, eax
jae 0x4a8e54
test edi, edi
je 0x4aa240
mov ecx, esi
mov esi, dword [esp + 0x24]
jmp 0x4a8e19
test edi, edi
je 0x4aa830
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
mov ebx, dword [esp + 0x3c]
shl eax, cl
add ecx, 8
add esi, eax
mov eax, dword [esp + 0x44]
and eax, esi
lea eax, [ebx + eax*4]
movzx edx, byte [eax + 1]
movzx ebx, byte [eax]
movzx eax, word [eax + 2]
mov word [esp + 0x40], ax
movzx eax, dl
cmp eax, ecx
ja 0x4a8e11
mov dword [esp + 0x24], esi
mov esi, ecx
test bl, bl
jne 0x4aa904
mov ebx, dword [esp + 0x20]
sub esi, eax
mov ecx, edx
shr dword [esp + 0x24], cl
mov dword [ebx + 0x1bc8], eax
movzx eax, word [esp + 0x40]
mov dword [ebx + 0x44], eax
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f4d
mov eax, 0x3f4d
jmp 0x4a8afa
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x4c]
test ebx, ebx
jne 0x4aa5d0
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x20]
mov eax, dword [eax + 0x44]
mov dword [ebx + 0x1bcc], eax
mov dword [ebx + 4], 0x3f4a
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x5c]
mov ebx, dword [eax + 0x54]
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x24]
sub eax, 1
mov dword [esp + 0x48], eax
mov dword [esp + 0x40], ebx
and ecx, eax
lea eax, [ebx + ecx*4]
movzx edx, byte [eax + 1]
movzx ebx, byte [eax]
movzx eax, word [eax + 2]
mov word [esp + 0x3c], ax
movzx eax, dl
cmp esi, eax
mov dword [esp + 0x44], eax
jae 0x4a8f59
test edi, edi
je 0x4aa240
mov ecx, esi
mov esi, edi
mov edi, dword [esp + 0x24]
jmp 0x4a8f18
test esi, esi
je 0x4aa816
add ebp, 1
movzx eax, byte [ebp - 1]
sub esi, 1
mov ebx, dword [esp + 0x40]
shl eax, cl
add ecx, 8
add edi, eax
mov eax, dword [esp + 0x48]
and eax, edi
lea eax, [ebx + eax*4]
movzx edx, byte [eax + 1]
movzx ebx, byte [eax]
movzx eax, word [eax + 2]
mov word [esp + 0x3c], ax
movzx eax, dl
cmp eax, ecx
mov dword [esp + 0x44], eax
ja 0x4a8f10
mov dword [esp + 0x24], edi
mov edi, esi
mov esi, ecx
test bl, 0xf0
jne 0x4aa6a0
movzx ecx, word [esp + 0x3c]
mov dword [esp + 0x44], ecx
lea ecx, [ebx + eax]
mov ebx, 1
shl ebx, cl
mov ecx, edx
sub ebx, 1
mov dword [esp + 0x58], ebx
and ebx, dword [esp + 0x24]
shr ebx, cl
mov ecx, dword [esp + 0x40]
add ebx, dword [esp + 0x44]
lea edx, [ecx + ebx*4]
movzx ecx, word [edx + 2]
movzx ebx, byte [edx]
movzx edx, byte [edx + 1]
mov word [esp + 0x3c], cx
lea ecx, [eax + edx]
cmp esi, ecx
mov dword [esp + 0x48], edx
jae 0x4a901e
test edi, edi
je 0x4aa240
mov ecx, edi
mov ebx, dword [esp + 0x24]
mov edi, ebp
mov ebp, ecx
jmp 0x4a8fc8
test ebp, ebp
je 0x4aa996
add edi, 1
movzx edx, byte [edi - 1]
mov ecx, esi
add esi, 8
sub ebp, 1
shl edx, cl
mov ecx, eax
add ebx, edx
mov edx, dword [esp + 0x58]
and edx, ebx
shr edx, cl
mov ecx, dword [esp + 0x40]
add edx, dword [esp + 0x44]
lea edx, [ecx + edx*4]
movzx ecx, byte [edx]
mov byte [esp + 0x5c], cl
movzx ecx, word [edx + 2]
movzx edx, byte [edx + 1]
mov word [esp + 0x3c], cx
lea ecx, [edx + eax]
cmp ecx, esi
mov dword [esp + 0x48], edx
ja 0x4a8fc0
mov dword [esp + 0x24], ebx
movzx ebx, byte [esp + 0x5c]
mov ecx, ebp
mov ebp, edi
mov edi, ecx
mov ecx, eax
sub esi, eax
shr dword [esp + 0x24], cl
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x44], edx
add eax, dword [ecx + 0x1bc8]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x40]
jmp 0x4aa6b4
mov dword [esp + 8], 1
mov ecx, dword [ebx + 0x28]
mov al, 1
shl eax, cl
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa0]
mov eax, dword [eax + 0x28]
mov dword [esp], eax
mov eax, dword [esp + 0xa0]
call dword [eax + 0x20]
test eax, eax
mov dword [ebx + 0x38], eax
jne 0x4a912d
mov dword [edi + 4], 0x3f52
mov eax, 0xfffffffc
jmp 0x4a8a41
mov ebx, ebp
mov ebp, edi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x34], 1
mov eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
mov dword [eax], ebx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], edx
mov dword [eax + 4], ebp
mov eax, dword [esp + 0x24]
mov ecx, dword [edi + 0x2c]
mov dword [edi + 0x40], esi
mov dword [edi + 0x3c], eax
mov eax, dword [esp + 0xa0]
test ecx, ecx
mov eax, dword [eax + 0x10]
jne 0x4a9104
cmp eax, dword [esp + 0x28]
je 0x4aa293
mov edx, dword [edi + 4]
cmp edx, 0x3f50
ja 0x4a91b1
cmp edx, 0x3f4d
jbe 0x4a9104
cmp dword [esp + 0xa4], 4
je 0x4a91b1
mov esi, dword [esp + 0x28]
sub esi, eax
mov eax, dword [esp + 0xa0]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xa0]
mov ebx, dword [eax + 0x1c]
mov eax, dword [ebx + 0x38]
test eax, eax
je 0x4a9045
mov edx, dword [ebx + 0x2c]
test edx, edx
jne 0x4a914c
mov ecx, dword [ebx + 0x28]
mov dl, 1
mov dword [ebx + 0x34], 0
mov dword [ebx + 0x30], 0
shl edx, cl
mov dword [ebx + 0x2c], edx
cmp esi, edx
jae 0x4aa321
mov ebp, dword [ebx + 0x34]
sub edx, ebp
cmp edx, esi
mov ecx, edx
mov edx, dword [esp + 0x20]
cmova ecx, esi
add eax, ebp
mov dword [esp + 8], ecx
mov dword [esp], eax
sub edx, esi
mov dword [esp + 4], edx
mov dword [esp + 0x24], ecx
call sub.msvcrt.dll_memcpy
mov ecx, dword [esp + 0x24]
sub esi, ecx
jne 0x4aa360
mov edx, dword [ebx + 0x34]
mov eax, dword [ebx + 0x2c]
add edx, ecx
cmp edx, eax
mov dword [ebx + 0x34], edx
je 0x4aa350
mov edx, dword [ebx + 0x30]
cmp eax, edx
jbe 0x4a91a7
add edx, ecx
mov dword [ebx + 0x30], edx
mov eax, dword [esp + 0xa0]
mov eax, dword [eax + 0x10]
mov ebx, dword [esp + 0xa0]
mov esi, dword [esp + 0x38]
sub esi, dword [ebx + 4]
mov ebx, dword [esp + 0x28]
sub ebx, eax
mov eax, dword [esp + 0xa0]
add dword [eax + 8], esi
add dword [eax + 0x14], ebx
add dword [edi + 0x20], ebx
test byte [edi + 0xc], 4
je 0x4a920f
test ebx, ebx
je 0x4a920f
mov edx, dword [edi + 0x14]
mov dword [esp + 8], ebx
test edx, edx
je 0x4aa2d0
mov eax, dword [eax + 0xc]
sub eax, ebx
mov dword [esp + 4], eax
mov eax, dword [edi + 0x1c]
mov dword [esp], eax
call fcn.004a3180
mov edx, dword [esp + 0xa0]
mov dword [edi + 0x1c], eax
mov dword [edx + 0x30], eax
cmp dword [edi + 8], 1
mov edx, dword [edi + 4]
sbb eax, eax
not eax
and eax, 0x40
add eax, dword [edi + 0x40]
cmp edx, 0x3f3f
je 0x4aa271
cmp edx, 0x3f42
jne 0x4aa280
mov edx, 0x100
mov edi, dword [esp + 0xa0]
add eax, edx
or ebx, esi
mov dword [edi + 0x2c], eax
je 0x4a925f
cmp dword [esp + 0xa4], 4
mov eax, dword [esp + 0x34]
jne 0x4a8a41
mov esi, dword [esp + 0x34]
mov eax, 0xfffffffb
test esi, esi
cmovne eax, esi
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp esi, 0x1f
ja 0x4a92b2
test edi, edi
je 0x4aa240
mov edx, dword [esp + 0x24]
mov ecx, esi
jmp 0x4a9298
test edi, edi
je 0x4aa2f0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0x1f
jbe 0x4a9290
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x4a92c4
mov esi, dword [esp + 0x24]
mov dword [eax + 4], esi
mov eax, dword [esp + 0x20]
test byte [eax + 0x15], 2
je 0x4a92d8
test byte [eax + 0xc], 4
jne 0x4aadb7
mov eax, dword [esp + 0x20]
xor esi, esi
mov dword [esp + 0x24], 0
mov dword [eax + 4], 0x3f37
jmp 0x4a92f5
cmp esi, 0xf
ja 0x4a9327
test edi, edi
je 0x4aa240
mov edx, dword [esp + 0x24]
mov ecx, esi
jmp 0x4a930d
test edi, edi
je 0x4aa2f0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, 0xf
jbe 0x4a9305
mov dword [esp + 0x24], edx
mov ebx, dword [esp + 0x20]
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x4a9349
mov esi, dword [esp + 0x24]
mov ecx, esi
movzx edx, cl
mov dword [eax + 8], edx
mov eax, dword [ebx + 0x24]
mov edx, esi
shr edx, 8
mov dword [eax + 0xc], edx
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x14]
test bh, 2
je 0x4a935f
test byte [eax + 0xc], 4
jne 0x4aabe0
mov eax, dword [esp + 0x20]
xor esi, esi
test bh, 4
mov dword [esp + 0x24], 0
mov dword [eax + 4], 0x3f38
jne 0x4aa195
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x4aa7d6
mov dword [eax + 0x10], 0
mov ebx, dword [ecx + 0x14]
mov eax, ebx
and eax, 0x400
jmp 0x4aa21f
cmp esi, 0xf
ja 0x4aaf31
test edi, edi
je 0x4aa240
movzx eax, byte [ebp]
mov ecx, esi
lea edx, [edi - 1]
lea ebx, [ebp + 1]
shl eax, cl
lea ecx, [esi + 8]
add dword [esp + 0x24], eax
cmp ecx, 0xf
ja 0x4aaf41
test edx, edx
je 0x4aa7ed
movzx eax, byte [ebp + 1]
sub edi, 2
add esi, 0x10
lea ebx, [ebp + 2]
shl eax, cl
add dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
cmp al, 8
mov dword [ecx + 0x14], eax
je 0x4aa7a3
mov eax, dword [esp + 0xa0]
mov ebp, ebx
mov dword [eax + 0x18], str.unknown_compression_method
mov eax, 0x3f51
mov dword [ecx + 4], 0x3f51
jmp 0x4a8afa
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0xc]
test ebx, ebx
je 0x4aa660
cmp esi, 0xf
ja 0x4a947f
test edi, edi
je 0x4aa240
lea eax, [edi - 1]
mov ecx, esi
mov dword [esp + 0x3c], eax
movzx eax, byte [ebp]
lea edx, [ebp + 1]
shl eax, cl
lea ecx, [esi + 8]
add dword [esp + 0x24], eax
cmp ecx, 0xf
ja 0x4ab05c
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x4aa7dd
movzx eax, byte [ebp + 1]
sub edi, 2
add esi, 0x10
lea edx, [ebp + 2]
shl eax, cl
add dword [esp + 0x24], eax
mov ebp, edx
test bl, 2
je 0x4a9492
cmp dword [esp + 0x24], 0x8b1f
je 0x4aaf99
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0x24]
mov dword [ecx + 0x14], 0
test eax, eax
je 0x4a94ae
mov dword [eax + 0x30], 0xffffffff
mov ebx, dword [ecx + 0xc]
and ebx, 1
je 0x4aaaf2
mov eax, dword [esp + 0x24]
mov edx, 0x8421085
mov ecx, eax
shl ecx, 8
shr eax, 8
movzx ecx, cx
add ecx, eax
mov eax, ecx
mul edx
mov eax, ecx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
mov edx, eax
shl edx, 5
sub edx, eax
cmp ecx, edx
jne 0x4aaaf2
mov eax, dword [esp + 0x24]
and eax, 0xf
cmp eax, 8
je 0x4ab067
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], str.unknown_compression_method
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f51
mov eax, 0x3f51
jmp 0x4a8afa
mov ebx, ebp
mov ebp, edi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x34], 0xfffffffd
jmp 0x4a90a0
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x4aae9b
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x14]
test ebx, ebx
je 0x4aae9b
cmp esi, 0x1f
ja 0x4a95e7
test edi, edi
je 0x4aa240
movzx eax, byte [ebp]
mov ecx, esi
lea edx, [edi - 1]
lea ebx, [ebp + 1]
shl eax, cl
lea ecx, [esi + 8]
add dword [esp + 0x24], eax
cmp ecx, 0x1f
ja 0x4aa9a5
test edx, edx
je 0x4aa7e0
movzx eax, byte [ebp + 1]
lea edx, [edi - 2]
lea ebx, [ebp + 2]
shl eax, cl
lea ecx, [esi + 0x10]
add dword [esp + 0x24], eax
cmp ecx, 0x1f
ja 0x4aa9a5
test edx, edx
je 0x4aa7e0
movzx eax, byte [ebp + 2]
lea edx, [edi - 3]
lea ebx, [ebp + 3]
shl eax, cl
lea ecx, [esi + 0x18]
add dword [esp + 0x24], eax
cmp ecx, 0x1f
ja 0x4aa9a5
test edx, edx
je 0x4aa7e0
movzx eax, byte [ebp + 3]
sub edi, 4
add esi, 0x20
lea ebx, [ebp + 4]
shl eax, cl
add dword [esp + 0x24], eax
mov ebp, ebx
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x24]
cmp dword [eax + 0x20], ebx
je 0x4ab0bc
mov ebx, dword [esp + 0xa0]
mov dword [ebx + 0x18], str.incorrect_length_check
mov dword [eax + 4], 0x3f51
mov eax, 0x3f51
jmp 0x4a8afa
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x14]
test bh, 0x10
je 0x4a977a
test edi, edi
je 0x4aa240
mov dword [esp + 0x44], esi
xor ebx, ebx
mov esi, dword [esp + 0x20]
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x40], edi
jmp 0x4a9649
cmp ebx, dword [esp + 0x40]
jae 0x4a967b
mov eax, dword [esp + 0x3c]
add ebx, 1
movzx edx, byte [eax + ebx - 1]
mov eax, dword [esi + 0x24]
movzx ebp, dl
test eax, eax
je 0x4a9677
mov edi, dword [eax + 0x24]
test edi, edi
je 0x4a9677
mov ecx, dword [esi + 0x44]
cmp ecx, dword [eax + 0x28]
jae 0x4a9677
lea eax, [ecx + 1]
mov dword [esi + 0x44], eax
mov byte [edi + ecx], dl
test ebp, ebp
jne 0x4a9643
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov dword [esp + 0x40], ebp
mov ebp, dword [esp + 0x3c]
test byte [eax + 0x15], 2
je 0x4a969f
test byte [eax + 0xc], 4
jne 0x4aa721
mov eax, dword [esp + 0x40]
sub edi, ebx
add ebp, ebx
test eax, eax
jne 0x4aa240
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x14]
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f3c
jmp 0x4a9860
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x14]
test bh, 8
je 0x4aa303
test edi, edi
je 0x4aa240
mov dword [esp + 0x44], esi
xor ebx, ebx
mov esi, dword [esp + 0x20]
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x40], edi
jmp 0x4a96f8
cmp ebx, dword [esp + 0x40]
jae 0x4a972a
mov eax, dword [esp + 0x3c]
add ebx, 1
movzx edx, byte [eax + ebx - 1]
mov eax, dword [esi + 0x24]
movzx ebp, dl
test eax, eax
je 0x4a9726
mov edi, dword [eax + 0x1c]
test edi, edi
je 0x4a9726
mov ecx, dword [esi + 0x44]
cmp ecx, dword [eax + 0x20]
jae 0x4a9726
lea eax, [ecx + 1]
mov dword [esi + 0x44], eax
mov byte [edi + ecx], dl
test ebp, ebp
jne 0x4a96f2
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov dword [esp + 0x40], ebp
mov ebp, dword [esp + 0x3c]
test byte [eax + 0x15], 2
jne 0x4aa573
mov eax, dword [esp + 0x40]
sub edi, ebx
add ebp, ebx
test eax, eax
jne 0x4aa240
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x14]
mov eax, dword [esp + 0x20]
test bh, 0x10
mov dword [eax + 0x44], 0
mov dword [eax + 4], 0x3f3b
jne 0x4a9627
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 0x24]
test eax, eax
je 0x4a96b6
mov dword [eax + 0x24], 0
mov ebx, dword [edx + 0x14]
jmp 0x4a96b6
cmp esi, 0xd
ja 0x4aaf2a
test edi, edi
je 0x4aa240
movzx eax, byte [ebp]
mov ecx, esi
lea edx, [edi - 1]
lea ebx, [ebp + 1]
shl eax, cl
lea ecx, [esi + 8]
add dword [esp + 0x24], eax
cmp ecx, 0xd
ja 0x4aaf38
test edx, edx
je 0x4aa7e0
movzx eax, byte [ebp + 1]
sub edi, 2
add esi, 0x10
lea ebx, [ebp + 2]
shl eax, cl
add dword [esp + 0x24], eax
mov ecx, dword [esp + 0x24]
sub esi, 0xe
mov ebp, dword [esp + 0x20]
shr dword [esp + 0x24], 0xe
mov eax, ecx
mov edx, ecx
and eax, 0x1f
shr edx, 5
add eax, 0x101
shr ecx, 0xa
and edx, 0x1f
and ecx, 0xf
add edx, 1
add ecx, 4
cmp eax, 0x11e
mov dword [ebp + 0x64], eax
mov dword [ebp + 0x68], edx
mov dword [esp + 0x40], ecx
mov dword [ebp + 0x60], ecx
ja 0x4aa740
cmp edx, 0x1e
ja 0x4aa740
mov eax, dword [esp + 0x20]
mov ecx, esi
mov ebp, ebx
mov esi, dword [esp + 0x24]
mov dword [eax + 0x6c], 0
mov dword [eax + 4], 0x3f45
xor eax, eax
jmp 0x4a9fe1
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x14]
lea esi, [esi]
test bh, 2
je 0x4a98cd
cmp esi, 0xf
ja 0x4a98b5
test edi, edi
je 0x4aa240
lea eax, [edi - 1]
mov ecx, esi
mov dword [esp + 0x3c], eax
movzx eax, byte [ebp]
lea edx, [ebp + 1]
shl eax, cl
lea ecx, [esi + 8]
add dword [esp + 0x24], eax
cmp ecx, 0xf
ja 0x4aac1d
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x4aac28
movzx eax, byte [ebp + 1]
sub edi, 2
add esi, 0x10
lea edx, [ebp + 2]
shl eax, cl
add dword [esp + 0x24], eax
mov ebp, edx
mov eax, dword [esp + 0x20]
test byte [eax + 0xc], 4
jne 0x4aa5a0
xor esi, esi
mov dword [esp + 0x24], 0
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x4a98ed
sar ebx, 9
mov edx, ebx
and edx, 1
mov dword [eax + 0x2c], edx
mov eax, dword [ecx + 0x24]
mov dword [eax + 0x30], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.004a3180
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0xa0]
mov dword [ebx + 0x1c], eax
mov dword [edx + 0x30], eax
mov eax, 0x3f3f
mov dword [ebx + 4], 0x3f3f
jmp 0x4a8afa
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x14]
mov eax, ebx
and eax, 0x400
test eax, eax
je 0x4a99e5
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x44]
cmp edi, eax
mov ecx, eax
cmovbe ecx, edi
mov edx, eax
test ecx, ecx
mov dword [esp + 0x3c], eax
je 0x4a99d6
mov edx, dword [esp + 0x20]
mov edx, dword [edx + 0x24]
test edx, edx
je 0x4a99b3
mov eax, dword [edx + 0x10]
test eax, eax
mov dword [esp + 0x40], eax
je 0x4a99b3
mov ebx, dword [edx + 0x14]
sub ebx, dword [esp + 0x3c]
mov eax, dword [edx + 0x18]
mov dword [esp + 4], ebp
lea edx, [ecx + ebx]
mov dword [esp + 0x3c], edx
mov edx, eax
sub edx, ebx
cmp dword [esp + 0x3c], eax
mov dword [esp + 0x3c], ecx
cmovbe edx, ecx
add ebx, dword [esp + 0x40]
mov dword [esp + 8], edx
mov dword [esp], ebx
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x3c]
mov ebx, dword [edx + 0x14]
and bh, 2
je 0x4a99c6
mov eax, dword [esp + 0x20]
test byte [eax + 0xc], 4
jne 0x4aad01
mov eax, dword [esp + 0x20]
sub edi, ecx
add ebp, ecx
mov edx, dword [eax + 0x44]
sub edx, ecx
mov dword [eax + 0x44], edx
test edx, edx
jne 0x4aa240
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x14]
mov eax, dword [esp + 0x20]
mov dword [eax + 0x44], 0
mov dword [eax + 4], 0x3f3a
jmp 0x4a96cd
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x4aa650
cmp esi, 0x1f
ja 0x4a9aa3
test edi, edi
je 0x4aa240
movzx eax, byte [ebp]
mov ecx, esi
lea edx, [edi - 1]
lea ebx, [ebp + 1]
shl eax, cl
lea ecx, [esi + 8]
add dword [esp + 0x24], eax
cmp ecx, 0x1f
ja 0x4aaef9
test edx, edx
je 0x4aa7e0
movzx eax, byte [ebp + 1]
lea edx, [edi - 2]
lea ebx, [ebp + 2]
shl eax, cl
lea ecx, [esi + 0x10]
add dword [esp + 0x24], eax
cmp ecx, 0x1f
ja 0x4aaef9
test edx, edx
je 0x4aa7e0
movzx eax, byte [ebp + 2]
lea edx, [edi - 3]
lea ebx, [ebp + 3]
shl eax, cl
lea ecx, [esi + 0x18]
add dword [esp + 0x24], eax
cmp ecx, 0x1f
ja 0x4aaef9
test edx, edx
je 0x4aa7e0
movzx eax, byte [ebp + 3]
sub edi, 4
add esi, 0x20
lea ebx, [ebp + 4]
shl eax, cl
add dword [esp + 0x24], eax
mov ebp, ebx
mov eax, dword [esp + 0xa0]
mov edx, dword [esp + 0x28]
sub edx, dword [esp + 0x30]
add dword [eax + 0x14], edx
mov eax, dword [esp + 0x20]
add dword [eax + 0x20], edx
mov eax, dword [eax + 0xc]
test al, 4
mov ecx, eax
je 0x4aab41
test edx, edx
je 0x4a9b17
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x14]
mov dword [esp + 8], edx
test eax, eax
mov eax, dword [esp + 0x2c]
je 0x4ab00e
sub eax, edx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x1c]
mov dword [esp], eax
call fcn.004a3180
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0xa0]
mov dword [ebx + 0x1c], eax
mov dword [ecx + 0x30], eax
mov eax, dword [ebx + 0xc]
test al, 4
mov ecx, eax
je 0x4aab41
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x14]
test eax, eax
je 0x4aaecc
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x20]
cmp eax, dword [ebx + 0x1c]
je 0x4aa636
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], str.incorrect_data_check
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f51
mov eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
mov eax, 0x3f51
jmp 0x4a8afa
mov eax, dword [esp + 0x30]
test eax, eax
je 0x4aa240
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x2c]
sub dword [esp + 0x30], 1
mov eax, dword [ebx + 0x44]
mov byte [edx], al
lea eax, [edx + 1]
mov dword [esp + 0x2c], eax
mov eax, 0x3f48
mov dword [ebx + 4], 0x3f48
jmp 0x4a8afa
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x20]
mov eax, dword [eax + 0x6c]
mov dword [esp + 0x40], eax
mov eax, dword [ebx + 0x64]
mov dword [esp + 0x44], ebp
mov dword [esp + 0x60], eax
add eax, dword [ebx + 0x68]
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x48], eax
cmp dword [esp + 0x40], eax
jae 0x4aaf60
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x58]
mov edx, dword [eax + 0x50]
mov eax, 1
shl eax, cl
lea eax, [eax - 1]
mov dword [esp + 0x3c], eax
and eax, ebx
lea eax, [edx + eax*4]
movzx ecx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x24], ax
movzx eax, cl
cmp esi, eax
jae 0x4a9c4e
test edi, edi
je 0x4aacee
mov ecx, esi
mov ebp, dword [esp + 0x44]
mov esi, edx
jmp 0x4a9c18
test edi, edi
je 0x4aa560
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add ebx, eax
mov eax, dword [esp + 0x3c]
and eax, ebx
lea eax, [esi + eax*4]
movzx edx, byte [eax + 1]
movzx eax, word [eax + 2]
mov word [esp + 0x24], ax
movzx eax, dl
cmp eax, ecx
ja 0x4a9c10
mov esi, ecx
mov ecx, edx
mov dword [esp + 0x44], ebp
cmp word [esp + 0x24], 0xf
jbe 0x4aa6f6
cmp word [esp + 0x24], 0x10
je 0x4aab68
cmp word [esp + 0x24], 0x11
je 0x4aad26
lea ecx, [eax + 7]
cmp esi, ecx
mov edx, ecx
jae 0x4a9cb5
test edi, edi
je 0x4aacee
mov ecx, esi
mov ebp, dword [esp + 0x44]
mov esi, eax
mov eax, edx
jmp 0x4a9c98
test edi, edi
je 0x4aa560
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add ebx, edx
cmp ecx, eax
jb 0x4a9c90
mov eax, esi
mov esi, ecx
mov dword [esp + 0x44], ebp
mov ecx, eax
sub esi, eax
shr ebx, cl
sub esi, 7
mov edx, ebx
mov ecx, ebx
and edx, 0x7f
xor eax, eax
lea ebx, [edx + 0xb]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x3c], ebx
mov ebx, ecx
shr ebx, 7
mov ebp, dword [esp + 0x3c]
mov ecx, edx
add ecx, ebp
cmp ecx, dword [esp + 0x48]
mov dword [esp + 0x64], ecx
ja 0x4ab274
mov word [esp + 0x5c], ax
lea eax, [edx + 0x3a]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x68], eax
mov ecx, ebp
sub ecx, 1
mov dword [esp + 0x24], ecx
lea eax, [edx + eax*2]
and eax, 0xf
shr eax, 1
neg eax
and eax, 7
cmp ebp, eax
cmovbe eax, ebp
cmp ebp, 0xa
mov dword [esp + 0x58], ebp
ja 0x4aaeb7
mov ecx, dword [esp + 0x40]
mov eax, ecx
add eax, 1
mov dword [esp + 0x40], eax
movzx eax, word [esp + 0x5c]
cmp dword [esp + 0x58], 1
mov word [edx + ecx*2 + 0x74], ax
mov eax, dword [esp + 0x3c]
lea ebp, [eax - 2]
mov dword [esp + 0x24], ebp
je 0x4a9ec6
movzx eax, word [esp + 0x5c]
lea ebp, [ecx + 2]
cmp dword [esp + 0x58], 2
mov dword [esp + 0x40], ebp
mov word [edx + ecx*2 + 0x76], ax
mov eax, dword [esp + 0x3c]
lea ebp, [eax - 3]
mov dword [esp + 0x24], ebp
je 0x4a9eb8
mov ebp, ecx
mov eax, dword [esp + 0x68]
mov dword [esp + 0x40], ecx
lea ecx, [ecx + 3]
mov dword [esp + 0x6c], ecx
movzx ecx, word [esp + 0x5c]
cmp dword [esp + 0x58], 3
mov word [edx + eax*2 + 4], cx
mov eax, dword [esp + 0x3c]
lea ecx, [eax - 4]
mov dword [esp + 0x24], ecx
je 0x4aae03
movzx eax, word [esp + 0x5c]
mov ecx, ebp
cmp dword [esp + 0x58], 4
lea ebp, [ebp + 4]
mov dword [esp + 0x6c], ebp
mov word [edx + ecx*2 + 0x7a], ax
mov eax, dword [esp + 0x3c]
lea ebp, [eax - 5]
mov dword [esp + 0x24], ebp
je 0x4aae03
movzx eax, word [esp + 0x5c]
lea ebp, [ecx + 5]
cmp dword [esp + 0x58], 5
mov dword [esp + 0x6c], ebp
mov word [edx + ecx*2 + 0x7c], ax
mov eax, dword [esp + 0x3c]
lea ebp, [eax - 6]
mov dword [esp + 0x24], ebp
je 0x4aae03
movzx eax, word [esp + 0x5c]
lea ebp, [ecx + 6]
cmp dword [esp + 0x58], 6
mov dword [esp + 0x6c], ebp
mov word [edx + ecx*2 + 0x7e], ax
mov eax, dword [esp + 0x3c]
lea ebp, [eax - 7]
mov dword [esp + 0x24], ebp
je 0x4aae03
movzx eax, word [esp + 0x5c]
lea ebp, [ecx + 7]
cmp dword [esp + 0x58], 7
mov dword [esp + 0x6c], ebp
mov word [edx + ecx*2 + 0x80], ax
mov eax, dword [esp + 0x3c]
lea ebp, [eax - 8]
mov dword [esp + 0x24], ebp
je 0x4aae03
movzx eax, word [esp + 0x5c]
lea ebp, [ecx + 8]
cmp dword [esp + 0x58], 8
mov dword [esp + 0x6c], ebp
mov word [edx + ecx*2 + 0x82], ax
mov eax, dword [esp + 0x3c]
lea ebp, [eax - 9]
mov dword [esp + 0x24], ebp
je 0x4aae03
movzx eax, word [esp + 0x5c]
lea ebp, [ecx + 9]
cmp dword [esp + 0x58], 0xa
mov word [edx + ecx*2 + 0x84], ax
mov ecx, dword [esp + 0x3c]
mov word [esp + 0x6c], ax
lea eax, [ecx - 0xa]
mov dword [esp + 0x24], eax
jne 0x4ab0d3
movzx eax, word [esp + 0x6c]
add dword [esp + 0x40], 0xa
mov word [edx + ebp*2 + 0x74], ax
mov eax, ecx
sub eax, 0xb
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x58]
cmp dword [esp + 0x3c], eax
je 0x4a9fad
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x3c]
sub edx, ecx
mov dword [esp + 0x6c], edx
shr edx, 3
lea eax, [edx*8]
test eax, eax
mov dword [esp + 0x58], edx
je 0x4a9f4c
mov edx, dword [esp + 0x68]
movd xmm0, dword [esp + 0x5c]
punpcklwd xmm0, xmm0
mov dword [esp + 0x68], eax
mov ebp, dword [esp + 0x44]
pshufd xmm0, xmm0, 0
mov eax, dword [esp + 0x58]
mov dword [esp + 0x3c], 0
add edx, ecx
mov ecx, dword [esp + 0x20]
lea edx, [ecx + edx*2]
mov ecx, dword [esp + 0x24]
add dword [esp + 0x3c], 1
movdqa xmmword [edx], xmm0
add edx, 0x10
cmp dword [esp + 0x3c], eax
jb 0x4a9f1a
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x24], ecx
sub dword [esp + 0x24], eax
add edx, eax
cmp eax, dword [esp + 0x6c]
mov dword [esp + 0x44], ebp
je 0x4a9fad
mov dword [esp + 0x40], edx
mov ebp, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x40]
movzx ecx, word [esp + 0x5c]
test ebp, ebp
mov word [eax + edx*2 + 0x74], cx
je 0x4a9fad
cmp ebp, 1
mov word [eax + edx*2 + 0x76], cx
je 0x4a9fad
cmp ebp, 2
mov word [eax + edx*2 + 0x78], cx
je 0x4a9fad
cmp ebp, 3
mov word [eax + edx*2 + 0x7a], cx
je 0x4a9fad
cmp ebp, 4
mov word [eax + edx*2 + 0x7c], cx
je 0x4a9fad
cmp ebp, 5
mov word [eax + edx*2 + 0x7e], cx
je 0x4a9fad
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x40]
movzx ecx, word [esp + 0x5c]
mov word [eax + edx*2 + 0x80], cx
mov eax, dword [esp + 0x64]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x40], eax
mov dword [edx + 0x6c], eax
mov eax, dword [esp + 0x48]
jmp 0x4a9bbd
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x60]
mov eax, dword [eax + 0x6c]
mov dword [esp + 0x40], ebx
cmp ebx, eax
jbe 0x4aac43
mov ecx, esi
mov esi, dword [esp + 0x24]
cmp ecx, 2
ja 0x4aa038
test edi, edi
je 0x4aa830
lea ebx, [ebp + 1]
sub edi, 1
mov dword [esp + 0x3c], ebx
movzx ebx, byte [ebp]
shl ebx, cl
add ecx, 8
add esi, ebx
add eax, 1
mov edx, dword [esp + 0x20]
mov ebp, esi
movzx ebx, word [eax + eax + 0x57523e]
and ebp, 7
sub ecx, 3
shr esi, 3
cmp eax, dword [esp + 0x40]
mov dword [edx + 0x6c], eax
mov word [edx + ebx*2 + 0x74], bp
jae 0x4aac37
cmp ecx, 2
mov ebp, dword [esp + 0x3c]
jbe 0x4a9fe6
mov dword [esp + 0x3c], ebp
jmp 0x4aa003
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x44]
mov ebx, dword [esp + 0x20]
mov dword [ebx + 4], 0x3f43
test eax, eax
je 0x4aa387
mov ebx, dword [esp + 0x30]
cmp edi, eax
cmovbe eax, edi
cmp eax, ebx
cmova eax, ebx
test eax, eax
mov ebx, eax
je 0x4aa240
mov dword [esp + 8], eax
mov eax, dword [esp + 0x2c]
sub edi, ebx
mov dword [esp + 4], ebp
add ebp, ebx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x20]
sub dword [esp + 0x30], ebx
add dword [esp + 0x2c], ebx
sub dword [eax + 0x44], ebx
mov eax, dword [eax + 4]
jmp 0x4a8afa
mov ecx, esi
and esi, 0xfffffff8
and ecx, 7
shr dword [esp + 0x24], cl
cmp esi, 0x1f
ja 0x4aaf23
test edi, edi
je 0x4aa240
movzx eax, byte [ebp]
mov ecx, esi
lea edx, [edi - 1]
lea ebx, [ebp + 1]
shl eax, cl
lea ecx, [esi + 8]
add dword [esp + 0x24], eax
cmp ecx, 0x1f
ja 0x4aab58
test edx, edx
je 0x4aa7e0
movzx eax, byte [ebp + 1]
lea edx, [edi - 2]
lea ebx, [ebp + 2]
shl eax, cl
lea ecx, [esi + 0x10]
add dword [esp + 0x24], eax
cmp ecx, 0x1f
ja 0x4aab58
test edx, edx
je 0x4aa7e0
movzx eax, byte [ebp + 2]
lea edx, [edi - 3]
lea ebx, [ebp + 3]
shl eax, cl
lea ecx, [esi + 0x18]
add dword [esp + 0x24], eax
cmp ecx, 0x1f
ja 0x4aab58
test edx, edx
je 0x4aa7e0
movzx eax, byte [ebp + 3]
sub edi, 4
add esi, 0x20
lea ebx, [ebp + 4]
shl eax, cl
add dword [esp + 0x24], eax
mov edx, dword [esp + 0x24]
movzx eax, dx
shr edx, 0x10
xor edx, 0xffff
cmp eax, edx
je 0x4aa776
mov eax, dword [esp + 0xa0]
mov ebp, ebx
mov dword [eax + 0x18], str.invalid_stored_block_lengths
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f51
mov eax, 0x3f51
jmp 0x4a8afa
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0x14]
test bh, 4
je 0x4a937d
cmp esi, 0xf
ja 0x4aa1e1
test edi, edi
je 0x4aa240
lea eax, [ebp + 1]
mov ecx, esi
mov dword [esp + 0x3c], eax
movzx eax, byte [ebp]
add esi, 8
lea edx, [edi - 1]
shl eax, cl
add dword [esp + 0x24], eax
cmp esi, 0xf
ja 0x4aaf4a
test edx, edx
je 0x4aaf51
lea eax, [ebp + 2]
mov ecx, esi
mov dword [esp + 0x3c], eax
movzx eax, byte [ebp + 1]
sub edi, 2
shl eax, cl
add dword [esp + 0x24], eax
mov ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov esi, eax
mov dword [eax + 0x44], edx
mov eax, dword [eax + 0x24]
test eax, eax
je 0x4aa1fb
mov dword [eax + 0x14], edx
mov ebx, dword [esi + 0x14]
test bh, 2
je 0x4aa20e
mov eax, dword [esp + 0x20]
test byte [eax + 0xc], 4
jne 0x4aae5e
mov eax, ebx
xor esi, esi
and eax, 0x400
mov dword [esp + 0x24], 0
mov edx, dword [esp + 0x20]
mov dword [edx + 4], 0x3f39
jmp 0x4a993e
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x44]
jmp 0x4aa052
mov ebx, ebp
mov ebp, edi
mov edi, dword [esp + 0x20]
jmp 0x4a90a0
mov eax, dword [esp + 0xa0]
mov dword [edi + 4], 0x3f40
mov ebx, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x2c], eax
mov eax, 0x3f40
jmp 0x4a8a9a
sub eax, 0xffffff80
xor edx, edx
jmp 0x4a923d
cmp edx, 0x3f47
je 0x4a9238
xor edx, edx
jmp 0x4a923d
mov eax, dword [esp + 0x28]
jmp 0x4a91b1
mov esi, dword [esi + 4]
test esi, esi
je 0x4a8a86
jmp 0x4a8a41
mov ecx, esi
and esi, 0xfffffff8
and ecx, 7
mov dword [eax + 4], 0x3f4e
mov eax, 0x3f4e
shr dword [esp + 0x24], cl
jmp 0x4a8afa
mov eax, dword [esp + 0xa0]
mov eax, dword [eax + 0xc]
sub eax, ebx
mov dword [esp + 4], eax
mov eax, dword [edi + 0x1c]
mov dword [esp], eax
call fcn.004a2b60
jmp 0x4a9202
mov ebx, ebp
mov esi, ecx
mov ebp, edi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x24], edx
jmp 0x4a90a0
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x4a975f
mov dword [eax + 0x1c], 0
mov ebx, dword [ecx + 0x14]
jmp 0x4a975f
mov ecx, dword [esp + 0x20]
mov dword [esp + 8], edx
mov dword [esp], eax
sub ecx, edx
mov dword [esp + 4], ecx
call sub.msvcrt.dll_memcpy
mov eax, dword [ebx + 0x2c]
mov dword [ebx + 0x34], 0
mov dword [ebx + 0x30], eax
jmp 0x4a91a7
mov dword [ebx + 0x34], 0
jmp 0x4a919b
mov eax, dword [esp + 0x20]
mov edx, dword [ebx + 0x38]
mov dword [esp + 8], esi
sub eax, esi
mov dword [esp + 4], eax
mov dword [esp], edx
call sub.msvcrt.dll_memcpy
mov eax, dword [ebx + 0x2c]
mov dword [ebx + 0x34], esi
mov dword [ebx + 0x30], eax
jmp 0x4a91a7
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f3f
mov eax, 0x3f3f
jmp 0x4a8afa
mov eax, dword [esp + 0x2c]
mov ecx, dword [ebx + 0x44]
sub eax, edx
mov edx, ecx
mov ebx, dword [esp + 0x30]
cmp ecx, ebx
cmova ecx, ebx
sub edx, ecx
mov ebx, ecx
sub dword [esp + 0x30], ecx
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0x44], edx
lea edx, [eax + 0x10]
cmp dword [esp + 0x2c], edx
mov edx, dword [esp + 0x2c]
setae cl
add edx, 0x10
cmp eax, edx
setae dl
or cl, dl
je 0x4aa970
cmp ebx, 0xf
jbe 0x4aa970
mov ecx, ebx
xor ebx, ebx
shr ecx, 4
mov edx, ecx
shl edx, 4
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x3c], ecx
xor ecx, ecx
movdqu xmm0, xmmword [eax + ecx]
add ebx, 1
movdqu xmmword [edx + ecx], xmm0
add ecx, 0x10
cmp ebx, dword [esp + 0x3c]
jb 0x4aa408
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
add eax, dword [esp + 0x40]
add ebx, ecx
mov dword [esp + 0x3c], ebx
add ecx, edx
mov ebx, edx
sub ebx, dword [esp + 0x40]
cmp dword [esp + 0x40], edx
mov dword [esp + 0x48], ecx
je 0x4aa541
movzx edx, byte [eax]
cmp ebx, 1
mov ecx, dword [esp + 0x3c]
mov byte [ecx], dl
je 0x4aa541
movzx edx, byte [eax + 1]
cmp ebx, 2
mov byte [ecx + 1], dl
je 0x4aa541
movzx edx, byte [eax + 2]
cmp ebx, 3
mov byte [ecx + 2], dl
je 0x4aa541
movzx edx, byte [eax + 3]
cmp ebx, 4
mov byte [ecx + 3], dl
je 0x4aa541
movzx edx, byte [eax + 4]
cmp ebx, 5
mov byte [ecx + 4], dl
je 0x4aa541
movzx edx, byte [eax + 5]
cmp ebx, 6
mov byte [ecx + 5], dl
je 0x4aa541
movzx edx, byte [eax + 6]
cmp ebx, 7
mov byte [ecx + 6], dl
je 0x4aa541
movzx edx, byte [eax + 7]
cmp ebx, 8
mov byte [ecx + 7], dl
je 0x4aa541
movzx edx, byte [eax + 8]
cmp ebx, 9
mov ecx, dword [esp + 0x3c]
mov byte [ecx + 8], dl
je 0x4aa8e3
movzx edx, byte [eax + 9]
cmp ebx, 0xa
mov byte [ecx + 9], dl
je 0x4aa8e3
movzx edx, byte [eax + 0xa]
cmp ebx, 0xb
mov byte [ecx + 0xa], dl
je 0x4aa8e3
movzx edx, byte [eax + 0xb]
cmp ebx, 0xc
mov byte [ecx + 0xb], dl
je 0x4aa8e3
movzx edx, byte [eax + 0xc]
cmp ebx, 0xd
mov byte [ecx + 0xc], dl
je 0x4aa8e3
movzx edx, byte [eax + 0xd]
cmp ebx, 0xe
mov byte [ecx + 0xd], dl
je 0x4aa8e3
movzx eax, byte [eax + 0xe]
mov ebx, dword [esp + 0x44]
mov byte [ecx + 0xe], al
mov eax, dword [esp + 0x2c]
add eax, ebx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x44]
test edx, edx
je 0x4aa805
mov eax, dword [eax + 4]
jmp 0x4a8afa
mov dword [esp + 0x24], ebx
mov esi, ecx
mov ebx, ebp
mov ebp, edi
mov edi, dword [esp + 0x20]
jmp 0x4a90a0
test byte [eax + 0xc], 4
je 0x4a9748
mov dword [esp + 8], ebx
mov dword [esp + 4], ebp
mov eax, dword [eax + 0x1c]
mov dword [esp], eax
call fcn.004a3180
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0x1c], eax
jmp 0x4a9748
mov ecx, eax
movzx eax, word [eax + 0x1c]
cmp eax, dword [esp + 0x24]
je 0x4a98c3
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], str.header_crc_mismatch
mov eax, 0x3f51
mov dword [ecx + 4], 0x3f51
jmp 0x4a8afa
cmp esi, ebx
jae 0x4aa607
test edi, edi
je 0x4aa240
mov edx, dword [esp + 0x24]
mov ecx, esi
jmp 0x4aa5ec
test edi, edi
je 0x4aa2f0
add ebp, 1
movzx eax, byte [ebp - 1]
sub edi, 1
shl eax, cl
add ecx, 8
add edx, eax
cmp ecx, ebx
jb 0x4aa5e4
mov dword [esp + 0x24], edx
mov esi, ecx
mov edx, dword [esp + 0x20]
mov ecx, ebx
mov eax, 1
shl eax, cl
sub esi, ebx
sub eax, 1
mov ecx, ebx
and eax, dword [esp + 0x24]
add eax, dword [edx + 0x44]
add dword [edx + 0x1bc8], ebx
mov ebx, edx
shr dword [esp + 0x24], cl
mov dword [edx + 0x44], eax
jmp 0x4a8eaa
mov esi, dword [esp + 0x30]
mov eax, ecx
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], esi
xor esi, esi
lea esi, [esi]
mov ebx, dword [esp + 0x20]
mov dword [ebx + 4], 0x3f4f
jmp 0x4a953c
mov dword [eax + 4], 0x3f40
mov eax, 0x3f40
jmp 0x4a8afa
mov eax, dword [ebx + 0x1bc4]
test eax, eax
je 0x4a8d64
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], 0x5748e5
mov eax, 0x3f51
mov dword [ebx + 4], 0x3f51
jmp 0x4a8afa
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x48], eax
mov ecx, dword [ecx + 0x1bc8]
mov dword [esp + 0x40], ecx
mov edx, ecx
add edx, eax
mov ecx, eax
mov eax, dword [esp + 0x20]
shr dword [esp + 0x24], cl
sub esi, dword [esp + 0x44]
test bl, 0x40
mov dword [eax + 0x1bc8], edx
je 0x4aa950
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], 0x5748cf
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f51
mov eax, 0x3f51
jmp 0x4a8afa
shr ebx, cl
mov ecx, dword [esp + 0x40]
sub esi, eax
mov edx, dword [esp + 0x20]
mov eax, ecx
add eax, 1
mov dword [edx + 0x6c], eax
mov dword [esp + 0x40], eax
movzx eax, word [esp + 0x24]
mov word [edx + ecx*2 + 0x74], ax
mov eax, dword [esp + 0x48]
jmp 0x4a9bbd
mov dword [esp + 8], ebx
mov dword [esp + 4], ebp
mov eax, dword [eax + 0x1c]
mov dword [esp], eax
call fcn.004a3180
mov edx, dword [esp + 0x20]
mov dword [edx + 0x1c], eax
jmp 0x4a969f
mov eax, dword [esp + 0xa0]
mov ebp, ebx
mov dword [eax + 0x18], str.too_many_length_or_distance_symbols
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f51
mov eax, 0x3f51
jmp 0x4a8afa
mov dword [ebx + 4], 0x3f44
mov eax, 0x3f44
jmp 0x4a8cb3
mov esi, dword [esp + 0x20]
cmp dword [esp + 0xa4], 6
mov dword [esi + 0x44], eax
mov dword [esi + 4], 0x3f42
je 0x4ab29f
mov ebp, ebx
xor esi, esi
mov dword [esp + 0x24], 0
jmp 0x4aa047
test dword [esp + 0x24], 0xe000
je 0x4aae17
mov eax, dword [esp + 0xa0]
mov ebp, ebx
mov dword [eax + 0x18], str.unknown_header_flags_set
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f51
mov eax, 0x3f51
jmp 0x4a8afa
xor eax, eax
jmp 0x4aa21f
mov ebx, edx
nop
mov edi, dword [esp + 0x20]
mov esi, ecx
xor ebp, ebp
jmp 0x4a90a0
mov edi, dword [esp + 0x20]
mov esi, ecx
xor ebp, ebp
jmp 0x4a90a0
mov edi, dword [esp + 0x20]
xor ebp, ebp
jmp 0x4a90a0
mov dword [eax + 4], 0x3f48
mov eax, 0x3f48
jmp 0x4a8afa
mov ebx, ebp
mov ebp, esi
mov dword [esp + 0x24], edi
mov esi, ecx
mov edi, dword [esp + 0x20]
jmp 0x4a90a0
mov ebx, ebp
mov ebp, edi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x24], esi
mov esi, ecx
jmp 0x4a90a0
cmp dword [esp + 0x30], 0x101
jbe 0x4a8dbb
mov eax, dword [esp + 0xa0]
mov ebx, dword [esp + 0x2c]
mov dword [eax], ebp
mov dword [eax + 0xc], ebx
mov ebx, dword [esp + 0x30]
mov dword [eax + 4], edi
mov edi, dword [esp + 0x24]
mov dword [eax + 0x10], ebx
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
mov dword [ebx + 0x3c], edi
mov dword [ebx + 0x40], esi
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa0]
mov dword [esp], eax
call fcn.004ac920
mov eax, dword [esp + 0xa0]
mov esi, dword [ebx + 0x3c]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x24], esi
mov esi, dword [ebx + 0x40]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xa0]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xa0]
mov ebp, dword [eax]
mov edi, dword [eax + 4]
mov eax, dword [ebx + 4]
cmp eax, 0x3f3f
jne 0x4a8afa
mov ebx, dword [esp + 0x20]
mov dword [ebx + 0x1bc8], 0xffffffff
jmp 0x4a8afa
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x44]
add eax, ebx
mov dword [esp + 0x48], eax
jmp 0x4aa541
mov ebx, dword [esp + 0x20]
sub eax, ecx
add eax, dword [ebx + 0x38]
jmp 0x4a8d81
test bl, 0xf0
je 0x4aa9ae
mov ecx, edx
sub esi, eax
shr dword [esp + 0x24], cl
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0x1bc8], eax
movzx eax, word [esp + 0x40]
mov dword [ecx + 0x44], eax
test bl, 0x20
je 0x4aab15
mov eax, dword [esp + 0x20]
mov dword [eax + 0x1bc8], 0xffffffff
mov dword [eax + 4], 0x3f3f
mov eax, 0x3f3f
jmp 0x4a8afa
mov edx, eax
movzx eax, word [esp + 0x3c]
and ebx, 0xf
mov dword [edx + 0x4c], ebx
mov dword [edx + 4], 0x3f4b
mov dword [edx + 0x48], eax
jmp 0x4a8ccb
mov ebx, dword [esp + 0x44]
mov edx, dword [esp + 0x2c]
add ebx, edx
mov dword [esp + 0x48], ebx
nop
add eax, 1
movzx ecx, byte [eax - 1]
add edx, 1
cmp edx, ebx
mov byte [edx - 1], cl
jne 0x4aa980
jmp 0x4aa541
mov dword [esp + 0x24], ebx
mov ebx, edi
mov edi, dword [esp + 0x20]
jmp 0x4a90a0
mov esi, ecx
mov edi, edx
jmp 0x4a95e5
movzx ecx, word [esp + 0x40]
mov dword [esp + 0x40], ecx
lea ecx, [ebx + eax]
mov ebx, 1
shl ebx, cl
mov ecx, edx
mov edx, dword [esp + 0x3c]
sub ebx, 1
mov dword [esp + 0x48], ebx
and ebx, dword [esp + 0x24]
shr ebx, cl
add ebx, dword [esp + 0x40]
lea edx, [edx + ebx*4]
movzx ecx, word [edx + 2]
movzx ebx, byte [edx]
movzx edx, byte [edx + 1]
mov word [esp + 0x44], cx
lea ecx, [eax + edx]
cmp esi, ecx
mov dword [esp + 0x5c], ecx
jae 0x4aaa5c
test edi, edi
je 0x4aa240
mov ebx, dword [esp + 0x24]
jmp 0x4aaa0c
test edi, edi
je 0x4aada6
add ebp, 1
movzx edx, byte [ebp - 1]
mov ecx, esi
add esi, 8
sub edi, 1
shl edx, cl
mov ecx, eax
add ebx, edx
mov edx, dword [esp + 0x48]
and edx, ebx
shr edx, cl
mov ecx, dword [esp + 0x3c]
add edx, dword [esp + 0x40]
lea edx, [ecx + edx*4]
movzx ecx, byte [edx]
mov byte [esp + 0x58], cl
movzx ecx, word [edx + 2]
movzx edx, byte [edx + 1]
mov word [esp + 0x44], cx
lea ecx, [edx + eax]
cmp ecx, esi
ja 0x4aaa04
mov dword [esp + 0x24], ebx
movzx ebx, byte [esp + 0x58]
mov dword [esp + 0x5c], ecx
mov ecx, eax
sub esi, eax
movzx eax, word [esp + 0x44]
shr dword [esp + 0x24], cl
sub esi, edx
mov ecx, edx
mov edx, dword [esp + 0x20]
shr dword [esp + 0x24], cl
test bl, bl
mov ecx, dword [esp + 0x5c]
mov dword [edx + 0x44], eax
mov dword [edx + 0x1bc8], ecx
jne 0x4aa927
jmp 0x4a8e76
mov eax, dword [esp + 0x20]
cmp dword [esp + 0xa4], 6
mov dword [eax + 0x50], 0x574a40
mov dword [eax + 0x58], 9
mov dword [eax + 0x54], 0x5749c0
mov dword [eax + 0x5c], 5
mov dword [eax + 4], 0x3f47
je 0x4ab261
mov eax, 0x3f47
jmp 0x4a8cb3
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], str.invalid_block_type
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f51
mov eax, 0x3f51
jmp 0x4a8cb3
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], str.incorrect_header_check
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f51
mov eax, 0x3f51
jmp 0x4a8afa
test bl, 0x40
je 0x4aad90
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], 0x5748b3
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f51
mov eax, 0x3f51
jmp 0x4a8afa
mov esi, dword [esp + 0x30]
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], esi
xor esi, esi
jmp 0x4aa650
mov esi, ecx
mov edi, edx
jmp 0x4aa13f
mov edi, edx
jmp 0x4a8ba6
lea edx, [eax + 2]
cmp esi, edx
jae 0x4aaba8
test edi, edi
je 0x4aacee
mov ecx, esi
mov ebp, dword [esp + 0x44]
mov esi, eax
mov eax, edx
jmp 0x4aab8b
test edi, edi
je 0x4aa560
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add ebx, edx
cmp ecx, eax
jb 0x4aab83
mov eax, esi
mov esi, ecx
mov dword [esp + 0x44], ebp
mov ecx, eax
sub esi, eax
mov eax, dword [esp + 0x40]
shr ebx, cl
test eax, eax
je 0x4ab274
mov ecx, dword [esp + 0x40]
mov edx, ebx
sub esi, 2
mov eax, dword [esp + 0x20]
and edx, 3
add edx, 3
mov dword [esp + 0x3c], edx
shr ebx, 2
mov edx, ecx
movzx eax, word [eax + ecx*2 + 0x72]
jmp 0x4a9cd7
mov esi, dword [esp + 0x24]
mov dword [esp + 8], 2
mov eax, esi
mov byte [esp + 0x70], al
mov eax, esi
mov esi, dword [esp + 0x20]
shr eax, 8
mov byte [esp + 0x71], al
lea eax, [esp + 0x70]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1c]
mov dword [esp], eax
call fcn.004a3180
mov ebx, dword [esi + 0x14]
mov dword [esi + 0x1c], eax
jmp 0x4a935f
mov esi, ecx
mov edi, dword [esp + 0x3c]
jmp 0x4a98b3
mov edi, dword [esp + 0x20]
mov ebx, edx
mov esi, ecx
xor ebp, ebp
jmp 0x4a90a0
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x24], esi
mov esi, ecx
mov ebp, edx
cmp eax, 0x12
mov ecx, dword [esp + 0x20]
lea edx, [eax + eax + 0x575240]
ja 0x4aac73
movzx eax, word [edx]
add edx, 2
xor ebx, ebx
cmp edx, 0x575266
mov word [ecx + eax*2 + 0x74], bx
jne 0x4aac53
mov eax, dword [esp + 0x20]
mov dword [eax + 0x6c], 0x13
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x54]
mov dword [eax + 0x58], 7
mov dword [eax + 0x70], ebx
mov dword [eax + 0x50], ebx
mov ebx, dword [esp + 0x50]
mov dword [esp + 8], 0x13
mov dword [esp], 0
mov dword [esp + 0x14], ebx
mov ebx, eax
add eax, 0x58
mov dword [esp + 0x10], eax
mov eax, ebx
add eax, 0x70
mov dword [esp + 0xc], eax
mov eax, ebx
add eax, 0x74
mov dword [esp + 4], eax
call fcn.004abd20
test eax, eax
mov dword [esp + 0x34], eax
je 0x4aaf02
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], str.invalid_code_lengths_set
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f51
mov eax, 0x3f51
jmp 0x4a8afa
mov dword [esp + 0x24], ebx
mov ebp, edi
mov ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x20]
jmp 0x4a90a0
mov dword [esp + 8], ecx
mov ebx, eax
mov dword [esp + 4], ebp
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x3c], ecx
mov dword [esp], eax
call fcn.004a3180
mov ecx, dword [esp + 0x3c]
mov dword [ebx + 0x1c], eax
jmp 0x4a99c6
lea ecx, [eax + 3]
cmp esi, ecx
mov edx, ecx
jae 0x4aad65
test edi, edi
je 0x4aacee
mov ecx, esi
mov ebp, dword [esp + 0x44]
mov esi, eax
mov eax, edx
jmp 0x4aad48
test edi, edi
je 0x4aa560
add ebp, 1
movzx edx, byte [ebp - 1]
sub edi, 1
shl edx, cl
add ecx, 8
add ebx, edx
cmp ecx, eax
jb 0x4aad40
mov eax, esi
mov esi, ecx
mov dword [esp + 0x44], ebp
mov ecx, eax
shr ebx, cl
mov edx, ebx
mov ecx, ebx
and edx, 7
lea ebx, [edx + 3]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x3c], ebx
mov ebx, ecx
mov ecx, 0xfffffffd
sub ecx, eax
xor eax, eax
shr ebx, 3
add esi, ecx
jmp 0x4a9cd7
mov eax, dword [esp + 0x20]
and ebx, 0xf
mov dword [eax + 0x4c], ebx
mov dword [eax + 4], 0x3f49
jmp 0x4a8e97
mov dword [esp + 0x24], ebx
mov ebx, ebp
mov ebp, edi
mov edi, dword [esp + 0x20]
jmp 0x4a90a0
mov esi, dword [esp + 0x24]
mov dword [esp + 8], 4
mov eax, esi
mov byte [esp + 0x70], al
mov eax, esi
shr eax, 8
mov byte [esp + 0x71], al
mov eax, esi
shr eax, 0x10
mov byte [esp + 0x72], al
mov eax, esi
mov esi, dword [esp + 0x20]
shr eax, 0x18
mov byte [esp + 0x73], al
lea eax, [esp + 0x70]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1c]
mov dword [esp], eax
call fcn.004a3180
mov dword [esi + 0x1c], eax
jmp 0x4a92d8
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x40], eax
jmp 0x4a9eb8
mov edx, ebp
jmp 0x4a8c75
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x4aae2e
mov edx, dword [esp + 0x24]
shr edx, 8
and edx, 1
mov dword [eax], edx
mov eax, dword [esp + 0x20]
test byte [eax + 0x15], 2
je 0x4aae42
test byte [eax + 0xc], 4
jne 0x4ab0dc
mov eax, dword [esp + 0x20]
mov ebp, ebx
xor esi, esi
mov dword [esp + 0x24], 0
mov dword [eax + 4], 0x3f36
jmp 0x4a927d
mov esi, dword [esp + 0x24]
mov dword [esp + 8], 2
mov eax, esi
mov byte [esp + 0x70], al
mov eax, esi
mov esi, dword [esp + 0x20]
shr eax, 8
mov byte [esp + 0x71], al
lea eax, [esp + 0x70]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1c]
mov dword [esp], eax
call fcn.004a3180
mov ebx, dword [esi + 0x14]
mov dword [esi + 0x1c], eax
jmp 0x4aa20e
mov ebx, ebp
mov ebp, edi
mov edi, dword [esp + 0x20]
mov dword [edi + 4], 0x3f50
mov dword [esp + 0x34], 1
jmp 0x4a90a0
test eax, eax
jne 0x4ab2b4
mov dword [esp + 0x58], 0
jmp 0x4a9ec6
mov ebx, dword [esp + 0x24]
mov edx, ebx
mov eax, ebx
shr eax, 0x18
shl edx, 0x18
add edx, eax
mov eax, ebx
shr eax, 8
and eax, 0xff00
add edx, eax
mov eax, ebx
and eax, 0xff00
shl eax, 8
add eax, edx
jmp 0x4a9b2a
mov esi, ecx
mov edi, edx
jmp 0x4a9aa1
mov eax, dword [esp + 0x20]
mov dword [esp + 0x40], 0
mov dword [eax + 0x6c], 0
mov ebx, eax
mov dword [eax + 4], 0x3f46
jmp 0x4a9ba7
mov ebx, ebp
jmp 0x4aa13f
mov ebx, ebp
jmp 0x4a97e2
mov ebx, ebp
jmp 0x4a93ec
mov esi, ecx
mov edi, edx
jmp 0x4a97e2
mov esi, ecx
mov edi, edx
jmp 0x4a93ec
mov edi, edx
jmp 0x4aa1dd
mov edi, dword [esp + 0x20]
xor ebp, ebp
mov ebx, dword [esp + 0x3c]
jmp 0x4a90a0
mov eax, dword [esp + 0x20]
mov ebp, dword [esp + 0x44]
mov dword [esp + 0x24], ebx
cmp word [eax + 0x274], 0
jne 0x4ab116
mov ebx, dword [esp + 0xa0]
mov dword [ebx + 0x18], str.invalid_code____missing_end_of_block
mov dword [eax + 4], 0x3f51
mov eax, 0x3f51
jmp 0x4a8afa
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x28]
test ecx, ecx
jne 0x4aafab
mov dword [eax + 0x28], 0xf
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.004a3180
mov esi, dword [esp + 0x20]
lea edx, [esp + 0x70]
mov byte [esp + 0x70], 0x1f
mov byte [esp + 0x71], 0x8b
mov dword [esi + 0x1c], eax
mov dword [esp + 8], 2
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004a3180
mov dword [esi + 4], 0x3f35
mov dword [esp + 0x24], 0
mov dword [esi + 0x1c], eax
mov eax, 0x3f35
xor esi, esi
jmp 0x4a8afa
sub eax, edx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x1c]
mov dword [esp], eax
call fcn.004a2b60
jmp 0x4a9af9
mov ebx, ebp
mov edx, dword [esp + 0x2c]
mov ebp, edi
mov edi, eax
mov eax, dword [esp + 0xa0]
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0x30]
mov dword [eax], ebx
mov dword [eax + 4], ebp
mov dword [eax + 0x10], edx
mov eax, dword [esp + 0x24]
mov dword [edi + 0x40], esi
mov dword [edi + 0x3c], eax
mov eax, 2
jmp 0x4a8a41
mov esi, ecx
mov edi, dword [esp + 0x3c]
jmp 0x4a947d
mov eax, dword [esp + 0x20]
sub esi, 4
shr dword [esp + 0x24], 4
mov ecx, dword [esp + 0x24]
mov edx, dword [eax + 0x28]
and ecx, 0xf
add ecx, 8
test edx, edx
jne 0x4ab087
mov dword [eax + 0x28], ecx
cmp ecx, 0xf
ja 0x4ab099
mov eax, dword [esp + 0x20]
cmp ecx, dword [eax + 0x28]
jbe 0x4ab18f
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], str.invalid_window_size
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f51
mov eax, 0x3f51
jmp 0x4a8afa
mov ebx, ebp
xor esi, esi
mov ebp, edi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x24], 0
jmp 0x4aaea3
mov dword [esp + 0x40], ebp
jmp 0x4a9eb8
mov esi, dword [esp + 0x24]
mov dword [esp + 8], 2
mov eax, esi
mov byte [esp + 0x70], al
mov eax, esi
mov esi, dword [esp + 0x20]
shr eax, 8
mov byte [esp + 0x71], al
lea eax, [esp + 0x70]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x1c]
mov dword [esp], eax
call fcn.004a3180
mov dword [esi + 0x1c], eax
jmp 0x4aae42
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
mov dword [eax + 0x58], 9
mov dword [eax + 0x70], ebx
mov dword [eax + 0x50], ebx
lea ebx, [eax + 0x70]
mov dword [esp + 0x14], edx
mov edx, eax
add eax, 0x58
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0xc], ebx
mov dword [esp], 1
mov dword [esp + 8], eax
mov eax, edx
add eax, 0x74
mov dword [esp + 4], eax
call fcn.004abd20
test eax, eax
mov dword [esp + 0x34], eax
je 0x4ab1ee
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0xa0]
mov dword [ebx + 0x18], str.invalid_literal_lengths_set
mov dword [eax + 4], 0x3f51
mov eax, 0x3f51
jmp 0x4a8afa
mov esi, dword [esp + 0x20]
mov eax, 1
shl eax, cl
mov dword [esi + 0x18], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.004a2b60
mov ebx, dword [esp + 0xa0]
mov dword [esi + 0x1c], eax
mov dword [ebx + 0x30], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x24], 0
and eax, 0x200
cmp eax, 1
sbb eax, eax
and eax, 2
add eax, 0x3f3d
mov dword [esi + 4], eax
xor esi, esi
jmp 0x4a8afa
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x50]
mov eax, dword [edx + 0x70]
mov dword [edx + 0x5c], 6
mov dword [edx + 0x54], eax
mov eax, edx
add eax, 0x5c
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], ebx
mov eax, dword [edx + 0x68]
mov dword [esp + 8], eax
mov eax, dword [edx + 0x64]
mov dword [esp], 2
lea eax, [edx + eax*2 + 0x74]
mov dword [esp + 4], eax
call fcn.004abd20
test eax, eax
mov dword [esp + 0x34], eax
je 0x4a8d8e
mov eax, dword [esp + 0xa0]
mov dword [eax + 0x18], str.invalid_distances_set
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f51
mov eax, 0x3f51
jmp 0x4a8afa
mov ebp, edi
sub esi, 3
mov edi, eax
mov ebx, edx
shr dword [esp + 0x24], 3
jmp 0x4a90a0
mov eax, dword [esp + 0xa0]
mov ebp, dword [esp + 0x44]
mov dword [esp + 0x24], ebx
mov dword [eax + 0x18], str.invalid_bit_length_repeat
mov eax, dword [esp + 0x20]
mov dword [eax + 4], 0x3f51
mov eax, 0x3f51
jmp 0x4a8afa
mov ebp, edi
xor esi, esi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x24], 0
jmp 0x4a90a0
mov dword [esp + 0x58], eax
mov edx, dword [esp + 0x20]
jmp 0x4a9d25