Function at 0x100caa00
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x38
mov eax, dword [0x102d2084]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, ecx
mov ecx, dword [ebx + 0xc]
mov dword [ebp - 0x28], esi
push edi
cmp ecx, 3
jl 0x100caffd
test byte [esi + 0x24], 2
mov eax, dword [esi + 0x28]
movss xmm0, dword [eax]
movss dword [ebp - 0x1c], xmm0
movss xmm0, dword [eax + 4]
movss dword [ebp - 0x20], xmm0
je 0x100cae69
lea eax, [ecx + ecx]
push eax
mov dword [ebp - 0x38], eax
lea eax, [ecx*8 - 6]
add eax, ecx
mov ecx, esi
push eax
call fcn.100c9960
mov eax, dword [esi + 0x34]
mov edi, 2
mov dword [ebp - 0x18], eax
lea ecx, [eax + 1]
mov dword [ebp - 0x24], ecx
movzx ecx, ax
mov dword [ebp - 0x10], ecx
mov eax, dword [esi + 0x3c]
lea edx, [ecx + edi*2]
inc edi
mov word [eax], cx
lea ecx, [edx - 2]
mov eax, dword [esi + 0x3c]
mov word [eax + 2], cx
mov eax, dword [esi + 0x3c]
mov ecx, dword [ebp - 0x10]
mov word [eax + 4], dx
add dword [esi + 0x3c], 6
cmp edi, dword [ebx + 0xc]
jl 0x100caa85
mov edi, dword [ebx + 0xc]
lea eax, [edi*8]
call fcn.101f17e0
mov edx, dword [ebx + 8]
lea eax, [edi - 1]
movss xmm5, dword [0x102baf90]
mov esi, esp
movss xmm6, dword [0x102ba7b4]
xorps xmm4, xmm4
mov dword [ebp - 0x14], eax
shl eax, 3
xor ecx, ecx
mov dword [ebp - 8], edi
movss xmm2, dword [ecx + edx]
lea edi, [edx + 4]
movss xmm3, dword [edx + ecx + 4]
subss xmm2, dword [eax + edx]
subss xmm3, dword [eax + edx + 4]
mov dword [ebp - 0xc], edi
movaps xmm1, xmm2
movaps xmm0, xmm3
mulss xmm1, xmm2
mulss xmm0, xmm3
addss xmm0, xmm1
comiss xmm0, xmm4
jbe 0x100cab2b
call fcn.1000da70
movaps xmm1, xmm6
divss xmm1, xmm0
movaps xmm0, xmm1
mulss xmm3, xmm1
mulss xmm2, xmm0
xorps xmm2, xmm5
movss dword [eax + esi], xmm3
movss dword [eax + esi + 4], xmm2
mov eax, ecx
add ecx, 8
sub dword [ebp - 8], 1
jne 0x100caae1
mov eax, dword [ebp - 0x18]
xor ecx, ecx
movss xmm7, dword [0x102ba73c]
movzx eax, ax
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x24]
movzx eax, ax
mov dword [ebp - 0x18], eax
mov eax, esi
sub esi, edx
mov dword [ebp - 8], ecx
mov dword [ebp - 0x24], esi
mov edx, edi
mov esi, dword [ebp - 0x28]
nop
movss xmm2, dword [eax + ecx*8]
movaps xmm5, xmm6
mov edi, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x14]
movss xmm3, dword [edi + edx]
addss xmm2, dword [eax + ecx*8]
addss xmm3, dword [eax + ecx*8 + 4]
mov eax, dword [esi + 0x38]
movaps xmm0, xmm2
mulss xmm0, xmm2
movaps xmm1, xmm3
mulss xmm1, xmm3
addss xmm1, xmm0
movss xmm0, dword [0x102ba6f8]
mulss xmm1, xmm0
maxss xmm1, xmm7
divss xmm5, xmm1
movaps xmm1, xmm5
mulss xmm5, xmm3
mulss xmm1, xmm2
mulss xmm5, xmm0
mulss xmm1, xmm0
movss xmm0, dword [edx - 4]
movss dword [ebp - 0x30], xmm5
subss xmm0, xmm1
movss dword [ebp - 0x2c], xmm1
movss dword [eax], xmm0
movss xmm0, dword [edx]
mov eax, dword [esi + 0x38]
subss xmm0, xmm5
movss dword [eax + 4], xmm0
mov eax, dword [esi + 0x38]
movss xmm0, dword [ebp - 0x1c]
movss dword [eax + 8], xmm0
movss xmm0, dword [ebp - 0x20]
movss dword [eax + 0xc], xmm0
mov eax, dword [esi + 0x38]
movss xmm2, dword [eax]
mov eax, dword [ebx + 0x10]
subss xmm2, dword [eax + 0x20]
movss xmm0, dword [eax + 0x10]
subss xmm0, dword [eax]
movss xmm3, dword [eax + 0x14]
movss xmm5, dword [eax + 0x18]
divss xmm2, dword [eax + 0x28]
movss xmm7, dword [eax + 0x1c]
subss xmm3, dword [eax + 4]
subss xmm5, dword [eax + 8]
subss xmm7, dword [eax + 0xc]
minss xmm2, xmm6
mulss xmm0, xmm2
mulss xmm3, xmm2
addss xmm0, dword [eax]
mulss xmm5, xmm2
addss xmm3, dword [eax + 4]
mulss xmm7, xmm2
comiss xmm4, xmm0
addss xmm5, dword [eax + 8]
addss xmm7, dword [eax + 0xc]
jbe 0x100cac74
movaps xmm0, xmm4
jmp 0x100cac78
minss xmm0, xmm6
movss xmm2, dword [0x102baa58]
movss xmm1, dword [0x102ba73c]
mulss xmm0, xmm2
addss xmm0, xmm1
cvttss2si ecx, xmm0
shl ecx, 0x10
comiss xmm4, xmm3
jbe 0x100caca1
movaps xmm3, xmm4
jmp 0x100caca5
minss xmm3, xmm6
mulss xmm3, xmm2
addss xmm3, xmm1
cvttss2si eax, xmm3
shl eax, 8
or ecx, eax
comiss xmm4, xmm5
jbe 0x100cacc0
movaps xmm5, xmm4
jmp 0x100cacc4
minss xmm5, xmm6
mulss xmm5, xmm2
addss xmm5, xmm1
cvttss2si eax, xmm5
or ecx, eax
comiss xmm4, xmm7
jbe 0x100cacdc
movaps xmm7, xmm4
jmp 0x100cace0
minss xmm7, xmm6
movss xmm0, dword [ebp - 0x2c]
mulss xmm7, xmm2
addss xmm7, xmm1
cvttss2si eax, xmm7
shl eax, 0x18
or eax, ecx
mov ecx, dword [esi + 0x38]
mov dword [ecx + 0x10], eax
addss xmm0, dword [edx - 4]
mov eax, dword [esi + 0x38]
movss dword [eax + 0x14], xmm0
movss xmm0, dword [ebp - 0x30]
addss xmm0, dword [edx]
mov eax, dword [esi + 0x38]
movss dword [eax + 0x18], xmm0
mov eax, dword [esi + 0x38]
movss xmm0, dword [ebp - 0x1c]
movss dword [eax + 0x1c], xmm0
movss xmm0, dword [ebp - 0x20]
movss dword [eax + 0x20], xmm0
mov eax, dword [ebx + 0x10]
mov edx, dword [esi + 0x38]
movss xmm0, dword [eax + 0x10]
movss xmm2, dword [edx + 0x14]
subss xmm2, dword [eax + 0x20]
subss xmm0, dword [eax]
movss xmm3, dword [eax + 0x14]
movss xmm5, dword [eax + 0x18]
subss xmm3, dword [eax + 4]
divss xmm2, dword [eax + 0x28]
subss xmm5, dword [eax + 8]
minss xmm2, xmm6
mulss xmm0, xmm2
mulss xmm3, xmm2
addss xmm0, dword [eax]
mulss xmm5, xmm2
addss xmm3, dword [eax + 4]
comiss xmm4, xmm0
addss xmm5, dword [eax + 8]
jbe 0x100cad8b
movaps xmm0, xmm4
jmp 0x100cad8f
minss xmm0, xmm6
movss xmm1, dword [0x102baa58]
movss xmm7, dword [0x102ba73c]
mulss xmm0, xmm1
addss xmm0, xmm7
cvttss2si ecx, xmm0
shl ecx, 0x10
comiss xmm4, xmm3
jbe 0x100cadb8
movaps xmm3, xmm4
jmp 0x100cadbc
minss xmm3, xmm6
mulss xmm3, xmm1
addss xmm3, xmm7
cvttss2si eax, xmm3
shl eax, 8
or ecx, eax
comiss xmm4, xmm5
jbe 0x100cadd7
movaps xmm5, xmm4
jmp 0x100caddb
minss xmm5, xmm6
mulss xmm5, xmm1
addss xmm5, xmm7
cvttss2si eax, xmm5
or eax, ecx
mov ecx, dword [ebp - 0x34]
and eax, 0xffffff
mov dword [edx + 0x24], eax
mov eax, dword [ebp - 8]
add dword [esi + 0x38], 0x28
lea edx, [ecx + eax*2]
mov eax, dword [esi + 0x3c]
mov word [eax], dx
mov eax, dword [ebp - 0x14]
lea ecx, [ecx + eax*2]
mov eax, dword [esi + 0x3c]
mov word [eax + 2], cx
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x18]
lea ecx, [ecx + eax*2]
mov eax, dword [esi + 0x3c]
mov word [eax + 4], cx
mov eax, dword [esi + 0x3c]
mov word [eax + 6], cx
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x18]
lea ecx, [ecx + eax*2]
mov eax, dword [esi + 0x3c]
mov word [eax + 8], cx
mov eax, dword [esi + 0x3c]
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x14], ecx
inc ecx
mov dword [ebp - 8], ecx
mov word [eax + 0xa], dx
mov eax, esp
mov edx, dword [ebp - 0xc]
add dword [esi + 0x3c], 0xc
add edx, 8
mov dword [ebp - 0xc], edx
cmp ecx, dword [ebx + 0xc]
jl 0x100cab70
mov eax, dword [ebp - 0x38]
jmp 0x100caff7
push ecx
add ecx, 0xfffffffe
lea eax, [ecx + ecx*2]
mov ecx, esi
push eax
call fcn.100c9960
mov eax, dword [ebx + 8]
xorps xmm6, xmm6
mov ecx, dword [ebx + 0xc]
mov edi, dword [ebx + 0x10]
movss xmm7, dword [0x102ba7b4]
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x10], ecx
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov eax, dword [esi + 0x38]
movss xmm0, dword [ebp - 0x1c]
mov dword [eax], ecx
mov dword [eax + 4], edx
mov eax, dword [esi + 0x38]
movss dword [eax + 8], xmm0
movss xmm0, dword [ebp - 0x20]
movss dword [eax + 0xc], xmm0
mov eax, dword [ebp - 0xc]
movss xmm0, dword [edi + 0x10]
subss xmm0, dword [edi]
movss xmm3, dword [edi + 0x14]
movss xmm2, dword [eax]
subss xmm2, dword [edi + 0x20]
movss xmm4, dword [edi + 0x18]
movss xmm5, dword [edi + 0x1c]
subss xmm3, dword [edi + 4]
subss xmm4, dword [edi + 8]
divss xmm2, dword [edi + 0x28]
subss xmm5, dword [edi + 0xc]
minss xmm2, xmm7
mulss xmm0, xmm2
mulss xmm3, xmm2
addss xmm0, dword [edi]
mulss xmm4, xmm2
addss xmm3, dword [edi + 4]
mulss xmm5, xmm2
comiss xmm6, xmm0
addss xmm4, dword [edi + 8]
addss xmm5, dword [edi + 0xc]
jbe 0x100caf1f
movaps xmm0, xmm6
jmp 0x100caf23
minss xmm0, xmm7
movss xmm2, dword [0x102baa58]
movss xmm1, dword [0x102ba73c]
mulss xmm0, xmm2
addss xmm0, xmm1
cvttss2si edx, xmm0
shl edx, 0x10
comiss xmm6, xmm3
jbe 0x100caf4c
movaps xmm3, xmm6
jmp 0x100caf50
minss xmm3, xmm7
mulss xmm3, xmm2
addss xmm3, xmm1
cvttss2si eax, xmm3
shl eax, 8
or edx, eax
comiss xmm6, xmm4
jbe 0x100caf6b
movaps xmm4, xmm6
jmp 0x100caf6f
minss xmm4, xmm7
mulss xmm4, xmm2
addss xmm4, xmm1
cvttss2si eax, xmm4
or edx, eax
comiss xmm6, xmm5
jbe 0x100caf87
movaps xmm5, xmm6
jmp 0x100caf8b
minss xmm5, xmm7
mov eax, dword [esi + 0x38]
mulss xmm5, xmm2
addss xmm5, xmm1
cvttss2si ecx, xmm5
shl ecx, 0x18
or ecx, edx
mov dword [eax + 0x10], ecx
mov eax, dword [ebp - 0xc]
add dword [esi + 0x38], 0x14
add eax, 8
sub dword [ebp - 0x10], 1
mov dword [ebp - 0xc], eax
jne 0x100cae92
mov edi, 2
nop
mov ecx, dword [esi + 0x3c]
mov ax, word [esi + 0x34]
movzx edx, di
inc edi
mov word [ecx], ax
movzx ecx, word [esi + 0x34]
mov eax, dword [esi + 0x3c]
dec cx
add cx, dx
mov word [eax + 2], cx
mov eax, dword [esi + 0x3c]
movzx ecx, word [esi + 0x34]
add cx, dx
mov word [eax + 4], cx
add dword [esi + 0x3c], 6
mov eax, dword [ebx + 0xc]
cmp edi, eax
jl 0x100cafc0
movzx eax, ax
add dword [esi + 0x34], eax
lea esp, [ebp - 0x40]
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.101f065f
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0xc