Function at 0x59daeb
Capabilities:
Get disk information
Get disk size
Get memory capacity
Get system information on windows

Disassembly:
push ebp
sub esp, 0x60
mov eax, 0x6af84e
call fcn.00640244
sub esp, 0x2ec
cmp byte [0x7e0e34], 0
je 0x59db0f
mov al, 1
jmp 0x59e242
push ebx
push esi
xor eax, eax
push edi
push 0x40
pop esi
push esi
mov ebx, eax
mov dword [ebp + 0x34], eax
push eax
mov dword [ebp + 0x30], eax
mov dword [ebp + 0x28], eax
mov dword [ebp + 0x2c], eax
mov dword [ebp + 0x20], eax
mov dword [ebp + 0x24], eax
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x1c], eax
lea eax, [ebp - 0x88]
push eax
mov dword [ebp + 0xc], ebx
call fcn.0065ab80
add esp, 0xc
mov dword [ebp - 0x88], esi
lea eax, [ebp - 0x88]
push eax
call dword [sym.imp.KERNEL32.DLL_GlobalMemoryStatusEx]
mov esi, dword [sym.imp.KERNEL32.DLL_GetLastError]
test eax, eax
jne 0x59db69
call esi
mov ebx, eax
mov dword [ebp + 0xc], eax
push 9
pop ecx
xor eax, eax
lea edi, [ebp - 0x48]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x48]
push eax
call dword [sym.imp.KERNEL32.DLL_GetSystemInfo]
xor eax, eax
lea edi, [ebp]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
lea eax, [ebp]
push eax
call dword [sym.imp.KERNEL32.DLL_GetSystemPowerStatus]
test eax, eax
jne 0x59db9c
call esi
mov edi, eax
mov dword [ebp + 0x34], edi
jmp 0x59db9f
mov edi, dword [ebp + 0x34]
mov esi, 0xd0
lea eax, [ebp - 0x158]
push esi
push 0
push eax
call fcn.0065ab80
push esi
lea eax, [ebp - 0x228]
push 0
push eax
call fcn.0065ab80
push esi
xor esi, esi
lea eax, [ebp - 0x2f8]
push esi
push eax
call fcn.0065ab80
add esp, 0x24
call dword [sym.imp.KERNEL32.DLL_GetLogicalDrives]
mov edx, eax
mov dword [ebp + 0x38], edx
test edx, edx
je 0x59dcb8
mov edi, dword [ebp + 0x2c]
mov ebx, dword [ebp + 0x24]
push 0x3a
pop eax
mov word [ebp + 0x12], ax
push 0x5c
pop eax
mov word [ebp + 0x14], ax
xor eax, eax
mov word [ebp + 0x16], ax
xor eax, eax
mov ecx, esi
inc eax
shl eax, cl
test edx, eax
je 0x59dca0
lea eax, [esi + 0x41]
mov word [ebp + 0x10], ax
lea eax, [ebp + 0x10]
push eax
call dword [sym.imp.KERNEL32.DLL_GetDriveTypeW]
cmp eax, 3
jne 0x59dc9d
lea eax, [ebp - 0x2f8]
lea eax, [eax + esi*8]
push eax
lea ecx, [ebp - 0x228]
lea ecx, [ecx + esi*8]
lea edx, [ebp - 0x158]
push ecx
lea edx, [edx + esi*8]
push edx
lea eax, [ebp + 0x10]
push eax
call dword [sym.imp.KERNEL32.DLL_GetDiskFreeSpaceExW]
mov edx, dword [ebp + 0x38]
test eax, eax
je 0x59dca0
mov eax, dword [ebp + 0x28]
add eax, dword [ebp + esi*8 - 0x158]
mov dword [ebp + 0x28], eax
adc edi, dword [ebp + esi*8 - 0x154]
mov eax, dword [ebp + 0x20]
add eax, dword [ebp + esi*8 - 0x228]
mov dword [ebp + 0x20], eax
adc ebx, dword [ebp + esi*8 - 0x224]
mov eax, dword [ebp + 0x18]
add eax, dword [ebp + esi*8 - 0x2f8]
mov dword [ebp + 0x18], eax
mov eax, dword [ebp + 0x1c]
adc eax, dword [ebp + esi*8 - 0x2f4]
inc dword [ebp + 0x30]
mov dword [ebp + 0x1c], eax
jmp 0x59dca0
mov edx, dword [ebp + 0x38]
inc esi
cmp esi, 0x1a
jb 0x59dc02
mov dword [ebp + 0x24], ebx
xor esi, esi
mov ebx, dword [ebp + 0xc]
mov dword [ebp + 0x2c], edi
mov edi, dword [ebp + 0x34]
mov dword [ebp + 0x3c], 0x6c1070
mov dword [ebp + 0x40], esi
mov dword [ebp + 0x44], esi
mov dword [ebp + 0x48], esi
push str.btfssys
lea ecx, [ebp - 0x24]
mov dword [ebp - 4], esi
call fcn.0040eeff
mov byte [ebp - 4], 1
test ebx, ebx
je 0x59dce7
mov esi, str..nomem
jmp 0x59dcf5
mov esi, str..nopwr
test edi, edi
jne 0x59dcf5
mov esi, 0x711144
push esi
call fcn.0040f10e
pop ecx
push eax
push esi
lea ecx, [ebp - 0x24]
call fcn.0040f072
push str.action
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
lea eax, [ebp - 0x24]
mov byte [ebp - 4], 2
push eax
lea eax, [ebp + 0x4c]
push eax
lea ecx, [ebp + 0x3c]
call fcn.00439e1d
push 0
push 1
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], 1
call fcn.0040f52f
call fcn.0046253b
mov esi, eax
lea ecx, [ebp + 0x4c]
sub esi, dword [0x7b0f90]
push 0x6cff1c
call fcn.0040eeff
push esi
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 3
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
xor esi, esi
mov byte [ebp - 4], 1
push esi
push 1
lea ecx, [ebp + 0x4c]
call fcn.0040f52f
lea ecx, [ebp + 0x4c]
test ebx, ebx
je 0x59dd9d
push str.mserr
call fcn.0040eeff
push ebx
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 4
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
xor ebx, ebx
inc ebx
jmp 0x59dece
push 0x711150
call fcn.0040eeff
push dword [ebp - 0x84]
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 5
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
xor ebx, ebx
lea ecx, [ebp + 0x4c]
inc ebx
push esi
push ebx
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x711154
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
push dword [ebp - 0x80]
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 6
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x711158
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
push dword [ebp - 0x78]
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 7
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x71115c
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
push dword [ebp - 0x70]
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 8
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x711160
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
push dword [ebp - 0x68]
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 9
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x711164
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
mov byte [ebp - 4], 0xa
push dword [ebp - 0x60]
lea eax, [ebp + 0x4c]
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x711168
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
push dword [ebp - 0x58]
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 0xb
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x71116c
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
movzx eax, word [ebp - 0x48]
lea ecx, [ebp + 0x3c]
push eax
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 0xc
push eax
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x6e79c0
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
push dword [ebp - 0x44]
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 0xd
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push str.apmsk
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
push dword [ebp - 0x38]
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 0xe
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x6d8830
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
push dword [ebp - 0x34]
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 0xf
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x6e79d4
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
movzx eax, word [ebp - 0x28]
lea ecx, [ebp + 0x3c]
push eax
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 0x10
push eax
call fcn.0046c04a
push esi
mov byte [ebp - 4], bl
lea ecx, [ebp + 0x4c]
push ebx
call fcn.0040f52f
push 0x711178
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
movzx eax, word [ebp - 0x26]
lea ecx, [ebp + 0x3c]
push eax
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 0x11
push eax
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
lea ecx, [ebp + 0x4c]
test edi, edi
je 0x59e00a
push str.pserr
call fcn.0040eeff
mov byte [ebp - 4], 0x12
push edi
jmp 0x59e104
push str.acls
call fcn.0040eeff
movzx eax, byte [ebp]
lea ecx, [ebp + 0x3c]
push eax
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 0x13
push eax
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x71118c
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
movzx eax, byte [ebp + 1]
lea ecx, [ebp + 0x3c]
push eax
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 0x14
push eax
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x711190
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
movzx eax, byte [ebp + 2]
lea ecx, [ebp + 0x3c]
push eax
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 0x15
push eax
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x711194
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
movzx eax, byte [ebp + 3]
lea ecx, [ebp + 0x3c]
push eax
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 0x16
push eax
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x711198
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
push dword [ebp + 4]
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 0x17
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push str.bflt
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
push dword [ebp + 8]
mov byte [ebp - 4], 0x18
lea eax, [ebp + 0x4c]
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x7111a4
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
push dword [ebp + 0x30]
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 0x19
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x7081a8
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
mov eax, dword [ebp + 0x2c]
mov ecx, dword [ebp + 0x28]
shrd ecx, eax, 0x14
mov byte [ebp - 4], 0x1a
shr eax, 0x14
push ecx
lea eax, [ebp + 0x4c]
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x7111a8
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
mov eax, dword [ebp + 0x24]
mov ecx, dword [ebp + 0x20]
shrd ecx, eax, 0x14
mov byte [ebp - 4], 0x1b
shr eax, 0x14
push ecx
lea eax, [ebp + 0x4c]
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push 0x7111ac
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
mov eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
shrd ecx, eax, 0x14
mov byte [ebp - 4], 0x1c
shr eax, 0x14
push ecx
lea eax, [ebp + 0x4c]
push eax
lea ecx, [ebp + 0x3c]
call fcn.0046c04a
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [ebp - 4], bl
call fcn.0040f52f
push str.btfssys
lea ecx, [ebp + 0x4c]
call fcn.0040eeff
push esi
push esi
push esi
lea eax, [ebp + 0x4c]
mov byte [ebp - 4], 0x1d
push eax
lea eax, [ebp + 0x3c]
push eax
push 0x2b
call fcn.00488d49
push esi
push ebx
lea ecx, [ebp + 0x4c]
mov byte [0x7e0e34], al
call fcn.0040f52f
mov bl, byte [0x7e0e34]
lea ecx, [ebp - 0x24]
push esi
push 1
call fcn.0040f52f
lea ecx, [ebp + 0x40]
call fcn.00438b16
pop edi
pop esi
mov al, bl
pop ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
lea esp, [ebp + 0x64]
pop ebp
ret