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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x300
mov eax, dword [edx]
movaps xmm3, xmmword [ecx + 0x40]
movaps xmm4, xmmword [ecx + 0x50]
movaps xmm0, xmmword [ecx]
movdqa xmm1, xmmword [ecx + 0x20]
movaps xmm2, xmmword [ecx + 0x30]
xor esi, esi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x20], eax
mov eax, dword [edx + 4]
movaps xmmword [esp + 0x120], xmm3
movaps xmm3, xmmword [ecx + 0x60]
movaps xmmword [esp + 0x110], xmm4
movaps xmm4, xmmword [ecx + 0x70]
movaps xmmword [esp + 0x160], xmm0
movdqa xmm0, xmmword [ecx + 0x10]
movaps xmmword [esp + 0x130], xmm2
movdqa xmmword [esp + 0x140], xmm1
mov dword [esp + 0x1c], eax
mov eax, dword [edx + 8]
movaps xmmword [esp + 0x100], xmm3
movaps xmm3, xmmword [ecx + 0x80]
movaps xmmword [esp + 0xf0], xmm4
movaps xmm4, xmmword [ecx + 0x90]
movdqa xmmword [esp + 0x150], xmm0
mov dword [esp + 0x18], eax
mov eax, dword [edx + 0xc]
movaps xmmword [esp + 0xe0], xmm3
movaps xmm3, xmmword [ecx + 0xa0]
movaps xmmword [esp + 0xd0], xmm4
mov edx, eax
mov dword [esp + 0x14], eax
and eax, 0xfffffff8
movaps xmmword [esp + 0xc0], xmm3
shr edx, 3
mov dword [esp + 0x24], eax
mov dword [esp + 0x2c], edx
cmp dword [esp + 0x2c], esi
je 0x402c84
lea ecx, [esp + 0x1fc]
mov dword [esp + 0x10], esi
call fcn.00401144
lea ecx, [esp + 0x178]
call fcn.00401144
push 0xffffffffffffff80
pop esi
test esi, esi
je 0x402942
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0x30]
call fcn.00402dff
movq xmm0, qword [esp + 0x30]
movq xmm1, qword [esp + 0x38]
movq qword [esp + esi + 0x200], xmm1
movq qword [esp + esi + 0x1f8], xmm0
add esi, 0x10
jmp 0x40290e
movups xmm0, xmmword [esp + 0x178]
movaps xmm1, xmmword [esp + 0x160]
movups xmm2, xmmword [esp + 0x188]
movups xmm3, xmmword [esp + 0x198]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
xorps xmm0, xmm1
xorps xmm2, xmm1
xorps xmm3, xmm1
shl eax, 7
movaps xmmword [esp + 0x30], xmm0
movaps xmmword [esp + 0x40], xmm2
movups xmm2, xmmword [esp + 0x1a8]
movaps xmmword [esp + 0x50], xmm3
movups xmm3, xmmword [esp + 0x1b8]
add ecx, eax
mov dword [esp + 0xc], ecx
xorps xmm2, xmm1
xorps xmm3, xmm1
movaps xmmword [esp + 0x60], xmm2
movups xmm2, xmmword [esp + 0x1c8]
movaps xmmword [esp + 0x70], xmm3
movups xmm3, xmmword [esp + 0x1d8]
xorps xmm2, xmm1
xorps xmm3, xmm1
movaps xmmword [esp + 0x80], xmm2
movups xmm2, xmmword [esp + 0x1e8]
movaps xmmword [esp + 0x90], xmm3
xorps xmm2, xmm1
movaps xmmword [esp + 0xa0], xmm2
push 0xffffffffffffff80
pop edx
movdqa xmm1, xmmword [esp + 0x150]
mov ecx, edx
test ecx, ecx
je 0x402a12
movdqa xmm0, xmmword [esp + ecx + 0xb0]
aesenc xmm0, xmm1
movdqa xmmword [esp + ecx + 0xb0], xmm0
add ecx, 0x10
jmp 0x4029f2
movdqa xmm1, xmmword [esp + 0x140]
mov ecx, edx
test ecx, ecx
je 0x402a3d
movdqa xmm0, xmmword [esp + ecx + 0xb0]
aesenc xmm0, xmm1
movdqa xmmword [esp + ecx + 0xb0], xmm0
add ecx, 0x10
jmp 0x402a1d
movdqa xmm1, xmmword [esp + 0x130]
mov ecx, edx
test ecx, ecx
je 0x402a68
movdqa xmm0, xmmword [esp + ecx + 0xb0]
aesenc xmm0, xmm1
movdqa xmmword [esp + ecx + 0xb0], xmm0
add ecx, 0x10
jmp 0x402a48
movdqa xmm1, xmmword [esp + 0x120]
mov ecx, edx
test ecx, ecx
je 0x402a93
movdqa xmm0, xmmword [esp + ecx + 0xb0]
aesenc xmm0, xmm1
movdqa xmmword [esp + ecx + 0xb0], xmm0
add ecx, 0x10
jmp 0x402a73
movdqa xmm1, xmmword [esp + 0x110]
mov ecx, edx
test ecx, ecx
je 0x402abe
movdqa xmm0, xmmword [esp + ecx + 0xb0]
aesenc xmm0, xmm1
movdqa xmmword [esp + ecx + 0xb0], xmm0
add ecx, 0x10
jmp 0x402a9e
movdqa xmm1, xmmword [esp + 0x100]
mov ecx, edx
test ecx, ecx
je 0x402ae9
movdqa xmm0, xmmword [esp + ecx + 0xb0]
aesenc xmm0, xmm1
movdqa xmmword [esp + ecx + 0xb0], xmm0
add ecx, 0x10
jmp 0x402ac9
movdqa xmm1, xmmword [esp + 0xf0]
mov ecx, edx
test ecx, ecx
je 0x402b14
movdqa xmm0, xmmword [esp + ecx + 0xb0]
aesenc xmm0, xmm1
movdqa xmmword [esp + ecx + 0xb0], xmm0
add ecx, 0x10
jmp 0x402af4
movdqa xmm1, xmmword [esp + 0xe0]
mov ecx, edx
test ecx, ecx
je 0x402b3f
movdqa xmm0, xmmword [esp + ecx + 0xb0]
aesenc xmm0, xmm1
movdqa xmmword [esp + ecx + 0xb0], xmm0
add ecx, 0x10
jmp 0x402b1f
movdqa xmm1, xmmword [esp + 0xd0]
mov ecx, edx
test ecx, ecx
je 0x402b6a
movdqa xmm0, xmmword [esp + ecx + 0xb0]
aesenc xmm0, xmm1
movdqa xmmword [esp + ecx + 0xb0], xmm0
add ecx, 0x10
jmp 0x402b4a
movdqa xmm1, xmmword [esp + 0xc0]
mov ecx, edx
test ecx, ecx
je 0x402b95
movdqa xmm0, xmmword [esp + ecx + 0xb0]
aesenclast xmm0, xmm1
movdqa xmmword [esp + ecx + 0xb0], xmm0
add ecx, 0x10
jmp 0x402b75
add eax, dword [esp + 0x1c]
movdqa xmm0, xmmword [esp + 0x30]
movdqa xmm1, xmmword [esp + 0x40]
movaps xmm2, xmmword [esp + 0x50]
movaps xmm3, xmmword [esp + 0x60]
movaps xmm4, xmmword [esp + 0x70]
movaps xmm5, xmmword [esp + 0x80]
movaps xmm6, xmmword [esp + 0x90]
movaps xmm7, xmmword [esp + 0xa0]
movdqu xmmword [esp + 0x1fc], xmm0
movdqu xmmword [esp + 0x20c], xmm1
movups xmmword [esp + 0x21c], xmm2
movups xmmword [esp + 0x22c], xmm3
movups xmmword [esp + 0x23c], xmm4
movups xmmword [esp + 0x24c], xmm5
movups xmmword [esp + 0x25c], xmm6
movups xmmword [esp + 0x26c], xmm7
push 0x80
push eax
lea esi, [esp + 0x38]
push esi
call fcn.0041b930
add esp, 0xc
lea edi, [esp + 0x27c]
mov ecx, edi
call fcn.00401144
xor eax, eax
mov ecx, edi
lea edx, [esp + 0x1fc]
cmp eax, 8
je 0x402c61
push 0xfffffffffffffff0
pop edi
test edi, edi
je 0x402c55
mov bl, byte [edx + edi + 0x10]
xor bl, byte [esi + edi + 0x10]
mov byte [ecx + edi + 0x10], bl
inc edi
jmp 0x402c42
inc eax
add esi, 0x10
add edx, 0x10
add ecx, 0x10
jmp 0x402c3a
mov esi, dword [esp + 0x10]
inc esi
push 0x80
lea eax, [esp + 0x280]
push eax
push dword [esp + 0x14]
call fcn.0041b930
add esp, 0xc
jmp 0x4028e5
mov edi, dword [esp + 0x14]
lea esi, [esp + 0x30]
mov ecx, esi
and edi, 7
call fcn.00401144
mov dword [esp + 0x14], edi
mov ecx, edi
mov edx, esi
push 8
call fcn.004010d6
pop ecx
mov ebx, edx
mov edi, eax
mov esi, eax
mov dword [esp + 0xc], edx
shl ebx, 4
test ebx, ebx
je 0x402ceb
mov edx, dword [esp + 0x20]
lea eax, [esi + 0x10]
lea ecx, [esp + 0x178]
mov dword [esp + 0x10], eax
call fcn.00402dff
movdqu xmm0, xmmword [esp + 0x178]
mov ecx, dword [esp + 0x28]
mov edx, esi
call fcn.004012d2
mov esi, dword [esp + 0x10]
add ebx, 0xfffffff0
jmp 0x402cb3
mov eax, dword [esp + 0x24]
shl eax, 4
add dword [esp + 0x1c], eax
add dword [esp + 0x18], eax
xor eax, eax
cmp eax, dword [esp + 0x14]
je 0x402d8b
cmp eax, dword [esp + 0xc]
je 0x402d93
mov ecx, dword [esp + 0x18]
lea ebx, [eax + 1]
shl eax, 4
lea esi, [ecx + eax]
mov ecx, dword [esp + 0x1c]
movq xmm0, qword [ecx + eax]
movq xmm1, qword [ecx + eax + 8]
lea ecx, [esp + 0xb0]
movq qword [esp + 0x180], xmm1
movq qword [esp + 0x178], xmm0
call fcn.00407765
push 0xfffffffffffffff0
pop eax
test eax, eax
je 0x402d66
mov cl, byte [edi + eax + 0x10]
xor cl, byte [esp + eax + 0x188]
mov byte [esp + eax + 0xc0], cl
inc eax
jmp 0x402d4d
movq xmm0, qword [esp + 0xb0]
movq xmm1, qword [esp + 0xb8]
add edi, 0x10
mov eax, ebx
movq qword [esi + 8], xmm1
movq qword [esi], xmm0
jmp 0x402cfc
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [esp + 0xc]
mov edx, ecx
push 0x42a3e0
call fcn.004291f0