Function at 0x18015a97
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x450
mov eax, dword [0x180f51f0]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, ecx
movzx ecx, byte [0x180fb8f9]
neg ecx
push edi
sbb ecx, ecx
mov ebx, 0x180fbba0
and ecx, ebx
push 4
mov dword [ebp - 0x438], esi
mov dword [ebp - 0x43c], eax
pop edi
je 0x18015b0e
push edi
push 1
mov dword [ebp - 0x434], ecx
call fcn.18001d8a
push esi
mov dword [ebp - 0x430], eax
lea eax, [ebp - 0x434]
push str._DevicePathToDosPath__device_path_s_
push eax
mov dword [ebp - 0x42c], edi
mov dword [ebp - 0x428], 1
call fcn.18001000
add esp, 0xc
mov esi, dword [ebp - 0x43c]
call fcn.18004003
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x424], ax
lea eax, [ebp - 0x422]
push eax
call fcn.1809d820
add esp, 0xc
lea eax, [ebp - 0x424]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsW]
test eax, eax
jne 0x18015ba2
movzx ecx, byte [0x180fb8f9]
neg ecx
sbb ecx, ecx
and ecx, ebx
je 0x18015b98
xor esi, esi
push edi
inc esi
push esi
mov dword [ebp - 0x434], ecx
call fcn.18001d8a
mov dword [ebp - 0x430], eax
mov dword [ebp - 0x42c], edi
mov dword [ebp - 0x428], esi
call fcn.1800fc86
push eax
lea eax, [ebp - 0x434]
push str._DevicePathToDosPath_GetLogicalDriveStrings_fail__0x_x_
push eax
call fcn.18001000
add esp, 0xc
call fcn.1800fc86
jmp 0x18015cea
cmp word [ebp - 0x424], 0
mov esi, 0x180c85c0
lea edi, [ebp - 0x10]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
lea esi, [ebp - 0x424]
je 0x18015ce5
mov ax, word [esi]
mov word [ebp - 0x10], ax
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21a]
push eax
call fcn.1809d820
add esp, 0xc
push 0x104
lea eax, [ebp - 0x21c]
push eax
lea eax, [ebp - 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
movzx ecx, byte [0x180fb8f9]
test eax, eax
jne 0x18015c56
neg ecx
sbb ecx, ecx
and ecx, ebx
je 0x18015cd0
push 0xfffffffffffffffe
pop edi
push edi
push 1
mov dword [ebp - 0x434], ecx
call fcn.18001d8a
mov dword [ebp - 0x430], eax
mov dword [ebp - 0x42c], edi
mov dword [ebp - 0x428], 1
call fcn.1800fc86
push eax
lea eax, [ebp - 0x434]
push str._QueryDosDevice_failed__0x_x_
push eax
call fcn.18001000
add esp, 0xc
jmp 0x18015cd0
neg ecx
sbb ecx, ecx
and ecx, ebx
push 4
pop edi
je 0x18015ca4
push edi
push 1
mov dword [ebp - 0x44c], ecx
call fcn.18001d8a
mov dword [ebp - 0x448], eax
lea eax, [ebp - 0x21c]
push eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x44c]
push str._DevicePathToDosPath_found_drive__logical_drive__s__device_name__s_
push eax
mov dword [ebp - 0x444], edi
mov dword [ebp - 0x440], 1
call fcn.18001000
add esp, 0x10
lea eax, [ebp - 0x21c]
push eax
call fcn.1809d315
push eax
mov dword [ebp - 0x450], eax
lea eax, [ebp - 0x21c]
push eax
push dword [ebp - 0x438]
call fcn.180a05ad
add esp, 0x10
test eax, eax
je 0x18015cf9
push esi
call fcn.1809d315
lea esi, [esi + eax*2 + 2]
cmp word [esi], 0
pop ecx
jne 0x18015bc1
mov eax, 0x8007000f
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1809ccb5
leave
ret
mov ecx, dword [ebp - 0x450]
mov eax, dword [ebp - 0x438]
mov esi, dword [ebp - 0x43c]
lea eax, [eax + ecx*2]
push eax
lea eax, [ebp - 0x10]
push eax
push str._s_s
push esi
call fcn.180033bb
movzx ecx, byte [0x180fb8f9]
add esp, 0x10
neg ecx
sbb ecx, ecx
and ecx, ebx
je 0x18015d68
xor ebx, ebx
push edi
inc ebx
push ebx
mov dword [ebp - 0x44c], ecx
call fcn.18001d8a
push dword [esi]
mov dword [ebp - 0x448], eax
lea eax, [ebp - 0x44c]
push str._DevicePathToDosPath__dos_path_s_
push eax
mov dword [ebp - 0x444], edi
mov dword [ebp - 0x440], ebx
call fcn.18001000
add esp, 0xc
xor eax, eax
jmp 0x18015cea