Function at 0x5173c0
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x1480
call fcn.00584c40
push ebx
push ebp
push esi
push edi
push 0x110
lea eax, [esp + 0x370]
mov dword [esp + 0x1c], ecx
push 0
push eax
mov byte [0x6d1dc0], 0
call fcn.00585a40
add esp, 0xc
mov dword [esp + 0x368], 0x114
lea eax, [esp + 0x368]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [esp + 0x378], 2
jne 0x517774
call fcn.00516eb0
mov ebx, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ebp, eax
mov esi, 2
test ebp, ebp
je 0x517457
mov ecx, 0x6d1dc0
lea edx, [ecx + 1]
jmp 0x517440
mov al, byte [ecx]
inc ecx
test al, al
jne 0x517440
sub ecx, edx
cmp ecx, 8
jb 0x517457
cmp ecx, 0x14
jbe 0x5175dd
xor ebp, ebp
xor eax, eax
mov dword [esp + 0x10], eax
nop
push eax
lea eax, [esp + 0x3c]
push str..Scsi_d:
push eax
call fcn.004351c0
add esp, 0xc
lea eax, [esp + 0x38]
push 0
push 0
push 0xffffffffffffffff
push eax
push 0
push 0
call ebx
mov edi, eax
xor ecx, ecx
lea eax, [edi + 1]
mul esi
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00583e4c
add esp, 4
mov esi, eax
lea eax, [esp + 0x38]
push edi
push esi
push 0xffffffffffffffff
push eax
push 0
push 0
call ebx
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 0x5175c2
mov esi, dword [esp + 0x10]
xor ebx, ebx
jmp 0x5174e0
push 0x22d
lea eax, [esp + 0x13c]
push 0
push eax
call fcn.00585a40
add esp, 0xc
mov dword [esp + 0x138], 0x1c
lea eax, [esp + 0x13c]
mov dword [esp + 0x144], 0x2710
mov dword [esp + 0x150], 0x211
mov dword [esp + 0x148], 0x1b0501
push 8
push str.SCSIDISK
push eax
call fcn.00597d50
add esp, 0xc
mov byte [esp + 0x15e], 0xec
lea eax, [esp + 0x14]
mov byte [esp + 0x160], bl
push 0
push eax
push 0x22d
lea eax, [esp + 0x144]
push eax
push 0x3c
push eax
push 0x4d008
push edi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x5175ab
cmp byte [esp + 0x19a], 0
je 0x5175ab
xor eax, eax
lea esp, [esp]
movzx ecx, word [esp + eax*2 + 0x164]
mov dword [esp + eax*4 + 0x480], ecx
inc eax
cmp eax, 0x100
jl 0x517580
lea ecx, [ebx + esi*2]
lea edx, [esp + 0x480]
call fcn.005170f0
mov ebp, 1
inc ebx
cmp ebx, 2
jl 0x5174e0
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ebx, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov eax, dword [esp + 0x10]
mov esi, 2
inc eax
mov dword [esp + 0x10], eax
cmp eax, 0x10
jl 0x517460
test ebp, ebp
je 0x5175f8
mov ecx, 0x6d1dc0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x5175e5
sub ecx, edx
cmp ecx, 8
jb 0x5175f8
cmp ecx, 0x14
jbe 0x517603
call fcn.00516b80
mov ebp, eax
test ebp, ebp
je 0x517627
mov ecx, 0x6d1dc0
lea edx, [ecx + 1]
jmp 0x517610
mov al, byte [ecx]
inc ecx
test al, al
jne 0x517610
sub ecx, edx
cmp ecx, 8
jb 0x517627
cmp ecx, 0x14
jbe 0x5177e0
xor ebp, ebp
xor ebx, ebx
jmp 0x517630
push ebx
lea eax, [esp + 0x3c]
push str..PhysicalDrive_d
push eax
call fcn.004351c0
add esp, 0xc
lea eax, [esp + 0x38]
push 0
push 0
push 0xffffffffffffffff
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
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.00583e4c
add esp, 4
mov esi, eax
lea eax, [esp + 0x38]
push edi
push esi
push 0xffffffffffffffff
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
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 0x517768
xor eax, eax
mov dword [esp + 0x10], 0
push eax
mov dword [esp + 0x20], 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
lea eax, [esp + 0x14]
push eax
push 0x18
lea eax, [esp + 0x28]
push eax
push 0
push 0
push 0x74080
push edi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x517768
push 0x221
call fcn.00599b4f
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 0x517758
xor ecx, ecx
nop
movzx eax, word [esi + ecx*2 + 0x10]
mov dword [esp + ecx*4 + 0x480], eax
inc ecx
cmp ecx, 0x100
jl 0x517730
lea edx, [esp + 0x480]
mov ecx, ebx
call fcn.005170f0
mov ebp, 1
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push esi
call fcn.00591a4c
add esp, 4
inc ebx
cmp ebx, 6
jl 0x517630
jmp 0x5177e0
mov edi, dword [sym.imp.KERNEL32.dll_SetPriorityClass]
xor esi, esi
mov ebx, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
xor ebp, ebp
cmp byte [0x6d1dc0], 0
jne 0x5177e7
push 0x100
mov dword [esp + 0x18], ebp
call ebx
push eax
call edi
push 0x100c
lea eax, [esp + 0x484]
push ebp
push eax
call fcn.00585a40
add esp, 0xc
lea eax, [esp + 0x14]
push ebp
push eax
push 4
lea eax, [esp + 0x48c]
push eax
push ebp
push ebp
push 1
push ebp
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0x20
call ebx
push eax
call edi
inc esi
cmp esi, 0xa
jl 0x517782
cmp byte [0x6d1dc0], 0
jle 0x517800
push 4
push str.WD_W
push 0x6d1dc0
call fcn.0059e070
add esp, 0xc
lea ecx, [ecx]
push str.IBM_
push 0x6d19c0
call fcn.00587480
add esp, 8
test eax, eax
jne 0x517854
push str.MAXTOR
push 0x6d19c0
call fcn.00587480
add esp, 8
test eax, eax
jne 0x517854
push str.Maxtor
push 0x6d19c0
call fcn.00587480
add esp, 8
test eax, eax
jne 0x517854
push str.WDC
push 0x6d19c0
call fcn.00587480
add esp, 8
test ebp, ebp
je 0x5178c3
mov ecx, 0x6d1dc0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x517860
sub ecx, edx
cmp ecx, 8
jb 0x5178c3
cmp ecx, 0x14
ja 0x5178c3
mov ebx, dword [esp + 0x18]
mov ecx, 0x6d1dc0
mov dword [ebx + 0x10], 0
lea edx, [ecx + 1]
mov dword [ebx + 0x14], 0
mov dword [ebx], 0
mov dword [ebx + 0x10], 0
mov dword [ebx + 0x14], 0xf
mov byte [ebx], al
mov al, byte [ecx]
inc ecx
test al, al
jne 0x5178a3
sub ecx, edx
push ecx
push 0x6d1dc0
mov ecx, ebx
call fcn.00449cf0
mov eax, ebx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x18]
pop edi
pop esi
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0
mov dword [eax], 0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
mov dword [eax + 0x10], 0
mov byte [eax], 0
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret