Function at 0x40a0d0
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
mov eax, dword [0x5512ec]
xor eax, ebp
mov dword [ebp - 4], eax
mov ax, word [0x52b9ec]
push esi
mov esi, ecx
mov word [ebp - 0x3c], ax
mov al, byte [0x52b9ee]
mov byte [ebp - 0x3a], al
push edi
mov edi, edx
test esi, esi
je 0x40a2d9
test edi, edi
je 0x40a2d9
cmp byte [esi], 0x3f
je 0x40a2d9
push 0xe
push str._GLOBALROOT
push edi
call fcn.004e18db
add esp, 0xc
test eax, eax
jne 0x40a197
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 0x40a16b
call fcn.004e01e0
add esp, 4
push eax
push edi
push str.Could_not_mount__s_as__c:
call fcn.0044b0b0
add esp, 0xc
xor eax, eax
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a8b60
mov esp, ebp
pop ebp
ret
call fcn.004e01e0
add esp, 4
push eax
push edi
push str._s_was_successfully_mounted_as__c:
call fcn.0044b0b0
add esp, 0xc
mov eax, 1
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a8b60
mov esp, ebp
pop ebp
ret
push edi
push esi
call dword [sym.imp.KERNEL32.dll_SetVolumeMountPointA]
test eax, eax
jne 0x40a182
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x91
jne 0x40a2e1
push 0x34
lea eax, [ebp - 0x38]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetVolumeNameForVolumeMountPointA]
test eax, eax
jne 0x40a1db
call fcn.0044b6b0
push eax
push esi
push str._s_is_already_mounted__but_volume_GUID_could_not_be_checked:__s
call fcn.0044b0b0
add esp, 0xc
jmp 0x40a220
lea ecx, [ebp - 0x38]
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40a200
test dl, dl
je 0x40a1fc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40a200
add eax, 2
add ecx, 2
test dl, dl
jne 0x40a1e0
xor eax, eax
jmp 0x40a205
sbb eax, eax
or eax, 1
test eax, eax
je 0x40a182
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.0044b0b0
add esp, 0x10
push str.Retrying_after_dismount...
call fcn.0044b0b0
add esp, 4
push esi
call dword [sym.imp.KERNEL32.dll_DeleteVolumeMountPointA]
test eax, eax
jne 0x40a24c
call fcn.0044b6b0
push eax
push esi
push str.Warning:_Could_not_delete_volume_mountpoint__s:__s
call fcn.0044b0b0
add esp, 0xc
push edi
push esi
call dword [sym.imp.KERNEL32.dll_SetVolumeMountPointA]
test eax, eax
jne 0x40a182
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x91
jne 0x40a2e1
push 0x34
lea eax, [ebp - 0x38]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetVolumeNameForVolumeMountPointA]
test eax, eax
je 0x40a2e1
lea ecx, [ebp - 0x38]
mov eax, edi
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40a2a0
test dl, dl
je 0x40a29c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40a2a0
add eax, 2
add ecx, 2
test dl, dl
jne 0x40a280
xor eax, eax
jmp 0x40a2a5
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40a2e1
movsx eax, byte [esi]
push eax
call fcn.004e01e0
add esp, 4
push eax
push edi
push str._s_was_remounted_as__c:__second_time_lucky__
call fcn.0044b0b0
add esp, 0xc
mov eax, 1
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a8b60
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.004a8b60
mov esp, ebp
pop ebp
ret