Function at 0x140157490
Capabilities:
Check os version

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
push rbp
push rdi
push r12
push r13
push r15
lea rbp, [rsp - 0x90]
sub rsp, 0x190
mov rax, qword [0x14041f010]
xor rax, rsp
mov qword [rbp + 0x80], rax
xor esi, esi
mov dword [rbp - 0x20], __WSAFDIsSet
lea rcx, [rbp - 0x20]
mov qword [rsp + 0x70], rsi
call qword [sym.imp.KERNEL32.dll_GetVersionExA]
mov eax, dword [rbp - 0x18]
lea r8, str._d._d
mov r9d, dword [rbp - 0x1c]
lea edx, [rsi + 0x14]
lea rcx, [0x14045b740]
mov dword [rsp + 0x20], eax
call fcn.14028ab80
mov eax, dword [rbp - 0x1c]
cmp eax, 6
jne 0x14015750b
cmp dword [rbp - 0x18], 2
jae 0x14015750d
jmp 0x140157533
jbe 0x140157517
mov dword [0x1404621c4], 1
cmp eax, 0xa
jne 0x140157527
cmp dword [rbp - 0x14], 0x4a65
jae 0x140157529
jmp 0x140157533
jbe 0x140157533
mov dword [0x140462194], 1
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
lea r8, [rsp + 0x60]
mov edx, 0x28
mov rcx, rax
call qword [sym.imp.ADVAPI32.dll_OpenProcessToken]
test eax, eax
je 0x1401575bf
lea r8, [rsp + 0x68]
xor ecx, ecx
lea rdx, str.SeSecurityPrivilege
call qword [sym.imp.ADVAPI32.dll_LookupPrivilegeValueA]
mov rcx, qword [rsp + 0x60]
test eax, eax
jne 0x140157575
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x1401575bf
mov rax, qword [rsp + 0x68]
lea r8, [rbp - 0x30]
mov qword [rsp + 0x28], rsi
mov r9d, reloc.WSOCK32.dll_recv
xor edx, edx
mov qword [rbp - 0x2c], rax
mov dword [rbp - 0x30], 1
mov dword [rbp - 0x24], 2
mov qword [rsp + 0x20], rsi
call qword [sym.imp.ADVAPI32.dll_AdjustTokenPrivileges]
mov rcx, qword [rsp + 0x60]
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
test ebx, ebx
je 0x1401575bf
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [0x140462260], 1
lea rbx, [0x140469d40]
mov eax, esi
lea r8, [0x14046a140]
mov rcx, rsi
nop dword [rax]
mov byte [rcx + rbx], al
mov byte [rcx + r8], al
lea rcx, [rcx + 1]
inc eax
cmp eax, 0x100
jl 0x1401575e0
mov edx, 0x100
mov qword [rsp + 0x1c0], r14
mov rcx, r8
call qword [sym.imp.USER32.dll_CharUpperBuffA]
mov edx, 0x100
mov rcx, rbx
call qword [sym.imp.USER32.dll_CharLowerBuffA]
lea rcx, [rsp + 0x70]
call fcn.1401dfad0
xor edx, edx
movsxd r13, eax
mov r8d, 0x158
lea rcx, [0x1404608f0]
call fcn.140002810
mov r15, qword [rsp + 0x70]
lea rax, [rsp + 0x60]
xorps xmm0, xmm0
mov qword [0x140467f88], rax
lea eax, [r13 - 1]
mov dword [0x1404608f0], r13d
movsxd r12, eax
mov edi, 1
mov qword [0x1404608f8], r15
mov dword [0x1404609e8], 1
mov qword [0x140460a08], 0xffffffffffffffff
movups xmmword [0x14046a360], xmm0
movups xmmword [0x14046a370], xmm0
movups xmmword [0x14046a380], xmm0
movups xmmword [0x14046a390], xmm0
movups xmmword [0x14046a3a0], xmm0
cmp rdi, r12
jge 0x14015777e
nop dword [rax + rax]
mov rcx, qword [r15 + rdi*8]
lea rdx, str.__startuptime
call fcn.14001d4c4
test eax, eax
jne 0x14015774d
cmp qword [0x14045b9a0], 0
jne 0x14015774d
mov rcx, qword [r15 + rdi*8 + 8]
xor edx, edx
call fcn.140321ad0
xor edx, edx
lea rcx, [0x1403be93c]
mov r14, rax
call fcn.140321ad0
mov rbx, rax
test r14, r14
je 0x14015771b
test rax, rax
je 0x14015770a
mov rdx, rax
mov rcx, r14
call fcn.140017624
mov rsi, rax
cmp dword [0x14045b3f8], 0
jne 0x14015771b
mov rcx, r14
call fcn.140005660
test rbx, rbx
je 0x140157731
cmp dword [0x14045b3f8], 0
jne 0x140157731
mov rcx, rbx
call fcn.140005660
mov qword [0x14045b9a0], rsi
test rsi, rsi
je 0x14015774b
xor edx, edx
lea rcx, str.____VIM_STARTING____
call fcn.1402beaf0
xor esi, esi
mov rcx, qword [r15 + rdi*8]
lea rdx, str.__log
call fcn.14001d4c4
test eax, eax
jne 0x140157772
mov rcx, qword [r15 + rdi*8 + 8]
lea rdx, [0x1403c27c0]
call fcn.140151df0
inc rdi
cmp rdi, r12
jl 0x1401576b0
mov ebx, 1
cmp rbx, r13
jge 0x140157813
nop dword [rax]
mov rcx, qword [r15 + rbx*8]
lea rdx, str.__clean
call fcn.14001d4c4
test eax, eax
je 0x1401577ae
inc rbx
cmp rbx, r13
jl 0x140157790
jmp 0x1401577b8
mov dword [0x140460918], 1
mov ebx, 1
nop dword [rax]
mov rcx, qword [r15 + rbx*8]
lea rdx, str.register
inc rcx
call fcn.14001d4c4
test eax, eax
je 0x1401577ee
mov rcx, qword [r15 + rbx*8]
lea rdx, str.unregister
inc rcx
call fcn.14001d4c4
test eax, eax
jne 0x1401577ff
mov rax, qword [r15 + rbx*8]
movzx ecx, byte [rax]
cmp cl, 0x2d
je 0x140157809
cmp cl, 0x2f
je 0x140157809
inc rbx
cmp rbx, r13
jl 0x1401577c0
jmp 0x140157813
mov dword [0x14045b9ac], 1
lea r13, [0x1404608f0]
mov rcx, r13
call fcn.140156230
mov rax, qword [0x140460a18]
lea r12, [0x1403b051f]
test rax, rax
je 0x14015783e
cmp byte [rax], 0
je 0x140157963
lea rcx, [0x1401cf8a0]
call fcn.1400016f4
lea rax, [0x1401cf400]
mov dword [rbp - 0x80], esi
mov qword [rbp - 0x78], rax
lea rbx, str.VIM_MESSAGES
mov rax, qword [0x14045b908]
lea rcx, [rbp - 0x80]
xorps xmm0, xmm0
mov qword [rbp - 0x68], rax
xorps xmm1, xmm1
mov qword [rbp - 0x70], 0
movdqa xmmword [rbp - 0x60], xmm0
movdqa xmmword [rbp - 0x50], xmm1
mov qword [rbp - 0x40], rbx
call qword [sym.imp.USER32.dll_RegisterClassA]
mov rax, qword [0x14045b908]
mov r9d, 0x80c80000
mov qword [rsp + 0x58], rsi
mov r8, r12
mov qword [rsp + 0x50], rax
mov rdx, rbx
mov qword [rsp + 0x48], rsi
xor ecx, ecx
mov qword [rsp + 0x40], rsi
mov dword [rsp + 0x38], 0x64
mov dword [rsp + 0x30], 0x64
mov dword [rsp + 0x28], 0x80000000
mov dword [rsp + 0x20], 0x80000000
call qword [sym.imp.USER32.dll_CreateWindowExA]
cmp dword [0x140460a14], 0
mov qword [0x14045ba00], rax
je 0x14015791f
mov r8, qword [0x140460a18]
lea r9, [0x140460a20]
mov rdx, qword [0x1404608f8]
mov rcx, r13
call fcn.140064a10
mov rcx, qword [0x14046a0e8]
call fcn.14028ad70
mov qword [0x140460a28], rax
mov rdx, qword [0x1404608f8]
mov rcx, qword [0x140460a18]
mov rdx, qword [rdx]
call fcn.140064240
mov qword [0x140460a30], rax
test rax, rax
je 0x140157963
mov rcx, rax
call fcn.1401d2260
mov rcx, qword [0x140460a30]
test rcx, rcx
je 0x140157963
cmp dword [0x14045b3f8], 0
jne 0x140157963
call fcn.140005660
mov rcx, r13
call fcn.140155ce0
mov rcx, r13
call fcn.140154310
cmp qword [0x14045b9a0], 0
je 0x14015798b
xor edx, edx
lea rcx, str.parsing_arguments
call fcn.1402beaf0
mov eax, dword [0x14046a4c0]
test eax, eax
jle 0x140157a42
cmp dword [0x140460a38], 0
jne 0x140157a12
mov edx, 1
mov ecx, 0x400
call fcn.140032b90
mov qword [0x140460a48], rax
test rax, rax
je 0x1401579ca
mov edx, 0x400
mov rcx, rax
call fcn.1401e09a0
mov r9d, recv
lea rcx, str.:set_isf___
xor r8d, r8d
xor edx, edx
call fcn.1400f0250
xor edx, edx
xor ecx, ecx
call fcn.140036510
mov r9d, recv
lea rcx, str.:set_isf
xor r8d, r8d
xor edx, edx
call fcn.1400f0250
mov rcx, qword [0x140460a48]
test rcx, rcx
je 0x140157a12
call fcn.1401d1e20
mov rbx, qword [0x14046a4d0]
mov ecx, dword [rbx + 8]
call fcn.14004c820
test rax, rax
je 0x140157a32
mov rax, qword [rax + 0x90]
test rax, rax
jne 0x140157a35
mov rax, qword [rbx]
mov qword [0x140460900], rax
mov eax, dword [0x14046a4c0]
mov dword [0x140462124], eax
cmp eax, 1
jne 0x140157a8e
cmp dword [0x140460a3c], 0
je 0x140157a8e
mov rcx, qword [0x140460900]
lea rbx, str.drop
mov rdx, rbx
call fcn.14018f7f0
cmp eax, 1
jne 0x140157a78
mov qword [0x14045b520], rbx
mov rcx, qword [0x140460a48]
test rcx, rcx
je 0x140157a8e
mov edx, 0x400
call fcn.1401e09a0
cmp qword [0x14045b9a0], 0
je 0x140157aa6
xor edx, edx
lea rcx, str.expanding_arguments
call fcn.1402beaf0
cmp dword [0x140460a40], 0
je 0x140157abe
cmp dword [0x140460a0c], 0xffffffff
jne 0x140157abe
mov dword [0x140460a0c], esi
inc dword [0x14045b478]
cmp dword [0x14045b804], 0
je 0x140157add
cmp qword [0x140460900], 0
jne 0x140157add
mov dword [0x1404609e8], esi
call fcn.1401d9ae0
cmp qword [0x14045b9a0], 0
je 0x140157afa
xor edx, edx
lea rcx, str.shell_init
call fcn.1402beaf0
mov ecx, dword [0x14045b9f8]
call fcn.14001f6cc
cmp dword [0x14045b694], 0
mov ebx, eax
je 0x140157b27
test eax, eax
jne 0x140157be9
mov dword [0x14045b564], 1
jmp 0x140157bf2
cmp dword [0x1404609e8], 0
je 0x140157be9
cmp dword [0x140423460], 0
je 0x140157b45
test ebx, ebx
jne 0x140157be9
cmp dword [0x1404609ec], 0
jne 0x140157be9
call fcn.140337a90
test eax, eax
jne 0x1401580b2
cmp dword [0x140423460], eax
jne 0x140157b7c
lea rcx, str.Vim:_Warning:_Output_is_not_to_a_terminal_n
call qword [case.0x1400407ae.0]
mov rcx, rax
call fcn.140184c10
test ebx, ebx
jne 0x140157b95
lea rcx, str.Vim:_Warning:_Input_is_not_from_a_terminal_n
call qword [case.0x1400407ae.0]
mov rcx, rax
call fcn.140184c10
call fcn.1402ac330
cmp dword [0x1404609f0], 0
je 0x140157bb8
cmp dword [0x140423460], 0
je 0x1401580fd
test ebx, ebx
je 0x1401580fd
cmp qword [0x1404695c0], 0
jne 0x140157bd1
mov edx, 1
mov ecx, 0x7d5
call fcn.1402c60f0
cmp qword [0x14045b9a0], 0
je 0x140157be9
xor edx, edx
lea rcx, str.Warning_delay
call fcn.1402beaf0
cmp dword [0x14045b564], 0
je 0x140157c2d
mov ecx, 0x200
call fcn.140005674
mov qword [0x1404608e8], rax
test rax, rax
je 0x140157c2d
mov ecx, 1
call fcn.1400177d0
mov rdx, qword [0x1404608e8]
mov rcx, rax
mov r9d, 0x200
mov r8d, 0x40
call fcn.140017980
cmp dword [0x14046a4c0], 1
jle 0x140157c63
cmp dword [0x14045b564], 0
jne 0x140157c63
cmp dword [0x1404609ec], 0
jne 0x140157c63
lea rcx, str._d_files_to_edit_n
call qword [case.0x1400407ae.0]
mov edx, dword [0x14046a4c0]
mov rcx, rax
call fcn.140001130
cmp dword [0x1404609e8], 0
lea r14, str.aleph
je 0x140157da5
cmp dword [0x14045b564], 0
jne 0x140157da5
mov rbx, qword [0x1404609f8]
test rbx, rbx
je 0x140157c95
cmp byte [rbx], 0
jne 0x140157c9c
lea rbx, str.win32
mov r9d, 1
mov dword [rsp + 0x20], esi
mov r8, rbx
lea rcx, str.term
lea edx, [r9 - 2]
call fcn.1401ce460
mov rcx, rbx
call fcn.14028ad70
mov rsi, rax
test rax, rax
je 0x140157d0e
lea rcx, str.term
call fcn.1401c2920
test eax, eax
js 0x140157d0e
movsxd rcx, eax
imul rdi, rcx, 0x58
test byte [rdi + r14 + 0x10], 0x80
je 0x140157d00
mov rcx, qword [rdi + r14 + 0x38]
test rcx, rcx
je 0x140157d00
cmp dword [0x14045b3f8], 0
jne 0x140157d00
call fcn.140005660
mov qword [rdi + r14 + 0x38], rsi
or qword [rdi + r14 + 0x10], 0x80
mov rcx, rbx
call fcn.14028ad70
mov rsi, rax
test rax, rax
je 0x140157d63
lea rcx, str.ttytype
call fcn.1401c2920
test eax, eax
js 0x140157d63
movsxd rcx, eax
imul rdi, rcx, 0x58
test byte [rdi + r14 + 0x10], 0x80
je 0x140157d55
mov rcx, qword [rdi + r14 + 0x38]
test rcx, rcx
je 0x140157d55
cmp dword [0x14045b3f8], 0
jne 0x140157d55
call fcn.140005660
mov qword [rdi + r14 + 0x38], rsi
or qword [rdi + r14 + 0x10], 0x80
mov rax, qword [0x140468780]
test rax, rax
cmovne rbx, rax
mov rcx, rbx
call fcn.1402a8660
cmp qword [0x14045b9a0], 0
mov dword [0x14045b664], 0x270f
mov dword [0x14045b660], 0x270f
je 0x140157da5
xor edx, edx
lea rcx, str.Termcap_init
call fcn.1402beaf0
call fcn.1402c5b50
call fcn.14032a0e0
cmp dword [0x140460a40], 0
je 0x140157dc6
mov rcx, qword [0x14046a5e8]
xor edx, edx
call fcn.14007ccd0
mov eax, dword [0x140420f60]
xor ecx, ecx
sub eax, dword [0x14046a240]
mov dword [0x14046a250], eax
mov dword [0x14046a25c], eax
call fcn.140245ba0
lea rcx, str.scroll
call fcn.1401c2920
test eax, eax
js 0x140157e1b
movsxd rcx, eax
imul rcx, rcx, 0x58
mov ecx, dword [rcx + r14 + 0x10]
bt rcx, 8
jb 0x140157e1b
mov r8d, dword [0x140469298]
mov edx, 4
mov ecx, eax
call fcn.1401bfa80
call fcn.140245930
lea rcx, str.window
call fcn.1401c2920
mov ebx, dword [0x140420f60]
test eax, eax
js 0x140157e48
cdqe
imul rax, rax, 0x58
mov eax, dword [rax + r14 + 0x10]
bt rax, 8
jb 0x140157e51
lea eax, [rbx - 1]
mov dword [0x140469730], eax
lea rcx, str.window
call fcn.1401c2920
test eax, eax
js 0x140157e72
lea ecx, [rbx - 1]
cdqe
movsxd rdx, ecx
imul rcx, rax, 0x58
mov qword [rcx + r14 + 0x38], rdx
call fcn.14018c200
call fcn.140126f20
cmp qword [0x14045b9a0], 0
je 0x140157e94
xor edx, edx
lea rcx, str.inits_2
call fcn.1402beaf0
mov rsi, qword [0x14046a248]
lea rbx, [0x1404437c0]
mov dword [0x14045b53c], 1
lea r15, [0x140443870]
mov dword [0x14045b54c], 1
nop dword [rax]
mov rcx, qword [rbx]
mov r14d, dword [rbx + 8]
mov qword [0x14046a248], r12
call fcn.14028ad70
mov rdi, rax
test rax, rax
je 0x140157efc
xor r9d, r9d
mov r8d, r14d
mov rdx, rax
xor ecx, ecx
call fcn.14015e6c0
cmp dword [0x14045b3f8], 0
jne 0x140157efc
mov rcx, rdi
call fcn.140005660
add rbx, 0x10
mov qword [0x14046a248], rsi
cmp rbx, r15
jl 0x140157ec0
xor edx, edx
lea ecx, [rdx + 1]
call fcn.1401304a0
cmp qword [0x14045b9a0], 0
je 0x140157f2e
xor edx, edx
lea rcx, str.init_highlight
call fcn.1402beaf0
mov r8, qword [0x140460910]
xor esi, esi
mov eax, dword [0x140460a08]
mov dword [0x14042178c], eax
test r8, r8
je 0x140157f80
mov ecx, esi
lea rdx, [0x1403bfa88]
movzx eax, byte [r8 + rcx]
inc rcx
cmp al, byte [rdx + rcx - 1]
jne 0x140157f67
cmp rcx, 5
jne 0x140157f51
jmp 0x140157f7a
lea rdx, str.DEFAULTS
mov rcx, r8
call fcn.1403a2e70
test eax, eax
jne 0x140157f80
mov dword [0x140469168], esi
movsxd rdi, dword [0x14046097c]
test edi, edi
jle 0x140158020
mov rax, qword [0x14046a618]
lea rcx, str.pre_vimrc_command_line
mov dword [rax + 0x38], esi
call qword [case.0x1400407ae.0]
xor r8d, r8d
mov rdx, rax
lea ecx, [r8 + 6]
call fcn.1402435b0
mov dword [0x14045b4b0], 0xfffffffe
mov rbx, rsi
test rdi, rdi
jle 0x140157ff0
nop word [rax + rax]
mov rcx, qword [r13 + rbx*8 + 0x90]
mov r9d, recv
xor r8d, r8d
xor edx, edx
call fcn.1400f0250
inc rbx
cmp rbx, rdi
jl 0x140157fd0
mov eax, dword [0x140420ac8]
test eax, eax
je 0x140158002
dec eax
mov dword [0x140420ac8], eax
cmp qword [0x14045b9a0], 0
mov dword [0x14045b4b0], esi
je 0x140158020
xor edx, edx
lea rcx, str.__cmd_commands
call fcn.1402beaf0
mov rcx, r13
call fcn.140152d40
xor ecx, ecx
mov qword [rsp + 0x68], rsi
call fcn.140344430
test eax, eax
jne 0x140158049
mov dword [0x140466560], 1
call fcn.1401568d0
jmp 0x14015807f
mov rax, qword gs:[0x58]
mov edx, dword [0x14045a558]
mov ecx, 8
add rcx, qword [rax]
call qword [0x14045bdc8]
xor r8d, r8d
lea r9, [rsp + 0x68]
lea rdx, [0x140343d60]
lea ecx, [r8 + 1]
call qword [0x14045bc48]
mov r14, qword [rsp + 0x1c0]
mov rcx, qword [rbp + 0x80]
xor rcx, rsp
call fcn.140001200
lea r11, [rsp + 0x190]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r13
pop r12
pop rdi
pop rbp
ret
call fcn.140169c40
test rax, rax
lea rdx, str.utf_8
lea rcx, [0x1403bedb8]
mov rbx, rax
cmovne rdx, rax
call qword [case.0x140040788.4]
mov rcx, rbx
call fcn.140032a50
lea rcx, str.Vim:_Error:_This_version_of_Vim_does_not_run_in_a_Cygwin_terminal_n
call qword [case.0x1400407ae.0]
mov rcx, rax
call fcn.140184c10
mov ecx, 1
call fcn.140013630
int3
mov ecx, 1
call fcn.140013630
int3