Function at 0x488e50
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x3c
mov edx, dword [esp + 0x54]
mov edi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x58]
test edx, edx
mov dword [edi], 0
mov dword [edi + 4], 0
je 0x488ef0
sub edx, 1
test eax, eax
je 0x488ee0
mov ebx, dword [ecx + 0x198]
sub eax, 1
cmp edx, ebx
ja 0x488ed0
cmp eax, ebx
ja 0x488ed0
shl edx, 4
shl eax, 4
mov ebx, dword [ecx + 0x1a0]
movzx eax, word [ebx + eax]
mov esi, dword [ebx + edx]
mov ebx, dword [ecx + 0x1a8]
shl esi, 0x10
or esi, eax
mov eax, dword [ecx + 0x68]
test ebx, ebx
mov dword [esp + 0x10], eax
je 0x488ed0
lea esi, [esi]
cmp esi, dword [ebx + 0x10]
jb 0x488eca
cmp esi, dword [ebx + 0x14]
jbe 0x488f00
mov ebx, dword [ebx]
test ebx, ebx
jne 0x488ec0
xor eax, eax
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
xor eax, eax
cmp edx, dword [ecx + 0x198]
ja 0x488ed2
shl edx, 4
jmp 0x488e96
test eax, eax
jne 0x488e7f
xor edx, edx
jmp 0x488e96
mov eax, dword [ebx + 0xc]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x10]
mov dword [esp], eax
call sym._FT_Stream_Seek
test eax, eax
jne 0x488ed2
movzx eax, byte [ebx + 4]
imul eax, dword [ebx + 8]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x10]
mov dword [esp], eax
call sym._FT_Stream_EnterFrame
test eax, eax
jne 0x488ed2
movzx ebp, byte [ebx + 4]
mov edx, dword [ebx + 8]
mov ecx, 0x1f
mov dword [esp + 0x14], edx
bsr edx, ebp
xor edx, 0x1f
sub ecx, edx
mov edx, 1
shl edx, cl
mov ecx, edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x24], ecx
imul edx, ecx
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx + 0x20]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], ecx
movzx ecx, byte [ebx + 5]
mov edx, ecx
and ecx, 2
and edx, 1
mov byte [esp + 0x2b], cl
mov byte [esp + 0x20], dl
mov edx, ebp
sub edx, dword [esp + 0x24]
je 0x488fe3
imul edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
add ecx, edx
cmp byte [esp + 0x20], 0
je 0x48913a
lea edx, [ecx + 4]
mov dword [esp + 0x24], edx
movzx edx, byte [ecx]
shl edx, 0x18
mov ebp, edx
movzx edx, byte [ecx + 1]
shl edx, 0x10
or ebp, edx
movzx edx, byte [ecx + 3]
or ebp, edx
movzx edx, byte [ecx + 2]
shl edx, 8
or edx, ebp
cmp edx, esi
je 0x489045
jae 0x488fe3
mov ecx, dword [esp + 0x24]
lea edx, [ecx + 2]
add ecx, 1
cmp byte [esp + 0x2b], 0
cmove edx, ecx
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x1c]
cmp dword [esp + 0x14], edx
jae 0x4890f8
cmp byte [esp + 0x20], 0
jne 0x489080
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x5c], edi
mov ebx, edx
mov dword [esp + 0x20], eax
mov edi, dword [esp + 0x18]
jmp 0x48901d
cmova edi, eax
cmp ebx, dword [esp + 0x14]
jbe 0x489154
shr ebx, 1
lea eax, [edi + ebx]
movzx ecx, byte [eax]
movzx edx, byte [eax + 1]
lea ebp, [eax + 2]
shl ecx, 0x10
or edx, ecx
cmp esi, edx
jne 0x489010
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x24], ebp
cmp byte [esp + 0x2b], 0
mov ecx, dword [esp + 0x24]
movzx edx, byte [ecx]
je 0x48905f
movzx ecx, byte [ecx + 1]
shl edx, 8
or edx, ecx
movsx edx, dx
movsx ecx, word [ebx + 6]
add edx, ecx
mov dword [edi], edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
mov dword [esp], eax
call sym._FT_Stream_ExitFrame
mov eax, dword [esp + 0x14]
jmp 0x488ed2
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x5c], edi
mov dword [esp + 0x24], eax
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
jmp 0x4890a9
cmova edi, eax
cmp dword [esp + 0x14], ebx
jae 0x4890e8
shr ebx, 1
lea eax, [edi + ebx]
movzx ecx, byte [eax]
movzx edx, byte [eax + 1]
lea ebp, [eax + 4]
shl edx, 0x10
shl ecx, 0x18
or ecx, edx
movzx edx, byte [eax + 3]
or ecx, edx
movzx edx, byte [eax + 2]
shl edx, 8
or edx, ecx
cmp esi, edx
jne 0x4890a0
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x24], ebp
mov edi, dword [esp + 0x5c]
jmp 0x489045
mov dword [esp + 0x18], edi
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x5c]
cmp byte [esp + 0x20], 0
je 0x489164
mov ebp, dword [esp + 0x18]
movzx edx, byte [ebp]
mov ecx, ebp
add ecx, 4
mov dword [esp + 0x24], ecx
mov ecx, edx
movzx edx, byte [ebp + 1]
shl ecx, 0x18
shl edx, 0x10
or ecx, edx
movzx edx, byte [ebp + 3]
or ecx, edx
movzx edx, byte [ebp + 2]
shl edx, 8
or edx, ecx
cmp edx, esi
jne 0x489067
jmp 0x489045
lea edx, [ecx + 2]
mov dword [esp + 0x24], edx
movzx edx, byte [ecx]
shl edx, 0x10
mov ebp, edx
movzx edx, byte [ecx + 1]
or edx, ebp
jmp 0x488fc7
mov dword [esp + 0x18], edi
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x18]
lea edx, [ebp + 2]
mov dword [esp + 0x24], edx
movzx edx, byte [ebp]
mov ecx, edx
movzx edx, byte [ebp + 1]
shl ecx, 0x10
or edx, ecx
jmp 0x48912d