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

Disassembly:
sub esp, 0x478
mov dl, byte [0x4f55a8]
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov ecx, 0x18
xor eax, eax
lea edi, [esp + 0x95]
mov byte [esp + 0x94], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x17d]
mov byte [esp + 0x17c], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x18
xor eax, eax
lea edi, [esp + 0xf9]
mov byte [esp + 0xf8], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 7
xor eax, eax
lea edi, [esp + 0x2d]
mov byte [esp + 0x2c], dl
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
mov ecx, 7
xor eax, eax
lea edi, [esp + 0x75]
mov byte [esp + 0x74], dl
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x281]
mov byte [esp + 0x280], dl
rep stosd dword es:[edi], eax
mov ecx, dword [esi + 0x184]
mov edx, dword [esi + 0x180]
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x2c]
push eax
push ecx
push edx
call fcn.00471310
mov eax, dword [esi + 0x174]
add esp, 0xc
cmp eax, 1
jne 0x415e67
mov ecx, dword [esi + 0x144]
lea eax, [esp + 0x2c]
push eax
push 0x81
lea edx, [esp + 0x9c]
push ecx
push edx
call fcn.00472a10
add esp, 0x10
jmp 0x415e89
mov edx, dword [esi + 0x144]
lea ecx, [esp + 0x2c]
push ecx
push eax
push 0x82
lea eax, [esp + 0xa0]
push edx
push eax
call fcn.00472a10
add esp, 0x14
lea edi, [esi + 0x1b88]
mov dword [esp + 0x10], 0
mov ecx, edi
call fcn.00431cf0
mov ebx, dword [sym.imp.USER32.dll_SendMessageA]
test eax, eax
jne 0x415ee2
lea ecx, [esi + 0x2548]
call fcn.0042b570
test eax, eax
jne 0x415ee2
lea ebp, [esi + 0x2690]
mov ecx, ebp
call fcn.00429c90
test eax, eax
jne 0x415f3c
lea ecx, [esi + 0x27d4]
call fcn.0044f210
test eax, eax
jne 0x415ee2
lea ecx, [esi + 0x1a54]
call fcn.0042b570
mov ecx, edi
call fcn.0042d8d0
mov ecx, dword [esi + 0x18c]
mov edx, dword [esi + 0x188]
mov edi, eax
lea eax, [esp + 0x2c]
push eax
push ecx
push edx
mov dword [esp + 0x1c], edi
call fcn.00471310
mov eax, dword [esi + 0x178]
add esp, 0xc
cmp eax, 1
jle 0x415f84
mov edx, dword [esi + 0x144]
lea ecx, [esp + 0x2c]
push ecx
push eax
push 0x83
lea eax, [esp + 0x188]
push edx
push eax
call fcn.00472a10
add esp, 0x14
jmp 0x416113
mov ecx, dword [esi + 0xd8]
push 8
push 0xffffffffffffffff
push 0x100c
push ecx
call ebx
cmp eax, 0xffffffff
jne 0x415f64
mov edx, dword [esi + 0xd8]
push 1
push eax
push 0x100c
push edx
call ebx
push eax
mov ecx, ebp
call fcn.00429640
test eax, eax
je 0x416209
mov edx, dword [eax + 8]
lea ecx, [esp + 0x17c]
push ecx
jmp 0x416202
test edi, edi
je 0x416209
mov edi, dword [esp + 0x10]
mov eax, dword [edi + 0x2c]
test al, 8
je 0x416078
mov eax, dword [edi + 0x34]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 3
je 0x415fb8
cmp eax, 4
je 0x415fb8
cmp eax, 5
jne 0x416113
mov edi, dword [edi + 0x34]
lea ecx, [esp + 0x20]
lea edx, [esp + 0x1c]
push ecx
lea eax, [esp + 0x2c]
push edx
lea ecx, [esp + 0x2c]
push eax
push ecx
push edi
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceA]
test eax, eax
je 0x416113
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
imul edi, dword [esp + 0x28]
xor ebp, ebp
push ebp
push edi
push ebp
push edx
call fcn.004a8be0
mov dword [esi + 0x188], eax
lea eax, [esp + 0x2c]
mov dword [esi + 0x18c], edx
mov ecx, edx
mov edx, dword [esi + 0x188]
push eax
push ecx
push edx
call fcn.00471310
mov eax, dword [esp + 0x2c]
add esp, 0xc
push ebp
push edi
push ebp
push eax
call fcn.004a8be0
mov dword [esi + 0x188], eax
lea ecx, [esp + 0x15c]
mov dword [esi + 0x18c], edx
mov eax, dword [esi + 0x188]
push ecx
push edx
push eax
call fcn.00471310
mov eax, dword [esi + 0x144]
add esp, 0xc
lea ecx, [esp + 0x15c]
lea edx, [esp + 0x2c]
push ecx
push edx
push 0x9c
lea ecx, [esp + 0x188]
push eax
push ecx
call fcn.00472a10
add esp, 0x14
jmp 0x416113
test al, 4
jne 0x416113
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x24]
mov ecx, dword [eax + 0xc]
lea edx, [eax + 0xc]
test ecx, ecx
jne 0x416098
mov ecx, dword [eax + 0x10]
test ecx, ecx
je 0x416113
mov al, byte [0x4f55a8]
mov ecx, 0x3f
mov byte [esp + 0x384], al
xor eax, eax
lea edi, [esp + 0x385]
push 1
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea ecx, [esp + 0x388]
push 0x100
push ecx
push edx
stosb byte es:[edi], al
call fcn.00471290
mov edx, dword [esp + 0x20]
add esp, 0x10
test byte [edx + 0x2c], 1
je 0x4160fd
mov edi, dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x17c]
push eax
push ecx
call edi
lea edx, [esp + 0x17c]
push 0x4edd68
push edx
call edi
lea eax, [esp + 0x384]
lea ecx, [esp + 0x17c]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov eax, dword [esp + 0x10]
test eax, eax
je 0x416209
mov edi, eax
push 1
mov ecx, edi
call fcn.004263f0
test eax, eax
je 0x416166
mov eax, dword [edi + 0x24]
xor edx, edx
push 0
xor ecx, ecx
mov dx, word [eax + 0x1e]
mov cl, byte [eax + 0x1c]
push 0
push edx
xor edx, edx
push ecx
mov dx, word [eax + 0x1a]
xor ecx, ecx
mov cx, word [eax + 0x18]
push edx
mov edx, dword [eax + 0x14]
push ecx
push edx
lea eax, [esp + 0x114]
push 0
push eax
call fcn.0049eeb0
add esp, 0x24
mov eax, dword [edi + 0x34]
test eax, eax
je 0x416209
mov ecx, dword [esp + 0x10]
test byte [ecx + 0x2c], 4
jne 0x416209
lea edx, [esp + 0x280]
push 0x100
push edx
push eax
call sub.comdlg32.dll_GetFileTitleA
mov ecx, dword [esp + 0x10]
call fcn.00425ec0
test eax, eax
je 0x416209
lea eax, [esp + 0x280]
push 0x4edd60
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov cl, byte [0x4f55a8]
xor eax, eax
mov byte [esp + 0x384], cl
mov ecx, 0x40
lea edi, [esp + 0x385]
lea edx, [esp + 0x384]
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x10]
push 1
stosw word es:[edi], ax
push edx
stosb byte es:[edi], al
call fcn.004257f0
lea eax, [esp + 0x280]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ecx, [esp + eax + 0x280]
lea edx, [esp + 0x384]
push ecx
push edx
call dword [sym.imp.USER32.dll_OemToCharA]
lea eax, [esi + 0x17c8]
xor edi, edi
test eax, eax
je 0x416218
mov eax, dword [eax + 0x1c]
push eax
call dword [sym.imp.USER32.dll_GetDC]
mov ebp, eax
mov eax, dword [esi + 0x17e4]
push 0
push 0
push 0x31
push eax
call ebx
push eax
push ebp
call dword [sym.imp.GDI32.dll_SelectObject]
mov al, byte [esp + 0x94]
test al, al
je 0x416276
lea ecx, [esp + 0x14]
lea edx, [esp + 0x94]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
lea eax, [esp + 0x9c]
push eax
push ebp
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
mov ecx, dword [esp + 0x14]
mov edi, 1
add ecx, 0xa
mov dword [esp + 0x4c], ecx
mov al, byte [esp + 0x17c]
test al, al
je 0x4162bd
lea edx, [esp + 0x14]
lea eax, [esp + 0x17c]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ecx, [esp + 0x180]
push eax
push ecx
push ebp
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
test edi, edi
je 0x4162ae
mov eax, dword [esp + edi*4 + 0x48]
jmp 0x4162b0
xor eax, eax
mov edx, dword [esp + 0x14]
inc edi
lea eax, [eax + edx + 0xa]
mov dword [esp + edi*4 + 0x48], eax
mov al, byte [esp + 0x280]
test al, al
je 0x41632e
lea ecx, [esp + 0x14]
lea edx, [esp + 0x280]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
lea eax, [esp + 0x288]
push eax
push ebp
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
mov ecx, dword [esi + 0x17e4]
push 0
push 0
push 0x40f
push ecx
call ebx
test eax, eax
je 0x416315
push 0x31
call dword [sym.imp.USER32.dll_GetSystemMetrics]
mov edx, dword [esp + 0x14]
lea eax, [edx + eax + 5]
mov dword [esp + 0x14], eax
test edi, edi
je 0x41631f
mov eax, dword [esp + edi*4 + 0x48]
jmp 0x416321
xor eax, eax
mov ecx, dword [esp + 0x14]
inc edi
lea edx, [eax + ecx + 0xa]
mov dword [esp + edi*4 + 0x48], edx
mov al, byte [esp + 0xf8]
test al, al
je 0x416375
lea eax, [esp + 0x14]
lea ecx, [esp + 0xf8]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea edx, [esp + 0xfc]
push eax
push edx
push ebp
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
test edi, edi
je 0x416366
mov eax, dword [esp + edi*4 + 0x48]
jmp 0x416368
xor eax, eax
mov ecx, dword [esp + 0x14]
inc edi
lea edx, [eax + ecx + 0xa]
mov dword [esp + edi*4 + 0x48], edx
mov dword [esp + edi*4 + 0x4c], 0xffffffff
lea eax, [esi + 0x17c8]
inc edi
test eax, eax
je 0x41638b
mov eax, dword [eax + 0x1c]
push ebp
push eax
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [esi + 0x17e4]
push 0
push 0
push 0x409
push eax
call ebx
mov edx, dword [esi + 0x17e4]
lea ecx, [esp + 0x4c]
push ecx
push edi
push 0x404
push edx
call ebx
mov eax, dword [esi + 0xf8]
xor edi, edi
mov dword [esp + 0x1c], eax
mov al, byte [esp + 0x94]
test al, al
mov dword [esi + 0xf8], 0
je 0x416407
mov ecx, dword [esi + 0x17e4]
push edi
push edi
push 0x40f
push ecx
call ebx
mov eax, dword [esi + 0x17e4]
lea edx, [esp + 0x94]
push edx
push 0
push 0x401
push eax
mov edi, 1
call ebx
mov al, byte [esp + 0x17c]
test al, al
je 0x41643d
mov ecx, dword [esi + 0x17e4]
push 0
push edi
push 0x40f
push ecx
call ebx
lea edx, [esp + 0x17c]
mov eax, edi
push edx
push eax
mov eax, dword [esi + 0x17e4]
push 0x401
push eax
inc edi
call ebx
mov al, byte [esp + 0x280]
mov ebp, dword [esp + 0x10]
test al, al
je 0x4164b9
test ebp, ebp
je 0x41649f
mov eax, dword [ebp + 0x34]
test eax, eax
je 0x41649f
mov ecx, ebp
mov dword [esp + 0x20], 0
call fcn.00425ec0
test eax, eax
mov eax, 0x200
jne 0x416473
mov eax, dword [esp + 0x20]
push eax
mov ecx, ebp
call fcn.004256f0
mov ecx, dword [esi + 0x134]
push eax
push ecx
call dword [sym.imp.COMCTL32.dll_ImageList_GetIcon]
mov dword [esi + 0xf8], eax
mov edx, dword [esi + 0x17e4]
push eax
push edi
push 0x40f
push edx
call ebx
mov edx, dword [esi + 0x17e4]
lea ecx, [esp + 0x280]
mov eax, edi
push ecx
push eax
push 0x401
push edx
inc edi
call ebx
mov al, byte [esp + 0xf8]
test al, al
je 0x4164ef
mov eax, dword [esi + 0x17e4]
push 0
push edi
push 0x40f
push eax
call ebx
mov edx, dword [esi + 0x17e4]
lea ecx, [esp + 0xf8]
mov eax, edi
push ecx
push eax
push 0x401
push edx
inc edi
call ebx
test ebp, ebp
je 0x41652f
mov ecx, ebp
call fcn.00425340
test eax, eax
je 0x41652f
mov ecx, ebp
call fcn.00425340
push eax
mov eax, dword [esi + 0x17e4]
push edi
push 0x410
push eax
call ebx
mov ecx, ebp
call fcn.00425340
mov ecx, edi
push eax
push ecx
mov ecx, dword [esi + 0x17e4]
push 0x401
inc edi
push ecx
jmp 0x416558
mov edx, dword [esi + 0x17e4]
push 0x4f55a8
push edi
push 0x410
push edx
call ebx
mov eax, edi
push 0x4f55a8
push eax
mov eax, dword [esi + 0x17e4]
push 0x401
inc edi
push eax
call ebx
mov al, byte [esp + 0x74]
test al, al
je 0x41658a
mov ecx, dword [esi + 0x17e4]
push 0
push edi
push 0x40f
push ecx
call ebx
mov edx, dword [esi + 0x17e4]
or edi, 0x1000
push 0
push edi
push 0x401
push edx
call ebx
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
test eax, eax
pop ebx
je 0x41659d
push eax
call dword [sym.imp.USER32.dll_DestroyIcon]
add esp, 0x478
ret 4