Function at 0x1000f4c0
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x34
mov esi, ecx
movzx eax, byte [edx]
xor byte [ecx], al
movzx eax, byte [edx + 1]
xor byte [ecx + 1], al
movzx eax, byte [edx + 2]
xor byte [ecx + 2], al
movzx eax, byte [edx + 3]
xor byte [ecx + 3], al
movzx eax, byte [edx + 4]
xor byte [ecx + 4], al
movzx eax, byte [edx + 5]
xor byte [ecx + 5], al
movzx eax, byte [edx + 6]
xor byte [ecx + 6], al
movzx eax, byte [edx + 7]
xor byte [ecx + 7], al
movzx eax, byte [edx + 8]
xor byte [ecx + 8], al
movzx eax, byte [edx + 9]
xor byte [ecx + 9], al
movzx eax, byte [edx + 0xa]
xor byte [ecx + 0xa], al
movzx eax, byte [edx + 0xb]
xor byte [ecx + 0xb], al
movzx eax, byte [edx + 0xc]
xor byte [ecx + 0xc], al
movzx eax, byte [edx + 0xd]
xor byte [ecx + 0xd], al
movzx eax, byte [edx + 0xe]
xor byte [ecx + 0xe], al
mov dword [esp + 0x18], edx
movzx eax, byte [edx + 0xf]
xor byte [ecx + 0xf], al
mov bl, 1
nop dword [eax]
mov byte [esp + 2], bl
movzx eax, byte [esi]
movzx eax, byte [eax + str.cw]
mov byte [esi], al
movzx eax, byte [esi + 4]
movzx eax, byte [eax + str.cw]
mov byte [esi + 4], al
movzx eax, byte [esi + 8]
movzx eax, byte [eax + str.cw]
mov byte [esi + 8], al
movzx eax, byte [esi + 0xc]
movzx eax, byte [eax + str.cw]
mov byte [esi + 0xc], al
movzx eax, byte [esi + 1]
movzx eax, byte [eax + str.cw]
movzx ecx, byte [esi + 5]
movzx ebx, byte [ecx + str.cw]
movzx ecx, byte [esi + 9]
movzx edx, byte [ecx + str.cw]
movzx ecx, byte [esi + 0xd]
movzx ecx, byte [ecx + str.cw]
movzx edi, byte [esi + 2]
mov dword [esp + 0x14], edi
movzx edi, byte [esi + 6]
mov dword [esp + 8], edi
movzx edi, byte [esi + 0xa]
mov dword [esp + 4], edi
movzx edi, byte [esi + 0xe]
mov dword [esp + 0xc], edi
movzx edi, byte [esi + 3]
mov dword [esp + 0x24], edi
movzx edi, byte [esi + 7]
mov dword [esp + 0x10], edi
movzx ebp, byte [esi + 0xb]
movzx edi, byte [esi + 0xf]
mov byte [esi + 1], bl
mov byte [esi + 5], dl
mov byte [esi + 9], cl
mov byte [esi + 0xd], al
shl eax, 8
or eax, ecx
shl edx, 8
or edx, ebx
movd xmm4, edx
pinsrw xmm4, eax, 1
mov eax, dword [esp + 0x14]
movzx ebx, byte [eax + str.cw]
mov eax, dword [esp + 8]
movzx eax, byte [eax + str.cw]
mov ecx, dword [esp + 4]
movzx edx, byte [ecx + str.cw]
mov ecx, dword [esp + 0xc]
movzx ecx, byte [ecx + str.cw]
mov byte [esi + 2], dl
mov byte [esi + 0xa], bl
mov byte [esi + 6], cl
mov byte [esi + 0xe], al
shl eax, 8
or eax, ebx
movzx ebx, byte [esp + 2]
shl ecx, 8
or ecx, edx
movd xmm5, ecx
pinsrw xmm5, eax, 1
mov eax, dword [esp + 0x10]
movzx edx, byte [eax + str.cw]
movzx eax, byte [ebp + str.cw]
movzx ecx, byte [edi + str.cw]
mov byte [esi + 3], cl
mov byte [esi + 0xf], al
mov byte [esi + 0xb], dl
shl eax, 8
or eax, edx
mov edx, dword [esp + 0x24]
movzx edx, byte [edx + str.cw]
mov byte [esi + 7], dl
shl edx, 8
or edx, ecx
movd xmm1, edx
pinsrw xmm1, eax, 1
movzx eax, byte [esi]
movzx ecx, byte [esi + 8]
movzx edx, byte [esi + 0xc]
shl edx, 8
or edx, ecx
movzx ecx, byte [esi + 4]
shl ecx, 8
or ecx, eax
movd xmm6, ecx
pinsrw xmm6, edx, 1
movdqa xmm2, xmm4
pxor xmm2, xmm6
movdqa xmm0, xmm2
pxor xmm0, xmm5
movdqu xmmword [esp + 0x24], xmm0
movdqa xmm3, xmm2
paddb xmm3, xmm2
pxor xmm7, xmm7
pcmpgtb xmm7, xmm2
movdqa xmm0, xmmword [str.eeee]
pand xmm7, xmm0
pxor xmm3, xmm6
pxor xmm3, xmm7
movdqa xmm7, xmm1
pxor xmm7, xmm5
pxor xmm5, xmm4
pxor xmm0, xmm0
pcmpgtb xmm0, xmm5
paddb xmm5, xmm5
pxor xmm5, xmm4
movdqu xmm4, xmmword [esp + 0x24]
pxor xmm4, xmm1
pxor xmm3, xmm4
pxor xmm5, xmm4
movdqa xmm4, xmmword [str.eeee]
pand xmm0, xmm4
pxor xmm5, xmm0
punpckldq xmm3, xmm5
pxor xmm0, xmm0
pcmpgtb xmm0, xmm7
paddb xmm7, xmm7
pxor xmm2, xmm1
pxor xmm2, xmm7
pand xmm0, xmm4
movdqa xmm5, xmm4
pxor xmm2, xmm0
pxor xmm1, xmm6
pxor xmm0, xmm0
pcmpgtb xmm0, xmm1
paddb xmm1, xmm1
movdqu xmm4, xmmword [esp + 0x24]
pxor xmm1, xmm4
pand xmm0, xmm5
pxor xmm1, xmm0
punpckldq xmm2, xmm1
pxor xmm4, xmm4
punpcklbw xmm2, xmm4
pshufd xmm0, xmm2, 0xd7
pshuflw xmm0, xmm0, 0x24
pshufhw xmm0, xmm0, 0xd4
pshufd xmm1, xmm2, 0x28
pshuflw xmm1, xmm1, 0x84
pshufhw xmm1, xmm1, 0x74
packuswb xmm1, xmm0
movdqa xmm5, xmmword [0x100292f0]
movdqa xmm0, xmm5
pandn xmm0, xmm1
punpcklbw xmm3, xmm4
pshufd xmm1, xmm3, 0xd7
pshuflw xmm1, xmm1, 0xe2
pshufhw xmm1, xmm1, 0xed
pshufd xmm2, xmm3, 0x28
pshuflw xmm2, xmm2, 0xe8
pshufhw xmm2, xmm2, 0xe7
packuswb xmm2, xmm1
pand xmm2, xmm5
por xmm2, xmm0
movdqu xmmword [esi], xmm2
movzx ecx, bl
mov edx, esi
push dword [esp + 0x18]
call fcn.1000fc50
add esp, 4
inc bl
cmp bl, 0xe
jne 0x1000f540
movzx eax, byte [esi]
mov bh, byte [eax + str.cw]
mov byte [esi], bh
movzx eax, byte [esi + 4]
movzx eax, byte [eax + str.cw]
mov byte [esp + 0x14], al
mov byte [esi + 4], al
movzx eax, byte [esi + 8]
movzx eax, byte [eax + str.cw]
mov byte [esp + 2], al
mov byte [esi + 8], al
movzx eax, byte [esi + 0xc]
movzx eax, byte [eax + str.cw]
mov byte [esp + 0x24], al
mov byte [esi + 0xc], al
movzx eax, byte [esi + 1]
movzx edx, byte [eax + str.cw]
mov byte [esp + 0x10], dl
movzx eax, byte [esi + 5]
mov dh, byte [eax + str.cw]
movzx eax, byte [esi + 9]
mov bl, byte [eax + str.cw]
movzx eax, byte [esi + 0xd]
mov ch, byte [eax + str.cw]
mov byte [esp + 3], ch
movzx eax, byte [esi + 2]
mov cl, byte [eax + str.cw]
mov byte [esp + 0xc], cl
movzx eax, byte [esi + 0xa]
mov ah, byte [eax + str.cw]
movzx edi, byte [esi + 6]
mov dword [esp + 8], edi
movzx edi, byte [esi + 0xe]
mov dword [esp + 4], edi
movzx edi, byte [esi + 3]
mov dword [esp + 0x20], edi
movzx edi, byte [esi + 7]
mov dword [esp + 0x1c], edi
movzx ebp, byte [esi + 0xb]
movzx edi, byte [esi + 0xf]
mov byte [esi + 1], dh
mov byte [esi + 5], bl
mov byte [esi + 9], ch
mov byte [esi + 0xd], dl
mov byte [esi + 2], ah
mov byte [esi + 0xa], cl
mov ecx, dword [esp + 4]
mov dl, byte [ecx + str.cw]
mov byte [esi + 6], dl
mov ecx, dword [esp + 8]
mov al, byte [ecx + str.cw]
mov byte [esp + 4], al
mov byte [esi + 0xe], al
mov al, byte [edi + str.cw]
mov byte [esi + 3], al
movzx ecx, byte [ebp + str.cw]
mov byte [esp + 8], cl
mov byte [esi + 0xf], cl
mov ecx, dword [esp + 0x1c]
mov ch, byte [ecx + str.cw]
mov byte [esi + 0xb], ch
mov edi, dword [esp + 0x20]
mov cl, byte [edi + str.cw]
mov byte [esi + 7], cl
mov edi, dword [esp + 0x18]
xor bh, byte [edi + 0xe0]
mov byte [esi], bh
xor dh, byte [edi + 0xe1]
mov byte [esi + 1], dh
xor ah, byte [edi + 0xe2]
mov byte [esi + 2], ah
xor al, byte [edi + 0xe3]
mov byte [esi + 3], al
movzx eax, byte [esp + 0x14]
xor al, byte [edi + 0xe4]
mov byte [esi + 4], al
xor bl, byte [edi + 0xe5]
mov byte [esi + 5], bl
xor dl, byte [edi + 0xe6]
mov byte [esi + 6], dl
xor cl, byte [edi + 0xe7]
mov byte [esi + 7], cl
movzx eax, byte [esp + 2]
xor al, byte [edi + 0xe8]
mov byte [esi + 8], al
movzx eax, byte [esp + 3]
xor al, byte [edi + 0xe9]
mov byte [esi + 9], al
movzx eax, byte [esp + 0xc]
xor al, byte [edi + 0xea]
mov byte [esi + 0xa], al
xor ch, byte [edi + 0xeb]
mov byte [esi + 0xb], ch
movzx eax, byte [esp + 0x24]
xor al, byte [edi + 0xec]
mov byte [esi + 0xc], al
movzx eax, byte [esp + 0x10]
xor al, byte [edi + 0xed]
mov byte [esi + 0xd], al
movzx eax, byte [esp + 4]
xor al, byte [edi + 0xee]
mov byte [esi + 0xe], al
movzx eax, byte [esp + 8]
xor al, byte [edi + 0xef]
mov byte [esi + 0xf], al
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret