Function at 0x46cbb0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 0x2c
mov ecx, dword [esp + 0x34]
push esi
push edi
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0x40]
lea eax, [edi + edi*4]
lea edx, [ecx + eax*8 - 0x28]
xor eax, eax
cmp edi, eax
mov dword [esp + 0x3c], eax
je 0x46cf08
push ebx
add ecx, 0x20
mov dword [esp + 0x14], edi
push ebp
fld dword [0x753ba4]
fsub dword [edx + 8]
fstp dword [esp + 0x40]
fld dword [0x753ba4]
fsub dword [ecx - 0x18]
mov ebx, dword [esp + 0x40]
fstp dword [esp + 0x48]
mov edi, dword [esp + 0x48]
mov ebp, edi
or ebp, ebx
jge 0x46cee8
mov ebp, edi
xor ebp, ebx
jge 0x46cea9
fld dword [edx + 8]
fsub dword [ecx - 0x18]
xor ebx, ebx
mov dword [esp + 0x20], eax
xor eax, eax
fdivr dword [esp + 0x48]
fld dword [edx + 0x20]
fsub dword [ecx]
fmul st(1)
fadd dword [ecx]
fmul dword [0x753c68]
fadd dword [0x753bfc]
fstp dword [esi]
fld dword [edx + 0x24]
fsub dword [ecx + 4]
fmul st(1)
fadd dword [ecx + 4]
fmul dword [0x753c68]
fadd dword [0x753c00]
fstp dword [esi + 4]
mov edi, dword [0x753c28]
mov dword [esi + 0xc], edi
fld dword [edx + 0x18]
fsub dword [ecx - 8]
fmul st(1)
fadd dword [ecx - 8]
fmul dword [esi + 0xc]
fstp dword [esi + 0x18]
fld dword [edx + 0x1c]
fsub dword [ecx - 4]
fmul st(1)
fadd dword [ecx - 4]
fmul dword [esi + 0xc]
fstp dword [esi + 0x1c]
mov bl, byte [ecx - 0xd]
mov edi, dword [ecx - 0x10]
mov dword [esp + 0x40], ebx
mov bl, byte [ecx - 0xe]
fild dword [esp + 0x40]
and ebx, 0xff
mov al, byte [edx + 0x13]
mov dword [esp + 0x40], ebx
xor ebx, ebx
mov bl, byte [ecx - 0xf]
and edi, 0xff
fild dword [esp + 0x40]
mov dword [esp + 0x40], ebx
mov dword [esp + 0x1c], edi
fild dword [esp + 0x40]
mov dword [esp + 0x40], eax
mov al, byte [edx + 0x12]
fstp dword [esp + 0x10]
fild qword [esp + 0x1c]
fstp dword [esp + 0x14]
fild dword [esp + 0x40]
fsub st(2)
fmul st(3)
fadd st(2)
fadd dword [0x4a72e4]
fstp dword [esp + 0x40]
mov edi, dword [esp + 0x40]
and edi, 0x3fffff
and eax, 0xff
mov dword [esp + 0x40], eax
fild dword [esp + 0x40]
fsub st(1)
fmul st(3)
xor eax, eax
mov al, byte [edx + 0x11]
fadd st(1)
shl edi, 8
fadd dword [0x4a72e4]
fstp dword [esp + 0x40]
mov ebp, dword [esp + 0x40]
mov dword [esp + 0x40], eax
fstp st(0)
fstp st(0)
fild dword [esp + 0x40]
mov eax, dword [edx + 0x10]
and ebp, 0x3fffff
and eax, 0xff
or edi, ebp
fsub dword [esp + 0x10]
mov dword [esp + 0x24], eax
xor eax, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], eax
fmul st(1)
shl edi, 8
fadd dword [esp + 0x10]
fadd dword [0x4a72e4]
fstp dword [esp + 0x40]
fild qword [esp + 0x24]
mov ebx, dword [esp + 0x40]
and ebx, 0x3fffff
fsub dword [esp + 0x14]
or edi, ebx
shl edi, 8
fmul st(1)
fadd dword [esp + 0x14]
fadd dword [0x4a72e4]
fstp dword [esp + 0x40]
mov ebx, dword [esp + 0x40]
and ebx, 0x3fffff
or edi, ebx
xor ebx, ebx
mov dword [esi + 0x10], edi
mov bl, byte [ecx - 9]
mov dword [esp + 0x40], ebx
mov bl, byte [ecx - 0xa]
fild dword [esp + 0x40]
and ebx, 0xff
mov edi, dword [ecx - 0xc]
mov dword [esp + 0x40], ebx
xor ebx, ebx
mov bl, byte [ecx - 0xb]
and edi, 0xff
fild dword [esp + 0x40]
mov dword [esp + 0x40], ebx
mov dword [esp + 0x2c], edi
fild dword [esp + 0x40]
xor ebx, ebx
mov bl, byte [edx + 0x17]
fstp dword [esp + 0x14]
fild qword [esp + 0x2c]
mov dword [esp + 0x40], ebx
mov bl, byte [edx + 0x16]
fstp dword [esp + 0x10]
fild dword [esp + 0x40]
fsub st(2)
fmul st(3)
fadd st(2)
fadd dword [0x4a72e4]
fstp dword [esp + 0x40]
mov edi, dword [esp + 0x40]
and edi, 0x3fffff
and ebx, 0xff
mov dword [esp + 0x40], ebx
xor ebx, ebx
fild dword [esp + 0x40]
mov bl, byte [edx + 0x15]
mov edx, dword [edx + 0x14]
and edx, 0xff
mov dword [esp + 0x38], eax
fsub st(1)
mov dword [esp + 0x34], edx
add esi, 0x28
shl edi, 8
fmul st(3)
fadd st(1)
fadd dword [0x4a72e4]
fstp dword [esp + 0x40]
mov ebp, dword [esp + 0x40]
mov dword [esp + 0x40], ebx
fstp st(0)
fstp st(0)
fild dword [esp + 0x40]
and ebp, 0x3fffff
or edi, ebp
fsub dword [esp + 0x14]
shl edi, 8
fmul st(1)
fadd dword [esp + 0x14]
fadd dword [0x4a72e4]
fstp dword [esp + 0x40]
fild qword [esp + 0x34]
mov ebx, dword [esp + 0x40]
and ebx, 0x3fffff
fsub dword [esp + 0x10]
or edi, ebx
shl edi, 8
fmul st(1)
fadd dword [esp + 0x10]
fadd dword [0x4a72e4]
fstp dword [esp + 0x40]
mov edx, dword [esp + 0x40]
and edx, 0x3fffff
or edi, edx
mov edx, dword [esp + 0x44]
mov dword [esi - 0x14], edi
mov edi, dword [esp + 0x48]
inc edx
fstp st(0)
mov dword [esp + 0x44], edx
cmp edi, eax
jge 0x46cee8
mov edx, dword [ecx - 0x20]
mov dword [esi], edx
mov edx, dword [ecx - 0x1c]
mov dword [esi + 4], edx
mov edx, dword [ecx - 0x14]
mov dword [esi + 0xc], edx
add esi, 0x28
fld dword [ecx - 8]
fmul dword [ecx - 0x14]
fstp dword [esi - 0x10]
fld dword [ecx - 4]
fmul dword [ecx - 0x14]
fstp dword [esi - 0xc]
mov edx, dword [ecx - 0x10]
mov dword [esi - 0x18], edx
mov edx, dword [ecx - 0xc]
mov dword [esi - 0x14], edx
mov edx, dword [esp + 0x44]
inc edx
mov dword [esp + 0x44], edx
mov edi, dword [esp + 0x18]
lea edx, [ecx - 0x20]
add ecx, 0x28
dec edi
mov dword [esp + 0x18], edi
jne 0x46cbdf
mov eax, dword [esp + 0x44]
pop ebp
cmp eax, 3
pop ebx
jge 0x46cf0a
xor eax, eax
pop edi
pop esi
add esp, 0x2c
ret