Function at 0x43be20
Capabilities:
Get disk information
Get disk information via ioctl

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x55e048
mov eax, dword fs:[0]
push eax
sub esp, 0x118
mov eax, dword [0x5b3680]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x104], edx
mov edi, ecx
mov eax, dword [ebp + 8]
mov dword [ebp - 0x118], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x114], eax
mov byte [ebp - 0xe9], 0
call fcn.00402a00
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x43be8a
push 0x80004005
call fcn.004027b0
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x10c], eax
mov dword [ebp - 4], 1
lea eax, [ebp - 0x10c]
push edi
push str.._s
push eax
call fcn.00415d20
add esp, 0xc
mov dword [ebp - 0x108], 0
mov byte [ebp - 4], 2
push 0
push 0
push 3
push 0
push 3
push 0
push dword [ebp - 0x10c]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x108], eax
cmp eax, 0xffffffff
je 0x43c3fd
push 0
lea ecx, [ebp - 0x110]
mov dword [ebp - 0x3c], 0
push ecx
push 0xc
lea ecx, [ebp - 0x44]
mov dword [ebp - 0x110], 0
push ecx
push 0
push 0
push 0x2d1080
xorps xmm0, xmm0
push eax
movq qword [ebp - 0x44], xmm0
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x43c3fd
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x11c], eax
cmp eax, 0xffffffff
je 0x43c3fd
push edi
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
lea ecx, [ebp - 0xf4]
mov esi, eax
call fcn.00402b10
mov byte [ebp - 4], 3
mov ecx, 1
mov edx, dword [ebp - 0xf4]
mov eax, dword [edx - 8]
sub ecx, dword [edx - 4]
sub eax, 0x104
or eax, ecx
jge 0x43bf87
push 0x104
lea ecx, [ebp - 0xf4]
call fcn.00402590
mov edx, dword [ebp - 0xf4]
cmp dword [edx - 8], 0x104
jge 0x43bf9a
push 0x80070057
call fcn.004027b0
mov dword [edx - 0xc], 0x104
xor ecx, ecx
mov eax, dword [ebp - 0xf4]
push 0x104
push edx
push edi
mov word [eax + 0x208], cx
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
test eax, eax
je 0x43c3ce
mov eax, dword [ebp - 0xf4]
push dword [eax - 8]
push eax
call fcn.00529878
mov edx, eax
add esp, 8
test edx, edx
js 0x43bf90
mov ecx, dword [ebp - 0xf4]
cmp edx, dword [ecx - 8]
jg 0x43bf90
mov dword [ecx - 0xc], edx
xor ecx, ecx
mov eax, dword [ebp - 0xf4]
mov word [eax + edx*2], cx
sub esi, 2
je 0x43c016
dec esi
je 0x43c00f
sub esi, 2
jne 0x43c3ce
mov edi, 0x581b20
jmp 0x43c055
mov edi, 0x581b30
jmp 0x43c055
mov eax, dword [ebp - 0xf4]
cmp dword [eax - 0xc], ecx
jge 0x43c026
or eax, 0xffffffff
jmp 0x43c045
push str.Floppy
push eax
call fcn.0052cc91
add esp, 8
test eax, eax
jne 0x43c03d
or eax, 0xffffffff
jmp 0x43c045
sub eax, dword [ebp - 0xf4]
sar eax, 1
cmp eax, 0xffffffff
mov edi, 0x581b10
mov ecx, 0x581b30
cmove edi, ecx
push 0x12
push 0
push 0
push edi
mov dword [ebp - 0xf0], edi
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsW]
xor ecx, ecx
mov dword [ebp - 0xf8], eax
test eax, eax
setne cl
test ecx, ecx
je 0x43c3ce
lea ecx, [ebp - 0x60]
mov dword [ebp - 0x48], 0
push ecx
push 0
xorps xmm0, xmm0
mov dword [ebp - 0x14], 0
push edi
push 0
movdqu xmmword [ebp - 0x60], xmm0
push eax
movdqu xmmword [ebp - 0x2c], xmm0
mov dword [ebp - 0x60], 0x1c
movq qword [ebp - 0x50], xmm0
movq qword [ebp - 0x1c], xmm0
mov dword [ebp - 0x2c], 0x1c
mov dword [ebp - 0xfc], 0
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInterfaces]
test eax, eax
je 0x43c3c0
jmp 0x43c0e0
push 0x210
lea ecx, [ebp - 0xe8]
call fcn.00441720
mov byte [ebp - 4], 4
lea eax, [ebp - 0x2c]
mov edi, dword [ebp - 0xe8]
push eax
push 0
push 0x20e
push edi
lea eax, [ebp - 0x60]
mov dword [edi], 6
push eax
push dword [ebp - 0xf8]
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInterfaceDetailW]
test eax, eax
je 0x43c1c6
mov dword [ebp - 0x100], 0
mov byte [ebp - 4], 5
lea eax, [edi + 4]
push 0
push 0
push 3
push 0
push 3
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
mov dword [ebp - 0x100], esi
cmp esi, 0xffffffff
je 0x43c1ad
push 0
lea eax, [ebp - 0x120]
mov dword [ebp - 0x30], 0
push eax
push 0xc
lea eax, [ebp - 0x38]
mov dword [ebp - 0x120], 0
push eax
push 0
push 0
push 0x2d1080
xorps xmm0, xmm0
push esi
movq qword [ebp - 0x38], xmm0
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x43c222
mov eax, dword [ebp - 0x34]
cmp eax, 0xffffffff
je 0x43c222
cmp dword [ebp - 0x11c], eax
je 0x43c233
mov byte [ebp - 4], 4
test esi, esi
je 0x43c1c6
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x100], 0
mov byte [ebp - 4], 3
lea eax, [ebp - 0xe4]
cmp dword [ebp - 0xe8], eax
je 0x43c1e3
lea ecx, [ebp - 0xe8]
call fcn.0041b750
mov eax, dword [ebp - 0xfc]
lea ecx, [ebp - 0x60]
push ecx
inc eax
push eax
push dword [ebp - 0xf0]
mov dword [ebp - 0xfc], eax
push 0
push dword [ebp - 0xf8]
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInterfaces]
test eax, eax
jne 0x43c0e0
push dword [ebp - 0xf8]
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
jmp 0x43c3d5
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x100]
call fcn.004161a0
jmp 0x43c1c6
mov edx, dword [ebp - 0x114]
lea ecx, [edi + 4]
push 0
call fcn.0043c470
mov esi, dword [ebp - 0xf8]
add esp, 4
mov edi, dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
mov byte [ebp - 0xe9], al
lea eax, [ebp - 0xf0]
mov dword [ebp - 0xf0], 0
push eax
push 0
push 0
push 0
push 0xc
lea eax, [ebp - 0x2c]
push eax
push esi
call edi
test eax, eax
jne 0x43c328
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x43c328
mov ecx, dword [ebp - 0x104]
lea eax, [ebp - 0xf0]
push eax
mov eax, dword [ebp - 0xf0]
push eax
push eax
call fcn.00402410
push eax
push 0
push 0xc
lea eax, [ebp - 0x2c]
push eax
push esi
call edi
mov ecx, dword [ebp - 0x104]
mov esi, eax
push 0xffffffffffffffff
call fcn.004023c0
test esi, esi
jne 0x43c328
lea eax, [ebp - 0xfc]
mov dword [ebp - 0xfc], esi
push eax
push esi
push esi
push esi
push esi
mov esi, dword [ebp - 0xf8]
lea eax, [ebp - 0x2c]
push eax
push esi
call edi
test eax, eax
jne 0x43c328
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x43c328
mov ecx, dword [ebp - 0x104]
lea eax, [ebp - 0xfc]
push eax
mov eax, dword [ebp - 0xfc]
push eax
push eax
call fcn.00402410
push eax
push 0
push 0
lea eax, [ebp - 0x2c]
push eax
push esi
call edi
mov ecx, dword [ebp - 0x104]
push 0xffffffffffffffff
call fcn.004023c0
lea eax, [ebp - 0xf0]
mov dword [ebp - 0xf0], 0
push eax
push 0
push 0
push 0
push 0xb
lea eax, [ebp - 0x2c]
push eax
push dword [ebp - 0xf8]
call edi
test eax, eax
jne 0x43c394
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x43c394
mov ecx, dword [ebp - 0x118]
lea eax, [ebp - 0xf0]
push eax
mov eax, dword [ebp - 0xf0]
push eax
push eax
call fcn.00402410
push eax
push 0
push 0xb
lea eax, [ebp - 0x2c]
push eax
push dword [ebp - 0xf8]
call edi
mov ecx, dword [ebp - 0x118]
push 0xffffffffffffffff
call fcn.004023c0
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x100]
call fcn.004161a0
mov byte [ebp - 4], 3
lea eax, [ebp - 0xe4]
cmp dword [ebp - 0xe8], eax
je 0x43c3c0
lea ecx, [ebp - 0xe8]
call fcn.0041b750
push dword [ebp - 0xf8]
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
jmp 0x43c3d5
mov byte [ebp - 0xe9], 0
mov byte [ebp - 4], 2
or edi, 0xffffffff
mov edx, dword [ebp - 0xf4]
mov ecx, edi
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x43c407
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x43c407
mov byte [ebp - 0xe9], 0
or edi, 0xffffffff
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x108]
test eax, eax
je 0x43c426
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x108], 0
mov dword [ebp - 4], 0xffffffff
mov esi, dword [ebp - 0x10c]
add esi, 0xfffffff0
lea eax, [esi + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x43c44a
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov al, byte [ebp - 0xe9]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005295e2
mov esp, ebp
pop ebp
ret