Function at 0x1040b30
Capabilities:
Check os version

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0xb24
mov eax, dword [0x106406c]
mov dword [ebp - 0x14], eax
mov eax, dword [0x100af94]
mov dword [ebp - 0xb1c], eax
mov ecx, dword [0x100af98]
mov dword [ebp - 0xb18], ecx
mov edx, dword [0x100af9c]
mov dword [ebp - 0xb14], edx
mov eax, dword [0x100afa0]
mov dword [ebp - 0xb10], eax
mov cx, word [0x100afa4]
mov word [ebp - 0xb0c], cx
mov edx, dword [0x100af80]
mov dword [ebp - 0x7dc], edx
mov eax, dword [0x100af84]
mov dword [ebp - 0x7d8], eax
mov ecx, dword [0x100af88]
mov dword [ebp - 0x7d4], ecx
mov edx, dword [0x100af8c]
mov dword [ebp - 0x7d0], edx
mov ax, word [0x100af90]
mov word [ebp - 0x7cc], ax
mov ecx, dword [0x100af74]
mov dword [ebp - 0x7c4], ecx
mov edx, dword [0x100af78]
mov dword [ebp - 0x7c0], edx
mov ax, word [0x100af7c]
mov word [ebp - 0x7bc], ax
mov ecx, dword [0x100af6c]
mov dword [ebp - 0x238], ecx
mov edx, dword [0x100af70]
mov dword [ebp - 0x234], edx
mov eax, dword [0x100af5c]
mov dword [ebp - 0x5a8], eax
mov ecx, dword [0x100af60]
mov dword [ebp - 0x5a4], ecx
mov edx, dword [0x100af64]
mov dword [ebp - 0x5a0], edx
mov ax, word [0x100af68]
mov word [ebp - 0x59c], ax
mov ecx, dword [0x100af4c]
mov dword [ebp - 0x378], ecx
mov edx, dword [0x100af50]
mov dword [ebp - 0x374], edx
mov eax, dword [0x100af54]
mov dword [ebp - 0x370], eax
mov ecx, dword [0x100af58]
mov dword [ebp - 0x36c], ecx
mov edx, dword [0x100af38]
mov dword [ebp - 0x390], edx
mov eax, dword [0x100af3c]
mov dword [ebp - 0x38c], eax
mov ecx, dword [0x100af40]
mov dword [ebp - 0x388], ecx
mov edx, dword [0x100af44]
mov dword [ebp - 0x384], edx
mov ax, word [0x100af48]
mov word [ebp - 0x380], ax
mov byte [ebp - 1], 0
mov word [ebp - 0x7b8], 0
mov dword [ebp - 0x220], 0
mov dword [ebp - 0x23c], 0
mov dword [ebp - 0x398], 0
mov dword [ebp - 0x228], 0
push 0x11c
push 0
lea ecx, [ebp - 0x360]
push ecx
call sub.ntdll.dll_memset
add esp, 0xc
mov dword [ebp - 0x360], 0x11c
lea edx, [ebp - 0x360]
push edx
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x1040d02
cmp dword [ebp - 0x350], 2
je 0x1040d11
push 0xa
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jmp 0x104146c
mov dword [ebp - 0xb08], 0
cmp dword [ebp + 0xc], 0
je 0x1040d2f
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 4]
mov dword [ebp - 0xb20], ecx
jmp 0x1040d3b
mov edx, dword [ebp - 0x350]
mov dword [ebp - 0xb20], edx
mov eax, dword [ebp - 0xb20]
mov dword [ebp - 0x21c], eax
cmp dword [ebp + 0xc], 0
je 0x1040db2
mov ecx, dword [ebp + 0xc]
movzx edx, word [ecx + 0x10]
mov dword [ebp - 0xb24], edx
cmp dword [ebp - 0xb24], 0
je 0x1040d77
cmp dword [ebp - 0xb24], 6
je 0x1040d85
cmp dword [ebp - 0xb24], 9
je 0x1040d93
jmp 0x1040da1
lea eax, [ebp - 0x5a6]
mov dword [ebp - 0x224], eax
jmp 0x1040db0
lea ecx, [ebp - 0x376]
mov dword [ebp - 0x224], ecx
jmp 0x1040db0
lea edx, [ebp - 0x38e]
mov dword [ebp - 0x224], edx
jmp 0x1040db0
push 0xa
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jmp 0x104146c
jmp 0x1040dbe
lea eax, [ebp - 0x5a6]
mov dword [ebp - 0x224], eax
mov dword [ebp - 0x10], 2
jmp 0x1040dd0
mov ecx, dword [ebp - 0x10]
add ecx, 1
mov dword [ebp - 0x10], ecx
push 0
push 0xff
lea edx, [ebp - 0x598]
push edx
mov eax, dword [ebp - 0x10]
push eax
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldW]
test eax, eax
je 0x1041383
lea edx, [ebp - 0x598]
push edx
push 0xff
lea eax, [ebp - 0x9e0]
push eax
call fcn.01013f8a
test eax, eax
jge 0x1040e12
jmp 0x1040dc7
mov dword [ebp - 0xc], 0
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x230], ecx
mov dword [ebp - 0x394], 0
push 0x2e
lea edx, [ebp - 0x9e0]
push edx
call fcn.01053ca2
add esp, 8
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x1040e4e
mov eax, dword [ebp - 8]
mov word [eax], 0
cmp dword [ebp - 0x21c], 2
jne 0x1040eae
mov ecx, dword [ebp - 0x224]
push ecx
lea edx, [ebp - 0x9e0]
push edx
call fcn.0101e4eb
add esp, 8
test eax, eax
jne 0x1040e82
mov eax, dword [ebp - 0x394]
or eax, 4
mov dword [ebp - 0x394], eax
jmp 0x1040eac
cmp dword [ebp + 0x10], 0
je 0x1040e8d
jmp 0x1040dc7
lea ecx, [ebp - 0x236]
push ecx
lea edx, [ebp - 0x9e0]
push edx
call fcn.0101e4eb
add esp, 8
test eax, eax
je 0x1040eac
jmp 0x1040dc7
jmp 0x1040ecd
lea eax, [ebp - 0x7c2]
push eax
lea ecx, [ebp - 0x9e0]
push ecx
call fcn.0101e4eb
add esp, 8
test eax, eax
je 0x1040ecd
jmp 0x1040dc7
cmp dword [ebp - 8], 0
je 0x10412b1
mov edx, dword [ebp - 8]
add edx, 2
mov dword [ebp - 8], edx
push 0x2e
mov eax, dword [ebp - 8]
push eax
call fcn.01053ca2
add esp, 8
mov dword [ebp - 0x9e4], eax
cmp dword [ebp - 0x9e4], 0
je 0x1040f08
mov ecx, dword [ebp - 0x9e4]
mov word [ecx], 0
lea edx, [ebp - 0x7c8]
push edx
mov eax, dword [ebp - 8]
push eax
call fcn.01041480
test eax, eax
je 0x1040f25
cmp dword [ebp - 0x7c8], 0
jge 0x1040f2a
jmp 0x1040dc7
mov ecx, dword [ebp - 0x7c8]
mov dword [ebp - 0x230], ecx
cmp dword [ebp - 0x9e4], 0
je 0x1040f4d
mov edx, dword [ebp - 0x9e4]
add edx, 2
mov dword [ebp - 8], edx
jmp 0x1040f59
mov dword [ebp - 0xc], 0
jmp 0x10410de
push 0x2e
mov eax, dword [ebp - 8]
push eax
call fcn.01053ca2
add esp, 8
mov dword [ebp - 0x9e4], eax
cmp dword [ebp - 0x9e4], 0
je 0x1040f81
mov ecx, dword [ebp - 0x9e4]
mov word [ecx], 0
lea edx, [ebp - 0x7c8]
push edx
mov eax, dword [ebp - 8]
push eax
call fcn.01041480
test eax, eax
je 0x1040f9e
cmp dword [ebp - 0x7c8], 0
jge 0x1040fa3
jmp 0x1040dc7
mov ecx, dword [ebp - 0x7c8]
mov dword [ebp - 0xc], ecx
cmp dword [ebp - 0xc], 0
je 0x1040fc0
cmp dword [ebp - 0x230], 0
jne 0x1040fc0
jmp 0x1040dc7
cmp dword [ebp - 0x9e4], 0
je 0x1040fdd
cmp dword [ebp + 0xc], 0
jne 0x1040fdd
mov edx, dword [ebp - 0x9e4]
add edx, 2
mov dword [ebp - 8], edx
jmp 0x1040fe2
jmp 0x10410de
push 0x2e
mov eax, dword [ebp - 8]
push eax
call fcn.01053ca2
add esp, 8
mov dword [ebp - 0x9e4], eax
cmp dword [ebp - 0x9e4], 0
je 0x104100a
mov ecx, dword [ebp - 0x9e4]
mov word [ecx], 0
lea edx, [ebp - 0x7c8]
push edx
mov eax, dword [ebp - 8]
push eax
call fcn.01041480
test eax, eax
je 0x1041033
cmp dword [ebp - 0x7c8], 0
jl 0x1041033
cmp dword [ebp - 0x7c8], 0xff
jle 0x1041038
jmp 0x1040dc7
mov cl, byte [ebp - 0x7c8]
mov byte [ebp - 1], cl
movzx edx, byte [ebp - 1]
test edx, edx
je 0x1041058
mov eax, dword [ebp - 0x394]
or eax, 2
mov dword [ebp - 0x394], eax
cmp dword [ebp - 0x9e4], 0
je 0x104106f
mov ecx, dword [ebp - 0x9e4]
add ecx, 2
mov dword [ebp - 8], ecx
jmp 0x1041071
jmp 0x10410de
push 0x2e
mov edx, dword [ebp - 8]
push edx
call fcn.01053ca2
add esp, 8
test eax, eax
je 0x1041088
jmp 0x1040dc7
lea eax, [ebp - 0x7c8]
push eax
mov ecx, dword [ebp - 8]
push ecx
call fcn.01041480
test eax, eax
je 0x10410b1
cmp dword [ebp - 0x7c8], 0
jl 0x10410b1
cmp dword [ebp - 0x7c8], 0xffff
jle 0x10410b6
jmp 0x1040dc7
mov dx, word [ebp - 0x7c8]
mov word [ebp - 0x7b8], dx
movzx eax, word [ebp - 0x7b8]
test eax, eax
je 0x10410de
mov ecx, dword [ebp - 0x394]
or ecx, 1
mov dword [ebp - 0x394], ecx
cmp dword [ebp + 0xc], 0
je 0x1041115
mov edx, dword [ebp + 0xc]
mov eax, dword [edx + 8]
cmp eax, dword [ebp - 0x230]
jb 0x104110b
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 8]
cmp edx, dword [ebp - 0x230]
jne 0x1041110
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 0xc]
cmp ecx, dword [ebp - 0xc]
jae 0x1041110
jmp 0x1040dc7
jmp 0x10412b1
cmp dword [ebp - 0xb08], 0
jne 0x104113e
push 0x11c
push 0
lea edx, [ebp - 0xb08]
push edx
call sub.ntdll.dll_memset
add esp, 0xc
mov dword [ebp - 0xb08], 0x11c
mov dword [ebp - 0x7b4], 0
mov dword [ebp - 0x368], 0
mov dword [ebp - 0x364], 0
mov eax, dword [ebp - 0x230]
mov dword [ebp - 0xb04], eax
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0xb00], ecx
cmp dword [ebp - 0x230], 0
je 0x10411d1
mov edx, dword [ebp - 0x7b4]
or edx, 3
mov dword [ebp - 0x7b4], edx
push 3
push 2
mov eax, dword [ebp - 0x364]
push eax
mov ecx, dword [ebp - 0x368]
push ecx
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
mov dword [ebp - 0x368], eax
mov dword [ebp - 0x364], edx
push 3
push 1
mov edx, dword [ebp - 0x364]
push edx
mov eax, dword [ebp - 0x368]
push eax
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
mov dword [ebp - 0x368], eax
mov dword [ebp - 0x364], edx
mov ecx, dword [ebp - 0x394]
and ecx, 2
je 0x104121f
mov dl, byte [ebp - 1]
mov byte [ebp - 0x9ee], dl
mov eax, dword [ebp - 0x7b4]
or eax, 0x80
mov dword [ebp - 0x7b4], eax
push 1
push 0x80
mov ecx, dword [ebp - 0x364]
push ecx
mov edx, dword [ebp - 0x368]
push edx
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
mov dword [ebp - 0x368], eax
mov dword [ebp - 0x364], edx
jmp 0x1041226
mov byte [ebp - 0x9ee], 0
mov eax, dword [ebp - 0x394]
and eax, 1
je 0x1041274
mov cx, word [ebp - 0x7b8]
mov word [ebp - 0x9f0], cx
mov edx, dword [ebp - 0x7b4]
or edx, 0x40
mov dword [ebp - 0x7b4], edx
push 6
push 0x40
mov eax, dword [ebp - 0x364]
push eax
mov ecx, dword [ebp - 0x368]
push ecx
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
mov dword [ebp - 0x368], eax
mov dword [ebp - 0x364], edx
jmp 0x104127d
mov word [ebp - 0x9f0], 0
cmp dword [ebp - 0x7b4], 0
je 0x10412b1
mov edx, dword [ebp - 0x364]
push edx
mov eax, dword [ebp - 0x368]
push eax
mov ecx, dword [ebp - 0x7b4]
push ecx
lea edx, [ebp - 0xb08]
push edx
call dword [sym.imp.KERNEL32.dll_VerifyVersionInfoW]
test eax, eax
jne 0x10412b1
jmp 0x1040dc7
mov dword [ebp - 0x22c], 0
mov eax, dword [ebp - 0x230]
cmp eax, dword [ebp - 0x220]
ja 0x10412e2
mov ecx, dword [ebp - 0x230]
cmp ecx, dword [ebp - 0x220]
jne 0x10412ee
mov edx, dword [ebp - 0xc]
cmp edx, dword [ebp - 0x23c]
jbe 0x10412ee
mov dword [ebp - 0x22c], 1
jmp 0x104131f
mov eax, dword [ebp - 0x230]
cmp eax, dword [ebp - 0x220]
jne 0x104131f
mov ecx, dword [ebp - 0xc]
cmp ecx, dword [ebp - 0x23c]
jne 0x104131f
mov edx, dword [ebp - 0x394]
cmp edx, dword [ebp - 0x398]
jb 0x104131f
mov dword [ebp - 0x22c], 1
cmp dword [ebp - 0x22c], 0
je 0x104137e
lea eax, [ebp - 0x598]
push eax
push 0xff
lea ecx, [ebp - 0x7b0]
push ecx
call fcn.01013f8a
test eax, eax
jge 0x1041353
push 0xd
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jmp 0x104146c
mov edx, dword [ebp - 0x230]
mov dword [ebp - 0x220], edx
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x23c], eax
mov ecx, dword [ebp - 0x394]
mov dword [ebp - 0x398], ecx
mov dword [ebp - 0x228], 1
jmp 0x1040dc7
cmp dword [ebp - 0x228], 0
jne 0x104139b
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jmp 0x104146c
push 0
push 0xff
lea edx, [ebp - 0x218]
push edx
push 1
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldW]
test eax, eax
jne 0x10413c0
xor eax, eax
jmp 0x104146c
push 0
lea ecx, [ebp - 0x37c]
push ecx
lea edx, [ebp - 8]
push edx
lea eax, [ebp - 0x218]
push eax
push 0xff
mov ecx, dword [ebp + 0x14]
push ecx
call fcn.010419b0
mov dword [ebp - 0x5ac], eax
cmp dword [ebp - 0x5ac], 0
jl 0x104144a
push 0
lea edx, [ebp - 0x37c]
push edx
lea eax, [ebp - 8]
push eax
push 0x1005820
mov ecx, dword [ebp - 0x37c]
push ecx
mov edx, dword [ebp - 8]
push edx
call fcn.010419b0
mov dword [ebp - 0x5ac], eax
cmp dword [ebp - 0x5ac], 0
jl 0x104144a
push 0
lea eax, [ebp - 0x37c]
push eax
push 0
lea ecx, [ebp - 0x7b0]
push ecx
mov edx, dword [ebp - 0x37c]
push edx
mov eax, dword [ebp - 8]
push eax
call fcn.010419b0
mov dword [ebp - 0x5ac], eax
cmp dword [ebp - 0x5ac], 0
jge 0x104145f
push 0xd
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jmp 0x104146c
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, 1
mov ecx, dword [ebp - 0x14]
call fcn.0101cfec
mov esp, ebp
pop ebp
ret 0x10