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

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 0x3c608a
pxor xmm5, xmm5
pcmpeqd xmm6, xmm6
psrld xmm6, 0x1f
cmp eax, 4
jl 0x3c5ff9
test ecx, 0xf
je 0x3c5e79
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
mov ecx, edx
lea esp, [esp]
jmp 0x3c5e79
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
pxor xmm0, xmm5
paddd xmm5, xmm6
pxor xmm1, xmm5
paddd xmm5, xmm6
pxor xmm2, xmm5
paddd xmm5, xmm6
pxor xmm3, xmm5
paddd xmm5, xmm6
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 0x3c608a
cmp eax, 4
jge 0x3c5e79
lea esp, [esp]
mov edi, edi
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
pxor xmm0, xmm5
add esi, 0x10
movdqu xmmword [edi + esi - 0x10], xmm0
paddd xmm5, xmm6
dec eax
jne 0x3c5ff9
movdqu xmm6, xmmword [ebp - 0x120]
pop edi
pop esi
leave
ret 0x10