Function at 0x1047f44
Capabilities:
Get disk information

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
push edi
xor edi, edi
push 0x1015c04
push 0x5e
lea ecx, [ebp - 0x18]
mov dword [ebp - 8], edi
mov dword [ebp - 4], edi
mov dword [ebp - 0x10], edi
call sub.vdsutil.dll_public:_void___thiscall_CVdsCallTracer::constructor_unsigned_long_int__char_const__
mov ebx, dword [sym.imp.KERNEL32.dll_GetVolumePathNamesForVolumeNameW]
lea eax, [ebp - 8]
push eax
push edi
push edi
push dword [ebp + 8]
call ebx
mov esi, dword [sym.imp.API_MS_Win_Core_ErrorHandling_L1_1_0.dll_GetLastError]
call esi
mov eax, dword [ebp - 8]
add eax, eax
push eax
push 8
call dword [sym.imp.API_MS_Win_Core_Heap_L1_1_0.dll_GetProcessHeap]
push eax
call sub.vdsutil.dll_void____stdcall_VdsHeapAlloc_void___unsigned_long_int__unsigned_long_int_
push eax
lea ecx, [ebp - 4]
call sym.vds.exe_public:_char____thiscall_CVdsHeapPtr_char_::operator_char__
cmp dword [ebp - 4], edi
jne 0x1047fc0
push 8
pop edi
lea ecx, [ebp - 0x18]
call sub.vdsutil.dll_public:_void___thiscall_CVdsCallTracer::destructor_void_
lea ecx, [ebp - 4]
call sym.vds.exe_public:_void___thiscall_CVdsHeapPtr_char_::destructor_void_
mov eax, edi
pop edi
pop esi
pop ebx
leave
ret 0xc
lea eax, [ebp - 0x10]
push eax
push dword [ebp - 8]
push dword [ebp - 4]
push dword [ebp + 8]
call ebx
test eax, eax
jne 0x1047fec
call esi
mov esi, eax
push esi
push 0x1015bb0
push edi
push 0x5e
call sub.vdsutil.dll_void___cdecl_VdsTraceEx_unsigned_long_int__unsigned_long_int__char__
add esp, 0x10
mov edi, esi
jmp 0x1047fa7
mov ecx, dword [ebp - 4]
xor ebx, ebx
cmp word [ecx], di
je 0x1047fa7
mov eax, ecx
lea esi, [eax + 2]
mov dx, word [eax]
inc eax
inc eax
cmp dx, di
jne 0x1047ffb
sub eax, esi
sar eax, 1
lea ecx, [ecx + eax*2 + 2]
inc ebx
cmp word [ecx], di
jne 0x1047ff6
mov dword [ebp - 0xc], ebx
cmp ebx, edi
je 0x1047fa7
mov eax, ebx
shl eax, 2
push eax
call dword [sym.imp.ole32.dll_CoTaskMemAlloc]
mov esi, dword [ebp + 0xc]
mov dword [esi], eax
cmp eax, edi
je 0x1047fa4
mov ecx, ebx
shl ecx, 2
push ecx
push edi
push eax
call sub.msvcrt.dll_memset
mov eax, dword [ebp - 4]
add esp, 0xc
mov dword [ebp + 0xc], eax
mov dword [ebp + 8], edi
cmp ebx, edi
jbe 0x10480ba
mov eax, dword [ebp + 0xc]
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
cmp cx, di
jne 0x1048056
sub eax, edx
sar eax, 1
mov ebx, eax
lea edi, [ebx + ebx]
lea eax, [edi + 2]
push eax
call dword [sym.imp.ole32.dll_CoTaskMemAlloc]
mov ecx, dword [esi]
mov edx, dword [ebp + 8]
mov dword [ecx + edx*4], eax
mov eax, dword [esi]
mov ecx, edx
lea eax, [eax + ecx*4]
cmp dword [eax], 0
je 0x10480c4
push ebx
push dword [ebp + 0xc]
inc ebx
push ebx
push dword [eax]
call fcn.01037fec
mov eax, dword [ebp + 8]
mov ecx, dword [esi]
mov ecx, dword [ecx + eax*4]
xor edx, edx
mov word [edi + ecx], dx
mov ecx, dword [ebp + 0xc]
lea ecx, [ecx + edi + 2]
inc eax
xor edi, edi
mov dword [ebp + 0xc], ecx
mov dword [ebp + 8], eax
cmp eax, dword [ebp - 0xc]
jb 0x1048050
mov ebx, dword [ebp - 0xc]
mov eax, dword [ebp + 0x10]
mov dword [eax], ebx
jmp 0x1047fa7
mov edi, dword [sym.imp.ole32.dll_CoTaskMemFree]
xor ebx, ebx
test ecx, ecx
jbe 0x10480ea
mov eax, dword [esi]
lea eax, [eax + ebx*4]
cmp dword [eax], 0
je 0x10480e4
push dword [eax]
call edi
mov eax, dword [esi]
and dword [eax + ebx*4], 0
inc ebx
cmp ebx, dword [ebp + 8]
jb 0x10480d0
mov eax, dword [esi]
test eax, eax
je 0x1047fa4
push eax
call edi
and dword [esi], 0
jmp 0x1047fa4