Function at 0x1006621d0
Capabilities:
Write file on windows

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp, 0x108
lea rbp, [rsp + 0x80]
mov rax, qword [sym.vim.exe_NameBuff]
mov qword [rbp + 0xd0], rcx
mov dword [rbp + 0xd8], edx
mov rdx, rcx
mov rcx, qword [rax]
mov dword [rbp + 0xe0], r8d
call sub.msys_2.0.dll_strcpy
mov rax, qword [sym.vim.exe_NameBuff]
mov rcx, qword [rax]
call sym.vim.exe_add_pathsep
mov rax, qword [sym.vim.exe_NameBuff]
mov rbx, qword [rax]
mov rcx, rbx
call sub.msys_2.0.dll_strlen
mov rdx, qword [sym.vim.exe_NameBuff]
lea r9, [rbp + 0x28]
lea r8, [rbp + 0x18]
add rbx, rax
mov eax, 0x2a2a
mov ecx, 1
mov word [rbx], ax
mov byte [rbx + 2], 0
mov dword [rsp + 0x20], 0x22
call sym.vim.exe_gen_expand_wildcards
test eax, eax
je 0x100662239
mov r15d, dword [rbp + 0x18]
test r15d, r15d
je 0x100662239
lea rax, [rbp + 0x40]
mov r8d, 0xa
mov edx, 1
mov rcx, rax
mov qword [rbp - 0x30], rax
call sym.vim.exe_ga_init2
mov r14d, dword [rbp + 0x18]
mov ebx, dword [rbp + 0x40]
test r14d, r14d
jle 0x1004acb17
xor esi, esi
lea r12, [0x1006a4ef3]
lea rdi, [rbp + 0x16]
jmp 0x1004aca56
cmp byte [r15], 0x2e
jne 0x1004aca49
movzx edx, byte [r14 + r13 - 3]
mov eax, edx
and eax, 0xffffffdf
sub eax, 0x41
cmp al, 0x19
ja 0x1004aca49
movzx eax, byte [r14 + r13 - 2]
mov ecx, eax
and ecx, 0xffffffdf
sub ecx, 0x41
cmp cl, 0x19
ja 0x1004aca49
movzx ecx, byte [r14 + r13 - 1]
lea r8d, [rcx - 0x41]
cmp r8b, 0x19
jbe 0x1004ad1d8
cmp cl, 0x78
je 0x1004ad1e1
add rsi, 1
cmp dword [rbp + 0x18], esi
jle 0x1004acb17
mov rax, qword [rbp + 0x28]
mov r14, qword [rax + rsi*8]
mov rcx, r14
call sub.msys_2.0.dll_strlen
cmp eax, 4
jle 0x1004aca49
movsxd r13, eax
mov rdx, r12
lea r15, [r14 + r13 - 4]
mov rcx, r15
call sub.msys_2.0.dll_strcasecmp
test eax, eax
jne 0x1004aca01
mov r13d, 0x6e65
mov word [rbp + 0x16], r13w
test ebx, ebx
jle 0x1004ad209
mov r14, qword [rbp + 0x50]
xor r13d, r13d
mov r8d, 2
mov rdx, r14
mov rcx, rdi
call sub.msys_2.0.dll_strncmp
test eax, eax
je 0x1004aca49
add r13d, 2
add r14, 2
cmp r13d, ebx
jl 0x1004acaa0
cmp r13d, ebx
jne 0x1004aca49
mov rcx, qword [rbp - 0x30]
mov edx, 2
call sym.vim.exe_ga_grow
test eax, eax
je 0x1004ad2df
movsxd rax, dword [rbp + 0x40]
movzx ecx, byte [rbp + 0x16]
add rsi, 1
lea edx, [rax + 1]
mov dword [rbp + 0x40], edx
mov rdx, qword [rbp + 0x50]
mov byte [rdx + rax], cl
movsxd rax, dword [rbp + 0x40]
movzx ecx, byte [rbp + 0x17]
lea edx, [rax + 1]
mov dword [rbp + 0x40], edx
mov rdx, qword [rbp + 0x50]
mov byte [rdx + rax], cl
mov ebx, dword [rbp + 0x40]
cmp dword [rbp + 0x18], esi
jg 0x1004aca56
test ebx, ebx
jle 0x1004ad0ee
lea rax, [rbp + 0x23]
mov qword [rbp - 0x18], 0
mov qword [rbp - 0x40], rax
lea rax, [rbp + 0x30]
mov qword [rbp - 0x48], rax
lea rax, [rbp + 0x1c]
mov qword [rbp - 0x38], rax
movabs rax, 0x78782d73676174
mov rbx, qword [rbp - 0x18]
mov qword [rbp + 0x38], rax
mov rax, qword [rbp + 0x50]
movzx edx, byte [rax + rbx]
mov byte [rbp + 0x3d], dl
movzx eax, byte [rax + rbx + 1]
mov byte [rbp + 0x3e], al
cmp al, 0x6e
jne 0x1004acb71
cmp dl, 0x65
je 0x1004ad220
mov dword [rbp + 0x23], 0x7878782e
mov byte [rbp + 0x27], 0
mov byte [rbp + 0x24], dl
mov byte [rbp + 0x25], al
mov rcx, qword [rbp + 0xd0]
call sub.msys_2.0.dll_strlen
mov rdx, qword [rbp + 0xd0]
mov rbx, rax
mov rax, qword [sym.vim.exe_NameBuff]
lea r8, [rbx + 1]
mov rcx, qword [rax]
call sub.msys_2.0.dll_memcpy
mov rax, qword [sym.vim.exe_NameBuff]
mov rsi, qword [rax]
mov rcx, rsi
call sub.msys_2.0.dll_strlen
mov r11d, 0x2a
mov rdx, qword [rbp - 0x40]
add rsi, rax
mov rax, qword [sym.vim.exe_NameBuff]
mov dword [rsi], 0x2f2a2a2f
mov word [rsi + 4], r11w
mov rcx, qword [rax]
call fcn.10065eb30
mov r9, qword [rbp - 0x48]
mov r8, qword [rbp - 0x38]
mov dword [rsp + 0x20], 0x22
mov rdx, qword [sym.vim.exe_NameBuff]
mov ecx, 1
call sym.vim.exe_gen_expand_wildcards
test eax, eax
je 0x1004ad0c9
mov r10d, dword [rbp + 0x1c]
test r10d, r10d
je 0x1004ad0c9
mov rax, qword [sym.vim.exe_NameBuff]
mov rdx, qword [rbp + 0xd0]
lea rdi, [rbp + 0x38]
mov rcx, qword [rax]
call sub.msys_2.0.dll_strcpy
mov rax, qword [sym.vim.exe_NameBuff]
mov rcx, qword [rax]
call sym.vim.exe_add_pathsep
mov rax, qword [sym.vim.exe_NameBuff]
mov rdx, rdi
mov rcx, qword [rax]
call fcn.10065eb30
mov rax, qword [sym.vim.exe_NameBuff]
lea rdx, [0x1006a4ef8]
mov rcx, qword [rax]
call sub.msys_2.0.dll_fopen
mov qword [rbp - 0x20], rax
test rax, rax
je 0x1004ad234
lea rcx, [rbp + 0x60]
mov r8d, 0x64
mov edx, 8
mov qword [rbp + 8], rcx
call sym.vim.exe_ga_init2
mov r8d, dword [rbp + 0xd8]
test r8d, r8d
jne 0x1004ad188
mov rdx, qword [rbp + 0xd0]
xor r8d, r8d
mov r9d, 1
lea rcx, str._VIMRUNTIME_doc
call sym.vim.exe_fullpathcmp
cmp eax, 1
je 0x1004ad188
mov ecx, dword [rbp + 0x1c]
mov r12, qword [sym.vim.exe_got_int]
mov rdx, qword [rbp + 0x30]
test ecx, ecx
jle 0x1004ad1bc
mov qword [rbp - 8], 0
mov dword [rbp - 0xc], 0
mov dword [rbp], 2
mov dword [rbp - 0x10], ebx
mov rbx, qword [sym.vim.exe_IObuff]
mov eax, dword [r12]
test eax, eax
jne 0x1004acf3d
mov rax, qword [rbp - 8]
mov rcx, qword [rdx + rax*8]
lea rdi, [rax*8]
lea rdx, [0x1006a4f41]
mov qword [rbp - 0x28], rdi
call sub.msys_2.0.dll_fopen
mov r13, rax
test rax, rax
je 0x100662287
mov rdi, qword [rbp - 8]
mov rdx, qword [rbp + 0x30]
mov esi, 1
movsxd rax, dword [rbp - 0x10]
mov rdx, qword [rdx + rdi*8]
lea rdi, [rdx + rax + 1]
nop dword [rax]
mov rcx, qword [rbx]
mov r8, r13
mov edx, 0x401
call sym.vim.exe_vim_fgets
test eax, eax
jne 0x1004acf1d
mov eax, dword [r12]
test eax, eax
jne 0x1004acf1d
mov rcx, qword [rbx]
test esi, esi
jne 0x1004acea3
mov edx, 0x2a
call sym.vim.exe_vim_strchr
mov r15, rax
test rax, rax
je 0x1004ace88
nop dword [rax]
lea r14, [r15 + 1]
mov edx, 0x2a
mov rcx, r14
call sym.vim.exe_vim_strbyte
mov rsi, rax
test rax, rax
je 0x1004ace88
cmp r14, rax
jb 0x1004acdc0
mov r15, rsi
jmp 0x1004acd98
mov rax, r14
jmp 0x1004acdd6
cmp dl, 0x7c
je 0x1004acdeb
add rax, 1
cmp rsi, rax
je 0x1004acdf0
movzx edx, byte [rax]
cmp dl, 0x20
sete r8b
cmp dl, 9
sete cl
or r8b, cl
je 0x1004acdc8
cmp rsi, rax
jne 0x1004acdba
cmp qword [rbx], r15
je 0x1004ace02
movzx eax, byte [r15 - 1]
cmp al, 0x20
je 0x1004ace02
cmp al, 9
jne 0x1004acdba
movzx edx, byte [rsi + 1]
lea rcx, str.__t_n_r
call sym.vim.exe_vim_strchr
test rax, rax
je 0x1004ace94
mov byte [rsi], 0
mov rcx, qword [rbp + 8]
mov edx, 1
call sym.vim.exe_ga_grow
test eax, eax
je 0x1004ace7c
mov rcx, rdi
call sub.msys_2.0.dll_strlen
mov rdx, rsi
sub rdx, r14
lea rcx, [rdx + rax + 2]
call sym.vim.exe_alloc
mov rcx, rax
test rax, rax
je 0x1004ace7c
movsxd r8, dword [rbp + 0x60]
mov rdx, qword [rbp + 0x70]
mov r9, rdi
mov qword [rdx + r8*8], rcx
mov rax, r8
lea rdx, str._s_t_s
mov r8, r14
add eax, 1
mov dword [rbp + 0x60], eax
call sub.msys_2.0.dll_sprintf
lea rcx, [rsi + 1]
jmp 0x1004acd7f
mov dword [r12], 1
nop dword [rax]
call sym.vim.exe_line_breakcheck
xor esi, esi
jmp 0x1004acd50
cmp byte [rsi + 1], 0
jne 0x1004acdba
jmp 0x1004ace17
movzx eax, byte [rcx]
test al, al
je 0x1004acf0a
mov r8d, 2
jmp 0x1004acec5
movzx eax, byte [r14 + 1]
lea rcx, [r14 + 1]
test al, al
je 0x1004aceed
mov r14, rcx
test al, al
jns 0x1004aceb8
call sym.vim.exe_utf_ptr2len
cmp eax, 1
je 0x1004acf0a
cdqe
mov r8d, esi
lea r14, [r14 + rax - 1]
movzx eax, byte [r14 + 1]
lea rcx, [r14 + 1]
test al, al
jne 0x1004acec5
cmp r8d, 2
je 0x1004acf0a
cmp dword [rbp], 2
je 0x1004acf12
cmp dword [rbp], esi
jne 0x1006621f7
mov rcx, qword [rbx]
jmp 0x1004acd7f
xor esi, esi
cmp dword [rbp], 2
jne 0x1004acef9
mov dword [rbp], esi
mov rcx, qword [rbx]
jmp 0x1004acd7f
mov rcx, r13
call fcn.10065e4f0
add qword [rbp - 8], 1
mov ecx, dword [rbp + 0x1c]
mov rax, qword [rbp - 8]
mov rdx, qword [rbp + 0x30]
cmp ecx, eax
jg 0x1004accfb
call sym.vim.exe_FreeWild
mov eax, dword [r12]
test eax, eax
jne 0x1004ad143
mov rcx, qword [rbp + 0x70]
mov edx, dword [rbp + 0x60]
test rcx, rcx
je 0x1004acf62
call sym.vim.exe_sort_strings
mov edx, dword [rbp + 0x60]
xor esi, esi
mov edi, 1
lea r13, str.E154:_Duplicate_tag___s__in_file__s__s
cmp edx, 1
jle 0x1004ad00c
mov rax, qword [rbp + 0x70]
mov rdx, rsi
add rsi, 8
mov rdx, qword [rax + rdx]
mov rbx, qword [rax + rsi]
movzx eax, byte [rbx]
cmp al, byte [rdx]
je 0x1004acfa3
jmp 0x1004ad000
add rdx, 1
movzx eax, byte [rbx]
cmp al, byte [rdx]
jne 0x1004ad000
mov r14, rbx
add rbx, 1
cmp al, 9
jne 0x1004acf98
mov byte [r14], 0
mov rax, qword [rbp + 0x70]
mov rcx, r13
mov r15, qword [rax + rsi]
call sub.msys_intl_8.dll_libintl_gettext
mov qword [rsp + 0x28], rbx
mov edx, 0x1000
mov r8, rax
mov rax, qword [rbp + 0xd0]
mov r9, r15
mov qword [rsp + 0x20], rax
mov rax, qword [sym.vim.exe_NameBuff]
mov rcx, qword [rax]
call sym.vim.exe_vim_snprintf
mov rax, qword [sym.vim.exe_NameBuff]
mov rcx, qword [rax]
call sym.vim.exe_emsg
mov byte [r14], 9
add edi, 1
cmp edi, dword [rbp + 0x60]
jl 0x1004acf79
cmp dword [rbp], 1
je 0x1004ad29d
mov eax, dword [rbp + 0x60]
test eax, eax
jle 0x1004ad2c3
mov qword [rbp], r12
mov r13, qword [rbp - 0x20]
xor ebx, ebx
lea r15, str.help_tags_t
lea r14, [0x1006a500e]
jmp 0x1004ad055
mov rdx, r13
mov rcx, r12
add rbx, 1
call sub.msys_2.0.dll_fputs
mov eax, dword [rbp + 0x60]
cmp eax, ebx
jle 0x1004ad13d
mov rax, qword [rbp + 0x70]
mov ecx, 0xa
mov rdi, r15
mov r12, qword [rax + rbx*8]
mov rsi, r12
repe cmpsb byte [rsi], byte [rdi]
seta al
sbb al, 0
test al, al
je 0x1004ad03b
mov r8, r12
lea rdx, str._s_t_
mov rcx, r13
call sub.msys_2.0.dll_fprintf
movzx eax, byte [r12]
cmp al, 9
jne 0x1004ad0b2
jmp 0x1004ad118
movzx ecx, byte [r12]
mov rdx, r13
add r12, 1
call sub.msys_2.0.dll_putc
movzx eax, byte [r12]
cmp al, 9
je 0x1004ad118
cmp al, 0x5c
je 0x1004ad0ba
cmp al, 0x2f
jne 0x1004ad098
mov rdx, r13
mov ecx, 0x5c
call sub.msys_2.0.dll_putc
jmp 0x1004ad098
mov r12, qword [sym.vim.exe_got_int]
mov eax, dword [r12]
test eax, eax
je 0x1006621d0
add qword [rbp - 0x18], 2
mov rax, qword [rbp - 0x18]
cmp dword [rbp + 0x40], eax
jg 0x1004acb3f
mov rcx, qword [rbp - 0x30]
call sym.vim.exe_ga_clear
mov rdx, qword [rbp + 0x28]
mov ecx, dword [rbp + 0x18]
call sym.vim.exe_FreeWild
nop
add rsp, 0x108
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov r9, r13
mov r8d, 2
mov rcx, r14
add rbx, 1
mov edx, 1
call sub.msys_2.0.dll_fwrite
mov eax, dword [rbp + 0x60]
cmp eax, ebx
jg 0x1004ad055
mov r12, qword [rbp]
jmp 0x1004ad146
mov eax, dword [rbp + 0x60]
mov ecx, dword [rbp - 0xc]
test ecx, ecx
je 0x1004ad155
mov dword [r12], 0
xor ebx, ebx
test eax, eax
jle 0x1004ad171
mov rax, qword [rbp + 0x70]
mov rcx, qword [rax + rbx*8]
add rbx, 1
call sym.vim.exe_vim_free
cmp dword [rbp + 0x60], ebx
jg 0x1004ad15b
mov rcx, qword [rbp + 8]
call sym.vim.exe_ga_clear
mov rcx, qword [rbp - 0x20]
call fcn.10065e4f0
jmp 0x1004ad0dc
mov rcx, qword [rbp + 8]
mov edx, 1
call sym.vim.exe_ga_grow
test eax, eax
jne 0x1004ad255
mov r12, qword [sym.vim.exe_got_int]
mov ecx, dword [rbp + 0x1c]
mov rdx, qword [rbp + 0x30]
mov dword [r12], 1
test ecx, ecx
jg 0x1004accdb
call sym.vim.exe_FreeWild
mov eax, dword [r12]
mov dword [rbp - 0xc], eax
test eax, eax
je 0x1004ad2d3
mov eax, dword [rbp + 0x60]
jmp 0x1004ad155
cmp cl, 0x58
jne 0x1004aca49
lea r8d, [rdx - 0x41]
lea ecx, [rdx + 0x20]
cmp r8b, 0x1a
cmovb edx, ecx
lea ecx, [rax - 0x41]
cmp cl, 0x1a
mov byte [rbp + 0x16], dl
lea edx, [rax + 0x20]
cmovb eax, edx
mov byte [rbp + 0x17], al
test ebx, ebx
jg 0x1004aca99
xor r13d, r13d
cmp r13d, ebx
jne 0x1004aca49
jmp 0x1004acac7
mov byte [rbp + 0x3c], 0
mov dword [rbp + 0x23], 0x7478742e
mov byte [rbp + 0x27], 0
jmp 0x1004acb82
mov r9d, dword [rbp + 0xe0]
test r9d, r9d
je 0x100662260
mov rdx, qword [rbp + 0x30]
mov ecx, dword [rbp + 0x1c]
call sym.vim.exe_FreeWild
jmp 0x1004ad0dc
mov rcx, rdi
call sub.msys_2.0.dll_strlen
lea ecx, [rax + 0x12]
call sym.vim.exe_alloc
mov rsi, rax
test rax, rax
je 0x1004ad19e
lea rdx, str.help_tags_t_s_t1_n
mov rcx, rax
mov r8, rdi
call sub.msys_2.0.dll_sprintf
movsxd rcx, dword [rbp + 0x60]
mov rdx, qword [rbp + 0x70]
mov rax, rcx
mov qword [rdx + rcx*8], rsi
add eax, 1
mov dword [rbp + 0x60], eax
jmp 0x1004accc5
mov r9, qword [rbp - 0x20]
mov r8d, 0x1d
mov edx, 1
lea rcx, str.__TAG_FILE_ENCODING_tutf_8_t___n
call sub.msys_2.0.dll_fwrite
mov eax, dword [rbp + 0x60]
test eax, eax
jg 0x1004ad021
mov edx, dword [rbp - 0xc]
test edx, edx
je 0x1004ad171
jmp 0x1004ad14d
mov dword [rbp], 2
jmp 0x1004acf4e
mov ebx, dword [rbp + 0x40]
jmp 0x1004acb17
mov rax, qword [sym.vim.exe_NameBuff]
lea rcx, str.E151:_No_match:__s
mov r12, qword [rax]
call sub.msys_intl_8.dll_libintl_gettext
mov rcx, rax
mov rdx, r12
call sym.vim.exe_semsg
nop
jmp 0x1004ad0dc
mov rdx, qword [rbp - 0x28]
mov rax, qword [rbp + 0x30]
lea rcx, str.E670:_Mix_of_help_file_encodings_within_a_language:__s
mov r15, qword [rax + rdx]
call sub.msys_intl_8.dll_libintl_gettext
mov rcx, rax
mov rdx, r15
call sym.vim.exe_semsg
mov eax, dword [r12]
mov rcx, qword [rbx]
mov dword [r12], 1
test eax, eax
sete al
movzx eax, al
mov dword [rbp - 0xc], eax
jmp 0x1004acd7f
mov rax, qword [sym.vim.exe_NameBuff]
lea rcx, str.E151:_No_match:__s
mov r12, qword [rax]
call sub.msys_intl_8.dll_libintl_gettext
mov rcx, rax
mov rdx, r12
call sym.vim.exe_semsg
nop
jmp 0x1004ad104
mov rax, qword [sym.vim.exe_NameBuff]
lea rcx, str.E152:_Cannot_open__s_for_writing
mov r12, qword [rax]
call sub.msys_intl_8.dll_libintl_gettext
mov rcx, rax
mov rdx, r12
call sym.vim.exe_semsg
nop
jmp 0x1004ad244
mov rax, qword [rbp + 0x30]
mov rdi, qword [rbp - 8]
lea rcx, str.E153:_Unable_to_open__s_for_reading
mov r13, qword [rax + rdi*8]
call sub.msys_intl_8.dll_libintl_gettext
mov rcx, rax
mov rdx, r13
call sym.vim.exe_semsg
nop
jmp 0x1004acf25