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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffec0
push ebx
push esi
push edi
movdqu xmmword [ebp - 0x120], xmm6
cmp dword [ebp + 0x10], 0
je 0x3c5254
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
mov ecx, dword [ebp + 0x14]
mov eax, dword [ebp + 0x1c]
mov edx, dword [ebp + 0x18]
shr ecx, 4
mov dword [ebp - 0x124], eax
mov dword [ebp - 0x128], edx
mov dword [ebp - 0x130], ecx
xor eax, eax
mov dword [ebp - 0x12c], eax
movdqu xmm5, xmmword [ebp - 0x130]
xor eax, eax
inc eax
movd xmm6, eax
test byte [ebp + 0x14], 0xf
je 0x3c4ee4
movdqa xmm0, xmm5
movdqu xmm4, xmmword [esi]
pxor xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x10]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x20]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x30]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x40]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x50]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x60]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x70]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x80]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x90]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0xa0]
aesenclast xmm0, xmm4
movdqu xmmword [ebp - 0x140], xmm0
mov edx, dword [ebp + 0x14]
mov ecx, 0x10
and edx, 0xf
sub ecx, edx
cmp ecx, dword [ebp + 0x10]
cmova ecx, dword [ebp + 0x10]
lea edx, [ebp + edx - 0x140]
mov ebx, ecx
mov al, byte [edx + ecx - 1]
xor byte [edi + ecx - 1], al
dec ecx
jne 0x3c4eca
add edi, ebx
sub dword [ebp + 0x10], ebx
je 0x3c5254
paddd xmm5, xmm6
cmp dword [ebp + 0x10], 0x40
jl 0x3c5119
test esi, 0xf
je 0x3c4f89
lea edx, [ebp - 0x101]
and edx, 0xfffffff0
movdqu xmm4, xmmword [esi]
movdqa xmmword [edx], xmm4
movdqu xmm4, xmmword [esi + 0x10]
movdqa xmmword [edx + 0x10], xmm4
movdqu xmm4, xmmword [esi + 0x20]
movdqa xmmword [edx + 0x20], xmm4
movdqu xmm4, xmmword [esi + 0x30]
movdqa xmmword [edx + 0x30], xmm4
movdqu xmm4, xmmword [esi + 0x40]
movdqa xmmword [edx + 0x40], xmm4
movdqu xmm4, xmmword [esi + 0x50]
movdqa xmmword [edx + 0x50], xmm4
movdqu xmm4, xmmword [esi + 0x60]
movdqa xmmword [edx + 0x60], xmm4
movdqu xmm4, xmmword [esi + 0x70]
movdqa xmmword [edx + 0x70], xmm4
movdqu xmm4, xmmword [esi + 0x80]
movdqa xmmword [edx + 0x80], xmm4
movdqu xmm4, xmmword [esi + 0x90]
movdqa xmmword [edx + 0x90], xmm4
movdqu xmm4, xmmword [esi + 0xa0]
movdqa xmmword [edx + 0xa0], xmm4
mov esi, edx
lea ebx, [ebx]
movdqa xmm0, xmm5
paddd xmm5, xmm6
movdqa xmm1, xmm5
paddd xmm5, xmm6
movdqa xmm2, xmm5
paddd xmm5, xmm6
movdqa xmm3, xmm5
paddd xmm5, xmm6
movdqa xmm4, xmmword [esi]
pxor xmm0, xmm4
pxor xmm1, xmm4
pxor xmm2, xmm4
pxor xmm3, xmm4
movdqa xmm4, xmmword [esi + 0x10]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [esi + 0x20]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [esi + 0x30]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [esi + 0x40]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [esi + 0x50]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [esi + 0x60]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [esi + 0x70]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [esi + 0x80]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [esi + 0x90]
aesenc xmm0, xmm4
aesenc xmm1, xmm4
aesenc xmm2, xmm4
aesenc xmm3, xmm4
movdqa xmm4, xmmword [esi + 0xa0]
aesenclast xmm0, xmm4
aesenclast xmm1, xmm4
aesenclast xmm2, xmm4
aesenclast xmm3, xmm4
movdqu xmm4, xmmword [edi]
pxor xmm0, xmm4
movdqu xmm4, xmmword [edi + 0x10]
pxor xmm1, xmm4
movdqu xmm4, xmmword [edi + 0x20]
pxor xmm2, xmm4
movdqu xmm4, xmmword [edi + 0x30]
pxor xmm3, xmm4
movdqu xmmword [edi], xmm0
movdqu xmmword [edi + 0x10], xmm1
movdqu xmmword [edi + 0x20], xmm2
movdqu xmmword [edi + 0x30], xmm3
add edi, 0x40
sub dword [ebp + 0x10], 0x40
je 0x3c5254
cmp dword [ebp + 0x10], 0x40
jge 0x3c4f89
lea esp, [esp]
jmp 0x3c5119
cmp dword [ebp + 0x10], 0x10
jb 0x3c51be
movdqa xmm0, xmm5
movdqu xmm4, xmmword [esi]
pxor xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x10]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x20]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x30]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x40]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x50]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x60]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x70]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x80]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x90]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0xa0]
aesenclast xmm0, xmm4
movdqu xmm4, xmmword [edi]
pxor xmm0, xmm4
movdqu xmmword [edi], xmm0
paddd xmm5, xmm6
add edi, 0x10
sub dword [ebp + 0x10], 0x10
jne 0x3c5119
jmp 0x3c5254
movdqa xmm0, xmm5
movdqu xmm4, xmmword [esi]
pxor xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x10]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x20]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x30]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x40]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x50]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x60]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x70]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x80]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0x90]
aesenc xmm0, xmm4
movdqu xmm4, xmmword [esi + 0xa0]
aesenclast xmm0, xmm4
movdqu xmmword [ebp - 0x140], xmm0
mov edx, dword [ebp + 0x10]
test edx, edx
je 0x3c5254
mov al, byte [ebp + edx - 0x141]
xor byte [edi + edx - 1], al
dec edx
jne 0x3c5246
movdqu xmm6, xmmword [ebp - 0x120]
pop edi
pop esi
pop ebx
leave
ret 0x18