Function at 0x438c70
Capabilities:
Get disk information
Get disk size

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1358
call fcn.004f7350
mov eax, dword [0x639ac0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x1326
xor eax, eax
mov ebx, ecx
push str.CSMARTInfo::BuildDrivesInfo
mov dword [ebp - 0x1300], eax
lea eax, [ebp - 0x11e0]
push str._s__d_:_Building_drives_info
push eax
mov dword [ebp - 0x12f8], ebx
call fcn.00438870
lea eax, [ebp - 0x11e0]
push eax
call fcn.004397c0
add esp, 0x14
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
xor esi, esi
mov dword [ebp - 0x1314], eax
xor ecx, ecx
mov dword [ebp - 0x1308], esi
xor edx, edx
mov dword [ebp - 0x131c], esi
mov dword [ebp - 0x12fc], ecx
lea edi, [ebx + 0xb24]
mov dword [ebp - 0x1310], edx
test al, 1
je 0x439622
push 0xc8
lea eax, [ebp - 0xe0]
push 0
push eax
call fcn.004ff750
push 0x56c0fc
xorps xmm0, xmm0
mov dword [ebp - 8], 0
lea eax, [ebp - 0xe0]
add esi, 0x41
push 0x64
movups xmmword [ebp - 0x18], xmm0
push eax
mov word [ebp - 0xe0], si
mov word [ebp - 0x18], si
call fcn.00535dbd
push 0x56c104
lea eax, [ebp - 0x18]
push 0xa
push eax
call fcn.00535dbd
add esp, 0x24
mov word [edi], si
lea eax, [ebp - 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
mov esi, eax
mov byte [edi - 0x14], 1
mov dword [edi - 4], esi
call fcn.00455b90
test al, al
je 0x438d98
push esi
lea eax, [ebp - 0xe0]
push eax
lea eax, [ebp - 0x11e0]
push str.Getting_physical_drive_ID_of_drive__s___drive_type__d
push eax
call fcn.00438870
lea eax, [ebp - 0x11e0]
push eax
call fcn.004397c0
add esp, 0x14
add esi, 0xfffffffe
cmp esi, 4
ja case.default.0x438da4
jmp dword [esi*4 + 0x439694]
cmp word [ebp - 0x18], 0x43
lea eax, [ebp - 0xe0]
jae 0x438dc2
push 0x56c17c
jmp 0x4395c3
push 0x56c190
push 0x64
push eax
call fcn.00535dbd
push 0x64
lea ebx, [edi + 8]
mov dword [ebp - 0x1304], 0x64
push ebx
lea eax, [ebp - 0x1304]
push eax
movzx eax, byte [edi]
push eax
call fcn.00442db0
add esp, 0x1c
test eax, eax
jns 0x43906a
call fcn.00455b90
test al, al
je 0x438e27
movzx eax, word [edi]
push eax
lea eax, [ebp - 0x11e0]
push str.Error_getting_physical_drive_ID_of_drive___c:_
push eax
call fcn.00438870
lea eax, [ebp - 0x11e0]
push eax
call fcn.004397c0
add esp, 0x10
mov ecx, dword [ebp - 0x12fc]
mov esi, dword [ebp - 0x1308]
mov edx, dword [ebp - 0x1310]
add dword [ebp - 0x131c], 0x96
inc esi
add edx, 0x12c
mov dword [ebp - 0x1308], esi
add ecx, 0x4b
mov dword [ebp - 0x1310], edx
add edi, 0x258
mov dword [ebp - 0x12fc], ecx
lea eax, [esi + 0x41]
cmp eax, 0x5a
mov eax, dword [ebp - 0x1314]
jle 0x438cf4
lea eax, [ebp - 0x11e0]
push str.Looking_for_unformatted_devices...
push eax
call fcn.00438870
lea eax, [ebp - 0x11e0]
push eax
call fcn.004397c0
add esp, 0xc
mov dword [ebp - 0x12f4], 0x114
lea eax, [ebp - 0x12f4]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [ebp - 0x12f0], 4
jbe 0x43967b
cmp dword [ebp - 0x12e4], 1
je 0x43967b
mov ebx, dword [ebp - 0x12f8]
xor eax, eax
mov dword [ebp - 0x1314], eax
xor edi, edi
mov dword [ebp - 0x1318], 0x1a
lea eax, [ebx + 0x49e0]
mov dword [ebp - 0x131c], eax
nop
push 0
push edi
mov ecx, ebx
call fcn.00446bd0
test eax, eax
jne 0x43962f
push edi
lea eax, [ebp - 0x11e0]
push str.Opening_phyID___d_successful_
push eax
call fcn.00438870
lea eax, [ebp - 0x11e0]
push eax
call fcn.004397c0
xor eax, eax
lea ecx, [ebx + 0xb28]
add esp, 0x10
mov dword [ebp - 0x130c], eax
xor edx, edx
mov dword [ebp - 0x1324], ecx
mov dword [ebp - 0x1320], edx
nop
cmp eax, 1
je 0x43962f
xor esi, esi
cmp dword [ecx], esi
jle 0x438fa3
nop
cmp eax, 1
je 0x438fa3
lea eax, [edx + esi]
cmp dword [ebx + eax*4 + 0xb2c], edi
jne 0x438f98
push edi
lea eax, [ebp - 0x11e0]
mov dword [ebp - 0x130c], 1
push str.PhyID___d_already_found_
push eax
call fcn.00438870
lea eax, [ebp - 0x11e0]
push eax
call fcn.004397c0
mov ecx, dword [ebp - 0x1324]
add esp, 0x10
mov edx, dword [ebp - 0x1320]
mov eax, dword [ebp - 0x130c]
inc esi
cmp esi, dword [ecx]
jl 0x438f50
add edx, 0x96
add ecx, 0x258
mov dword [ebp - 0x1324], ecx
mov dword [ebp - 0x1320], edx
cmp edx, 0xf3c
jl 0x438f40
cmp eax, 1
je 0x43962f
mov esi, dword [ebp - 0x131c]
xor ecx, ecx
mov eax, dword [ebx + 0x14]
inc dword [ebp - 0x1314]
push edi
mov dword [esi - 0x30], eax
inc dword [ebx + 0x14]
mov eax, dword [ebp - 0x1318]
mov dword [esi - 0x1dc], eax
mov dword [esi], 0
mov dword [esi + 4], eax
inc eax
mov word [esi - 0x1cc], cx
mov byte [esi - 0x1e0], 1
mov dword [esi - 0x1d0], 3
mov dword [esi - 0x1c4], edi
mov dword [ebp - 0x1318], eax
lea eax, [ebp - 0x11e0]
mov dword [esi - 0x1c8], 1
add esi, 0x258
push str.Unformated_fixed_drive_found__phyID___d
push eax
mov dword [ebp - 0x131c], esi
call fcn.00438870
lea eax, [ebp - 0x11e0]
push eax
call fcn.004397c0
mov esi, dword [ebp - 0x1300]
add esp, 0x10
inc esi
mov dword [ebp - 0x1300], esi
jmp 0x439635
mov esi, dword [ebp - 0x12f8]
mov dword [edi - 4], 3
mov dword [ebp - 0x130c], 0
mov eax, dword [esi + 0x14]
mov dword [edi + 0x19c], eax
inc dword [esi + 0x14]
mov eax, dword [ebp - 0x1308]
mov dword [edi - 0x10], eax
mov dword [edi + 0x1cc], 1
mov dword [edi + 0x1d0], eax
mov ecx, dword [edi + 0x1cc]
add ecx, dword [ebp - 0x1310]
mov ax, word [edi]
mov word [esi + ecx*2 + 0xd12], ax
mov eax, dword [ebp - 0x1304]
mov dword [edi + 4], eax
test eax, eax
jle 0x439105
mov esi, dword [ebp - 0x130c]
push dword [ebx]
movzx eax, word [edi]
push eax
lea eax, [ebp - 0x11e0]
push str.Fixed_drive_found___c:__phyID___d
push eax
call fcn.00438870
lea eax, [ebp - 0x11e0]
push eax
call fcn.004397c0
inc esi
lea ebx, [ebx + 4]
add esp, 0x14
cmp esi, dword [edi + 4]
jl 0x4390d0
mov esi, dword [ebp - 0x12f8]
movzx eax, word [edi]
push eax
lea eax, [ebp - 0x160]
push str._c:_
push eax
call fcn.00438810
add esp, 0xc
lea eax, [ebp - 0x1340]
push eax
lea eax, [ebp - 0x1330]
push eax
lea eax, [ebp - 0x1348]
push eax
lea eax, [ebp - 0x160]
push eax
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
test eax, eax
jne 0x43919f
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebx
push eax
call fcn.0043ddd0
add esp, 4
push eax
call ebx
push eax
lea eax, [ebp - 0x11e0]
push str.GetDiskFreeSpaceEx_failed_with:__d___s
push eax
call fcn.00438870
lea eax, [ebp - 0x11e0]
push eax
call fcn.004397c0
mov eax, dword [edi + 0x1cc]
add esp, 0x14
add eax, dword [ebp - 0x12fc]
mov dword [esi + eax*8 + 0xd20], 0xffffffff
mov dword [esi + eax*8 + 0xd24], 0xffffffff
jmp 0x4395ce
mov edx, dword [edi + 0x1cc]
add edx, dword [ebp - 0x12fc]
mov eax, dword [ebp - 0x1330]
mov ecx, dword [ebp - 0x132c]
push 0
mov dword [esi + edx*8 + 0xd20], eax
mov dword [esi + edx*8 + 0xd24], ecx
mov eax, dword [edi + 0x1cc]
add eax, dword [ebp - 0x12fc]
push 0x100000
push dword [esi + eax*8 + 0xd24]
push dword [esi + eax*8 + 0xd20]
call fcn.004f7260
push eax
movzx eax, word [edi]
push eax
lea eax, [ebp - 0x11e0]
push str.GetDiskFreeSpaceEx_succeeded.__Volume___c:__capacity:__d_MB
push eax
call fcn.00438870
lea eax, [ebp - 0x11e0]
push eax
call fcn.004397c0
add esp, 0x14
jmp 0x4395ce
push 0x64
lea ebx, [edi + 8]
mov dword [ebp - 0x1304], 0x64
push ebx
lea eax, [ebp - 0x1304]
push eax
movzx eax, byte [edi]
push eax
call fcn.00442db0
add esp, 0x10
test eax, eax
js 0x438e03
mov esi, dword [ebp - 0x12f8]
mov dword [ebp - 0x130c], 0
mov eax, dword [esi + 0x14]
mov dword [edi + 0x19c], eax
inc dword [esi + 0x14]
mov eax, dword [ebp - 0x1308]
mov dword [edi - 0x10], eax
mov dword [edi + 0x1cc], 1
mov dword [edi + 0x1d0], eax
mov ecx, dword [edi + 0x1cc]
add ecx, dword [ebp - 0x1310]
mov ax, word [edi]
mov word [esi + ecx*2 + 0xd12], ax
mov eax, dword [ebp - 0x1304]
mov dword [edi + 4], eax
test eax, eax
jle 0x4392d5
mov esi, dword [ebp - 0x130c]
nop
push dword [ebx]
movzx eax, word [edi]
push eax
lea eax, [ebp - 0x11e0]
push str.Fixed_drive_found___c:__phyID___d
push eax
call fcn.00438870
lea eax, [ebp - 0x11e0]
push eax
call fcn.004397c0
inc esi
lea ebx, [ebx + 4]
add esp, 0x14
cmp esi, dword [edi + 4]
jl 0x4392a0
mov esi, dword [ebp - 0x12f8]
movzx eax, word [edi]
push eax
lea eax, [ebp - 0x1e0]
push str._c:_
push eax
call fcn.00438810
add esp, 0xc
lea eax, [ebp - 0x1350]
push eax
lea eax, [ebp - 0x1338]
push eax
lea eax, [ebp - 0x1358]
push eax
lea eax, [ebp - 0x1e0]
push eax
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
test eax, eax
jne 0x43936c
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebx
push eax
call fcn.0043ddd0
add esp, 4
push eax
call ebx
push eax
lea eax, [ebp - 0x11e0]
push str.GetDiskFreeSpaceEx_failed_with:__d___s
push eax
call fcn.00438870
lea eax, [ebp - 0x11e0]
push eax
call fcn.004397c0
mov eax, dword [edi + 0x1cc]
add esp, 0x14
add eax, dword [ebp - 0x12fc]
mov dword [esi + eax*8 + 0xd20], 0xffffffff
mov dword [esi + eax*8 + 0xd24], 0xffffffff
jmp 0x4393dd
mov edx, dword [edi + 0x1cc]
add edx, dword [ebp - 0x12fc]
mov eax, dword [ebp - 0x1338]
mov ecx, dword [ebp - 0x1334]
push 0
mov dword [esi + edx*8 + 0xd20], eax
mov dword [esi + edx*8 + 0xd24], ecx
mov eax, dword [edi + 0x1cc]
add eax, dword [ebp - 0x12fc]
push 0x100000
push dword [esi + eax*8 + 0xd24]
push dword [esi + eax*8 + 0xd20]
call fcn.004f7260
push eax
movzx eax, word [edi]
push eax
lea eax, [ebp - 0x11e0]
push str.GetDiskFreeSpaceEx_succeeded.__Volume___c:__capacity:__d_MB
push eax
call fcn.00438870
lea eax, [ebp - 0x11e0]
push eax
call fcn.004397c0
add esp, 0x14
mov ecx, dword [ebp - 0x1308]
test ecx, ecx
jle 0x43959c
xor edx, edx
mov dword [ebp - 0x130c], ecx
xor ebx, ebx
mov dword [ebp - 0x1304], edx
mov dword [ebp - 0x1318], ebx
lea eax, [esi + 0xcf0]
mov dword [ebp - 0x1328], edx
nop dword [eax]
xor ecx, ecx
mov dword [ebp - 0x1324], ecx
cmp dword [edi + 4], ecx
jle 0x43956b
xor ebx, ebx
mov dword [ebp - 0x1320], ebx
cmp dword [eax - 0x1c8], ebx
jle 0x43954f
nop word [eax + eax]
mov ecx, dword [eax - 0x1c4]
cmp ecx, dword [edi + 8]
jne 0x439536
mov edx, dword [ebp - 0x1328]
mov ebx, dword [ebp - 0x12f8]
mov byte [edi + 0x198], 1
inc dword [eax]
add edx, dword [eax]
movzx ecx, word [edi]
mov word [esi + edx*2 + 0xd12], cx
mov ecx, dword [eax]
add ecx, dword [ebp - 0x1318]
mov edx, dword [ebp - 0x1308]
mov dword [esi + ecx*4 + 0xcf0], edx
mov edx, dword [edi + 0x1cc]
add edx, dword [ebp - 0x12fc]
mov esi, dword [eax]
add esi, dword [ebp - 0x1304]
mov ecx, dword [ebp - 0x12f8]
mov ecx, dword [ecx + edx*8 + 0xd20]
mov edx, dword [ebx + edx*8 + 0xd24]
mov dword [ebx + esi*8 + 0xd20], ecx
mov ecx, ebx
mov dword [ecx + esi*8 + 0xd24], edx
mov esi, ebx
inc dword [edi + 0x1cc]
mov edx, dword [ebp - 0x1310]
add edx, dword [edi + 0x1cc]
movzx ecx, word [eax - 0x1cc]
mov word [esi + edx*2 + 0xd12], cx
mov edx, dword [edi + 0x1cc]
add edx, dword [ebp - 0x131c]
mov ecx, dword [edi + 0x1d0]
mov dword [esi + edx*4 + 0xcf0], ecx
mov ecx, ebx
mov edx, dword [eax]
add edx, dword [ebp - 0x1304]
mov esi, dword [edi + 0x1cc]
add esi, dword [ebp - 0x12fc]
mov ecx, dword [ecx + edx*8 + 0xd20]
mov edx, dword [ebx + edx*8 + 0xd24]
mov dword [ebx + esi*8 + 0xd20], ecx
mov ecx, ebx
mov ebx, dword [ebp - 0x1320]
mov dword [ecx + esi*8 + 0xd24], edx
mov esi, ecx
inc ebx
mov dword [ebp - 0x1320], ebx
cmp ebx, dword [eax - 0x1c8]
jl 0x439440
mov ecx, dword [ebp - 0x1324]
inc ecx
mov dword [ebp - 0x1324], ecx
cmp ecx, dword [edi + 4]
jl 0x439421
mov edx, dword [ebp - 0x1304]
mov ebx, dword [ebp - 0x1318]
add dword [ebp - 0x1328], 0x12c
add ebx, 0x96
add edx, 0x4b
mov dword [ebp - 0x1318], ebx
add eax, 0x258
mov dword [ebp - 0x1304], edx
sub dword [ebp - 0x130c], 1
jne 0x439410
push 0x56c320
jmp 0x4395bd
push 0x56c340
jmp 0x4395bd
push 0x56c35c
jmp 0x4395bd
push 0x56c370
jmp 0x4395bd
push 0x56c388
lea eax, [ebp - 0xe0]
push 0x64
push eax
call fcn.00535dbd
add esp, 0xc
movzx eax, byte [ebp + 8]
sub eax, 0
je 0x4395dc
sub eax, 1
jne 0x4395e2
inc dword [ebp - 0x1300]
mov esi, dword [ebp - 0x1308]
lea eax, [ebp - 0xe0]
push eax
push esi
lea eax, [ebp - 0x11e0]
push str.Drive__d_detected____s_
push eax
call fcn.00438870
lea eax, [ebp - 0x11e0]
push eax
call fcn.004397c0
mov ecx, dword [ebp - 0x12fc]
add esp, 0x14
mov edx, dword [ebp - 0x1310]
mov eax, dword [ebp - 0x1314]
shr eax, 1
mov dword [ebp - 0x1314], eax
jmp 0x438e39
mov esi, dword [ebp - 0x1300]
inc edi
cmp edi, 0x64
jl 0x438ef0
mov eax, dword [ebp - 0x1314]
push eax
lea eax, [ebp - 0x11e0]
push str.Number_of_unformatted_fixed_drives_found:__d_
push eax
call fcn.00438870
lea eax, [ebp - 0x11e0]
push eax
call fcn.004397c0
add esp, 0x10
mov eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004f66cd
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x1300]
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.004f66cd
mov esp, ebp
pop ebp
ret 4