Function at 0x407de0
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
mov eax, dword [0x4f22ec]
xor eax, ebp
mov dword [ebp - 4], eax
mov ax, word [0x4cf08c]
push esi
mov esi, ecx
mov word [ebp - 0x3c], ax
mov al, byte [0x4cf08e]
mov byte [ebp - 0x3a], al
push edi
mov edi, edx
test esi, esi
je 0x407fe9
test edi, edi
je 0x407fe9
cmp byte [esi], 0x3f
je 0x407fe9
push 0xe
push str._GLOBALROOT
push edi
call fcn.0049f4a7
add esp, 0xc
test eax, eax
jne 0x407ea7
mov al, byte [esi]
mov byte [ebp - 0x3c], al
lea eax, [edi + 0xe]
push eax
lea eax, [ebp - 0x3c]
push eax
push 9
call dword [sym.imp.KERNEL32.dll_DefineDosDeviceA]
movsx ecx, byte [esi]
push ecx
test eax, eax
jne 0x407e7b
call fcn.0049f025
add esp, 4
push eax
push edi
push str.Could_not_mount__s_as__c:
call fcn.004407e0
add esp, 0xc
xor eax, eax
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00491940
mov esp, ebp
pop ebp
ret
call fcn.0049f025
add esp, 4
push eax
push edi
push str._s_was_successfully_mounted_as__c:
call fcn.004407e0
add esp, 0xc
mov eax, 1
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00491940
mov esp, ebp
pop ebp
ret
push edi
push esi
call dword [sym.imp.KERNEL32.dll_SetVolumeMountPointA]
test eax, eax
jne 0x407e92
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x91
jne 0x407ff1
push 0x34
lea eax, [ebp - 0x38]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetVolumeNameForVolumeMountPointA]
test eax, eax
jne 0x407eeb
call fcn.00440bb0
push eax
push esi
push str._s_is_already_mounted__but_volume_GUID_could_not_be_checked:__s
call fcn.004407e0
add esp, 0xc
jmp 0x407f30
lea ecx, [ebp - 0x38]
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407f10
test dl, dl
je 0x407f0c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407f10
add eax, 2
add ecx, 2
test dl, dl
jne 0x407ef0
xor eax, eax
jmp 0x407f15
sbb eax, eax
or eax, 1
test eax, eax
je 0x407e92
lea eax, [ebp - 0x38]
push eax
push edi
push esi
push str._s_is_mounted__but_volume_GUID_doesnt_match:_r_n__expected__s__got__s
call fcn.004407e0
add esp, 0x10
push str.Retrying_after_dismount...
call fcn.004407e0
add esp, 4
push esi
call dword [sym.imp.KERNEL32.dll_DeleteVolumeMountPointA]
test eax, eax
jne 0x407f5c
call fcn.00440bb0
push eax
push esi
push str.Warning:_Could_not_delete_volume_mountpoint__s:__s
call fcn.004407e0
add esp, 0xc
push edi
push esi
call dword [sym.imp.KERNEL32.dll_SetVolumeMountPointA]
test eax, eax
jne 0x407e92
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x91
jne 0x407ff1
push 0x34
lea eax, [ebp - 0x38]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetVolumeNameForVolumeMountPointA]
test eax, eax
je 0x407ff1
lea ecx, [ebp - 0x38]
mov eax, edi
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407fb0
test dl, dl
je 0x407fac
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407fb0
add eax, 2
add ecx, 2
test dl, dl
jne 0x407f90
xor eax, eax
jmp 0x407fb5
sbb eax, eax
or eax, 1
test eax, eax
jne 0x407ff1
movsx eax, byte [esi]
push eax
call fcn.0049f025
add esp, 4
push eax
push edi
push str._s_was_remounted_as__c:__second_time_lucky__
call fcn.004407e0
add esp, 0xc
mov eax, 1
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00491940
mov esp, ebp
pop ebp
ret
push 0x57
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
xor ecx, ebp
pop esi
call fcn.00491940
mov esp, ebp
pop ebp
ret