Function at 0x4fa700
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x148c
call fcn.00570340
mov eax, dword [0x61f138]
xor eax, esp
mov dword [esp + 0x1488], eax
push ebx
push esi
push edi
push 0x110
mov dword [esp + 0x18], ecx
lea eax, [esp + 0x40]
push 0
mov dword [esp + 0x1c], ecx
push eax
mov dword [esp + 0x28], ecx
mov byte [0x6d1080], 0
call fcn.00586880
add esp, 0xc
mov dword [esp + 0x38], 0x114
lea eax, [esp + 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [esp + 0x48], 2
jne 0x4faae4
call fcn.004fa2e0
mov esi, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ebx, eax
test ebx, ebx
je 0x4fa797
mov ecx, 0x6d1080
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4fa780
sub ecx, edx
cmp ecx, 8
jb 0x4fa797
cmp ecx, 0x14
jbe 0x4fa92b
xor eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], eax
push eax
lea eax, [esp + 0x1164]
push str..Scsi_d:
push eax
call fcn.004f9f50
add esp, 0xc
lea eax, [esp + 0x1160]
push 0
push 0
push 0xffffffffffffffff
push eax
push 0
push 0
call esi
mov edi, eax
xor ecx, ecx
mov edx, 2
lea eax, [edi + 1]
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0056f473
add esp, 4
mov esi, eax
lea eax, [esp + 0x1160]
push edi
push esi
push 0xffffffffffffffff
push eax
mov eax, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0
push 0
call eax
xor eax, eax
push eax
push eax
push 3
push eax
push 3
push 0xc0000000
push esi
mov word [esi + edi*2], ax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
cmp edi, 0xffffffff
je 0x4fa90f
mov esi, dword [esp + 0x10]
xor ebx, ebx
lea esp, [esp]
push 0x22d
lea eax, [esp + 0x1264]
push 0
push eax
call fcn.00586880
add esp, 0xc
mov dword [esp + 0x1260], 0x1c
lea eax, [esp + 0x1264]
mov dword [esp + 0x126c], 0x2710
mov dword [esp + 0x1278], 0x211
mov dword [esp + 0x1270], 0x1b0501
push 8
push str.SCSIDISK
push eax
call fcn.00597d50
add esp, 0xc
mov byte [esp + 0x1286], 0xec
lea eax, [esp + 0x14]
mov byte [esp + 0x1288], bl
push 0
push eax
push 0x22d
lea eax, [esp + 0x126c]
push eax
push 0x3c
push eax
push 0x4d008
push edi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x4fa8fe
cmp byte [esp + 0x12c2], 0
je 0x4fa8fe
xor eax, eax
lea esp, [esp]
movzx ecx, word [esp + eax*2 + 0x128c]
mov dword [esp + eax*4 + 0x150], ecx
inc eax
cmp eax, 0x100
jl 0x4fa8d0
lea ecx, [ebx + esi*2]
lea edx, [esp + 0x150]
call fcn.004fa540
mov dword [esp + 0x18], 1
inc ebx
cmp ebx, 2
jl 0x4fa830
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x10]
mov esi, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
inc eax
mov dword [esp + 0x10], eax
cmp eax, 0x10
jl 0x4fa7a1
mov ebx, dword [esp + 0x18]
test ebx, ebx
je 0x4fa94a
mov ecx, 0x6d1080
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4fa937
sub ecx, edx
cmp ecx, 8
jb 0x4fa94a
cmp ecx, 0x14
jbe 0x4fa951
call fcn.004f9f90
mov ebx, eax
test ebx, ebx
je 0x4fa977
mov ecx, 0x6d1080
lea edx, [ecx + 1]
lea ecx, [ecx]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4fa960
sub ecx, edx
cmp ecx, 8
jb 0x4fa977
cmp ecx, 0x14
jbe 0x4fab55
xor ebx, ebx
xor eax, eax
mov dword [esp + 0x10], eax
nop
push eax
lea eax, [esp + 0x1164]
push str..PhysicalDrive_d
push eax
call fcn.004f9f50
add esp, 0xc
lea eax, [esp + 0x1160]
push 0
push 0
push 0xffffffffffffffff
push eax
push 0
push 0
call esi
mov edi, eax
xor ecx, ecx
mov edx, 2
lea eax, [edi + 1]
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0056f473
add esp, 4
mov esi, eax
lea eax, [esp + 0x1160]
push edi
push esi
push 0xffffffffffffffff
push eax
mov eax, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0
push 0
call eax
xor eax, eax
push eax
push eax
push 3
push eax
push 7
push 0xc0000000
push esi
mov word [esi + edi*2], ax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
cmp edi, 0xffffffff
je 0x4faaca
xor eax, eax
mov dword [esp + 0x18], 0
push eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
lea eax, [esp + 0x1c]
push eax
push 0x18
lea eax, [esp + 0x2c]
push eax
push 0
push 0
push 0x74080
push edi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x4faaca
push 0x221
call fcn.005997bc
add esp, 4
mov esi, eax
lea eax, [esp + 0x14]
push 0
push eax
push 0x221
push esi
push 0x21
push esi
push 0x7c088
mov byte [esi + 0xa], 0xec
push edi
mov dword [esp + 0x34], 0
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x4faaba
xor ecx, ecx
lea esp, [esp]
movzx eax, word [esi + ecx*2 + 0x10]
mov dword [esp + ecx*4 + 0x150], eax
inc ecx
cmp ecx, 0x100
jl 0x4faa90
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x150]
call fcn.004fa540
mov ebx, 1
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push esi
call fcn.00591b7a
add esp, 4
mov eax, dword [esp + 0x10]
mov esi, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
inc eax
mov dword [esp + 0x10], eax
cmp eax, 6
jl 0x4fa980
jmp 0x4fab55
mov edi, dword [sym.imp.KERNEL32.dll_SetPriorityClass]
xor esi, esi
lea esp, [esp]
xor ebx, ebx
cmp byte [0x6d1080], bl
jne 0x4fab55
push 0x100
mov dword [esp + 0x18], ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call edi
push 0x100c
lea eax, [esp + 0x154]
push ebx
push eax
call fcn.00586880
add esp, 0xc
lea eax, [esp + 0x14]
push ebx
push eax
push 4
lea eax, [esp + 0x15c]
push eax
push ebx
push ebx
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0x20
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call edi
inc esi
cmp esi, 0xa
jl 0x4faaf0
cmp byte [0x6d1080], 0
jle 0x4fab8a
push 4
mov esi, 0x6d1080
push str.WD_W
push esi
call fcn.0059e130
add esp, 0xc
mov ecx, 0x6d1085
test eax, eax
cmovne ecx, esi
lea ecx, [ecx]
cmp byte [ecx], 0
je 0x4fab8a
add ecx, 1
jne 0x4fab80
push str.IBM_
push 0x6d1690
call fcn.005881e0
add esp, 8
test eax, eax
jne 0x4fabde
push str.MAXTOR
push 0x6d1690
call fcn.005881e0
add esp, 8
test eax, eax
jne 0x4fabde
push str.Maxtor
push 0x6d1690
call fcn.005881e0
add esp, 8
test eax, eax
jne 0x4fabde
push str.WDC
push 0x6d1690
call fcn.005881e0
add esp, 8
test ebx, ebx
je 0x4fac31
mov ecx, 0x6d1080
lea edx, [ecx + 1]
lea ebx, [ebx]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4fabf0
sub ecx, edx
cmp ecx, 8
jb 0x4fac31
cmp ecx, 0x14
ja 0x4fac31
mov ebx, dword [esp + 0x1c]
mov ecx, 0x6d1080
mov dword [ebx + 0x10], 0
lea edx, [ecx + 1]
mov dword [ebx + 0x14], 0xf
mov byte [ebx], al
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4fac20
sub ecx, edx
push ecx
push 0x6d1080
jmp 0x4fac4d
mov ebx, dword [esp + 0x1c]
push 0
push 0x5e1a69
mov dword [ebx + 0x10], 0
mov dword [ebx + 0x14], 0xf
mov byte [ebx], 0
mov ecx, ebx
call fcn.004462c0
mov ecx, dword [esp + 0x1494]
mov eax, ebx
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0056eeb4
mov esp, ebp
pop ebp
ret