Function at 0x100643ca0
Capabilities:
Write file on windows

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp, 0x38
lea rbp, [rsp + 0x80]
mov esi, edx
mov qword [rbp + 0x10], r8
mov rbx, rcx
lea rax, [rsi + rsi*8]
mov dword [rbp + 0x18], r9d
mov rdi, rsi
lea rax, [rsi + rax*4]
lea r12, [rcx + rax*8]
mov r14d, dword [r12 + 0x18]
cmp r14d, 0xffffffff
je 0x100643ef0
mov r11d, dword [rcx + 0x518]
test r11d, r11d
je 0x100643d00
mov r10d, dword [r12 + 0x9c]
test r10d, r10d
je 0x100643f80
cmp qword [0x100713328], 0
je 0x100643d87
mov r8d, edi
mov rdx, rbx
lea rcx, str.SEND
call fcn.100641860
mov rdx, qword [0x100713328]
mov ecx, 0x27
call sub.msys_2.0.dll_fputc
movsxd rdx, dword [rbp + 0x18]
mov rcx, qword [rbp + 0x10]
mov r8d, 1
mov r9, qword [0x100713328]
call sub.msys_2.0.dll_fwrite
mov rdx, qword [sym.vim.exe_vim_ignored]
mov r9, qword [0x100713328]
mov r8d, 2
lea rcx, [0x1006d14b5]
mov dword [rdx], eax
mov edx, 1
call sub.msys_2.0.dll_fwrite
mov rcx, qword [0x100713328]
call sub.msys_2.0.dll_fflush
mov rax, qword [sym.vim.exe_did_repeated_msg]
mov dword [rax], 0
lea rax, [rsi + rsi*8]
xor r13d, r13d
lea rax, [rsi + rax*4]
lea rdi, [rbx + rax*8]
mov rax, qword [rdi + 0xb8]
test rax, rax
je 0x100643e7c
mov r15, qword [rax + 0x10]
mov r12d, dword [rax]
mov r13d, 1
movsxd r8, r12d
mov rdx, r15
mov ecx, r14d
call sub.msys_2.0.dll_write
mov r10d, eax
test eax, eax
js 0x100643ed0
mov r8d, dword [rdi + 0x9c]
test r8d, r8d
je 0x100643f32
mov r9, qword [rdi + 0xb8]
test r13d, r13d
jne 0x100643ea0
cmp r12d, r10d
jne 0x100643fd0
test r9, r9
jne 0x100643e38
test r13d, r13d
jne 0x100643e20
mov dword [rbx + 0x4d4], 0
mov eax, 1
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
lea rdx, str.Write_queue_empty
mov rcx, rbx
call sym.vim.exe_ch_log
jmp 0x100643dff
mov rcx, r9
mov qword [rbp - 0x58], r9
call sym.vim.exe_ga_clear
mov r9, qword [rbp - 0x58]
mov rax, qword [r9 + 0x18]
mov qword [rdi + 0xb8], rax
test rax, rax
je 0x100643fb8
mov qword [rax + 0x20], 0
mov rcx, r9
call sym.vim.exe_vim_free
mov rax, qword [rdi + 0xb8]
test rax, rax
jne 0x100643da6
mov r9d, dword [rbp + 0x18]
test r9d, r9d
je 0x100644126
mov r12d, dword [rbp + 0x18]
mov r15, qword [rbp + 0x10]
jmp 0x100643db3
mov r8d, r10d
lea rdx, str.Sent__d_bytes_now
mov rcx, rbx
mov qword [rbp - 0x60], r9
mov dword [rbp - 0x58], r10d
call sym.vim.exe_ch_log
mov r9, qword [rbp - 0x60]
mov r10d, dword [rbp - 0x58]
jmp 0x100643dec
mov dword [rbp - 0x58], eax
call sub.msys_2.0.dll___errno
mov r10d, dword [rbp - 0x58]
cmp dword [rax], 0xb
jne 0x100643f20
xor r10d, r10d
jmp 0x100643dcc
mov esi, dword [rcx + 0x4d4]
test esi, esi
jne 0x100643f05
cmp qword [rbp + 0x20], 0
jne 0x100644152
mov dword [rbx + 0x4d4], 1
xor eax, eax
jmp 0x100643e0e
mov dword [rbp - 0x58], r10d
call sub.msys_2.0.dll___errno
mov r10d, dword [rbp - 0x58]
cmp dword [rax], 0xb
je 0x100643ee1
cmp r12d, r10d
je 0x100643dff
mov eax, dword [rbx + 0x4d4]
test eax, eax
jne 0x100643f05
cmp qword [rbp + 0x20], 0
je 0x100643f05
mov r8, qword [rbp + 0x20]
lea rdx, str._s__:_write_failed
mov rcx, rbx
call fcn.100641940
lea rcx, str.E631:__s__:_write_failed
call sub.msys_intl_8.dll_libintl_gettext
mov rdx, qword [rbp + 0x20]
mov rcx, rax
call sym.vim.exe_semsg
jmp 0x100643f05
mov r8d, 0x4000
mov edx, 4
mov ecx, r14d
call sub.msys_2.0.dll_fcntl
cmp qword [0x100713328], 0
mov dword [r12 + 0x9c], 1
jne 0x100643d0a
jmp 0x100643d87
mov qword [rdi + 0xc0], 0
jmp 0x100643e64
test r9, r9
je 0x100644130
test r10d, r10d
jle 0x100644006
mov rcx, qword [r9 + 0x10]
sub r12d, r10d
movsxd rdx, r10d
mov qword [rbp - 0x60], r9
movsxd r8, r12d
mov dword [rbp - 0x58], r10d
add rdx, rcx
call sub.msys_2.0.dll_memmove
mov r9, qword [rbp - 0x60]
mov r10d, dword [rbp - 0x58]
sub dword [r9], r10d
mov r8d, dword [rbp + 0x18]
lea rdx, str.Adding__d_bytes_to_the_write_queue
mov rcx, rbx
call sym.vim.exe_ch_log
lea rax, [rsi + rsi*8]
lea rax, [rsi + rax*4]
mov rdi, qword [rbx + rax*8 + 0xc0]
test rdi, rdi
je 0x100644080
mov eax, dword [rbp + 0x18]
add eax, dword [rdi]
cmp eax, 0xf9f
jg 0x100644080
mov ecx, dword [rbp + 0x18]
test ecx, ecx
jle 0x100643dff
mov edx, dword [rbp + 0x18]
mov rcx, rdi
call sym.vim.exe_ga_grow
cmp eax, 1
jne 0x100643dff
movsxd r8, dword [rbp + 0x18]
mov rdx, qword [rbp + 0x10]
movsxd rcx, dword [rdi]
add rcx, qword [rdi + 0x10]
call sub.msys_2.0.dll_memmove
mov eax, dword [rbp + 0x18]
add dword [rdi], eax
jmp 0x100643dff
mov ecx, 0x28
call sym.vim.exe_alloc
mov rdi, rax
test rax, rax
je 0x100643dff
lea rax, [rsi + rsi*8]
lea rax, [rsi + rax*4]
lea rax, [rbx + rax*8]
mov rdx, qword [rax + 0xc0]
mov qword [rdi + 0x18], 0
mov qword [rdi + 0x20], rdx
mov rdx, qword [rax + 0xc0]
test rdx, rdx
je 0x100644146
mov qword [rdx + 0x18], rdi
lea rax, [rsi + rsi*8]
mov edx, 1
mov r8d, 0x3e8
mov rcx, rdi
lea rax, [rsi + rax*4]
mov qword [rbx + rax*8 + 0xc0], rdi
call sym.vim.exe_ga_init2
mov edx, dword [rbp + 0x18]
test edx, edx
jle 0x100643dff
mov edx, dword [rbp + 0x18]
mov rcx, rdi
call sym.vim.exe_ga_grow
cmp eax, 1
jne 0x100643dff
mov rcx, qword [rdi + 0x10]
movsxd r8, dword [rbp + 0x18]
mov rdx, qword [rbp + 0x10]
call sub.msys_2.0.dll_memmove
mov eax, dword [rbp + 0x18]
mov dword [rdi], eax
jmp 0x100643dff
mov eax, 1
jmp 0x100643e0e
movsxd rax, r10d
sub r12d, r10d
add rax, r15
mov dword [rbp + 0x18], r12d
mov qword [rbp + 0x10], rax
jmp 0x100644006
mov qword [rax + 0xb8], rdi
jmp 0x1006440c9
mov r8, qword [rbp + 0x20]
lea rdx, str._s__:_write_while_not_connected
call fcn.100641940
lea rcx, str.E630:__s__:_write_while_not_connected
call sub.msys_intl_8.dll_libintl_gettext
mov rdx, qword [rbp + 0x20]
mov rcx, rax
call sym.vim.exe_semsg
jmp 0x100643f05