Function at 0x3c7cc9
Capabilities:
Encode data using xor
Encrypt data using aes via x86 extensions

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffee0
push esi
push edi
mov eax, dword [ebp + 0x14]
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
movdqu xmmword [ebp - 0x120], xmm6
sub edi, esi
test eax, eax
je 0x3c809e
pxor xmm5, xmm5
pcmpeqd xmm6, xmm6
psrld xmm6, 0x1f
cmp eax, 4
jl 0x3c7fd9
test ecx, 0xf
je 0x3c7de9
lea edx, [ebp - 0x101]
and edx, 0xfffffff0
movdqu xmm4, xmmword [ecx]
movdqa xmmword [edx], xmm4
movdqu xmm4, xmmword [ecx + 0x10]
movdqa xmmword [edx + 0x10], xmm4
movdqu xmm4, xmmword [ecx + 0x20]
movdqa xmmword [edx + 0x20], xmm4
movdqu xmm4, xmmword [ecx + 0x30]
movdqa xmmword [edx + 0x30], xmm4
movdqu xmm4, xmmword [ecx + 0x40]
movdqa xmmword [edx + 0x40], xmm4
movdqu xmm4, xmmword [ecx + 0x50]
movdqa xmmword [edx + 0x50], xmm4
movdqu xmm4, xmmword [ecx + 0x60]
movdqa xmmword [edx + 0x60], xmm4
movdqu xmm4, xmmword [ecx + 0x70]
movdqa xmmword [edx + 0x70], xmm4
movdqu xmm4, xmmword [ecx + 0x80]
movdqa xmmword [edx + 0x80], xmm4
movdqu xmm4, xmmword [ecx + 0x90]
movdqa xmmword [edx + 0x90], xmm4
movdqu xmm4, xmmword [ecx + 0xa0]
movdqa xmmword [edx + 0xa0], xmm4
movdqu xmm4, xmmword [ecx + 0xb0]
movdqa xmmword [edx + 0xb0], xmm4
movdqu xmm4, xmmword [ecx + 0xc0]
movdqa xmmword [edx + 0xc0], xmm4
movdqu xmm4, xmmword [ecx + 0xd0]
movdqa xmmword [edx + 0xd0], xmm4
movdqu xmm4, xmmword [ecx + 0xe0]
movdqa xmmword [edx + 0xe0], xmm4
mov ecx, edx
lea esp, [esp]
jmp 0x3c7de9
movdqa xmm4, xmmword [ecx]
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
pxor xmm0, xmm5
paddd xmm5, xmm6
pxor xmm1, xmm5
paddd xmm5, xmm6
pxor xmm2, xmm5
paddd xmm5, xmm6
pxor xmm3, xmm5
paddd xmm5, xmm6
add esi, 0x40
movdqa xmm4, xmmword [ecx + 0x10]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0x20]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0x30]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0x40]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0x50]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0x60]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0x70]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0x80]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0x90]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0xa0]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0xb0]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0xc0]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0xd0]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [ecx + 0xe0]
aesenclast xmm0, xmm4
aesenclast xmm1, xmm4
aesenclast xmm2, xmm4
aesenclast xmm3, xmm4
movdqu xmmword [esi + edi - 0x40], xmm0
movdqu xmmword [esi + edi - 0x30], xmm1
movdqu xmmword [esi + edi - 0x20], xmm2
movdqu xmmword [esi + edi - 0x10], xmm3
sub eax, 4
je 0x3c809e
cmp eax, 4
jge 0x3c7de9
lea esp, [esp]
mov edi, edi
movdqu xmm0, xmmword [esi]
add esi, 0x10
pxor xmm0, xmm5
movdqu xmm4, xmmword [ecx]
pxor xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x10]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x20]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x30]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x40]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x50]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x60]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x70]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x80]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0x90]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0xa0]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0xb0]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0xc0]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0xd0]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [ecx + 0xe0]
aesenclast xmm0, xmm4
movdqu xmmword [esi + edi - 0x10], xmm0
paddd xmm5, xmm6
dec eax
jne 0x3c7fd9
movdqu xmm6, xmmword [ebp - 0x120]
pop edi
pop esi
leave
ret 0x10