Function at 0x10004e10
Capabilities:
Get disk information

Disassembly:
push 0xffffffffffffffff
push 0x10058463
mov eax, dword fs:[0]
push eax
sub esp, 0x118
mov eax, dword [0x1006e020]
xor eax, esp
mov dword [esp + 0x110], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x1006e020]
xor eax, esp
push eax
lea eax, [esp + 0x12c]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x13c]
xor esi, esi
mov dword [esp + 0x134], esi
mov edi, ecx
mov dword [esp + 0x3c], edi
mov dword [esp + 0x34], esi
call fcn.1000c310
mov dword [esp + 0x24], eax
mov byte [eax + 0x11], 1
mov eax, dword [esp + 0x24]
mov dword [eax + 4], eax
mov eax, dword [esp + 0x24]
mov dword [eax], eax
mov eax, dword [esp + 0x24]
mov dword [eax + 8], eax
mov dword [esp + 0x28], esi
push esi
push esi
mov ebx, 1
mov dword [esp + 0x13c], ebx
mov eax, dword [ebp + 4]
add ebp, 4
push 0x110a
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov ecx, dword [0x1006eb44]
mov dword [esp + 0x18], ecx
mov byte [esp + 0x134], 2
mov dword [edi], ecx
cmp eax, esi
mov dword [esp + 0x34], ebx
mov ebx, eax
je 0x10004f0c
push ebx
push ebp
lea esi, [esp + 0x20]
call fcn.10008530
mov ecx, dword [esp + 0x18]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathGetDriveNumberW]
test eax, eax
jl 0x10004ef4
mov edx, esi
push edx
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.10008210
mov edx, dword [ebp]
push ebx
push 1
push 0x110a
push edx
call dword [sym.imp.USER32.dll_SendMessageW]
mov ebx, eax
test ebx, ebx
jne 0x10004ec8
lea eax, [esp + 0x4c]
push eax
push 0x69
call dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsW]
test eax, eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x30], 0
jle 0x100051ab
lea ebp, [esp + 0x4c]
mov dword [esp + 0x1c], ebp
push ebp
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 3
je 0x10004f51
cmp eax, 4
je 0x10004f51
cmp eax, 2
jne 0x1000518f
jmp 0x10004f56
cmp eax, 2
jne 0x10004f80
mov esi, dword [sym.imp.SHLWAPI.dll_StrCmpNIW]
push 2
push 0x1005dbb8
push ebp
call esi
test eax, eax
je 0x1000518f
push 2
push 0x1005dbc0
push ebp
call esi
test eax, eax
je 0x1000518f
test ebp, ebp
jne 0x10004f88
xor ebx, ebx
jmp 0x10004f91
push ebp
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebx, eax
mov eax, dword [edi]
cmp dword [eax - 0xc], 1
lea ecx, [eax - 0xc]
jg 0x10004fa1
cmp ebx, dword [eax - 4]
jle 0x10004fd9
add eax, 0xfffffff4
cmp eax, 0x1006eb34
je 0x10004fcc
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10004fc4
mov eax, dword [edi]
sub eax, 0xc
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov ecx, dword [0x1006eb44]
mov dword [edi], ecx
mov ecx, ebx
mov edx, edi
call fcn.10011c80
test eax, eax
je 0x10004ff6
mov edx, dword [edi]
lea esi, [ebx + ebx]
push esi
push ebp
push edx
call sub.MSVCR80.dll_memcpy
mov eax, dword [edi]
mov dword [eax - 8], ebx
mov ecx, dword [edi]
add esp, 0xc
mov word [esi + ecx], 0
lea edx, [esp + 0x2c]
push edx
mov ecx, 2
mov ebx, edi
call fcn.10015a20
mov esi, eax
mov byte [esp + 0x134], 3
mov eax, dword [edi]
mov ebp, dword [esi]
cmp eax, ebp
je 0x100050d4
mov ecx, dword [eax - 0xc]
test ecx, ecx
lea edx, [eax - 0xc]
jge 0x10005032
lea ebx, [eax - 0xc]
cmp ebx, 0x1006eb34
jne 0x10005038
cmp dword [ebp - 0xc], 0
jge 0x1000509b
cmp ecx, 1
mov esi, dword [ebp - 8]
jg 0x10005045
cmp esi, dword [eax - 4]
jle 0x1000507c
add eax, 0xfffffff4
cmp eax, 0x1006eb34
je 0x1000506f
push edx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10005068
mov eax, dword [edi]
sub eax, 0xc
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [0x1006eb44]
mov dword [edi], eax
mov ecx, esi
mov edx, edi
call fcn.10011c80
test eax, eax
je 0x100050d4
mov ecx, dword [edi]
lea ebx, [esi + esi]
push ebx
push ebp
push ecx
call sub.MSVCR80.dll_memcpy
mov edx, dword [edi]
mov dword [edx - 8], esi
mov eax, dword [edi]
add esp, 0xc
mov word [ebx + eax], 0
jmp 0x100050d4
add eax, 0xfffffff4
cmp eax, 0x1006eb34
je 0x100050c6
push edx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x100050be
mov eax, dword [edi]
sub eax, 0xc
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov ecx, dword [0x1006eb44]
mov dword [edi], ecx
mov eax, dword [esi]
mov dword [edi], eax
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov byte [esp + 0x134], 2
mov eax, dword [esp + 0x2c]
lea edx, [eax - 0xc]
cmp edx, 0x1006eb34
je 0x10005109
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10005109
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff4
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov ebp, dword [esp + 0x24]
lea eax, [esp + 0x40]
push eax
lea ebx, [esp + 0x24]
call fcn.10008370
mov esi, eax
mov eax, dword [esi]
test eax, eax
je 0x10005129
mov ecx, ebx
cmp eax, ecx
je 0x1000512f
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp dword [esi + 4], ebp
je 0x100051ab
mov eax, dword [edi]
cmp dword [eax - 8], 0
je 0x1000518b
cmp dword [eax - 0xc], 0
lea ecx, [eax - 0xc]
jl 0x10005172
add eax, 0xfffffff4
cmp eax, 0x1006eb34
je 0x1000518b
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10005168
mov eax, dword [edi]
sub eax, 0xc
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov edx, dword [0x1006eb44]
mov dword [edi], edx
jmp 0x1000518b
push 0x1005e048
push 0x1005e048
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebx, eax
mov esi, edi
call fcn.100158a0
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x30]
add eax, 4
add ebp, 8
cmp eax, dword [esp + 0x38]
mov dword [esp + 0x30], eax
mov dword [esp + 0x1c], ebp
jl 0x10004f35
mov eax, dword [edi]
cmp dword [eax - 0xc], 1
lea esi, [eax - 0xc]
jle 0x10005205
add eax, 0xfffffff4
cmp eax, 0x1006eb34
je 0x100051e0
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x100051d9
mov eax, dword [edi]
sub eax, 0xc
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [0x1006eb44]
mov dword [edi], eax
mov ecx, dword [esi + 4]
mov edx, edi
call fcn.10011c80
test eax, eax
je 0x10005205
mov ecx, dword [esi + 4]
mov eax, dword [edi]
lea edx, [ecx + ecx + 2]
push edx
add esi, 0xc
push esi
push eax
call sub.MSVCR80.dll_memcpy
add esp, 0xc
mov ecx, dword [edi]
push ecx
call dword [sym.imp.USER32.dll_CharUpperW]
mov eax, dword [esp + 0x18]
lea edx, [eax - 0xc]
cmp edx, 0x1006eb34
je 0x10005234
lea esi, [eax - 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10005234
push esi
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
lea eax, [esp + 0x20]
mov byte [esp + 0x134], 0
call fcn.10009d10
mov eax, edi
mov ecx, dword [esp + 0x12c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x110]
xor ecx, esp
call fcn.10056d50
add esp, 0x124
ret 4