Function at 0x42a6d0
Capabilities:
Get disk information

Disassembly:
mov eax, dword [0x4d4214]
sub esp, 0x2c
test eax, eax
push esi
push edi
je 0x42a6e9
pop edi
mov eax, 0x17
pop esi
add esp, 0x2c
ret
mov esi, dword [sym.imp.KERNEL32.dll_CreateMutexA]
push str.Pz_pdp_Mutex
push 0
push 0
call esi
push str.Pz_clo_Mutex
push 0
push 0
mov dword [0x4d4218], eax
call esi
push str.Pz_hf_Mutex
push 0
push 0
mov dword [0x4d3d20], eax
call esi
push str.Pz_he_Mutex
push 0
push 0
mov dword [0x4d40e4], eax
call esi
push str.Pz_hm_Mutex
push 0
push 0
mov dword [0x4d40e0], eax
call esi
mov dword [0x4d3d24], eax
mov ecx, 0xd8
xor eax, eax
mov edi, 0x4d3d40
rep stosd dword es:[edi], eax
mov ecx, 0x20
or eax, 0xffffffff
mov edi, 0x4d4180
push 0x4d3d30
rep stosd dword es:[edi], eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
push 0
push 0x4d3d38
call fcn.00430720
mov eax, dword [esp + 0x40]
add esp, 8
cmp eax, 0xd
jne 0x42a791
cmp dword [0x4d3d38], 0x44c
jg case.0x42a7ba.16
jmp 0x42a7a6
cmp eax, 0xc
jne 0x42a7a6
cmp dword [0x4d3d38], 0x7d0
jl case.0x42a7ba.16
add eax, 0xfffffff5
cmp eax, 0x3a
ja case.0x42a7ba.16
xor ecx, ecx
mov cl, byte [eax + 0x42aad0]
jmp dword [ecx*4 + 0x42aab8]
push str.WNASPI32.DLL
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
mov dword [0x4d4200], eax
jne 0x42a7e0
pop edi
mov eax, 0x15
pop esi
add esp, 0x2c
ret
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.GetASPI32SupportInfo
push eax
call esi
mov edx, dword [0x4d4200]
push str.SendASPI32Command
push edx
mov dword [0x4c0b60], eax
call esi
mov ecx, dword [0x4c0b60]
mov dword [0x4c0b64], eax
test ecx, ecx
je 0x42a826
test eax, eax
je 0x42a826
pop edi
mov dword [0x4d4214], 4
xor eax, eax
pop esi
add esp, 0x2c
ret
mov eax, dword [0x4d4200]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
pop edi
mov eax, 0x15
pop esi
add esp, 0x2c
ret
pop edi
mov dword [0x4d4214], 2
xor eax, eax
pop esi
add esp, 0x2c
ret
mov ecx, 8
or eax, 0xffffffff
mov edi, 0x4c0b40
push ebx
rep stosd dword es:[edi], eax
mov ecx, 8
or eax, 0xffffffff
mov edi, 0x4d40a0
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_CreateFileA]
mov bl, 0x44
rep stosd dword es:[edi], eax
mov ecx, 8
or eax, 0xffffffff
mov edi, 0x4d40c0
rep stosd dword es:[edi], eax
xor edi, edi
lea ecx, [edi + 0x44]
lea edx, [esp + 0x1c]
push ecx
push str.._c:
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 5
jne 0x42a91e
push 0
push 0
push 3
push 0
push 3
lea ecx, [esp + 0x30]
push 0x80
push ecx
call ebp
mov esi, eax
cmp esi, 0xffffffff
je 0x42a91e
xor edx, edx
lea eax, [esp + 0x10]
mov dword [esp + 0x14], edx
lea ecx, [esp + 0x14]
push edx
push eax
push 8
push ecx
push edx
push edx
push 0x41018
push esi
mov dword [esp + 0x38], edx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
push esi
jne 0x42a8fe
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x42a91e
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dl, byte [esp + 0x18]
mov al, byte [esp + 0x1a]
mov byte [edi + 0x4c0b43], bl
mov byte [edi + 0x4d40a3], dl
mov byte [edi + 0x4d40c3], al
inc bl
inc edi
cmp bl, 0x5a
jbe 0x42a888
mov eax, dword [0x4a02e0]
mov ecx, dword [str..PzWDMDevice0]
mov edx, dword [0x4a02dc]
push 0
push 0x40000000
push 3
mov dword [esp + 0x30], eax
push 0
mov dword [esp + 0x2c], ecx
mov ecx, dword [0x4a02e4]
mov dword [esp + 0x30], edx
mov dl, byte [0x4a02e8]
push 1
lea eax, [esp + 0x30]
push 0xc0000000
push eax
mov dword [esp + 0x44], ecx
mov byte [esp + 0x48], dl
call ebp
pop ebp
cmp eax, 0xffffffff
mov dword [0x4d3d28], eax
pop ebx
jne 0x42a98b
pop edi
mov eax, 0x15
pop esi
add esp, 0x2c
ret
pop edi
mov dword [0x4d4214], 1
xor eax, eax
pop esi
add esp, 0x2c
ret
mov ecx, dword [str..PzWDMDevice0]
mov eax, dword [0x4a02e0]
mov edx, dword [0x4a02dc]
mov dword [esp + 0x14], ecx
mov ecx, dword [0x4a02e4]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
lea eax, [esp + 0x1d]
mov dword [esp + 0x18], edx
mov dl, byte [0x4a02e8]
push 8
lea ecx, [esp + 0x24]
push eax
push ecx
mov byte [esp + 0x30], dl
call fcn.0047e960
add esp, 0xc
lea edx, [esp + 0x14]
mov al, 0x65
mov byte [esp + 0x19], 0x78
push 0
push 0x40000000
push 3
push 0
push 1
push 0xc0000000
push edx
mov byte [esp + 0x37], al
mov byte [esp + 0x3a], al
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 [0x4d3d28], eax
je 0x42aa8d
pop edi
mov dword [0x4d4208], 0x22203f
mov dword [0x4d420c], 0x222008
mov dword [0x4d4204], 0x22200c
mov dword [0x4d4210], 0x222010
mov dword [0x4d4214], 0xb
xor eax, eax
pop esi
add esp, 0x2c
ret
push 0
push 0x40000000
push 3
push 0
push 1
push 0xc0000000
push str..PzVXD
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov dword [0x4d3d28], eax
jne 0x42aa98
pop edi
mov eax, 0x15
pop esi
add esp, 0x2c
ret
pop edi
mov dword [0x4d4214], 3
xor eax, eax
pop esi
add esp, 0x2c
ret
pop edi
mov eax, 0x16
pop esi
add esp, 0x2c
ret