Function at 0x403320
Capabilities:
Check os version
Get disk information

Disassembly:
sub esp, 0xe4
push ebx
push ebp
push esi
push edi
xor eax, eax
mov ecx, 0x25
lea edi, [esp + 0x60]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x60]
xor ebx, ebx
push eax
mov dword [0x430234], ebx
mov dword [0x430440], ebx
mov dword [esp + 0x64], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [esp + 0x70], 2
jne 0x4034df
push 0xffff
push 0x41fa30
push ebx
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceA]
mov al, byte [0x41fa30]
test al, al
je 0x4034c5
mov ebp, dword [sym.imp.USER32.dll_wsprintfA]
mov edi, 0x41fa30
lea esp, [esp]
push str.USBHUBDRV
push edi
call fcn.00405330
add esp, 8
test eax, eax
je 0x4033a9
mov eax, 0xb
jmp 0x4033e7
push str.USBROOT_HUB
push edi
call fcn.00405330
add esp, 8
test eax, eax
je 0x4033d0
cmp dword [0x42fa40], 0xb
jge 0x4033f4
mov dword [0x42fa40], 0xb
jmp 0x4033f4
push str.USBROOT_HUB20
push edi
call fcn.00405330
add esp, 8
test eax, eax
je 0x4033f4
mov eax, 0x14
cmp dword [0x42fa40], eax
jge 0x4033f4
mov dword [0x42fa40], eax
lea edx, [esp + 0x20]
mov eax, edi
sub edx, edi
lea esp, [esp]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x403400
lea ecx, [esp + 0x20]
push ecx
call fcn.00410a29
lea edx, [esp + 0x24]
push str.USBHUBDRV
push edx
call fcn.00405330
add esp, 0xc
test eax, eax
jne 0x403451
lea eax, [esp + 0x20]
push 0x417ae4
push eax
call fcn.00405330
add esp, 8
test eax, eax
je 0x40349f
movsx ecx, byte [eax + 3]
push ecx
call fcn.00405469
add esp, 4
test eax, eax
je 0x40349f
push edi
lea edx, [esp + 0x14]
push str.._s
push edx
call ebp
add esp, 0xc
push 0
push 0
push 3
push 0
push 2
push 0x40000000
lea eax, [esp + 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x40349f
mov edx, dword [esp + 0xf8]
lea ecx, [esp + 0x14]
push ecx
push esi
push edx
call fcn.004031d0
add esp, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4034a4
sub eax, edx
lea ebx, [ebx + eax + 1]
mov al, byte [ebx + 0x41fa30]
test al, al
lea edi, [ebx + 0x41fa30]
jne 0x403390
mov ecx, dword [0x430234]
mov eax, dword [esp + 0xfc]
pop edi
pop esi
pop ebp
mov dword [eax], ecx
pop ebx
add esp, 0xe4
ret
mov edi, dword [sym.imp.USER32.dll_wsprintfA]
mov ebp, dword [sym.imp.KERNEL32.dll_CreateFileA]
jmp 0x4034f0
push ebx
lea edx, [esp + 0x14]
push str..HCD_d
push edx
call edi
add esp, 0xc
push 0
push 0
push 3
push 0
push 2
push 0x40000000
lea eax, [esp + 0x28]
push eax
call ebp
mov esi, eax
cmp esi, 0xffffffff
je 0x40353a
mov edx, dword [esp + 0xf8]
lea ecx, [esp + 0x14]
push ecx
push esi
push edx
call fcn.004031d0
add esp, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
inc ebx
cmp ebx, 0xa
jl 0x4034f0
xor ebx, ebx
push ebx
lea eax, [esp + 0x14]
push str..AEHCD_d
push eax
call edi
add esp, 0xc
push 0
push 0
push 3
push 0
push 2
push 0x40000000
lea ecx, [esp + 0x28]
push ecx
call ebp
mov esi, eax
cmp esi, 0xffffffff
je 0x40358c
mov eax, dword [esp + 0xf8]
lea edx, [esp + 0x14]
push edx
push esi
push eax
call fcn.004031d0
add esp, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
inc ebx
cmp ebx, 0xa
jl 0x403542
mov ecx, dword [esp + 0xfc]
mov edx, dword [0x430234]
pop edi
pop esi
pop ebp
mov dword [ecx], edx
pop ebx
add esp, 0xe4
ret