Function at 0x574e10
Capabilities:
Get common file path
Get disk information

Disassembly:
push ebp
xor eax, eax
mov ecx, 0x40
mov ebp, esp
push edi
push esi
lea edi, [ebp - 0x314]
lea esi, [ebp - 0x318]
push ebx
sub esp, 0x324
mov dword [ebp - 0x318], 0
rep stosd dword es:[edi], eax
lea edi, [ebp - 0x210]
mov ecx, 0x40
mov dword [ebp - 0x214], 0
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x110]
mov dword [ebp - 0x31c], 0x5c3a63
mov dword [esp + 4], 0x104
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_GetWindowsDirectoryA]
sub esp, 8
mov ebx, eax
call fcn.0057d110
mov dword [eax], 0x601b57
mov dword [eax + 4], 0x233
xor eax, eax
cmp ebx, 0x103
setbe al
mov dword [esp + 4], str.windowsdir_is_abnormally_long__n
mov dword [esp], eax
call fcn.005744b0
call fcn.0057d110
mov dword [eax], 0x601b57
mov edx, dword fs:[0x18]
mov dword [eax + 4], 0x234
mov eax, dword [edx + 0x34]
mov dword [ebp - 0x324], edx
mov dword [esp + 8], eax
xor eax, eax
test ebx, ebx
setne al
mov dword [esp + 4], str.GetWindowsDirectory:_error__ld_n
mov dword [esp], eax
call fcn.005744b0
movzx eax, byte [ebp - 0x110]
mov byte [ebp - 0x31c], al
lea eax, [ebp - 0x31c]
mov dword [esp + 4], esi
mov dword [esp + 8], 0x104
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_GetVolumeNameForVolumeMountPointA]
sub esp, 0xc
mov ebx, eax
call fcn.0057d110
mov dword [eax], 0x601b57
mov dword [eax + 4], 0x239
xor eax, eax
cmp ebx, 1
lea ebx, [ebp - 0x214]
sete al
mov dword [esp + 4], str.GetVolumeNameForVolumeMountPointA_failed_n
mov dword [esp], eax
call fcn.005744b0
call fcn.0057d110
mov dword [eax], 0x601b57
mov dword [eax + 4], 0x23a
mov eax, dword [sym.imp.msvcrt.dll_strlen]
mov dword [esp], esi
mov dword [ebp - 0x320], eax
call eax
mov dword [esp + 8], esi
cmp eax, 0x31
mov dword [esp + 4], str.GetVolumeNameForVolumeMountPointA_returned_wrong_length_name__s_n
sete al
movzx eax, al
mov dword [esp], eax
call fcn.005744b0
mov dword [esp], ebx
mov dword [esp + 4], 0x104
call dword [0x8f0720]
sub esp, 8
mov edi, eax
call fcn.0057d110
mov edx, dword [ebp - 0x324]
mov dword [eax], 0x601b57
mov dword [eax + 4], 0x23e
mov eax, dword [edx + 0x34]
mov dword [esp + 4], str.FindFirstVolume_failed__err_lu_n
mov dword [esp + 8], eax
xor eax, eax
cmp edi, 0xffffffff
setne al
mov dword [esp], eax
call fcn.005744b0
jmp 0x574fee
mov dword [esp + 8], 0x104
mov dword [esp + 4], ebx
mov dword [esp], edi
call dword [0x8f071c]
sub esp, 0xc
mov edx, eax
test eax, eax
je 0x575045
call fcn.0057d110
mov dword [eax], 0x601b57
mov dword [eax + 4], 0x244
mov dword [esp], ebx
mov eax, dword [ebp - 0x320]
call eax
mov dword [esp + 8], esi
cmp eax, 0x31
mov dword [esp + 4], str.Find_First_Next_Volume_returned_wrong_length_name__s_n
sete al
movzx eax, al
mov dword [esp], eax
call fcn.005744b0
mov dword [esp + 8], 0x31
mov dword [esp + 4], ebx
mov dword [esp], esi
call sub.msvcrt.dll_memcmp
test eax, eax
jne 0x574fd0
mov edx, 1
mov dword [ebp - 0x320], edx
call fcn.0057d110
mov dword [eax], 0x601b57
mov dword [eax + 4], 0x24b
mov dword [esp + 8], esi
mov dword [esp + 4], str.volume_name__s_not_found_by_Find_First_Next_Volume_n
mov edx, dword [ebp - 0x320]
mov dword [esp], edx
call fcn.005744b0
mov dword [esp], edi
call dword [0x8f0718]
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret