Function at 0x45df58
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 0x24
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x28]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x1c], edi
test esi, esi
lea esi, [esi - 1]
je 0x45dfd0
mov ebx, dword [esp + 0x2c]
movzx ecx, byte [esi + ebx]
cmp cl, 0x80
jb 0x45df8d
lea ebx, [esi + 1]
cmp dword [esp + 0x28], ebx
jae 0x45dfe8
jmp 0x45e12b
movzx edx, cl
cmp edx, 0x20
je 0x45dfa1
lea edi, [edx - 9]
cmp edi, 4
jbe 0x45dfa1
xor eax, eax
jmp 0x45dfa6
mov eax, 1
xor al, 1
je 0x45df6b
lea ecx, [esi + 1]
cmp dword [esp + 0x28], ecx
jb 0x45e153
lea eax, [esi + 1]
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
add esp, 0x24
ret 8
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
add esp, 0x24
xor eax, eax
ret 8
lea edi, [esi + 1]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x28], edi
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x2c], edx
test ebx, ebx
lea ebx, [ebx - 1]
je 0x45e105
cmp ebx, dword [esp + 0x28]
jae 0x45e17b
mov esi, dword [esp + 0x2c]
movzx ecx, byte [esi + ebx]
cmp cl, 0x7f
ja 0x45e034
mov byte [esp + 0x22], cl
movzx eax, byte [esp + 0x22]
call fcn.0046b370
test al, al
jne 0x45dffb
jmp 0x45e105
test ebx, ebx
je 0x45e105
mov dl, cl
and dl, 0xc0
cmp dl, 0x80
jne 0x45e105
mov dl, cl
and edx, 0x3f
mov esi, edx
lea edx, [ebx - 1]
cmp edx, dword [esp + 0x28]
jae 0x45e1a3
mov ecx, dword [esp + 0x2c]
add ecx, ebx
movzx eax, byte [ecx - 1]
mov edx, eax
and dl, 0xe0
cmp dl, 0xc0
jne 0x45e099
mov byte [esp + 0x21], al
mov al, byte [esp + 0x21]
and eax, 0x1f
shl eax, 6
add eax, esi
call fcn.0046b370
test al, al
je 0x45e105
dec ebx
jmp 0x45dffb
cmp ebx, 1
je 0x45e105
mov cl, al
and cl, 0xc0
cmp cl, 0x80
jne 0x45e105
lea edx, [ebx - 2]
cmp edx, dword [esp + 0x28]
jae 0x45e1cb
mov byte [esp + 0x21], al
mov ecx, dword [esp + 0x2c]
add ecx, ebx
movzx edx, byte [ecx - 2]
mov byte [esp + 0x20], dl
and dl, 0xf0
cmp dl, 0xe0
jne 0x45e105
mov cl, byte [esp + 0x20]
mov dl, byte [esp + 0x21]
and ecx, 0xf
mov edi, ecx
and edx, 0x3f
shl edx, 6
shl edi, 0xc
add edx, esi
add edi, edx
mov eax, edi
call fcn.0046b370
test al, al
je 0x45e105
add ebx, 0xfffffffe
jmp 0x45dffb
lea ecx, [ebx + 1]
cmp dword [esp + 0x28], ecx
jb 0x45e1f3
lea eax, [ebx + 1]
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
add esp, 0x24
ret 8
mov dword [esp + 0xc], ebx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x10], ecx
mov dword [esp + 8], 0
mov dword [esp + 4], 0xc9d
mov dword [esp], 0x4ce5c0
call fcn.00462c8c
mov dword [esp + 0xc], ecx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x10], edx
mov dword [esp + 8], 0
mov dword [esp + 4], 0xca2
mov dword [esp], 0x4ce5c0
call fcn.00462c8c
mov dword [esp + 0xc], ebx
mov eax, dword [esp + 0x28]
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0xcb8
mov dword [esp], 0x4ce5c0
call fcn.00462c8c
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0x28]
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0xcc4
mov dword [esp], 0x4ce5c0
call fcn.00462c8c
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0x28]
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0xcd0
mov dword [esp], 0x4ce5c0
call fcn.00462c8c
mov dword [esp + 0xc], ecx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x10], edx
mov dword [esp + 8], 0
mov dword [esp + 4], 0xcdf
mov dword [esp], 0x4ce5c0
call fcn.00462c8c
int3