Function at 0x403470
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x168
mov eax, dword [0x50bd24]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
push 0x4fc7c0
xor ebx, ebx
mov dword [ebp - 0x160], eax
push str._sys_firmware_efi_systab
mov dword [ebp - 0x164], 0
mov dword [0x510328], 0x4fc840
mov dword [0x51032c], ebx
mov dword [ebp - 0x168], str._sys_firmware_efi_systab
call fcn.004c37da
mov edi, eax
add esp, 8
test edi, edi
jne 0x4036b1
push 0x4fc7c0
push str._proc_efi_systab
mov dword [ebp - 0x168], str._proc_efi_systab
call fcn.004c37da
mov edi, eax
add esp, 8
test edi, edi
jne 0x4036b1
call fcn.00403b60
sub eax, 1
je 0x403801
sub eax, 2
je 0x4035a1
mov edx, 0x10000
mov ecx, 0xf0000
call fcn.00403950
mov dword [ebp - 0x15c], eax
test eax, eax
je 0x40376c
mov esi, eax
nop dword [eax]
cmp dword [esi], 0x5f4d535f
jne 0x403563
cmp edi, 0xffe0
ja 0x403563
push dword [ebp - 0x160]
mov edx, dword [0x510328]
mov ecx, esi
call fcn.00403160
add esp, 4
test eax, eax
je 0x40358c
inc ebx
add edi, 0x10
add esi, 0x10
jmp 0x40358c
cmp dword [esi], 0x494d445f
jne 0x40358c
cmp byte [esi + 4], 0x5f
jne 0x40358c
push dword [ebp - 0x160]
mov edx, dword [0x510328]
mov ecx, esi
call fcn.00403320
add esp, 4
test eax, eax
je 0x40358c
inc ebx
add edi, 0x10
add esi, 0x10
cmp edi, 0xfff0
jbe 0x403530
test ebx, ebx
jmp 0x4037db
call fcn.00403830
test al, al
jne 0x4035bd
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004b42e4
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x158]
mov dword [ebp - 0x158], 0x114
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
mov eax, dword [ebp - 0x148]
sub eax, 2
jne 0x403801
cmp dword [ebp - 0x154], 6
jae 0x403603
cmp dword [ebp - 0x150], 2
jb 0x403801
mov dword [ebp - 0x154], 1
push 0
push 0
push 0
push 0x52534d42
call dword [0x51033c]
mov esi, eax
push esi
call fcn.004b90cb
add esp, 4
mov edi, eax
push esi
push edi
push 0
push 0x52534d42
call dword [0x51033c]
test eax, eax
jne 0x40363a
push edi
jmp 0x4037f9
test edi, edi
je 0x403801
mov ecx, dword [edi + 4]
lea esi, [edi + 8]
xor ebx, ebx
mov eax, esi
lea edx, [ecx + esi]
movzx ecx, cx
cmp esi, edx
jae 0x403679
movzx ecx, byte [eax + 1]
inc ebx
add eax, ecx
cmp word [eax], 0
je 0x40366e
cmp eax, edx
jae 0x40366e
inc eax
cmp word [eax], 0
jne 0x403663
add eax, 2
cmp eax, edx
jb 0x403656
movzx ecx, word [edi + 4]
movzx esi, byte [edi + 1]
mov eax, 0x100
push dword [ebp - 0x160]
imul esi, eax
mov edx, ecx
movzx eax, byte [edi + 2]
lea ecx, [edi + 8]
push 0
add si, ax
movzx eax, si
push eax
push ebx
call fcn.00402cb0
push edi
call fcn.004b90b0
add esp, 0x14
jmp 0x403801
push edi
lea eax, [ebp - 0x44]
mov dword [ebp - 0x15c], 0xfffffffe
push 0x3f
push eax
call fcn.004c5e02
add esp, 0xc
test eax, eax
je 0x40372c
nop
lea eax, [ebp - 0x44]
push 0x3d
push eax
call fcn.004b7800
mov esi, eax
add esp, 8
mov ecx, str.SMBIOS
lea eax, [ebp - 0x44]
mov byte [esi], bl
inc esi
nop dword [eax + eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x403710
test dl, dl
je 0x40370c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x403710
add eax, 2
add ecx, 2
test dl, dl
jne 0x4036f0
xor eax, eax
jmp 0x403715
sbb eax, eax
or eax, 1
test eax, eax
je 0x40377b
push edi
lea eax, [ebp - 0x44]
push 0x3f
push eax
call fcn.004c5e02
add esp, 0xc
test eax, eax
jne 0x4036d0
xor ebx, ebx
push edi
call fcn.004c2d39
mov esi, dword [ebp - 0x168]
add esp, 4
test eax, eax
je 0x40374a
push esi
call fcn.004c5c99
add esp, 4
cmp dword [ebp - 0x15c], 0xfffffffe
jne 0x4037ad
push esi
push str._s:_SMBIOS_entry_point_missing_n
push 2
call fcn.004c2c3e
add esp, 4
push eax
call fcn.00402a00
add esp, 0xc
mov dword [ebp - 0x164], 1
jmp 0x403801
push 0
push 0
push esi
call fcn.004c525f
add esp, 0xc
mov ebx, eax
test byte [0x51032c], 8
jne 0x4037a1
push ebx
push str._SMBIOS_entry_point_at_0x_08lx_n
call fcn.00402a30
add esp, 8
mov dword [ebp - 0x15c], 0
jmp 0x40372e
mov edx, 0x20
mov ecx, ebx
call fcn.00403950
mov dword [ebp - 0x15c], eax
test eax, eax
je 0x40376c
push dword [ebp - 0x160]
mov edx, dword [0x510328]
mov ecx, eax
call fcn.00403160
add esp, 4
test eax, eax
jne 0x4037f3
test byte [0x51032c], 8
jne 0x4037f3
push str._No_SMBIOS_nor_DMI_entry_point_found__sorry._n
call fcn.00402a30
add esp, 4
push dword [ebp - 0x15c]
call fcn.004b90b0
add esp, 4
push dword [0x510330]
call fcn.004b90b0
mov ecx, dword [ebp - 4]
add esp, 4
mov eax, dword [ebp - 0x164]
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.004b42e4
mov esp, ebp
pop ebp
ret