Function at 0x405870
Capabilities:
Inspect section memory permissions

Disassembly:
movups xmm1, xmmword [0x4085d0]
sub esp, 0x40
push ebx
push esi
mov esi, dword [esp + 0x4c]
push edi
cmp esi, 1
jb 0x4058f6
lea edi, [esp + 0x3c]
xor ecx, ecx
mov eax, 1
cpuid
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + 8], ecx
mov dword [edi + 0xc], edx
movups xmm0, xmmword [esp + 0x3c]
movups xmmword [esp + 0x1c], xmm0
cmp esi, 7
jb 0x4058fb
lea esi, [esp + 0x3c]
xor ecx, ecx
mov eax, 7
cpuid
mov dword [esi], eax
mov eax, 7
mov dword [esi + 4], ebx
mov dword [esi + 8], ecx
mov ecx, 1
mov dword [esi + 0xc], edx
lea esi, [esp + 0x3c]
movups xmm0, xmmword [esp + 0x3c]
cpuid
mov dword [esi], eax
mov dword [esi + 4], ebx
mov dword [esi + 8], ecx
mov dword [esi + 0xc], edx
movups xmmword [esp + 0xc], xmm0
movups xmm0, xmmword [esp + 0x3c]
movups xmmword [esp + 0x3c], xmm0
jmp 0x405905
movups xmmword [esp + 0x1c], xmm1
movups xmmword [esp + 0xc], xmm1
movups xmmword [esp + 0x3c], xmm1
mov edx, dword [esp + 0x1c]
mov eax, edx
shr eax, 0x14
movzx ecx, al
mov eax, edx
shr eax, 8
and eax, 0xf
mov edi, dword [esp + 0x5c]
add ecx, eax
mov ebx, dword [esp + 0x24]
mov eax, edx
shr eax, 4
and eax, 0xf
mov dword [edi + 8], ecx
mov ecx, edx
and edx, 0xf
shr ecx, 0x10
and ecx, 0xf
mov dword [edi + 0x10], edx
shl ecx, 4
add ecx, eax
mov dword [edi + 0xc], ecx
mov ecx, dword [esp + 0x28]
mov eax, ecx
shr eax, 4
movzx eax, al
add eax, eax
movzx edx, cl
xor edx, dword [edi]
and edx, 1
xor edx, dword [edi]
xor eax, edx
and eax, 2
xor edx, eax
mov eax, ecx
shr eax, 8
movzx eax, al
shl eax, 2
xor eax, edx
and eax, 4
xor edx, eax
mov eax, ecx
shr eax, 0x13
movzx eax, al
shl eax, 3
xor eax, edx
and eax, 8
xor edx, eax
mov eax, ecx
shr eax, 0x17
and ecx, 0xf8000000
xor ecx, dword [edi + 4]
movzx eax, al
and ecx, 0x8000000
xor ecx, dword [edi + 4]
shl eax, 4
xor eax, edx
and eax, 0x10
xor edx, eax
mov eax, ebx
shr eax, 1
movzx eax, al
shl eax, 0x12
xor eax, ecx
and eax, 0x40000
xor ecx, eax
mov eax, ebx
shr eax, 6
movzx eax, al
shl eax, 0x13
xor eax, ecx
and eax, 0x80000
xor ecx, eax
mov eax, ebx
shr eax, 0xd
movzx eax, al
shl eax, 0x15
xor eax, ecx
and eax, 0x200000
xor ecx, eax
mov eax, ebx
shr eax, 0x12
movzx eax, al
shl eax, 0x1a
xor eax, ecx
mov esi, dword [esp + 0x10]
and eax, 0x4000000
xor ecx, eax
mov eax, ebx
shr eax, 0x16
movzx eax, al
shl eax, 0x18
xor eax, ecx
and eax, 0x1000000
xor ecx, eax
mov eax, ebx
shr eax, 0x17
movzx eax, al
shl eax, 0x17
xor eax, ecx
and eax, 0x800000
xor ecx, eax
mov eax, ebx
shr eax, 0x19
shl eax, 5
xor eax, edx
and eax, 0x20
xor edx, eax
mov eax, ebx
shr eax, 0x1d
shl eax, 7
xor eax, edx
and eax, 0x80
xor edx, eax
mov eax, ebx
shr eax, 0x1e
shl eax, 0x19
xor eax, ecx
and eax, 0x2000000
xor ecx, eax
mov eax, esi
shr eax, 2
movzx eax, al
shl eax, 0x14
xor eax, ecx
and eax, 0x100000
xor ecx, eax
mov eax, esi
shr eax, 3
movzx eax, al
shl eax, 0xc
xor eax, edx
and eax, 0x1000
xor edx, eax
mov eax, esi
shr eax, 4
movzx eax, al
shl eax, 0xd
xor eax, edx
and eax, 0x2000
xor edx, eax
mov eax, esi
shr eax, 8
movzx eax, al
shl eax, 0xe
xor eax, edx
and eax, 0x4000
xor edx, eax
mov eax, esi
shr eax, 9
movzx eax, al
shl eax, 6
xor eax, edx
and eax, 0x40
xor edx, eax
mov eax, esi
shr eax, 0xb
movzx eax, al
shl eax, 0xf
xor eax, edx
and eax, 0x8000
xor edx, eax
mov eax, esi
shr eax, 0x12
movzx eax, al
shl eax, 0x10
xor eax, edx
and eax, 0x10000
xor edx, eax
mov eax, esi
shr eax, 0x17
movzx eax, al
shl eax, 0x11
xor eax, edx
and eax, 0x20000
xor edx, eax
mov eax, esi
shr eax, 0x18
shl eax, 0x12
xor eax, edx
and eax, 0x40000
xor edx, eax
mov eax, esi
shr eax, 0x1d
shl eax, 0x16
xor eax, ecx
and eax, 0x400000
xor eax, ecx
mov dword [edi + 4], eax
mov eax, dword [esp + 0x14]
shr eax, 9
movzx eax, al
shl eax, 0xa
xor eax, edx
and eax, 0x400
xor edx, eax
mov eax, dword [esp + 0x14]
shr eax, 0xa
movzx eax, al
shl eax, 0xb
xor eax, edx
and eax, 0x800
xor edx, eax
cmp byte [esp + 0x54], 0
mov dword [edi], edx
je 0x405ba9
mov esi, dword [sym.imp.KERNEL32.dll_IsProcessorFeaturePresent]
push 6
call esi
mov ecx, dword [edi]
neg eax
push 0xa
sbb eax, eax
and ecx, 0xfff7ffff
and eax, 0x80000
or ecx, eax
mov dword [edi], ecx
call esi
mov ecx, dword [edi]
neg eax
push 0xd
sbb eax, eax
and ecx, 0xffefffff
and eax, 0x100000
or ecx, eax
mov dword [edi], ecx
call esi
mov edx, dword [edi]
neg eax
movups xmm1, xmmword [0x4085d0]
sbb eax, eax
and edx, 0xffdfffff
and eax, 0x200000
or edx, eax
mov dword [edi], edx
jmp 0x405c24
cmp byte [esp + 0x55], 0
je 0x405c24
mov ecx, dword [esp + 0x28]
mov eax, ecx
shr eax, 0x19
shl eax, 0x13
xor eax, edx
shr ecx, 0x1a
and eax, 0x80000
shl ecx, 0x14
xor edx, eax
movzx eax, bl
shl eax, 0x15
xor ecx, edx
and ecx, 0x100000
xor edx, ecx
xor eax, edx
and eax, 0x200000
xor edx, eax
mov eax, ebx
shr eax, 9
movzx eax, al
shl eax, 0x16
xor eax, edx
and eax, 0x400000
xor edx, eax
mov eax, ebx
shr eax, 0x13
movzx eax, al
shl eax, 0x17
xor eax, edx
and eax, 0x800000
xor edx, eax
mov eax, ebx
shr eax, 0x14
movzx eax, al
shl eax, 0x18
xor eax, edx
and eax, 0x1000000
xor eax, edx
mov dword [edi], eax
mov edx, eax
cmp byte [esp + 0x56], 0
je 0x405c6d
mov eax, ebx
shr ebx, 0x1c
shr eax, 0xc
movzx ecx, al
shl ecx, 9
xor ecx, edx
shl ebx, 0x1a
and ecx, 0x200
xor ecx, edx
xor ebx, ecx
and ebx, 0x4000000
xor ecx, ebx
mov ebx, dword [esp + 0x10]
mov eax, ebx
shr eax, 5
movzx edx, al
shl edx, 0x1b
xor edx, ecx
and edx, 0x8000000
xor edx, ecx
mov dword [edi], edx
jmp 0x405c71
mov ebx, dword [esp + 0x10]
cmp byte [esp + 0x57], 0
mov esi, dword [esp + 0x18]
je 0x405ed6
mov eax, ebx
shr eax, 0x10
movzx ecx, al
mov eax, ebx
shr eax, 0x1c
shl eax, 0x1d
shl ecx, 0x1c
xor ecx, edx
and ecx, 0x10000000
xor ecx, edx
mov edx, ebx
xor eax, ecx
shr edx, 0x1f
and eax, 0x20000000
shl edx, 2
xor ecx, eax
mov eax, ebx
shr eax, 0x1b
shl eax, 0x1e
xor eax, ecx
and eax, 0x40000000
xor ecx, eax
mov eax, ebx
shr eax, 0x1a
and ecx, 0x7fffffff
shl eax, 0x1f
or eax, ecx
mov ecx, ebx
mov dword [edi], eax
mov eax, ebx
shr eax, 0x11
movzx eax, al
add eax, eax
shr ecx, 0x1e
xor ecx, dword [edi + 4]
and ecx, 1
shr ebx, 0x15
xor ecx, dword [edi + 4]
xor eax, ecx
and eax, 2
xor ecx, eax
movzx eax, bl
shl eax, 3
and ecx, 0xfffffffb
or edx, ecx
mov ecx, dword [esp + 0x14]
xor eax, edx
and eax, 8
xor edx, eax
mov eax, ecx
shr eax, 1
movzx eax, al
shl eax, 4
xor eax, edx
and eax, 0x10
xor edx, eax
mov eax, ecx
shr eax, 6
movzx eax, al
shl eax, 5
xor eax, edx
and eax, 0x20
xor edx, eax
mov eax, ecx
shr eax, 0xb
movzx eax, al
shl eax, 6
xor eax, edx
and eax, 0x40
xor edx, eax
mov eax, ecx
shr eax, 0xc
movzx eax, al
shl eax, 7
xor eax, edx
shr ecx, 0xe
and eax, 0x80
xor edx, eax
movzx eax, cl
push ebp
shl eax, 8
xor eax, edx
mov ebp, esi
and eax, 0x100
shr ebp, 3
xor edx, eax
and ebp, 1
mov eax, esi
shr eax, 2
movzx eax, al
shl eax, 9
xor eax, edx
and eax, 0x200
xor edx, eax
mov eax, ebp
shl eax, 0xa
and edx, 0xfffffbff
or eax, edx
mov dword [esp + 0x54], eax
mov eax, dword [edi + 0xc]
cmp eax, 0x55
jne 0x405f3d
xor ecx, ecx
lea edi, [esp + 0x20]
mov eax, 0x80000000
cpuid
mov dword [edi], eax
mov eax, edi
mov dword [eax + 4], ebx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
mov eax, dword [esp + 0x20]
cmp eax, 0x80000002
jb 0x405deb
lea edi, [esp + 0x30]
mov eax, 0x80000002
xor ecx, ecx
cpuid
mov dword [edi], eax
mov eax, dword [esp + 0x20]
mov dword [edi + 4], ebx
mov dword [edi + 8], ecx
mov dword [edi + 0xc], edx
movups xmm0, xmmword [esp + 0x30]
movups xmmword [esp + 0x30], xmm0
jmp 0x405df0
movups xmmword [esp + 0x30], xmm1
cmp eax, 0x80000003
jb 0x405e1f
lea edi, [esp + 0x10]
mov eax, 0x80000003
xor ecx, ecx
cpuid
mov dword [edi], eax
mov eax, dword [esp + 0x20]
mov dword [edi + 4], ebx
mov dword [edi + 8], ecx
mov dword [edi + 0xc], edx
movups xmm0, xmmword [esp + 0x10]
movups xmmword [esp + 0x10], xmm0
jmp 0x405e24
movups xmmword [esp + 0x10], xmm1
mov edi, dword [esp + 0x60]
cmp eax, 0x80000004
jb 0x405e2f
mov eax, dword [esp + 0x38]
shr eax, 8
cmp al, 0x58
jne 0x405e73
mov ecx, dword [esp + 0x10]
mov eax, ecx
shr eax, 8
cmp al, 0x53
je 0x405e8d
cmp al, 0x42
je 0x405e8d
cmp al, 0x47
jne 0x405e7a
mov ecx, dword [esp + 0x14]
mov eax, ecx
shr eax, 0x10
cmp al, 0x35
jne 0x405e73
shr ecx, 0x18
cmp cl, 0x33
je 0x405e73
mov eax, dword [esp + 0x18]
cmp al, 0x32
jne 0x405e8d
shr eax, 8
cmp al, 0x32
jne 0x405e8d
mov eax, 1
jmp 0x405e8f
cmp al, 0x57
jne 0x405f1f
mov eax, dword [esp + 0x14]
shr eax, 8
cmp al, 0x30
jne 0x405e73
xor eax, eax
mov ecx, dword [esp + 0x54]
shl eax, 0xb
and ecx, 0xfffff7ff
or eax, ecx
shl ebp, 0xc
and eax, 0xffffefff
or ebp, eax
mov eax, dword [esp + 0x40]
shr eax, 5
movzx eax, al
shl eax, 0xd
xor eax, ebp
and eax, 0x2000
xor ebp, eax
mov eax, esi
shr eax, 8
movzx eax, al
shl eax, 0xe
xor eax, ebp
and eax, 0x4000
xor eax, ebp
mov dword [edi + 4], eax
pop ebp
cmp byte [esp + 0x58], 0
je 0x405f18
mov eax, esi
shr eax, 0x16
movzx ecx, al
mov eax, esi
shl ecx, 0xf
xor ecx, dword [edi + 4]
shr eax, 0x18
and ecx, 0x8000
xor ecx, dword [edi + 4]
shl eax, 0x10
xor eax, ecx
shr esi, 0x19
and eax, 0x10000
shl esi, 0x11
xor ecx, eax
xor esi, ecx
and esi, 0x20000
xor esi, ecx
mov dword [edi + 4], esi
pop edi
pop esi
pop ebx
add esp, 0x40
ret
cmp al, 0x44
jne 0x405e73
shr ecx, 0x18
cmp cl, 0x32
jne 0x405e73
cmp byte [esp + 0x14], 0x31
jmp 0x405e8b
cmp eax, 0x66
je 0x405e8d
cmp eax, 0x7d
je 0x405e8d
cmp eax, 0x7e
je 0x405e8d
mov eax, 1
jmp 0x405e8f