Function at 0x14037fa40
Capabilities:
Encode data using xor

Disassembly:
jmp 0x14037fa40
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
mov r14, rcx
mov ecx, dword [rcx + 0x10]
xor ebx, ebx
cmp ecx, 5
jl 0x14037fcd3
mov rsi, r9
mov r15, r8
mov edi, edx
cmp ecx, 0x11
ja 0x14037fa99
test byte [r15 + 0x295], 0x20
jne 0x14037fab0
lea eax, [rdi - 1]
cmp eax, 7
ja case.0x14037fa92.3
lea rcx, [0x14037fe04]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
mov rax, qword [r14]
jmp 0x14037fab8
lea eax, [rcx - 0x19]
cmp eax, 7
jb 0x14037fad4
cmp ecx, 0x32
jb 0x14037fac2
cmp ecx, 0x35
jb 0x14037fad4
jmp 0x14037fcd3
mov rax, qword [r14]
cmp edi, 1
jne 0x14037fb31
movzx eax, byte [rax]
mov byte [rsi], al
jmp 0x14037fcd3
cmp ecx, 0x28
jb 0x14037fcd3
cmp ecx, 0x31
je 0x14037fcd3
mov ebx, 0x5f
mov ecx, 0x1017fa4
bt rcx, rax
jb 0x14037fcd5
mov eax, eax
movsx r12, byte [r15 + 0x280]
lea rcx, [0x14052c4d0]
mov eax, dword [rcx + rax*4]
mov rcx, qword [r14]
mov edx, r12d
imul rdx, rdx, 0x38
lea r8, [0x14052c6d0]
add r8, rdx
mov rax, qword [r8 + rax*8]
test rax, rax
je 0x14037fc59
xor edx, edx
mov r8, rsi
call rax
test eax, eax
jne 0x14037fcd5
jmp 0x14037fcc9
jle 0x14037fcd5
mov ecx, edi
shr ecx, 0x1f
add ecx, edi
sar ecx, 1
cmp ecx, 4
jb 0x14037fc0a
mov edx, ecx
and edx, 0xfffffffc
lea r8d, [rdi - 1]
lea r9d, [rdi - 2]
lea r10d, [rdi - 3]
lea r11d, [rdi - 4]
mov r14d, 3
xor r15d, r15d
nop word [rax + rax]
movzx ebp, byte [rax + r14 - 3]
lea r12d, [r8 + r15]
movsxd r12, r12d
movzx r13d, byte [rax + r12]
mov byte [rsi + r14 - 3], r13b
xor bpl, byte [rax + r12]
xor bpl, r13b
mov byte [rsi + r12], bpl
movzx ebp, byte [rax + r14 - 2]
lea r12d, [r9 + r15]
movsxd r12, r12d
movzx r13d, byte [rax + r12]
mov byte [rsi + r14 - 2], r13b
xor bpl, byte [rax + r12]
xor bpl, r13b
mov byte [rsi + r12], bpl
movzx ebp, byte [rax + r14 - 1]
lea r12d, [r10 + r15]
movsxd r12, r12d
movzx r13d, byte [rax + r12]
mov byte [rsi + r14 - 1], r13b
xor bpl, byte [rax + r12]
xor bpl, r13b
mov byte [rsi + r12], bpl
movzx ebp, byte [rax + r14]
lea r12d, [r11 + r15]
movsxd r12, r12d
movzx r13d, byte [rax + r12]
mov byte [rsi + r14], r13b
xor bpl, byte [rax + r12]
xor bpl, r13b
mov byte [rsi + r12], bpl
add r14, 4
add r15, 0xfffffffffffffffc
mov r12, rdx
add r12, r15
jne 0x14037fb70
mov edx, ecx
and edx, 0xfffffffc
cmp rdx, rcx
jae 0x14037fcd5
mov r8d, ecx
not r8d
or r8d, 3
add r8d, edi
nop word cs:[rax + rax]
movzx r9d, byte [rax + rdx]
movsxd r8, r8d
movzx r10d, byte [rax + r8]
mov byte [rsi + rdx], r10b
xor r9b, byte [rax + r8]
xor r9b, r10b
mov byte [rsi + r8], r9b
inc rdx
dec r8d
cmp rcx, rdx
jne 0x14037fc30
jmp 0x14037fcd5
cmp edi, 8
je 0x14037fc9f
cmp edi, 4
jne 0x14037fcad
mov rax, rsi
jmp 0x14037fcc5
mov rax, qword [r14]
movzx eax, word [rax]
mov word [rsi], ax
jmp 0x14037fcd3
mov rdx, qword [r14]
movsxd r8, edi
mov rcx, rsi
call fcn.14000419c
jmp 0x14037fcd3
mov rax, qword [r14]
mov eax, dword [rax]
test sil, 3
mov dword [rsi], eax
jmp 0x14037fcd3
mov rax, qword [r14]
mov rax, qword [rax]
test sil, 3
mov qword [rsi], rax
jmp 0x14037fcd3
mov eax, dword [rcx]
mov dword [rsi], eax
add rcx, 4
lea rax, [rsi + 4]
jmp 0x14037fcc5
mov eax, dword [rcx]
mov dword [rsi], eax
mov eax, dword [rcx + 4]
mov dword [rsi + 4], eax
mov eax, dword [rcx + 8]
mov dword [rsi + 8], eax
add rcx, 0xc
lea rax, [rsi + 0xc]
mov ecx, dword [rcx]
mov dword [rax], ecx
test byte [r15 + 0x295], 0x20
jne 0x14037fce8
xor ebx, ebx
mov eax, ebx
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
test r12b, r12b
je 0x14037fd0c
mov eax, dword [r14 + 0x10]
cmp eax, 0x34
je 0x14037fcfb
cmp eax, 0x32
jne 0x14037fcd3
add r12b, 0xfd
cmp r12b, 1
ja 0x14037fcd3
cmp edi, 1
jg 0x14037fd11
jmp 0x14037fcd3
cmp edi, 2
jl 0x14037fcd3
mov eax, edi
shr eax, 0x1f
add eax, edi
sar eax, 1
cmp eax, 4
jb 0x14037fdc1
mov rcx, rax
shr rcx, 2
lea edx, [rdi - 2]
xor r8d, r8d
movzx r9d, byte [rsi + r8*4]
lea r10d, [rdx + 1]
movsxd r10, r10d
movzx r11d, byte [rsi + r10]
mov byte [rsi + r8*4], r11b
xor r9b, byte [rsi + r10]
xor r9b, r11b
mov byte [rsi + r10], r9b
movzx r9d, byte [rsi + r8*4 + 1]
movsxd rdx, edx
movzx r10d, byte [rsi + rdx]
mov byte [rsi + r8*4 + 1], r10b
xor r9b, byte [rsi + rdx]
xor r9b, r10b
mov byte [rsi + rdx], r9b
movzx r9d, byte [rsi + r8*4 + 2]
lea r10d, [rdx - 1]
movsxd r10, r10d
movzx r11d, byte [rsi + r10]
mov byte [rsi + r8*4 + 2], r11b
xor r9b, byte [rsi + r10]
xor r9b, r11b
mov byte [rsi + r10], r9b
movzx r9d, byte [rsi + r8*4 + 3]
lea r10d, [rdx - 2]
movsxd r10, r10d
movzx r11d, byte [rsi + r10]
mov byte [rsi + r8*4 + 3], r11b
xor r9b, byte [rsi + r10]
xor r9b, r11b
mov byte [rsi + r10], r9b
inc r8
add edx, 0xfffffffc
cmp rcx, r8
jne 0x14037fd30
mov ecx, eax
and ecx, 0xfffffffc
cmp rcx, rax
jae 0x14037fcd3
mov edx, eax
not edx
or edx, 3
add edx, edi
movzx r8d, byte [rsi + rcx]
movsxd rdx, edx
movzx r9d, byte [rsi + rdx]
mov byte [rsi + rcx], r9b
xor r8b, byte [rsi + rdx]
xor r8b, r9b
mov byte [rsi + rdx], r8b
inc rcx
dec edx
cmp rax, rcx
jne 0x14037fdd8
jmp 0x14037fcd3