Function at 0x7c61c0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
test esi, esi
sete al
test ebx, ebx
sete cl
or cl, al
test edx, edx
sete al
or al, cl
jne 0x7c6564
mov eax, dword [0xa5ad18]
mov dword [esp + 0xc], eax
add dword [esi + 8], edx
jae 0x7c620b
mov eax, dword [esi + 4]
inc eax
mov dword [0xa5ad10], 0x507a5b66
mov dword [esi + 4], eax
mov ecx, dword [esi]
lea eax, [ecx - 0x40]
neg eax
cmp eax, edx
cmovae eax, edx
cmp ecx, 0x40
je 0x7c633b
lea edi, [esi + ecx]
add edi, 0x2c
cmp eax, 1
mov edx, eax
adc edx, 0
mov dword [esp], edx
xor edx, edx
cmp eax, 8
mov dword [esp + 4], ecx
jb 0x7c62c5
mov ecx, dword [esp + 4]
add ecx, esi
sub ecx, ebx
add ecx, 0x2c
cmp ecx, 0x20
mov ecx, dword [esp + 4]
jb 0x7c62c5
xor edx, edx
cmp eax, 0x20
jb 0x7c629d
mov ebp, dword [esp]
and ebp, 0xffffffe0
add ecx, esi
add ecx, 0x3c
xor edx, edx
nop dword [eax + eax]
movdqu xmm0, xmmword [ebx + edx]
movdqu xmm1, xmmword [ebx + edx + 0x10]
movdqu xmmword [ecx + edx - 0x10], xmm0
movdqu xmmword [ecx + edx], xmm1
add edx, 0x20
cmp ebp, edx
jne 0x7c6270
cmp eax, ebp
je 0x7c633b
mov edx, ebp
test byte [esp], 0x18
je 0x7c62c5
mov ecx, edx
mov edx, dword [esp]
and edx, 0xfffffff8
nop word cs:[eax + eax]
movq xmm0, qword [ebx + ecx]
movq qword [edi + ecx], xmm0
add ecx, 8
cmp edx, ecx
jne 0x7c62b0
cmp eax, edx
je 0x7c633b
mov ebp, eax
mov ecx, dword [esp]
mov dword [esp + 8], edx
and ecx, 3
je 0x7c62eb
neg ecx
mov edx, dword [esp + 8]
nop dword [eax]
movzx eax, byte [ebx + edx]
mov byte [edi + edx], al
inc edx
inc ecx
jne 0x7c62e0
mov eax, dword [esp + 8]
sub eax, dword [esp]
cmp eax, 0xfffffffc
mov eax, ebp
mov ecx, dword [esp + 4]
ja 0x7c633b
add ecx, esi
add ecx, 0x2f
nop word cs:[eax + eax]
movzx eax, byte [ebx + edx]
mov byte [ecx + edx - 3], al
movzx eax, byte [ebx + edx + 1]
mov byte [ecx + edx - 2], al
movzx eax, byte [ebx + edx + 2]
mov byte [ecx + edx - 1], al
movzx eax, byte [ebx + edx + 3]
mov byte [ecx + edx], al
mov eax, ebp
add edx, 4
cmp ebp, edx
jne 0x7c6310
mov edx, eax
mov eax, dword [esi]
add eax, edx
mov dword [esi], eax
cmp eax, 0x40
setne al
movzx ecx, byte [0xa8c591]
not cl
test cl, al
mov ebp, dword [esp + 0x2c]
jne 0x7c6564
lea edi, [esi + 0x2c]
add ebx, edx
sub ebp, edx
xor dword [esp + 0xc], 0x962b6018
jmp 0x7c6381
mov dword [esi], eax
mov ebp, ecx
sub ebp, eax
add ebx, eax
cmp ecx, 0x3f
jbe 0x7c6564
movdqu xmm1, xmmword [esi + 0x2c]
movdqu xmm0, xmmword [esi + 0x3c]
movdqa xmm2, xmm1
pxor xmm3, xmm3
punpckhbw xmm2, xmm3
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpcklbw xmm1, xmm3
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm1, xmm2
movdqu xmmword [esi + 0x2c], xmm1
movdqa xmm1, xmm0
punpckhbw xmm1, xmm3
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
punpcklbw xmm0, xmm3
pshuflw xmm0, xmm0, 0x1b
pshufhw xmm0, xmm0, 0x1b
packuswb xmm0, xmm1
movdqu xmmword [esi + 0x3c], xmm0
movdqu xmm0, xmmword [esi + 0x4c]
movdqa xmm1, xmm0
punpckhbw xmm1, xmm3
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
punpcklbw xmm0, xmm3
pshuflw xmm0, xmm0, 0x1b
pshufhw xmm0, xmm0, 0x1b
packuswb xmm0, xmm1
movdqu xmmword [esi + 0x4c], xmm0
movdqu xmm0, xmmword [esi + 0x5c]
movdqa xmm1, xmm0
punpckhbw xmm1, xmm3
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
punpcklbw xmm0, xmm3
pshuflw xmm0, xmm0, 0x1b
pshufhw xmm0, xmm0, 0x1b
packuswb xmm0, xmm1
movdqu xmmword [esi + 0x5c], xmm0
mov ecx, esi
mov edx, dword [esp + 0xc]
call fcn.007c6570
cmp ebp, 0x40
mov eax, 0x40
cmovb eax, ebp
test ebp, ebp
je 0x7c6562
mov ecx, ebp
xor ebp, ebp
cmp ecx, 8
mov dword [esp], eax
jb 0x7c64f0
mov eax, edi
sub eax, ebx
cmp eax, 0x20
mov eax, dword [esp]
mov edx, dword [esp + 0x24]
jb 0x7c64f0
xor ebp, ebp
cmp ecx, 0x20
jb 0x7c64c3
mov ebp, eax
and ebp, 0x60
movdqu xmm0, xmmword [ebx]
movdqu xmm1, xmmword [ebx + 0x10]
movdqu xmmword [edx + 0x2c], xmm0
movdqu xmmword [edx + 0x3c], xmm1
cmp ebp, 0x20
je 0x7c64b3
movdqu xmm0, xmmword [ebx + 0x20]
movdqu xmm1, xmmword [ebx + 0x30]
movdqu xmmword [edx + 0x4c], xmm0
movdqu xmmword [edx + 0x5c], xmm1
cmp eax, ebp
mov esi, dword [esp + 0x24]
je 0x7c6370
test al, 0x18
je 0x7c64f0
mov edx, eax
mov eax, ebp
mov ebp, edx
and ebp, 0x78
nop dword [eax]
movq xmm0, qword [ebx + eax]
movq qword [edi + eax], xmm0
add eax, 8
cmp ebp, eax
jne 0x7c64d0
mov eax, dword [esp]
cmp eax, ebp
mov esi, dword [esp + 0x24]
je 0x7c6370
mov dword [esp + 4], ecx
mov edx, ebp
and eax, 3
je 0x7c650b
mov edx, ebp
nop dword [eax]
movzx ecx, byte [ebx + edx]
mov byte [edi + edx], cl
inc edx
dec eax
jne 0x7c6500
mov eax, dword [esp]
sub ebp, eax
cmp ebp, 0xfffffffc
mov ecx, dword [esp + 4]
mov esi, dword [esp + 0x24]
ja 0x7c6370
nop word cs:[eax + eax]
movzx eax, byte [ebx + edx]
mov byte [esi + edx + 0x2c], al
movzx eax, byte [ebx + edx + 1]
mov byte [esi + edx + 0x2d], al
movzx eax, byte [ebx + edx + 2]
mov byte [esi + edx + 0x2e], al
movzx eax, byte [ebx + edx + 3]
mov byte [esi + edx + 0x2f], al
mov eax, dword [esp]
add edx, 4
cmp eax, edx
jne 0x7c6530
jmp 0x7c6370
mov dword [esi], eax
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret