Function at 0x1009f230
Capabilities:
Check os version

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100fe50b
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x270
mov eax, dword [0x1013c014]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x254], esi
mov edi, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
mov dword [ebp - 0x264], eax
mov dword [ebp - 0x268], edi
mov eax, dword [edi]
mov dword [edi + 4], eax
cmp dword [esi + 0x18], 3
jne 0x1009f2c0
mov dword [ebp - 0x248], 0x1011e934
cmp dword [edi + 8], eax
je 0x1009f2b1
mov dword [eax], 0x1011e934
add dword [edi + 4], 4
jmp 0x1009f2c0
lea ecx, [ebp - 0x248]
push ecx
push eax
mov ecx, edi
call fcn.10012820
cmp dword [esi + 0x18], 1
jne 0x1009f2f3
mov eax, dword [edi + 4]
mov dword [ebp - 0x248], str.TWO_COLUMNS
cmp dword [edi + 8], eax
je 0x1009f2e4
mov dword [eax], str.TWO_COLUMNS
add dword [edi + 4], 4
jmp 0x1009f2f3
lea ecx, [ebp - 0x248]
push ecx
push eax
mov ecx, edi
call fcn.10012820
cmp dword [esi + 8], 0x90
jl 0x1009f329
mov eax, dword [edi + 4]
mov dword [ebp - 0x248], str.HIGH_DPI
cmp dword [edi + 8], eax
je 0x1009f31a
mov dword [eax], str.HIGH_DPI
add dword [edi + 4], 4
jmp 0x1009f329
lea ecx, [ebp - 0x248]
push ecx
push eax
mov ecx, edi
call fcn.10012820
mov eax, dword [esi + 8]
cmp eax, 0xf0
jl 0x1009f358
mov eax, dword [edi + 4]
mov dword [ebp - 0x248], str.240_DPI
cmp dword [edi + 8], eax
je 0x1009f416
mov dword [eax], str.240_DPI
add dword [edi + 4], 4
jmp 0x1009f425
cmp eax, 0xd8
jl 0x1009f384
mov eax, dword [edi + 4]
mov dword [ebp - 0x248], str.216_DPI
cmp dword [edi + 8], eax
je 0x1009f416
mov dword [eax], str.216_DPI
add dword [edi + 4], 4
jmp 0x1009f425
cmp eax, 0xc0
jl 0x1009f3a9
mov eax, dword [edi + 4]
mov dword [ebp - 0x248], str.192_DPI
cmp dword [edi + 8], eax
je 0x1009f416
mov dword [eax], str.192_DPI
add dword [edi + 4], 4
jmp 0x1009f425
cmp eax, 0xa8
jl 0x1009f3ce
mov eax, dword [edi + 4]
mov dword [ebp - 0x248], str.168_DPI
cmp dword [edi + 8], eax
je 0x1009f416
mov dword [eax], str.168_DPI
add dword [edi + 4], 4
jmp 0x1009f425
cmp eax, 0x90
jl 0x1009f3f3
mov eax, dword [edi + 4]
mov dword [ebp - 0x248], str.144_DPI
cmp dword [edi + 8], eax
je 0x1009f416
mov dword [eax], str.144_DPI
add dword [edi + 4], 4
jmp 0x1009f425
cmp eax, 0x78
jl 0x1009f425
mov eax, dword [edi + 4]
mov dword [ebp - 0x248], str.120_DPI
cmp dword [edi + 8], eax
je 0x1009f416
mov dword [eax], str.120_DPI
add dword [edi + 4], 4
jmp 0x1009f425
lea ecx, [ebp - 0x248]
push ecx
push eax
mov ecx, edi
call fcn.10012820
cmp byte [esi + 0x20], 0
jne 0x1009f4e0
mov cx, word [0x10159320]
test cx, cx
jne 0x1009f45a
call dword [sym.imp.KERNEL32.dll_GetVersion]
mov ecx, eax
movzx eax, al
shr ecx, 8
movzx ecx, cl
shl ax, 8
or cx, ax
mov word [0x10159320], cx
mov eax, 0x602
cmp cx, ax
jb 0x1009f50d
mov esi, dword [0x1014e914]
cmp dword [esi], 0
je 0x1009f50d
cmp dword [esi + 4], 1
jne 0x1009f490
push str.EnableTouch
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x1009f49a
add esi, 0x60
cmp dword [esi], 0
jne 0x1009f477
jmp 0x1009f50d
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
cmp word [esi + 0x38], 3
jne 0x1009f4b9
cmp dword [esi + 0x40], 1
mov byte [ebp - 0x24d], 1
je 0x1009f4c0
mov byte [ebp - 0x24d], 0
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
cmp byte [ebp - 0x24d], 0
je 0x1009f50d
push 0x5e
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test al, 1
je 0x1009f50d
mov eax, dword [edi + 4]
mov dword [ebp - 0x248], str.TOUCH_ENABLED
cmp dword [edi + 8], eax
je 0x1009f4fe
mov dword [eax], str.TOUCH_ENABLED
add dword [edi + 4], 4
jmp 0x1009f50d
lea ecx, [ebp - 0x248]
push ecx
push eax
mov ecx, edi
call fcn.10012820
mov esi, dword [0x1014e914]
cmp dword [esi], 0
je 0x1009f59e
nop dword [eax]
mov eax, dword [esi + 4]
cmp eax, 2
je 0x1009f537
cmp eax, 3
je 0x1009f537
cmp eax, 4
je 0x1009f537
cmp eax, 5
jne 0x1009f54a
push str.SearchBox
push dword [esi]
call fcn.100dc721
add esp, 8
test eax, eax
je 0x1009f554
add esi, 0x60
cmp dword [esi], 0
jne 0x1009f520
jmp 0x1009f59e
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
mov esi, dword [esi + 0x40]
push 0x10158d3c
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
test esi, esi
je 0x1009f59e
mov eax, dword [edi + 4]
mov dword [ebp - 0x248], str.SEARCHBOX
cmp dword [edi + 8], eax
je 0x1009f58f
mov dword [eax], str.SEARCHBOX
add dword [edi + 4], 4
jmp 0x1009f59e
lea ecx, [ebp - 0x248]
push ecx
push eax
mov ecx, edi
call fcn.10012820
mov edi, dword [ebp - 0x254]
mov esi, dword [edi + 0x30]
mov ecx, dword [edi + 0x34]
mov dword [ebp - 0x25c], esi
cmp esi, ecx
je 0x1009f77c
cmp dword [esi + 4], 0xfffffffe
jne 0x1009f5c8
cmp dword [esi + 0x14], 0xffffffff
je 0x1009f65d
mov ecx, dword [ebp - 0x264]
lea eax, [ebp - 0x248]
push esi
push eax
call fcn.100a1f30
cmp dword [esi + 4], 0
mov eax, dword [ebp - 0x248]
mov ecx, dword [ebp - 0x264]
jne 0x1009f64a
cmp eax, dword [ecx]
je 0x1009f645
mov eax, dword [eax + 0x14]
mov ecx, 0x1011e930
nop dword [eax]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x1009f632
test dx, dx
je 0x1009f622
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x1009f632
add eax, 4
add ecx, 4
test dx, dx
jne 0x1009f600
xor eax, eax
mov dword [ebp - 4], 0xffffffff
test eax, eax
sete al
jmp 0x1009f65a
sbb eax, eax
mov dword [ebp - 4], 0xffffffff
or eax, 1
test eax, eax
sete al
jmp 0x1009f65a
mov al, byte [esi + 0x18]
jmp 0x1009f65a
cmp eax, dword [ecx]
jne 0x1009f658
cmp byte [esi + 0x18], 0
jne 0x1009f658
xor al, al
jmp 0x1009f65a
mov al, 1
mov byte [esi + 0x21], al
mov ecx, dword [edi + 0x34]
add esi, 0x28
cmp esi, ecx
jne 0x1009f5b8
mov esi, dword [edi + 0x30]
mov dword [ebp - 0x25c], esi
cmp esi, ecx
je 0x1009f77c
lea edi, [esi + 0x28]
mov edx, ecx
mov dword [ebp - 0x260], edi
nop word [eax + eax]
cmp dword [edi - 0x24], 0xfffffffe
mov ecx, edx
jne 0x1009f755
mov eax, dword [ebp - 0x260]
xor ecx, ecx
xor edi, edi
mov dword [ebp - 0x248], ecx
cmp eax, edx
je 0x1009f702
mov ecx, dword [ebp - 0x254]
mov esi, eax
mov edx, dword [ecx + 0x34]
nop dword [eax + eax]
cmp dword [eax + 4], 0xfffffffe
je 0x1009f6f5
mov ecx, dword [eax + 0x14]
cmp ecx, dword [esi - 0x14]
jne 0x1009f6f5
cmp byte [eax + 0x21], 0
lea ecx, [edi + 1]
cmove ecx, edi
cmp dword [ebp - 0x248], 0
mov edi, ecx
mov dword [ebp - 0x258], ecx
jne 0x1009f6f5
cmp byte [eax + 0x18], 0
je 0x1009f6f5
mov dword [ebp - 0x248], eax
add eax, 0x28
cmp eax, edx
jne 0x1009f6c0
mov esi, dword [ebp - 0x25c]
cmp edi, 1
mov ecx, edx
mov edi, dword [ebp - 0x260]
je 0x1009f755
mov eax, edi
cmp edi, edx
je 0x1009f755
mov esi, dword [ebp - 0x248]
nop dword [eax + eax]
cmp dword [eax + 4], 0xfffffffe
je 0x1009f73f
mov ecx, dword [eax + 0x14]
cmp ecx, dword [edi - 0x14]
jne 0x1009f73f
test esi, esi
mov ecx, eax
cmovne ecx, esi
mov esi, ecx
cmp esi, eax
sete cl
mov byte [eax + 0x21], cl
mov ecx, dword [ebp - 0x254]
add eax, 0x28
mov ecx, dword [ecx + 0x34]
cmp eax, ecx
jne 0x1009f720
mov esi, dword [ebp - 0x25c]
add esi, 0x28
add edi, 0x28
mov dword [ebp - 0x25c], esi
mov edx, ecx
mov dword [ebp - 0x260], edi
cmp esi, ecx
jne 0x1009f690
mov eax, dword [ebp - 0x254]
mov esi, dword [eax + 0x30]
jmp 0x1009f782
mov eax, dword [ebp - 0x254]
cmp esi, ecx
je 0x1009fd05
lea edi, [esi + 0x24]
mov dword [ebp - 0x25c], edi
cmp dword [edi - 0x20], 0xfffffffe
je 0x1009fcf0
mov eax, dword [edi - 0x14]
mov dword [ebp - 0x258], eax
cmp dword [eax - 0xc], 0
je 0x1009f7e2
mov eax, dword [ebp - 0x268]
xor edx, edx
mov ecx, dword [eax]
mov edi, dword [eax + 4]
mov eax, edi
sub eax, ecx
sar eax, 2
cmp ecx, edi
push eax
cmovne edx, ecx
mov ecx, dword [ebp - 0x258]
call fcn.100b30d0
mov edi, dword [ebp - 0x25c]
add esp, 4
test eax, eax
jne 0x1009f7e2
xor al, al
jmp 0x1009f7e4
mov al, 1
mov ecx, dword [ebp - 0x264]
mov byte [edi - 4], al
xor eax, eax
mov dword [ebp - 0x248], eax
lea eax, [ebp - 0x260]
push esi
push eax
call fcn.100a1f30
mov ecx, dword [ebp - 0x264]
mov eax, dword [ebp - 0x260]
cmp eax, dword [ecx]
je 0x1009f81d
add eax, 0x14
mov dword [ebp - 0x248], eax
jmp 0x1009f81f
xor eax, eax
cmp dword [edi - 0x20], 0
jne 0x1009f8ed
mov ecx, edi
call fcn.10022f70
cmp dword [edi - 0x10], 0xffffffff
jne 0x1009fcb7
cmp byte [edi - 4], 0
jne 0x1009f880
mov eax, dword [edi - 8]
mov ecx, 0x1011e930
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x1009f8c9
test dx, dx
je 0x1009f8b3
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x1009f8c9
add eax, 4
add ecx, 4
test dx, dx
jne 0x1009f848
xor eax, eax
mov dword [ebp - 4], 0xffffffff
test eax, eax
sete al
mov byte [edi - 3], al
jmp 0x1009fcb7
mov eax, dword [ebp - 0x248]
test eax, eax
je 0x1009f8e2
mov eax, dword [eax]
mov ecx, 0x1011e930
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x1009f8c9
test dx, dx
je 0x1009f8b3
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x1009f8c9
add eax, 4
add ecx, 4
test dx, dx
jne 0x1009f891
xor eax, eax
mov dword [ebp - 4], 0xffffffff
test eax, eax
sete al
mov byte [edi - 3], al
jmp 0x1009fcb7
sbb eax, eax
mov dword [ebp - 4], 0xffffffff
or eax, 1
test eax, eax
sete al
mov byte [edi - 3], al
jmp 0x1009fcb7
mov al, byte [edi - 0xc]
mov byte [edi - 3], al
jmp 0x1009fcb7
cmp dword [edi - 0x10], 0xffffffff
jne 0x1009f90b
cmp byte [edi - 4], 0
je 0x1009f904
test eax, eax
je 0x1009f904
mov cl, 1
mov byte [edi - 3], cl
jmp 0x1009f90e
xor cl, cl
mov byte [edi - 3], cl
jmp 0x1009f90e
mov cl, byte [edi - 3]
test cl, cl
je 0x1009f9b0
test eax, eax
je 0x1009f9b0
mov edx, dword [eax]
mov ecx, dword [edi]
sub ecx, 0x10
mov dword [ebp - 0x24c], ecx
lea eax, [edx - 0x10]
mov dword [ebp - 0x258], eax
cmp eax, ecx
je 0x1009fa3b
lea eax, [ecx + 0xc]
mov dword [ebp - 0x248], eax
mov eax, dword [eax]
shr eax, 0x1f
test al, al
jne 0x1009fa30
mov eax, dword [edx - 0x10]
cmp eax, dword [ecx]
jne 0x1009fa30
mov ecx, dword [ebp - 0x258]
call fcn.10021e50
mov dword [ebp - 0x258], eax
mov dword [ebp - 4], 3
or ecx, 0xffffffff
mov edx, dword [ebp - 0x248]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x1009fa22
mov eax, dword [ebp - 0x24c]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x258]
add eax, 0x10
mov dword [ebp - 4], 0xffffffff
mov dword [edi], eax
jmp 0x1009fa3b
mov edx, dword [edi - 8]
mov ecx, dword [edi]
sub ecx, 0x10
mov dword [ebp - 0x248], ecx
lea eax, [edx - 0x10]
mov dword [ebp - 0x24c], eax
cmp eax, ecx
je 0x1009fa3b
lea eax, [ecx + 0xc]
mov dword [ebp - 0x258], eax
mov eax, dword [eax]
shr eax, 0x1f
test al, al
jne 0x1009fa30
mov eax, dword [edx - 0x10]
cmp eax, dword [ecx]
jne 0x1009fa30
mov ecx, dword [ebp - 0x24c]
call fcn.10021e50
mov dword [ebp - 0x24c], eax
mov dword [ebp - 4], 4
or ecx, 0xffffffff
mov edx, dword [ebp - 0x258]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x1009fa22
mov eax, dword [ebp - 0x248]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x24c]
add eax, 0x10
mov dword [ebp - 4], 0xffffffff
mov dword [edi], eax
jmp 0x1009fa3b
push dword [edx - 0xc]
mov ecx, edi
push edx
call fcn.10021eb0
cmp byte [ebx + 0x10], 0
je 0x1009fcb7
mov eax, dword [edi - 0x20]
cmp eax, 4
jne 0x1009fc79
mov ecx, dword [edi]
cmp dword [ecx - 0xc], 0
jne 0x1009fa6c
push 1
push 0x1011e918
mov ecx, edi
call fcn.10021eb0
jmp 0x1009fcb7
mov edi, ecx
lea edx, [edi + 2]
mov ax, word [edi]
add edi, 2
test ax, ax
jne 0x1009fa71
sub edi, edx
sar edi, 1
cmp edi, 0x103
jle 0x1009fa8f
mov edi, 0x103
jmp 0x1009fa93
test edi, edi
jle 0x1009faa7
mov eax, 0x2400
mov edx, 0x3ff
add ax, word [ecx + edi*2]
cmp ax, dx
ja 0x1009faa7
dec edi
add edi, edi
lea eax, [ebp - 0x220]
push edi
push ecx
push eax
call fcn.100d7080
add esp, 0xc
xor eax, eax
mov word [ebp + edi - 0x220], ax
lea eax, [ebp - 0x220]
push 0x104
push eax
call dword [sym.imp.SHELL32.dll_DoEnvironmentSubstW]
push 0
push 0
lea edx, [ebp - 0x220]
xor ecx, ecx
call fcn.100b00e0
add esp, 8
mov dword [ebp - 0x24c], eax
test eax, eax
je 0x1009fd27
lea eax, [ebp - 0x244]
mov dword [ebp - 0x224], 0
push eax
xorps xmm0, xmm0
lea eax, [ebp - 0x220]
push 0
push eax
movups xmmword [ebp - 0x244], xmm0
movups xmmword [ebp - 0x234], xmm0
call dword [sym.imp.KERNEL32.dll_GetFileAttributesExW]
mov ecx, dword [ebp - 0x254]
mov edi, dword [ebp - 0x25c]
mov eax, dword [ecx + 0x2758]
sub eax, dword [ecx + 0x2754]
sar eax, 4
push eax
push 0x1011ea0c
push edi
call fcn.10020290
add esp, 0xc
mov dword [ebp - 4], 5
call fcn.100215d0
mov ecx, eax
test ecx, ecx
je 0x1009fd80
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x274], eax
mov dword [ebp - 4], 6
lea ecx, [ebp - 0x220]
mov eax, dword [ebp - 0x24c]
lea edx, [ecx + 2]
mov dword [ebp - 0x278], eax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1009fb95
sub ecx, edx
lea eax, [ebp - 0x220]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x274]
call fcn.10021eb0
mov eax, dword [ebp - 0x230]
mov dword [ebp - 0x258], eax
mov dword [ebp - 0x270], eax
mov eax, dword [ebp - 0x22c]
mov dword [ebp - 0x248], eax
mov dword [ebp - 0x26c], eax
mov eax, dword [ebp - 0x254]
mov ecx, dword [eax + 0x2758]
mov dword [ebp - 0x24c], ecx
cmp dword [eax + 0x275c], ecx
je 0x1009fc38
mov eax, dword [ebp - 0x278]
mov dword [ecx], eax
mov ecx, dword [ebp - 0x274]
add ecx, 0xfffffff0
call fcn.10021e50
mov ecx, dword [ebp - 0x24c]
add eax, 0x10
mov dword [ecx + 4], eax
mov eax, dword [ebp - 0x258]
mov dword [ecx + 8], eax
mov eax, dword [ebp - 0x248]
mov dword [ecx + 0xc], eax
mov eax, dword [ebp - 0x254]
add dword [eax + 0x2758], 0x10
jmp 0x1009fc4b
lea edx, [ebp - 0x278]
push edx
push ecx
lea ecx, [eax + 0x2754]
call fcn.100a2a30
mov edx, dword [ebp - 0x274]
add edx, 0xfffffff0
mov dword [ebp - 4], 7
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1009fc70
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
jmp 0x1009fcb7
cmp eax, 3
jne 0x1009fcb7
push 0x10
lea eax, [ebp - 0x27c]
push eax
push dword [edi]
call fcn.100df96d
mov ecx, eax
add esp, 0xc
shr ecx, 0x10
movzx edx, cl
movzx ecx, al
and eax, 0xff00
shl ecx, 0x10
or edx, ecx
or edx, eax
push edx
push str._06X
push edi
call fcn.10020290
add esp, 0xc
cmp byte [edi - 3], 0
je 0x1009fcea
mov eax, dword [ebp - 0x268]
mov edx, dword [esi]
mov dword [ebp - 0x24c], edx
mov ecx, dword [eax + 4]
cmp dword [eax + 8], ecx
je 0x1009fcdb
mov dword [ecx], edx
add dword [eax + 4], 4
jmp 0x1009fcea
lea edx, [ebp - 0x24c]
push edx
push ecx
mov ecx, eax
call fcn.10012820
mov eax, dword [ebp - 0x254]
add esi, 0x28
add edi, 0x28
mov dword [ebp - 0x25c], edi
cmp esi, dword [eax + 0x34]
jne 0x1009f793
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.100d4906
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0xc
mov edx, 0xbc9
lea ecx, [ebp - 0x24c]
call fcn.100aedf0
push 0x1010ca30
lea ecx, [ebp - 0x220]
push ecx
push dword [eax]
push 0x400
push 0x1014b638
call fcn.100a4830
mov edx, dword [ebp - 0x24c]
add esp, 0x14
add edx, 0xfffffff0
mov dword [ebp - 4], 8
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1009fd7c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor al, al
jmp 0x1009fd07
push 0x80004005
call fcn.10013970
int3