Function at 0x4016a0
Capabilities:
Decrypt data using aes via x86 extensions
Encode data using xor

Disassembly:
mov ecx, dword [esp + 4]
push esi
push edi
push ebp
mov ebp, esp
sub esp, 0x100
and esp, 0xfffffff0
mov eax, dword [ecx + 0x10]
mov esi, dword [ecx]
mov edi, dword [ecx + 4]
mov ecx, dword [ecx + 8]
sub edi, esi
test eax, eax
je 0x401959
cmp eax, 4
jl 0x4018d0
test ecx, 0xf
je 0x401770
movdqu xmm4, xmmword [ecx]
movdqa xmmword [esp], xmm4
movdqu xmm4, xmmword [ecx + 0x10]
movdqa xmmword [esp + 0x10], xmm4
movdqu xmm4, xmmword [ecx + 0x20]
movdqa xmmword [esp + 0x20], xmm4
movdqu xmm4, xmmword [ecx + 0x30]
movdqa xmmword [esp + 0x30], xmm4
movdqu xmm4, xmmword [ecx + 0x40]
movdqa xmmword [esp + 0x40], xmm4
movdqu xmm4, xmmword [ecx + 0x50]
movdqa xmmword [esp + 0x50], xmm4
movdqu xmm4, xmmword [ecx + 0x60]
movdqa xmmword [esp + 0x60], xmm4
movdqu xmm4, xmmword [ecx + 0x70]
movdqa xmmword [esp + 0x70], xmm4
movdqu xmm4, xmmword [ecx + 0x80]
movdqa xmmword [esp + 0x80], xmm4
movdqu xmm4, xmmword [ecx + 0x90]
movdqa xmmword [esp + 0x90], xmm4
movdqu xmm4, xmmword [ecx + 0xa0]
movdqa xmmword [esp + 0xa0], xmm4
mov ecx, esp
nop word [eax + eax]
test eax, eax
je 0x401959
cmp eax, 4
jl 0x4018d0
movdqa xmm4, xmmword [ecx + 0xa0]
movdqu xmm0, xmmword [esi]
pxor xmm0, xmm4
movdqu xmm1, xmmword [esi + 0x10]
pxor xmm1, xmm4
movdqu xmm2, xmmword [esi + 0x20]
pxor xmm2, xmm4
movdqu xmm3, xmmword [esi + 0x30]
pxor xmm3, xmm4
add esi, 0x40
movdqa xmm4, xmmword [ecx + 0x90]
aesdec xmm0, xmm4
aesdec xmm1, xmm4
aesdec xmm2, xmm4
aesdec xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0x80]
aesdec xmm0, xmm4
aesdec xmm1, xmm4
aesdec xmm2, xmm4
aesdec xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0x70]
aesdec xmm0, xmm4
aesdec xmm1, xmm4
aesdec xmm2, xmm4
aesdec xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0x60]
aesdec xmm0, xmm4
aesdec xmm1, xmm4
aesdec xmm2, xmm4
aesdec xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0x50]
aesdec xmm0, xmm4
aesdec xmm1, xmm4
aesdec xmm2, xmm4
aesdec xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0x40]
aesdec xmm0, xmm4
aesdec xmm1, xmm4
aesdec xmm2, xmm4
aesdec xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0x30]
aesdec xmm0, xmm4
aesdec xmm1, xmm4
aesdec xmm2, xmm4
aesdec xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0x20]
aesdec xmm0, xmm4
aesdec xmm1, xmm4
aesdec xmm2, xmm4
aesdec xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0x10]
aesdec xmm0, xmm4
aesdec xmm1, xmm4
aesdec xmm2, xmm4
aesdec xmm3, xmm4
movdqa xmm4, xmmword [ecx]
aesdeclast xmm0, xmm4
aesdeclast xmm1, xmm4
aesdeclast xmm2, xmm4
aesdeclast xmm3, xmm4
sub eax, 4
movdqu xmmword [esi + edi - 0x40], xmm0
movdqu xmmword [esi + edi - 0x30], xmm1
movdqu xmmword [esi + edi - 0x20], xmm2
movdqu xmmword [esi + edi - 0x10], xmm3
jmp 0x401770
movdqu xmm0, xmmword [esi]
movdqu xmm4, xmmword [ecx + 0xa0]
pxor xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x90]
aesdec xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x80]
aesdec xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x70]
aesdec xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x60]
aesdec xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x50]
aesdec xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x40]
aesdec xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x30]
aesdec xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x20]
aesdec xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x10]
aesdec xmm0, xmm4
movdqu xmm4, xmmword [ecx]
aesdeclast xmm0, xmm4
add esi, 0x10
movdqu xmmword [edi + esi - 0x10], xmm0
dec eax
jne 0x4018d0
mov esp, ebp
pop ebp
pop edi
pop esi
ret