Function at 0x101041a0
Capabilities:
Check os version
Resolve function by parsing pe exports

Disassembly:
mov eax, 0x138c
call fcn.100718b0
push ebx
push ebp
push esi
push edi
push 0x110
xor esi, esi
lea eax, [esp + 0x78]
mov ebx, ecx
push esi
push eax
mov dword [esp + 0x28], ebx
call fcn.100747a0
add esp, 0xc
mov dword [esp + 0x70], 0x114
lea eax, [esp + 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
mov eax, dword [ebx + 4]
xor edi, edi
mov ecx, dword [ebx]
sub eax, ecx
sar eax, 2
test eax, eax
je 0x1010420e
nop dword [eax]
mov eax, dword [ebx]
push 2
push dword [eax + edi*4]
call fcn.100703b3
mov eax, dword [ebx + 4]
inc edi
mov ecx, dword [ebx]
add esp, 8
sub eax, ecx
sar eax, 2
cmp edi, eax
jb 0x101041f0
cmp dword [esp + 0x80], 2
mov dword [ebx + 4], ecx
jne 0x10104588
mov ebp, dword [sym.imp.KERNEL32.dll_DeviceIoControl]
xor ebx, ebx
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esp + 0x18], ebx
push ebx
lea eax, [esp + 0x18c]
push str..PhysicalDrive_d
push eax
call fcn.10037590
add esp, 0xc
lea eax, [esp + 0x188]
push 0
push 0
push 3
push 0
push 3
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
je 0x10104369
push 0
lea eax, [esp + 0x18]
mov dword [esp + 0x18], 0
push eax
push 0x18
lea eax, [esp + 0x64]
xorps xmm0, xmm0
push eax
push 0
push 0
push 0x74080
push esi
movups xmmword [esp + 0x78], xmm0
movq qword [esp + 0x88], xmm0
call ebp
test eax, eax
je 0x10104366
mov bl, byte [esp + 0x5b]
test bl, bl
je 0x10104362
push 0x210
xorps xmm0, xmm0
mov byte [esp + 0x43], 0
lea eax, [esp + 0x38c]
movlpd qword [esp + 0x45], xmm0
push 0
push eax
movlpd qword [esp + 0x55], xmm0
mov dword [esp + 0x5d], 0
call fcn.100747a0
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov al, cl
shr bl, cl
and al, 1
mov dword [esp + 0x38], 0x10100
or al, 0xfa
mov byte [esp + 0x3c], 0
shl al, 4
and bl, 0x10
push 0
mov byte [esp + 0x41], al
neg bl
lea eax, [esp + 0x18]
mov dword [esp + 0x38], 0x200
push eax
push 0x210
sbb bl, bl
lea eax, [esp + 0x394]
push eax
push 0x20
and bl, 0xb5
lea eax, [esp + 0x48]
push eax
add bl, 0xec
mov byte [esp + 0x56], bl
mov ebx, ecx
push 0x7c088
push esi
mov byte [esp + 0x60], bl
call ebp
test eax, eax
je 0x10104366
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x398]
push eax
call fcn.10103f50
jmp 0x10104366
mov ebx, dword [esp + 0x18]
push esi
call edi
inc ebx
mov dword [esp + 0x18], ebx
cmp ebx, 0x10
jl 0x10104231
xor edi, edi
mov dword [esp + 0x14], edi
nop dword [eax]
push edi
lea eax, [esp + 0x18c]
push str..Scsi_d:
push eax
call fcn.10037590
add esp, 0xc
lea eax, [esp + 0x188]
push 0
push 0
push 3
push 0
push 3
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
je 0x10104486
mov edi, dword [esp + 0x1c]
xor ebx, ebx
push 0x22d
lea eax, [esp + 0x38c]
mov dword [esp + 0x24], 0
push 0
push eax
call fcn.100747a0
add esp, 0xc
mov dword [esp + 0x388], 0x1c
lea eax, [esp + 0x38c]
mov dword [esp + 0x394], 0x2710
mov dword [esp + 0x3a0], 0x211
mov dword [esp + 0x398], 0x1b0501
push 8
push str.SCSIDISK
push eax
call fcn.100a1690
add esp, 0xc
mov byte [esp + 0x3ae], 0xec
lea eax, [esp + 0x20]
mov byte [esp + 0x3b0], bl
push 0
push eax
push 0x22d
lea eax, [esp + 0x394]
push eax
push 0x3c
push eax
push 0x4d008
push esi
call ebp
test eax, eax
je 0x10104471
cmp byte [esp + 0x3ea], 0
je 0x10104471
lea eax, [esp + 0x3b4]
mov ecx, edi
push eax
call fcn.10103f50
inc ebx
cmp ebx, 2
jl 0x101043c4
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, dword [esp + 0x14]
inc edi
mov dword [esp + 0x14], edi
cmp edi, 0x10
jl 0x10104380
xor ebx, ebx
nop word [eax + eax]
push ebx
lea eax, [esp + 0x18c]
push str..PhysicalDrive_d
push eax
call fcn.10037590
add esp, 0xc
lea eax, [esp + 0x188]
push 0
push 0
push 3
push 0
push 7
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
cmp edi, 0xffffffff
je 0x10104579
push 0
lea eax, [esp + 0x24]
mov dword [esp + 0x24], 0
push eax
push 0x18
lea eax, [esp + 0x64]
xorps xmm0, xmm0
push eax
push 0
push 0
push 0x74080
push edi
movups xmmword [esp + 0x78], xmm0
movq qword [esp + 0x88], xmm0
call ebp
test eax, eax
je 0x10104572
push 0x221
call fcn.10096b22
add esp, 4
mov esi, eax
push 0x221
push 0
push esi
call fcn.100747a0
add esp, 0xc
mov byte [esi + 0xa], 0xec
lea eax, [esp + 0x14]
mov dword [esp + 0x14], 0
push 0
push eax
push 0x221
push esi
push 0x21
push esi
push 0x7c088
push edi
call ebp
test eax, eax
je 0x10104569
mov ecx, dword [esp + 0x1c]
lea eax, [esi + 0x10]
push eax
call fcn.10103f50
push esi
call fcn.1007e266
add esp, 4
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
inc ebx
cmp ebx, 0x10
jl 0x101044a0
jmp 0x10104732
mov ebx, dword [sym.imp.KERNEL32.dll_SetPriorityClass]
mov dword [esp + 0x20], esi
test esi, esi
jne 0x10104732
push 0x100
mov dword [esp + 0x28], esi
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call ebx
push 0x100c
lea eax, [esp + 0x38c]
push esi
push eax
call fcn.100747a0
add esp, 0xc
push esi
push 0x4000000
push esi
push esi
push esi
push esi
push str..IDE21201.VXD
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
cmp edi, 0xffffffff
je 0x1010471e
push esi
lea eax, [esp + 0x28]
push eax
push 4
lea eax, [esp + 0x394]
push eax
push esi
push esi
push 1
push edi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor ecx, ecx
lea ebx, [esp + 0x394]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ebx
nop word [eax + eax]
cmp byte [esp + ecx + 0x38c], 0
je 0x101046f3
mov eax, ecx
shr eax, 1
cmp byte [esp + eax + 0x388], 0
je 0x101046f3
push 0x200
call fcn.100703f6
mov ebp, eax
add esp, 4
mov dword [esp + 0x30], ebp
xor edx, edx
mov esi, ebx
nop word [eax + eax]
mov cx, word [esi]
lea esi, [esi + 2]
mov word [ebp + edx*2], cx
inc edx
cmp edx, 0x100
jl 0x10104660
mov ecx, dword [esp + 0x1c]
xor ebx, ebx
mov edx, dword [ecx + 4]
mov eax, edx
mov edi, dword [ecx]
sub eax, edi
sar eax, 2
mov dword [esp + 0x2c], edx
mov dword [esp + 0x28], eax
test eax, eax
je 0x101046ce
mov eax, dword [edi]
mov edx, ebp
mov esi, 0x1fc
nop dword [eax + eax]
mov ecx, dword [edx]
cmp ecx, dword [eax]
jne 0x101046bc
add edx, 4
add eax, 4
sub esi, 4
jae 0x101046a0
push ebp
call fcn.100703c1
add esp, 4
jmp 0x101046e6
inc ebx
add edi, 4
cmp ebx, dword [esp + 0x28]
jb 0x10104692
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x2c]
cmp dword [ecx + 8], edx
je 0x101046db
mov dword [edx], ebp
add dword [ecx + 4], 4
jmp 0x101046e6
lea eax, [esp + 0x30]
push eax
push edx
call fcn.1003c230
mov ecx, dword [esp + 0x14]
mov esi, 1
mov ebx, dword [esp + 0x18]
inc ecx
add ebx, 0x200
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ebx
cmp ecx, 8
jb 0x10104620
push 0x20
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov ebx, dword [sym.imp.KERNEL32.dll_SetPriorityClass]
push eax
call ebx
jmp 0x10104720
xor esi, esi
mov eax, dword [esp + 0x20]
inc eax
mov dword [esp + 0x20], eax
cmp eax, 0xa
jl 0x10104592
mov ecx, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
mov eax, dword [ecx]
cmp eax, dword [ecx + 4]
pop ebx
setne al
add esp, 0x138c
ret