Function at 0x5fb230
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 0x2c
mov eax, dword [esp + 0x30]
add eax, edx
mov dword [esp + 4], edx
mov dword [esp + 0x28], eax
push ebx
mov ebx, ecx
mov dword [esp + 4], ebx
cmp edx, eax
jae 0x5fb552
push ebp
push esi
push edi
mov eax, dword [edx]
lea ecx, [esp + 0x20]
mov edi, dword [edx + 0xc]
lea ebp, [edx + 0x10]
mov esi, dword [edx + 8]
add eax, edx
push 0
push 0
push ebx
mov dword [esp + 0x28], eax
call fcn.005774e0
mov eax, dword [ebx]
lea ecx, [esp + 0x20]
push 0
xorps xmm2, xmm2
mov eax, dword [eax + 0x28]
mov dword [ebx + 4], eax
call fcn.00548240
movd xmm0, esi
neg edi
mov esi, dword [esp + 0x10]
cvtdq2ps xmm0, xmm0
lea ecx, [esi + 0xa]
mulss xmm0, dword [0x6f2a48]
movss dword [eax], xmm0
movd xmm0, edi
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [0x6f2a48]
movss dword [eax + 4], xmm0
mov al, 2
mov byte [esi + 9], 0
xchg byte [ecx], al
cmp ebp, dword [esp + 0x1c]
jae 0x5fb4e0
nop word [eax + eax]
movzx eax, word [ebp]
mov ecx, eax
cmp eax, 1
jne 0x5fb39a
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x40], eax
cmp cx, word [ebp + 2]
jae 0x5fb4cb
movzx eax, ax
mov ecx, esi
mov ebx, dword [ebp + eax*8 + 8]
mov edi, dword [ebp + eax*8 + 4]
call fcn.00549500
push 0
push 0
push esi
lea ecx, [esp + 0x30]
call fcn.005774e0
mov esi, dword [esp + 0x24]
mov ecx, esi
push 9
or byte [esi + 0x1b], 1
call fcn.005773b0
mov ecx, dword [esi + 0x24]
neg ebx
mov eax, dword [esi + 0x20]
not ecx
movd xmm0, edi
cvtdq2ps xmm0, xmm0
mov byte [ecx + eax], 1
mov edx, dword [esi + 0x28]
mov ecx, dword [esi + 0x1c]
inc dword [esi + 0x24]
mulss xmm0, dword [0x6f2a48]
add dword [esi + 0x2c], 0xfffffff7
lea eax, [edx + 1]
mov dword [esi + 0x28], eax
mov al, 2
mov byte [esi + 0x18], 1
mov byte [esi + 0x1a], 0
mov esi, dword [esp + 0x10]
movss dword [ecx + edx*8], xmm0
movd xmm0, ebx
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [0x6f2a48]
movss dword [ecx + edx*8 + 4], xmm0
lea ecx, [esi + 0xa]
mov byte [esi + 9], 0
xchg byte [ecx], al
mov eax, dword [esp + 0x40]
inc eax
mov dword [esp + 0x40], eax
cmp ax, word [ebp + 2]
jb 0x5fb2f1
movzx ecx, word [ebp]
cmp cx, 2
jne 0x5fb4cb
movzx ecx, word [ebp + 2]
mov dword [esp + 0x18], 0
lea eax, [ecx - 1]
test eax, eax
jle 0x5fb4cb
mov esi, ecx
xor ebx, ebx
jmp 0x5fb3c5
mov esi, dword [esp + 0x40]
mov edx, dword [ebp + ebx*8 + 4]
mov ecx, dword [ebp + ebx*8 + 8]
mov eax, dword [ebp + ebx*8 + 0xc]
mov edi, dword [ebp + ebx*8 + 0x10]
movzx esi, si
sub esi, 2
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x40], eax
cmp ebx, esi
jge 0x5fb3f7
add eax, edx
add edi, ecx
sar eax, 1
mov dword [esp + 0x40], eax
sar edi, 1
mov ebx, dword [esp + 0x10]
mov ecx, ebx
call fcn.00549500
push 0
push 0
push ebx
lea ecx, [esp + 0x34]
call fcn.005774e0
mov esi, dword [esp + 0x28]
mov ecx, esi
push 0x11
or byte [esi + 0x1b], 2
call fcn.005773b0
mov ecx, dword [esi + 0x24]
neg edi
mov eax, dword [esi + 0x20]
not ecx
movd xmm0, dword [esp + 0x2c]
movss xmm1, dword [0x6f2a48]
cvtdq2ps xmm0, xmm0
mov byte [ecx + eax], 2
mov edx, dword [esi + 0x28]
mov ecx, dword [esi + 0x1c]
inc dword [esi + 0x24]
add dword [esi + 0x2c], 0xffffffef
mulss xmm0, xmm1
lea eax, [edx + 2]
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x30]
mov byte [esi + 0x18], 1
neg eax
mov byte [esi + 0x1a], 0
mov esi, ebx
movss dword [ecx + edx*8], xmm0
movd xmm0, eax
mov al, 2
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
movss dword [ecx + edx*8 + 4], xmm0
movd xmm0, dword [esp + 0x40]
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
movss dword [ecx + edx*8 + 8], xmm0
movd xmm0, edi
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
movss dword [ecx + edx*8 + 0xc], xmm0
lea ecx, [esi + 0xa]
mov byte [esi + 9], 0
xchg byte [ecx], al
mov ecx, dword [esp + 0x18]
movzx eax, word [ebp + 2]
inc ecx
movzx ebx, cx
mov dword [esp + 0x18], ecx
mov ecx, eax
dec eax
mov dword [esp + 0x40], ecx
cmp ebx, eax
jl 0x5fb3c1
movzx eax, word [ebp + 2]
lea ebp, [ebp + eax*8]
add ebp, 4
cmp ebp, dword [esp + 0x1c]
jb 0x5fb2d0
mov edx, dword [esp + 0x14]
mov eax, dword [esi]
add edx, dword [edx]
mov ecx, dword [eax + 0x24]
mov dword [esp + 0x14], edx
test ecx, ecx
jle 0x5fb536
mov eax, dword [eax + 0x20]
sub eax, ecx
cmp byte [eax], 4
ja 0x5fb536
push 0
push 0
push esi
lea ecx, [esp + 0x40]
call fcn.005774e0
mov esi, dword [esp + 0x34]
mov ecx, esi
push 1
call fcn.005773b0
mov ecx, dword [esi + 0x24]
mov eax, dword [esi + 0x20]
not ecx
mov edx, dword [esp + 0x14]
mov byte [ecx + eax], 5
inc dword [esi + 0x24]
dec dword [esi + 0x2c]
mov byte [esi + 0x18], 1
mov esi, dword [esp + 0x10]
mov ecx, dword [esi + 4]
mov ebx, dword [esp + 0x10]
not ecx
sar ecx, 0x1f
xor dword [esi + 4], ecx
cmp edx, dword [esp + 0x38]
jb 0x5fb253
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret