Function at 0x140499ea0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xb8
movdqa xmmword [rsp + 0xa0], xmm10
movdqa xmmword [rsp + 0x90], xmm9
movdqa xmmword [rsp + 0x80], xmm8
movdqa xmmword [rsp + 0x70], xmm7
movdqa xmmword [rsp + 0x60], xmm6
cmp qword [rdx + 8], rcx
ja 0x14049a34c
mov rdi, rdx
mov rbx, rcx
mov rcx, qword [rdx + 0x10]
xor eax, eax
cmp rcx, rbx
jb 0x14049a34e
mov qword [rsp + 0x38], r8
sub ecx, ebx
and ecx, 0xfffffff8
je 0x14049a34e
mov eax, dword [rdi + 0x18]
add eax, 0xfffffff8
mov dword [rdi + 0x18], eax
test eax, eax
jle 0x14049a34c
movzx eax, word [rbx]
rol ax, 8
cmp ax, 4
jb 0x14049a34c
lea rcx, [rbx + 2]
mov rdx, rdi
mov r8, rbx
call fcn.14049a390
xor r13d, r13d
test al, al
je 0x14049a34c
movzx eax, byte [rbx + 4]
shl rax, 8
movzx ecx, byte [rbx + 5]
lea rdx, [rax + rcx]
lea r8, [rbx + rdx]
mov qword [rsp + 0x30], r8
movzx r8d, word [rbx]
movzx r9d, word [rbx + 6]
rol r9w, 8
movzx r10d, r9w
add r10, rbx
rol r8w, 8
movzx r14d, r8w
lea r8, [rbx + rcx]
add r8, rax
mov qword [rsp + 0x58], r8
add rax, rbx
lea r8, [rax + rcx]
mov qword [rsp + 0x50], r8
add rax, rcx
inc rax
mov qword [rsp + 0x48], rax
lea rax, [rbx + rdx + 4]
mov qword [rsp + 0x40], rax
pxor xmm0, xmm0
pcmpeqd xmm1, xmm1
movdqa xmm2, xmmword [0x140599730]
movdqa xmm3, xmmword [0x140619380]
xor eax, eax
xor ebp, ebp
xor ecx, ecx
xor r8d, r8d
xor esi, esi
mov dword [rsp + 0x2c], r14d
test al, 1
je 0x14049a060
mov eax, ecx
mul r14d
jo 0x14049a34c
mov edx, ecx
imul edx, r14d
test edx, edx
je 0x14049a03b
mov rax, qword [rsp + 0x30]
lea r9, [rax + rdx]
cmp qword [rdi + 8], r9
ja 0x14049a34c
mov r11, qword [rdi + 0x10]
xor eax, eax
cmp r11, r9
jb 0x14049a34e
mov r14d, edx
neg r14d
sub r11d, r9d
cmp r14d, r11d
mov r14d, dword [rsp + 0x2c]
ja 0x14049a34e
mov eax, dword [rdi + 0x18]
add eax, edx
mov dword [rdi + 0x18], eax
test eax, eax
jg 0x14049a03e
jmp 0x14049a34c
mov eax, dword [rdi + 0x18]
mov r9d, ecx
sub r9d, ebp
add r9d, eax
mov dword [rdi + 0x18], r9d
xor eax, eax
test r9d, r9d
jle 0x14049a34e
mov ebp, ecx
test edx, edx
jne 0x14049a34e
cmp r13d, r8d
jle 0x14049a070
mov r12d, esi
jmp 0x14049a25c
lea edx, [r8 + 1]
mov r15d, edx
imul r15d, r14d
test r15d, r15d
je 0x14049a0bc
mov r11, qword [rsp + 0x30]
cmp qword [rdi + 8], r11
ja 0x14049a34c
mov r9, qword [rdi + 0x10]
xor eax, eax
cmp r9, r11
jb 0x14049a34e
sub r9d, r11d
cmp r15d, r9d
ja 0x14049a34e
mov eax, dword [rdi + 0x18]
sub eax, r15d
mov dword [rdi + 0x18], eax
test eax, eax
jg 0x14049a0bf
jmp 0x14049a34c
mov eax, dword [rdi + 0x18]
mov r9d, r8d
not r9d
add r9d, eax
add r9d, r13d
mov dword [rdi + 0x18], r9d
test r9d, r9d
jle 0x14049a34c
imul r13d, r14d
cmp r13d, r15d
jae 0x14049a11d
mov r12d, r13d
mov rax, qword [rsp + 0x48]
add rax, r12
mov r9, qword [rsp + 0x50]
lea r14, [r9 + r15]
cmp rax, r14
cmova r14, rax
mov rax, qword [rsp + 0x30]
add rax, r12
mov r9, qword [rsp + 0x58]
add r9, r12
sub r14, r9
cmp r14, 8
jae 0x14049a125
mov r12d, esi
jmp 0x14049a23b
mov r12d, esi
jmp 0x14049a259
mov r13, r14
and r13, 0xfffffffffffffff8
add rax, r13
movd xmm4, esi
pshufd xmm4, xmm4, 0
add r12, qword [rsp + 0x40]
xor r9d, r9d
movdqa xmm5, xmm4
nop word cs:[rax + rax]
movd xmm6, dword [r12 + r9 - 4]
movd xmm7, dword [r12 + r9]
punpcklbw xmm6, xmm0
punpcklwd xmm6, xmm0
punpcklbw xmm7, xmm0
punpcklwd xmm7, xmm0
movdqa xmm8, xmm6
psubd xmm8, xmm1
movdqa xmm9, xmm7
psubd xmm9, xmm1
movdqa xmm10, xmm4
pxor xmm4, xmm2
paddd xmm6, xmm3
pcmpgtd xmm4, xmm6
pand xmm10, xmm4
pandn xmm4, xmm8
por xmm4, xmm10
movdqa xmm6, xmm5
pxor xmm5, xmm2
paddd xmm7, xmm3
pcmpgtd xmm5, xmm7
pand xmm6, xmm5
pandn xmm5, xmm9
por xmm5, xmm6
add r9, 8
cmp r13, r9
jne 0x14049a150
movdqa xmm6, xmm5
pxor xmm6, xmm2
movdqa xmm7, xmm4
pxor xmm7, xmm2
pcmpgtd xmm7, xmm6
pand xmm4, xmm7
pandn xmm7, xmm5
por xmm7, xmm4
pshufd xmm4, xmm7, 0xee
movdqa xmm5, xmm7
pxor xmm5, xmm2
movdqa xmm6, xmm4
pxor xmm6, xmm2
pcmpgtd xmm5, xmm6
pand xmm7, xmm5
pandn xmm5, xmm4
por xmm5, xmm7
pshufd xmm4, xmm5, 0x55
movdqa xmm6, xmm5
pxor xmm6, xmm2
movdqa xmm7, xmm4
pxor xmm7, xmm2
pcmpgtd xmm6, xmm7
pand xmm5, xmm6
pandn xmm6, xmm4
por xmm6, xmm5
movd r12d, xmm6
cmp r14, r13
je 0x14049a259
add r15, qword [rsp + 0x30]
mov r9d, r12d
movzx r12d, byte [rax]
inc r12d
cmp r9d, r12d
cmova r12d, r9d
inc rax
cmp rax, r15
jb 0x14049a240
mov r13d, edx
lea edx, [r12*4]
test edx, edx
je 0x14049a2a0
cmp qword [rdi + 8], r10
ja 0x14049a34c
mov r9, qword [rdi + 0x10]
xor eax, eax
cmp r9, r10
jb 0x14049a34e
sub r9d, r10d
cmp edx, r9d
ja 0x14049a34e
mov eax, dword [rdi + 0x18]
sub eax, edx
mov dword [rdi + 0x18], eax
test eax, eax
jg 0x14049a2a3
jmp 0x14049a34c
mov eax, dword [rdi + 0x18]
mov edx, esi
sub edx, r12d
add edx, eax
mov dword [rdi + 0x18], edx
test edx, edx
jle 0x14049a34c
cmp esi, r12d
jae 0x14049a31c
mov eax, r12d
lea r9, [r10 + rax*4]
mov eax, esi
lea rsi, [r10 + rax*4]
movzx eax, word [rbx]
movzx edx, word [rbx + 4]
rol dx, 8
movzx r14d, dx
rol ax, 8
movzx r15d, ax
mov r11d, r8d
nop word cs:[rax + rax]
movzx eax, word [rsi]
rol ax, 8
movzx eax, ax
sub eax, r14d
cdq
idiv r15d
mov r8d, eax
cmp ecx, eax
cmovge ecx, eax
cmp r11d, eax
cmovg r8d, r11d
add rsi, 4
mov r11d, r8d
cmp rsi, r9
jb 0x14049a2f0
mov esi, r12d
cmp ecx, ebp
setl al
mov r14d, dword [rsp + 0x2c]
jl 0x140499fd4
mov esi, r12d
cmp r13d, r8d
jle 0x140499fd4
mov al, 1
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x14049a34e
mov dword [rcx], r12d
jmp 0x14049a34e
xor eax, eax
movaps xmm6, xmmword [rsp + 0x60]
movaps xmm7, xmmword [rsp + 0x70]
movaps xmm8, xmmword [rsp + 0x80]
movaps xmm9, xmmword [rsp + 0x90]
movaps xmm10, xmmword [rsp + 0xa0]
add rsp, 0xb8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret