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

Disassembly:
dec esp
mov dword [esi], esp
mov byte [esi + 8], al
dec eax
mov ecx, dword [esp + 0x90]
dec eax
xor ecx, esp
call 0x521300
dec eax
mov eax, esi
dec eax
add esp, 0x98
pop ebx
pop ebp
pop edi
pop esi
inc ecx
pop esp
inc ecx
pop ebp
inc ecx
pop esi
inc ecx
pop edi
ret
dec ecx
mov edx, dword [edi + 0xaa0]
dec eax
cmp edx, eax
dec eax
cmova eax, edx
dec ecx
mov dword [edi + 0xaa0], eax
call dword [0x20edaa]
inc ecx
mov eax, dword [edi + 0xc]
dec eax
mov edx, ebp
dec eax
add eax, ebp
inc ecx
cmp byte [edi + 6], 0
jg 0x404c32
add byte [edi], cl
test dword [edi + 4], ebp
add byte [eax], al
cmp byte [esp + 0x60], 2
dec eax
mov esi, dword [esp + 0x38]
dec esp
mov ebp, dword [esp + 0x48]
dec eax
mov edi, dword [esp + 0x50]
je 0x4050c1
test byte [esp + eax], dh
invalid
dec eax
mov edx, dword [edi]
dec eax
mov dword [edi], eax
dec eax
test edx, edx
jne 0x405148
dec eax
mov dword [edi + 8], esi
xor eax, eax
dec eax
mov ecx, dword [edi]
dec eax
mov dword [ecx + eax*8], 0
dec eax
inc eax
dec eax
cmp esi, eax
jne 0x404c62
dec eax
mov ebp, dword [edi + 0x10]
dec eax
test ebp, ebp
jne 0x40515b
dec esp
mov esi, dword [edi + 8]
dec ecx
lea eax, [esi - 1]
dec ecx
test esi, eax
jne 0x40528f
mov eax, 0xffffffff
inc esp
add eax, esi
inc ecx
and ebp, eax
dec ebp
mov edi, ebp
dec eax
mov esi, dword [esp + 0x68]
dec eax
mov eax, dword [edi]
dec edx
mov eax, dword [eax + edi*8]
dec eax
test eax, eax
jne 0x4052ab
dec eax
mov eax, dword [edi + 0x10]
dec ecx
mov dword [esp], eax
dec esp
mov dword [edi + 0x10], esp
dec eax
mov eax, dword [edi]
dec eax
mov ecx, dword [esp + 0x40]
dec edx
mov dword [eax + edi*8], ecx
dec ecx
mov eax, dword [esp]
dec eax
test eax, eax
jne 0x4052b4
dec eax
inc dword [edi + 0x18]
mov al, 1
jmp 0x404771
dec eax
mov ecx, edx
dec eax
shl ecx, 0x34
je 0x4055af
dec eax
lea ecx, [ebp - 4]
mov dword [ecx], 1
dec eax
mov edx, ebp
jmp 0x404c33
dec eax
mov ecx, 0
invalid
dec esp
mov eax, dword [edi + 8]
dec eax
mov ecx, dword [esp + 0x40]
call fcn.00405960
jmp 0x404c5c
dec esp
mov ecx, dword [ebp + 8]
dec eax
mov eax, esi
dec eax
shr eax, 1
dec eax
mov ecx, 0x55555555
push ebp
push ebp
push ebp
push ebp
dec eax
and ecx, eax
dec eax
mov eax, esi
dec eax
sub eax, ecx
dec eax
mov ecx, 0x33333333
xor esi, dword [ebx]
xor esi, dword [ebx]
dec eax
mov edx, eax
dec eax
and edx, ecx
dec eax
shr eax, 2
dec eax
and eax, ecx
dec eax
add eax, edx
dec eax
mov ecx, eax
dec eax
shr ecx, 4
dec eax
add ecx, eax
dec eax
mov eax, 0xf0f0f0f
invalid
dec ebp
mov edi, ebp
dec ebp
cmp esi, ebp
ja 0x404ca1
dec esp
mov eax, edi
xor edx, edx
dec ecx
div esi
dec ecx
mov edi, edx
jmp 0x404ca1
dec eax
mov ecx, dword [eax]
dec ecx
mov dword [esp], ecx
jmp 0x4052cf
dec eax
mov eax, dword [eax + 8]
dec ecx
lea ecx, [esi - 1]
dec ecx
test esi, ecx
jne 0x4053a3
dec eax
and eax, ecx
dec eax
shl eax, 3
dec eax
add eax, dword [edi]
dec esp
mov dword [eax], esp
dec eax
mov esi, dword [esp + 0x68]
jmp 0x404cdb
dec esp
cmp eax, esi
jb 0x4052c8
xor edx, edx
dec ecx
div esi
dec eax
mov eax, edx
jmp 0x4052c8
dec eax
mov edx, ebp
dec eax
mov ecx, ebp
dec eax
and ecx, 0xffe00000
dec eax
shr edx, 9
and edx, 0xff8
dec eax
add ecx, edx
dec eax
add ecx, 0x2000
jmp 0x4050b3
je 0x405829
dec eax
bswap ecx
inc ebp
mov esi, dword [edi + ebx*8 + 0x60]
dec eax
mov edx, ecx
dec eax
xor edx, ebp
dec eax
cmp edx, 0x1fffff
ja 0x405929
mov edx, ecx
and edx, 0x1fc000
je 0x405929
prefetcht0 byte [ecx]
dec eax
mov dword [eax], ecx
mov ecx, dword [eax + 0x18]
lea edx, [ecx + 2]
and edx, 0x3ffe
and ecx, 0xffffc001
or ecx, edx
mov dword [eax + 0x18], ecx
dec eax
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x18]
dec ecx
add eax, dword [edi + 0xa98]
dec ecx
mov dword [edi + 0xa98], eax
dec eax
mov ecx, dword [esp + 0x30]
jmp 0x404c03
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], bh
add byte [eax], al
push cs
pop ds
mov edx, 0x9b4000e
int 0x21
mov eax, 0x21cd4c01
push esp
push 0x70207369
jb 0x4058c5
jb 0x4058ba
insd dword es:[edi], dx
and byte [ebx + 0x61], ah
outsb dx, byte [esi]
outsb dx, byte [esi]
outsd dx, dword [esi]
je 0x405882
bound esp, qword [ebp + 0x20]
jb 0x4058dc
outsb dx, byte [esi]
and byte [ecx + 0x6e], ch
and byte [edi + ecx*2 + 0x53], al
and byte [ebp + 0x6f], ch
and al, 0
add byte [eax + 0x45], dl
add byte [eax], al
xchg byte fs:[eax + eax], cl
lcall 0, 0x62bf8a
mov edi, 0x62
add byte [eax], al
add byte [eax], al
add al, dh
add byte [edx], ah
add byte [ebx], cl
add cl, byte [esi]
add byte [eax], al
add cl, byte [eax + eax]
add byte [esi + 3], bl
add byte [eax], al
add byte [eax], al
add byte [eax - 0x6d], dh
push es
add byte [eax], al
adc byte [eax], al
add byte [eax], al
add byte [eax], al
inc eax
add dword [eax], eax
add byte [eax], al
add byte [eax], dl
add byte [eax], al
add byte [edx], al
add byte [eax], al
add eax, 0x200
add al, byte [eax]
add byte [eax], al
add byte [eax], al
add eax, 0x200
add byte [eax], al
add byte [0x200], al
add byte [eax], al
add byte [eax], al
jo 0x4058db
add byte [eax], al
add al, 0
add bh, ch
lodsb al, byte [esi]
sldt word [edx]
add byte [eax - 0x3f], ah
add byte [eax], al
adc byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
adc byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], dl
add byte [eax], al
add byte [eax], al
add byte [eax], al
adc byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], dl
add byte [eax], al
add al, cl
test dword [0x5900], ecx
add byte [eax], al
add byte [eax], al
add byte [eax], dl
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
adc byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], dl
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
adc byte [eax], al
add byte [eax], al
enter 0xd85, 0
pop ecx
add byte [eax], al
add byte [ecx], ah
xchg byte [0xa000], cl
add byte [eax], al
inc eax
adc byte [eax], al
js 0x40591f
add byte [eax], al
add byte [eax + 0xf], dl
add byte [ebp + ebp*2], bl
add byte [eax], al
push 0x2948000f
add byte [eax], al
add byte [eax + 0x10], dl
add byte [eax + 0x12], ch
add byte [eax], al
pop esp
push eax
adc byte [eax], al
push 0x5c000012
jge 0x405940
add byte [eax + eax], bl
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
invalid
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
mov eax, 0x28000d7b
add byte [eax], al
add byte [eax + 0x38000c21], al
add dword [eax], eax
add byte [eax], al
add byte [eax], al
add byte [eax], al