Function at 0x1005ce910
Capabilities:
Get file attributes
Write file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x158
mov rbx, rcx
call sym.vim.exe_check_restricted
test eax, eax
je 0x1005ce948
add rsp, 0x158
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
call sym.vim.exe_check_secure
test eax, eax
jne 0x1005ce92f
call sym.vim.exe_in_vim9script
test eax, eax
jne 0x1005ce9cd
lea rdx, str.term_dumpwrite__
mov rcx, rbx
call fcn.1005c6170
test rax, rax
je 0x1005ce92f
mov rax, qword [rax + 0x2470]
mov rcx, qword [sym.vim.exe_e_job_already_finished]
cmp qword [rax + 8], 0
mov qword [rsp + 0x30], rax
je 0x1005cf098
mov eax, dword [rbx + 0x20]
test eax, eax
je 0x1005cea0e
cmp eax, 0xc
jne 0x1005cf091
mov r12, qword [rbx + 0x28]
test r12, r12
je 0x1005cea0e
lea rdx, str.rows
mov rcx, r12
call sym.vim.exe_dict_get_number
lea rdx, [0x1006d8c7f]
mov rcx, r12
mov dword [rsp + 0x48], eax
call sym.vim.exe_dict_get_number
mov dword [rsp + 0x3c], eax
jmp 0x1005cea1e
xor edx, edx
mov rcx, rbx
call sym.vim.exe_check_for_buffer_arg
test eax, eax
je 0x1005ce92f
mov edx, 1
mov rcx, rbx
call sym.vim.exe_check_for_string_arg
test eax, eax
je 0x1005ce92f
mov edx, 2
mov rcx, rbx
call sym.vim.exe_check_for_opt_dict_arg
test eax, eax
jne 0x1005ce95a
jmp 0x1005ce92f
mov dword [rsp + 0x3c], 0
mov dword [rsp + 0x48], 0
lea rcx, [rbx + 0x10]
call sym.vim.exe_tv_get_string_chk
mov r13, rax
test rax, rax
je 0x1005ce92f
lea rdx, [rsp + 0xd0]
mov rcx, rax
call sub.msys_2.0.dll_stat
test eax, eax
jns 0x10067acef
cmp byte [r13], 0
je 0x10067ad13
lea rdx, [0x1006d8c8f]
mov rcx, r13
call sub.msys_2.0.dll_fopen
mov r12, rax
test rax, rax
je 0x10067ad0c
mov qword [rsp + 0x70], 0
mov rdi, qword [rsp + 0x30]
mov qword [rsp + 0x90], 0
mov qword [rsp + 0x78], 0
mov qword [rsp + 0x80], 0
mov qword [rsp + 0x88], 0
mov dword [rsp + 0x98], 0
mov byte [rsp + 0x90], 0xa
mov byte [rsp + 0x95], 0xc
mov rcx, qword [rdi + 8]
call sym.vim.exe_vterm_obtain_screen
mov rcx, qword [rdi + 8]
mov edi, 0
mov qword [rsp + 0x40], rax
call sym.vim.exe_vterm_obtain_state
lea rdx, [rsp + 0x5c]
mov rcx, rax
call sym.vim.exe_vterm_state_get_cursorpos
mov eax, dword [rsp + 0x48]
mov dword [rsp + 0x38], 0
test eax, eax
sete byte [rsp + 0x4f]
js 0x1005ced7f
nop dword [rax]
mov rax, qword [rsp + 0x30]
mov esi, dword [rsp + 0x38]
cmp dword [rax + 0x68], esi
jle 0x1005ced7f
mov eax, dword [rsp + 0x3c]
mov r13d, 0
mov esi, 0
test eax, eax
sete byte [rsp + 0x4e]
js 0x1005ced54
nop
mov rax, qword [rsp + 0x30]
cmp dword [rax + 0x6c], esi
jle 0x1005ced3d
xor r14d, r14d
cmp dword [rsp + 0x60], esi
jne 0x1005ceb66
xor r14d, r14d
mov eax, dword [rsp + 0x38]
cmp dword [rsp + 0x5c], eax
sete r14b
mov edx, dword [rsp + 0x38]
mov rax, rsi
mov rcx, qword [rsp + 0x40]
lea rbx, [rsp + 0xa0]
shl rax, 0x20
mov r8, rbx
or rdx, rax
call sym.vim.exe_vterm_screen_get_cell
test eax, eax
je 0x1005ceeb0
mov ecx, dword [rsp + 0xa0]
xor eax, eax
mov ebp, 1
lea r8, [rsp + 0x70]
mov r15d, dword [r8 + rax*4]
test ecx, ecx
sete dl
test r15d, r15d
sete r9b
or edx, r9d
test rax, rax
je 0x1005cebd8
cmp ecx, r15d
cmovne ebp, edi
test dl, dl
jne 0x1005cebef
add rax, 1
cmp rax, 6
je 0x1005cebef
mov ecx, dword [rbx + rax*4]
jmp 0x1005ceba4
test ecx, ecx
jne 0x1005ced90
test r15d, r15d
je 0x1005cebef
cmp r15d, 0x20
jne 0x1005cf0b8
mov ecx, dword [rsp + 0xbc]
xor r15d, r15d
call fcn.1005c6cc0
mov ecx, dword [rsp + 0x8c]
mov r8d, eax
call fcn.1005c6cc0
cmp r8d, eax
je 0x1005cf000
test ebp, ebp
je 0x1005cec2f
movzx eax, byte [rsp + 0xb8]
cmp al, byte [rsp + 0x88]
je 0x1005cefe8
mov ebp, r15d
xor ebp, 1
and ebp, 1
test r13d, r13d
je 0x1005cec4f
mov r8d, r13d
lea rdx, [0x1006d8c92]
mov rcx, r12
call sub.msys_2.0.dll_fprintf
test r14d, r14d
lea rax, [0x1006d8c6c]
lea rcx, [0x1006d8c6a]
mov r9, r12
cmove rcx, rax
mov r8d, 1
mov edx, 1
call sub.msys_2.0.dll_fwrite
mov ecx, dword [rsp + 0xa0]
test ecx, ecx
jne 0x1005cede0
mov rdx, r12
mov ecx, 0x20
call sub.msys_2.0.dll_fputc
movzx eax, byte [rsp + 0xb8]
cmp byte [rsp + 0x88], al
jne 0x1005ceca9
test bpl, bpl
je 0x1005cecdc
mov rdx, r12
cmp al, 2
je 0x1005cef10
mov ecx, 0x2b
call sub.msys_2.0.dll_fputc
test r15d, r15d
je 0x1005cee28
mov rdx, r12
mov ecx, 0x26
call sub.msys_2.0.dll_fputc
movzx eax, byte [rsp + 0xb8]
mov rdx, qword [rsp + 0xc0]
xor r13d, r13d
movdqa xmm0, xmmword [rsp + 0xa0]
movdqa xmm1, xmmword [rsp + 0xb0]
mov qword [rsp + 0x90], rdx
mov edx, dword [rsp + 0xc8]
movaps xmmword [rsp + 0x70], xmm0
mov dword [rsp + 0x98], edx
movaps xmmword [rsp + 0x80], xmm1
cmp al, 2
sete al
movzx eax, al
lea esi, [rsi + rax + 1]
cmp esi, dword [rsp + 0x3c]
jl 0x1005ceb40
cmp byte [rsp + 0x4e], 0
jne 0x1005ceb40
test r13d, r13d
je 0x1005ced54
mov r8d, r13d
lea rdx, [0x1006d8c92]
mov rcx, r12
call sub.msys_2.0.dll_fprintf
mov rdx, r12
mov ecx, 0xa
call sub.msys_2.0.dll_fputc
add dword [rsp + 0x38], 1
mov eax, dword [rsp + 0x38]
cmp eax, dword [rsp + 0x48]
jl 0x1005ceb10
cmp byte [rsp + 0x4f], 0
jne 0x1005ceb10
mov rcx, r12
call fcn.100672bf0
jmp 0x1005ce92f
test r15d, r15d
je 0x1005ceda8
cmp ecx, r15d
je 0x1005cebc2
xor ebp, ebp
jmp 0x1005cebc6
cmp ecx, 0x20
je 0x1005cebef
mov ecx, dword [rsp + 0x8c]
call fcn.1005c6cc0
mov ecx, dword [rsp + 0xbc]
mov r8d, eax
call fcn.1005c6cc0
cmp r8d, eax
je 0x1005cf070
mov ebp, 1
jmp 0x1005cec38
lea r14, [rsp + 0xb4]
lea r13, [rsp + 0x66]
mov rdx, r13
call sym.vim.exe_utf_char2bytes
mov r9, r12
mov r8d, 1
mov rcx, r13
movsxd rdx, eax
call sub.msys_2.0.dll_fwrite
cmp rbx, r14
je 0x1005cec93
mov ecx, dword [rbx + 4]
add rbx, 4
test ecx, ecx
jne 0x1005ceded
jmp 0x1005cec93
mov ecx, dword [rsp + 0xbc]
call fcn.1005c6cc0
lea rdx, [0x1006d8a9c]
mov rcx, r12
mov r8d, eax
call sub.msys_2.0.dll_fprintf
lea rdx, [rsp + 0x90]
lea rcx, [rsp + 0xc0]
call sym.vim.exe_vterm_color_is_equal
mov rdx, r12
test eax, eax
je 0x1005cef88
mov ecx, 0x26
call sub.msys_2.0.dll_fputc
lea rdx, [rsp + 0x95]
lea rcx, [rsp + 0xc5]
call sym.vim.exe_vterm_color_is_equal
mov rdx, r12
mov ebx, eax
test eax, eax
je 0x1005cef20
mov ecx, 0x26
call sub.msys_2.0.dll_fputc
movzx eax, byte [rsp + 0xb8]
jmp 0x1005cecdc
mov qword [rsp + 0xc0], 0
xor ecx, ecx
mov qword [rsp + 0xa0], 0
mov qword [rsp + 0xa8], 0
mov qword [rsp + 0xb0], 0
mov qword [rsp + 0xb8], 0
mov dword [rsp + 0xc8], 0
mov byte [rsp + 0xc0], 0xa
mov byte [rsp + 0xc5], 0xc
jmp 0x1005ceb98
mov ecx, 0x2a
call sub.msys_2.0.dll_fputc
jmp 0x1005cecbe
mov ecx, 0x23
call sub.msys_2.0.dll_fputc
movzx eax, byte [rsp + 0xc5]
test al, 1
je 0x1005cf048
movzx ebx, byte [rsp + 0xc9]
add ebx, 1
movzx eax, byte [rsp + 0xc8]
mov dword [rsp + 0x28], ebx
mov rcx, r12
lea rdx, str._02x_02x_02x_d
movzx r9d, byte [rsp + 0xc7]
movzx r8d, byte [rsp + 0xc6]
mov dword [rsp + 0x20], eax
call sub.msys_2.0.dll_fprintf
movzx eax, byte [rsp + 0xb8]
jmp 0x1005cecdc
mov ecx, 0x23
call sub.msys_2.0.dll_fputc
movzx eax, byte [rsp + 0xc0]
test al, 1
je 0x1005cf060
movzx eax, byte [rsp + 0xc4]
add eax, 1
mov dword [rsp + 0x28], eax
movzx eax, byte [rsp + 0xc3]
mov rcx, r12
lea rdx, str._02x_02x_02x_d
movzx r9d, byte [rsp + 0xc2]
movzx r8d, byte [rsp + 0xc1]
mov dword [rsp + 0x20], eax
call sub.msys_2.0.dll_fprintf
jmp 0x1005cee70
mov edx, r14d
xor edx, 1
test edx, r15d
je 0x1005cec2f
add r13d, 1
jmp 0x1005ced1c
lea rdx, [rsp + 0x90]
lea rcx, [rsp + 0xc0]
call sym.vim.exe_vterm_color_is_equal
mov r15d, eax
test eax, eax
je 0x1005cec16
lea rdx, [rsp + 0x95]
lea rcx, [rsp + 0xc5]
xor r15d, r15d
call sym.vim.exe_vterm_color_is_equal
test eax, eax
setne r15b
jmp 0x1005cec16
test al, al
mov eax, 0xff
cmove ebx, eax
jmp 0x1005cef45
test al, al
mov eax, 0xff
cmovne eax, r15d
jmp 0x1005cefad
lea rdx, [rsp + 0x90]
lea rcx, [rsp + 0xc0]
call sym.vim.exe_vterm_color_is_equal
test eax, eax
je 0x1005cec2f
xor ebp, ebp
jmp 0x1005cf020
mov rcx, qword [sym.vim.exe_e_dictionary_required]
call sub.msys_intl_8.dll_libintl_gettext
mov rcx, rax
add rsp, 0x158
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp sym.vim.exe_emsg
mov ecx, dword [rsp + 0xbc]
xor r15d, r15d
call fcn.1005c6cc0
mov ecx, dword [rsp + 0x8c]
mov r8d, eax
call fcn.1005c6cc0
cmp r8d, eax
jne 0x1005cec2f
lea rdx, [rsp + 0x90]
lea rcx, [rsp + 0xc0]
call sym.vim.exe_vterm_color_is_equal
mov r15d, eax
test eax, eax
je 0x1005cec2f
xor ebp, ebp
jmp 0x1005cf020
mov rcx, qword [sym.vim.exe_e_file_exists_str]
call sub.msys_intl_8.dll_libintl_gettext
mov rdx, r13
mov rcx, rax
call sym.vim.exe_semsg
nop
jmp 0x1005ce92f
cmp byte [r13], 0
jne 0x10067ad22
lea rcx, [0x1006d8c87]
call sub.msys_intl_8.dll_libintl_gettext
mov r13, rax
mov rcx, qword [sym.vim.exe_e_cant_create_file_str]
call sub.msys_intl_8.dll_libintl_gettext
mov rdx, r13
mov rcx, rax
call sym.vim.exe_semsg
nop
jmp 0x1005ce92f