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

Disassembly:
mov edx, dword [esp + 0x10]
push ebx
push ebp
mov ebp, dword [esp + 0x10]
mov byte [edx], 0
push esi
mov esi, dword [esp + 0x18]
movups xmm0, xmmword [ebp]
push edi
mov edi, dword [esp + 0x14]
pxor xmm0, xmmword [esi]
movups xmmword [edi], xmm0
movzx eax, byte [edx]
movups xmm0, xmmword [0x651410]
inc eax
add eax, eax
movups xmmword [edi + eax*8], xmm0
movzx eax, byte [edx]
movups xmm0, xmmword [0x651400]
add eax, 2
add eax, eax
movups xmmword [edi + eax*8], xmm0
movzx ecx, byte [edx]
lea eax, [ecx + 2]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
lea eax, [ecx + 3]
pxor xmm0, xmmword [ebp]
add eax, eax
movups xmmword [edi + eax*8], xmm0
movzx ecx, byte [edx]
lea eax, [ecx + 1]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
lea eax, [ecx + 4]
pxor xmm0, xmmword [ebp]
add eax, eax
movups xmmword [edi + eax*8], xmm0
movups xmm0, xmmword [ebp]
pxor xmm0, xmmword [esi]
movups xmmword [ebp], xmm0
pxor xmm0, xmmword [esi]
movups xmmword [ebp], xmm0
mov bl, byte [edx]
movzx eax, byte [edx]
shr bl, 3
dec bl
and bl, 1
lea ecx, [eax + 4]
shl bl, 3
add eax, 3
movzx edx, bl
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 4]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 3]
add eax, 2
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 3]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 2]
inc eax
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 2]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov ecx, dword [esp + 0x20]
add edx, edx
movzx eax, byte [ecx]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
aesenc xmm0, xmmword [edi + eax*8 + 0x10]
movups xmmword [edi + edx*8 + 0x10], xmm0
movzx ecx, byte [ecx]
mov eax, ecx
add eax, eax
movups xmm1, xmmword [edi + eax*8]
lea eax, [ecx + 4]
pxor xmm1, xmmword [ebp]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
mov eax, dword [esp + 0x20]
aesenc xmm0, xmm1
movups xmmword [edi + edx*8], xmm0
mov byte [eax], bl
movups xmm0, xmmword [ebp]
pxor xmm0, xmmword [esi]
movups xmmword [ebp], xmm0
mov al, byte [eax]
mov bl, al
movzx eax, al
shr bl, 3
dec bl
and bl, 1
lea ecx, [eax + 4]
shl bl, 3
add eax, 3
movzx edx, bl
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 4]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 3]
add eax, 2
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 3]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 2]
inc eax
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 2]
aesenc xmm0, xmmword [edi + ecx*8]
mov ecx, dword [esp + 0x20]
add eax, eax
add edx, edx
movups xmmword [edi + eax*8], xmm0
movzx eax, byte [ecx]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
aesenc xmm0, xmmword [edi + eax*8 + 0x10]
movups xmmword [edi + edx*8 + 0x10], xmm0
movzx ecx, byte [ecx]
mov eax, ecx
add eax, eax
movups xmm1, xmmword [edi + eax*8]
lea eax, [ecx + 4]
pxor xmm1, xmmword [ebp]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
mov eax, dword [esp + 0x20]
aesenc xmm0, xmm1
movups xmmword [edi + edx*8], xmm0
mov byte [eax], bl
movups xmm0, xmmword [ebp]
pxor xmm0, xmmword [esi]
movups xmmword [ebp], xmm0
mov al, byte [eax]
mov bl, al
movzx eax, al
shr bl, 3
dec bl
and bl, 1
lea ecx, [eax + 4]
shl bl, 3
add eax, 3
movzx edx, bl
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 4]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 3]
add eax, 2
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 3]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 2]
inc eax
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 2]
aesenc xmm0, xmmword [edi + ecx*8]
mov ecx, dword [esp + 0x20]
add eax, eax
add edx, edx
movups xmmword [edi + eax*8], xmm0
movzx eax, byte [ecx]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
aesenc xmm0, xmmword [edi + eax*8 + 0x10]
movups xmmword [edi + edx*8 + 0x10], xmm0
movzx ecx, byte [ecx]
mov eax, ecx
add eax, eax
movups xmm1, xmmword [edi + eax*8]
lea eax, [ecx + 4]
pxor xmm1, xmmword [ebp]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
mov eax, dword [esp + 0x20]
aesenc xmm0, xmm1
movups xmmword [edi + edx*8], xmm0
mov byte [eax], bl
movups xmm0, xmmword [ebp]
pxor xmm0, xmmword [esi]
movups xmmword [ebp], xmm0
mov al, byte [eax]
mov bl, al
movzx eax, al
shr bl, 3
dec bl
and bl, 1
lea ecx, [eax + 4]
shl bl, 3
add eax, 3
movzx edx, bl
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 4]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 3]
add eax, 2
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 3]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 2]
inc eax
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 2]
aesenc xmm0, xmmword [edi + ecx*8]
mov ecx, dword [esp + 0x20]
add eax, eax
add edx, edx
movups xmmword [edi + eax*8], xmm0
movzx eax, byte [ecx]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
aesenc xmm0, xmmword [edi + eax*8 + 0x10]
movups xmmword [edi + edx*8 + 0x10], xmm0
movzx ecx, byte [ecx]
mov eax, ecx
add eax, eax
movups xmm1, xmmword [edi + eax*8]
lea eax, [ecx + 4]
pxor xmm1, xmmword [ebp]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
mov eax, dword [esp + 0x20]
aesenc xmm0, xmm1
movups xmmword [edi + edx*8], xmm0
mov byte [eax], bl
movups xmm0, xmmword [ebp]
pxor xmm0, xmmword [esi]
movups xmmword [ebp], xmm0
mov al, byte [eax]
mov bl, al
movzx eax, al
shr bl, 3
dec bl
and bl, 1
lea ecx, [eax + 4]
shl bl, 3
add eax, 3
movzx edx, bl
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 4]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 3]
add eax, 2
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 3]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 2]
inc eax
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 2]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
add edx, edx
mov ecx, dword [esp + 0x20]
movzx eax, byte [ecx]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
aesenc xmm0, xmmword [edi + eax*8 + 0x10]
movups xmmword [edi + edx*8 + 0x10], xmm0
movzx ecx, byte [ecx]
mov eax, ecx
add eax, eax
movups xmm1, xmmword [edi + eax*8]
lea eax, [ecx + 4]
pxor xmm1, xmmword [ebp]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
mov eax, dword [esp + 0x20]
aesenc xmm0, xmm1
movups xmmword [edi + edx*8], xmm0
mov byte [eax], bl
movups xmm0, xmmword [ebp]
pxor xmm0, xmmword [esi]
movups xmmword [ebp], xmm0
mov al, byte [eax]
mov bl, al
movzx eax, al
shr bl, 3
dec bl
and bl, 1
lea ecx, [eax + 4]
shl bl, 3
add eax, 3
movzx edx, bl
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 4]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 3]
add eax, 2
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 3]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 2]
inc eax
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 2]
aesenc xmm0, xmmword [edi + ecx*8]
mov ecx, dword [esp + 0x20]
add eax, eax
add edx, edx
movups xmmword [edi + eax*8], xmm0
movzx eax, byte [ecx]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
aesenc xmm0, xmmword [edi + eax*8 + 0x10]
movups xmmword [edi + edx*8 + 0x10], xmm0
movzx ecx, byte [ecx]
mov eax, ecx
add eax, eax
movups xmm1, xmmword [edi + eax*8]
lea eax, [ecx + 4]
pxor xmm1, xmmword [ebp]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
mov eax, dword [esp + 0x20]
aesenc xmm0, xmm1
movups xmmword [edi + edx*8], xmm0
mov byte [eax], bl
movups xmm0, xmmword [ebp]
pxor xmm0, xmmword [esi]
movups xmmword [ebp], xmm0
mov al, byte [eax]
mov bl, al
movzx eax, al
shr bl, 3
dec bl
and bl, 1
lea ecx, [eax + 4]
shl bl, 3
add eax, 3
movzx edx, bl
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 4]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 3]
add eax, 2
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 3]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 2]
inc eax
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 2]
aesenc xmm0, xmmword [edi + ecx*8]
mov ecx, dword [esp + 0x20]
add eax, eax
add edx, edx
movups xmmword [edi + eax*8], xmm0
movzx eax, byte [ecx]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
aesenc xmm0, xmmword [edi + eax*8 + 0x10]
movups xmmword [edi + edx*8 + 0x10], xmm0
movzx ecx, byte [ecx]
mov eax, ecx
add eax, eax
movups xmm1, xmmword [edi + eax*8]
lea eax, [ecx + 4]
pxor xmm1, xmmword [ebp]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
mov eax, dword [esp + 0x20]
aesenc xmm0, xmm1
movups xmmword [edi + edx*8], xmm0
mov byte [eax], bl
movups xmm0, xmmword [ebp]
pxor xmm0, xmmword [esi]
movups xmmword [ebp], xmm0
mov al, byte [eax]
mov bl, al
movzx eax, al
shr bl, 3
dec bl
and bl, 1
lea ecx, [eax + 4]
shl bl, 3
add eax, 3
movzx edx, bl
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 4]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 3]
add eax, 2
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 3]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 2]
inc eax
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 2]
aesenc xmm0, xmmword [edi + ecx*8]
mov ecx, dword [esp + 0x20]
add eax, eax
add edx, edx
movups xmmword [edi + eax*8], xmm0
movzx eax, byte [ecx]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
aesenc xmm0, xmmword [edi + eax*8 + 0x10]
movups xmmword [edi + edx*8 + 0x10], xmm0
movzx ecx, byte [ecx]
mov eax, ecx
add eax, eax
movups xmm1, xmmword [edi + eax*8]
lea eax, [ecx + 4]
pxor xmm1, xmmword [ebp]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
mov eax, dword [esp + 0x20]
aesenc xmm0, xmm1
movups xmmword [edi + edx*8], xmm0
mov byte [eax], bl
movups xmm0, xmmword [ebp]
pxor xmm0, xmmword [esi]
movups xmmword [ebp], xmm0
mov al, byte [eax]
mov bl, al
movzx eax, al
shr bl, 3
dec bl
and bl, 1
lea ecx, [eax + 4]
shl bl, 3
add eax, 3
movzx edx, bl
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 4]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 3]
add eax, 2
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 3]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
lea ecx, [eax + 2]
inc eax
add ecx, ecx
add eax, eax
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 2]
aesenc xmm0, xmmword [edi + ecx*8]
mov ecx, dword [esp + 0x20]
add eax, eax
add edx, edx
movups xmmword [edi + eax*8], xmm0
movzx eax, byte [ecx]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
aesenc xmm0, xmmword [edi + eax*8 + 0x10]
movups xmmword [edi + edx*8 + 0x10], xmm0
movzx ecx, byte [ecx]
mov eax, ecx
add eax, eax
movups xmm1, xmmword [edi + eax*8]
lea eax, [ecx + 4]
pxor xmm1, xmmword [ebp]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
mov eax, dword [esp + 0x20]
aesenc xmm0, xmm1
movups xmmword [edi + edx*8], xmm0
mov byte [eax], bl
movups xmm0, xmmword [ebp]
pxor xmm0, xmmword [esi]
mov esi, eax
movups xmmword [ebp], xmm0
mov bl, byte [esi]
movzx eax, byte [esi]
shr bl, 3
dec bl
and bl, 1
lea ecx, [eax + 4]
shl bl, 3
add eax, 3
movzx edx, bl
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 4]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
movzx eax, byte [esi]
lea ecx, [eax + 3]
add eax, 2
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 3]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
movups xmmword [edi + eax*8], xmm0
movzx eax, byte [esi]
lea ecx, [eax + 2]
inc eax
add eax, eax
add ecx, ecx
movups xmm0, xmmword [edi + eax*8]
lea eax, [edx + 2]
aesenc xmm0, xmmword [edi + ecx*8]
add eax, eax
add edx, edx
movups xmmword [edi + eax*8], xmm0
movzx eax, byte [esi]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
aesenc xmm0, xmmword [edi + eax*8 + 0x10]
movups xmmword [edi + edx*8 + 0x10], xmm0
movzx ecx, byte [esi]
mov eax, ecx
add eax, eax
movups xmm1, xmmword [edi + eax*8]
lea eax, [ecx + 4]
pxor xmm1, xmmword [ebp]
add eax, eax
movups xmm0, xmmword [edi + eax*8]
aesenc xmm0, xmm1
movups xmmword [edi + edx*8], xmm0
pop edi
mov byte [esi], bl
pop esi
pop ebp
pop ebx
ret