Function at 0x10020780
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, 0x50
push esi
mov esi, ecx
mov dword [ebp - 0x24], 1
xorps xmm2, xmm2
mov dword [ebp - 4], esi
push edi
mov edi, edx
movss dword [ebp - 0x1c], xmm2
mov eax, dword [esi + 0x1c]
mov dword [ebp - 0x44], eax
mov eax, dword [esi + 0x20]
mov dword [ebp - 0x48], eax
mov eax, dword [ebx + 8]
mov dword [ebp - 8], edi
movss xmm1, dword [eax]
comiss xmm1, xmm2
jbe 0x10020822
mov eax, dword [edi + 0x1c]
mov edi, dword [edi + 4]
movzx edx, byte [eax + edi + 7]
movzx ecx, byte [eax + edi + 6]
mov eax, 0x100
cwde
movsx ecx, cx
imul ecx, eax
add dx, cx
mov ecx, dword [ebp - 8]
movsx esi, dx
mov eax, dword [ecx + 0x1c]
movzx edx, byte [eax + edi + 5]
movzx ecx, byte [eax + edi + 4]
mov eax, 0x100
cwde
movsx ecx, cx
imul ecx, eax
add dx, cx
movsx eax, dx
sub eax, esi
mov esi, dword [ebp - 4]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
jmp 0x10020849
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 4]
movzx ecx, byte [edx + eax + 0x12]
movzx eax, byte [edx + eax + 0x13]
shl ecx, 8
add ecx, eax
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
xorps xmm1, xmmword [0x10156550]
mov edx, dword [ebx + 8]
movss xmm4, dword [0x10155c78]
movaps xmm3, xmm4
movss dword [ebp - 0x10], xmm1
movzx edi, byte [edx + 0x14]
movzx ecx, byte [edx + 0x15]
mov eax, edi
shr eax, 0x1f
mov dword [esi + 0x1c], edi
movd xmm0, edi
cvtdq2pd xmm0, xmm0
mov dword [esi + 0x20], ecx
addsd xmm0, qword [eax*8 + 0x10156510]
mov eax, ecx
shr eax, 0x1f
cvtpd2ps xmm0, xmm0
divss xmm3, xmm0
movd xmm0, ecx
movss dword [ebp - 0x38], xmm3
cvtdq2pd xmm0, xmm0
addsd xmm0, qword [eax*8 + 0x10156510]
mov eax, 1
cvtpd2ps xmm0, xmm0
divss xmm4, xmm0
movss dword [ebp - 0x40], xmm4
movss xmm4, dword [0x10155c1c]
test edi, edi
jne 0x100208c8
movss dword [ebp - 0x18], xmm2
jmp 0x100208ed
movd xmm0, edi
movaps xmm3, xmm4
cvtdq2ps xmm0, xmm0
sub eax, edi
divss xmm3, xmm0
movd xmm0, eax
mov eax, 1
cvtdq2ps xmm0, xmm0
mulss xmm3, xmm0
movss dword [ebp - 0x18], xmm3
test ecx, ecx
je 0x10020911
movd xmm0, ecx
movaps xmm2, xmm4
cvtdq2ps xmm0, xmm0
sub eax, ecx
divss xmm2, xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm2, xmm0
movss dword [ebp - 0x1c], xmm2
xor ecx, ecx
mov dword [ebp - 0x20], ecx
cmp dword [edx + 0xc], ecx
jle 0x10020c1b
mov edi, dword [ebx + 0x10]
mov dword [ebp - 0x14], ecx
add edi, 8
nop dword [eax + eax]
cmp dword [edi + 4], 0
je 0x10020c00
movzx eax, word [edi - 4]
mov dword [ebp - 0x28], eax
test ax, ax
je 0x10020c00
movzx eax, word [edi - 2]
mov dword [ebp - 0x2c], eax
test ax, ax
je 0x10020c00
mov eax, dword [edx + 0x10]
add eax, dword [ebp - 0x14]
mov dword [ebp - 0x30], eax
mov eax, dword [edx + 8]
test eax, eax
jne 0x10020971
mov edx, dword [edx + 4]
add edx, ecx
jmp 0x10020974
mov edx, dword [eax + ecx*4]
mov ecx, dword [ebp - 8]
call fcn.1001b4b0
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0xc], eax
movzx eax, word [esi + 0x14]
add word [edi], ax
sub ecx, eax
add word [edi + 2], ax
mov word [edi - 4], cx
mov ecx, dword [ebp - 0x2c]
sub ecx, eax
mov word [edi - 2], cx
mov ecx, dword [ebp - 8]
mov edx, dword [ecx + 4]
mov eax, dword [ecx + 0x1c]
movzx esi, byte [eax + edx + 0x23]
movzx eax, byte [eax + edx + 0x22]
shl eax, 8
add esi, eax
mov eax, esi
mov esi, dword [ebp - 4]
cmp dword [ebp - 0xc], eax
jge 0x100209dc
mov eax, dword [ebp - 0xc]
lea edx, [edx + eax*4]
mov eax, 0x100
add edx, dword [ecx + 0x20]
cwde
movzx ecx, byte [edx]
movsx ecx, cx
imul ecx, eax
movzx eax, byte [edx + 1]
jmp 0x100209fb
lea esi, [edx + eax*4]
mov edx, dword [ecx + 0x20]
mov eax, 0x100
cwde
movzx ecx, byte [esi + edx - 4]
movsx ecx, cx
imul ecx, eax
movzx eax, byte [esi + edx - 3]
mov esi, dword [ebp - 4]
add cx, ax
mov edx, dword [ebp - 0xc]
movzx eax, cx
cwde
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x4c]
mov ecx, dword [ebp - 8]
push eax
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x34]
push eax
mov eax, dword [esi + 0x20]
sub esp, 8
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x10156510]
mov eax, dword [esi + 0x1c]
cvtpd2ps xmm3, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
mulss xmm3, xmm1
addsd xmm0, qword [eax*8 + 0x10156510]
cvtpd2ps xmm2, xmm0
mulss xmm2, xmm1
call fcn.1001d970
mov ecx, dword [esi + 0x20]
add esp, 0x18
mov edx, dword [esi + 0x1c]
mov eax, ecx
shr eax, 0x1f
mov esi, dword [esi + 0x10]
push dword [ebp - 0xc]
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
sub esp, 8
sub esp, 8
addsd xmm0, qword [eax*8 + 0x10156510]
mov eax, edx
shr eax, 0x1f
cvtpd2ps xmm0, xmm0
mulss xmm0, dword [ebp - 0x10]
movss dword [esp + 4], xmm0
movd xmm0, edx
cvtdq2pd xmm0, xmm0
addsd xmm0, qword [eax*8 + 0x10156510]
movzx eax, word [edi - 2]
sub eax, ecx
mov ecx, dword [ebp - 8]
inc eax
cvtpd2ps xmm0, xmm0
mulss xmm0, dword [ebp - 0x10]
movss dword [esp], xmm0
push esi
push eax
movzx eax, word [edi - 4]
sub eax, edx
movzx edx, word [edi + 2]
imul edx, esi
inc eax
mov esi, dword [ebp - 4]
push eax
movzx eax, word [edi]
add edx, eax
add edx, dword [esi + 0x24]
call fcn.10020050
mov eax, dword [esi + 0x1c]
add esp, 0x20
cmp eax, 1
jbe 0x10020b1d
mov esi, dword [esi + 0x10]
movzx ecx, word [edi + 2]
movzx edx, word [edi - 4]
push eax
movzx eax, word [edi - 2]
imul ecx, esi
push esi
mov esi, dword [ebp - 4]
push eax
movzx eax, word [edi]
add ecx, eax
add ecx, dword [esi + 0x24]
call fcn.100202f0
add esp, 0xc
mov eax, dword [esi + 0x20]
cmp eax, 1
jbe 0x10020b4d
mov esi, dword [esi + 0x10]
movzx ecx, word [edi + 2]
movzx edx, word [edi - 4]
push eax
movzx eax, word [edi - 2]
imul ecx, esi
push esi
push eax
movzx eax, word [edi]
add ecx, eax
mov eax, dword [ebp - 4]
add ecx, dword [eax + 0x24]
call fcn.10020540
add esp, 0xc
mov esi, dword [ebp - 0x30]
movzx eax, word [edi]
movd xmm0, dword [ebp - 0x2c]
movss xmm1, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x34]
cvtdq2ps xmm0, xmm0
mov word [esi], ax
movzx eax, word [edi + 2]
mov word [esi + 2], ax
movzx eax, word [edi]
add ax, word [edi - 4]
mulss xmm0, xmm1
mov edx, dword [ebp - 0x3c]
mov word [esi + 4], ax
movzx eax, word [edi + 2]
add ax, word [edi - 2]
movss dword [esi + 0x10], xmm0
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mov word [esi + 6], ax
mulss xmm0, dword [ebp - 0x38]
addss xmm0, dword [ebp - 0x18]
movss dword [esi + 8], xmm0
movd xmm0, edx
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [ebp - 0x40]
addss xmm0, dword [ebp - 0x1c]
movss dword [esi + 0xc], xmm0
movzx eax, word [edi - 4]
add eax, ecx
mov ecx, dword [ebp - 0x20]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [ebp - 0x38]
addss xmm0, dword [ebp - 0x18]
movss dword [esi + 0x14], xmm0
movzx eax, word [edi - 2]
add eax, edx
mov edx, dword [ebx + 8]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [ebp - 0x40]
addss xmm0, dword [ebp - 0x1c]
movss dword [esi + 0x18], xmm0
mov esi, dword [ebp - 4]
jmp 0x10020c07
mov dword [ebp - 0x24], 0
add dword [ebp - 0x14], 0x1c
inc ecx
add edi, 0x10
mov dword [ebp - 0x20], ecx
cmp ecx, dword [edx + 0xc]
jl 0x10020930
mov eax, dword [ebp - 0x44]
mov dword [esi + 0x1c], eax
mov eax, dword [ebp - 0x48]
mov dword [esi + 0x20], eax
mov eax, dword [ebp - 0x24]
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret