Function at 0x407820
Capabilities:
Get cpu information
Get hostname
Get memory capacity
Get session user name
Get system information on windows
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x378
mov eax, dword [0x41e028]
xor eax, esp
mov dword [esp + 0x374], eax
push ebx
push esi
push 0x11c
push 0
push edi
call fcn.0040e850
add esp, 0xc
cmp byte [0x420460], 0
jne 0x407860
xor eax, eax
mov word [edi + 0xd4], ax
jmp 0x40789d
mov eax, 0x420460
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x407868
sub eax, edx
lea esi, [edi + 0xd4]
mov ebx, eax
test esi, esi
je 0x40788a
push 0x40
push 0
push esi
call fcn.0040e850
add esp, 0xc
push 0x20
push esi
push ebx
push 0x420460
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0x63
xor ebx, ebx
lea ecx, [esp + 0x1a5]
push ebx
push ecx
mov byte [esp + 0x1ac], 0
call fcn.0040e850
add esp, 0xc
push 0x64
lea edx, [esp + 0x20c]
push edx
call dword [0x42072c]
test eax, eax
jne 0x4078dc
lea esi, [esp + 0x208]
call fcn.004077c0
jmp 0x4078de
xor eax, eax
push eax
call dword [0x420720]
cmp eax, ebx
je 0x407a38
push eax
lea eax, [esp + 0x1a4]
push 0x10
push eax
call fcn.0040943b
lea eax, [esp + 0x1ac]
add esp, 0xc
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x407910
sub eax, edx
mov edx, eax
lea eax, [edi + 0x34]
cmp eax, ebx
je 0x40793b
xor ecx, ecx
mov dword [eax], ecx
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], ecx
mov dword [eax + 0x18], ecx
mov dword [eax + 0x1c], ecx
push 0x10
push eax
push edx
lea ecx, [esp + 0x1ac]
push ecx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0x3e
lea eax, [esp + 0x166]
xor edx, edx
push ebx
push eax
mov word [esp + 0x16c], dx
call fcn.0040e850
push 0x3e
lea edx, [esp + 0x132]
xor ecx, ecx
push ebx
push edx
mov word [esp + 0x138], cx
call fcn.0040e850
add esp, 0x18
lea eax, [esp + 8]
push eax
lea ecx, [esp + 0x164]
mov esi, 0x1f
push ecx
mov dword [esp + 0x10], esi
call dword [sym.imp.KERNEL32.dll_GetComputerNameW]
test eax, eax
jne 0x4079b0
xor edx, edx
mov word [esp + 0x160], dx
lea eax, [esp + 8]
push eax
lea ecx, [esp + 0x124]
push ecx
mov dword [esp + 0x10], esi
call dword [sym.imp.ADVAPI32.dll_GetUserNameW]
test eax, eax
jne 0x4079d5
xor edx, edx
mov word [esp + 0x120], dx
lea eax, [esp + 0x120]
push eax
lea ecx, [esp + 0x164]
push ecx
push str._s__s
lea edx, [edi + 0x54]
push 0x40
push edx
call fcn.00409c4d
call fcn.00402700
push 0x98
mov dword [edi + 0x118], eax
lea eax, [esp + 0x9c]
push ebx
push eax
call fcn.0040e850
add esp, 0x20
lea ecx, [esp + 0x80]
push ecx
mov dword [esp + 0x84], 0x9c
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
jne 0x407a57
mov dword [edi + 4], ebx
jmp 0x407a81
xor eax, eax
mov dword [edi + 0x34], eax
mov dword [edi + 0x38], eax
mov dword [edi + 0x3c], eax
mov dword [edi + 0x40], eax
mov dword [edi + 0x44], eax
mov dword [edi + 0x48], eax
mov dword [edi + 0x4c], eax
mov dword [edi + 0x50], eax
jmp 0x40794f
movzx edx, byte [esp + 0x90]
mov al, byte [esp + 0x84]
mov cl, byte [esp + 0x88]
mov byte [edi + 7], dl
movzx edx, byte [esp + 0x11a]
mov byte [edi + 4], al
mov byte [edi + 5], cl
mov byte [edi + 6], dl
push 0x103
lea eax, [esp + 0x275]
push ebx
push eax
mov byte [esp + 0x27c], bl
call fcn.0040e850
push str.HARDWAREDESCRIPTIONSystemCentralProcessor0
lea ecx, [esp + 0x280]
push 0x104
push ecx
mov dword [esp + 0x28], ebx
call fcn.0040943b
add esp, 0x18
lea edx, [esp + 0xc]
push edx
push 0x20019
push ebx
lea eax, [esp + 0x27c]
push eax
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x407b16
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x20]
push eax
push ebx
push str.MHz
push ecx
mov dword [esp + 0x30], 4
mov dword [esp + 0x2c], 0xc8
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov edx, dword [esp + 0xc]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x1c]
push ecx
mov dword [edi + 0x10], eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov edx, dword [esp + 0x30]
push 0x40
lea eax, [esp + 0x44]
push ebx
push eax
mov dword [edi + 0xc], edx
call fcn.0040e850
add esp, 0xc
lea ecx, [esp + 0x40]
push ecx
mov dword [esp + 0x44], 0x40
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatusEx]
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
mov ecx, dword [0x41f1bc]
shrd edx, eax, 0x14
mov dword [edi + 0x114], ecx
mov ecx, dword [esp + 0x37c]
pop esi
inc edx
pop ebx
xor ecx, esp
shr eax, 0x14
mov dword [edi + 8], edx
call fcn.0040942c
mov esp, ebp
pop ebp
ret