Function at 0x467500
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x40
push esi
mov esi, dword [ebp + 8]
push edi
movzx eax, word [esi + 4]
mov ecx, eax
mov dword [esp + 0x1c], eax
movzx eax, ax
mov dword [esp + 0x14], eax
movzx eax, word [esi + 6]
movzx edx, ax
mov edi, eax
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x20], edx
mov edx, dword [ebp + 0xc]
cmp eax, 1
jne 0x4675b4
mov eax, dword [esi + 8]
xor ecx, ecx
mov dword [esp + 0xc], ecx
movzx edi, ax
test eax, eax
je 0x46759b
nop dword [eax + eax]
mov edi, dword [esi + 0xc]
sub edi, 1
mov dword [esp + 0x10], 0
js 0x467587
mov eax, dword [esi + 0x10]
mov edx, dword [eax + ecx*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x10]
mov ecx, dword [eax + ecx*4]
mov al, byte [edi + edx]
mov edx, dword [esp + 0x10]
mov byte [edx + ecx], al
inc edx
sub edi, 1
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x10], edx
jns 0x467560
mov eax, dword [esi + 8]
inc ecx
mov dword [esp + 0xc], ecx
movzx edx, ax
cmp ecx, eax
jb 0x467550
mov edi, edx
mov edx, dword [ebp + 0xc]
sub edi, dword [esp + 0x1c]
mov esi, edx
mov eax, dword [esp + 0x20]
dec edi
mov edx, dword [ebp + 0xc]
movzx ecx, ax
movzx eax, di
jmp 0x467820
cmp eax, 2
jne 0x467634
mov eax, dword [esi + 0xc]
xor ecx, ecx
mov dword [esp + 0xc], ecx
movzx edi, ax
test eax, eax
je 0x467623
nop dword [eax]
mov edi, dword [esi + 8]
sub edi, 1
js 0x46760f
xor ecx, ecx
mov dword [esp + 0x10], ecx
nop
mov eax, dword [esi + 0x10]
mov edx, dword [eax + edi*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x10]
mov ecx, dword [ecx + eax]
mov eax, dword [esp + 0xc]
mov al, byte [eax + edx]
mov edx, dword [esp + 0xc]
mov byte [edx + ecx], al
mov ecx, dword [esp + 0x10]
add ecx, 4
sub edi, 1
mov dword [esp + 0x10], ecx
jns 0x4675e0
mov ecx, edx
mov eax, dword [esi + 0xc]
inc ecx
mov dword [esp + 0xc], ecx
movzx edx, ax
cmp ecx, eax
jb 0x4675d0
mov edi, edx
mov edx, dword [ebp + 0xc]
sub edi, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
dec edi
movzx ecx, di
jmp 0x46781b
mov dword [esp + 0x24], ecx
mov ecx, edi
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 0xc]
shr ecx, 1
dec ecx
mov dword [esp + 0x20], ecx
mov ecx, dword [edx + 8]
shr ecx, 1
dec ecx
mov dword [esp + 0x1c], ecx
sub eax, 3
je 0x467673
sub eax, 1
je 0x46766c
sub eax, 1
je 0x467665
xor eax, eax
jmp 0x467678
mov eax, 0x10e
jmp 0x467678
mov eax, 0xb4
jmp 0x467678
mov eax, 0x5a
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x601398]
divsd xmm0, qword [0x6013e8]
movsd qword [esp + 0x40], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_cos_precise
cvtsd2ss xmm0, xmm0
movss dword [esp + 0x18], xmm0
movsd xmm0, qword [esp + 0x40]
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sin_precise
xorps xmm0, xmmword [0x601760]
cvtsd2ss xmm0, xmm0
movss dword [esp + 0x30], xmm0
movsd xmm0, qword [esp + 0x40]
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sin_precise
xorps xmm2, xmm2
xor ecx, ecx
cvtsd2ss xmm2, xmm0
mov dword [esp + 0x10], ecx
movss dword [esp + 0x40], xmm2
cmp dword [esi + 0xc], ecx
jle 0x46780d
mov edi, dword [esi + 8]
nop dword [eax + eax]
xor edx, edx
mov dword [esp + 0x14], edx
test edi, edi
jle 0x4677ff
mov eax, dword [esp + 0x24]
movzx eax, ax
sub ecx, eax
mov eax, dword [esp + 0x28]
movzx eax, ax
neg eax
mov dword [esp + 0xc], eax
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
movaps xmm1, xmm0
mulss xmm1, xmm2
movss xmm2, dword [esp + 0x18]
mulss xmm0, xmm2
movss dword [esp + 0x3c], xmm1
movss dword [esp + 0x34], xmm0
nop dword [eax + eax]
movd xmm0, eax
mov eax, dword [esi + 0x10]
cvtdq2ps xmm0, xmm0
push ecx
mov eax, dword [eax + edx*4]
mov dword [esp + 0x3c], eax
mulss xmm0, xmm2
addss xmm0, xmm1
movss dword [esp + 0x30], xmm0
fld dword [esp + 0x30]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movd xmm0, dword [esp + 0x10]
mov eax, dword [ebp + 0xc]
cvtdq2ps xmm0, xmm0
mov esi, dword [eax + 0x10]
fstp dword [esp + 0x30]
mulss xmm0, dword [esp + 0x34]
cvttss2si edi, dword [esp + 0x30]
addss xmm0, dword [esp + 0x38]
add edi, dword [esp + 0x20]
movss dword [esp + 0x30], xmm0
fld dword [esp + 0x30]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
mov eax, dword [esp + 0x3c]
add esp, 4
mov edx, dword [esp + 0x10]
movss xmm1, dword [esp + 0x3c]
movss xmm2, dword [esp + 0x18]
fstp dword [esp + 0x2c]
cvttss2si ecx, dword [esp + 0x2c]
mov al, byte [edx + eax]
mov edx, dword [esp + 0x20]
add ecx, dword [esi + edi*4]
mov esi, dword [ebp + 8]
mov byte [ecx + edx], al
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0xc]
inc edx
mov edi, dword [esi + 8]
inc eax
mov dword [esp + 0x14], edx
mov dword [esp + 0xc], eax
cmp edx, edi
jl 0x467740
movss xmm2, dword [esp + 0x40]
mov ecx, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x10], ecx
cmp ecx, dword [esi + 0xc]
jl 0x4676f0
mov eax, dword [esp + 0x1c]
mov edx, dword [ebp + 0xc]
movzx ecx, ax
mov eax, dword [esp + 0x20]
mov esi, edx
movzx eax, ax
mov dword [esp + 0xc], ecx
mov edi, 6
mov ecx, 4
mov word [ecx + edx], ax
mov ecx, dword [esp + 0xc]
mov word [esi + edi], cx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc