Function at 0x5505a0
Capabilities:
Encrypt data using aes via x86 extensions

Disassembly:
push ebp
push edi
push esi
push ebx
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov esi, dword [esp + 0x20]
movdqa xmm6, xmmword [0x651700]
movdqa xmm5, xmmword [esi]
cmp dword [esp + 0x24], 3
jbe 0x550891
mov ebp, edx
mov dword [esp + 0x18], edx
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp + 0x1c], ecx
nop
mov ecx, 0x6516c0
cmp byte [edx + 0xf], 0xfb
ja 0x550618
movdqa xmm0, xmm5
movdqa xmm2, xmmword [ecx]
movdqa xmm3, xmmword [ecx + 0x10]
movdqa xmm4, xmmword [ecx + 0x20]
movdqa xmm5, xmmword [ecx + 0x30]
paddb xmm2, xmm0
paddb xmm3, xmm0
paddb xmm4, xmm0
paddb xmm5, xmm0
movdqa xmm1, xmmword [eax]
jmp 0x550690
movdqa xmm0, xmm5
movdqa xmm2, xmm0
pcmpeqd xmm1, xmm1
psrldq xmm1, 8
pshufb xmm2, xmm6
psubq xmm2, xmm1
movdqa xmm3, xmm2
psubq xmm3, xmm1
movdqa xmm4, xmm3
psubq xmm4, xmm1
movdqa xmm5, xmm4
psubq xmm5, xmm1
cmp dword [edx + 8], 0xffffffff
jne 0x550678
mov esi, dword [edx + 0xc]
bswap esi
cmp esi, 0xfffffffc
jb 0x550678
pslldq xmm1, 8
je 0x550674
cmp esi, 0xfffffffe
jb 0x550670
je 0x55066c
psubq xmm2, xmm1
psubq xmm3, xmm1
psubq xmm4, xmm1
psubq xmm5, xmm1
movdqa xmm1, xmmword [eax]
pshufb xmm2, xmm6
pshufb xmm3, xmm6
pshufb xmm4, xmm6
pshufb xmm5, xmm6
movdqa xmmword [edx], xmm5
mov esi, dword [eax + 0x1e0]
pxor xmm0, xmm1
pxor xmm2, xmm1
pxor xmm3, xmm1
pxor xmm4, xmm1
movdqa xmm1, xmmword [eax + 0x10]
aesenc xmm0, xmm1
aesenc xmm2, xmm1
aesenc xmm3, xmm1
aesenc xmm4, xmm1
movdqa xmm1, xmmword [eax + 0x20]
aesenc xmm0, xmm1
aesenc xmm2, xmm1
aesenc xmm3, xmm1
aesenc xmm4, xmm1
movdqa xmm1, xmmword [eax + 0x30]
aesenc xmm0, xmm1
aesenc xmm2, xmm1
aesenc xmm3, xmm1
aesenc xmm4, xmm1
movdqa xmm1, xmmword [eax + 0x40]
aesenc xmm0, xmm1
aesenc xmm2, xmm1
aesenc xmm3, xmm1
aesenc xmm4, xmm1
movdqa xmm1, xmmword [eax + 0x50]
aesenc xmm0, xmm1
aesenc xmm2, xmm1
aesenc xmm3, xmm1
aesenc xmm4, xmm1
movdqa xmm1, xmmword [eax + 0x60]
aesenc xmm0, xmm1
aesenc xmm2, xmm1
aesenc xmm3, xmm1
aesenc xmm4, xmm1
movdqa xmm1, xmmword [eax + 0x70]
aesenc xmm0, xmm1
aesenc xmm2, xmm1
aesenc xmm3, xmm1
aesenc xmm4, xmm1
movdqa xmm1, xmmword [eax + 0x80]
aesenc xmm0, xmm1
aesenc xmm2, xmm1
aesenc xmm3, xmm1
aesenc xmm4, xmm1
movdqa xmm1, xmmword [eax + 0x90]
aesenc xmm0, xmm1
aesenc xmm2, xmm1
aesenc xmm3, xmm1
aesenc xmm4, xmm1
movdqa xmm1, xmmword [eax + 0xa0]
cmp esi, 0xa
je 0x550813
aesenc xmm0, xmm1
aesenc xmm2, xmm1
aesenc xmm3, xmm1
aesenc xmm4, xmm1
movdqa xmm1, xmmword [eax + 0xb0]
aesenc xmm0, xmm1
aesenc xmm2, xmm1
aesenc xmm3, xmm1
aesenc xmm4, xmm1
movdqa xmm1, xmmword [eax + 0xc0]
cmp esi, 0xc
je 0x550813
aesenc xmm0, xmm1
aesenc xmm2, xmm1
aesenc xmm3, xmm1
aesenc xmm4, xmm1
movdqa xmm1, xmmword [eax + 0xd0]
aesenc xmm0, xmm1
aesenc xmm2, xmm1
aesenc xmm3, xmm1
aesenc xmm4, xmm1
movdqa xmm1, xmmword [eax + 0xe0]
aesenclast xmm0, xmm1
aesenclast xmm2, xmm1
aesenclast xmm3, xmm1
aesenclast xmm4, xmm1
movdqu xmm1, xmmword [ebx]
pxor xmm0, xmm1
movdqu xmmword [ebp], xmm0
movdqu xmm1, xmmword [ebx + 0x10]
pxor xmm2, xmm1
movdqu xmmword [ebp + 0x10], xmm2
movdqu xmm1, xmmword [ebx + 0x20]
pxor xmm3, xmm1
movdqu xmmword [ebp + 0x20], xmm3
movdqu xmm1, xmmword [ebx + 0x30]
pxor xmm4, xmm1
movdqu xmmword [ebp + 0x30], xmm4
sub edi, 4
add ebp, 0x40
add ebx, 0x40
cmp edi, 3
ja 0x5505e0
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
and dword [esp + 0x24], 3
lea ebx, [esi - 4]
shr ebx, 2
add ebx, 1
shl ebx, 6
add edx, ebx
add ecx, ebx
mov ebx, dword [esp + 0x24]
test ebx, ebx
je 0x5509ab
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x24]
movdqa xmm0, xmm5
pcmpeqd xmm1, xmm1
psrldq xmm1, 8
pshufb xmm5, xmm6
psubq xmm5, xmm1
cmp dword [edi + 8], 0xffffffff
jne 0x5508d0
cmp dword [edi + 0xc], 0xffffffff
jne 0x5508d0
pslldq xmm1, 8
psubq xmm5, xmm1
pshufb xmm5, xmm6
movdqa xmmword [edi], xmm5
pxor xmm0, xmmword [eax]
movdqa xmm1, xmmword [eax + 0x10]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [eax + 0x20]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [eax + 0x30]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [eax + 0x40]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [eax + 0x50]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [eax + 0x60]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [eax + 0x70]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [eax + 0x80]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [eax + 0x90]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [eax + 0xa0]
cmp dword [eax + 0x1e0], 0xa
je 0x55098b
aesenc xmm0, xmm1
movdqa xmm1, xmmword [eax + 0xb0]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [eax + 0xc0]
cmp dword [eax + 0x1e0], 0xc
je 0x55098b
aesenc xmm0, xmm1
movdqa xmm1, xmmword [eax + 0xd0]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [eax + 0xe0]
aesenclast xmm0, xmm1
movdqu xmm1, xmmword [ecx]
pxor xmm0, xmm1
movdqu xmmword [edx], xmm0
add edx, 0x10
add ecx, 0x10
sub ebx, 1
jne 0x5508a5
pxor xmm0, xmm0
pxor xmm1, xmm1
pxor xmm2, xmm2
pxor xmm3, xmm3
pxor xmm4, xmm4
pxor xmm5, xmm5
pxor xmm6, xmm6
pop ebx
pop esi
pop edi
pop ebp
ret