Function at 0x401543
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x442142
mov eax, dword fs:[0]
push eax
sub esp, 0x4b8
mov eax, dword [0x453160]
xor eax, esp
mov dword [esp + 0x4b0], eax
push ebx
push esi
push edi
mov eax, dword [0x453160]
xor eax, esp
push eax
lea eax, [esp + 0x4c8]
mov dword fs:[0], eax
mov esi, dword [ebp + 8]
lea eax, [esp + 0x64]
push eax
push ecx
mov dword [esp + 0x30], esi
call fcn.00401acb
test eax, eax
je 0x40184b
lea eax, [esp + 0x78]
push eax
lea ecx, [esp + 0x34]
call fcn.00402eff
mov edi, 0x44b25c
xor ebx, ebx
push edi
lea ecx, [esp + 0x290]
mov dword [esp + 0x4d4], ebx
call fcn.00402eff
mov esi, 0x44b260
push esi
lea ecx, [esp + 0x14]
mov byte [esp + 0x4d4], 1
call fcn.00402eff
push 2
pop eax
mov byte [esp + 0x4d0], al
lea eax, [esp + 0x28c]
push eax
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x270]
push eax
call fcn.004019fd
push eax
lea ecx, [esp + 0x34]
call fcn.00401d95
lea ecx, [esp + 0x264]
call fcn.00402ab1
lea ecx, [esp + 0x10]
call fcn.00402ab1
lea ecx, [esp + 0x28c]
mov byte [esp + 0x4d0], bl
call fcn.00402ab1
lea eax, [esp + 0x9a]
push eax
lea ecx, [esp + 0x4c]
call fcn.00402eff
push edi
lea ecx, [esp + 0x14]
mov byte [esp + 0x4d4], 3
call fcn.00402eff
push esi
lea ecx, [esp + 0x290]
mov byte [esp + 0x4d4], 4
call fcn.00402eff
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x290]
push eax
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x270]
push eax
mov byte [esp + 0x4e0], 5
call fcn.004019fd
push eax
lea ecx, [esp + 0x4c]
call fcn.00401d95
lea ecx, [esp + 0x264]
call fcn.00402ab1
lea ecx, [esp + 0x28c]
call fcn.00402ab1
lea ecx, [esp + 0x10]
mov byte [esp + 0x4d0], 3
call fcn.00402ab1
cmp dword [esp + 0x44], 0x10
lea eax, [esp + 0x30]
cmovae eax, dword [esp + 0x30]
push eax
lea eax, [esp + 0x268]
push eax
call fcn.0040193f
push eax
lea ecx, [esp + 0x34]
call fcn.00401d95
lea ecx, [esp + 0x264]
call fcn.00402ab1
cmp dword [esp + 0x5c], 0x10
lea eax, [esp + 0x48]
cmovae eax, dword [esp + 0x48]
push eax
lea eax, [esp + 0x268]
push eax
call fcn.0040193f
push eax
lea ecx, [esp + 0x4c]
call fcn.00401d95
lea ecx, [esp + 0x264]
call fcn.00402ab1
cmp dword [esp + 0x44], 0x10
push ebx
push ebx
push 0xffffffffffffffff
lea eax, [esp + 0x3c]
cmovae eax, dword [esp + 0x3c]
push eax
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0xfde9
call ebx
mov edi, eax
xor ecx, ecx
push 2
lea esi, [edi + 1]
pop edx
mov eax, esi
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004084f3
pop ecx
push esi
xor esi, esi
push esi
push eax
mov dword [esp + 0x38], eax
call fcn.004104a0
add esp, 0xc
cmp dword [esp + 0x44], 0x10
push edi
push dword [esp + 0x30]
lea ecx, [esp + 0x38]
cmovae ecx, dword [esp + 0x38]
push edi
push ecx
push esi
mov edi, 0xfde9
push edi
call ebx
cmp dword [esp + 0x5c], 0x10
push esi
push esi
push 0xffffffffffffffff
lea eax, [esp + 0x54]
cmovae eax, dword [esp + 0x54]
push eax
push esi
push edi
call ebx
mov edi, eax
push 2
lea esi, [edi + 1]
xor ecx, ecx
pop edx
mov eax, esi
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004084f3
pop ecx
push esi
xor esi, esi
mov ebx, eax
push esi
push ebx
call fcn.004104a0
add esp, 0xc
cmp dword [esp + 0x5c], 0x10
push edi
push ebx
push edi
lea ecx, [esp + 0x54]
cmovae ecx, dword [esp + 0x54]
push ecx
push esi
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov edi, dword [esp + 0x28]
push 0x208
push esi
push edi
call fcn.004104a0
mov esi, dword [esp + 0x38]
add esp, 0xc
push esi
push ebx
push 0x44b264
push 0x104
push edi
call fcn.00408c21
add esp, 0x14
push ebx
call fcn.00408c3d
pop ecx
push esi
call fcn.00408c3d
pop ecx
lea ecx, [esp + 0x48]
call fcn.00402ab1
lea ecx, [esp + 0x30]
call fcn.00402ab1
jmp 0x401919
push 9
pop ecx
xor eax, eax
mov word [esp + 0x28c], ax
lea edi, [esp + 0x28e]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
push 9
pop ecx
xor eax, eax
mov word [esp + 0x264], ax
lea edi, [esp + 0x266]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0xff
push ecx
lea eax, [esp + 0x268]
push eax
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x6c]
push eax
lea eax, [esp + 0x38]
push eax
push ecx
lea eax, [esp + 0x2a4]
push eax
xor ebx, ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationW]
xor eax, eax
push 0x206
mov word [esp + 0x2b8], ax
lea eax, [esp + 0x2ba]
push ebx
push eax
call fcn.004104a0
pop ecx
pop ecx
lea eax, [esp + 0x2b8]
push eax
call fcn.00401c56
test eax, eax
jne 0x4018eb
push ecx
lea eax, [esp + 0x2b8]
push eax
sub esp, 0xc
call fcn.00401ca6
push 0x208
push ebx
push esi
call fcn.004104a0
add esp, 0xc
lea eax, [esp + 0x2b4]
push dword [esp + 0x28]
push eax
push str._s__08X
push 0x104
push esi
call fcn.00408c21
add esp, 0x14
mov ecx, dword [esp + 0x4c8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x4b0]
xor ecx, esp
call fcn.00408550
mov esp, ebp
pop ebp
ret 8