Function at 0x426865
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x43eb51
mov eax, dword fs:[0]
push eax
sub esp, 0x140
mov eax, dword [0x455534]
xor eax, esp
mov dword [esp + 0x138], eax
push ebx
push esi
push edi
mov eax, dword [0x455534]
xor eax, esp
push eax
lea eax, [esp + 0x150]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov edi, ecx
xor ebx, ebx
mov dword [esp + 0x14], ebx
xor ecx, ecx
mov dword [esp + 0x1c], edi
mov dword [esp + 0xd4], 7
mov dword [esp + 0xd0], ebx
mov word [esp + 0xc0], cx
mov dword [esp + 0x158], ebx
cmp dword [eax + 0x14], ebx
jne 0x4268fe
push 0x44668c
mov esi, edi
call fcn.00401916
push ebx
push 1
lea esi, [esp + 0xc4]
call fcn.0040115a
mov eax, edi
jmp 0x426ee2
push 0xffffffffffffffff
lea ecx, [esp + 0xc0]
push ecx
xor ebx, ebx
call fcn.004010d2
xor edi, edi
lea eax, [esp + 0xbc]
call fcn.00401a03
cmp word [eax], 0x5c
je 0x426939
lea eax, [esp + 0xbc]
call fcn.00401a03
cmp word [eax], 0x2f
jne 0x426d40
lea edx, [esp + 0xbc]
lea ecx, [esp + 0x110]
call fcn.00423a5b
mov byte [esp + 0x158], 1
cmp dword [esp + 0x124], 0xb
jb 0x426998
push 0xb
lea eax, [esp + 0x114]
push eax
xor ebx, ebx
lea esi, [esp + 0x70]
call fcn.00401ae8
mov byte [esp + 0x158], 2
push str.devicemup
mov dword [esp + 0x18], 2
call fcn.00403f05
test eax, eax
jne 0x426998
mov byte [esp + 0x1b], 1
jmp 0x42699e
xor ebx, ebx
mov byte [esp + 0x1b], bl
xor eax, eax
inc eax
mov dword [esp + 0x158], eax
test byte [esp + 0x14], 2
je 0x4269bf
and dword [esp + 0x14], 0xfffffffd
push ebx
push eax
lea esi, [esp + 0x70]
call fcn.0040115a
cmp byte [esp + 0x1b], bl
je 0x426a18
push 0xffffffffffffffff
lea eax, [esp + 0xc0]
push eax
push 0xa
pop ebx
lea esi, [esp + 0x70]
call fcn.00401ae8
push 0xffffffffffffffff
lea ecx, [esp + 0xc0]
push ecx
xor ebx, ebx
mov byte [esp + 0x160], 3
call fcn.004010d2
push ebx
push 1
mov byte [esp + 0x160], 1
call fcn.0040115a
xor edi, edi
lea eax, [esp + 0xbc]
call fcn.00401a03
push 0x5c
pop ecx
mov word [eax], cx
mov esi, 0x2000
push esi
call fcn.00410cae
pop ecx
mov edi, eax
push edi
push 0x1000
mov dword [esp + 0x38], edi
call dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsW]
test eax, eax
je 0x426d21
push esi
mov dword [esp + 0x28], edi
call fcn.00410cae
pop ecx
mov dword [esp + 0x20], eax
cmp word [edi], bx
je 0x426d13
mov edi, dword [esp + 0x24]
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [edi + eax*2]
movzx eax, word [esi - 2]
mov dword [esp + 0x34], esi
cmp ax, 0x5c
je 0x426a78
cmp ax, 0x2f
jne 0x426a7e
xor eax, eax
mov word [esi - 2], ax
push 0x1000
push dword [esp + 0x24]
push edi
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
test eax, eax
je 0x426c69
push dword [esp + 0x20]
lea esi, [esp + 0x6c]
call fcn.00401916
mov edx, esi
lea ecx, [esp + 0x84]
mov byte [esp + 0x158], 4
call fcn.00423a5b
push 0x3b
push eax
lea eax, [esp + 0x50]
push eax
mov byte [esp + 0x164], 5
call fcn.00425d62
add esp, 0xc
push ebx
push 1
lea esi, [esp + 0x8c]
call fcn.0040115a
push ebx
push 1
lea esi, [esp + 0x70]
mov byte [esp + 0x160], 8
call fcn.0040115a
mov ebx, dword [esp + 0x58]
lea edi, [esp + 0x48]
lea esi, [esp + 0x40]
call fcn.004063bd
mov eax, dword [esp + 0x40]
mov ebx, dword [esp + 0x54]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
lea esi, [esp + 0x60]
mov dword [esp + 0x3c], eax
call fcn.004063bd
mov eax, dword [esp + 0x60]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x2c], eax
jmp 0x426c33
lea esi, [esp + 0x28]
call fcn.004053ef
push eax
lea esi, [esp + 0xdc]
call fcn.004010aa
mov byte [esp + 0x158], 9
mov eax, dword [esp + 0xec]
test eax, eax
je 0x426c12
lea edi, [eax - 1]
mov eax, esi
call fcn.00401a03
cmp word [eax], 0x5c
je 0x426b89
mov edi, dword [esp + 0xec]
dec edi
mov eax, esi
call fcn.00401a03
cmp word [eax], 0x2f
jne 0x426b9d
mov eax, dword [esp + 0xec]
dec eax
lea ecx, [esp + 0xd8]
call fcn.00401a23
mov eax, dword [esp + 0xec]
cmp dword [esp + 0x124], eax
jb 0x426be5
push eax
lea eax, [esp + 0x114]
push eax
xor ebx, ebx
lea esi, [esp + 0xa8]
call fcn.00401ae8
mov byte [esp + 0x158], 0xa
or dword [esp + 0x14], 4
lea ecx, [esp + 0xd8]
call fcn.00403cde
test al, al
je 0x426be5
mov bl, 1
jmp 0x426be7
xor bl, bl
mov dword [esp + 0x158], 9
test byte [esp + 0x14], 4
je 0x426c0e
and dword [esp + 0x14], 0xfffffffb
push 0
push 1
lea esi, [esp + 0xa8]
call fcn.0040115a
test bl, bl
jne 0x426c7e
push 0
push 1
lea esi, [esp + 0xe0]
mov byte [esp + 0x160], 8
call fcn.0040115a
lea esi, [esp + 0x28]
call fcn.00402037
lea edi, [esp + 0x38]
lea esi, [esp + 0x28]
call fcn.00402062
test al, al
jne 0x426b37
lea esi, [esp + 0x48]
mov byte [esp + 0x158], 1
call fcn.00402892
push dword [esp + 0x48]
call fcn.00410f30
mov esi, dword [esp + 0x38]
pop ecx
xor ebx, ebx
add esi, 2
mov dword [esp + 0x24], esi
cmp word [esi], bx
jne 0x426a56
jmp 0x426d13
mov ebx, dword [esp + 0xec]
push 0xffffffffffffffff
lea eax, [esp + 0xc0]
push eax
lea esi, [esp + 0x8c]
call fcn.00401ae8
push eax
push dword [esp + 0x28]
lea eax, [esp + 0xa8]
push eax
mov byte [esp + 0x164], 0xb
call fcn.00403c93
add esp, 0xc
push 0xffffffffffffffff
lea ecx, [esp + 0xc0]
push ecx
xor ebx, ebx
mov byte [esp + 0x160], 0xc
call fcn.004010d2
xor edi, edi
push edi
push 1
lea esi, [esp + 0xa8]
call fcn.0040115a
push edi
push 1
lea esi, [esp + 0x8c]
call fcn.0040115a
push edi
push 1
lea esi, [esp + 0xe0]
call fcn.0040115a
lea esi, [esp + 0x48]
call fcn.00402892
push dword [esp + 0x48]
call fcn.00410f30
pop ecx
push dword [esp + 0x20]
call fcn.00410f30
mov edi, dword [esp + 0x34]
pop ecx
push edi
call fcn.00410f30
pop ecx
push ebx
push 1
lea esi, [esp + 0x118]
mov byte [esp + 0x160], bl
call fcn.0040115a
jmp 0x426d42
xor ebx, ebx
cmp dword [esp + 0xd4], 8
mov eax, dword [esp + 0xc0]
jae 0x426d5a
lea eax, [esp + 0xc0]
mov esi, dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
push ebx
push ebx
push ebx
push eax
call esi
mov edi, eax
cmp edi, ebx
jne 0x426d82
mov esi, dword [esp + 0x1c]
lea eax, [esp + 0xbc]
push eax
call fcn.004010aa
jmp 0x426ecf
xor ecx, ecx
push 2
pop edx
mov eax, edi
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00410cae
cmp dword [esp + 0xd8], 8
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xc4]
pop ecx
jae 0x426db5
lea eax, [esp + 0xc0]
push ebx
push dword [esp + 0x18]
push edi
push eax
call esi
test eax, eax
jne 0x426dce
push dword [esp + 0x14]
call fcn.00410f30
pop ecx
jmp 0x426d6c
dec edi
push edi
push dword [esp + 0x18]
lea eax, [esp + 0xfc]
call fcn.004043a0
mov byte [esp + 0x158], 0xd
push dword [esp + 0x14]
call fcn.00410f30
cmp dword [esp + 0x110], 8
mov eax, dword [esp + 0xfc]
pop ecx
jae 0x426e0a
lea eax, [esp + 0xf8]
mov edi, dword [sym.imp.KERNEL32.dll_GetLongPathNameW]
push ebx
push ebx
push eax
call edi
mov esi, eax
cmp esi, ebx
jne 0x426e31
mov esi, dword [esp + 0x1c]
lea eax, [esp + 0xf4]
push eax
call fcn.004010aa
jmp 0x426ec0
xor ecx, ecx
push 2
pop edx
mov eax, esi
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00410cae
cmp dword [esp + 0x110], 8
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xfc]
pop ecx
jae 0x426e64
lea eax, [esp + 0xf8]
push esi
push dword [esp + 0x18]
push eax
call edi
test eax, eax
jne 0x426e7c
push dword [esp + 0x14]
call fcn.00410f30
pop ecx
jmp 0x426e1b
dec esi
push esi
push dword [esp + 0x18]
lea eax, [esp + 0x134]
call fcn.004043a0
mov byte [esp + 0x158], 0xe
push dword [esp + 0x14]
call fcn.00410f30
mov esi, dword [esp + 0x20]
pop ecx
lea eax, [esp + 0x12c]
push eax
call fcn.004010aa
push ebx
push 1
lea esi, [esp + 0x134]
call fcn.0040115a
push ebx
push 1
lea esi, [esp + 0xfc]
call fcn.0040115a
push ebx
push 1
lea esi, [esp + 0xc4]
call fcn.0040115a
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x150]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x138]
xor ecx, esp
call fcn.00410f21
mov esp, ebp
pop ebp
ret