Function at 0x8457b4
Capabilities:
Get disk information
Get system information on windows
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffa8c
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 0x574], edx
mov dword [ebp - 0x570], edx
mov byte [ebp - 1], al
xor eax, eax
push ebp
push 0x845afc
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x16c]
call fcn.00845608
test byte [ebp - 1], 1
je 0x845940
xor ebx, ebx
lea eax, [ebp - 0x10]
push eax
push 1
push 0
push 0x845b10
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA_1
test eax, eax
jne 0x845898
mov dword [ebp - 0xc], 0x400
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x56c]
push eax
push 0
push 0
push 0x845b3c
mov eax, dword [ebp - 0x10]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
test eax, eax
jne 0x84588f
mov bl, 1
lea edx, [ebp - 0x56c]
lea eax, [ebp - 0x16c]
mov ecx, dword [ebp - 0xc]
call fcn.00845650
mov dword [ebp - 0xc], 0x400
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x56c]
push eax
push 0
push 0
push 0x845b4c
mov eax, dword [ebp - 0x10]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
test eax, eax
jne 0x84588f
lea edx, [ebp - 0x56c]
lea eax, [ebp - 0x16c]
mov ecx, dword [ebp - 0xc]
call fcn.00845650
mov eax, dword [ebp - 0x10]
push eax
call sub.advapi32.dll_RegCloseKey_1
test bl, bl
jne 0x845940
lea eax, [ebp - 0x10]
push eax
push 1
push 0
push 0x845b64
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA_1
test eax, eax
jne 0x845940
mov dword [ebp - 0xc], 0x400
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x56c]
push eax
push 0
push 0
push 0x845b3c
mov eax, dword [ebp - 0x10]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
test eax, eax
jne 0x845937
lea edx, [ebp - 0x56c]
lea eax, [ebp - 0x16c]
mov ecx, dword [ebp - 0xc]
call fcn.00845650
mov dword [ebp - 0xc], 0x400
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x56c]
push eax
push 0
push 0
push 0x845b4c
mov eax, dword [ebp - 0x10]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
test eax, eax
jne 0x845937
lea edx, [ebp - 0x56c]
lea eax, [ebp - 0x16c]
mov ecx, dword [ebp - 0xc]
call fcn.00845650
mov eax, dword [ebp - 0x10]
push eax
call sub.advapi32.dll_RegCloseKey_1
test byte [ebp - 1], 2
je 0x84597b
lea eax, [ebp - 0x54]
push eax
call sub.KERNEL32.DLL_GetSystemInfo
lea eax, [ebp - 0x56c]
mov edx, dword [ebp - 0x54]
mov dword [eax], edx
lea eax, [ebp - 0x568]
mov edx, dword [ebp - 0x3c]
mov dword [eax], edx
lea edx, [ebp - 0x56c]
lea eax, [ebp - 0x16c]
mov ecx, 8
call fcn.00845650
test byte [ebp - 1], 4
je 0x845a0f
lea eax, [ebp - 0x20]
push eax
call sub.ole32.dll_CoCreateGuid
lea eax, [ebp - 0x30]
push eax
call sub.ole32.dll_CoCreateGuid
push 0x845b94
call sub.KERNEL32.DLL_LoadLibraryA
mov ebx, eax
test ebx, ebx
je 0x8459cc
push 0x845ba0
push ebx
call sub.KERNEL32.DLL_GetProcAddress_1
mov edi, eax
mov esi, edi
test edi, edi
je 0x8459c6
lea eax, [ebp - 0x20]
push eax
call esi
lea eax, [ebp - 0x30]
push eax
call esi
push ebx
call sub.KERNEL32.DLL_FreeLibrary_1
mov al, byte [ebp - 0x16]
cmp al, byte [ebp - 0x26]
jne 0x845a0f
mov al, byte [ebp - 0x15]
cmp al, byte [ebp - 0x25]
jne 0x845a0f
mov al, byte [ebp - 0x14]
cmp al, byte [ebp - 0x24]
jne 0x845a0f
mov al, byte [ebp - 0x13]
cmp al, byte [ebp - 0x23]
jne 0x845a0f
mov al, byte [ebp - 0x12]
cmp al, byte [ebp - 0x22]
jne 0x845a0f
mov al, byte [ebp - 0x11]
cmp al, byte [ebp - 0x21]
jne 0x845a0f
lea edx, [ebp - 0x16]
lea eax, [ebp - 0x16c]
mov ecx, 6
call fcn.00845650
test byte [ebp - 1], 8
je 0x845acb
mov bl, 0x43
lea eax, [ebp - 0x570]
mov edx, ebx
call fcn.00404820
lea eax, [ebp - 0x570]
mov edx, 0x845bc0
call fcn.0040492c
mov eax, dword [ebp - 0x570]
call fcn.00404b24
push eax
call sub.KERNEL32.DLL_GetDriveTypeA
cmp eax, 3
jne 0x845ac1
lea eax, [ebp - 0x56c]
xor ecx, ecx
mov edx, 0x400
call fcn.00402f50
mov byte [ebp - 0x56c], bl
push 0
push 0
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x56b]
push eax
push 0
push 0
lea eax, [ebp - 0x574]
mov edx, ebx
call fcn.00404820
lea eax, [ebp - 0x574]
mov edx, 0x845bc0
call fcn.0040492c
mov eax, dword [ebp - 0x574]
call fcn.00404b24
push eax
call sub.KERNEL32.DLL_GetVolumeInformationA
lea edx, [ebp - 0x56c]
lea eax, [ebp - 0x16c]
mov ecx, 5
call fcn.00845650
inc ebx
cmp bl, 0x5b
jne 0x845a1b
lea edx, [ebp - 8]
lea eax, [ebp - 0x16c]
mov ecx, 4
call fcn.00845754
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x845b03
lea eax, [ebp - 0x574]
mov edx, 2
call fcn.0040465c
ret