Function at 0x100574600
Capabilities:
Encrypt data using rc4 prga

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 edi, dword [rcx + 0x10]
mov ebx, dword [rcx + 0x38]
mov r13, qword [rcx + 0x30]
mov dword [rbp + 8], edx
mov rsi, rcx
test edi, edi
je 0x100574848
mov rax, qword [sym.vim.exe_KeyStuffed]
mov r14d, 1
mov r9d, dword [rax]
test r9d, r9d
je 0x1005747d0
mov rax, qword [rsi]
xor edx, edx
cmp ebx, 0xffffffff
setne dl
mov dword [rax + 0x14], edx
call sym.vim.exe_ml_get_curline
mov r12, rax
mov rax, qword [sym.vim.exe_curwin]
mov rcx, r12
mov rax, qword [rax]
mov r15d, dword [rax + 0x40]
call sub.msys_2.0.dll_strlen
mov esi, eax
test r13, r13
je 0x100574757
mov qword [rbp - 0x58], r13
mov rax, qword [sym.vim.exe_has_mbyte]
mov ecx, dword [rax]
test ecx, ecx
jne 0x1005746f2
lea eax, [r15 + rbx]
movsxd rcx, ebx
cdqe
jmp 0x1005746c2
cmp esi, eax
jle 0x1005746c9
movzx edx, byte [r12 + rax]
cmp edx, edi
sete dl
add rax, rcx
and edx, r14d
mov r14d, 1
test dl, dl
jne 0x100574746
mov r15d, eax
test eax, eax
jns 0x1005746a0
xor eax, eax
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
movzx eax, byte [rcx]
cmp eax, edi
jne 0x1005746ec
test r13b, r13b
jne 0x100574746
mov r14d, 1
test ebx, ebx
jle 0x1005747a8
mov rax, qword [sym.vim.exe_mb_ptr2len]
movsxd rcx, r15d
add rcx, r12
call qword [rax]
add r15d, eax
cmp esi, r15d
jle 0x1005746c9
movsxd r8, dword [0x1006836a4]
movsxd rcx, r15d
mov r13d, r14d
add rcx, r12
and r13d, 1
cmp r8d, 1
je 0x1005746e0
lea rdx, [0x10070d210]
mov r14d, 1
call sub.msys_2.0.dll_strncmp
test eax, eax
jne 0x1005746f2
test r13b, r13b
je 0x1005746f2
sub qword [rbp - 0x58], 1
mov r14d, 1
jne 0x100574684
mov edx, dword [rbp + 8]
test edx, edx
je 0x10057478b
mov rax, qword [sym.vim.exe_has_mbyte]
sub r15d, ebx
mov eax, dword [rax]
test eax, eax
je 0x10057478b
test ebx, ebx
js 0x1005748c0
mov rax, qword [sym.vim.exe_mb_head_off]
movsxd rdx, r15d
mov rcx, r12
add rdx, r12
call qword [rax]
sub r15d, eax
mov rax, qword [sym.vim.exe_curwin]
mov rax, qword [rax]
mov dword [rax + 0x40], r15d
mov eax, 1
jmp 0x1005746cb
test r15d, r15d
je 0x1005746c9
movsxd rax, r15d
mov rcx, r12
lea rdx, [r12 + rax - 1]
mov rax, qword [sym.vim.exe_mb_head_off]
call qword [rax]
add eax, 1
sub r15d, eax
jmp 0x100574711
mov r12, qword [sym.vim.exe_mb_char2bytes]
mov dword [0x1006836a8], edx
mov ecx, edi
lea rdx, [0x10070d210]
mov byte [0x10070d226], dil
mov dword [0x1006836ac], ebx
call qword [r12]
mov ecx, dword [rsi + 0x14]
mov dword [0x1006836a4], eax
test ecx, ecx
je 0x100574649
cdqe
lea r15, [0x10070d210]
lea rdx, [rax + r15]
call qword [r12]
mov ecx, dword [rsi + 0x18]
add eax, dword [0x1006836a4]
mov dword [0x1006836a4], eax
test ecx, ecx
je 0x100574649
cdqe
lea rdx, [rax + r15]
call qword [r12]
add dword [0x1006836a4], eax
jmp 0x100574649
movzx edi, byte [0x10070d226]
test dil, dil
jne 0x100574861
cmp dword [0x1006836a4], 1
je 0x1005746c9
mov eax, dword [0x1006836ac]
mov r14d, 1
mov edx, eax
neg edx
test ebx, ebx
cmovne eax, edx
mov edx, 0x3b
mov ebx, eax
mov eax, dword [0x1006836a8]
mov dword [rbp + 8], eax
mov rax, qword [sym.vim.exe_p_cpo]
mov rcx, qword [rax]
call sym.vim.exe_vim_strchr
test rax, rax
jne 0x100574649
mov r8d, dword [rbp + 8]
cmp r13, 1
sete r10b
test r8d, r8d
setne al
and r10d, eax
xor r10d, 1
movzx r14d, r10b
jmp 0x100574649
mov eax, dword [0x1006836a4]
lea r15d, [r15 + rax - 1]
jmp 0x10057478b