Function at 0x12ff3890
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xa0
push ebx
push ebp
push esi
push edi
mov ecx, 0x24
xor eax, eax
lea edi, [esp + 0x20]
xor edx, edx
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0xb8]
xor ecx, ecx
mov esi, dword [esp + 0xb4]
mov edi, 0x20
mov ch, byte [eax]
mov dl, byte [eax + 2]
mov cl, byte [eax + 1]
shl ecx, 8
or ecx, edx
xor edx, edx
mov dl, byte [eax + 3]
shl ecx, 8
or ecx, edx
xor edx, edx
mov dl, byte [eax + 6]
mov dword [esp + 0x20], ecx
xor ecx, ecx
mov ch, byte [eax + 4]
mov cl, byte [eax + 5]
shl ecx, 8
or ecx, edx
xor edx, edx
mov dl, byte [eax + 7]
shl ecx, 8
or ecx, edx
xor edx, edx
mov dl, byte [eax + 0xa]
mov dword [esp + 0x24], ecx
xor ecx, ecx
mov ch, byte [eax + 8]
mov cl, byte [eax + 9]
shl ecx, 8
or ecx, edx
xor edx, edx
mov dl, byte [eax + 0xb]
shl ecx, 8
or ecx, edx
xor edx, edx
mov dl, byte [eax + 0xe]
mov dword [esp + 0x28], ecx
xor ecx, ecx
mov ch, byte [eax + 0xc]
mov cl, byte [eax + 0xd]
shl ecx, 8
or ecx, edx
xor edx, edx
mov dl, byte [eax + 0xf]
lea eax, [esp + 0x2c]
shl ecx, 8
or ecx, edx
sub esi, eax
mov dword [esp + 0x2c], ecx
lea ecx, [esp + 0x2c]
mov eax, dword [esi + ecx]
mov ebp, dword [ecx - 8]
mov ebx, dword [ecx - 4]
mov edx, dword [ecx]
xor eax, ebp
add ecx, 4
xor eax, ebx
xor eax, edx
mov edx, eax
shr edx, 0x18
mov byte [esp + 0x10], dl
mov edx, eax
shr edx, 0x10
mov byte [esp + 0x11], dl
mov edx, eax
shr edx, 8
mov byte [esp + 0x12], dl
and eax, 0xff
mov ebx, dword [esp + 0x11]
mov edx, dword [esp + 0x10]
and ebx, 0xff
mov al, byte [eax + 0x1307f300]
and edx, 0xff
mov byte [esp + 0x1b], al
mov bl, byte [ebx + 0x1307f300]
xor eax, eax
mov dl, byte [edx + 0x1307f300]
mov byte [esp + 0x19], bl
mov ebx, dword [esp + 0x12]
mov ah, dl
and ebx, 0xff
mov bl, byte [ebx + 0x1307f300]
mov byte [esp + 0x1a], bl
mov edx, dword [esp + 0x19]
and edx, 0xff
or eax, edx
mov edx, dword [esp + 0x1a]
shl eax, 8
and edx, 0xff
or eax, edx
mov edx, dword [esp + 0x1b]
shl eax, 8
and edx, 0xff
or eax, edx
mov edx, eax
mov ebx, eax
shl edx, 0x12
shr ebx, 0xe
or edx, ebx
mov ebx, eax
mov ebp, eax
shl ebx, 0x18
shr ebp, 8
or ebx, ebp
mov ebp, eax
xor edx, ebx
mov ebx, eax
shr ebx, 0x16
shl ebp, 0xa
or ebx, ebp
lea ebp, [eax*4]
xor edx, ebx
mov ebx, eax
shr ebx, 0x1e
or ebx, ebp
mov ebp, dword [ecx - 0x10]
xor edx, ebx
xor edx, ebp
xor edx, eax
dec edi
mov dword [ecx], edx
jne 0x12ff3943
mov ecx, dword [esp + 0xac]
mov eax, dword [esp + 0xbc]
mov edx, ecx
pop edi
shr edx, 0x18
mov byte [eax], dl
mov edx, ecx
shr edx, 0x10
mov byte [eax + 1], dl
mov edx, ecx
shr edx, 8
mov byte [eax + 3], cl
mov ecx, dword [esp + 0xa4]
mov byte [eax + 2], dl
mov edx, ecx
shr edx, 0x18
mov byte [eax + 4], dl
mov edx, ecx
shr edx, 0x10
mov byte [eax + 5], dl
mov edx, ecx
shr edx, 8
mov byte [eax + 7], cl
mov ecx, dword [esp + 0xa0]
mov byte [eax + 6], dl
mov edx, ecx
shr edx, 0x18
mov byte [eax + 8], dl
mov edx, ecx
shr edx, 0x10
mov byte [eax + 9], dl
mov edx, ecx
shr edx, 8
mov byte [eax + 0xb], cl
mov ecx, dword [esp + 0x9c]
mov byte [eax + 0xa], dl
mov edx, ecx
shr edx, 0x18
mov byte [eax + 0xc], dl
mov edx, ecx
shr edx, 0x10
mov byte [eax + 0xd], dl
mov edx, ecx
shr edx, 8
pop esi
pop ebp
mov byte [eax + 0xe], dl
mov byte [eax + 0xf], cl
pop ebx
add esp, 0xa0
ret