Function at 0x14003756a
Capabilities:
Encode data using xor

Disassembly:
jmp 0x1400374f0
push rbx
push rsi
push r12
push r13
push r15
sub rsp, 0x30
mov r13, rcx
mov ebx, edx
mov rsi, r9
mov r15, r8
mov edx, dword [r13 + 0x10]
lea eax, [rdx - 5]
cmp eax, 0xc
ja 0x140037804
test byte [r15 + 0x27d], 0x20
je 0x1400377a9
mov r10, qword [r13]
cmp ebx, 1
je 0x140037d18
mov edx, ebx
shr edx, 0x1f
add edx, ebx
mov r9d, edx
sar r9d, 1
test r9d, r9d
jle 0x1400377f5
sar edx, 4
xor eax, eax
shr edx, 0x1c
xor r12d, r12d
add edx, r9d
mov r11d, 1
sar edx, 4
xor r13d, r13d
test edx, edx
jbe 0x140037767
movsxd r15, ebx
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], r14
lea r11, [rsi + r15]
add r15, r10
movsxd r13, r13d
inc eax
movsxd r12, r12d
mov dil, byte [r15 + r13 - 1]
mov r14b, byte [r12 + r10]
mov byte [r12 + rsi], dil
xor r14b, dil
xor r14b, byte [r15 + r13 - 1]
mov byte [r13 + r11 - 1], r14b
mov dil, byte [r15 + r13 - 2]
mov r14b, byte [r12 + r10 + 1]
mov byte [r12 + rsi + 1], dil
xor r14b, dil
xor r14b, byte [r15 + r13 - 2]
mov byte [r13 + r11 - 2], r14b
mov dil, byte [r15 + r13 - 3]
mov r14b, byte [r12 + r10 + 2]
mov byte [r12 + rsi + 2], dil
xor r14b, dil
xor r14b, byte [r15 + r13 - 3]
mov byte [r13 + r11 - 3], r14b
mov dil, byte [r15 + r13 - 4]
mov r14b, byte [r12 + r10 + 3]
mov byte [r12 + rsi + 3], dil
xor r14b, dil
xor r14b, byte [r15 + r13 - 4]
mov byte [r13 + r11 - 4], r14b
mov dil, byte [r15 + r13 - 5]
mov r14b, byte [r12 + r10 + 4]
mov byte [r12 + rsi + 4], dil
xor r14b, dil
xor r14b, byte [r15 + r13 - 5]
mov byte [r13 + r11 - 5], r14b
mov dil, byte [r15 + r13 - 6]
mov r14b, byte [r12 + r10 + 5]
mov byte [r12 + rsi + 5], dil
xor r14b, dil
xor r14b, byte [r15 + r13 - 6]
mov byte [r13 + r11 - 6], r14b
mov dil, byte [r15 + r13 - 7]
mov r14b, byte [r12 + r10 + 6]
mov byte [r12 + rsi + 6], dil
xor r14b, dil
xor r14b, byte [r15 + r13 - 7]
mov byte [r13 + r11 - 7], r14b
mov dil, byte [r15 + r13 - 8]
mov r14b, byte [r12 + r10 + 7]
mov byte [r12 + rsi + 7], dil
xor r14b, dil
xor r14b, byte [r15 + r13 - 8]
mov byte [r13 + r11 - 8], r14b
mov dil, byte [r15 + r13 - 9]
mov r14b, byte [r12 + r10 + 8]
mov byte [r12 + rsi + 8], dil
xor r14b, dil
xor r14b, byte [r15 + r13 - 9]
mov byte [r13 + r11 - 9], r14b
mov dil, byte [r15 + r13 - 0xa]
mov r14b, byte [r12 + r10 + 9]
mov byte [r12 + rsi + 9], dil
xor r14b, dil
xor r14b, byte [r15 + r13 - 0xa]
mov byte [r13 + r11 - 0xa], r14b
mov dil, byte [r15 + r13 - 0xb]
mov r14b, byte [r12 + r10 + 0xa]
mov byte [r12 + rsi + 0xa], dil
xor r14b, dil
xor r14b, byte [r15 + r13 - 0xb]
mov byte [r13 + r11 - 0xb], r14b
mov dil, byte [r15 + r13 - 0xc]
mov r14b, byte [r12 + r10 + 0xb]
mov byte [r12 + rsi + 0xb], dil
xor r14b, dil
xor r14b, byte [r15 + r13 - 0xc]
mov byte [r13 + r11 - 0xc], r14b
mov dil, byte [r15 + r13 - 0xd]
mov r14b, byte [r12 + r10 + 0xc]
mov byte [r12 + rsi + 0xc], dil
xor r14b, dil
xor r14b, byte [r15 + r13 - 0xd]
mov byte [r13 + r11 - 0xd], r14b
mov dil, byte [r15 + r13 - 0xe]
mov r14b, byte [r12 + r10 + 0xd]
mov byte [r12 + rsi + 0xd], dil
xor r14b, dil
xor r14b, byte [r15 + r13 - 0xe]
mov byte [r13 + r11 - 0xe], r14b
mov dil, byte [r15 + r13 - 0xf]
mov r14b, byte [r12 + r10 + 0xe]
mov byte [r12 + rsi + 0xe], dil
xor r14b, dil
xor r14b, byte [r15 + r13 - 0xf]
mov byte [r13 + r11 - 0xf], r14b
mov dil, byte [r15 + r13 - 0x10]
mov r14b, byte [r12 + r10 + 0xf]
mov byte [r12 + rsi + 0xf], dil
xor r14b, dil
xor r14b, byte [r15 + r13 - 0x10]
add r12d, 0x10
nop
mov byte [r13 + r11 - 0x10], r14b
add r13d, 0xfffffff0
cmp eax, edx
jb 0x14003757e
shl eax, 4
inc eax
mov rdi, qword [rsp + 0x28]
mov r14, qword [rsp + 0x20]
movsxd r11, eax
dec r11
mov rdx, r11
movsxd r9, r9d
neg rdx
cmp r11, r9
jae 0x1400377f5
movsxd rbx, ebx
lea rax, [rsi + rbx]
add rbx, r10
mov r12b, byte [rdx + rbx - 1]
mov r13b, byte [r11 + r10]
mov byte [r11 + rsi], r12b
xor r13b, r12b
xor r13b, byte [rdx + rbx - 1]
inc r11
mov byte [rdx + rax - 1], r13b
dec rdx
cmp r11, r9
jb 0x140037782
jmp 0x1400377f5
cmp ebx, 1
je 0x140037d22
cmp ebx, 2
je 0x1400377eb
cmp ebx, 4
jne 0x1400377c6
mov rax, qword [r13]
mov edx, dword [rax]
mov dword [rsi], edx
jmp 0x1400377f5
cmp ebx, 8
jne 0x1400377d7
mov rax, qword [r13]
mov rdx, qword [rax]
mov qword [rsi], rdx
jmp 0x1400377f5
movsxd rbx, ebx
mov rcx, rsi
mov r8, rbx
mov rdx, qword [r13]
call fcn.140003d46
jmp 0x1400377f5
mov rax, qword [r13]
movzx edx, word [rax]
mov word [rsi], dx
xor eax, eax
add rsp, 0x30
pop r15
pop r13
pop r12
pop rsi
pop rbx
ret
lea eax, [rdx - 0x19]
cmp eax, 6
jbe 0x140037820
lea eax, [rdx - 0x32]
cmp eax, 2
jbe 0x140037820
lea eax, [rdx - 0x28]
cmp eax, 8
ja 0x140037d09
movsxd rdx, edx
lea rax, [0x140000000]
movsx r12d, byte [r15 + 0x26a]
mov eax, dword [rax + rdx*4 + 0x14a33c]
cmp eax, 0xffffffff
je 0x140037875
lea r9, [0x140000000]
mov rcx, qword [r13]
lea rdx, [r12*8]
sub rdx, r12
shl rdx, 3
lea r10, [rdx + rax*8]
mov rax, qword [r9 + r10 + 0x14a5c0]
test rax, rax
je 0x140037887
xor edx, edx
mov r8, rsi
call rax
cmp eax, 1
je 0x1400378bd
mov eax, 0x5f
add rsp, 0x30
pop r15
pop r13
pop r12
pop rsi
pop rbx
ret
cmp ebx, 4
jne 0x140037892
mov eax, dword [rcx]
mov dword [rsi], eax
jmp 0x1400378bd
cmp ebx, 8
jne 0x1400378a3
mov eax, dword [rcx]
mov dword [rsi], eax
mov edx, dword [rcx + 4]
mov dword [rsi + 4], edx
jmp 0x1400378bd
mov eax, dword [rcx]
mov dword [rsi], eax
mov edx, dword [rcx + 4]
mov dword [rsi + 4], edx
mov r9d, dword [rcx + 8]
mov dword [rsi + 8], r9d
mov r10d, dword [rcx + 0xc]
mov dword [rsi + 0xc], r10d
test byte [r15 + 0x27d], 0x20
je 0x140037d09
test r12d, r12d
je 0x1400378e2
mov eax, dword [r13 + 0x10]
cmp eax, 0x32
je 0x1400378e2
cmp eax, 0x34
jne 0x140037d09
mov eax, ebx
mov r9d, ebx
shr eax, 0x1f
neg r9d
add eax, ebx
dec r9d
mov edx, eax
sar edx, 1
cmp r9d, 0x40
jle 0x140037b09
test edx, edx
jle 0x140037d09
sar eax, 4
xor r12d, r12d
shr eax, 0x1c
xor r9d, r9d
add eax, edx
mov r11d, 1
sar eax, 4
xor r10d, r10d
test eax, eax
jbe 0x140037ac3
movsxd r11, ebx
add r11, rsi
movsxd r10, r10d
inc r12d
movsxd r9, r9d
mov r13b, byte [r10 + r11 - 1]
mov r15b, byte [r9 + rsi]
mov byte [r9 + rsi], r13b
xor r15b, r13b
xor byte [r10 + r11 - 1], r15b
mov r13b, byte [r10 + r11 - 2]
mov r15b, byte [r9 + rsi + 1]
mov byte [r9 + rsi + 1], r13b
xor r15b, r13b
xor byte [r10 + r11 - 2], r15b
mov r13b, byte [r10 + r11 - 3]
mov r15b, byte [r9 + rsi + 2]
mov byte [r9 + rsi + 2], r13b
xor r15b, r13b
xor byte [r10 + r11 - 3], r15b
mov r13b, byte [r10 + r11 - 4]
mov r15b, byte [r9 + rsi + 3]
mov byte [r9 + rsi + 3], r13b
xor r15b, r13b
xor byte [r10 + r11 - 4], r15b
mov r13b, byte [r10 + r11 - 5]
mov r15b, byte [r9 + rsi + 4]
mov byte [r9 + rsi + 4], r13b
xor r15b, r13b
xor byte [r10 + r11 - 5], r15b
mov r13b, byte [r10 + r11 - 6]
mov r15b, byte [r9 + rsi + 5]
mov byte [r9 + rsi + 5], r13b
xor r15b, r13b
xor byte [r10 + r11 - 6], r15b
mov r13b, byte [r10 + r11 - 7]
mov r15b, byte [r9 + rsi + 6]
mov byte [r9 + rsi + 6], r13b
xor r15b, r13b
xor byte [r10 + r11 - 7], r15b
mov r13b, byte [r10 + r11 - 8]
mov r15b, byte [r9 + rsi + 7]
mov byte [r9 + rsi + 7], r13b
xor r15b, r13b
xor byte [r10 + r11 - 8], r15b
mov r13b, byte [r10 + r11 - 9]
mov r15b, byte [r9 + rsi + 8]
mov byte [r9 + rsi + 8], r13b
xor r15b, r13b
xor byte [r10 + r11 - 9], r15b
mov r13b, byte [r10 + r11 - 0xa]
mov r15b, byte [r9 + rsi + 9]
mov byte [r9 + rsi + 9], r13b
xor r15b, r13b
xor byte [r10 + r11 - 0xa], r15b
mov r13b, byte [r10 + r11 - 0xb]
mov r15b, byte [r9 + rsi + 0xa]
mov byte [r9 + rsi + 0xa], r13b
xor r15b, r13b
xor byte [r10 + r11 - 0xb], r15b
mov r13b, byte [r10 + r11 - 0xc]
nop
mov r15b, byte [r9 + rsi + 0xb]
mov byte [r9 + rsi + 0xb], r13b
xor r15b, r13b
xor byte [r10 + r11 - 0xc], r15b
mov r13b, byte [r10 + r11 - 0xd]
mov r15b, byte [r9 + rsi + 0xc]
mov byte [r9 + rsi + 0xc], r13b
xor r15b, r13b
xor byte [r10 + r11 - 0xd], r15b
mov r13b, byte [r10 + r11 - 0xe]
mov r15b, byte [r9 + rsi + 0xd]
mov byte [r9 + rsi + 0xd], r13b
xor r15b, r13b
xor byte [r10 + r11 - 0xe], r15b
mov r13b, byte [r10 + r11 - 0xf]
mov r15b, byte [r9 + rsi + 0xe]
mov byte [r9 + rsi + 0xe], r13b
xor r15b, r13b
xor byte [r10 + r11 - 0xf], r15b
mov r13b, byte [r10 + r11 - 0x10]
mov r15b, byte [r9 + rsi + 0xf]
mov byte [r9 + rsi + 0xf], r13b
xor r15b, r13b
xor byte [r10 + r11 - 0x10], r15b
add r9d, 0x10
add r10d, 0xfffffff0
cmp r12d, eax
jb 0x140037930
shl r12d, 4
inc r12d
movsxd r11, r12d
movsxd rdx, edx
lea r10, [r11 - 1]
mov rax, r10
lea r9, [rsi + r11 - 1]
neg rax
cmp r10, rdx
jae 0x140037d09
movsxd rbx, ebx
add rbx, rsi
mov cl, byte [rax + rbx - 1]
inc r10
mov sil, byte [r9]
mov byte [r9], cl
xor sil, cl
xor byte [rax + rbx - 1], sil
dec rax
inc r9
cmp r10, rdx
jb 0x140037ae4
jmp 0x140037d09
test edx, edx
jle 0x140037d09
sar eax, 4
xor r12d, r12d
shr eax, 0x1c
xor r9d, r9d
add eax, edx
mov r11d, 1
sar eax, 4
xor r10d, r10d
test eax, eax
jbe 0x140037ccc
movsxd r11, ebx
add r11, rsi
movsxd r10, r10d
inc r12d
movsxd r9, r9d
mov r13b, byte [r10 + r11 - 1]
mov r15b, byte [r9 + rsi]
mov byte [r9 + rsi], r13b
xor r15b, r13b
xor byte [r10 + r11 - 1], r15b
mov r13b, byte [r10 + r11 - 2]
mov r15b, byte [r9 + rsi + 1]
mov byte [r9 + rsi + 1], r13b
xor r15b, r13b
xor byte [r10 + r11 - 2], r15b
mov r13b, byte [r10 + r11 - 3]
mov r15b, byte [r9 + rsi + 2]
mov byte [r9 + rsi + 2], r13b
xor r15b, r13b
xor byte [r10 + r11 - 3], r15b
mov r13b, byte [r10 + r11 - 4]
mov r15b, byte [r9 + rsi + 3]
mov byte [r9 + rsi + 3], r13b
xor r15b, r13b
xor byte [r10 + r11 - 4], r15b
mov r13b, byte [r10 + r11 - 5]
mov r15b, byte [r9 + rsi + 4]
mov byte [r9 + rsi + 4], r13b
xor r15b, r13b
xor byte [r10 + r11 - 5], r15b
mov r13b, byte [r10 + r11 - 6]
mov r15b, byte [r9 + rsi + 5]
mov byte [r9 + rsi + 5], r13b
xor r15b, r13b
xor byte [r10 + r11 - 6], r15b
mov r13b, byte [r10 + r11 - 7]
mov r15b, byte [r9 + rsi + 6]
mov byte [r9 + rsi + 6], r13b
xor r15b, r13b
xor byte [r10 + r11 - 7], r15b
mov r13b, byte [r10 + r11 - 8]
mov r15b, byte [r9 + rsi + 7]
mov byte [r9 + rsi + 7], r13b
xor r15b, r13b
xor byte [r10 + r11 - 8], r15b
mov r13b, byte [r10 + r11 - 9]
mov r15b, byte [r9 + rsi + 8]
mov byte [r9 + rsi + 8], r13b
xor r15b, r13b
xor byte [r10 + r11 - 9], r15b
mov r13b, byte [r10 + r11 - 0xa]
mov r15b, byte [r9 + rsi + 9]
mov byte [r9 + rsi + 9], r13b
xor r15b, r13b
xor byte [r10 + r11 - 0xa], r15b
mov r13b, byte [r10 + r11 - 0xb]
mov r15b, byte [r9 + rsi + 0xa]
mov byte [r9 + rsi + 0xa], r13b
xor r15b, r13b
xor byte [r10 + r11 - 0xb], r15b
mov r13b, byte [r10 + r11 - 0xc]
nop
mov r15b, byte [r9 + rsi + 0xb]
mov byte [r9 + rsi + 0xb], r13b
xor r15b, r13b
xor byte [r10 + r11 - 0xc], r15b
mov r13b, byte [r10 + r11 - 0xd]
mov r15b, byte [r9 + rsi + 0xc]
mov byte [r9 + rsi + 0xc], r13b
xor r15b, r13b
xor byte [r10 + r11 - 0xd], r15b
mov r13b, byte [r10 + r11 - 0xe]
mov r15b, byte [r9 + rsi + 0xd]
mov byte [r9 + rsi + 0xd], r13b
xor r15b, r13b
xor byte [r10 + r11 - 0xe], r15b
mov r13b, byte [r10 + r11 - 0xf]
mov r15b, byte [r9 + rsi + 0xe]
mov byte [r9 + rsi + 0xe], r13b
xor r15b, r13b
xor byte [r10 + r11 - 0xf], r15b
mov r13b, byte [r10 + r11 - 0x10]
mov r15b, byte [r9 + rsi + 0xf]
mov byte [r9 + rsi + 0xf], r13b
xor r15b, r13b
xor byte [r10 + r11 - 0x10], r15b
add r9d, 0x10
add r10d, 0xfffffff0
cmp r12d, eax
jb 0x140037b39
shl r12d, 4
inc r12d
movsxd r11, r12d
movsxd rdx, edx
lea r10, [r11 - 1]
mov rax, r10
lea r9, [rsi + r11 - 1]
neg rax
cmp r10, rdx
jae 0x140037d09
movsxd rbx, ebx
add rbx, rsi
mov cl, byte [rax + rbx - 1]
inc r10
mov sil, byte [r9]
mov byte [r9], cl
xor sil, cl
xor byte [rax + rbx - 1], sil
dec rax
inc r9
cmp r10, rdx
jb 0x140037ce9
xor eax, eax
add rsp, 0x30
pop r15
pop r13
pop r12
pop rsi
pop rbx
ret
mov al, byte [r10]
mov byte [rsi], al
jmp 0x1400377f5
mov rax, qword [r13]
mov dl, byte [rax]
mov byte [rsi], dl
jmp 0x1400377f5