Function at 0x42d280
Capabilities:
Get disk information

Disassembly:
sub esp, 0x30
mov eax, dword [0x4bacc0]
xor eax, esp
mov dword [esp + 0x2c], eax
push edi
xor edi, edi
cmp dword [0x4de8ec], edi
je 0x42d2ae
mov eax, 0x17
pop edi
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.004810ab
add esp, 0x30
ret
push esi
mov esi, dword [sym.imp.KERNEL32.dll_CreateMutexA]
push str.Pz_pdp_Mutex
push edi
push edi
call esi
push str.Pz_clo_Mutex
push edi
push edi
mov dword [0x4de480], eax
call esi
push str.Pz_hf_Mutex
push edi
push edi
mov dword [0x4de9e0], eax
call esi
push str.Pz_he_Mutex
push edi
push edi
mov dword [0x4de8fc], eax
call esi
push str.Pz_hm_Mutex
push edi
push edi
mov dword [0x4de8f0], eax
call esi
push 0x360
push edi
push 0x4de580
mov dword [0x4de488], eax
call fcn.00481440
push 0x80
push 0xffffffffffffffff
push 0x4de920
call fcn.00481440
add esp, 0x18
push 0x4de448
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
push edi
push 0x4de8f8
mov dword [0x4de900], edi
call fcn.0042c5c0
mov eax, dword [esp + 0x44]
add esp, 8
cmp eax, 0xd
jne 0x42d369
cmp dword [0x4de8f8], 0x44c
jle 0x42d37a
pop esi
mov eax, 0x16
pop edi
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.004810ab
add esp, 0x30
ret
cmp eax, 0xc
jne 0x42d37a
cmp dword [0x4de8f8], 0x7d0
jl case.0x42d389.15
add eax, 0xfffffff5
cmp eax, 0x3a
ja case.0x42d389.15
movzx eax, byte [eax + 0x42d710]
jmp dword [eax*4 + 0x42d6f8]
push str.WNASPI32.DLL
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp eax, edi
mov dword [0x4de8f4], eax
je 0x42d400
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.GetASPI32SupportInfo
push eax
call esi
mov ecx, dword [0x4de8f4]
push str.SendASPI32Command
push ecx
mov dword [0x4de9a8], eax
call esi
cmp dword [0x4de9a8], edi
mov dword [0x4de4c8], eax
je 0x42d3f3
cmp eax, edi
je 0x42d3f3
pop esi
mov dword [0x4de8ec], 4
xor eax, eax
pop edi
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.004810ab
add esp, 0x30
ret
mov edx, dword [0x4de8f4]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
pop esi
mov eax, 0x15
pop edi
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.004810ab
add esp, 0x30
ret
pop esi
mov dword [0x4de8ec], 2
xor eax, eax
pop edi
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.004810ab
add esp, 0x30
ret
or eax, 0xffffffff
mov dword [0x4de9c0], eax
mov dword [0x4de9c4], eax
mov dword [0x4de9c8], eax
mov dword [0x4de9cc], eax
mov dword [0x4de9d0], eax
mov dword [0x4de9d4], eax
mov dword [0x4de9d8], eax
mov dword [0x4de9dc], eax
or eax, 0xffffffff
push ebx
mov dword [0x4de460], eax
mov dword [0x4de464], eax
mov dword [0x4de468], eax
mov dword [0x4de46c], eax
mov dword [0x4de470], eax
mov dword [0x4de474], eax
mov dword [0x4de478], eax
mov dword [0x4de47c], eax
or eax, 0xffffffff
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [0x4de4a0], eax
mov dword [0x4de4a4], eax
mov dword [0x4de4a8], eax
mov dword [0x4de4ac], eax
mov dword [0x4de4b0], eax
mov dword [0x4de4b4], eax
mov dword [0x4de4b8], eax
mov dword [0x4de4bc], eax
mov bl, 0x44
mov edi, edi
lea eax, [edi + 0x44]
push eax
lea ecx, [esp + 0x20]
push str.._c:
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea edx, [esp + 0x20]
push edx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 5
jne 0x42d556
push 0
push 0
push 3
push 0
push 3
push 0x80
lea eax, [esp + 0x34]
push eax
call ebp
mov esi, eax
cmp esi, 0xffffffff
je 0x42d556
xor eax, eax
push eax
lea ecx, [esp + 0x1c]
push ecx
push 8
lea edx, [esp + 0x1c]
push edx
push eax
push eax
push 0x41018
push esi
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
push esi
jne 0x42d536
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x42d556
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov al, byte [esp + 0x14]
mov cl, byte [esp + 0x16]
mov byte [edi + 0x4de9c3], bl
mov byte [edi + 0x4de463], al
mov byte [edi + 0x4de4a3], cl
add bl, 1
add edi, 1
cmp bl, 0x5a
jbe 0x42d4c0
mov ecx, dword [0x49f984]
mov edx, dword [str..PzWDMDevice0]
mov eax, dword [0x49f980]
push 0
push 0x40000000
push 3
push 0
push 1
mov dword [esp + 0x38], ecx
mov dword [esp + 0x30], edx
mov edx, dword [0x49f988]
mov dword [esp + 0x34], eax
mov al, byte [0x49f98c]
push 0xc0000000
lea ecx, [esp + 0x34]
push ecx
mov dword [esp + 0x44], edx
mov byte [esp + 0x48], al
call ebp
cmp eax, 0xffffffff
pop ebp
mov dword [0x4de4c4], eax
pop ebx
je 0x42d400
pop esi
mov dword [0x4de8ec], 1
xor eax, eax
pop edi
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.004810ab
add esp, 0x30
ret
mov edx, dword [str..PzWDMDevice0]
mov ecx, dword [0x49f984]
mov eax, dword [0x49f980]
mov dword [esp + 0x14], edx
mov edx, dword [0x49f988]
mov dword [esp + 0x1c], ecx
push 8
lea ecx, [esp + 0x21]
mov dword [esp + 0x24], edx
mov dword [esp + 0x1c], eax
mov al, byte [0x49f98c]
push ecx
lea edx, [esp + 0x28]
push edx
mov byte [esp + 0x30], al
call fcn.00481900
add esp, 0xc
push edi
push 0x40000000
push 3
push edi
mov al, 0x65
push 1
mov byte [esp + 0x2f], al
mov byte [esp + 0x32], al
push 0xc0000000
lea eax, [esp + 0x2c]
push eax
mov byte [esp + 0x35], 0x78
mov byte [esp + 0x38], 0x6c
mov byte [esp + 0x39], 0x70
mov byte [esp + 0x36], 0x48
mov byte [esp + 0x3b], 0x72
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov dword [0x4de4c4], eax
je 0x42d400
pop esi
mov dword [0x4de440], 0x22203f
mov dword [0x4de9a0], 0x222008
mov dword [0x4de8e4], 0x22200c
mov dword [0x4de8e8], 0x222010
mov dword [0x4de8ec], 0xb
xor eax, eax
pop edi
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.004810ab
add esp, 0x30
ret
push edi
push 0x40000000
push 3
push edi
push 1
push 0xc0000000
push str..PzVXD
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov dword [0x4de4c4], eax
je 0x42d400
mov ecx, dword [esp + 0x34]
pop esi
pop edi
xor ecx, esp
mov dword [0x4de8ec], 3
xor eax, eax
call fcn.004810ab
add esp, 0x30
ret