Function at 0x10012570
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
push edi
mov eax, dword [ebp + 0x10]
mov byte [ebp - 0x18], al
sar eax, 6
mov byte [ebp - 0x17], al
sar eax, 6
mov byte [ebp - 0x16], al
sar eax, 6
mov byte [ebp - 0x15], al
mov eax, dword [ebp - 0x18]
and eax, 0xff3f3f3f
shl eax, 2
mov dword [ebp + 0x10], eax
mov eax, dword [ebp + 8]
mov cl, byte [eax]
mov byte [ebp - 0x18], cl
mov cl, byte [eax + 1]
mov byte [ebp - 0x17], cl
mov cl, byte [eax + 2]
mov byte [ebp - 0x16], cl
mov cl, byte [eax + 3]
mov byte [ebp - 0x15], cl
mov cl, byte [eax + 4]
mov edx, dword [ebp - 0x18]
mov byte [ebp - 0x14], cl
mov cl, byte [eax + 5]
mov byte [ebp - 0x13], cl
mov cl, byte [eax + 6]
mov al, byte [eax + 7]
mov byte [ebp - 0x11], al
mov byte [ebp - 0x12], cl
mov eax, dword [ebp - 0x14]
lea esi, [edx + edx]
xor esi, eax
sar eax, 1
xor eax, edx
mov ecx, 0x55555555
and eax, ecx
xor eax, edx
push 4
mov dword [ebp - 0x14], eax
mov ebx, 0x4750bb8
push ebx
lea eax, [ebp - 0x10]
push eax
and esi, ecx
lea edi, [edx + edx]
lea eax, [ebp - 0x18]
xor esi, edi
push eax
mov dword [ebp - 0x18], esi
call fcn.10012523
mov esi, dword [ebp - 0x10]
mov edi, dword [ebp - 0xc]
push 4
push ebx
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.10012523
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
add esp, 0x20
cmp dword [ebp + 0x14], 0
jl 0x10012640
mov dword [ebp + 8], 0x4753038
mov dword [ebp - 4], 8
jmp 0x10012651
neg dword [ebp + 0x14]
mov dword [ebp + 8], 0x47530b0
mov dword [ebp - 4], 0xfffffff8
dec dword [ebp + 0x14]
js 0x10012819
mov edx, dword [ebp - 4]
shl edx, 4
mov dword [ebp - 0xc], edx
mov dword [ebp - 8], 8
mov edx, dword [ebp + 8]
mov edx, dword [edx]
mov ebx, ecx
xor ebx, eax
and ebx, dword [ebp + 0x10]
xor edx, ebx
xor edx, eax
mov dword [ebp - 0x18], edx
mov edx, dword [ebp + 8]
mov edx, dword [edx + 4]
xor edx, ebx
xor edx, ecx
mov dword [ebp - 0x14], edx
mov edx, dword [ebp - 4]
add dword [ebp + 8], edx
movzx edx, byte [ebp - 0x18]
xor esi, dword [edx + 0x4750fc0]
xor edi, dword [edx + 0x47517c0]
mov edx, dword [ebp - 0x18]
sar edx, 8
movzx edx, dl
xor esi, dword [edx + 0x47510c0]
xor edi, dword [edx + 0x47518c0]
mov edx, dword [ebp - 0x18]
sar edx, 0x10
movzx edx, dl
xor esi, dword [edx + 0x47511c0]
xor edi, dword [edx + 0x47519c0]
mov edx, dword [ebp - 0x18]
sar edx, 0x18
movzx edx, dl
xor esi, dword [edx + 0x47512c0]
xor edi, dword [edx + 0x4751ac0]
movzx edx, byte [ebp - 0x14]
xor esi, dword [edx + 0x47513c0]
xor edi, dword [edx + 0x4751bc0]
mov edx, dword [ebp - 0x14]
sar edx, 8
movzx edx, dl
xor esi, dword [edx + 0x47514c0]
xor edi, dword [edx + 0x4751cc0]
mov edx, dword [ebp - 0x14]
sar edx, 0x10
movzx edx, dl
xor esi, dword [edx + 0x47515c0]
xor edi, dword [edx + 0x4751dc0]
mov edx, dword [ebp - 0x14]
sar edx, 0x18
movzx edx, dl
xor edi, dword [edx + 0x4751ec0]
xor esi, dword [edx + 0x47516c0]
mov edx, dword [ebp + 8]
mov edx, dword [edx]
mov ebx, edi
xor ebx, esi
and ebx, dword [ebp + 0x10]
xor edx, ebx
xor edx, esi
mov dword [ebp - 0x18], edx
mov edx, dword [ebp + 8]
mov edx, dword [edx + 4]
xor edx, ebx
mov ebx, dword [ebp + 8]
xor edx, edi
add ebx, dword [ebp - 4]
mov dword [ebp - 0x14], edx
movzx edx, byte [ebp - 0x18]
xor eax, dword [edx + 0x4750fc0]
xor ecx, dword [edx + 0x47517c0]
mov edx, dword [ebp - 0x18]
sar edx, 8
movzx edx, dl
xor eax, dword [edx + 0x47510c0]
xor ecx, dword [edx + 0x47518c0]
mov edx, dword [ebp - 0x18]
sar edx, 0x10
movzx edx, dl
xor eax, dword [edx + 0x47511c0]
xor ecx, dword [edx + 0x47519c0]
mov edx, dword [ebp - 0x18]
mov dword [ebp + 8], ebx
sar edx, 0x18
movzx edx, dl
xor eax, dword [edx + 0x47512c0]
xor ecx, dword [edx + 0x4751ac0]
movzx edx, byte [ebp - 0x14]
xor eax, dword [edx + 0x47513c0]
xor ecx, dword [edx + 0x4751bc0]
mov edx, dword [ebp - 0x14]
sar edx, 8
movzx edx, dl
xor eax, dword [edx + 0x47514c0]
xor ecx, dword [edx + 0x4751cc0]
mov edx, dword [ebp - 0x14]
sar edx, 0x10
movzx edx, dl
xor eax, dword [edx + 0x47515c0]
xor ecx, dword [edx + 0x4751dc0]
mov edx, dword [ebp - 0x14]
sar edx, 0x18
movzx edx, dl
xor eax, dword [edx + 0x47516c0]
xor ecx, dword [edx + 0x4751ec0]
dec dword [ebp - 8]
jne 0x1001266a
sub ebx, dword [ebp - 0xc]
xor esi, eax
xor edi, ecx
xor eax, esi
xor ecx, edi
xor esi, eax
xor edi, ecx
dec dword [ebp + 0x14]
mov dword [ebp + 8], ebx
jns 0x10012663
sar esi, 3
lea ebx, [edi + edi]
xor ebx, esi
mov edx, 0xf0f0f0f
and ebx, edx
lea esi, [edi + edi]
xor ebx, esi
sar eax, 3
lea esi, [ecx + ecx]
xor esi, eax
lea eax, [ecx + ecx]
and esi, edx
xor esi, eax
push 8
push 0x47530b8
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x18]
push eax
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], esi
call fcn.10012523
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x10]
mov edx, ecx
sar edx, 8
mov byte [eax + 1], dl
mov byte [eax], cl
mov edx, ecx
sar edx, 0x10
sar ecx, 0x18
mov byte [eax + 2], dl
mov byte [eax + 3], cl
mov ecx, dword [ebp - 0xc]
mov edx, ecx
sar edx, 8
add esp, 0x10
mov byte [eax + 5], dl
mov edx, ecx
mov byte [eax + 4], cl
pop edi
sar edx, 0x10
sar ecx, 0x18
pop esi
mov byte [eax + 6], dl
mov byte [eax + 7], cl
xor eax, eax
pop ebx
leave
ret