Function at 0x45ceb0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
cmp dword [ecx], 0
push ebx
je 0x45cec1
mov ebx, dword [ecx + 4]
jmp 0x45cec4
lea ebx, [ecx + 8]
cmp dword [ebx + 0x20], 0
mov dword [ebp - 4], ebx
jne 0x45d1af
movss xmm2, dword [ebp + 0x1c]
movss xmm3, dword [ebp + 0x18]
push esi
mov esi, dword [ebp + 8]
sub esi, dword [ebx + 4]
push edi
mov edi, dword [ebp + 0x10]
mov dword [ebp + 8], esi
jns 0x45cf13
movd xmm0, esi
movaps xmm1, xmm2
cvtdq2ps xmm0, xmm0
subss xmm1, xmm3
mulss xmm1, xmm0
movd xmm0, edi
add edi, esi
cvtdq2ps xmm0, xmm0
xor esi, esi
mov dword [ebp + 8], esi
divss xmm1, xmm0
subss xmm3, xmm1
mov ecx, dword [ebx + 0xc]
lea eax, [esi + edi]
movss dword [ebp - 8], xmm3
cmp eax, ecx
jle 0x45cf49
sub ecx, esi
subss xmm2, xmm3
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mulss xmm2, xmm0
movd xmm0, edi
mov edi, ecx
cvtdq2ps xmm0, xmm0
divss xmm2, xmm0
addss xmm2, xmm3
movss dword [ebp + 0x1c], xmm2
mov edx, dword [ebp + 0xc]
sub edx, dword [ebx + 8]
mov ecx, dword [ebp + 0x14]
mov dword [ebp + 0xc], edx
jns 0x45cf5e
add ecx, edx
xor edx, edx
mov dword [ebp + 0xc], edx
lea eax, [edx + ecx]
mov dword [ebp + 0x18], ecx
cmp eax, dword [ebx + 0x10]
jle 0x45cf71
mov ecx, dword [ebx + 0x10]
sub ecx, edx
mov dword [ebp + 0x18], ecx
test edi, edi
jle 0x45d1ad
test ecx, ecx
jle 0x45d1ad
push edi
call fcn.00472c49
add esp, 4
mov edx, eax
mov dword [ebp + 0x10], edx
test edi, edi
jle 0x45d040
movss xmm0, dword [ebp + 0x1c]
mov eax, 1
movss xmm2, dword [ebp - 8]
sub eax, edx
subss xmm0, xmm2
mov dword [ebp + 0x14], eax
mov esi, edx
xor ebx, ebx
movss dword [ebp + 0x1c], xmm0
jmp 0x45cfc0
movss xmm1, dword [ebp + 0x20]
sub esp, 8
cmp byte [ebp + 0x24], 0
movss dword [esp + 4], xmm1
je 0x45cfea
cmp byte [ebp + 0x28], 0
movd xmm1, ebx
cvtdq2ps xmm1, xmm1
mulss xmm1, xmm0
je 0x45cffd
lea eax, [edi - 1]
jmp 0x45d006
add eax, esi
cmp byte [ebp + 0x28], 0
movd xmm1, eax
cvtdq2ps xmm1, xmm1
mulss xmm1, xmm0
je 0x45d003
movd xmm0, edi
jmp 0x45d00a
lea eax, [edi + 1]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
addss xmm1, xmm2
movss dword [esp], xmm1
call fcn.00462550
movss xmm0, dword [ebp + 0x1c]
inc ebx
movss xmm2, dword [ebp - 8]
add esp, 8
mov byte [esi], al
inc esi
mov eax, dword [ebp + 0x14]
cmp ebx, edi
jl 0x45cfc0
mov ebx, dword [ebp - 4]
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 0x10]
xor eax, eax
mov dword [ebp + 0x24], eax
cmp dword [ebp + 0x18], eax
jle 0x45d0ff
mov edi, edi
mov ecx, dword [ebp + 0xc]
add ecx, eax
mov eax, dword [ebx + 0x24]
imul ecx, dword [ebx + 0xc]
add ecx, esi
lea eax, [eax + ecx*4]
xor ecx, ecx
mov dword [ebp + 0x1c], eax
mov dword [ebp + 0x28], ecx
test edi, edi
jle 0x45d0ef
mov ebx, eax
or al, 0xff
lea ebx, [ebx + 4]
sub al, byte [ecx + edx]
movzx ecx, byte [ebx - 4]
movzx esi, al
mov eax, 0x80808081
imul ecx, esi
imul ecx
add edx, ecx
movzx ecx, byte [ebx - 3]
sar edx, 7
mov eax, edx
imul ecx, esi
shr eax, 0x1f
add eax, edx
mov byte [ebx - 4], al
mov eax, 0x80808081
imul ecx
add edx, ecx
movzx ecx, byte [ebx - 2]
sar edx, 7
mov eax, edx
imul ecx, esi
shr eax, 0x1f
add eax, edx
mov byte [ebx - 3], al
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [ebp + 0x28]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp + 0x10]
mov byte [ebx - 2], al
mov al, byte [ecx + edx]
inc ecx
mov byte [ebx - 1], al
mov dword [ebp + 0x28], ecx
cmp ecx, edi
jl 0x45d073
mov ebx, dword [ebp - 4]
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 0x24]
inc eax
mov dword [ebp + 0x24], eax
cmp eax, dword [ebp + 0x18]
jl 0x45d050
mov ecx, dword [ebp + 0xc]
mov eax, ecx
mov esi, dword [ebx + 0x2c]
add ecx, esi
cdq
idiv esi
mov ebx, eax
mov eax, dword [ebp + 0x18]
dec eax
mov dword [ebp + 0x28], ebx
add eax, ecx
cdq
idiv esi
cmp ebx, eax
jge 0x45d1a2
mov esi, dword [ebp + 8]
mov ecx, dword [ebp - 4]
lea eax, [esi - 1]
mov ebx, dword [ecx + 0x28]
add eax, ebx
add eax, edi
cdq
idiv ebx
mov dword [ebp + 0x24], eax
jmp 0x45d140
mov eax, dword [ecx + 0x30]
imul eax, dword [ebp + 0x28]
add eax, dword [ecx + 0x38]
mov dword [ebp + 0x1c], eax
mov eax, esi
cdq
idiv ebx
mov esi, eax
cmp esi, dword [ebp + 0x24]
jge 0x45d180
lea esp, [esp]
mov eax, dword [ebp + 0x1c]
mov byte [eax + esi], 0x80
inc esi
mov eax, dword [ebp + 8]
mov ebx, dword [ecx + 0x28]
dec eax
add eax, ebx
mov ecx, dword [ebp - 4]
add eax, edi
cdq
idiv ebx
mov dword [ebp + 0x24], eax
cmp esi, eax
jl 0x45d160
mov ecx, dword [ecx + 0x2c]
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x18]
add eax, ecx
dec edx
mov esi, dword [ebp + 0x28]
add eax, edx
inc esi
cdq
idiv ecx
mov ecx, dword [ebp - 4]
mov dword [ebp + 0x28], esi
cmp esi, eax
mov esi, dword [ebp + 8]
jl 0x45d140
push dword [ebp + 0x10]
call fcn.0047252e
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x24