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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x14
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov ecx, dword [eax + 0x1e8]
mov ebx, dword [eax + 0x1ec]
movdqu xmm5, xmmword [eax + 0x1b0]
movdqu xmm6, xmmword [eax + 0x1c0]
mov esi, dword [esp + 0x30]
test esi, esi
je 0x551dd4
mov esi, ecx
and esi, 3
test esi, esi
lea esi, [eax + 0x200]
je 0x551e17
lea ebp, [ecx + 1]
mov dword [esp], esi
mov esi, ebp
jmp 0x551ce4
mov edi, ecx
add esi, 1
and edi, 3
test edi, edi
je 0x551e14
add ecx, 1
adc ebx, 0
tzcnt edi, esi
add edi, 0xa
shl edi, 4
movdqu xmm1, xmmword [eax + edi]
movdqu xmm0, xmmword [edx]
pxor xmm5, xmm1
pxor xmm0, xmm5
mov edi, dword [eax + 0x3e0]
mov ebp, dword [esp]
movdqa xmm1, xmmword [ebp]
pxor xmm0, xmm1
movdqa xmm1, xmmword [ebp + 0x10]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [ebp + 0x20]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [ebp + 0x30]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [ebp + 0x40]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [ebp + 0x50]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [ebp + 0x60]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [ebp + 0x70]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [ebp + 0x80]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [ebp + 0x90]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [ebp + 0xa0]
cmp edi, 0xa
je 0x551dbd
aesenc xmm0, xmm1
movdqa xmm1, xmmword [ebp + 0xb0]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [ebp + 0xc0]
cmp edi, 0xc
je 0x551dbd
aesenc xmm0, xmm1
movdqa xmm1, xmmword [ebp + 0xd0]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [ebp + 0xe0]
aesenclast xmm0, xmm1
pxor xmm6, xmm0
add edx, 0x10
sub dword [esp + 0x30], 1
jne 0x551cd4
mov dword [eax + 0x1e8], ecx
mov dword [eax + 0x1ec], ebx
movdqu xmmword [eax + 0x1b0], xmm5
movdqu xmmword [eax + 0x1c0], xmm6
pxor xmm0, xmm0
pxor xmm1, xmm1
pxor xmm2, xmm2
pxor xmm3, xmm3
pxor xmm4, xmm4
pxor xmm5, xmm5
pxor xmm6, xmm6
add esp, 0x14
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, dword [esp]
cmp dword [esp + 0x30], 3
jbe 0x55208a
add ecx, 4
adc ebx, 0
lea edi, [ecx + 4]
mov dword [esp], ecx
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x30]
sub ebx, 4
shr ebx, 2
mov dword [esp + 0xc], ebx
lea ebp, [edi + ebx*4]
mov ebx, edx
jmp 0x551e53
add edi, 4
tzcnt ecx, ecx
movdqu xmm0, xmmword [eax + 0xa0]
movdqu xmm1, xmmword [ebx]
pxor xmm5, xmm0
pxor xmm1, xmm5
movdqu xmm0, xmmword [eax + 0xb0]
movdqu xmm2, xmmword [ebx + 0x10]
pxor xmm5, xmm0
pxor xmm2, xmm5
movdqu xmm0, xmmword [eax + 0xa0]
movdqu xmm3, xmmword [ebx + 0x20]
pxor xmm5, xmm0
pxor xmm3, xmm5
add ecx, 0xa
shl ecx, 4
movdqu xmm0, xmmword [eax + ecx]
movdqu xmm4, xmmword [ebx + 0x30]
pxor xmm5, xmm0
pxor xmm4, xmm5
mov ecx, dword [eax + 0x3e0]
movdqa xmm0, xmmword [esi]
pxor xmm1, xmm0
pxor xmm2, xmm0
pxor xmm3, xmm0
pxor xmm4, xmm0
movdqa xmm0, xmmword [esi + 0x10]
aesenc xmm1, xmm0
aesenc xmm2, xmm0
aesenc xmm3, xmm0
aesenc xmm4, xmm0
movdqa xmm0, xmmword [esi + 0x20]
aesenc xmm1, xmm0
aesenc xmm2, xmm0
aesenc xmm3, xmm0
aesenc xmm4, xmm0
movdqa xmm0, xmmword [esi + 0x30]
aesenc xmm1, xmm0
aesenc xmm2, xmm0
aesenc xmm3, xmm0
aesenc xmm4, xmm0
movdqa xmm0, xmmword [esi + 0x40]
aesenc xmm1, xmm0
aesenc xmm2, xmm0
aesenc xmm3, xmm0
aesenc xmm4, xmm0
movdqa xmm0, xmmword [esi + 0x50]
aesenc xmm1, xmm0
aesenc xmm2, xmm0
aesenc xmm3, xmm0
aesenc xmm4, xmm0
movdqa xmm0, xmmword [esi + 0x60]
aesenc xmm1, xmm0
aesenc xmm2, xmm0
aesenc xmm3, xmm0
aesenc xmm4, xmm0
movdqa xmm0, xmmword [esi + 0x70]
aesenc xmm1, xmm0
aesenc xmm2, xmm0
aesenc xmm3, xmm0
aesenc xmm4, xmm0
movdqa xmm0, xmmword [esi + 0x80]
aesenc xmm1, xmm0
aesenc xmm2, xmm0
aesenc xmm3, xmm0
aesenc xmm4, xmm0
movdqa xmm0, xmmword [esi + 0x90]
aesenc xmm1, xmm0
aesenc xmm2, xmm0
aesenc xmm3, xmm0
aesenc xmm4, xmm0
movdqa xmm0, xmmword [esi + 0xa0]
cmp ecx, 0xa
je 0x552030
aesenc xmm1, xmm0
aesenc xmm2, xmm0
aesenc xmm3, xmm0
aesenc xmm4, xmm0
movdqa xmm0, xmmword [esi + 0xb0]
aesenc xmm1, xmm0
aesenc xmm2, xmm0
aesenc xmm3, xmm0
aesenc xmm4, xmm0
movdqa xmm0, xmmword [esi + 0xc0]
cmp ecx, 0xc
je 0x552030
aesenc xmm1, xmm0
aesenc xmm2, xmm0
aesenc xmm3, xmm0
aesenc xmm4, xmm0
movdqa xmm0, xmmword [esi + 0xd0]
aesenc xmm1, xmm0
aesenc xmm2, xmm0
aesenc xmm3, xmm0
aesenc xmm4, xmm0
movdqa xmm0, xmmword [esi + 0xe0]
aesenclast xmm1, xmm0
aesenclast xmm2, xmm0
aesenclast xmm3, xmm0
aesenclast xmm4, xmm0
pxor xmm6, xmm1
pxor xmm6, xmm2
pxor xmm6, xmm3
pxor xmm6, xmm4
add ebx, 0x40
cmp edi, ebp
mov ecx, edi
jne 0x551e50
mov edi, dword [esp + 0xc]
xor ebx, ebx
mov ecx, edi
shld ebx, edi, 2
shl ecx, 2
add ecx, dword [esp]
adc ebx, dword [esp + 4]
add edi, 1
shl edi, 6
add edx, edi
and dword [esp + 0x30], 3
je 0x551dd4
mov edi, dword [esp + 0x30]
add ecx, 1
adc ebx, 0
mov dword [esp], ecx
mov dword [esp + 4], ebx
mov ebx, ecx
add edi, ecx
nop
tzcnt ecx, ebx
add ecx, 0xa
shl ecx, 4
movdqu xmm1, xmmword [eax + ecx]
movdqu xmm0, xmmword [edx]
pxor xmm5, xmm1
pxor xmm0, xmm5
mov ecx, dword [eax + 0x3e0]
movdqa xmm1, xmmword [esi]
pxor xmm0, xmm1
movdqa xmm1, xmmword [esi + 0x10]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [esi + 0x20]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [esi + 0x30]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [esi + 0x40]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [esi + 0x50]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [esi + 0x60]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [esi + 0x70]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [esi + 0x80]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [esi + 0x90]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [esi + 0xa0]
cmp ecx, 0xa
je 0x55216f
aesenc xmm0, xmm1
movdqa xmm1, xmmword [esi + 0xb0]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [esi + 0xc0]
cmp ecx, 0xc
je 0x55216f
aesenc xmm0, xmm1
movdqa xmm1, xmmword [esi + 0xd0]
aesenc xmm0, xmm1
movdqa xmm1, xmmword [esi + 0xe0]
aesenclast xmm0, xmm1
pxor xmm6, xmm0
add ebx, 1
add edx, 0x10
cmp ebx, edi
jne 0x5520a0
mov edx, dword [esp + 0x30]
xor ebx, ebx
lea ecx, [edx - 1]
add ecx, dword [esp]
adc ebx, dword [esp + 4]
jmp 0x551dd4