Function at 0x10016a49
Capabilities:
Check os version
Get common file path
Get graphical window text
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xac
push ebx
mov dword [esp + 0x3c], edx
push esi
mov dword [esp + 0x18], 0xfffffffa
mov esi, ecx
mov dword [esp + 0x20], 0x5e17ca00
push edi
mov dword [esp + 0x1c], 0xffffffee
jmp 0x10016a84
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x24], eax
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 0xc
je 0x10016a78
mov edi, dword [sym.imp.USER32.dll_GetDesktopWindow]
xor ebx, ebx
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], bl
je 0x10016aae
push ebx
push 0x1526
push 0x5f
call edi
push eax
call dword [sym.imp.USER32.dll_SetDlgItemInt]
cmp dword [esi + 0x10], ebx
jne 0x10016aba
xor al, al
jmp 0x1001725a
mov dword [esp + 0x18], 1
push 2
mov dword [esp + 0x2c], 0xc3414b58
mov dword [esp + 0x1c], 0xa
pop edx
jmp 0x10016b85
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x1c], ebx
jmp 0x10016afb
mov eax, dword [esp + 0x1c]
mov dword [esp + eax*4 + 0xa0], 0x47dc4b4e
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 3
jl 0x10016ae8
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], bl
je 0x10016b1c
push ebx
push 0x23f2
push ebx
call dword [sym.imp.OLEAUT32.dll_SafeArrayLock]
push 2
pop edx
mov dword [esp + 0x20], ebx
jmp 0x10016b7b
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x1c], ebx
jmp 0x10016b71
mov dword [esp + 0x14], edx
mov dword [esp + 0x14], ebx
jmp 0x10016b55
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], bl
je 0x10016b51
push ebx
push 0x178e
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
push 2
pop edx
inc dword [esp + 0x14]
cmp dword [esp + 0x14], edx
jle 0x10016b36
mov ecx, dword [esp + 0xa8]
mov eax, dword [esp + 0x1c]
mov dword [esp + eax*4 + 0xa0], ecx
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], edx
jle 0x10016b2c
inc dword [esp + 0x20]
cmp dword [esp + 0x20], edx
jle 0x10016b22
dec dword [esp + 0x18]
cmp dword [esp + 0x18], 0xfffffff0
jl 0x10016ada
mov dword [esp + 0x28], 0xffffffff
mov dword [esp + 0x18], 0xddbc3707
mov dword [esp + 0x20], 0xe7f737a9
mov dword [esp + 0x48], 0x8213af72
mov dword [esp + 0x24], 0x4794
mov dword [esp + 0x1c], 0xf9f7c8b1
mov dword [esp + 0x28], 0x9135
mov dword [esp + 0x14], ebx
jmp 0x10016bde
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0x4c], 0x67b8f5f4
inc dword [esp + 0x14]
cmp dword [esp + 0x14], edx
jl 0x10016bce
mov dword [esp + 0x14], ebx
jmp 0x10016bfd
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0xb0], 0xfffffffa
inc dword [esp + 0x14]
cmp dword [esp + 0x14], edx
jl 0x10016bea
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], bl
je 0x10016c17
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
inc dword [esp + 0x1c]
jne 0x10016c82
mov eax, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
cmp dword [esp + 0x4c], ebx
jne 0x10016c2f
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x48]
xor ecx, ecx
cmp eax, 1
mov eax, dword [esp + 0x4c]
setle cl
xor edx, edx
cmp ecx, eax
setge dl
imul ecx, dword [esp + 0x18], 0x67b3
mov eax, dword [esp + 0x50]
sub ecx, edx
neg ecx
sbb ecx, ecx
inc ecx
imul ecx, eax
mov eax, dword [esp + 0x18]
add eax, ecx
imul eax, dword [esp + 0x48]
test eax, eax
je 0x10016c76
cmp dword [esp + 0x24], ebx
je 0x10016c76
xor eax, eax
inc eax
jmp 0x10016c78
mov eax, ebx
cmp eax, dword [esp + 0x4c]
jl 0x10016c82
mov ecx, ebx
jmp 0x10016c85
xor ecx, ecx
inc ecx
mov eax, dword [esp + 0x4c]
sub ecx, eax
jne 0x10016c97
cmp dword [esp + 0x28], ebx
jne 0x10016c97
mov edx, ebx
jmp 0x10016c9a
xor edx, edx
inc edx
mov eax, dword [esp + 0x20]
xor ecx, ecx
cmp edx, eax
setge cl
mov dword [esp + 0x20], ecx
xor ecx, ecx
inc ecx
mov dword [esp + 0x74], ecx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x18], ebx
jmp 0x10016cd9
mov eax, dword [esp + 0x18]
mov dword [esp + eax*4 + 0xac], 0xbf506e60
inc dword [esp + 0x18]
cmp dword [esp + 0x18], ecx
jl 0x10016cc6
mov dword [esp + 0x58], ebx
jmp 0x10016d29
mov dword [esp + 0x18], 0x94fe5f36
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], bl
je 0x10016cfd
call dword [sym.imp.KERNEL32.dll_IsDebuggerPresent]
mov dword [esp + 0x18], ebx
cmp dword [esp + 0x18], ebx
jl 0x10016d25
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], bl
je 0x10016d1f
push ebx
push ebx
push 0x14ef
push ebx
call dword [sym.imp.KERNEL32.dll_VerifyVersionInfoW]
dec dword [esp + 0x18]
jns 0x10016d07
inc dword [esp + 0x58]
cmp dword [esp + 0x58], 0x16
jne 0x10016ce5
mov dword [esp + 0x6c], 0x486b6feb
mov dword [esp + 0x70], 0xffffffff
mov dword [esp + 0x30], 0x609fa85f
mov dword [esp + 0x34], 0xfb8eb5ea
mov dword [esp + 0x28], 0xffffffff
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], bl
je 0x10016d68
call dword [sym.imp.USER32.dll_GetCaretBlinkTime]
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], bl
je 0x10016d91
push ebx
call edi
push eax
push 0x2049
push 0x2290
push 0x613
push 0x25aa
push ebx
call dword [sym.imp.USER32.dll_TrackPopupMenu]
lea eax, [esp + 0x74]
push eax
lea eax, [esp + 0x70]
push eax
lea eax, [esp + 0x3c]
push eax
lea eax, [esp + 0x7c]
push eax
lea eax, [esp + 0x40]
push eax
push ebx
call fcn.100181dd
xor ecx, ecx
add esp, 0x18
inc ecx
mov dword [esp + 0x34], ecx
jmp 0x10016df4
mov dword [esp + 0x18], ebx
jmp 0x10016dd2
mov eax, dword [esp + 0x18]
mov dword [esp + eax*4 + 0x68], 0xffffffff
inc dword [esp + 0x18]
cmp dword [esp + 0x18], ecx
jl 0x10016dc2
mov dword [esp + 0x30], ebx
jmp 0x10016dea
mov eax, dword [esp + 0x30]
mov dword [esp + eax*4 + 0x68], ecx
inc dword [esp + 0x30]
cmp dword [esp + 0x30], ecx
jl 0x10016dde
dec dword [esp + 0x34]
cmp dword [esp + 0x34], 0xffffffed
jl 0x10016dbc
mov eax, dword [esp + 0x44]
mov dword [eax], ebx
mov eax, 0x2d5e48d3
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x1c], 0x52061f6
mov dword [esp + 0x1c], 3
cmp dword [esp + 0x1c], ebx
jl 0x10016e54
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + eax*4 + 0x88]
mov eax, dword [esp + 0x1c]
mov dword [esp + eax*4 + 0x88], ecx
dec dword [esp + 0x1c]
jns 0x10016e38
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], bl
je 0x10016e69
push 0x1d30
call dword [sym.imp.USER32.dll_MessageBeep]
push 0x2798
push 0x4ae8
lea eax, [esp + 0x37]
mov dword [esp + 0x20], 0x82062403
push eax
mov byte [esp + 0x3b], bl
push ebx
call fcn.100172ca
add esp, 0x10
mov dword [esp + 0x18], ebx
jmp 0x10016ea8
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], bl
je 0x10016ea4
push ebx
call fcn.100183f1
pop ecx
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 5
jl 0x10016e93
cmp dword [esi + 0x14], 0x10
jb 0x10016eb9
mov ecx, dword [esi]
jmp 0x10016ebb
mov ecx, esi
cmp dword [esi + 0x14], 0x10
mov dword [esp + 0x38], ecx
jb 0x10016ec9
mov edx, dword [esi]
jmp 0x10016ecb
mov edx, esi
mov eax, dword [esi + 0x10]
add eax, edx
cmp ecx, eax
je 0x10017119
mov dword [esp + 0x14], 8
mov dword [esp + 0x24], ebx
mov dword [esp + 0x18], ebx
jmp 0x10016efd
mov eax, dword [esp + 0x18]
mov dword [esp + eax*4 + 0x80], 4
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 2
jl 0x10016eea
push 0x6f00
push ebx
call fcn.10018187
pop ecx
pop ecx
mov dword [esp + 0x14], 3
jmp 0x10016fff
mov dword [esp + 0x18], 0x8efa97f5
mov dword [esp + 0x20], 0x9495116
mov dword [esp + 0x24], 0xffffffff
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x14]
cmp dword [esp + 0x14], ebx
jge 0x10016f5c
cmp dword [esp + 0x84], ebx
jne 0x10016f5c
mov ecx, ebx
jmp 0x10016f5f
xor ecx, ecx
inc ecx
mov eax, dword [esp + 0x14]
xor edx, edx
sub ecx, eax
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x24]
cmp eax, 0x3847d228
mov eax, dword [esp + 0x18]
setne dl
xor ecx, ecx
cmp edx, eax
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x14]
setl cl
sub edx, ecx
neg edx
sbb edx, edx
xor ecx, ecx
add edx, 0x7f39ab77
cmp edx, eax
setle cl
sub ecx, dword [esp + 0x14]
sub ecx, dword [esp + 0x14]
neg ecx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp ecx, 0x2ae8
setle al
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], eax
cmp dword [esp + 0x24], ebx
jne 0x10016fd1
cmp dword [esp + 0x18], ebx
jne 0x10016fd1
mov eax, ebx
jmp 0x10016fd4
xor eax, eax
inc eax
cmp eax, dword [esp + 0x18]
jge 0x10016ff5
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], bl
je 0x10016ffb
push 0x2395
push ebx
call edi
push eax
call dword [sym.imp.USER32.dll_GetWindowTextA]
jmp 0x10016ffb
cmp dword [esp + 0x20], ebx
jne 0x1001700a
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 8
je 0x10016f1e
mov eax, dword [esp + 0x38]
mov al, byte [eax]
cmp al, 0x30
jl 0x1001710e
cmp al, 0x39
jg 0x1001710e
mov dword [esp + 0x1c], 0x3d06ce12
mov dword [esp + 0x18], ebx
jmp 0x1001703e
mov eax, dword [esp + 0x18]
mov dword [esp + eax*4 + 0x78], 1
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 2
jl 0x1001702e
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x1c], ebx
jmp 0x100170cd
mov dword [esp + 0x14], 0x439cb61d
xor ecx, ecx
mov dword [esp + 0x28], 0x700168aa
inc ecx
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x78]
mov eax, dword [esp + 0x14]
sub ecx, eax
sub ecx, dword [esp + 0x14]
neg ecx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp ecx, 0x110e
setg al
sub eax, dword [esp + 0x14]
neg eax
sbb eax, eax
inc eax
mov dword [esp + 0x28], eax
je 0x100170a2
cmp dword [esp + 0x7c], ebx
je 0x100170a2
xor ecx, ecx
inc ecx
jmp 0x100170a4
mov ecx, ebx
mov eax, dword [esp + 0x14]
xor edx, edx
cmp ecx, eax
mov eax, dword [esp + 0x14]
setg dl
xor ecx, ecx
cmp eax, edx
setl cl
cmp ecx, 8
sbb eax, eax
neg eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 4
jg 0x10017053
lea eax, [esp + 0x38]
push eax
push 0x2e07
push ebx
push 0x600a
push 0x3bed
push 0x63c7
lea eax, [esp + 0x5c]
push eax
push 0x1aad
call fcn.10018a26
mov ecx, dword [esp + 0x58]
add esp, 0x20
inc ecx
jmp 0x10016ebb
mov eax, dword [esp + 0x44]
mov dword [eax], ebx
jmp 0x10016ab3
push 2
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x18], ebx
pop ecx
jmp 0x10017136
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0x3c], 0xffffffff
inc dword [esp + 0x14]
cmp dword [esp + 0x14], ecx
jl 0x10017126
mov dword [esp + 0x14], ebx
jmp 0x10017155
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0x98], 0xc4d1454b
inc dword [esp + 0x14]
cmp dword [esp + 0x14], ecx
jl 0x10017142
cmp dword [esp + 0x40], ebx
jne 0x10017165
mov eax, ebx
jmp 0x10017168
xor eax, eax
inc eax
mov dword [esp + 0x98], eax
xor edx, edx
mov ecx, dword [esp + 0x98]
mov eax, dword [esp + 0x40]
imul ecx, eax
mov eax, dword [esp + 0x40]
cmp ecx, eax
mov eax, dword [esp + 0x3c]
sete dl
xor ebx, ebx
cmp eax, edx
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
setne bl
sub ebx, eax
neg ebx
sbb ebx, ebx
sub ecx, dword [esp + 0x40]
inc ebx
neg ecx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp ecx, ebx
setne al
xor ebx, ebx
mov dword [esp + 0x28], eax
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], bl
je 0x100171cb
call edi
push eax
call dword [sym.imp.USER32.dll_SetFocus]
xor ecx, ecx
inc ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x28], 0x744d0289
mov dword [esp + 0x18], ebx
jmp 0x100171f0
mov eax, dword [esp + 0x18]
mov dword [esp + eax*4 + 0x54], 0x99ac7894
inc dword [esp + 0x18]
cmp dword [esp + 0x18], ecx
jl 0x100171e0
mov dword [esp + 0x14], ebx
jmp 0x1001722a
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x14]
cmp dword [esp + eax*4 + 0x54], ebx
jne 0x10017230
mov dword [esp + 0x1c], ebx
jmp 0x10017220
mov eax, dword [esp + 0x1c]
mov dword [esp + eax*4 + 0x54], 0x7cefa9d1
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], ecx
jl 0x10017210
inc dword [esp + 0x14]
cmp dword [esp + 0x14], ebx
jle 0x100171fc
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x14], ebx
jg 0x10017258
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], bl
je 0x1001724b
push ebx
call fcn.1001729f
pop ecx
inc dword [esp + 0x14]
cmp dword [esp + 0x14], ebx
jle 0x1001723a
xor ecx, ecx
inc ecx
mov al, cl
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret