Function at 0x639f20
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x6b2ebe
mov eax, dword fs:[0]
push eax
sub esp, 0x34
mov eax, 0x1034
call fcn.00551470
mov eax, dword [0x73d6e0]
xor eax, esp
mov dword [esp + 0x1030], eax
push ebx
push esi
push edi
mov eax, dword [0x73d6e0]
xor eax, esp
push eax
lea eax, [esp + 0x1078]
mov dword fs:[0], eax
mov esi, ecx
mov dword [esp + 0x28], esi
mov eax, dword [0x74ce20]
test al, 1
jne 0x639f9e
or eax, 1
mov dword [0x74ce20], eax
mov dword [esp + 0x1080], 0
mov dword [0x74ce1c], 0x3b800000
mov dword [esp + 0x1080], 0xffffffff
cvttss2si ecx, dword [ebp + 8]
mov dword [esi], ecx
test ecx, ecx
jg 0x639fc7
mov eax, VariantInit
imul ecx
add edx, ecx
sar edx, 0x1e
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x7ffffffe
sub eax, ecx
inc eax
mov dword [esi], eax
cmp dword [esi], 0x7ffffffe
jle 0x639fd5
mov dword [esi], SysReAllocString
lea eax, [esi + 4]
mov ecx, 0x1f31d
xor edi, edi
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], ecx
xor ebx, ebx
jmp 0x63a005
mov ecx, 0x1f31d
xor ebx, ebx
jmp 0x63a005
mov ecx, 0x1f31d
mov byte [eax + ebx], bl
mov eax, dword [esi]
cdq
idiv ecx
imul eax, eax, 0xb14
imul ecx, edx, 0x41a7
sub ecx, eax
test ecx, ecx
jg 0x63a025
add ecx, 0x7fffffff
mov dword [esi], ecx
and ecx, 0x800001ff
jns 0x63a037
dec ecx
or ecx, 0xfffffe00
inc ecx
mov word [edi + esi + 0x104], cx
mov ecx, 0x1f31d
mov eax, dword [esi]
cdq
idiv ecx
imul eax, eax, 0xb14
imul ecx, edx, 0x41a7
sub ecx, eax
test ecx, ecx
jg 0x63a061
add ecx, 0x7fffffff
mov dword [esi], ecx
and ecx, 0x800001ff
jns 0x63a073
dec ecx
or ecx, 0xfffffe00
inc ecx
mov word [edi + esi + 0x106], cx
lea eax, [esi + 4]
inc ebx
add edi, 4
cmp ebx, 0x100
jl 0x63a000
lea eax, [esi + 4]
cmp edi, 0x1000
jl 0x639ff0
mov edi, 0xff
mov eax, dword [esi]
cdq
idiv dword [esp + 0x10]
movzx ebx, byte [esi + edi + 4]
imul eax, eax, 0xb14
imul edx, edx, 0x41a7
sub edx, eax
test edx, edx
jg 0x63a0c6
add edx, 0x7fffffff
mov dword [esi], edx
and edx, 0x800000ff
jns 0x63a0d8
dec edx
or edx, 0xffffff00
inc edx
mov al, byte [esi + edx + 4]
mov byte [esi + edi + 4], al
dec edi
mov byte [esi + edx + 4], bl
test edi, edi
jg 0x63a0a2
lea eax, [esp + 0x336]
sub eax, esi
lea edi, [esi + 0x106]
mov dword [esp + 0x10], eax
lea ebx, [esp + 0x3e]
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0x338]
sub eax, esi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x38], eax
mov edx, edi
mov edi, dword [esp + 0x38]
lea eax, [esp + 0x736]
sub eax, esi
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x738]
sub eax, esi
mov dword [esp + 0x34], eax
lea eax, [esp + 0xb36]
sub eax, esi
mov dword [esp + 0x24], eax
lea eax, [esp + 0xb38]
sub eax, esi
mov esi, 0x100
mov dword [esp + 0x30], eax
movzx eax, word [edx - 2]
lea edx, [edx + 4]
mov word [ebx - 2], ax
lea ebx, [ebx + 4]
movzx eax, word [edx - 4]
mov word [ebx - 4], ax
movzx eax, word [edx + 0x3fa]
mov word [ecx + edx - 4], ax
movzx eax, word [edx + 0x3fc]
mov ecx, dword [esp + 0x2c]
mov word [edi + edx - 4], ax
movzx eax, word [edx + 0x7fa]
mov word [ecx + edx - 4], ax
mov ecx, dword [esp + 0x34]
movzx eax, word [edx + 0x7fc]
mov word [ecx + edx - 4], ax
mov ecx, dword [esp + 0x24]
movzx eax, word [edx + 0xbfa]
mov word [ecx + edx - 4], ax
mov ecx, dword [esp + 0x30]
movzx eax, word [edx + 0xbfc]
mov word [ecx + edx - 4], ax
mov ecx, dword [esp + 0x10]
dec esi
jne 0x63a154
mov esi, dword [esp + 0x28]
mov edx, 0x100
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
lea ebx, [ebx]
movzx eax, byte [ecx]
lea ecx, [ecx + 1]
lea edi, [edi + 4]
movzx eax, word [esp + eax*4 + 0x3c]
mov word [edi - 6], ax
movzx eax, byte [ecx - 1]
movzx eax, word [esp + eax*4 + 0x3e]
mov word [edi - 4], ax
movzx eax, byte [ecx - 1]
movzx eax, word [esp + eax*4 + 0x43c]
mov word [edi + 0x3fa], ax
movzx eax, byte [ecx - 1]
movzx eax, word [esp + eax*4 + 0x43e]
mov word [edi + 0x3fc], ax
movzx eax, byte [ecx - 1]
movzx eax, word [esp + eax*4 + 0x83c]
mov word [edi + 0x7fa], ax
movzx eax, byte [ecx - 1]
movzx eax, word [esp + eax*4 + 0x83e]
mov word [edi + 0x7fc], ax
movzx eax, byte [ecx - 1]
movzx eax, word [esp + eax*4 + 0xc3c]
mov word [edi + 0xbfa], ax
movzx eax, byte [ecx - 1]
movzx eax, word [esp + eax*4 + 0xc3e]
mov word [edi + 0xbfc], ax
dec edx
jne 0x63a1e0
lea edi, [esi + 0x1104]
mov dword [esp + 0x10], 4
add esi, 0x104
lea esp, [esp]
mov ebx, 0x100
movzx eax, word [esi]
mov ecx, edi
sub eax, 0x100
movd xmm0, eax
movzx eax, word [esi + 2]
cvtdq2ps xmm0, xmm0
sub eax, 0x100
mulss xmm0, dword [0x74ce1c]
movss dword [esp + 0x1c], xmm0
movd xmm0, eax
mov eax, dword [esp + 0x1c]
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [0x74ce1c]
mov dword [edi], eax
movss dword [esp + 0x20], xmm0
mov eax, dword [esp + 0x20]
mov dword [edi + 4], eax
call fcn.00594ee0
movss xmm0, dword [edi]
sub esp, 8
addss xmm0, dword [0x6b7e70]
mulss xmm0, dword [0x6d5040]
addss xmm0, dword [0x6f8778]
cvtps2pd xmm0, xmm0
movsd qword [esp + 0x1c], xmm0
fld qword [esp + 0x1c]
fstp qword [esp]
call fcn.005515c0
fstp qword [esp + 0x1c]
movsd xmm0, qword [esp + 0x1c]
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
mov word [esi], ax
movss xmm0, dword [edi + 4]
addss xmm0, dword [0x6b7e70]
mulss xmm0, dword [0x6d5040]
addss xmm0, dword [0x6f8778]
cvtps2pd xmm0, xmm0
movsd qword [esp + 0x1c], xmm0
fld qword [esp + 0x1c]
fstp qword [esp]
call fcn.005515c0
fstp qword [esp + 0x1c]
movsd xmm0, qword [esp + 0x1c]
add esp, 8
cvtpd2ps xmm0, xmm0
add edi, 8
cvttss2si eax, xmm0
mov word [esi + 2], ax
add esi, 4
dec ebx
jne 0x63a295
dec dword [esp + 0x10]
jne 0x63a290
mov ecx, dword [esp + 0x1078]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x1030]
xor ecx, esp
call fcn.005472b9
mov esp, ebp
pop ebp
ret 4