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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x354
mov eax, dword [0x49611c]
xor eax, esp
mov dword [esp + 0x350], eax
push ebx
push esi
mov esi, dword [ebp + 8]
mov dword [esp + 0x1c], ecx
push edi
mov edi, edx
cmp esi, 0x180
jbe 0x41ab68
mov eax, 0xffffffc8
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x350]
xor ecx, esp
call fcn.00448a58
mov esp, ebp
pop ebp
ret
push 0x1a0
lea eax, [esp + 0x1bc]
push 0
push eax
call fcn.0044bde0
add esp, 0xc
mov byte [esp + 0x1cf], 0x30
mov eax, esi
bswap eax
mov dword [esp + 0x1c8], eax
lea eax, [esp + 0x1d0]
push esi
push edi
push eax
call fcn.0044b7f0
mov byte [esp + esi + 0x1dc], 0x80
add esp, 0xc
add esi, 0x19
xor eax, eax
mov dword [esp + 0x18], esi
mov byte [esp + eax + 0x198], al
inc eax
cmp eax, 0x20
jl 0x41abb5
push 0x118
lea eax, [esp + 0x3c]
push 0
push eax
call fcn.0044bde0
add esp, 0xc
lea edx, [esp + 0x198]
lea ecx, [esp + 0x38]
push 0x100
call fcn.0041e330
add esp, 4
test eax, eax
jne 0x41af5f
mov edi, dword [esp + 0x3c]
xor ecx, ecx
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x18], 0
lea eax, [esp + 0x1b8]
xorps xmm0, xmm0
mov dword [esp + 0x1c], eax
movaps xmmword [esp + 0x150], xmm0
jbe 0x41ad95
lea edx, [esp + 0x150]
push 0x10
push eax
mov ecx, edx
call fcn.0041a9c0
add dword [esp + 0x24], 0x10
add esp, 8
cmp esi, 0x10
mov eax, esi
mov ecx, 0x10
cmovae eax, ecx
sub esi, eax
cmp dword [0x49a634], 0
mov dword [esp + 0x24], esi
jne 0x41ac8b
mov eax, 1
xor ecx, ecx
push ebx
cpuid
mov esi, ebx
pop ebx
mov dword [0x49a624], eax
mov eax, ecx
mov dword [0x49a628], esi
mov dword [0x49a62c], ecx
mov dword [0x49a630], edx
mov dword [0x49a638], eax
mov dword [0x49a634], 1
test dword [0x49a638], 0x2000000
je 0x41acac
lea eax, [esp + 0x40]
shr eax, 2
and eax, 3
je 0x41acac
mov esi, 4
sub esi, eax
jmp 0x41acae
xor esi, esi
cmp esi, edi
je 0x41acd9
mov eax, dword [esp + 0x38]
inc eax
shl eax, 4
push eax
lea eax, [esp + 0x44]
lea eax, [eax + edi*4]
push eax
lea eax, [esp + 0x48]
lea eax, [eax + esi*4]
push eax
call fcn.00449ea0
mov edi, esi
add esp, 0xc
mov dword [esp + 0x3c], edi
cmp dword [0x49a634], 0
jne 0x41ad17
mov eax, 1
xor ecx, ecx
push ebx
cpuid
mov esi, ebx
pop ebx
mov dword [0x49a624], eax
mov eax, ecx
mov dword [0x49a628], esi
mov dword [0x49a62c], ecx
mov dword [0x49a630], edx
mov dword [0x49a638], eax
mov dword [0x49a634], 1
test dword [0x49a638], 0x2000000
je 0x41ad5f
mov ecx, dword [esp + 0x38]
lea eax, [esp + 0x40]
movaps xmm0, xmmword [eax + edi*4]
lea eax, [eax + edi*4]
pxor xmm0, xmmword [esp + 0x150]
add eax, 0x10
add ecx, 0xffffffff
je 0x41ad50
aesenc xmm0, xmmword [eax]
add eax, 0x10
sub ecx, 1
jne 0x41ad43
aesenclast xmm0, xmmword [eax]
movaps xmmword [esp + 0x150], xmm0
jmp 0x41ad81
lea eax, [esp + 0x150]
push eax
mov edx, eax
lea ecx, [esp + 0x3c]
call fcn.0041f480
add esp, 4
test eax, eax
jne 0x41af5f
mov edi, dword [esp + 0x3c]
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
test esi, esi
jne 0x41ac21
mov ecx, dword [esp + 0x14]
movups xmm0, xmmword [esp + 0x150]
inc byte [esp + 0x1bb]
mov esi, dword [esp + 0x18]
movups xmmword [esp + ecx + 0x168], xmm0
add ecx, 0x10
mov dword [esp + 0x14], ecx
cmp ecx, 0x30
jl 0x41ac00
push 0x100
lea edx, [esp + 0x16c]
lea ecx, [esp + 0x3c]
call fcn.0041e330
add esp, 4
test eax, eax
jne 0x41af5f
movups xmm1, xmmword [esp + 0x188]
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], 0
movups xmmword [esp + 0x28], xmm1
cmp dword [0x49a634], 0
jne 0x41ae3f
mov eax, 1
xor ecx, ecx
push ebx
cpuid
mov esi, ebx
pop ebx
mov dword [0x49a624], eax
mov eax, ecx
mov dword [0x49a628], esi
mov dword [0x49a62c], ecx
mov dword [0x49a630], edx
mov dword [0x49a638], eax
mov dword [0x49a634], 1
test dword [0x49a638], 0x2000000
je 0x41ae60
lea eax, [esp + 0x40]
shr eax, 2
and eax, 3
je 0x41ae60
mov esi, 4
sub esi, eax
jmp 0x41ae62
xor esi, esi
cmp esi, edi
je 0x41ae92
mov eax, dword [esp + 0x38]
inc eax
shl eax, 4
push eax
lea eax, [esp + 0x44]
lea eax, [eax + edi*4]
push eax
lea eax, [esp + 0x48]
lea eax, [eax + esi*4]
push eax
call fcn.00449ea0
movups xmm1, xmmword [esp + 0x34]
mov edi, esi
add esp, 0xc
mov dword [esp + 0x3c], edi
cmp dword [0x49a634], 0
jne 0x41aed0
mov eax, 1
xor ecx, ecx
push ebx
cpuid
mov esi, ebx
pop ebx
mov dword [0x49a624], eax
mov eax, ecx
mov dword [0x49a628], esi
mov dword [0x49a62c], ecx
mov dword [0x49a630], edx
mov dword [0x49a638], eax
mov dword [0x49a634], 1
test dword [0x49a638], 0x2000000
je 0x41af12
mov eax, dword [esp + 0x38]
lea ecx, [esp + 0x40]
pxor xmm1, xmmword [ecx + edi*4]
lea ecx, [ecx + edi*4]
add ecx, 0x10
add eax, 0xffffffff
je 0x41af01
aesenc xmm1, xmmword [ecx]
add ecx, 0x10
sub eax, 1
jne 0x41aef4
aesenclast xmm1, xmmword [ecx]
movups xmmword [esp + 0x188], xmm1
xor eax, eax
jmp 0x41af38
lea eax, [esp + 0x188]
push eax
mov edx, eax
lea ecx, [esp + 0x3c]
call fcn.0041f480
add esp, 4
test eax, eax
jne 0x41af5f
mov edi, dword [esp + 0x3c]
movups xmm1, xmmword [esp + 0x188]
mov ecx, dword [esp + 0x18]
movups xmmword [esp + 0x28], xmm1
movups xmmword [ecx], xmm1
add ecx, 0x10
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
add ecx, 0x10
mov dword [esp + 0x14], ecx
cmp ecx, 0x30
jl 0x41ae01
mov edx, 0x118
lea ecx, [esp + 0x38]
nop dword [eax + eax]
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub edx, 1
jne 0x41af70
mov edx, 0x1a0
lea ecx, [esp + 0x1b8]
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub edx, 1
jne 0x41af87
mov edx, 0x30
lea ecx, [esp + 0x168]
nop
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub edx, 1
jne 0x41afa0
mov edx, 0x20
lea ecx, [esp + 0x198]
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub edx, 1
jne 0x41afb7
mov edx, 0x10
lea ecx, [esp + 0x150]
nop
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub edx, 1
jne 0x41afd0
test eax, eax
je 0x41affb
mov edx, dword [esp + 0x20]
mov ecx, 0x30
nop dword [eax + eax]
mov byte [edx], 0
lea edx, [edx + 1]
sub ecx, 1
jne 0x41aff0
mov ecx, dword [esp + 0x35c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00448a58
mov esp, ebp
pop ebp
ret