Function at 0x10077aa0
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x94
cmp dword [0x10265fe4], 0
push ebx
mov ebx, ecx
push edi
mov edi, edx
mov dword [ebp - 4], ebx
jne 0x10077b2c
mov byte [0x10266d8f], 0
mov edx, 1
mov byte [0x10266b70], 0xff
xor ebx, ebx
mov byte [ebx + 0x10266c90], dl
mov byte [edx + 0x10266b70], bl
add edx, edx
mov ecx, edx
mov eax, edx
xor ecx, 0x11d
and eax, 0x100
cmove ecx, edx
inc ebx
movzx edx, cl
cmp ebx, 0xff
jb 0x10077ad0
mov ebx, dword [ebp - 4]
xorps xmm0, xmm0
movups xmmword [0x10266c70], xmm0
mov dword [0x10266c88], 0
movq qword [0x10266c80], xmm0
mov byte [0x10266c8c], 0
mov dword [0x10265fe4], 1
cmp edi, 0x1e
jbe 0x10077b3a
pop edi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0xc]
push esi
push edi
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov dword [ebp - 0x14], 0xff
cmp byte [edi + 0x10266c6e], 0
jne 0x10077c2f
xor ecx, ecx
mov dword [ebp - 0x94], 1
test edi, edi
je 0x10077bf6
mov ebx, 0xff
nop word [eax + eax]
mov dword [ebp + ecx*4 - 0x90], 1
mov esi, ecx
test ecx, ecx
je 0x10077bce
nop dword [eax]
nop word [eax + eax]
mov eax, dword [ebp + esi*4 - 0x94]
xor edx, edx
movzx eax, byte [eax + 0x10266b70]
add eax, ecx
div ebx
movzx eax, byte [edx + 0x10266c90]
xor eax, dword [ebp + esi*4 - 0x98]
mov dword [ebp + esi*4 - 0x94], eax
sub esi, 1
jne 0x10077ba0
mov eax, dword [ebp - 0x94]
xor edx, edx
movzx eax, byte [eax + 0x10266b70]
add eax, ecx
inc ecx
div ebx
movzx eax, byte [edx + 0x10266c90]
mov dword [ebp - 0x94], eax
cmp ecx, edi
jb 0x10077b80
mov ebx, dword [ebp - 4]
lea eax, [edi - 2]
xor edx, edx
mov ecx, eax
shl ecx, 5
sub ecx, eax
add ecx, 0x102667e8
nop dword [eax + eax]
mov eax, dword [ebp + edx*4 - 0x94]
lea ecx, [ecx + 1]
inc edx
mov al, byte [eax + 0x10266b70]
mov byte [ecx - 1], al
cmp edx, edi
jbe 0x10077c10
mov byte [edi + 0x10266c6e], 1
lea eax, [edi - 2]
xor esi, esi
mov ecx, eax
mov dword [ebp - 0xc], esi
shl ecx, 5
sub ecx, eax
add ecx, 0x102667e8
mov dword [ebp - 8], ecx
test ebx, ebx
je 0x10077cfe
mov edx, dword [ebp + 0xc]
lea eax, [edx - 1]
add eax, edi
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 8]
nop dword [eax]
movzx ecx, byte [esi + eax]
movzx eax, byte [edx]
xor ecx, eax
mov bl, byte [ecx + 0x10266b70]
cmp bl, 0xff
je 0x10077cb2
mov ecx, 1
cmp edi, ecx
jbe 0x10077cb2
mov esi, dword [ebp - 8]
movzx eax, bl
dec esi
mov dword [ebp - 0x10], eax
add esi, edi
nop dword [eax]
movzx eax, byte [esi]
lea esi, [esi - 1]
add eax, dword [ebp - 0x10]
xor edx, edx
div dword [ebp - 0x14]
mov al, byte [edx + 0x10266c90]
mov edx, dword [ebp + 0xc]
xor byte [ecx + edx], al
inc ecx
cmp ecx, edi
jb 0x10077c90
mov esi, dword [ebp - 0xc]
lea eax, [edi - 1]
push eax
lea eax, [edx + 1]
push eax
push edx
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
cmp bl, 0xff
je 0x10077ce4
mov eax, dword [ebp - 8]
xor edx, edx
movzx ecx, bl
movzx eax, byte [eax]
add eax, ecx
mov ecx, 0xff
div ecx
mov al, byte [edx + 0x10266c90]
jmp 0x10077ce6
xor al, al
mov ecx, dword [ebp - 0x18]
inc esi
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0xc], esi
mov byte [ecx], al
mov eax, dword [ebp + 8]
cmp esi, dword [ebp - 4]
jb 0x10077c60
pop esi
pop edi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret