joyce8/EMBER2024-capa huggingface dataset:
Function at 0x10042d480
Capabilities:
Query environment variable

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xd8
mov rax, qword [sym.vim.exe_p_dex]
mov rax, qword [rax]
mov r15, qword [rcx]
mov r14, qword [rcx + 0x18]
mov rsi, qword [rcx + 0x30]
cmp byte [rax], 0
jne 0x10042d740
mov r13d, dword [rcx + 0x50]
test r13d, r13d
jne 0x10042d628
mov rcx, r15
call sub.msys_2.0.dll_strlen
mov rcx, r14
mov rbp, rax
call sub.msys_2.0.dll_strlen
mov rcx, rsi
mov rbx, rax
call sub.msys_2.0.dll_strlen
mov rdi, qword [sym.vim.exe_p_srr]
lea rbx, [rbp + rbx + 0x1b]
mov r12, rax
mov rcx, qword [rdi]
add rbx, r12
call sub.msys_2.0.dll_strlen
add rbx, rax
mov rcx, rbx
call sym.vim.exe_alloc
mov r12, rax
test rax, rax
je 0x10042d60a
lea r13, str.DIFF_OPTIONS
lea rbp, [0x1006af924]
mov rcx, r13
call sub.msys_2.0.dll_getenv
test rax, rax
je 0x10042d533
mov rdx, rbp
mov rcx, r13
call sym.vim.exe_vim_setenv
mov edx, dword [0x100682634]
lea rax, [0x1006af924]
lea r10, [0x1006af920]
mov r11d, dword [0x100682630]
lea r9, [0x1006af925]
mov qword [rsp + 0x58], r14
mov r13d, 1
lea r8, [0x1006af929]
test dl, 4
lea rcx, [0x1006af92d]
mov qword [rsp + 0x50], r15
cmove r10, rax
test dl, 2
mov qword [rsp + 0x20], rbp
cmove r9, rax
test dl, 0x20
cmove r8, rax
test dl, 0x10
mov qword [rsp + 0x48], r10
cmove rcx, rax
and edx, 8
mov qword [rsp + 0x40], r9
lea rdx, [0x1006af931]
mov qword [rsp + 0x38], r8
lea r9, [0x1006af935]
cmove rdx, rax
mov qword [rsp + 0x30], rcx
test r11d, r11d
lea r8, str.diff__s_s_s_s_s_s_s_s__s
cmove r9, rax
mov rcx, r12
mov qword [rsp + 0x28], rdx
mov rdx, rbx
call sym.vim.exe_vim_snprintf
mov r8, qword [rdi]
mov r9, rsi
mov edx, ebx
mov rcx, r12
call sym.vim.exe_append_redir
call sym.vim.exe_block_autocmds
mov edx, 0x19
mov rcx, r12
call sym.vim.exe_call_shell
call sym.vim.exe_unblock_autocmds
mov rcx, r12
call sym.vim.exe_vim_free
mov eax, r13d
add rsp, 0xd8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r8, qword [0x100720ee0]
mov eax, dword [0x100682634]
mov qword [rsp + 0x68], 0
mov qword [rsp + 0x70], 0
mov qword [rsp + 0xa0], 0
mov rdx, r8
mov qword [rsp + 0xa8], 0
or rdx, 4
test al, 8
mov qword [rsp + 0xb0], 0
cmove rdx, r8
mov qword [rsp + 0xb8], 0
mov qword [rsp + 0xc0], 0
mov qword [rsp + 0x88], 0
mov qword [rsp + 0x90], 0
mov qword [rsp + 0x60], rdx
test al, 0x10
je 0x10042d6b7
or qword [rsp + 0x60], 2
test al, 0x20
je 0x10042d6c1
or qword [rsp + 0x60], 8
test al, 2
je 0x10042d6ce
or qword [rsp + 0x60], 0x80
lea rax, [rcx + 0x30]
lea rdx, [rcx + 0x20]
add rcx, 8
mov r13d, 1
mov qword [rsp + 0x80], rax
lea rax, [0x10042d760]
lea r8, [rsp + 0x60]
mov qword [rsp + 0xc8], rax
lea rax, [rsp + 0x80]
lea r9, [rsp + 0xa0]
mov qword [rsp + 0x20], rax
call sym.vim.exe_xdl_diff
test eax, eax
jns 0x10042d60a
mov rcx, qword [sym.vim.exe_e_problem_creating_internal_diff]
xor r13d, r13d
call sub.msys_intl_8.dll_libintl_gettext
mov rcx, rax
call sym.vim.exe_emsg
jmp 0x10042d60a
mov r8, rsi
mov rdx, r14
mov rcx, r15
mov r13d, 1
call sym.vim.exe_eval_diff
jmp 0x10042d60a
Function at 0x100449130
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x48
movaps xmmword [rsp + 0x30], xmm6
mov rbx, qword [r9]
mov r14d, dword [rcx]
mov r12, rcx
mov r13d, edx
mov rsi, r8
mov rbp, r9
mov dword [rsp + 0x2c], 0
call sym.vim.exe_in_vim9script
cmp dword [r12], 6
mov r15d, eax
je 0x100449300
movzx eax, byte [rbx - 1]
cmp al, 9
je 0x100449180
cmp al, 0x20
jne 0x100449190
nop
movzx eax, byte [rbx - 2]
sub rbx, 1
cmp al, 0x20
je 0x100449180
cmp al, 9
je 0x100449180
cmp al, 0x21
jne 0x10044919d
test r15d, r15d
jne 0x100449327
lea rdx, [rsp + 0x2c]
mov rcx, r12
pxor xmm6, xmm6
call sym.vim.exe_tv_get_number_chk
mov rdi, rax
mov eax, dword [rsp + 0x2c]
test eax, eax
jne 0x100449315
mov ecx, dword [r12]
cmp rbx, rsi
jbe 0x100449351
movq xmm1, qword [0x1006b05c0]
pxor xmm0, xmm0
xor r8d, r8d
jmp 0x1004491ee
cmp dl, 0x2d
je 0x100449270
cmp rsi, rbx
je 0x100449222
mov rax, rbx
movzx edx, byte [rbx - 1]
sub rbx, 1
cmp dl, 0x21
jne 0x1004491e0
test r13d, r13d
jne 0x100449340
cmp ecx, 6
je 0x100449288
test rdi, rdi
mov r14d, 3
sete dil
movzx edi, dil
cmp rsi, rbx
jne 0x1004491ee
cmp ecx, 6
mov rcx, r12
je 0x1004492e0
call sym.vim.exe_clear_tv
mov eax, 5
test r15d, r15d
mov qword [r12 + 8], rdi
cmove r14d, eax
mov eax, 1
mov dword [r12], r14d
movaps xmm6, xmmword [rsp + 0x30]
mov qword [rbp], rsi
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp ecx, 6
je 0x1004492b0
neg rdi
mov r14d, 5
jmp 0x1004491e9
test r15d, r15d
jne 0x1004492c0
ucomisd xmm6, xmm0
jp 0x1004492a5
mov rax, qword [0x1006b05b8]
movq xmm6, rax
je 0x1004491e9
movapd xmm6, xmm0
jmp 0x1004491e9
xorpd xmm6, xmm1
jmp 0x1004491e9
xor edi, edi
ucomisd xmm6, xmm0
mov dword [r12], 3
mov ecx, 3
setnp dil
cmovne rdi, r8
jmp 0x1004491e9
call sym.vim.exe_clear_tv
movsd qword [r12 + 8], xmm6
mov eax, 1
jmp 0x10044924d
mov eax, dword [rsp + 0x2c]
movsd xmm6, qword [r12 + 8]
xor edi, edi
test eax, eax
je 0x1004491bd
mov rcx, r12
mov rsi, rbx
call sym.vim.exe_clear_tv
xor eax, eax
jmp 0x10044924d
mov rcx, r12
pxor xmm6, xmm6
call sym.vim.exe_tv2bool
movsxd rdi, eax
jmp 0x1004491b1
cmp ecx, 6
mov rsi, rax
mov rcx, r12
jne 0x10044922e
jmp 0x1004492e0
mov rsi, rbx
jmp 0x100449222
Function at 0x10045e130
Capabilities:
Query environment variable

Disassembly:
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
mov r12, rcx
mov rsi, rdx
call sym.vim.exe_in_vim9script
test eax, eax
je 0x10045e159
xor edx, edx
mov rcx, r12
call sym.vim.exe_check_for_nonempty_string_arg
test eax, eax
je 0x10045e1a4
mov rcx, r12
call sym.vim.exe_tv_get_string
mov qword [rsp + 0x28], rax
mov rcx, rax
movzx eax, byte [rax]
cmp al, 0x24
je 0x10045e2a8
sub eax, 0x23
cmp al, 0x1c
ja case.0x10045e18c.1
lea rdx, [0x1006b0ae0]
movzx eax, al
movsxd rax, dword [rdx + rax*4]
add rax, rdx
jmp rax
call sym.vim.exe_var_exists
movsxd rbx, eax
nop dword [rax + rax]
mov qword [rsi + 8], rbx
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
xor edx, edx
lea rcx, [rsp + 0x28]
mov r8d, 1
xor ebx, ebx
call sym.vim.exe_eval_option
mov rcx, qword [rsp + 0x28]
mov edi, eax
call sym.vim.exe_skipwhite
cmp byte [rax], 0
jne 0x10045e1a0
xor ebx, ebx
cmp edi, 1
sete bl
jmp 0x10045e1a0
add rcx, 1
xor edx, edx
call sym.vim.exe_function_exists
movsxd rbx, eax
jmp 0x10045e1a0
lea rdi, [rcx + 1]
lea rdx, [0x1006b07e6]
xor r12d, r12d
mov r13d, 0x21e
lea rbp, [0x1006b34a0]
jmp 0x10045e249
je 0x10045e300
lea r12d, [rbx + 1]
cmp r13d, r12d
jl 0x10045e2f0
mov eax, r13d
sub eax, r12d
shr eax, 1
add eax, r12d
cdqe
lea rax, [rax + rax*4]
mov rdx, qword [rbp + rax*8]
mov eax, r13d
mov rcx, rdi
sub eax, r12d
shr eax, 1
lea ebx, [rax + r12]
call sub.msys_2.0.dll_strcmp
test eax, eax
jns 0x10045e220
lea r13d, [rbx - 1]
jmp 0x10045e22a
cmp byte [rcx + 1], 0x23
je 0x10045e318
add rcx, 1
call sym.vim.exe_au_exists
movsxd rbx, eax
jmp 0x10045e1a0
add rcx, 1
call sym.vim.exe_cmd_exists
movsxd rbx, eax
jmp 0x10045e1a0
add rcx, 1
mov ebx, 1
call sub.msys_2.0.dll_getenv
test rax, rax
jne 0x10045e1a0
mov rcx, qword [rsp + 0x28]
xor ebx, ebx
call sym.vim.exe_expand_env_save
mov qword [rsp + 0x28], rax
mov rcx, rax
test rax, rax
je 0x10045e2e0
xor ebx, ebx
cmp byte [rax], 0x24
setne bl
call sym.vim.exe_vim_free
jmp 0x10045e1a0
xor ebx, ebx
jmp 0x10045e1a0
movsxd rbx, ebx
mov rax, rbx
not rax
shr rax, 0x3f
mov rbx, rax
jmp 0x10045e1a0
add rcx, 2
call sym.vim.exe_autocmd_supported
movsxd rbx, eax
jmp 0x10045e1a0
Function at 0x10046b070
Capabilities:
Get file attributes

Disassembly:
push r12
push rdi
push rsi
push rbx
sub rsp, 0x498
mov r12d, dword [rdx + 0x1ca0]
mov rsi, rcx
mov rbx, rdx
test r12d, r12d
je 0x10046b120
mov rax, qword [sym.vim.exe_cmdmod]
mov rdx, qword [sym.vim.exe_p_confirm]
mov eax, dword [rax]
and eax, 0x80
or eax, dword [rdx]
je 0x10046b180
mov rdi, qword [rbx + 0x98]
test rdi, rdi
je 0x10046b170
lea rcx, str.readonly_option_is_set_for___s_._nDo_you_wish_to_write_anyway_
call sub.msys_intl_8.dll_libintl_gettext
mov r8, rdi
lea rbx, [rsp + 0xa0]
mov r12d, 1
mov rdx, rax
mov rcx, rbx
call sym.vim.exe_dialog_msg
mov r9d, 2
mov r8, rbx
xor edx, edx
mov ecx, 4
call sym.vim.exe_vim_dialog_yesno
cmp eax, 2
jne 0x10046b19a
xor r12d, r12d
mov dword [rsi], 1
mov eax, r12d
add rsp, 0x498
pop rbx
pop rsi
pop rdi
pop r12
ret
mov rcx, qword [rbx + 0x88]
lea rdx, [rsp + 0x20]
call sub.msys_2.0.dll_stat
test eax, eax
js 0x10046b19a
mov rcx, qword [rbx + 0x88]
mov edx, 0x1ff
call sym.vim.exe_check_file_readonly
test eax, eax
je 0x10046b19a
mov rax, qword [sym.vim.exe_cmdmod]
mov rdx, qword [sym.vim.exe_p_confirm]
mov r12d, dword [rbx + 0x1ca0]
mov eax, dword [rax]
and eax, 0x80
or eax, dword [rdx]
jne 0x10046b1b0
nop word [rax + rax]
test r12d, r12d
je 0x100675ba6
nop dword [rax]
mov rcx, qword [sym.vim.exe_e_readonly_option_is_set_add_bang_to_override]
mov r12d, 1
call sub.msys_intl_8.dll_libintl_gettext
mov rcx, rax
call sym.vim.exe_emsg
mov eax, r12d
add rsp, 0x498
pop rbx
pop rsi
pop rdi
pop r12
ret
mov rdi, qword [rbx + 0x98]
test rdi, rdi
je 0x10046b170
test r12d, r12d
jne 0x10046b0bf
lea rcx, str.File_permissions_of___s__are_read_only._nIt_may_still_be_possible_to_write_it._nDo_you_wish_to_try_
jmp 0x10046b0c6
mov rcx, qword [sym.vim.exe_e_str_is_read_only_add_bang_to_override]
mov r12, qword [rbx + 0x98]
call sub.msys_intl_8.dll_libintl_gettext
mov rdx, r12
mov r12d, 1
mov rcx, rax
call sym.vim.exe_semsg
nop
jmp 0x10046b19a

Function at 0x10047d3b0
Capabilities:
Create directory

Disassembly:
push r12
sub rsp, 0x20
mov r12, rcx
call sub.msys_2.0.dll_mkdir
test eax, eax
jne 0x10067607c
mov eax, 1
add rsp, 0x20
pop r12
ret
mov rcx, qword [sym.vim.exe_e_cannot_create_directory_str]
call sub.msys_intl_8.dll_libintl_gettext
mov rdx, r12
mov rcx, rax
call sym.vim.exe_semsg
xor eax, eax
jmp 0x10047d3cb
Function at 0x10048e440
Capabilities:
Encode data using base64

Disassembly:
mov r9d, 1
jmp fcn.10048ab00

Function at 0x10048e450
Capabilities:
Encode data using base64

Disassembly:
sub rsp, 0x38
mov rax, qword [sym.vim.exe_exec_from_reg]
mov eax, dword [rax]
test eax, eax
jne 0x10048e478
mov r9d, 1
mov edx, 1
add rsp, 0x38
jmp fcn.10048ab00
mov dword [rsp + 0x2c], r8d
mov dword [rsp + 0x28], ecx
call sym.vim.exe_vpeekc
mov ecx, dword [rsp + 0x28]
mov r8d, dword [rsp + 0x2c]
cmp eax, 0x3a
jne 0x10048e461
call sym.vim.exe_vgetc
mov r8d, dword [rsp + 0x2c]
mov ecx, dword [rsp + 0x28]
jmp 0x10048e461
Function at 0x100490d30
Capabilities:
Delete directory

Disassembly:
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x50
mov r12, rcx
call sym.vim.exe_mch_isrealdir
mov rcx, r12
test eax, eax
je 0x100490da0
call sym.vim.exe_vim_strsave
mov r12, rax
test rax, rax
je 0x100490e36
lea r14, [rsp + 0x30]
xor r9d, r9d
xor r8d, r8d
mov rdx, rax
mov dword [rsp + 0x28], 0
mov rcx, r14
mov qword [rsp + 0x20], 0
call sym.vim.exe_readdir_core
cmp eax, 1
je 0x100490dc0
mov r13d, 0xffffffff
mov rcx, r12
call sym.vim.exe_vim_free
jmp 0x100490daa
call sub.msys_2.0.dll_unlink
neg eax
sbb r13d, r13d
mov eax, r13d
add rsp, 0x50
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
ret
mov eax, dword [rsp + 0x30]
xor r13d, r13d
test eax, eax
jle 0x100490e19
mov rsi, qword [sym.vim.exe_NameBuff]
xor ebx, ebx
mov edi, 0xffffffff
lea rbp, [0x1006c07e4]
mov rax, qword [rsp + 0x40]
mov r9, r12
mov r8, rbp
mov edx, 0x1000
mov rax, qword [rax + rbx*8]
mov qword [rsp + 0x20], rax
mov rcx, qword [rsi]
call sym.vim.exe_vim_snprintf
mov rcx, qword [rsi]
call sym.vim.exe_delete_recursive
test eax, eax
cmovne r13d, edi
add rbx, 1
cmp dword [rsp + 0x30], ebx
jg 0x100490de0
mov rcx, r14
call sym.vim.exe_ga_clear_strings
mov rcx, r12
call sub.msys_2.0.dll_rmdir
test eax, eax
je 0x100490d90
jmp 0x100490d8a
mov r13d, 0xffffffff
jmp 0x100490daa
Function at 0x100497ab0
Capabilities:
Delete directory

Disassembly:
push r13
push r12
push rsi
push rbx
sub rsp, 0x78
mov qword [rdx + 8], 0xffffffffffffffff
mov rsi, rcx
mov rbx, rdx
call sym.vim.exe_check_restricted
test eax, eax
je 0x100497ae0
add rsp, 0x78
pop rbx
pop rsi
pop r12
pop r13
ret
call sym.vim.exe_check_secure
test eax, eax
jne 0x100497ad1
call sym.vim.exe_in_vim9script
test eax, eax
jne 0x100497b28
mov rcx, rsi
call sym.vim.exe_tv_get_string
mov r12, rax
test rax, rax
je 0x100497b50
cmp byte [rax], 0
je 0x100497b50
mov eax, dword [rsi + 0x10]
test eax, eax
jne 0x100497b70
mov rcx, r12
call sub.msys_2.0.dll_unlink
neg eax
sbb rax, rax
mov qword [rbx + 8], rax
jmp 0x100497ad1
xor edx, edx
mov rcx, rsi
call sym.vim.exe_check_for_string_arg
test eax, eax
je 0x100497ad1
mov edx, 1
mov rcx, rsi
call sym.vim.exe_check_for_opt_string_arg
test eax, eax
jne 0x100497af2
jmp 0x100497ad1
mov rcx, qword [sym.vim.exe_e_invalid_argument]
call sub.msys_intl_8.dll_libintl_gettext
mov rcx, rax
add rsp, 0x78
pop rbx
pop rsi
pop r12
pop r13
jmp sym.vim.exe_emsg
lea rdx, [rsp + 0x20]
lea rcx, [rsi + 0x10]
call sym.vim.exe_tv_get_string_buf
cmp byte [rax], 0
mov r13, rax
je 0x100497b0e
cmp byte [rax], 0x64
je 0x100497bc0
cmp byte [r13], 0x72
jne 0x1006767d4
cmp byte [r13 + 1], 0x66
jne 0x1006767d4
cmp byte [r13 + 2], 0
jne 0x1006767d4
mov rcx, r12
call sym.vim.exe_delete_recursive
cdqe
mov qword [rbx + 8], rax
jmp 0x100497ad1
cmp byte [rax + 1], 0
jne 0x100497b8b
mov rcx, r12
call sub.msys_2.0.dll_rmdir
neg eax
sbb rax, rax
mov qword [rbx + 8], rax
jmp 0x100497ad1
mov rcx, qword [sym.vim.exe_e_invalid_expression_str]
call sub.msys_intl_8.dll_libintl_gettext
mov rdx, r13
mov rcx, rax
call sym.vim.exe_semsg
nop
jmp 0x100497ad1

Function at 0x100497fc0
Capabilities:
Get file attributes

Disassembly:
push r12
push rsi
push rbx
sub rsp, 0xb0
movabs rax, 0x2d2d2d2d2d2d2d2d
mov qword [rsp + 0x26], rax
mov eax, 0x2d
mov r12, rcx
mov rbx, rdx
mov word [rsp + 0x2e], ax
call sym.vim.exe_in_vim9script
test eax, eax
je 0x100498001
xor edx, edx
mov rcx, r12
call sym.vim.exe_check_for_string_arg
test eax, eax
je 0x10049802a
mov rcx, r12
call sym.vim.exe_tv_get_string
mov dword [rbx], 7
lea rdx, [rsp + 0x30]
mov rcx, rax
call sub.msys_2.0.dll_stat
mov r8d, eax
xor eax, eax
test r8d, r8d
jns 0x100498040
mov qword [rbx + 8], rax
add rsp, 0xb0
pop rbx
pop rsi
pop r12
ret
mov r11d, dword [rsp + 0x40]
lea r8, [rsp + 0x26]
mov dword [rsp + 0x22], 0x787772
mov r10d, 8
mov r9d, 1
mov esi, 0xaaaaaaab
nop dword [rax + rax]
mov ecx, r10d
mov edx, r9d
sub ecx, eax
shl edx, cl
mov ecx, edx
mov edx, 0x2d
test ecx, r11d
je 0x100498097
mov edx, eax
imul rdx, rsi
shr rdx, 0x21
lea ecx, [rdx + rdx*2]
mov edx, eax
sub edx, ecx
movsxd rdx, edx
movzx edx, byte [rsp + rdx + 0x22]
mov byte [r8 + rax], dl
add rax, 1
cmp rax, 9
jne 0x100498068
mov rcx, r8
call sym.vim.exe_vim_strsave
jmp 0x100498026
Function at 0x1004980c0
Capabilities:
Get file attributes

Disassembly:
push r12
push rbx
sub rsp, 0xa8
mov r12, rcx
mov rbx, rdx
call sym.vim.exe_in_vim9script
test eax, eax
je 0x1004980e7
xor edx, edx
mov rcx, r12
call sym.vim.exe_check_for_string_arg
test eax, eax
je 0x10049810b
mov rcx, r12
call sym.vim.exe_tv_get_string
lea rdx, [rsp + 0x20]
mov rcx, rax
mov r12, rax
call sub.msys_2.0.dll_stat
test eax, eax
jns 0x100498120
mov qword [rbx + 8], 0xffffffffffffffff
add rsp, 0xa8
pop rbx
pop r12
ret
mov rcx, r12
call sym.vim.exe_mch_isdir
test eax, eax
je 0x100498140
mov qword [rbx + 8], 0
add rsp, 0xa8
pop rbx
pop r12
ret
mov rax, qword [rsp + 0x48]
mov qword [rbx + 8], rax
add rsp, 0xa8
pop rbx
pop r12
ret

Function at 0x100498160
Capabilities:
Get file attributes

Disassembly:
push r12
push rbx
sub rsp, 0xa8
mov r12, rcx
mov rbx, rdx
call sym.vim.exe_in_vim9script
test eax, eax
je 0x100498187
xor edx, edx
mov rcx, r12
call sym.vim.exe_check_for_string_arg
test eax, eax
je 0x1004981af
mov rcx, r12
call sym.vim.exe_tv_get_string
lea rdx, [rsp + 0x20]
mov rcx, rax
call sub.msys_2.0.dll_stat
test eax, eax
mov rax, 0xffffffffffffffff
cmovns rax, qword [rsp + 0x60]
mov qword [rbx + 8], rax
add rsp, 0xa8
pop rbx
pop r12
ret

Function at 0x100498240
Capabilities:
Get file attributes

Disassembly:
push r12
push rbx
sub rsp, 0xa8
mov r12, rcx
mov rbx, rdx
call sym.vim.exe_in_vim9script
test eax, eax
je 0x100498267
xor edx, edx
mov rcx, r12
call sym.vim.exe_check_for_string_arg
test eax, eax
je 0x100498290
mov rcx, r12
call sym.vim.exe_tv_get_string
mov dword [rbx], 7
lea rdx, [rsp + 0x20]
mov rcx, rax
call sub.msys_2.0.dll_lstat
mov r8d, eax
xor eax, eax
test r8d, r8d
jns 0x1004982a0
mov qword [rbx + 8], rax
add rsp, 0xa8
pop rbx
pop r12
ret
mov eax, dword [rsp + 0x30]
lea rcx, [0x1006c0c4b]
and eax, 0xf000
cmp eax, 0x8000
je 0x100498318
lea rcx, [0x1006c0c50]
cmp eax, 0x4000
je 0x100498318
lea rcx, [0x1006c0c54]
cmp eax, 0xa000
je 0x100498318
lea rcx, str.bdev
cmp eax, 0x6000
je 0x100498318
lea rcx, str.cdev
cmp eax, 0x2000
je 0x100498318
lea rcx, str.fifo
cmp eax, 0x1000
je 0x100498318
cmp eax, 0xc000
lea rcx, [0x1006c0c68]
lea rax, [0x1006c0c6f]
cmovne rcx, rax
nop dword [rax]
call sym.vim.exe_vim_strsave
jmp 0x10049828c
Function at 0x100498c70
Capabilities:
Read file on windows

Disassembly:
push r13
push r12
sub rsp, 0x28
mov r12, rcx
mov r13, rdx
call sym.vim.exe_in_vim9script
test eax, eax
je 0x100498ccb
xor edx, edx
mov rcx, r12
call sym.vim.exe_check_for_nonempty_string_arg
test eax, eax
jne 0x100498ca0
add rsp, 0x28
pop r12
pop r13
ret
mov edx, 1
mov rcx, r12
call sym.vim.exe_check_for_opt_string_arg
test eax, eax
je 0x100498c95
mov eax, dword [r12 + 0x10]
test eax, eax
je 0x100498ccb
mov edx, 2
mov rcx, r12
call sym.vim.exe_check_for_opt_number_arg
test eax, eax
je 0x100498c95
xor r8d, r8d
mov rdx, r13
mov rcx, r12
add rsp, 0x28
pop r12
pop r13
jmp 0x100497100

Function at 0x100499030
Capabilities:
Get file attributes

Disassembly:
push r14
mov eax, 0x3128
push r13
push r12
push rdi
push rsi
push rbx
call fcn.100672980
sub rsp, rax
mov r12, rdx
mov esi, r8d
lea r13, [rsp + 0x120]
test r9d, r9d
je 0x1004991c0
mov r8d, 0x1000
mov rdx, r13
call sym.vim.exe_expand_env
lea rdx, [rsp + 0x20]
mov rcx, r13
call sub.msys_2.0.dll_stat
lea rdx, [rsp + 0xa0]
mov rcx, r12
mov ebx, eax
call sub.msys_2.0.dll_stat
test ebx, ebx
setne cl
test eax, eax
setne dl
mov edi, ecx
and dil, dl
je 0x100499188
test esi, esi
je 0x100499168
mov rsi, qword [sym.vim.exe_p_fic]
mov edx, dword [rsi]
test edx, edx
jne 0x100499230
mov rdx, r12
mov rcx, r13
call sub.msys_2.0.dll_strcmp
test eax, eax
je 0x10049915a
mov rcx, r13
mov byte [rsp + 0x1120], 0
mov ebx, 1
lea r14, [rsp + 0x1120]
call sym.vim.exe_path_with_url
test eax, eax
je 0x1004991e0
mov r8d, 0xfff
mov rdx, r13
mov rcx, r14
call sym.vim.exe_vim_strncpy
mov byte [rsp + 0x2120], 0
test r12, r12
je 0x100499168
mov rcx, r12
lea r13, [rsp + 0x2120]
call sym.vim.exe_path_with_url
test eax, eax
je 0x100499208
mov r8d, 0xfff
mov rdx, r12
mov rcx, r13
call sym.vim.exe_vim_strncpy
cmp ebx, 1
jne 0x100499168
test dil, dil
je 0x100499168
mov eax, dword [rsi]
test eax, eax
jne 0x100499250
mov rdx, r13
mov rcx, r14
call sub.msys_2.0.dll_strcmp
test eax, eax
jne 0x100499168
mov r8d, 7
jmp 0x10049916e
mov r8d, 4
mov eax, r8d
add rsp, 0x3128
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
ret
or ebx, eax
mov r8d, 6
jne 0x10049916e
mov eax, dword [rsp + 0xa0]
mov r8d, 2
cmp dword [rsp + 0x20], eax
jne 0x10049916e
xor r8d, r8d
mov rax, qword [rsp + 0xa8]
cmp qword [rsp + 0x28], rax
setne r8b
add r8d, 1
jmp 0x10049916e
mov rdx, rcx
mov r8d, 0xfff
mov rcx, r13
call sym.vim.exe_vim_strncpy
jmp 0x10049906b
xor r9d, r9d
mov r8d, 0x1000
mov rdx, r14
mov rcx, r13
call sym.vim.exe_mch_FullName
mov ebx, eax
test eax, eax
jne 0x100499101
jmp 0x1004990f0
xor r9d, r9d
mov r8d, 0x1000
mov rdx, r13
mov rcx, r12
call sym.vim.exe_mch_FullName
test eax, eax
je 0x100499266
cmp eax, 1
sete dil
jmp 0x100499137
mov r8d, 0x7fffffff
mov rdx, r12
mov rcx, r13
call sym.vim.exe_mb_strnicmp
jmp 0x1004990c3
mov r8d, 0x7fffffff
mov rdx, r13
mov rcx, r14
call sym.vim.exe_mb_strnicmp
jmp 0x100499156
xor edi, edi
jmp 0x100499126
Function at 0x10049ae20
Capabilities:
Get file attributes

Disassembly:
sub rsp, 0xa8
lea rdx, [rsp + 0x20]
call sub.msys_2.0.dll_stat
test eax, eax
sete al
movzx eax, al
add rsp, 0xa8
ret

Function at 0x10049afa0
Capabilities:
Get file attributes

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xa0
mov rdi, rcx
mov r12, rdx
mov ebx, r8d
test r8b, 4
jne 0x10049afd6
test bh, 0x10
je 0x10049b080
lea rdx, [rsp + 0x20]
mov rcx, r12
call sub.msys_2.0.dll_lstat
test eax, eax
js 0x10049b03b
mov rcx, r12
call sym.vim.exe_mch_isdir
mov esi, eax
test eax, eax
je 0x10049b050
test bl, 1
je 0x10049b03b
mov edx, 1
mov rcx, rdi
call sym.vim.exe_ga_grow
test eax, eax
je 0x10049b03b
mov rcx, r12
call sub.msys_2.0.dll_strlen
movsxd rdx, esi
lea rcx, [rdx + rax + 1]
call sym.vim.exe_alloc
mov rbp, rax
test rax, rax
je 0x10049b03b
mov rdx, r12
mov rcx, rax
call sub.msys_2.0.dll_strcpy
test esi, esi
je 0x10049b02b
and ebx, 8
jne 0x10049b0a8
movsxd rax, dword [rdi]
mov rdx, qword [rdi + 0x10]
lea ecx, [rax + 1]
mov dword [rdi], ecx
mov qword [rdx + rax*8], rbp
add rsp, 0xa0
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
test bl, 2
je 0x10049b03b
test bl, 0x40
je 0x10049afe9
xor r8d, r8d
test bh, 0x20
mov rcx, r12
sete r8b
xor edx, edx
call sym.vim.exe_mch_can_exe
test eax, eax
jne 0x10049afe9
jmp 0x10049b03b
mov rcx, rdx
call sym.vim.exe_mch_getperm
test rax, rax
js 0x10049b03b
mov rcx, r12
call sym.vim.exe_mch_isdir
mov esi, eax
test eax, eax
jne 0x10049afe4
jmp 0x10049b050
mov rcx, rbp
call sym.vim.exe_add_pathsep
jmp 0x10049b02b
Function at 0x10049be00
Capabilities:
Read file on windows

Disassembly:
mov r10d, dword [0x100721900]
mov eax, dword [rsp + 0x28]
test r10d, r10d
jne 0x10049be20
mov dword [rsp + 0x28], eax
jmp fcn.10049b7e0
jmp sym.vim.exe_mch_expand_wildcards
Function at 0x1004acbf0
Capabilities:
Write file on windows

Disassembly:
push rbx
sub rsp, 0x20
mov eax, dword [0x100722ac0]
test eax, eax
je 0x1004acc08
add rsp, 0x20
pop rbx
ret
movsxd rbx, edx
mov r9, qword [0x100722ac8]
mov edx, 1
mov r8, rbx
call sub.msys_2.0.dll_fwrite
cmp rbx, rax
je 0x1004acbff
mov rcx, qword [sym.vim.exe_e_error_writing_to_postscript_output_file]
call sub.msys_intl_8.dll_libintl_gettext
mov rcx, rax
call sym.vim.exe_emsg
mov dword [0x100722ac0], 1
add rsp, 0x20
pop rbx
ret

Function at 0x1004acce0
Capabilities:
Write file on windows

Disassembly:
push r12
push rbx
sub rsp, 0x28
mov r12, rcx
call sub.msys_2.0.dll_strlen
mov edx, dword [0x100722ac0]
test edx, edx
je 0x1004acd08
add rsp, 0x28
pop rbx
pop r12
ret
movsxd rbx, eax
mov r9, qword [0x100722ac8]
mov edx, 1
mov rcx, r12
mov r8, rbx
call sub.msys_2.0.dll_fwrite
cmp rbx, rax
je 0x1004accf9
mov rcx, qword [sym.vim.exe_e_error_writing_to_postscript_output_file]
call sub.msys_intl_8.dll_libintl_gettext
mov rcx, rax
call sym.vim.exe_emsg
mov dword [0x100722ac0], 1
add rsp, 0x28
pop rbx
pop r12
ret

Function at 0x1004acd50
Capabilities:
Write file on windows

Disassembly:
push r12
push rsi
push rbx
sub rsp, 0x40
lea r12, [0x100722920]
mov qword [rsp + 0x28], r9
mov rbx, rcx
mov r9, rcx
mov esi, r8d
mov qword [rsp + 0x20], rdx
lea r8, str.___s__VIM__s___s_ref_n
mov edx, 0x101
mov rcx, r12
call sym.vim.exe_vim_snprintf
mov rcx, r12
call fcn.1004acce0
mov eax, dword [0x1007228d4]
test eax, eax
je 0x1004acdf0
pxor xmm1, xmm1
mov qword [rsp + 0x38], rbx
mov rcx, r12
xor edx, edx
cvtsi2sd xmm1, dword [0x100687fc0]
mov dword [rsp + 0x28], esi
movsd xmm0, qword [0x1006c1980]
lea r9, str.__s__d__f____s_sffs_n
mov qword [rsp + 0x20], rbx
mov r8d, 0x101
divsd xmm0, xmm1
movsd qword [rsp + 0x30], xmm0
call sub.msys_2.0.dll___sprintf_chk
mov rcx, r12
add rsp, 0x40
pop rbx
pop rsi
pop r12
jmp fcn.1004acce0
mov qword [rsp + 0x28], rbx
mov rcx, r12
mov r9, rbx
mov edx, 0x101
mov dword [rsp + 0x20], esi
lea r8, str.__s__d____s_ffs_n
call sym.vim.exe_vim_snprintf
mov rcx, r12
add rsp, 0x40
pop rbx
pop rsi
pop r12
jmp fcn.1004acce0