Function at 0x409480
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x424d75
mov eax, dword fs:[0]
push eax
sub esp, 0x2c
push ebx
push esi
push edi
mov eax, dword [0x437008]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, edx
mov dword [ebp - 0x14], eax
mov ebx, ecx
mov dword [ebp - 0x1c], ebx
mov esi, dword [eax]
mov edx, 0x42ccfc
mov ecx, eax
call fcn.00409d60
test al, al
je 0x409557
mov edi, dword [esi - 8]
cmp edi, 8
jb 0x40953d
push 8
mov edx, str._UNC_
mov ecx, esi
call fcn.00409ea0
add esp, 4
test al, al
jne 0x40953d
lea ecx, [esi + edi*2]
push ecx
lea eax, [esi + 0x10]
push eax
lea ecx, [ebp - 0x14]
call fcn.00405f10
push eax
mov edx, 0x42cecc
mov dword [ebp - 4], 0
mov ecx, ebx
call fcn.00406020
mov eax, dword [ebp - 0x14]
add esp, 4
test eax, eax
je 0x40955d
lea ecx, [eax - 0xc]
or eax, 0xffffffff
lock xadd dword [ecx], eax
dec eax
jne 0x40955d
push ecx
call fcn.00410cbd
add esp, 4
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp edi, 0x16
jb 0x409571
push 0x16
mov edx, 0x42cfb4
mov ecx, esi
call fcn.00409ea0
add esp, 4
test al, al
jne 0x40957a
lock inc dword [esi - 0xc]
mov dword [ebx], esi
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp edi, 0xb
jb 0x409766
push 0xb
mov edx, 0x42cfe4
mov ecx, esi
call fcn.00409ea0
add esp, 4
test al, al
jne 0x409766
mov edx, dword [ebp - 0x14]
lea ecx, [ebp - 0x2c]
call fcn.004088c0
mov dword [ebp - 4], 1
cmp byte [ebp - 0x24], 0
je 0x40973f
lea eax, [ebp - 0x10]
mov dword [ebp - 0x10], 0
push eax
push 0
push 0
push dword [ebp - 0x2c]
call dword [sym.imp.KERNEL32.dll_GetVolumePathNamesForVolumeNameW]
test eax, eax
jne 0x4095ff
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xea
je 0x4095ff
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
lock inc dword [eax - 0xc]
lea ecx, [ebp - 0x2c]
mov dword [ebx], eax
call fcn.00408d60
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x10]
xor esi, esi
xor edi, edi
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x18], eax
test eax, eax
je 0x409686
cmp eax, 0x7fffffff
ja 0x409789
lea edi, [eax + eax]
cmp edi, 0x1000
jb 0x409653
lea eax, [edi + 0x23]
cmp eax, edi
jbe 0x40978e
push eax
call fcn.00410a3c
add esp, 4
test eax, eax
je 0x409793
lea esi, [eax + 0x23]
and esi, 0xffffffe0
mov dword [esi - 4], eax
jmp 0x409666
test edi, edi
je 0x409664
push edi
call fcn.00410a3c
add esp, 4
mov esi, eax
jmp 0x409666
xor esi, esi
mov ecx, dword [ebp - 0x18]
add edi, esi
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x30], edi
lea eax, [ecx + ecx]
push eax
push 0
push esi
call fcn.00413cb0
mov eax, dword [ebp - 0x10]
add esp, 0xc
mov dword [ebp - 0x34], edi
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 2
push ecx
push eax
push esi
push dword [ebp - 0x2c]
call dword [sym.imp.KERNEL32.dll_GetVolumePathNamesForVolumeNameW]
test eax, eax
je 0x409712
cmp word [esi], 0
je 0x409712
push esi
lea ecx, [ebp - 0x14]
call fcn.00404b10
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 3
push eax
lea edx, [ebp - 0x14]
mov ecx, ebx
call fcn.00408ee0
add esp, 4
lea ecx, [ebp - 0x14]
call fcn.00405180
sub edi, esi
mov eax, esi
and edi, 0xfffffffe
cmp edi, 0x1000
jb 0x4096ec
mov esi, dword [eax - 4]
add edi, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x409793
push edi
push esi
call fcn.00410cc2
add esp, 8
lea ecx, [ebp - 0x2c]
call fcn.00408d60
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test esi, esi
je 0x40973f
sub edi, esi
mov eax, esi
and edi, 0xfffffffe
cmp edi, 0x1000
jb 0x409735
mov esi, dword [eax - 4]
add edi, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x409793
push edi
push esi
call fcn.00410cc2
add esp, 8
lea ecx, [ebp - 0x2c]
call fcn.00408d60
mov ecx, dword [ebp - 0x14]
mov eax, dword [ecx]
lock inc dword [eax - 0xc]
mov dword [ebx], eax
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [esi + edi*2]
mov ecx, ebx
push eax
lea eax, [esi + 8]
push eax
call fcn.00405f10
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.00406ca0
call fcn.00401240
call fcn.004159de
int3