Function at 0x407130
Capabilities:
Check os version
Get common file path
Get cpu information
Get disk information
Get disk size
Identify system language via api
Query or enumerate registry value

Disassembly:
sub esp, 0x5dc
mov ecx, 0x263
xor eax, eax
push ebx
push ebp
mov ebp, dword [esp + 0x5e8]
push esi
push edi
mov edi, ebp
rep stosd dword es:[edi], eax
lea eax, [esp + 0x4e8]
push eax
call fcn.00405900
mov ebx, dword [sym.imp.USER32.dll_wsprintfA]
add esp, 4
test eax, eax
je 0x407176
lea ecx, [esp + 0x4e8]
push ecx
push ebp
call ebx
add esp, 8
jmp 0x407198
mov edi, str.NULL
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea esi, [ebp + 0x80]
push 0
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
push 0
push esi
push 1
push str.ProcessorNameString
push str.HARDWAREDESCRIPTIONSystemCentralProcessor0
push closesocket
call fcn.0040a040
add esp, 0x20
test eax, eax
jne 0x4071ec
mov edi, str.Find_CPU_infomation_error
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
lea edi, [ebp + 0x80]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.00406220
mov esi, eax
push esi
call fcn.004148bc
push esi
mov dword [ebp + 0x100], eax
call fcn.00422541
call fcn.004061b0
mov esi, eax
push esi
call fcn.004148bc
push esi
mov dword [ebp + 0x104], eax
call fcn.00422541
add esp, 0x10
xor esi, esi
xor edi, edi
mov dword [esp + 0x10], edi
mov cl, byte [esp + 0x10]
lea edx, [esp + 0x2c]
add cl, 0x42
push edx
mov byte [esp + 0x30], cl
mov byte [esp + 0x31], 0x3a
mov byte [esp + 0x32], 0x5c
mov byte [esp + 0x33], 0
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 3
jne 0x407295
lea eax, [esp + 0x4c]
lea ecx, [esp + 0x44]
push eax
lea edx, [esp + 0x58]
push ecx
lea eax, [esp + 0x34]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExA]
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
mov ecx, 0x1e
call fcn.00413c10
mov edx, dword [esp + 0x50]
add esi, eax
mov eax, dword [esp + 0x4c]
mov ecx, 0x1e
call fcn.00413c10
add edi, eax
mov eax, dword [esp + 0x10]
inc eax
cmp eax, 0x1a
mov dword [esp + 0x10], eax
jl 0x407229
lea ecx, [ebp + 0x110]
mov dword [ebp + 0x108], esi
push ecx
mov dword [ebp + 0x10c], edi
call fcn.00406880
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
add esp, 4
push 1
call esi
push eax
push 0
call esi
push eax
lea edx, [ebp + 0x162]
push str._d___d
push edx
call ebx
add esp, 0x10
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, eax
mov eax, 0x31b5d43b
mul esi
mov ecx, edx
mov eax, esi
xor edx, edx
mov esi, 0x5265c00
div esi
mov edi, 0x36ee80
shr ecx, 0x18
mov esi, edx
xor edx, edx
mov eax, esi
div edi
mov eax, 0x45e7b273
mul edx
shr edx, 0xe
mov eax, 0x95217cb1
push edx
mul esi
shr edx, 0x15
push edx
push ecx
lea eax, [ebp + 0x574]
push 0x432b8c
push eax
call fcn.0041486a
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x231]
mov byte [esp + 0x230], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea ecx, [esp + 0x230]
push ecx
stosb byte es:[edi], al
call fcn.00406290
add esp, 0x18
test eax, eax
je 0x40737b
lea edx, [esp + 0x21c]
lea eax, [ebp + 0x1a2]
push edx
push 0x431fe4
push eax
call ebx
add esp, 0xc
call fcn.004069d0
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp + 0x2a2]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x320]
push ecx
call fcn.00406ba0
lea edi, [esp + 0x324]
or ecx, 0xffffffff
xor eax, eax
add esp, 4
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [ebp + 0x3a2]
mov eax, ecx
mov esi, edi
mov edi, edx
push 0
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea esi, [ebp + 0x406]
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
push 0
push esi
push 1
push str.DriverDesc
push str.SYSTEMCurrentControlSetControlClass4D36E968_E325_11CE_BFC1_08002BE103180000
push closesocket
call fcn.0040a040
add esp, 0x20
test eax, eax
jne 0x407433
mov edi, str.NULL
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
lea edi, [ebp + 0x406]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push 0x43bf4c
call fcn.00407090
push eax
lea eax, [ebp + 0x48c]
push 0x432b1c
push eax
call ebx
mov ecx, dword [0x43bf48]
lea edx, [ebp + 0x4f0]
push ecx
push 0x432b18
push edx
call ebx
add esp, 0x1c
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultUILanguage]
and eax, 0xffff
cmp eax, 0x809
jg 0x4074bf
je 0x4074b2
sub eax, 0x404
je 0x4074a5
sub eax, 5
je 0x407498
sub eax, 0x3fb
jne 0x4074d4
lea edx, [ebp + 0x510]
mov edi, 0x432b0c
jmp 0x407506
lea edx, [ebp + 0x510]
mov edi, 0x432b00
jmp 0x407506
lea edx, [ebp + 0x510]
mov edi, 0x432af4
jmp 0x407506
lea edx, [ebp + 0x510]
mov edi, 0x432ae8
jmp 0x407506
cmp eax, 0xc04
je 0x4074fb
cmp eax, 0x1004
je 0x4074ee
cmp eax, 0x1404
je 0x4074e1
lea edx, [ebp + 0x510]
mov edi, str.Find_Language_infomation_error
jmp 0x407506
lea edx, [ebp + 0x510]
mov edi, 0x432ab8
jmp 0x407506
lea edx, [ebp + 0x510]
mov edi, 0x432aac
jmp 0x407506
lea edx, [ebp + 0x510]
mov edi, 0x432a9c
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x32
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp + 0x542]
push ecx
push 0x43bce8
call fcn.00406e20
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
add esp, 0xc
mov byte [esp + 0x14], 0x25
mov byte [esp + 0x15], 0x64
mov byte [esp + 0x16], 0
call edi
mov esi, eax
mov eax, 0x31b5d43b
mul esi
shr edx, 0x18
push edx
lea edx, [esp + 0x18]
lea eax, [esp + 0xf4]
push edx
push eax
call ebx
mov eax, esi
xor edx, edx
mov ecx, 0x5265c00
div ecx
mov eax, 0x95217cb1
mov esi, edx
mul esi
shr edx, 0x15
push edx
lea edx, [esp + 0x24]
lea eax, [esp + 0x164]
push edx
push eax
call ebx
mov eax, esi
xor edx, edx
mov ecx, 0x36ee80
div ecx
mov eax, 0x45e7b273
mul edx
shr edx, 0xe
push edx
lea edx, [esp + 0x30]
lea eax, [esp + 0x1d4]
push edx
push eax
call ebx
lea ecx, [esp + 0x1dc]
lea edx, [esp + 0x178]
push ecx
lea eax, [esp + 0x118]
push edx
push eax
lea ecx, [ebp + 0x182]
push 0x432a8c
push ecx
call ebx
call fcn.00406ea0
lea edx, [ebp + 0x5d4]
push eax
push edx
call ebx
add esp, 0x40
lea eax, [esp + 0x3c]
mov dword [esp + 0x3c], 8
push eax
call dword [sym.imp.USER32.dll_GetLastInputInfo]
call edi
mov ecx, eax
mov eax, dword [esp + 0x40]
sub ecx, eax
mov eax, 0x10624dd3
mul ecx
shr edx, 6
push edx
lea edx, [ebp + 0x5f4]
push 0x432a84
push edx
call ebx
push 0x432a68
lea eax, [ebp + 0x674]
push 0x431fe4
push eax
call ebx
add esp, 0x18
lea ecx, [esp + 0x3e8]
xor esi, esi
push 0x104
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea edx, [esp + 0x3e8]
lea eax, [ebp + 0x6d8]
push edx
push eax
call ebx
add esp, 8
lea ecx, [ebp + 0x7d8]
push 0x32
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
mov ecx, 0x24
xor eax, eax
lea edi, [esp + 0x60]
lea edx, [esp + 0x5c]
rep stosd dword es:[edi], eax
push edx
mov dword [esp + 0x60], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x4077eb
cmp dword [esp + 0x60], 5
jbe 0x4077eb
mov eax, 4
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
lea eax, [esp + 0x18]
mov dword [esp + 0x28], esi
push eax
push 0x20019
push esi
push str.SOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem_
push closesocket
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4077e0
lea ecx, [esp + 0x20]
lea edx, [esp + 0x28]
push ecx
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x20]
push edx
push eax
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push str.EnableLUA
push ecx
call esi
test eax, eax
jne 0x4077e0
mov edx, dword [esp + 0x28]
test edx, edx
setne al
test eax, eax
je 0x4077e0
lea edx, [esp + 0x20]
lea eax, [esp + 0x24]
push edx
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x20]
xor ebx, ebx
push eax
push ecx
push ebx
push str.ConsentPromptBehaviorAdmin
push edx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x28], ebx
call esi
mov edi, eax
lea eax, [esp + 0x20]
lea ecx, [esp + 0x10]
push eax
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0x20]
push ecx
push edx
push ebx
push str.PromptOnSecureDesktop
push eax
call esi
add eax, edi
jne 0x4077b8
mov eax, dword [esp + 0x24]
cmp eax, 5
jne 0x407793
mov eax, dword [esp + 0x10]
cmp eax, ebx
jne 0x407781
lea edx, [ebp + 0x858]
mov edi, 0x4329e4
jmp 0x4077c3
cmp eax, 1
jne 0x4077e0
lea edx, [ebp + 0x858]
mov edi, 0x4329dc
jmp 0x4077c3
cmp eax, 2
jne 0x4077ac
cmp dword [esp + 0x10], 1
jne 0x4077e0
lea edx, [ebp + 0x858]
mov edi, 0x4329d4
jmp 0x4077c3
cmp eax, ebx
jne 0x4077e0
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x4077e0
lea edx, [ebp + 0x858]
mov edi, 0x4329cc
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x18]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0
call fcn.0041478e
lea edx, [esp + 0x3c]
mov dword [esp + 0x3c], eax
push edx
call fcn.0041462e
push eax
push str.__Y__m__d__X__A
add ebp, 0x958
push 0x32
push ebp
call fcn.00413d3d
add esp, 0x18
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5dc
ret