Function at 0x40a810
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4246a5
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x9b8
push esi
xor esi, esi
push edi
mov dword [ebp - 0x14], esi
mov byte [ebp - 0x10], 0
mov dword [ebp - 4], esi
call fcn.0040a1c0
cmp eax, esi
mov dword [ebp - 0x14], eax
mov byte [ebp - 0x10], 1
jge 0x40a9b7
push ebx
call dword [sym.imp.KERNEL32.dll_GetThreadLocale]
xor ecx, ecx
cmp ax, 0x411
sete cl
push esi
mov edi, ecx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov ebx, dword [sym.imp.USER32.dll_LoadStringW]
push 0x64
lea edx, [ebp - 0x1c4]
push edx
mov esi, eax
push 0x6e
push esi
call ebx
lea eax, [ebp - 0xfc]
push eax
mov dword [ebp - 0xfc], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [ebp - 0xf8], 5
push 0x400
jae 0x40a953
lea ecx, [ebp - 0x9c4]
push ecx
add edi, 0x70
push edi
push esi
call ebx
push 0x200010
lea edx, [ebp - 0x1c4]
push edx
lea eax, [ebp - 0x9c4]
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
push str.Attempt_to_load_unauthorized_hive:
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
mov byte [ebp - 4], 1
mov ecx, dword [ebp + 8]
push ecx
push eax
lea edx, [ebp - 0x30]
push edx
call fcn.00402f50
add esp, 0xc
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
cmp dword [ebp - 0x18], 0x10
mov eax, dword [ebp - 0x2c]
jae 0x40a90d
lea eax, [ebp - 0x2c]
push str.RegLoadHive
push eax
push 0x80004005
push str.RSh5
call fcn.00409570
mov esi, eax
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x30]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov dword [ebp - 4], 0xffffffff
call dword [sym.imp.ole32.dll_CoRevertToSelf]
pop ebx
pop edi
mov eax, esi
pop esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 4
lea eax, [ebp - 0x9c4]
push eax
add edi, 0x72
push edi
push esi
call ebx
push 0x200010
lea ecx, [ebp - 0x1c4]
push ecx
lea edx, [ebp - 0x9c4]
push edx
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov esi, dword [ebp - 0x14]
push esi
push str.Error:__d
push str.C:_ob_bora_42958_bora_apps_vmount_VmountService.cpp
push 0x5e7
push 7
push 1
call fcn.004090e0
add esp, 0x18
push str.RegLoadHive
push str.Unable_to_impersonate_client_for_hive_loading
push esi
push str.RSh5
call fcn.00409570
mov esi, eax
jmp 0x40a931
push esi
push 0x80
push 3
push esi
push esi
mov esi, dword [ebp + 8]
push 0xc0000000
push esi
call dword [sym.imp.KERNEL32.dll_CreateFileA]
or edi, 0xffffffff
cmp eax, edi
jne 0x40aa97
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Error:__d
push str.C:_ob_bora_42958_bora_apps_vmount_VmountService.cpp
push 0x5fc
push 7
push 1
call fcn.004090e0
add esp, 0x18
push str.Hive_file
lea ecx, [ebp - 0x68]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
mov byte [ebp - 4], 4
push esi
push eax
lea eax, [ebp - 0x4c]
push eax
call fcn.00402f50
mov byte [ebp - 4], 5
push str._is_not_accessible
push eax
lea ecx, [ebp - 0x30]
push ecx
call fcn.00402f50
add esp, 0x18
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x68]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
cmp dword [ebp - 0x18], 0x10
mov eax, dword [ebp - 0x2c]
jae 0x40aa56
lea eax, [ebp - 0x2c]
push str.RegLoadHive
push eax
push 0x80004005
push str.RSh5
call fcn.00409570
mov esi, eax
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x30]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov dword [ebp - 4], edi
call dword [sym.imp.ole32.dll_CoRevertToSelf]
pop edi
mov eax, esi
pop esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 4
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 4], edi
call dword [sym.imp.ole32.dll_CoRevertToSelf]
mov ecx, dword [ebp - 0xc]
pop edi
xor eax, eax
pop esi
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 4