Function at 0x401000
Capabilities:
Inspect section memory permissions

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x38
xor eax, eax
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
test edi, edi
je 0x401022
mov dword [edi], eax
call fcn.00472d10
test eax, eax
je 0x401551
lea eax, [ebp - 0x24]
push eax
lea ecx, [ebp - 0x20]
push ecx
lea edx, [ebp - 0x28]
push edx
lea eax, [ebp - 4]
push eax
push 0
call fcn.00472ca0
add esp, 0x14
cmp dword [ebp - 4], 0
je 0x401551
lea ecx, [ebp - 0xc]
push ecx
lea edx, [ebp - 8]
push edx
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 4]
push ecx
push 1
call fcn.00472ca0
mov eax, dword [ebp - 0xc]
add esp, 0x14
test eax, 0x800000
je 0x401551
push ebx
mov ebx, 8
push esi
mov dword [ebp + 8], ebx
test eax, 0x2000000
je 0x401096
mov dword [ebp + 8], 0x38
mov ebx, dword [ebp + 8]
test eax, 0x4000000
je 0x4010a3
or ebx, 0x40
mov dword [ebp + 8], ebx
mov eax, dword [ebp - 8]
test al, 1
je 0x4010b3
or ebx, 0x200
mov dword [ebp + 8], ebx
test eax, 0x200
je 0x4010c3
or ebx, 0x400
mov dword [ebp + 8], ebx
test eax, 0x80000
je 0x4010d3
or ebx, 0x2000
mov dword [ebp + 8], ebx
test eax, 0x100000
je 0x4010e3
or ebx, 0x4000
mov dword [ebp + 8], ebx
and eax, 0x18000000
cmp eax, 0x18000000
jne 0x401127
lea edx, [ebp - 0xc]
push edx
lea eax, [ebp - 4]
push eax
push 0
call fcn.00472ce0
mov ecx, dword [ebp - 4]
and ecx, 6
add esp, 0xc
cmp cl, 6
jne 0x401127
or ebx, 0x400000
test dword [ebp - 8], 0x1000
mov dword [ebp + 8], ebx
je 0x401127
or ebx, 0x4000000
mov dword [ebp + 8], ebx
lea edx, [ebp - 0xc]
push edx
lea eax, [ebp - 8]
push eax
lea ecx, [ebp - 0x10]
push ecx
lea edx, [ebp - 4]
push edx
push 7
call fcn.00472ca0
mov eax, dword [ebp - 0x10]
add esp, 0x14
test ebx, 0x400000
je 0x401159
test al, 0x20
je 0x401159
or ebx, 0x2000000
mov dword [ebp + 8], ebx
test al, 8
je 0x401176
or ebx, 0x8000000
mov dword [ebp + 8], ebx
test eax, 0x100
je 0x401176
or ebx, 0x10000000
mov dword [ebp + 8], ebx
test ebx, 0x400
je 0x401187
or ebx, 0x100
mov dword [ebp + 8], ebx
test ebx, 0x2000
je 0x401198
or ebx, 0x800
mov dword [ebp + 8], ebx
lea eax, [ebp - 0xc]
push eax
lea ecx, [ebp - 8]
push ecx
lea edx, [ebp - 0x10]
push edx
lea eax, [ebp - 4]
push eax
push SysReAllocStringLen
call fcn.00472ca0
mov esi, dword [ebp - 4]
add esp, 0x14
mov ecx, 0x4a094c
lea eax, [ebp - 0x28]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4011e0
test dl, dl
je 0x4011dc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4011e0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4011c0
xor eax, eax
jmp 0x4011e5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4011f3
test edi, edi
je 0x4011f3
mov dword [edi], 2
mov ecx, 0x4a094c
lea eax, [ebp - 0x28]
jmp 0x401200
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x401220
test dl, dl
je 0x40121c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x401220
add eax, 2
add ecx, 2
test dl, dl
jne 0x401200
xor eax, eax
jmp 0x401225
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4012f9
cmp esi, 0x80000001
jb 0x4012f9
lea ecx, [ebp - 0xc]
push ecx
lea edx, [ebp - 8]
push edx
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 4]
push ecx
or ebx, 0x100000
push SysReAllocStringLen
mov dword [ebp + 8], ebx
call fcn.00472ca0
mov ecx, dword [ebp - 0xc]
add esp, 0x14
test ecx, 0x400000
je 0x401270
or ebx, 0x10
mov dword [ebp + 8], ebx
test bl, 0x40
je 0x4012db
mov eax, dword [ebp - 8]
test al, 0x40
je 0x40128d
and ebx, 0xffefffff
or ebx, 0x10900
mov dword [ebp + 8], ebx
jmp 0x401296
or ebx, 0x80
mov dword [ebp + 8], ebx
test al, al
jns 0x4012a3
or ebx, 0x8000
mov dword [ebp + 8], ebx
test ebx, 0x400000
je 0x4012cb
test eax, 0x800
je 0x4012bb
or ebx, 0x800000
mov dword [ebp + 8], ebx
test eax, 0x10000
je 0x4012cb
or ebx, 0x1000000
mov dword [ebp + 8], ebx
test eax, 0x200000
je 0x4012db
or ebx, 0x20000000
mov dword [ebp + 8], ebx
test ecx, ecx
jns 0x4012e8
or ebx, 0x40000000
mov dword [ebp + 8], ebx
test ecx, 0x40000000
je 0x4012f9
or ebx, 0x80000000
mov dword [ebp + 8], ebx
mov ecx, str.GenuineIntel
lea eax, [ebp - 0x28]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x401321
test dl, dl
je 0x40131d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x401321
add eax, 2
add ecx, 2
test dl, dl
jne 0x401301
xor eax, eax
jmp 0x401326
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4013b4
test edi, edi
je 0x401338
mov dword [edi], 1
lea edx, [ebp - 0xc]
push edx
lea eax, [ebp - 8]
push eax
lea ecx, [ebp - 0x10]
push ecx
lea edx, [ebp - 4]
push edx
push 1
call fcn.00472ca0
mov eax, dword [ebp - 4]
mov ecx, eax
mov edx, eax
shr edx, 4
and edx, 0xf
shr ecx, 0xc
and ecx, 0xf0
add ecx, edx
mov edx, eax
shr edx, 0x14
shr eax, 8
and edx, 0xff
and eax, 0xf
add edx, eax
add esp, 0x14
cmp edx, 6
jne 0x4013b4
cmp ecx, 9
je 0x4013ab
cmp ecx, 0xd
je 0x4013ab
cmp ecx, 0xe
je 0x4013ab
cmp ecx, 0x1c
jne 0x40139e
or ebx, 0x300000
jmp 0x4013b1
cmp ecx, 0x17
jl 0x4013b4
or ebx, 0x800
jmp 0x4013b1
and ebx, 0xfffffdbf
mov dword [ebp + 8], ebx
mov ecx, str.GenuineIntel
lea eax, [ebp - 0x28]
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4013e0
test dl, dl
je 0x4013dc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4013e0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4013c0
xor eax, eax
jmp 0x4013e5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40141e
mov ecx, str.CyrixInstead
lea eax, [ebp - 0x28]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x401411
test dl, dl
je 0x40140d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x401411
add eax, 2
add ecx, 2
test dl, dl
jne 0x4013f1
xor eax, eax
jmp 0x401416
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x401548
test ebx, 0x4000
jne 0x401548
lea eax, [ebp - 0xc]
push eax
lea ecx, [ebp - 8]
push ecx
lea edx, [ebp - 0x10]
push edx
lea eax, [ebp - 4]
push eax
push 1
call fcn.00472ca0
mov edi, dword [ebp - 0x10]
shr edi, 5
add esp, 0x14
and edi, 0x7f8
jne 0x40152f
cmp esi, reloc.OLEAUT32.dll_SysStringLen
jb 0x40148a
lea ecx, [ebp - 0xc]
push ecx
lea edx, [ebp - 8]
push edx
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 4]
push ecx
push reloc.OLEAUT32.dll_SysStringLen
call fcn.00472ca0
mov edi, dword [ebp - 8]
add esp, 0x14
and edi, 0xff
jne 0x40152f
mov dword [ebp - 0x18], 0
lea edx, [ebp - 0x2c]
push edx
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0x34]
push ecx
lea edx, [ebp - 0x38]
push edx
push 2
call fcn.00472ca0
mov eax, dword [ebp - 0x38]
mov ebx, eax
add esp, 0x14
and ebx, 0xff
and eax, 0xffffff00
mov dword [ebp - 0x38], eax
lea esi, [ebp - 0x38]
mov dword [ebp - 0x14], 4
mov eax, dword [esi]
test eax, eax
js 0x401515
je 0x401515
mov eax, dword [esi]
and eax, 0xff
push eax
push str._n_fABCDE
call fcn.00479cd0
add esp, 8
test eax, eax
je 0x4014ee
mov edi, 0x20
mov ecx, dword [esi]
and ecx, 0xff
push ecx
push str.____FGI_fghxyz
call fcn.00479cd0
add esp, 8
test eax, eax
je 0x40150d
mov edi, 0x40
shr dword [esi], 8
cmp dword [esi], 0
jne 0x4014d0
add esi, 4
dec dword [ebp - 0x14]
jne 0x4014c8
mov eax, dword [ebp - 0x18]
inc eax
mov dword [ebp - 0x18], eax
cmp eax, ebx
jl 0x401491
mov ebx, dword [ebp + 8]
cmp edi, 0x20
jne 0x401540
or ebx, 1
pop esi
mov eax, ebx
pop ebx
pop edi
mov esp, ebp
pop ebp
ret
cmp edi, 0x40
jne 0x401548
or ebx, 2
pop esi
mov eax, ebx
pop ebx
pop edi
mov esp, ebp
pop ebp
ret
xor eax, eax
pop edi
mov esp, ebp
pop ebp
ret