Function at 0x14012a940
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x308
vmovdqu ymm0, ymmword [rcx + 0x20]
vmovdqu ymm1, ymmword [rcx]
mov r12d, 0x20
mov r13d, 0x100
vmovdqu xmm5, xmmword [rcx]
vmovdqu ymm4, ymmword [rdx + 0x20]
mov rsi, qword [rcx + 0x40]
mov rdi, qword [rcx + 0x48]
mov rbx, qword [rdx + 0x48]
mov rcx, qword [rdx + 0x40]
lea rax, [rsp + 0x2e0]
lea r14, [rsp + 0x80]
mov qword [rsp + 0xc0], rsi
mov qword [rsp + 0x110], rsi
mov qword [rsp + 0x160], rsi
lea rsi, [rsp + 0x1c0]
mov qword [rsp + 0x208], rbx
mov qword [rsp + 0x258], rbx
mov qword [rsp + 0xc8], rdi
vmovdqu ymmword [rsp + 0xa0], ymm0
vmovdqu ymmword [rsp + 0xf0], ymm0
vmovdqu ymmword [rsp + 0x140], ymm0
vmovdqu ymmword [rsp + 0x1a0], ymm0
vmovdqu xmmword [rsp + 0x170], xmm5
vmovdqu ymmword [rsp + 0x80], ymm1
vmovdqu ymmword [rsp + 0xd0], ymm1
mov qword [rsp + 0x118], rdi
vmovdqu ymmword [rsp + 0x120], ymm1
mov qword [rsp + 0x168], rdi
vmovdqu ymmword [rsp + 0x180], ymm1
vmovdqu ymmword [rsp + 0x1e0], ymm4
mov qword [rsp + 0x200], rcx
vmovdqu ymmword [rsp + 0x230], ymm4
mov qword [rsp + 0x250], rcx
vmovdqu ymm0, ymmword [rdx]
vmovdqu ymmword [rsp + 0x1c0], ymm0
vmovdqu ymmword [rsp + 0x210], ymm0
vmovdqu ymmword [rsp + 0x260], ymm0
vmovdqu xmm5, xmmword [rdx]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x2c0]
mov qword [rsp + 0x2a8], rbx
vmovdqu ymmword [rsp + 0x280], ymm4
mov qword [rsp + 0x2a0], rcx
vmovdqu ymmword [rsp + 0x2c0], ymm0
xor ebx, ebx
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x360], r8
mov dword [rsp + 0x368], r9d
vmovdqu xmmword [rsp + 0x2b0], xmm5
jmp 0x14012ab21
vmovdqu ymm4, ymmword [rdi]
vmovdqu ymmword [rcx], ymm4
cmp r15d, 0x1f
ja 0x14012ab18
lea r10d, [rbp - 0xe0]
mov r11d, ebp
mov eax, r10d
and r11d, 3
shr eax, 2
je 0x14012aeeb
mov rdx, qword [rsp + 0x30]
mov dword [rsp + 0x38], r11d
mov dword [rsp + 0x3c], r10d
lea r8d, [rax*4]
mov rcx, rsi
vzeroupper
call sym.memmove
mov r11d, dword [rsp + 0x38]
test r11d, r11d
jne 0x14012aee6
dec r12d
je 0x14012ac9e
mov r8, qword [rsp + 0x28]
lea rdx, [rsi + rbx]
lea rcx, [r14 + rbx]
vzeroupper
mov r15d, r13d
call sym.neoscrypt_blake2s.constprop.0
vpmovzxbw ymm1, xmmword [rsp + 0x2e0]
vmovdqu ymm3, ymmword [rsp + 0x2e0]
mov edx, dword [rsp + 0x2e0]
vpmovzxwd ymm2, xmm1
vextracti128 xmm1, ymm1, 1
vextracti128 xmm0, ymm3, 1
vpmovzxwd ymm1, xmm1
vpmovzxbw ymm0, xmm0
vpaddd ymm2, ymm2, ymm1
vpmovzxwd ymm1, xmm0
vextracti128 xmm0, ymm0, 1
vpaddd ymm1, ymm1, ymm2
vpmovzxwd ymm0, xmm0
vpaddd ymm0, ymm0, ymm1
vmovdqa xmm1, xmm0
vextracti128 xmm0, ymm0, 1
vpaddd xmm0, xmm1, xmm0
vpsrldq xmm1, xmm0, 8
vpaddd xmm0, xmm0, xmm1
vpsrldq xmm1, xmm0, 4
vpaddd xmm0, xmm0, xmm1
vmovd eax, xmm0
movzx ebx, al
lea rdi, [rsi + rbx]
mov rbp, rbx
sub r15d, ebx
xor dword [rdi], edx
mov edx, dword [rsp + 0x2e4]
xor dword [rsi + rbx + 4], edx
mov edx, dword [rsp + 0x2e8]
xor dword [rsi + rbx + 8], edx
mov edx, dword [rsp + 0x2ec]
xor dword [rsi + rbx + 0xc], edx
mov edx, dword [rsp + 0x2f0]
xor dword [rsi + rbx + 0x10], edx
mov edx, dword [rsp + 0x2f4]
xor dword [rsi + rbx + 0x14], edx
mov edx, dword [rsp + 0x2f8]
xor dword [rsi + rbx + 0x18], edx
mov edx, dword [rsp + 0x2fc]
xor dword [rsi + rbx + 0x1c], edx
test al, 0xe0
jne 0x14012aac8
lea ecx, [rbx + 0x100]
add rcx, rsi
cmp ebx, 0x20
ja 0x14012aac0
mov r10d, 0x20
sub r10d, ebx
mov r11d, r10d
mov eax, r10d
and r11d, 3
shr eax, 2
je 0x14012af22
mov dword [rsp + 0x3c], r11d
mov dword [rsp + 0x38], r10d
lea r8d, [rax*4]
mov rdx, rdi
vzeroupper
call sym.memmove
mov r11d, dword [rsp + 0x3c]
mov r10d, dword [rsp + 0x38]
mov rcx, rax
test r11d, r11d
je 0x14012ab18
mov eax, r10d
sub eax, r11d
cmp eax, r10d
jae 0x14012ab18
mov r8d, r11d
add rcx, rax
lea rdx, [rdi + rax]
and r8d, 3
call sym.memmove
dec r12d
jne 0x14012ab21
mov r9d, dword [rsp + 0x368]
mov edx, 0x100
mov r10, qword [rsp + 0x360]
cmp r9d, edx
cmovbe edx, r9d
mov r8d, edx
cmp r15d, edx
jae 0x14012af42
mov r13d, r15d
mov ecx, r15d
and r13d, 3
shr ecx, 2
je 0x14012afc0
lea edx, [rcx - 1]
cmp edx, 2
jbe 0x14012acf2
lea r11d, [rbp + 0x13c]
cmp r11d, 0x18
ja 0x14012b0f0
lea ebx, [rcx*4]
xor edx, edx
mov eax, dword [r14 + rdx]
xor dword [rdi + rdx], eax
add rdx, 4
cmp rdx, rbx
jne 0x14012acfb
test r13d, r13d
jne 0x14012afc0
lea ebx, [rbp + r8 - 0x100]
mov ebp, r15d
lea r11, [rsp + 0x40]
lea rax, [r14 + rbp]
mov r14d, ebx
shr r14d, 2
je 0x14012ae15
lea edx, [r14 - 1]
cmp edx, 2
jbe 0x14012afe7
cmp edx, 6
jbe 0x14012b251
mov r12d, ebx
lea rdx, [r11 + rbp + 0x40]
mov r8, rsi
shr r12d, 5
mov r9d, r12d
shl r9, 5
add r9, rdx
vmovdqu ymm5, ymmword [rdx]
add rdx, 0x20
add r8, 0x20
vpxor ymm0, ymm5, ymmword [r8 - 0x20]
vmovdqu ymmword [r8 - 0x20], ymm0
cmp rdx, r9
jne 0x14012ad64
shl r12d, 3
cmp r14d, r12d
je 0x14012ae15
mov edx, r14d
sub edx, r12d
lea r8d, [rdx - 1]
cmp r8d, 2
jbe 0x14012add7
lea r8d, [r12 + 0x60]
lea r9, [rbp + 0x300]
shl r8, 2
add r9, rsp
add r11, r8
vmovdqu xmm0, xmmword [r8 + r9 - 0x400]
mov r8d, edx
vpxor xmm0, xmm0, xmmword [r11]
and r8d, 0xfffffffc
add r12d, r8d
and edx, 3
vmovdqu xmmword [r11], xmm0
je 0x14012ae15
mov edx, r12d
shl rdx, 2
mov r8d, dword [rax + rdx]
xor dword [rsi + rdx], r8d
lea edx, [r12 + 1]
cmp edx, r14d
jae 0x14012ae15
shl rdx, 2
add r12d, 2
mov r8d, dword [rax + rdx]
xor dword [rsi + rdx], r8d
cmp r12d, r14d
jae 0x14012ae15
lea rdx, [r12*4]
mov r8d, dword [rax + rdx]
xor dword [rsi + rdx], r8d
mov r12d, ebx
and r12d, 3
je 0x14012af98
mov edx, ebx
sub edx, r12d
cmp edx, ebx
jae 0x14012ae3b
movzx r8d, byte [rax + rdx]
xor byte [rsi + rdx], r8b
inc rdx
cmp edx, ebx
jb 0x14012ae2b
test ecx, ecx
je 0x14012b269
lea r8d, [rcx*4]
mov rdx, rdi
mov rcx, r10
vzeroupper
call sym.memcpy
mov r10, rax
test r13d, r13d
je 0x14012ae8b
mov eax, r15d
sub eax, r13d
cmp eax, r15d
jae 0x14012ae8b
lea r8, [r10 + rax]
add rdi, rax
test r13d, r13d
je 0x14012ae8b
xor eax, eax
mov edx, eax
inc eax
movzx ecx, byte [rdi + rdx]
mov byte [r8 + rdx], cl
cmp eax, r13d
jb 0x14012ae7a
add r10, rbp
test r14d, r14d
je 0x14012aea9
mov rcx, r10
lea r8d, [r14*4]
mov rdx, rsi
call sym.memcpy
mov r10, rax
test r12d, r12d
je 0x14012af84
mov eax, ebx
sub eax, r12d
cmp eax, ebx
jae 0x14012af84
add r10, rax
add rsi, rax
test r12d, r12d
je 0x14012af84
xor eax, eax
mov edx, eax
inc eax
movzx ecx, byte [rsi + rdx]
mov byte [r10 + rdx], cl
cmp eax, r12d
jb 0x14012aed0
jmp 0x14012af84
mov r10d, dword [rsp + 0x3c]
mov eax, r10d
sub eax, r11d
cmp eax, r10d
jae 0x14012ab18
mov rcx, qword [rsp + 0x30]
sub r11d, r10d
lea r8d, [rbp + r11 - 0xe1]
inc r8
lea rdx, [rcx + rax]
lea rcx, [rsi + rax]
vzeroupper
call sym.memmove
jmp 0x14012ab18
test r11d, r11d
je 0x14012ab18
mov eax, r10d
sub eax, r11d
cmp eax, r10d
jae 0x14012ab18
vzeroupper
jmp 0x14012ac82
add ebp, 0x13c
shr edx, 2
cmp ebp, 0x18
ja 0x14012b010
mov r8d, edx
lea r9d, [rdx*4]
xor edx, edx
mov eax, dword [r14 + rdx]
xor dword [rdi + rdx], eax
add rdx, 4
cmp rdx, r9
jne 0x14012af61
shl r8, 2
mov rdx, rdi
mov rcx, r10
vzeroupper
call sym.memcpy
nop
add rsp, 0x308
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test ecx, ecx
jne 0x14012ae43
test r13d, r13d
je 0x14012b259
mov eax, r15d
sub eax, r13d
cmp eax, r15d
jae 0x14012b259
vzeroupper
jmp 0x14012ae6c
mov r11d, r15d
sub r11d, r13d
mov edx, r11d
cmp r11d, r15d
jae 0x14012ad14
movzx eax, byte [r14 + rdx]
xor byte [rdi + rdx], al
inc rdx
cmp edx, r15d
jb 0x14012afd2
jmp 0x14012ad14
lea r12d, [r14*4]
mov r8, rsi
mov rdx, rax
add r12, rax
mov r9d, dword [rdx]
add rdx, 4
xor dword [r8], r9d
add r8, 4
cmp r12, rdx
jne 0x14012aff8
jmp 0x14012ae15
vmovdqu ymm4, ymmword [rdi]
mov eax, r8d
mov r8d, edx
vpxor ymm0, ymm4, ymmword [rsp + 0x80]
shr eax, 5
vmovdqu ymmword [rdi], ymm0
cmp eax, 1
je 0x14012af71
vmovdqu ymm4, ymmword [rdi + 0x20]
vpxor ymm0, ymm4, ymmword [rsp + 0xa0]
vmovdqu ymm5, ymmword [rdi + 0x40]
vmovdqu ymm4, ymmword [rdi + 0x60]
vmovdqu ymmword [rdi + 0x20], ymm0
vpxor ymm0, ymm5, ymmword [rsp + 0xc0]
vmovdqu ymmword [rdi + 0x40], ymm0
vpxor ymm0, ymm4, ymmword [rsp + 0xe0]
vmovdqu ymmword [rdi + 0x60], ymm0
cmp eax, 4
je 0x14012af71
vmovdqu ymm5, ymmword [rdi + 0x80]
vpxor ymm0, ymm5, ymmword [rsp + 0x100]
vmovdqu ymmword [rdi + 0x80], ymm0
cmp eax, 5
je 0x14012af71
vmovdqu ymm4, ymmword [rdi + 0xa0]
vpxor ymm0, ymm4, ymmword [rsp + 0x120]
vmovdqu ymmword [rdi + 0xa0], ymm0
vmovdqu ymm5, ymmword [rsp + 0x140]
vpxor ymm0, ymm5, ymmword [rdi + 0xc0]
vmovdqu ymmword [rdi + 0xc0], ymm0
cmp eax, 8
jne 0x14012af71
vmovdqu ymm4, ymmword [rsp + 0x160]
vpxor ymm0, ymm4, ymmword [rdi + 0xe0]
vmovdqu ymmword [rdi + 0xe0], ymm0
jmp 0x14012af71
cmp edx, 6
jbe 0x14012b280
vmovdqu ymm5, ymmword [rdi]
mov edx, r15d
vpxor ymm0, ymm5, ymmword [rsp + 0x80]
shr edx, 5
vmovdqu ymmword [rdi], ymm0
cmp edx, 1
je 0x14012b1ba
vmovdqu ymm4, ymmword [rdi + 0x20]
vpxor ymm0, ymm4, ymmword [rsp + 0xa0]
vmovdqu ymmword [rdi + 0x20], ymm0
cmp edx, 2
je 0x14012b1ba
vmovdqu ymm5, ymmword [rdi + 0x40]
vpxor ymm0, ymm5, ymmword [rsp + 0xc0]
vmovdqu ymmword [rdi + 0x40], ymm0
cmp edx, 3
je 0x14012b1ba
vmovdqu ymm4, ymmword [rdi + 0x60]
vpxor ymm0, ymm4, ymmword [rsp + 0xe0]
vmovdqu ymmword [rdi + 0x60], ymm0
cmp edx, 4
je 0x14012b1ba
vmovdqu ymm5, ymmword [rdi + 0x80]
vpxor ymm0, ymm5, ymmword [rsp + 0x100]
vmovdqu ymmword [rdi + 0x80], ymm0
cmp edx, 5
je 0x14012b1ba
vmovdqu ymm4, ymmword [rdi + 0xa0]
vpxor ymm0, ymm4, ymmword [rsp + 0x120]
vmovdqu ymmword [rdi + 0xa0], ymm0
cmp edx, 7
jne 0x14012b1ba
vmovdqu ymm5, ymmword [rdi + 0xc0]
vpxor ymm0, ymm5, ymmword [rsp + 0x140]
vmovdqu ymmword [rdi + 0xc0], ymm0
shl edx, 3
cmp ecx, edx
je 0x14012ad0b
mov r11d, ecx
sub r11d, edx
lea ebx, [r11 - 1]
cmp ebx, 2
jbe 0x14012b201
mov ebx, edx
shl rbx, 2
lea rax, [rdi + rbx]
vmovdqu xmm4, xmmword [rax]
vpxor xmm0, xmm4, xmmword [rsp + rbx + 0x80]
mov ebx, r11d
and ebx, 0xfffffffc
add edx, ebx
and r11d, 3
vmovdqu xmmword [rax], xmm0
je 0x14012ad0b
mov r11d, edx
shl r11, 2
mov ebx, dword [rsp + r11 + 0x80]
xor dword [rdi + r11], ebx
lea r11d, [rdx + 1]
cmp r11d, ecx
jae 0x14012ad0b
shl r11, 2
add edx, 2
mov ebx, dword [rsp + r11 + 0x80]
xor dword [rdi + r11], ebx
cmp edx, ecx
jae 0x14012ad0b
shl rdx, 2
mov r11d, dword [rsp + rdx + 0x80]
xor dword [rdi + rdx], r11d
jmp 0x14012ad0b
mov edx, r14d
jmp 0x14012ad9e
add r10, rbp
test r14d, r14d
je 0x14012b292
vzeroupper
jmp 0x14012ae93
test r13d, r13d
jne 0x14012b28a
add r10, rbp
test r14d, r14d
jne 0x14012b261
vzeroupper
jmp 0x14012aeb2
mov r11d, ecx
xor edx, edx
jmp 0x14012b1d4
vzeroupper
jmp 0x14012ae61
vzeroupper
jmp 0x14012af84