Function at 0x4a3c09
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x108
movdqa xmmword [rsp + 0xf0], xmm7
movdqa xmmword [rsp + 0xe0], xmm6
test rdx, rdx
je 0x4a3c79
mov rsi, r9
mov rdi, r8
mov rbp, rdx
mov r14, rcx
cmp rdx, r9
jae 0x4a3c80
cmp rbp, 1
jne 0x4a3c9a
mov cl, byte [r14]
cmp rsi, 0xf
ja 0x4a3cec
dec rsi
xor edx, edx
cmp byte [rdi + rdx], cl
sete al
je 0x4a4100
lea r8, [rdx + 1]
cmp rsi, rdx
mov rdx, r8
jne 0x4a3c5c
jmp 0x4a4100
mov al, 1
jmp 0x4a4100
jne 0x4a3ce5
mov rcx, r14
mov rdx, rdi
mov r8, rbp
call sub.msvcrt.dll_memcmp
test eax, eax
sete al
jmp 0x4a4100
cmp rbp, 0x21
jae 0x4a3d6b
mov al, byte [r14]
cmp rbp, 2
jne 0x4a3cff
cmp rsi, 0x10
jbe 0x4a3d3b
movzx eax, al
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm6, xmm0, 0
mov dl, byte [r14 + 1]
mov eax, 0x11
mov qword [rsp + 0x40], rax
mov r12d, 1
jmp 0x4a3f22
xor eax, eax
jmp 0x4a4100
mov rdx, rdi
mov r8, rsi
call fcn.00428e20
test rax, rax
jmp 0x4a3df0
xor r8d, r8d
mov rcx, rbp
sub rcx, 4
cmovae r8, rcx
mov rcx, rbp
cmp r8, rcx
jae 0x4a3d6b
lea r12, [rcx - 1]
cmp r12, rbp
jae 0x4a4158
mov dl, byte [r14 + rcx - 1]
mov rcx, r12
cmp dl, al
je 0x4a3d10
lea rcx, [rbp + 0xf]
cmp rcx, rsi
jbe 0x4a3f08
mov rbx, rsi
cmp rsi, rbp
jb 0x4a3d60
lea r15, [rdi + 1]
lea rsi, [rbx - 1]
mov rcx, rdi
mov rdx, r14
mov r8, rbp
call sub.msvcrt.dll_memcmp
mov rdi, r15
test eax, eax
jne 0x4a3d3b
cmp rbx, rbp
setae al
jmp 0x4a40fe
mov qword [rsp + 0x20], rbp
lea rbx, [rsp + 0x78]
mov rcx, rbx
mov rdx, rdi
mov r8, rsi
mov r9, r14
call fcn.0041fa10
cmp qword [rbx + 0x20], 0
mov r8, qword [rbx]
mov r9, qword [rbx + 8]
je 0x4a3dbc
lea rdx, [rsp + 0xa0]
cmp qword [rdx + 0x30], 0xffffffffffffffff
mov rax, qword [rdx - 0x18]
mov rcx, qword [rdx - 0x10]
je 0x4a3dd1
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], rax
mov byte [rsp + 0x30], 0
jmp 0x4a3de0
cmp byte [rsp + 0xb2], 0
je 0x4a3df8
mov qword [rsp + 0x48], 0
jmp 0x4a3dea
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], rax
mov byte [rsp + 0x30], 1
lea rcx, [rsp + 0x48]
call fcn.004c06ec
cmp qword [rsp + 0x48], 0
setne al
jmp 0x4a4100
mov rcx, r9
not rcx
mov rax, qword [rsp + 0xa0]
cmp byte [rsp + 0xb0], 0
sete dl
test rax, rax
je 0x4a3e2d
cmp rax, r9
jae 0x4a3e27
cmp byte [r8 + rax], 0xbf
jg 0x4a3e2d
jmp 0x4a416c
jne 0x4a416c
mov r10, rax
not r10
and r10, r9
mov r11, rax
and r11, rcx
cmp r10, r11
je 0x4a4124
movzx r10d, byte [r8 + rax]
test r10b, r10b
jns 0x4a3ebc
mov r11d, r10d
and r11d, 0x1f
movzx edi, byte [r8 + rax + 1]
cmp r10b, 0xdf
jbe 0x4a3e96
and edi, 0x3f
movzx esi, byte [r8 + rax + 2]
shl edi, 6
and esi, 0x3f
or esi, edi
cmp r10b, 0xf0
jb 0x4a3eb2
movzx r10d, byte [r8 + rax + 3]
and r11d, 7
shl r11d, 0x12
shl esi, 6
and r10d, 0x3f
or r10d, esi
or r10d, r11d
jmp 0x4a3ebc
shl r11d, 6
mov r10d, edi
xor r10d, 0xc0
or edi, 0x3f
and edi, r10d
or edi, r11d
mov r10d, edi
jmp 0x4a3ebc
shl r11d, 0xc
or esi, r11d
mov r10d, esi
test dl, 1
je 0x4a412d
cmp r10d, 0x110000
je 0x4a3dc6
mov edx, 1
cmp r10d, 0x80
jb 0x4a3efe
mov edx, 2
cmp r10d, 0x800
jb 0x4a3efe
cmp r10d, 0x10000
mov edx, 4
sbb rdx, 0
add rax, rdx
xor edx, edx
jmp 0x4a3e11
mov qword [rsp + 0x40], rcx
movzx eax, al
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm6, xmm0, 0
lea rcx, [rbp - 1]
movzx eax, dl
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm7, xmm0, 0
inc r14
mov qword [rsp + 0x78], rdi
mov qword [rsp + 0x80], rsi
mov qword [rsp + 0x88], r14
mov qword [rsp + 0x60], rcx
mov qword [rsp + 0x90], rcx
lea rax, [rbp + 0x3f]
cmp rax, rsi
jae 0x4a4064
movabs rax, 0x7ffffffffffffef0
lea rcx, [rbp + 0x7f]
mov qword [rsp + 0x68], rcx
xor r14d, r14d
lea r15, [rax + 0xff]
mov qword [rsp + 0x70], rsi
mov qword [rsp + 0x48], 0
xor eax, eax
mov ecx, eax
and ecx, 0x10
mov rdx, rax
or rdx, 0x10
imul rdx, rcx
xor rcx, 0x10
mov r8, rax
and r8, r15
imul r8, rcx
add rdx, r14
add rdx, r8
lea rcx, [rdi + rdx]
movdqu xmm0, xmmword [rdi + rdx]
movdqu xmm1, xmmword [r12 + rcx]
pcmpeqb xmm1, xmm7
pcmpeqb xmm0, xmm6
pand xmm0, xmm1
pmovmskb ecx, xmm0
mov word [rsp + rax*2 + 0x48], cx
lea rcx, [rax + 1]
mov rax, rcx
cmp rcx, 4
jne 0x4a3f9a
xor r13d, r13d
lea rbx, [rsp + 0x48]
xor eax, eax
movzx r8d, word [rbx]
test r8w, r8w
jne 0x4a4013
add r13, 0x10
add rbx, 2
cmp r13, 0x40
jne 0x4a3ff9
jmp 0x4a4049
mov rdx, r13
movabs rcx, 0x7ffffffffffffef0
and rdx, rcx
add rdx, r14
test al, al
mov rsi, rbp
setne bpl
lea rcx, [rsp + 0x78]
mov r9d, ebp
call fcn.004c089f
or al, bpl
mov rbp, rsi
mov rsi, qword [rsp + 0x70]
jmp 0x4a4003
mov rcx, qword [rsp + 0x68]
add rcx, r14
add r14, 0x40
cmp rcx, rsi
jae 0x4a4069
cmp al, 1
jne 0x4a3f8f
jmp 0x4a4069
xor r14d, r14d
xor eax, eax
mov rcx, qword [rsp + 0x40]
add rcx, r14
cmp rcx, rsi
jae 0x4a40cf
cmp al, 1
je 0x4a40cf
add rbp, 0x1f
lea r13, [rdi + r12]
lea r15, [rsp + 0x78]
movdqu xmm0, xmmword [rdi + r14]
movdqu xmm1, xmmword [r13 + r14]
pcmpeqb xmm1, xmm7
pcmpeqb xmm0, xmm6
pand xmm0, xmm1
pmovmskb r8d, xmm0
test r8d, r8d
jne 0x4a40bf
xor eax, eax
lea rcx, [r14 + rbp]
cmp rcx, rsi
jae 0x4a40cf
add r14, 0x10
test al, al
je 0x4a4087
jmp 0x4a40cf
mov rcx, r15
mov rdx, r14
xor r9d, r9d
call fcn.004c089f
jmp 0x4a40ac
sub rsi, qword [rsp + 0x60]
lea rcx, [rdi + rsi]
add rcx, 0xfffffffffffffff0
movdqu xmm0, xmmword [rdi + rsi - 0x10]
movdqu xmm1, xmmword [r12 + rcx]
pcmpeqb xmm1, xmm7
pcmpeqb xmm0, xmm6
pand xmm0, xmm1
pmovmskb r8d, xmm0
test r8d, r8d
jne 0x4a413b
and al, 1
movaps xmm6, xmmword [rsp + 0xe0]
movaps xmm7, xmmword [rsp + 0xf0]
add rsp, 0x108
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
test dl, 1
jne 0x4a3dc6
mov qword [rsp + 0x48], 1
jmp 0x4a3dea
add rsi, 0xfffffffffffffff0
test al, al
setne bl
lea rcx, [rsp + 0x78]
mov rdx, rsi
mov r9d, ebx
call fcn.004c089f
or al, bl
jmp 0x4a40fe
dec rcx
lea r8, [0x005ecf50]
mov rdx, rbp
call fcn.004262b0
ud2
lea rcx, [0x005ecfb0]
mov qword [rsp + 0x20], rcx
mov rcx, r8
mov rdx, r9
mov r8, rax
call fcn.00425480
ud2