Function at 0x10056c950
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x138
mov eax, dword [rcx + 8]
mov rbp, qword [rcx + 0x30]
mov dword [rsp + 0x3c], eax
mov r12, rcx
mov rax, qword [rcx + 0x50]
mov ecx, dword [rcx + 4]
mov dword [rsp + 0x188], edx
mov dword [rsp + 0x190], r8d
mov qword [rsp + 0x40], rax
test ecx, ecx
jne 0x10056d000
mov r8d, dword [rsp + 0x188]
test r8d, r8d
je 0x10056ce40
mov rax, qword [0x100725df0]
mov ecx, dword [0x100725de8]
mov qword [rsp + 0x30], rax
test ecx, ecx
je 0x10056ce20
cmp qword [rax], 0
je 0x10056ce20
lea rbx, [rsp + 0x60]
mov qword [0x100725df0], rbx
mov edx, dword [r12 + 8]
test edx, edx
jne 0x10056c9eb
mov eax, dword [r12 + 0x28]
test eax, eax
je 0x10056d0c0
movzx eax, byte [rsp + 0x3c]
mov rdi, qword [rsp + 0x40]
mov byte [rbx + 0x10], al
mov edx, 1
mov dword [rbx + 0x14], 0
mov qword [rbx + 8], rdi
lea rcx, [rdi*8]
call sym.vim.exe_lalloc_clear
mov qword [rbx], rax
mov rbx, qword [0x100725df0]
cmp qword [rbx], 0
je 0x10056ce8b
call sym.vim.exe_vim_time
mov r15d, dword [r12 + 0x60]
mov rdx, qword [0x100725df0]
mov qword [rbx + 0x18], rax
mov rbx, qword [r12 + 0x20]
test r15d, r15d
je 0x10056ca80
mov rcx, qword [sym.vim.exe_curwin]
mov byte [rdx + 0x10], 2
mov eax, dword [r12 + 0x68]
sub eax, dword [r12 + 0x64]
mov rcx, qword [rcx]
mov dword [rdx + 0x14], eax
cmp dword [rcx + 0x48], 0x7fffffff
jne 0x10056ca80
test eax, eax
jle 0x10056ca80
sub eax, 1
mov dword [rdx + 0x14], eax
nop word cs:[rax + rax]
xor esi, esi
cmp rbp, rbx
jge 0x10056caa5
jmp 0x10056cafd
test al, al
je 0x10056ceb0
add rbx, 1
add rsi, 1
cmp rbp, rbx
jl 0x10056cafd
movzx eax, byte [rdx + 0x10]
cmp al, 1
je 0x10056ce58
cmp al, 2
jne 0x10056ca90
lea r13, [rsp + 0x80]
xor r9d, r9d
mov r8, rbx
mov rcx, r12
mov rdx, r13
call sym.vim.exe_block_prep
mov r8d, dword [r12 + 0x80]
mov rdx, rsi
mov rcx, r13
call fcn.1005693a0
test eax, eax
je 0x10056ce82
add rbx, 1
mov rdx, qword [0x100725df0]
add rsi, 1
cmp rbp, rbx
jge 0x10056caa5
mov rax, qword [rsp + 0x30]
cmp rax, rdx
je 0x10056cbe4
mov rcx, qword [rdx + 8]
add rcx, qword [rax + 8]
shl rcx, 3
call sym.vim.exe_alloc
mov rbx, rax
test rax, rax
je 0x10056ce82
mov rax, qword [rsp + 0x30]
mov rsi, qword [rax + 8]
mov rcx, qword [rax]
test rsi, rsi
jle 0x10056d2e5
xor edx, edx
nop
mov rax, qword [rcx + rdx*8]
mov qword [rbx + rdx*8], rax
add rdx, 1
cmp rdx, rsi
jne 0x10056cb40
call sym.vim.exe_vim_free
mov rdi, qword [rsp + 0x30]
mov qword [rdi], rbx
call sym.vim.exe_vim_time
cmp dword [rsp + 0x3c], 1
mov qword [rdi + 0x18], rax
mov rax, qword [rsp + 0x30]
je 0x10056d2da
cmp byte [rax + 0x10], 0
je 0x10056d1e0
xor eax, eax
mov rdx, qword [0x100725df0]
mov r9, qword [rdx + 8]
mov r8, qword [rdx]
cmp rax, r9
jge 0x10056cbcc
mov rdi, qword [rsp + 0x30]
mov rcx, rsi
mov r10, rax
sub rcx, rax
mov rdx, qword [rdi]
lea rcx, [rdx + rcx*8]
nop dword [rax + rax]
add rax, 1
mov rdx, qword [r8 + rax*8 - 8]
mov qword [rcx + rax*8 - 8], rdx
cmp rax, r9
jne 0x10056cbb0
add rax, rsi
sub rax, r10
mov rsi, rax
mov rdi, qword [rsp + 0x30]
mov rcx, r8
mov qword [rdi + 8], rsi
call sym.vim.exe_vim_free
mov qword [0x100725df0], rdi
mov esi, dword [rsp + 0x190]
test esi, esi
je 0x10056cc8d
mov ebx, dword [rsp + 0x3c]
test ebx, ebx
jne 0x10056cc19
mov r11d, dword [r12 + 0x60]
test r11d, r11d
jne 0x10056cc19
mov rsi, qword [rsp + 0x40]
xor eax, eax
cmp rsi, 1
cmovne rax, rsi
mov qword [rsp + 0x40], rax
mov rax, qword [sym.vim.exe_p_report]
mov rsi, qword [rsp + 0x40]
cmp qword [rax], rsi
jge 0x10056cc8d
mov esi, dword [r12 + 4]
test esi, esi
jne 0x10056d2ae
mov byte [rsp + 0xc0], 0
lea rbx, [rsp + 0xc0]
call sym.vim.exe_update_topline_redraw
mov rsi, qword [rsp + 0x40]
mov r10d, dword [r12 + 0x60]
lea rdx, str.block_of__ld_lines_yanked_s
lea rcx, str.block_of__ld_line_yanked_s
mov r8, rsi
test r10d, r10d
jne 0x10056cc7a
lea rdx, str._ld_lines_yanked_s
lea rcx, str._ld_line_yanked_s
call sub.msys_intl_8.dll_libintl_ngettext
mov r8, rbx
mov rdx, rsi
mov rcx, rax
call sym.vim.exe_smsg
mov rax, qword [sym.vim.exe_cmdmod]
mov eax, dword [rax]
test ah, 8
jne 0x10056cccc
mov rax, qword [sym.vim.exe_curbuf]
movdqu xmm0, xmmword [r12 + 0x20]
movdqu xmm1, xmmword [r12 + 0x30]
cmp dword [rsp + 0x3c], 1
mov rax, qword [rax]
movups xmmword [rax + 0x11f0], xmm0
movups xmmword [rax + 0x1210], xmm1
je 0x10056d1b9
mov r15, qword [sym.vim.exe_clip_star]
mov r8d, dword [r15]
test r8d, r8d
je 0x10056cdf2
lea rax, [0x1007262a0]
cmp qword [rsp + 0x30], rax
je 0x10056cde2
mov ecx, dword [rsp + 0x188]
test ecx, ecx
jne 0x10056ce10
mov edx, dword [r12 + 4]
test edx, edx
jne 0x10056cdfd
mov rdx, qword [sym.vim.exe_clip_unnamed]
mov rcx, qword [sym.vim.exe_clip_unnamed_saved]
mov edx, dword [rdx]
or edx, dword [rcx]
and edx, 1
je 0x10056cdfd
mov rsi, qword [0x100725df0]
mov rcx, qword [0x1007262a8]
mov qword [0x100725df0], rax
call fcn.100569330
mov rbx, qword [0x100725df0]
movdqu xmm2, xmmword [rsi]
mov edx, 1
movups xmmword [rbx], xmm2
movdqu xmm3, xmmword [rsi + 0x10]
mov rax, qword [rbx + 8]
movups xmmword [rbx + 0x10], xmm3
lea rcx, [rax*8]
call sym.vim.exe_lalloc_clear
mov rdx, qword [0x100725df0]
mov qword [rbx], rax
mov rax, qword [rdx]
test rax, rax
je 0x10056d2ec
xor r13d, r13d
cmp qword [rdx + 8], 0
jg 0x10056cdac
jmp 0x10056cddb
mov rax, qword [0x100725df0]
add r13, 1
cmp r13, qword [rax + 8]
jge 0x10056cddb
mov rax, qword [rax]
lea rbx, [rax + r13*8]
mov rax, qword [rsi]
mov rcx, qword [rax + r13*8]
call sym.vim.exe_vim_strsave
mov qword [rbx], rax
test rax, rax
jne 0x10056cd98
mov rcx, r13
call fcn.100569330
mov rax, qword [0x100725df0]
mov qword [rax + 8], 0
mov qword [0x100725df0], rsi
mov rcx, r15
call sym.vim.exe_clip_own_selection
mov rcx, r15
call sym.vim.exe_clip_gen_set_selection
mov eax, dword [rsp + 0x188]
test eax, eax
jne 0x10056ce10
call sym.vim.exe_has_textyankpost
test eax, eax
jne 0x10056d29a
nop word [rax + rax]
mov eax, 1
jmp 0x10056ce99
mov rax, qword [rsp + 0x30]
mov rcx, qword [rax + 8]
call fcn.100569330
mov rbx, qword [0x100725df0]
jmp 0x10056c9d5
mov ecx, dword [r12 + 4]
mov edx, 1
call sym.vim.exe_get_yank_register
jmp 0x10056c9a5
mov rcx, rbx
call sym.vim.exe_ml_get
mov rcx, rax
mov rax, qword [0x100725df0]
mov rax, qword [rax]
lea rdi, [rax + rsi*8]
call sym.vim.exe_vim_strsave
mov qword [rdi], rax
test rax, rax
jne 0x10056cae9
lea rcx, [rsi + 1]
call fcn.100569330
mov rax, qword [rsp + 0x30]
mov qword [0x100725df0], rax
xor eax, eax
add rsp, 0x138
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, rbx
xor r15d, r15d
call sym.vim.exe_ml_get
mov qword [rsp + 0x80], 0
mov r10, rax
mov r14, rax
cmp qword [r12 + 0x20], rbx
je 0x10056cf38
xor r13d, r13d
cmp qword [r12 + 0x30], rbx
je 0x10056cf80
mov rcx, r10
call sub.msys_2.0.dll_strlen
mov edi, eax
cmp edi, r15d
jl 0x10056cf30
test r13b, r13b
jne 0x10056cf30
sub edi, r15d
add edi, dword [r12 + 0x14]
xor r8d, r8d
lea rcx, [rsp + 0x80]
mov rdx, rsi
mov dword [rsp + 0x88], edi
mov qword [rsp + 0x90], r14
call fcn.1005693a0
test eax, eax
jne 0x10056cae9
jmp 0x10056ce82
xor edi, edi
jmp 0x10056cefe
mov rax, qword [sym.vim.exe_virtual_op]
mov r15d, dword [r12 + 0x28]
mov r14d, dword [rax]
test r14d, r14d
jne 0x10056d050
movsxd r14, r15d
xor r13d, r13d
add r14, r10
cmp qword [r12 + 0x30], rbx
jne 0x10056cee2
mov edi, dword [r12 + 0x38]
xor r13d, r13d
cmp edi, 0x7fffffff
jne 0x10056ceec
jmp 0x10056cee2
mov rax, qword [sym.vim.exe_virtual_op]
mov edi, dword [r12 + 0x38]
mov r13d, dword [rax]
test r13d, r13d
je 0x10056cf69
lea rax, [rsp + 0xc0]
lea rdx, [r12 + 0x30]
xor r9d, r9d
mov qword [rsp + 0x48], r10
mov qword [rsp + 0x20], rax
mov rax, qword [sym.vim.exe_curwin]
lea r8, [rsp + 0x5c]
mov rcx, qword [rax]
call sym.vim.exe_getvcol
mov r10, qword [rsp + 0x48]
movsxd rdx, edi
add rdx, r10
cmp byte [rdx], 0
jne 0x10056d120
mov eax, dword [r12 + 0x3c]
mov edx, dword [r12 + 0x14]
mov rcx, qword [r12 + 0x30]
cmp qword [r12 + 0x20], rcx
je 0x10056d16b
add eax, edx
sub edi, edx
mov dword [rsp + 0x84], eax
jmp 0x10056cf69
mov edx, 1
call sym.vim.exe_valid_yank_reg
test eax, eax
je 0x10056d159
mov eax, dword [r12 + 4]
cmp eax, 0x5f
je 0x10056ce10
mov rdx, qword [sym.vim.exe_clip_star]
mov r9d, dword [rdx]
test r9d, r9d
jne 0x10056c994
sub eax, 0x2a
cmp eax, 1
ja 0x10056c994
mov dword [r12 + 4], 0
jmp 0x10056c994
lea rax, [rsp + 0xc0]
lea rdx, [r12 + 0x20]
xor r9d, r9d
mov qword [rsp + 0x48], r10
mov qword [rsp + 0x20], rax
mov rax, qword [sym.vim.exe_curwin]
lea r8, [rsp + 0x5c]
mov rcx, qword [rax]
call sym.vim.exe_getvcol
mov eax, dword [rsp + 0xc0]
mov edx, dword [rsp + 0x5c]
mov r10, qword [rsp + 0x48]
cmp eax, edx
je 0x10056d0ad
mov ecx, dword [r12 + 0x2c]
test ecx, ecx
jle 0x10056d0ad
sub eax, edx
add r15d, 1
add eax, 1
sub eax, ecx
mov dword [rsp + 0x80], eax
movsxd r14, r15d
add r14, r10
jmp 0x10056ced4
mov eax, dword [r12 + 0x14]
test eax, eax
jne 0x10056c9eb
mov eax, dword [r12 + 0x5c]
test eax, eax
jne 0x10056d1a1
mov eax, dword [r12 + 0x60]
test eax, eax
jne 0x10056c9eb
mov eax, dword [r12 + 0x38]
test eax, eax
jne 0x10056c9eb
cmp qword [rsp + 0x40], 1
jle 0x10056c9eb
sub qword [rsp + 0x40], 1
sub rbp, 1
mov eax, 1
mov dword [rsp + 0x3c], 1
jmp 0x10056c9f0
mov eax, dword [rsp + 0x5c]
add eax, dword [r12 + 0x3c]
cmp eax, dword [rsp + 0xc0]
jge 0x10056cf69
mov rax, qword [sym.vim.exe_mb_head_off]
mov qword [rsp + 0x48], r10
mov rcx, r10
call qword [rax]
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x10056cfd6
jmp 0x10056cf69
mov dword [rsp + 0x30], eax
call sym.vim.exe_beep_flush
mov eax, dword [rsp + 0x30]
jmp 0x10056ce99
mov ecx, dword [r12 + 0x38]
cmp dword [r12 + 0x28], ecx
jne 0x10056cff0
sub eax, dword [r12 + 0x2c]
add eax, edx
mov dword [rsp + 0x80], eax
cmp r15d, 0x7fffffff
jne 0x10056cf30
mov r13d, 1
jmp 0x10056cee2
mov rax, qword [sym.vim.exe_p_sel]
mov rax, qword [rax]
cmp byte [rax], 0x6f
jne 0x10056c9eb
jmp 0x10056d0da
mov r9d, dword [r12 + 0x60]
test r9d, r9d
jne 0x10056cccc
mov dword [rax + 0x11f8], 0
mov dword [rax + 0x1218], 0x7fffffff
jmp 0x10056cccc
mov rax, qword [sym.vim.exe_p_cpo]
mov edx, 0x3e
mov rcx, qword [rax]
call sym.vim.exe_vim_strchr
test rax, rax
jne 0x10056cb81
mov rax, qword [rsp + 0x30]
mov rdx, qword [rax + 8]
mov rax, qword [rax]
mov rcx, qword [rax + rdx*8 - 8]
call sub.msys_2.0.dll_strlen
mov rbx, rax
mov rax, qword [0x100725df0]
mov rax, qword [rax]
mov rcx, qword [rax]
call sub.msys_2.0.dll_strlen
lea rcx, [rbx + rax + 1]
call sym.vim.exe_alloc
mov rbx, rax
test rax, rax
je 0x10056d2f9
mov r14, qword [rsp + 0x30]
lea rdi, [rsi - 1]
mov rcx, rbx
mov rax, qword [r14]
mov rdx, qword [rax + rdi*8]
call sub.msys_2.0.dll_stpcpy
mov rcx, rax
mov rax, qword [0x100725df0]
mov rax, qword [rax]
mov rdx, qword [rax]
call sub.msys_2.0.dll_strcpy
mov rax, qword [r14]
mov rcx, qword [rax + rdi*8]
call sym.vim.exe_vim_free
mov rax, qword [0x100725df0]
mov rax, qword [rax]
mov rcx, qword [rax]
call sym.vim.exe_vim_free
mov rax, qword [r14]
mov qword [rax + rdi*8], rbx
mov eax, 1
jmp 0x10056cb83
mov rdx, qword [0x100725df0]
mov rcx, r12
call sym.vim.exe_yank_do_autocmd
jmp 0x10056ce10
lea rcx, str._into___c
lea rbx, [rsp + 0xc0]
call sub.msys_intl_8.dll_libintl_gettext
mov r9d, esi
mov edx, 0x64
mov rcx, rbx
mov r8, rax
call sym.vim.exe_vim_snprintf
jmp 0x10056cc47
mov byte [rax + 0x10], 1
xor eax, eax
jmp 0x10056cb83
xor esi, esi
jmp 0x10056cb51
mov qword [rdx + 8], 0
jmp 0x10056cddb
mov rax, qword [0x100725df0]
mov rcx, qword [rax + 8]
jmp 0x10056ce86