Function at 0x10028900
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x4c
call fcn.100bff40
mov eax, dword [0x10116c70]
xor eax, esp
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x64]
push ebx
mov ebx, dword [esp + 0x64]
push esi
mov esi, dword [esp + 0x58]
push edi
mov edi, dword [esp + 0x60]
mov dword [esp + 0x14], esi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], edx
cmp eax, 0x10
jae 0x10028959
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x48]
xor ecx, esp
call fcn.100bff70
add esp, 0x4c
ret
push ebp
mov ebp, eax
and ebp, 0xf
jne 0x10028986
push edx
push ebx
push ecx
push eax
push edi
push esi
call sym.LIBEAY32.dll_CRYPTO_cbc128_decrypt
mov eax, dword [esp + 0x38]
add esp, 0x18
pop ebp
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x48]
xor ecx, esp
call fcn.100bff70
add esp, 0x4c
ret
mov edx, 0xfffffff0
sub edx, ebp
add eax, edx
mov dword [esp + 0x20], eax
je 0x100289b7
mov edx, dword [esp + 0x14]
push edx
push ebx
push ecx
push eax
push edi
push esi
call sym.LIBEAY32.dll_CRYPTO_cbc128_decrypt
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x34]
add esi, eax
add esp, 0x18
mov dword [esp + 0x18], esi
add edi, eax
push ecx
lea ecx, [esp + 0x4c]
lea eax, [esi + ebp]
push ecx
push eax
mov dword [esp + 0x38], eax
call dword [esp + 0x20]
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x5c]
push ebp
mov dword [esp + 0x4c], eax
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x64]
lea eax, [esp + 0x48]
push esi
push eax
mov dword [esp + 0x58], ecx
mov dword [esp + 0x5c], edx
call sub.MSVCR90.dll_memcpy
mov ecx, dword [esp + 0x34]
push ecx
lea edx, [esp + 0x54]
push edx
mov eax, edx
push eax
call dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
sub edx, edi
mov dword [esp + 0x54], edx
mov edx, edi
sub edx, ebx
mov dword [esp + 0x40], edx
lea edx, [esp + 0x5c]
sub edx, ebx
mov dword [esp + 0x38], edx
lea edx, [esp + 0x5d]
sub edx, ebx
mov dword [esp + 0x48], edx
lea edx, [esp + 0x5e]
sub edx, ebx
mov dword [esp + 0x4c], edx
lea edx, [esp + 0x5f]
sub edx, ebx
mov dword [esp + 0x58], edx
mov edx, edi
add esp, 0x24
xor ecx, ecx
inc esi
sub edx, dword [esp + 0x18]
mov eax, ebx
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x30]
add edx, eax
movzx edx, byte [edx + ebx]
movzx ebx, byte [eax]
mov byte [esp + 0x13], dl
mov edx, dword [esp + 0x14]
xor bl, byte [edx + eax]
mov edx, dword [esp + 0x1c]
mov byte [edx + eax], bl
mov ebx, dword [esp + 0x14]
add edx, eax
movzx edx, byte [esi + ebp - 1]
mov byte [eax], dl
movzx edx, byte [esp + 0x13]
mov byte [ebx + eax], dl
movzx edx, byte [esi]
mov ebx, dword [esp + 0x18]
mov byte [esp + 0x13], dl
mov edx, dword [esp + 0x24]
movzx edx, byte [edx + eax]
xor dl, byte [eax + 1]
add ecx, 4
mov byte [ebx + esi], dl
movzx edx, byte [esi + ebp]
mov ebx, dword [esp + 0x24]
mov byte [eax + 1], dl
movzx edx, byte [esp + 0x13]
mov byte [ebx + eax], dl
mov ebx, dword [esp + 0x28]
movzx ebx, byte [ebx + eax]
xor bl, byte [eax + 2]
mov dl, byte [esi + 1]
mov byte [edi + ecx - 2], bl
mov ebx, dword [esp + 0x2c]
movzx ebx, byte [ebx + ecx - 2]
mov byte [eax + 2], bl
mov ebx, dword [esp + 0x28]
mov byte [ebx + eax], dl
movzx edx, byte [esi + 2]
movzx ebx, byte [eax + 3]
mov byte [esp + 0x13], dl
mov edx, dword [esp + 0x34]
xor bl, byte [edx + eax]
add eax, 4
mov byte [edi + ecx - 1], bl
mov ebx, dword [esp + 0x2c]
movzx ebx, byte [ebx + ecx - 1]
mov byte [eax - 1], bl
movzx ebx, byte [esp + 0x13]
mov byte [edx + eax - 4], bl
add esi, 4
cmp ecx, 0x10
jb 0x10028a52
add ebp, 0x10
cmp ecx, ebp
jae 0x10028b44
lea eax, [esp + 0x38]
sub edi, eax
jmp 0x10028b30
mov dl, byte [esp + ecx + 0x28]
xor dl, byte [esp + ecx + 0x38]
lea eax, [edi + ecx]
inc ecx
mov byte [esp + eax + 0x38], dl
cmp ecx, ebp
jb 0x10028b30
mov ecx, dword [esp + 0x20]
lea eax, [ecx + ebp + 0x10]
mov ecx, dword [esp + 0x58]
pop ebp
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.100bff70
add esp, 0x4c
ret