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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xf54
mov eax, dword [0x412a00]
push ebx
xor ebx, ebx
cmp eax, ebx
push esi
push edi
jne 0x4037ea
mov eax, dword [0x40edec]
mov ecx, dword [0x40edf0]
mov dx, word [0x4129da]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
xor eax, eax
mov word [esp + 0x558], bx
mov ecx, 0x81
lea edi, [esp + 0x55a]
rep stosd dword es:[edi], eax
mov ecx, dword [0x40f410]
stosw word es:[edi], ax
mov eax, dword [0x40f40c]
push 0x413050
mov word [esp + 0x10], dx
mov dword [esp + 0x354], eax
mov dword [esp + 0x358], ecx
lea edx, [esp + 0x764]
xor eax, eax
push str._s_r_n_r_n
mov ecx, 0x80
lea edi, [esp + 0x360]
push edx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x40], ebx
rep stosd dword es:[edi], eax
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], ebx
call fcn.0040660a
lea eax, [esp + 0x76c]
push eax
call fcn.00406154
add esp, 0x10
push 0x104
lea ecx, [esp + 0x354]
push ecx
lea esi, [esp + eax*2 + 0x768]
lea edx, [esp + 0x3c]
push edx
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x24]
push ecx
push 0x104
lea edx, [esp + 0x570]
push edx
lea eax, [esp + 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationW]
test eax, eax
jne 0x4033f5
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Unable_to_query_the_target_volume
call fcn.00401120
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea ecx, [esp + 0x350]
push ecx
push str.The_type_of_the_new_file_system_is__s._r_n_r_n
push esi
call fcn.0040660a
push esi
call fcn.00406154
add esp, 0x10
cmp word [esp + 0x558], bx
lea esi, [esi + eax*2]
je 0x40343d
lea edx, [esp + 0x558]
push edx
push str.Volume_label_is__s._r_n
push esi
call fcn.0040660a
push esi
call fcn.00406154
add esp, 0x10
lea esi, [esi + eax*2]
mov eax, dword [esp + 0x14]
mov ecx, eax
and ecx, 0xffff
push ecx
shr eax, 0x10
push eax
push str.Volume_Serial_Number_is__04X__04X._r_n_r_n
push esi
call fcn.0040660a
push esi
call fcn.00406154
add esp, 0x14
lea edx, [esp + 0x20]
push edx
lea esi, [esi + eax*2]
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x48]
push ecx
lea edx, [esp + 0x18]
push edx
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
test eax, eax
je 0x4035eb
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
push eax
push ecx
lea edx, [esp + 0x50]
push str._I64d
push edx
call fcn.0040660a
lea eax, [esp + 0x58]
push eax
call fcn.00406154
mov ecx, eax
lea edx, [ecx - 1]
mov eax, 0x55555556
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, ecx
lea eax, [esp + eax*2 + 0x5c]
mov word [eax], bx
lea ecx, [esp + ecx*2 + 0x56]
lea edx, [esp + 0x5c]
add esp, 0x14
sub eax, 6
cmp ecx, edx
jbe 0x40350c
jmp 0x4034e0
mov dx, word [ecx + 4]
mov word [eax + 4], dx
mov dx, word [ecx + 2]
mov word [eax + 2], dx
mov dx, word [ecx]
mov word [eax], dx
sub eax, 2
mov word [eax], 0x2c
sub ecx, 6
lea edx, [esp + 0x48]
sub eax, 6
cmp ecx, edx
ja 0x4034e0
lea eax, [esp + 0x48]
push eax
push str._16s_bytes_total_disk_space._r_n
push esi
call fcn.0040660a
push esi
call fcn.00406154
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
push ecx
push edx
lea esi, [esi + eax*2]
lea eax, [esp + 0x60]
push str._I64d
push eax
call fcn.0040660a
lea ecx, [esp + 0x68]
push ecx
call fcn.00406154
mov ecx, eax
lea edx, [ecx - 1]
mov eax, 0x55555556
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, ecx
lea eax, [esp + eax*2 + 0x6c]
mov word [eax], bx
lea ecx, [esp + ecx*2 + 0x66]
lea edx, [esp + 0x6c]
add esp, 0x24
sub eax, 6
cmp ecx, edx
jbe 0x4035ac
jmp 0x403580
mov dx, word [ecx + 4]
mov word [eax + 4], dx
mov dx, word [ecx + 2]
mov word [eax + 2], dx
mov dx, word [ecx]
mov word [eax], dx
sub eax, 2
mov word [eax], 0x2c
sub ecx, 6
lea edx, [esp + 0x48]
sub eax, 6
cmp ecx, edx
ja 0x403580
lea eax, [esp + 0x48]
push eax
push str._16s_bytes_available_on_disk._r_n_r_n
push esi
call fcn.0040660a
push esi
call fcn.00406154
add esp, 0x10
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x3c]
push edx
lea esi, [esi + eax*2]
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x1c]
push edx
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
test eax, eax
jne 0x403606
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Unable_to_query_the_target_volume_size
call fcn.00401120
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x28]
imul eax, dword [esp + 0x3c]
push eax
lea ecx, [esp + 0x4c]
push 0x40f1f8
push ecx
call fcn.0040660a
lea edx, [esp + 0x54]
push edx
call fcn.00406154
mov ecx, eax
lea edx, [ecx - 1]
mov eax, 0x55555556
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, ecx
lea eax, [esp + eax*2 + 0x58]
mov word [eax], bx
lea ecx, [esp + ecx*2 + 0x52]
lea edx, [esp + 0x58]
add esp, 0x10
sub eax, 6
cmp ecx, edx
jbe 0x40368c
jmp 0x403660
mov dx, word [ecx + 4]
mov word [eax + 4], dx
mov dx, word [ecx + 2]
mov word [eax + 2], dx
mov dx, word [ecx]
mov word [eax], dx
sub eax, 2
mov word [eax], 0x2c
sub ecx, 6
lea edx, [esp + 0x48]
sub eax, 6
cmp ecx, edx
ja 0x403660
lea eax, [esp + 0x48]
push eax
push str.______16s_bytes_in_each_allocation_unit._r_n
push esi
call fcn.0040660a
push esi
call fcn.00406154
mov ecx, dword [esp + 0x40]
push ecx
lea edx, [esp + 0x5c]
push 0x40f1f8
push edx
lea esi, [esi + eax*2]
call fcn.0040660a
lea eax, [esp + 0x64]
push eax
call fcn.00406154
mov ecx, eax
lea edx, [ecx - 1]
mov eax, 0x55555556
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, ecx
lea eax, [esp + eax*2 + 0x68]
mov word [eax], bx
lea ecx, [esp + ecx*2 + 0x62]
lea edx, [esp + 0x68]
add esp, 0x20
sub eax, 6
cmp ecx, edx
jbe 0x40371d
mov dx, word [ecx + 4]
mov word [eax + 4], dx
mov dx, word [ecx + 2]
mov word [eax + 2], dx
mov dx, word [ecx]
mov word [eax], dx
sub eax, 2
mov word [eax], 0x2c
sub ecx, 6
lea edx, [esp + 0x48]
sub eax, 6
cmp ecx, edx
ja 0x4036f1
lea eax, [esp + 0x48]
push eax
push str.____16s_total_allocation_units_on_disk._r_n
push esi
call fcn.0040660a
push esi
call fcn.00406154
mov ecx, dword [esp + 0x48]
push ecx
lea edx, [esp + 0x5c]
push 0x40f1f8
push edx
lea esi, [esi + eax*2]
call fcn.0040660a
lea eax, [esp + 0x64]
push eax
call fcn.00406154
mov ecx, eax
lea edx, [ecx - 1]
mov eax, 0x55555556
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, ecx
lea eax, [esp + eax*2 + 0x68]
mov word [eax], bx
lea ecx, [esp + ecx*2 + 0x62]
lea edx, [esp + 0x68]
add esp, 0x20
sub eax, 6
cmp ecx, edx
jbe 0x4037ae
mov dx, word [ecx + 4]
mov word [eax + 4], dx
mov dx, word [ecx + 2]
mov word [eax + 2], dx
mov dx, word [ecx]
mov word [eax], dx
sub eax, 2
mov word [eax], 0x2c
sub ecx, 6
lea edx, [esp + 0x48]
sub eax, 6
cmp ecx, edx
ja 0x403782
lea eax, [esp + 0x48]
push eax
push str.____16s_available_allocation_units_on_disk.
push esi
call fcn.0040660a
push esi
call fcn.00406154
mov edx, dword [0x4129d0]
add esp, 0x10
push 0x80
lea ecx, [esp + 0x254]
push ecx
push 1
push edx
call dword [sym.imp.USER32.dll_LoadStringW]
push 0x40
jmp 0x4039b2
cmp eax, 1
je 0x4039cc
cmp eax, 0x80000010
ja 0x4038c8
je 0x4038ad
add eax, 0x7ffffffd
cmp eax, 9
ja case.0x403812.2147483644
jmp dword [eax*4 + 0x403a58]
mov ecx, dword [0x4129d0]
push 0x400
lea eax, [esp + 0x764]
push eax
push 0x14
push ecx
jmp 0x40398e
push 0x400
lea edx, [esp + 0x764]
push edx
push 0x15
jmp 0x403988
mov edx, dword [0x4129d0]
push 0x400
lea ecx, [esp + 0x764]
push ecx
push 0x16
push edx
jmp 0x40398e
mov ecx, dword [0x4129d0]
push 0x400
lea eax, [esp + 0x764]
push eax
push 0xf
push ecx
jmp 0x40398e
push 0x400
lea edx, [esp + 0x764]
push edx
push 0x18
jmp 0x403988
mov edx, dword [0x4129d0]
push 0x400
lea ecx, [esp + 0x764]
push ecx
push 0x19
push edx
jmp 0x40398e
mov ecx, dword [0x4129d0]
push 0x400
lea eax, [esp + 0x764]
push eax
push 0x1a
push ecx
jmp 0x40398e
cmp eax, 0x80000014
ja 0x40393b
je 0x40392a
cmp eax, 0x80000011
je 0x403912
cmp eax, 0x80000012
je 0x4038fa
cmp eax, 0x80000013
jne case.0x403812.2147483644
push 0x400
lea edx, [esp + 0x764]
push edx
push 0x1d
jmp 0x403988
mov edx, dword [0x4129d0]
push 0x400
lea ecx, [esp + 0x764]
push ecx
push 0x1c
push edx
jmp 0x40398e
mov ecx, dword [0x4129d0]
push 0x400
lea eax, [esp + 0x764]
push eax
push 0x1b
push ecx
jmp 0x40398e
push 0x400
lea edx, [esp + 0x764]
push edx
push 0x1e
jmp 0x403988
cmp eax, 0x80010001
je 0x403979
cmp eax, 0x80010002
je 0x403961
mov edx, dword [0x4129d0]
push 0x400
lea ecx, [esp + 0x764]
push ecx
push 0xb
push edx
jmp 0x40398e
mov ecx, dword [0x4129d0]
push 0x400
lea eax, [esp + 0x764]
push eax
push 0x20
push ecx
jmp 0x40398e
push 0x400
lea edx, [esp + 0x764]
push edx
push 0x1f
mov eax, dword [0x4129d0]
push eax
call dword [sym.imp.USER32.dll_LoadStringW]
mov edx, dword [0x4129d0]
push 0x80
lea ecx, [esp + 0x254]
push ecx
push 9
push edx
call dword [sym.imp.USER32.dll_LoadStringW]
push 0x10
mov edx, dword [ebp + 8]
lea eax, [esp + 0x254]
push eax
lea ecx, [esp + 0x768]
push ecx
push edx
call dword [sym.imp.USER32.dll_MessageBoxW]
mov eax, dword [0x414314]
mov esi, dword [sym.imp.USER32.dll_EnableWindow]
push 1
push eax
call esi
mov edx, dword [0x4129d0]
push 0x104
lea ecx, [esp + 0x4c]
push ecx
push 5
push edx
call dword [sym.imp.USER32.dll_LoadStringW]
mov ecx, dword [0x414314]
mov edi, dword [sym.imp.USER32.dll_SetWindowTextW]
lea eax, [esp + 0x48]
push eax
push ecx
call edi
mov edx, dword [0x41430c]
push 0x40e350
push edx
call edi
mov eax, dword [0x414310]
push ebx
push ebx
push 0x402
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov ecx, dword [0x4142e4]
push 1
push ecx
call esi
mov edx, dword [0x4142e8]
push 1
push edx
call esi
mov eax, dword [0x4142ec]
push 1
push eax
call esi
pop edi
pop esi
mov dword [0x41431c], ebx
pop ebx
mov esp, ebp
pop ebp
ret