Function at 0x40af78
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x6c
mov ebx, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
mov word [ebp - 0x4f], 0x3a3f
mov byte [ebp - 0x4d], 0
test ebx, ebx
je 0x40af9e
test esi, esi
je 0x40af9e
cmp byte [ebx], 0x3f
jne 0x40afae
mov dword [esp], 0x57
call dword [sym.imp.KERNEL32.DLL_SetLastError]
push eax
jmp 0x40b014
mov dword [esp + 8], 0xe
mov eax, dword [str._GLOBALROOT]
mov dword [esp], esi
mov dword [esp + 4], eax
call dword [sym.imp.msvcrt.dll__strnicmp]
test eax, eax
jne 0x40b03b
mov al, byte [ebx]
mov byte [ebp - 0x4f], al
lea eax, [esi + 0xe]
mov dword [esp + 8], eax
lea eax, [ebp - 0x4f]
mov dword [esp + 4], eax
mov dword [esp], 9
call dword [sym.imp.KERNEL32.DLL_DefineDosDeviceA]
movsx edx, byte [ebx]
sub esp, 0xc
test eax, eax
mov eax, dword [sym.imp.msvcrt.dll_toupper]
mov dword [esp], edx
jne 0x40b01b
call eax
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov dword [esp], str.Could_not_mount__s_as__c:
call fcn.0043d9e0
xor eax, eax
jmp 0x40b172
call eax
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov dword [esp], str._s_was_successfully_mounted_as__c:
call fcn.0043d9e0
mov eax, 1
jmp 0x40b172
mov eax, dword [sym.imp.KERNEL32.DLL_SetVolumeMountPointA]
mov dword [esp + 4], esi
mov dword [esp], ebx
mov dword [ebp - 0x5c], eax
call eax
push edi
push edi
test eax, eax
jne 0x40b031
mov eax, dword [sym.imp.KERNEL32.DLL_GetLastError]
mov dword [ebp - 0x60], eax
call eax
cmp eax, 0x91
jne 0x40b014
lea edi, [ebp - 0x4c]
mov dword [esp + 8], 0x34
mov dword [esp + 4], edi
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.DLL_GetVolumeNameForVolumeMountPointA]
sub esp, 0xc
test eax, eax
jne 0x40b09d
call fcn.0043df77
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov dword [esp], str._s_is_already_mounted__but_volume_GUID_could_not_be_checked:__s
call fcn.0043d9e0
jmp 0x40b0c5
mov dword [esp + 4], edi
mov dword [esp], esi
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x40b031
mov dword [esp + 0xc], edi
mov dword [esp + 8], esi
mov dword [esp + 4], ebx
mov dword [esp], str._s_is_mounted__but_volume_GUID_doesnt_match:_r_n__expected__s__got__s
call fcn.0043d9e0
mov dword [esp], str.Retrying_after_dismount...
call fcn.0043d9e0
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.DLL_DeleteVolumeMountPointA]
push ecx
test eax, eax
jne 0x40b0f8
call fcn.0043df77
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov dword [esp], str.Warning:_Could_not_delete_volume_mountpoint__s:__s
call fcn.0043d9e0
mov dword [esp + 4], esi
mov dword [esp], ebx
mov eax, dword [ebp - 0x5c]
call eax
push edx
push edx
test eax, eax
jne 0x40b031
mov eax, dword [ebp - 0x60]
call eax
cmp eax, 0x91
jne 0x40b014
mov dword [esp + 8], 0x34
mov dword [esp + 4], edi
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.DLL_GetVolumeNameForVolumeMountPointA]
sub esp, 0xc
test eax, eax
je 0x40b014
mov dword [esp + 4], edi
mov dword [esp], esi
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x40b014
movsx eax, byte [ebx]
mov dword [esp], eax
call dword [sym.imp.msvcrt.dll_toupper]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov dword [esp], str._s_was_remounted_as__c:__second_time_lucky__
jmp 0x40b02c
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret