Function at 0x625840
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov ecx, dword [0x9aee30]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x625b7a
sub esp, 0x3c
movzx eax, byte [esp + 0x40]
test al, al
je 0x625b61
cmp al, 8
ja 0x625b61
mov edx, dword [esp + 0x48]
test edx, edx
je 0x625971
mov ebx, dword [esp + 0x44]
movzx ebp, byte [ebx]
cmp al, 8
jae 0x62589b
movzx ecx, al
mov esi, 1
shl esi, cl
cmp ecx, 0x20
sbb edi, edi
and esi, edi
add esi, 0xffffffff
and ebp, esi
movzx ecx, al
mov eax, 1
shl eax, cl
lea esi, [ecx - 0x20]
mov edi, ecx
mov ecx, esi
mov edx, 1
shl edx, cl
neg ecx
mov ebx, 1
shr ebx, cl
cmp edi, 0x20
sbb edi, edi
and eax, edi
cmp esi, 0x20
sbb esi, esi
and edx, esi
cmp ecx, 0x20
sbb esi, esi
and esi, ebx
or edx, esi
add eax, 0xffffffff
adc edx, 0xffffffff
test edx, edx
sete dl
seta bl
cmp eax, ebp
seta al
and edx, eax
or edx, ebx
test dl, dl
jne 0x62592b
mov eax, dword [esp + 0x4c]
lea edx, [eax - 1]
mov ebx, edx
neg edx
sar edx, 0x1f
and edx, 1
mov esi, dword [esp + 0x44]
add edx, esi
mov edi, dword [esp + 0x48]
lea ecx, [edi - 1]
mov dword [esp + 0x18], eax
xor eax, eax
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0x10], eax
xor eax, eax
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x18]
jmp 0x6259df
mov dword [esp + 0x50], ebp
mov dword [esp + 0x54], 0
mov eax, dword [esp + 0x4c]
dec eax
mov ecx, eax
neg eax
sar eax, 0x1f
and eax, 1
mov edx, dword [esp + 0x44]
add eax, edx
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x48]
dec eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], ecx
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], 0
add esp, 0x3c
ret
mov eax, dword [0x964d18]
mov ecx, dword [0x964d1c]
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], ecx
add esp, 0x3c
ret
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x38]
mov esi, dword [esp + 0x28]
mov esi, dword [esp + 0x44]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x34], edx
mov ebp, edi
mov eax, dword [esp + 0x4c]
mov edi, dword [esp + 0x48]
mov edx, dword [esp + 0x38]
test ecx, ecx
je 0x625b2d
movzx eax, byte [edx]
mov byte [esp + 0xf], al
and eax, 0x7f
mov dword [esp + 0x30], eax
dec ebx
mov dword [esp + 0x2c], ebx
neg ebx
sar ebx, 0x1f
and ebx, 1
add edx, ebx
mov dword [esp + 0x38], edx
lea ebx, [ecx - 1]
mov dword [esp + 0x28], ebx
mov edi, dword [esp + 0x14]
cmp edi, 1
sbb ecx, ecx
xor ecx, 0xffffffff
mov esi, dword [esp + 0x10]
or ecx, esi
mov dword [esp + 0x24], ecx
lea edx, [ecx - 0x20]
mov ecx, edx
shl eax, cl
neg ecx
mov dword [esp + 0x20], ecx
mov ebx, dword [esp + 0x30]
shr ebx, cl
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x30]
shl edi, cl
mov esi, dword [esp + 0x20]
cmp esi, 0x20
sbb esi, esi
and ebx, esi
cmp edx, 0x20
sbb edx, edx
and edx, eax
or edx, ebx
cmp ecx, 0x20
sbb eax, eax
and edi, eax
add edi, ebp
mov eax, dword [esp + 0x34]
adc edx, eax
movzx eax, byte [esp + 0xf]
test al, 0x80
je 0x625af9
mov eax, dword [esp + 0x10]
add eax, 7
mov ebx, dword [esp + 0x14]
adc ebx, 0
test ebx, ebx
xchg ebp, ebx
seta bl
xchg ebp, ebx
xchg esi, ebx
sete bl
xchg esi, ebx
cmp eax, 0x3f
setae cl
and ecx, esi
or ecx, ebp
test cl, cl
je 0x6259ad
lea eax, [0x6a7380]
mov dword [esp], eax
lea eax, [0x964d20]
mov dword [esp + 4], eax
call fcn.0040a900
mov eax, dword [esp + 8]
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x60], ecx
lea ecx, [0x7495e4]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x68], eax
add esp, 0x3c
ret
mov dword [esp + 0x50], edi
mov dword [esp + 0x54], edx
mov eax, dword [esp + 0x38]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], 0
add esp, 0x3c
ret
mov ecx, dword [0x964d18]
mov edx, dword [0x964d1c]
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], edi
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], ecx
mov dword [esp + 0x68], edx
add esp, 0x3c
ret
lea eax, [0x6929c0]
mov dword [esp], eax
lea eax, [0x748d78]
mov dword [esp + 4], eax
call fcn.00439660
nop
call fcn.0046b490
jmp fcn.00625840