Function at 0x402cb0
Capabilities:
Check os version
Get cpu information
Get memory capacity
Identify system language via api
Query or enumerate registry value

Disassembly:
sub esp, 0x30c
mov ecx, 0x3a
xor eax, eax
push ebx
push ebp
mov ebp, dword [esp + 0x318]
push esi
push edi
mov edi, ebp
rep stosd dword es:[edi], eax
mov ecx, 0xc
mov esi, 0x4086dc
lea edi, [esp + 0x218]
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x35
lea edi, [esp + 0x248]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x10]
lea ecx, [esp + 0x218]
push eax
push 0xf003f
push 0
push ecx
push 0x80000002
call dword [sym.imp.advapi32.dll_RegOpenKeyExA]
test eax, eax
jne 0x402db6
mov ecx, 0x40
lea edi, [esp + 0x118]
rep stosd dword es:[edi], eax
lea edx, [esp + 0x14]
lea eax, [esp + 0x118]
push edx
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x3c]
push eax
push ecx
push 0
push 0x4086c8
push edx
mov dword [esp + 0x2c], 0xfa
call dword [sym.imp.advapi32.dll_RegQueryValueExA]
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
lea edi, [esp + 0x118]
or ecx, 0xffffffff
xor eax, eax
xor esi, esi
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, ecx
test edi, edi
jle 0x402d95
mov ebx, dword [sym.imp.msvcrt.dll__strnicmp]
push 1
lea ecx, [esp + esi + 0x11c]
push 0x4086c4
push ecx
call ebx
add esp, 0xc
test eax, eax
jne 0x402d95
inc esi
cmp esi, edi
jl 0x402d78
lea edi, [esp + esi + 0x118]
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
jmp 0x402dd3
mov edi, 0x4086b4
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, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
xor eax, eax
rep movsb byte es:[edi], byte [esi]
mov ecx, 0x27
lea edi, [esp + 0x7c]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x7c]
mov dword [esp + 0x7c], 0x9c
push ecx
call dword [sym.imp.kernel32.dll_GetVersionExA]
test eax, eax
jne 0x402e09
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x30c
ret
mov eax, dword [esp + 0x8c]
dec eax
je 0x402e7c
dec eax
jne 0x402ec7
mov eax, dword [esp + 0x80]
cmp eax, 6
jne 0x402e31
lea edx, [esp + 0x18]
mov edi, 0x4086a8
jmp 0x402eaa
cmp eax, 5
jne 0x402e6c
mov eax, dword [esp + 0x84]
cmp eax, 2
jne 0x402e4d
lea edx, [esp + 0x18]
mov edi, 0x40869c
jmp 0x402eaa
cmp eax, 1
jne 0x402e5d
lea edx, [esp + 0x18]
mov edi, 0x408694
jmp 0x402eaa
test eax, eax
jne 0x402ec7
lea edx, [esp + 0x18]
mov edi, 0x408688
jmp 0x402eaa
cmp eax, 4
ja 0x402ec7
lea edx, [esp + 0x18]
mov edi, 0x408680
jmp 0x402eaa
cmp dword [esp + 0x80], 4
jne 0x402ec7
mov eax, dword [esp + 0x84]
test eax, eax
jne 0x402e9c
lea edx, [esp + 0x18]
mov edi, 0x408678
jmp 0x402eaa
cmp eax, 0xa
jne 0x402ec7
lea edx, [esp + 0x18]
mov edi, 0x408670
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 + 0x110]
lea edx, [esp + 0x18]
and ecx, 0xffff
lea eax, [ebp + 0xa0]
push ecx
push edx
push 0x408668
push eax
call dword [sym.imp.user32.dll_wsprintfA]
add esp, 0x10
lea ecx, [esp + 0x3c]
mov dword [esp + 0x3c], 0x40
push ecx
call dword [sym.imp.kernel32.dll_GlobalMemoryStatusEx]
mov edx, dword [esp + 0x48]
lea ebx, [ebp + 0x80]
mov ecx, 8
xor eax, eax
mov edi, ebx
push 0xa
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x48]
push ebx
mov ecx, 0x14
call fcn.004056b0
push edx
push eax
call dword [sym.imp.msvcrt.dll__ui64toa]
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
add esp, 0x10
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x408664
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [ebp + 0xc0]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x408658
or ecx, 0xffffffff
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]
call dword [sym.imp.kernel32.dll_GetSystemDefaultUILanguage]
and eax, 0xffff
pop edi
mov dword [ebp + 0xe0], eax
mov ecx, dword [0x4085b0]
mov dword [ebp + 0xe4], ecx
mov al, 1
pop esi
pop ebp
pop ebx
add esp, 0x30c
ret