Function at 0x412d85
Capabilities:
Get disk information

Disassembly:
push ebp
push ebx
mov edx, 0x223
sub esp, 4
mov dword [esp], 0
dec edx
jne 0x412d8c
call fcn.004310a0
push dword [esp + 0x8a0]
call fcn.00430f40
mov edx, dword [esp + 0x898]
lea ecx, [esp]
call fcn.0041e000
mov edx, dword [esp + 0x89c]
lea ecx, [esp + 4]
call fcn.0041e000
mov edx, 0x434032
lea ecx, [esp + 8]
call fcn.0041e008
call fcn.00430e40
push eax
push eax
mov edx, 0x4374b4
call fcn.00430f90
mov edx, dword [esp + 8]
call fcn.00430f90
call fcn.00430e92
add dword [esp], edx
call fcn.00405d1f
call fcn.00430f40
mov dword [esp + 0xc], eax
push dword [esp]
call sub.KERNEL32.dll_GetDriveTypeW
push eax
mov ebx, 2
cmp ebx, dword [esp]
jne 0x412e71
call fcn.00430e40
push eax
push eax
push 0x105
call fcn.0041e500
lea eax, [esp + 0x18]
push eax
call fcn.00430eb0
push 0x104
mov eax, dword [esp + 0x18]
push eax
mov eax, dword [esp + 0xc]
push eax
call sub.KERNEL32.dll_QueryDosDeviceW
push str.Floppy
push dword [esp + 0x18]
call fcn.0041e4a0
and eax, eax
je 0x412e66
mov ebp, 0x438f08
mov dword [esp + 0x18], ebp
jmp 0x412e6f
mov ebp, 0x438f18
mov dword [esp + 0x18], ebp
jmp 0x412ec9
mov ebx, 3
cmp ebx, dword [esp]
jne 0x412e86
mov ebp, 0x438f18
mov dword [esp + 0x18], ebp
jmp 0x412ec9
mov ebx, 5
cmp ebx, dword [esp]
jne 0x412e9b
mov ebp, 0x438f28
mov dword [esp + 0x18], ebp
jmp 0x412ec9
push dword [esp + 0x8a4]
call fcn.00430f40
mov edx, 0x434032
call fcn.00430e40
push eax
call fcn.00430f90
pop eax
push eax
call fcn.00430e80
pop edx
add eax, edx
add esp, 4
jmp 0x413202
pop eax
push 0x12
push 0
push 0
push dword [esp + 0x20]
call sub.SETUPAPI.DLL_SetupDiGetClassDevsW
mov dword [esp + 0x18], eax
mov ebx, dword [esp + 0x18]
cmp ebx, 0xffffffff
jne 0x412f0e
mov edx, 0x434032
call fcn.00430e40
push eax
call fcn.00430f90
pop eax
push eax
call fcn.00430e80
pop edx
add eax, edx
jmp 0x413202
push str.setupapi.dll
push 0xffffffff
call fcn.0041fd4f
mov dword [esp + 0x1c], eax
mov ebx, dword [esp + 0x1c]
and ebx, ebx
jne 0x412f48
mov edx, 0x434032
call fcn.00430e40
push eax
call fcn.00430f90
pop eax
push eax
call fcn.00430e80
pop edx
add eax, edx
jmp 0x413202
push str.SetupDiGetDeviceInterfaceDetailW
push dword [esp + 0x20]
call fcn.0041fd8c
mov dword [esp + 0x20], eax
push str.CM_Get_Parent
push dword [esp + 0x20]
call fcn.0041fd8c
mov dword [esp + 0x24], eax
push str.CM_Get_Device_IDW
push dword [esp + 0x20]
call fcn.0041fd8c
mov dword [esp + 0x28], eax
lea eax, [esp + 0x2c]
lea ebp, [esp + 0x2c]
mov dword [ebp], 0x1c
lea eax, [esp + 0x48]
lea eax, [esp + 0x84c]
lea eax, [esp + 0x868]
lea eax, [esp + 0x2c]
push eax
push dword [esp + 0x878]
push dword [esp + 0x1c]
push 0
push dword [esp + 0x28]
call sub.SETUPAPI.DLL_SetupDiEnumDeviceInterfaces
mov ebx, eax
and ebx, ebx
jne 0x412fc8
jmp 0x4131d4
push 0
lea eax, [esp + 0x87c]
push eax
push 0
push 0
lea eax, [esp + 0x3c]
push eax
push dword [esp + 0x2c]
push dword [esp + 0x38]
call fcn.0041fe0f
mov ebx, dword [esp + 0x878]
and ebx, ebx
je 0x413012
mov ebx, dword [esp + 0x878]
cmp ebx, 0x804
jg 0x413012
mov eax, 1
jmp 0x413014
xor eax, eax
and eax, eax
je 0x4131c8
lea ebp, [esp + 0x48]
mov dword [ebp], 6
lea ebp, [esp + 0x84c]
mov dword [ebp], 0x1c
lea eax, [esp + 0x84c]
push eax
push 0
push dword [esp + 0x880]
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x3c]
push eax
push dword [esp + 0x2c]
push dword [esp + 0x38]
call fcn.0041fe0f
mov dword [esp + 0x87c], eax
cmp dword [esp + 0x87c], 0
je 0x4131c8
call fcn.00430e40
push eax
lea ebp, [esp + 0x4c]
lea edx, [ebp + 4]
call fcn.00430e40
push eax
push 0x400
call fcn.004311a0
call fcn.00430e92
add dword [esp], edx
call fcn.00405d1f
call fcn.00430f40
mov dword [esp + 0x880], eax
mov ebx, dword [esp + 0xc]
cmp ebx, dword [esp + 0x880]
jne 0x4131c8
lea ebp, [esp + 0x84c]
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x884], eax
push 0
push dword [esp + 0x888]
lea eax, [esp + 0x88c]
push eax
push dword [esp + 0x30]
call fcn.0041fde6
mov dword [esp + 0x87c], eax
mov ebx, dword [esp + 0x87c]
and ebx, ebx
jle 0x413101
jmp 0x4131d4
call fcn.00430e40
push eax
push eax
push 0x104
call fcn.0041e500
lea eax, [esp + 0x88c]
push eax
call fcn.00430eb0
push 0
push 0x104
mov eax, dword [esp + 0x890]
push eax
push dword [esp + 0x890]
push dword [esp + 0x38]
call fcn.0041fdf9
mov dword [esp + 0x87c], eax
push dword [esp + 4]
mov edx, dword [esp + 0x88c]
pop ecx
call fcn.00431020
jne 0x41318a
mov edx, dword [esp + 8]
call fcn.00430e40
push eax
call fcn.00430f90
mov edx, dword [esp + 0x88c]
call fcn.00430f90
mov edx, 0x434176
call fcn.00430f90
lea eax, [esp + 0xc]
push eax
call fcn.00430eb0
call fcn.00430e40
push eax
push str.acpi_
call fcn.00430e40
push eax
push eax
push dword [esp + 0x898]
call fcn.0041e3c0
call fcn.00430e92
add dword [esp], edx
call fcn.0041e4a0
call fcn.00430f40
mov ebx, eax
cmp ebx, 1
jne 0x4131c3
jmp 0x4131d4
jmp 0x4130cd
inc dword [esp + 0x874]
jmp 0x412f9f
push dword [esp + 0x18]
call sub.SETUPAPI.DLL_SetupDiDestroyDeviceInfoList
mov edx, dword [esp + 8]
call fcn.00430e40
push eax
call fcn.00430f90
pop eax
push eax
call fcn.00430e80
pop edx
add eax, edx
jmp 0x413202
push dword [esp + 0x888]
call fcn.00431170
push dword [esp]
call fcn.00431170
push dword [esp + 4]
call fcn.00431170
push dword [esp + 0x10]
call fcn.00431170
push dword [esp + 8]
call fcn.00431170
add esp, 0x88c
pop ebx
pop ebp
ret 8