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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xe0
mov esi, edx
mov edi, ecx
mov cl, byte [ecx]
mov al, byte [edi + 1]
xor cl, byte [edx + 0xa0]
mov byte [esp + 0x80], cl
mov byte [edi], cl
xor al, byte [edx + 0xa1]
mov byte [esp + 0x40], al
mov byte [edi + 1], al
mov al, byte [edi + 2]
xor al, byte [edx + 0xa2]
mov byte [esp + 0x50], al
mov byte [edi + 2], al
mov al, byte [edi + 3]
xor al, byte [edx + 0xa3]
mov byte [esp + 0x10], al
mov byte [edi + 3], al
mov dl, byte [edi + 4]
xor dl, byte [esi + 0xa4]
mov byte [edi + 4], dl
mov al, byte [edi + 5]
xor al, byte [esi + 0xa5]
mov byte [esp + 0x70], al
mov byte [edi + 5], al
mov al, byte [edi + 6]
xor al, byte [esi + 0xa6]
mov byte [esp + 0x30], al
mov byte [edi + 6], al
mov al, byte [edi + 7]
xor al, byte [esi + 0xa7]
mov byte [esp + 0x60], al
mov byte [edi + 7], al
mov ch, byte [edi + 8]
xor ch, byte [esi + 0xa8]
mov byte [edi + 8], ch
mov al, byte [edi + 9]
xor al, byte [esi + 0xa9]
mov byte [esp + 0xe], al
mov byte [edi + 9], al
mov al, byte [edi + 0xa]
xor al, byte [esi + 0xaa]
mov byte [esp + 0xd], al
mov byte [edi + 0xa], al
mov al, byte [edi + 0xb]
xor al, byte [esi + 0xab]
mov byte [esp + 0xf], al
mov byte [edi + 0xb], al
mov cl, byte [edi + 0xc]
xor cl, byte [esi + 0xac]
mov byte [edi + 0xc], cl
mov bh, byte [edi + 0xd]
xor bh, byte [esi + 0xad]
mov byte [edi + 0xd], bh
mov ah, byte [edi + 0xe]
xor ah, byte [esi + 0xae]
mov byte [edi + 0xe], ah
mov dh, byte [edi + 0xf]
mov dword [esp + 0x2c], esi
xor dh, byte [esi + 0xaf]
mov bl, 9
nop
movzx esi, byte [esp + 0x80]
mov al, byte [esi + 0x593b7b]
mov byte [edi], al
movzx esi, dl
mov al, byte [esi + 0x593b7b]
mov byte [edi + 4], al
movzx esi, ch
mov al, byte [esi + 0x593b7b]
mov byte [edi + 8], al
movzx esi, cl
mov al, byte [esi + 0x593b7b]
mov byte [edi + 0xc], al
movzx esi, bh
mov al, byte [esi + 0x593b7b]
mov byte [edi + 1], al
movzx esi, byte [esp + 0x40]
mov al, byte [esi + 0x593b7b]
mov byte [edi + 5], al
movzx esi, byte [esp + 0x70]
mov al, byte [esi + 0x593b7b]
mov byte [edi + 9], al
movzx esi, byte [esp + 0xe]
mov al, byte [esi + 0x593b7b]
mov byte [edi + 0xd], al
movzx ecx, byte [esp + 0xd]
mov al, byte [ecx + 0x593b7b]
mov byte [edi + 2], al
movzx ecx, ah
mov al, byte [ecx + 0x593b7b]
mov byte [edi + 6], al
movzx ecx, byte [esp + 0x50]
mov al, byte [ecx + 0x593b7b]
mov byte [edi + 0xa], al
movzx ecx, byte [esp + 0x30]
mov al, byte [ecx + 0x593b7b]
mov byte [edi + 0xe], al
movzx ecx, byte [esp + 0x60]
mov al, byte [ecx + 0x593b7b]
mov byte [edi + 3], al
movzx ecx, byte [esp + 0xf]
mov al, byte [ecx + 0x593b7b]
mov byte [edi + 7], al
movzx eax, dh
mov al, byte [eax + 0x593b7b]
mov byte [edi + 0xb], al
movzx eax, byte [esp + 0x10]
mov al, byte [eax + 0x593b7b]
mov byte [edi + 0xf], al
movzx ecx, bl
mov edx, edi
push dword [esp + 0x2c]
call fcn.00401900
add esp, 4
test bl, bl
je 0x4017e4
xor eax, eax
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx ecx, byte [edi + eax*4]
movzx edx, byte [edi + eax*4 + 8]
movzx esi, byte [edi + eax*4 + 0xc]
shl esi, 8
or esi, edx
movzx edx, byte [edi + eax*4 + 4]
shl edx, 8
or edx, ecx
movd xmm3, edx
pinsrw xmm3, esi, 1
movzx ecx, byte [edi + eax*4 + 1]
movzx edx, byte [edi + eax*4 + 9]
movzx esi, byte [edi + eax*4 + 0xd]
shl esi, 8
or esi, edx
movzx edx, byte [edi + eax*4 + 5]
shl edx, 8
or edx, ecx
movd xmm1, edx
pinsrw xmm1, esi, 1
movzx ecx, byte [edi + eax*4 + 2]
movzx edx, byte [edi + eax*4 + 0xa]
movzx esi, byte [edi + eax*4 + 0xe]
shl esi, 8
or esi, edx
movzx edx, byte [edi + eax*4 + 6]
shl edx, 8
or edx, ecx
movd xmm0, edx
pinsrw xmm0, esi, 1
pxor xmm2, xmm2
pcmpgtb xmm2, xmm3
movdqa xmmword [esp + 0x50], xmm1
pxor xmm5, xmm5
pcmpgtb xmm5, xmm1
movdqa xmm7, xmm0
movdqa xmmword [esp + 0x80], xmm0
pxor xmm0, xmm1
movdqa xmmword [esp + 0x40], xmm0
pxor xmm7, xmm3
pxor xmm1, xmm3
movdqa xmmword [esp + 0x30], xmm1
paddb xmm3, xmm3
movdqa xmm6, xmmword [str.eeee]
pand xmm2, xmm6
pxor xmm2, xmm3
movdqa xmm1, xmm2
movdqa xmmword [esp + 0x10], xmm2
pxor xmm0, xmm0
pcmpgtb xmm0, xmm3
paddb xmm1, xmm2
pand xmm0, xmm6
pxor xmm0, xmm1
pxor xmm2, xmm2
pcmpgtb xmm2, xmm1
movzx ecx, byte [edi + eax*4 + 3]
movzx edx, byte [edi + eax*4 + 0xb]
movzx esi, byte [edi + eax*4 + 0xf]
shl esi, 8
or esi, edx
movzx edx, byte [edi + eax*4 + 7]
shl edx, 8
or edx, ecx
movd xmm4, edx
pinsrw xmm4, esi, 1
movdqa xmm1, xmmword [esp + 0x50]
paddb xmm1, xmm1
movdqa xmmword [esp + 0x50], xmm1
pand xmm5, xmm6
pxor xmm5, xmm1
movdqa xmm1, xmm4
paddb xmm1, xmm4
movdqa xmmword [esp + 0x70], xmm1
pxor xmm3, xmm3
pcmpgtb xmm3, xmm4
pand xmm3, xmm6
pxor xmm3, xmm1
movdqa xmm6, xmmword [esp + 0x40]
pxor xmm6, xmm4
movdqa xmm1, xmmword [esp + 0x10]
pxor xmm6, xmm1
pxor xmm6, xmm5
pxor xmm6, xmm0
movdqa xmmword [esp + 0x40], xmm6
pxor xmm7, xmm4
movdqa xmm6, xmmword [esp + 0x30]
pxor xmm6, xmm3
movdqa xmmword [esp + 0x30], xmm6
pxor xmm4, xmm6
pxor xmm4, xmm0
paddb xmm0, xmm0
movdqa xmm6, xmmword [str.eeee]
pand xmm2, xmm6
pxor xmm2, xmm0
movdqa xmmword [esp + 0x60], xmm2
pxor xmm0, xmm0
pcmpgtb xmm0, xmmword [esp + 0x50]
pxor xmm7, xmm5
paddb xmm5, xmm5
pand xmm0, xmm6
pxor xmm0, xmm5
pxor xmm6, xmm6
pcmpgtb xmm6, xmm5
movdqa xmm2, xmm1
movdqa xmm1, xmmword [esp + 0x80]
pxor xmm2, xmm1
pxor xmm2, xmmword [esp + 0x30]
movdqa xmmword [esp + 0x10], xmm2
pxor xmm5, xmm5
pcmpgtb xmm5, xmm1
movdqa xmm2, xmm1
paddb xmm2, xmm1
movdqa xmm1, xmmword [str.eeee]
pand xmm5, xmm1
pxor xmm5, xmm2
pxor xmm7, xmm5
pxor xmm7, xmm0
movdqa xmm1, xmmword [esp + 0x10]
pxor xmm1, xmm0
movdqa xmmword [esp + 0x10], xmm1
paddb xmm0, xmm0
movdqa xmm1, xmmword [str.eeee]
pand xmm6, xmm1
pxor xmm6, xmm0
pxor xmm0, xmm0
pcmpgtb xmm0, xmm2
pxor xmm4, xmm5
paddb xmm5, xmm5
pand xmm0, xmm1
pxor xmm0, xmm5
pxor xmm2, xmm2
pcmpgtb xmm2, xmm5
movdqa xmm5, xmm0
paddb xmm5, xmm0
pand xmm2, xmm1
pxor xmm2, xmm5
pxor xmm5, xmm5
pcmpgtb xmm5, xmmword [esp + 0x70]
paddb xmm3, xmm3
pand xmm5, xmm1
pxor xmm5, xmm3
pxor xmm1, xmm1
pcmpgtb xmm1, xmm3
movdqa xmm3, xmm5
paddb xmm3, xmm5
pand xmm1, xmmword [str.eeee]
pxor xmm1, xmm3
movdqa xmm3, xmmword [esp + 0x40]
pxor xmm3, xmm0
pxor xmm3, xmmword [esp + 0x60]
pxor xmm5, xmm6
pxor xmm0, xmm6
pxor xmm6, xmm2
pxor xmm6, xmm3
pxor xmm6, xmm1
movdqa xmmword [esp + 0xb0], xmm6
pxor xmm1, xmm2
movzx ecx, byte [esp + 0xb0]
movzx edx, byte [esp + 0xb1]
mov byte [edi + eax*4], cl
mov byte [edi + eax*4 + 4], dl
movzx ecx, byte [esp + 0xb2]
mov byte [edi + eax*4 + 8], cl
movzx ecx, byte [esp + 0xb3]
mov byte [edi + eax*4 + 0xc], cl
movdqa xmm2, xmmword [esp + 0x60]
pxor xmm7, xmm2
pxor xmm7, xmm5
pxor xmm7, xmm1
movdqa xmmword [esp + 0xc0], xmm7
pxor xmm4, xmm2
pxor xmm0, xmm4
movzx ecx, byte [esp + 0xc0]
movzx edx, byte [esp + 0xc1]
mov byte [edi + eax*4 + 1], cl
mov byte [edi + eax*4 + 5], dl
movzx ecx, byte [esp + 0xc2]
mov byte [edi + eax*4 + 9], cl
movzx ecx, byte [esp + 0xc3]
mov byte [edi + eax*4 + 0xd], cl
pxor xmm0, xmm1
movdqa xmmword [esp + 0xa0], xmm0
movdqa xmm0, xmmword [esp + 0x10]
pxor xmm0, xmm2
pxor xmm0, xmm5
pxor xmm0, xmm1
movzx ecx, byte [esp + 0xa0]
movzx edx, byte [esp + 0xa1]
mov byte [edi + eax*4 + 2], cl
mov byte [edi + eax*4 + 6], dl
movzx ecx, byte [esp + 0xa2]
mov byte [edi + eax*4 + 0xa], cl
movzx ecx, byte [esp + 0xa3]
mov byte [edi + eax*4 + 0xe], cl
movdqa xmmword [esp + 0x90], xmm0
movzx ecx, byte [esp + 0x90]
movzx edx, byte [esp + 0x91]
mov byte [edi + eax*4 + 3], cl
mov byte [edi + eax*4 + 7], dl
movzx ecx, byte [esp + 0x92]
mov byte [edi + eax*4 + 0xb], cl
movzx ecx, byte [esp + 0x93]
mov byte [edi + eax*4 + 0xf], cl
add eax, 4
cmp eax, 4
jne 0x4013b0
add bl, 0xff
mov bh, byte [edi + 0xd]
mov al, byte [edi + 9]
mov byte [esp + 0xe], al
mov al, byte [edi + 5]
mov byte [esp + 0x70], al
mov al, byte [edi]
mov byte [esp + 0x80], al
mov al, byte [edi + 1]
mov byte [esp + 0x40], al
mov al, byte [edi + 2]
mov byte [esp + 0x50], al
mov al, byte [edi + 0xa]
mov byte [esp + 0xd], al
mov al, byte [edi + 6]
mov byte [esp + 0x30], al
mov ah, byte [edi + 0xe]
mov al, byte [edi + 3]
mov byte [esp + 0x10], al
mov al, byte [edi + 7]
mov byte [esp + 0x60], al
mov al, byte [edi + 0xb]
mov byte [esp + 0xf], al
mov dh, byte [edi + 0xf]
mov dl, byte [edi + 4]
mov ch, byte [edi + 8]
mov cl, byte [edi + 0xc]
jmp 0x4012b0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret