Function at 0x140129ca0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x348
mov rax, qword [rcx + 0x40]
vmovdqu ymm1, ymmword [rcx]
vmovdqu ymm0, ymmword [rcx + 0x20]
vmovdqu xmm5, xmmword [rcx]
mov r14, rdx
mov rdx, qword [rcx + 0x48]
mov qword [rsp + 0x100], rax
mov qword [rsp + 0x150], rax
mov qword [rsp + 0x1a0], rax
mov eax, 0x100
mov qword [rsp + 0x3a8], r9
lea rsi, [rsp + 0x200]
cmp r8d, eax
cmovbe eax, r8d
xor edi, edi
xor ebx, ebx
mov r13d, eax
mov qword [rsp + 0x108], rdx
mov qword [rsp + 0x158], rdx
mov qword [rsp + 0x1a8], rdx
mov eax, 0x100
xor edx, edx
vmovdqu ymmword [rsp + 0xc0], ymm1
vmovdqu ymmword [rsp + 0xe0], ymm0
div r13d
vmovdqu ymmword [rsp + 0x110], ymm1
vmovdqu ymmword [rsp + 0x130], ymm0
vmovdqu ymmword [rsp + 0x160], ymm1
vmovdqu ymmword [rsp + 0x180], ymm0
vmovdqu xmmword [rsp + 0x1b0], xmm5
vmovdqu ymmword [rsp + 0x1c0], ymm1
vmovdqu ymmword [rsp + 0x1e0], ymm0
mov ebp, eax
mov eax, r13d
shr eax, 2
lea r12d, [rax*4]
vzeroupper
nop dword [rax]
mov ecx, edi
mov r8, r12
mov rdx, r14
inc ebx
add rcx, rsi
add edi, r13d
call sym.memcpy
cmp ebp, ebx
jne 0x140129d90
mov eax, 0x100
xor edx, edx
div r13d
mov ebx, edx
test edx, edx
jne 0x14012a34d
vmovdqu ymm5, ymmword [r14]
lea rdi, [rsp + 0x320]
mov eax, 0x20
xor ebx, ebx
mov qword [rsp + 0x48], rdi
lea rdi, [rsp + 0xc0]
mov dword [rsp + 0x44], eax
mov qword [rsp + 0x20], rdi
lea rdi, [rsp + 0x300]
mov qword [rsp + 0x78], rdi
vmovdqu ymmword [rsp + 0x300], ymm5
jmp 0x140129e77
vmovdqu ymm4, ymmword [rbp]
vmovdqu ymmword [rcx], ymm4
cmp dword [rsp + 0x40], 0x1f
ja 0x140129e6d
lea eax, [rdi - 0xe0]
mov ecx, edi
and ecx, 3
mov dword [rsp + 0x58], eax
shr eax, 2
mov dword [rsp + 0x50], ecx
je 0x14012a299
mov rdx, qword [rsp + 0x78]
mov qword [rsp + 0x70], r11
mov qword [rsp + 0x68], r10
mov qword [rsp + 0x60], r9
lea r8d, [rax*4]
mov rcx, rsi
vzeroupper
call sym.memmove
mov edx, dword [rsp + 0x50]
mov r9, qword [rsp + 0x60]
mov r10, qword [rsp + 0x68]
mov r11, qword [rsp + 0x70]
test edx, edx
jne 0x14012a299
dec dword [rsp + 0x44]
je 0x14012a054
mov rax, qword [rsp + 0x20]
mov r8, qword [rsp + 0x48]
lea rdx, [rsi + rbx]
vzeroupper
lea rcx, [rax + rbx]
call sym.neoscrypt_blake2s.constprop.0
vpmovzxbw ymm1, xmmword [rsp + 0x320]
mov ecx, 0x100
vmovdqu ymm3, ymmword [rsp + 0x320]
mov edx, dword [rsp + 0x320]
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 rbp, [rsi + rbx]
lea r10, [rsi + rbx + 4]
lea r15, [rsi + rbx + 8]
lea r14, [rsi + rbx + 0xc]
xor dword [rbp], edx
lea r13, [rsi + rbx + 0x10]
lea r12, [rsi + rbx + 0x14]
lea r9, [rsi + rbx + 0x18]
mov edx, dword [rsp + 0x324]
xor dword [r10], edx
lea r11, [rsi + rbx + 0x1c]
sub ecx, ebx
mov edx, dword [rsp + 0x328]
mov rdi, rbx
mov dword [rsp + 0x40], ecx
xor dword [r15], edx
mov edx, dword [rsp + 0x32c]
xor dword [r14], edx
mov edx, dword [rsp + 0x330]
xor dword [r13], edx
mov edx, dword [rsp + 0x334]
xor dword [r12], edx
mov edx, dword [rsp + 0x338]
xor dword [r9], edx
mov edx, dword [rsp + 0x33c]
xor dword [r11], edx
test al, 0xe0
jne 0x140129e08
lea ecx, [rbx + 0x100]
add rcx, rsi
cmp ebx, 0x20
ja 0x140129dff
mov eax, 0x20
sub eax, ebx
mov edx, eax
mov dword [rsp + 0x58], eax
and edx, 3
shr eax, 2
mov dword [rsp + 0x50], edx
je 0x14012a33c
mov qword [rsp + 0x70], r11
mov qword [rsp + 0x68], r10
mov qword [rsp + 0x60], r9
lea r8d, [rax*4]
mov rdx, rbp
vzeroupper
call sym.memmove
mov r8d, dword [rsp + 0x50]
mov r9, qword [rsp + 0x60]
mov r10, qword [rsp + 0x68]
mov rcx, rax
mov r11, qword [rsp + 0x70]
test r8d, r8d
je 0x140129e6d
mov edx, dword [rsp + 0x58]
mov r8d, dword [rsp + 0x50]
mov eax, edx
sub eax, r8d
cmp eax, edx
jae 0x140129e6d
mov qword [rsp + 0x68], r11
mov qword [rsp + 0x60], r10
mov qword [rsp + 0x58], r9
add rcx, rax
and r8d, 3
lea rdx, [rbp + rax]
vzeroupper
call sym.memmove
dec dword [rsp + 0x44]
mov r11, qword [rsp + 0x68]
mov r10, qword [rsp + 0x60]
mov r9, qword [rsp + 0x58]
jne 0x140129e77
cmp dword [rsp + 0x40], 0x1f
mov rbx, r10
mov eax, dword [rsp + 0x44]
mov r10, r9
mov r9, rbx
ja 0x14012a2f2
mov ebx, dword [rsp + 0x40]
mov r8d, ebx
and r8d, 3
shr ebx, 2
mov edx, ebx
je 0x14012a3b9
cmp ebx, 1
je 0x14012a85a
lea ecx, [rdi + 0x13c]
cmp ecx, 8
ja 0x14012a7d9
mov ecx, dword [rsp + 0xc0]
xor dword [rbp], ecx
mov ecx, dword [rsp + 0xc4]
xor dword [r9], ecx
cmp ebx, 2
je 0x14012a0fb
mov ecx, dword [rsp + 0xc8]
xor dword [r15], ecx
cmp ebx, 3
je 0x14012a0fb
mov ecx, dword [rsp + 0xcc]
xor dword [r14], ecx
cmp ebx, 4
je 0x14012a0fb
mov ecx, dword [rsp + 0xd0]
xor dword [r13], ecx
cmp ebx, 5
je 0x14012a0fb
mov ecx, dword [rsp + 0xd4]
xor dword [r12], ecx
cmp ebx, 7
jne 0x14012a0fb
mov ecx, dword [rsp + 0xd8]
xor dword [r10], ecx
test r8d, r8d
jne 0x14012a3b9
mov r14d, dword [rsp + 0x40]
lea r9d, [rdi - 0xe0]
mov rcx, qword [rsp + 0x20]
mov r15d, r9d
add rcx, r14
shr r15d, 2
je 0x14012a879
cmp r15d, 1
je 0x14012a869
lea r10d, [r15 - 1]
cmp r10d, 2
jbe 0x14012a91c
vmovdqu xmm4, xmmword [rsp + r14 + 0xc0]
vpxor xmm0, xmm4, xmmword [rsp + 0x200]
vmovdqu xmmword [rsp + 0x200], xmm0
cmp r15d, 4
je 0x14012a1bc
lea ebx, [r15 - 4]
cmp r15d, 5
je 0x14012a88d
mov r10d, 4
lea r11d, [r10 + 0x60]
lea r13, [r14 + 0x340]
add r10d, 2
shl r11, 2
add r13, rsp
lea r12, [rsp + r11 + 0x80]
vmovq xmm1, qword [r11 + r13 - 0x400]
vmovq xmm0, qword [r12]
vpxor xmm0, xmm0, xmm1
vmovq qword [r12], xmm0
cmp ebx, 2
je 0x14012a1bc
shl r10, 2
mov r11d, dword [rcx + r10]
xor dword [rsi + r10], r11d
mov r13d, r9d
and r13d, 3
jne 0x14012a532
test edx, edx
je 0x14012a8be
lea eax, [rdx*4]
cmp eax, 8
jae 0x14012a3ee
test al, 4
jne 0x14012a8e4
test eax, eax
jne 0x14012a516
test r8d, r8d
je 0x14012a22a
mov ebx, dword [rsp + 0x40]
mov eax, ebx
sub eax, r8d
cmp eax, ebx
jae 0x14012a22a
mov r11, qword [rsp + 0x3a8]
add r11, rax
add rax, rbp
test r8d, r8d
je 0x14012a22a
xor edx, edx
mov ecx, edx
inc edx
movzx r10d, byte [rax + rcx]
mov byte [r11 + rcx], r10b
cmp edx, r8d
jb 0x14012a218
mov rdx, qword [rsp + 0x3a8]
add rdx, r14
test r15d, r15d
je 0x14012a25b
lea eax, [r15*4]
cmp eax, 8
jae 0x14012a45e
test al, 4
jne 0x14012a906
test eax, eax
jne 0x14012a507
test r13d, r13d
je 0x14012a3b1
mov eax, r9d
sub eax, r13d
cmp eax, r9d
jae 0x14012a3b1
lea rcx, [rdx + rax]
mov edx, r13d
sub edx, r9d
lea r8d, [rdi + rdx - 0xe1]
lea rdx, [rsi + rax]
inc r8
vzeroupper
call sym.memcpy
jmp 0x14012a328
mov ecx, dword [rsp + 0x58]
mov edx, dword [rsp + 0x50]
mov eax, ecx
sub eax, edx
cmp eax, ecx
jae 0x140129e6d
sub edx, ecx
mov rcx, qword [rsp + 0x78]
mov qword [rsp + 0x70], r11
mov qword [rsp + 0x68], r10
lea r8d, [rdi + rdx - 0xe1]
mov qword [rsp + 0x60], r9
inc r8
vzeroupper
lea rdx, [rcx + rax]
lea rcx, [rsi + rax]
call sym.memmove
mov r9, qword [rsp + 0x60]
mov r10, qword [rsp + 0x68]
mov r11, qword [rsp + 0x70]
jmp 0x140129e6d
add edi, 0x13c
cmp edi, 0x18
jbe 0x14012a4b1
vmovdqu ymm4, ymmword [rbp]
vpxor ymm0, ymm4, ymmword [rsp + 0xc0]
vmovdqu ymmword [rbp], ymm0
vmovdqu ymm0, ymmword [rbp]
mov rax, qword [rsp + 0x3a8]
vmovdqu ymmword [rax], ymm0
vzeroupper
add rsp, 0x348
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov eax, dword [rsp + 0x50]
test eax, eax
jne 0x14012a002
jmp 0x140129e6d
mov ecx, r13d
mov edi, edx
mov r8d, edx
imul ecx, ebp
and edi, 3
add rcx, rsi
shr r8d, 2
je 0x14012a37e
mov r8d, r8d
mov rdx, r14
shl r8, 2
call sym.memcpy
mov rcx, rax
test edi, edi
je 0x140129dbd
mov eax, ebx
sub eax, edi
cmp eax, ebx
jae 0x140129dbd
add rcx, rax
add rax, r14
test edi, edi
je 0x140129dbd
xor edx, edx
mov r8d, edx
inc edx
movzx r9d, byte [rax + r8]
mov byte [rcx + r8], r9b
cmp edx, edi
jb 0x14012a39a
jmp 0x140129dbd
vzeroupper
jmp 0x14012a328
mov ebx, dword [rsp + 0x40]
mov r9d, ebx
sub r9d, r8d
mov ecx, r9d
cmp r9d, ebx
jae 0x14012a104
mov r11, qword [rsp + 0x20]
mov r10d, ebx
movzx r9d, byte [r11 + rcx]
xor byte [rbp + rcx], r9b
inc rcx
cmp ecx, r10d
jb 0x14012a3d7
jmp 0x14012a104
mov rdx, qword [rbp]
mov rbx, qword [rsp + 0x3a8]
mov r11, rbp
mov qword [rbx], rdx
mov rdx, qword [rbp + rax - 8]
mov rbx, qword [rsp + 0x3a8]
mov qword [rbx + rax - 8], rdx
mov rbx, qword [rsp + 0x3a8]
lea rcx, [rbx + 8]
mov rdx, rbx
and rcx, 0xfffffffffffffff8
sub rdx, rcx
add eax, edx
sub r11, rdx
and eax, 0xfffffff8
cmp eax, 8
jb 0x14012a1f1
and eax, 0xfffffff8
xor edx, edx
mov r10d, edx
add edx, 8
mov rbx, qword [r11 + r10]
mov qword [rcx + r10], rbx
cmp edx, eax
jb 0x14012a43e
test r8d, r8d
jne 0x14012a1f6
jmp 0x14012a22a
mov rcx, qword [rsp + 0x200]
lea r8, [rdx + 8]
mov rbx, rsi
and r8, 0xfffffffffffffff8
mov qword [rdx], rcx
mov rcx, qword [rsi + rax - 8]
mov qword [rdx + rax - 8], rcx
mov rcx, rdx
sub rcx, r8
add eax, ecx
sub rbx, rcx
and eax, 0xfffffff8
cmp eax, 8
jb 0x14012a25b
and eax, 0xfffffff8
xor ecx, ecx
mov r10d, ecx
add ecx, 8
mov r11, qword [rbx + r10]
mov qword [r8 + r10], r11
cmp ecx, eax
jb 0x14012a49a
jmp 0x14012a25b
mov eax, dword [rsp + 0xc0]
xor dword [rbp], eax
mov eax, dword [rsp + 0xc4]
xor dword [rbx], eax
mov eax, dword [rsp + 0xc8]
xor dword [r15], eax
mov eax, dword [rsp + 0xcc]
xor dword [r14], eax
mov eax, dword [rsp + 0xd0]
xor dword [r13], eax
mov eax, dword [rsp + 0xd4]
xor dword [r12], eax
mov eax, dword [rsp + 0xd8]
xor dword [r10], eax
mov eax, dword [rsp + 0xdc]
xor dword [r11], eax
jmp 0x14012a314
movzx eax, byte [rsp + 0x200]
mov byte [rdx], al
jmp 0x14012a25b
movzx eax, byte [rbp]
mov rbx, qword [rsp + 0x3a8]
mov byte [rbx], al
test r8d, r8d
jne 0x14012a1f6
jmp 0x14012a22a
mov r10d, r9d
sub r10d, r13d
cmp r10d, r9d
jae 0x14012a78a
mov r12d, edi
sub r12d, r10d
lea ebx, [r12 - 0xe1]
mov dword [rsp + 0x44], ebx
cmp ebx, 0xe
jbe 0x14012a7c0
cmp dword [rsp + 0x44], 0x1e
mov r11d, r10d
lea rbx, [r14 + r11]
mov qword [rsp + 0x50], rbx
jbe 0x14012a898
lea ebx, [r12 - 0x100]
mov dword [rsp + 0x68], edx
shr ebx, 5
inc ebx
mov dword [rsp + 0x44], ebx
lea rbx, [rsp + 0x80]
mov qword [rsp + 0x60], rbx
lea rbx, [r11 + 0x180]
mov qword [rsp + 0x58], rbx
lea rbx, [rsp + r11 + 0x200]
mov r11, qword [rsp + 0x50]
lea r11, [rsp + r11 + 0xc0]
mov qword [rsp + 0x48], r11
xor r11d, r11d
mov rdx, qword [rsp + 0x48]
inc eax
vmovdqu ymm4, ymmword [rdx + r11]
mov edx, dword [rsp + 0x44]
vpxor ymm0, ymm4, ymmword [rbx + r11]
vmovdqu ymmword [rsp + 0x20], ymm4
vmovdqu ymmword [rbx + r11], ymm0
add r11, 0x20
cmp eax, edx
jb 0x14012a5be
mov eax, edx
lea r11d, [r12 - 0xe0]
mov edx, dword [rsp + 0x68]
shl eax, 5
add r10d, eax
cmp eax, r11d
je 0x14012a78a
mov r11d, r12d
sub r11d, eax
lea ebx, [r11 - 0xe0]
sub r11d, 0xe1
cmp r11d, 0xe
jbe 0x14012a668
mov r11, qword [rsp + 0x58]
mov r12, qword [rsp + 0x60]
mov eax, eax
add r11, rax
add rax, 0x340
add r12, r11
add rax, rsp
mov r11, r12
mov r12, qword [rsp + 0x50]
vmovdqu xmm5, xmmword [r12 + rax - 0x280]
mov eax, ebx
vpxor xmm0, xmm5, xmmword [r11]
and eax, 0xfffffff0
add r10d, eax
and ebx, 0xf
vmovdqu xmmword [r11], xmm0
je 0x14012a78a
mov eax, r10d
movzx r11d, byte [rcx + rax]
xor byte [rsi + rax], r11b
lea eax, [r10 + 1]
cmp eax, r9d
jae 0x14012a78a
movzx r11d, byte [rcx + rax]
xor byte [rsi + rax], r11b
lea eax, [r10 + 2]
cmp eax, r9d
jae 0x14012a78a
movzx r11d, byte [rcx + rax]
xor byte [rsi + rax], r11b
lea eax, [r10 + 3]
cmp eax, r9d
jae 0x14012a78a
movzx r11d, byte [rcx + rax]
xor byte [rsi + rax], r11b
lea eax, [r10 + 4]
cmp eax, r9d
jae 0x14012a78a
movzx r11d, byte [rcx + rax]
xor byte [rsi + rax], r11b
lea eax, [r10 + 5]
cmp eax, r9d
jae 0x14012a78a
movzx r11d, byte [rcx + rax]
xor byte [rsi + rax], r11b
lea eax, [r10 + 6]
cmp eax, r9d
jae 0x14012a78a
movzx r11d, byte [rcx + rax]
xor byte [rsi + rax], r11b
lea eax, [r10 + 7]
cmp eax, r9d
jae 0x14012a78a
movzx r11d, byte [rcx + rax]
xor byte [rsi + rax], r11b
lea eax, [r10 + 8]
cmp eax, r9d
jae 0x14012a78a
movzx r11d, byte [rcx + rax]
xor byte [rsi + rax], r11b
lea eax, [r10 + 9]
cmp eax, r9d
jae 0x14012a78a
movzx r11d, byte [rcx + rax]
xor byte [rsi + rax], r11b
lea eax, [r10 + 0xa]
cmp eax, r9d
jae 0x14012a78a
movzx r11d, byte [rcx + rax]
xor byte [rsi + rax], r11b
lea eax, [r10 + 0xb]
cmp eax, r9d
jae 0x14012a78a
movzx r11d, byte [rcx + rax]
xor byte [rsi + rax], r11b
lea eax, [r10 + 0xc]
cmp eax, r9d
jae 0x14012a78a
movzx r11d, byte [rcx + rax]
xor byte [rsi + rax], r11b
lea eax, [r10 + 0xd]
cmp eax, r9d
jae 0x14012a78a
movzx r11d, byte [rcx + rax]
xor byte [rsi + rax], r11b
lea eax, [r10 + 0xe]
cmp eax, r9d
jae 0x14012a78a
movzx ecx, byte [rcx + rax]
xor byte [rsi + rax], cl
test edx, edx
jne 0x14012a1d1
test r8d, r8d
jne 0x14012a1f6
mov rdx, qword [rsp + 0x3a8]
add rdx, r14
test r15d, r15d
jne 0x14012a23a
jmp 0x14012a264
lea r11, [rsi + r10]
movzx eax, byte [r11]
xor al, byte [rcx + r10]
inc r10
mov byte [r11], al
cmp r10d, r9d
jb 0x14012a7c0
jmp 0x14012a78a
lea ecx, [rbx - 1]
cmp ecx, 2
jbe 0x14012a931
vmovdqu xmm5, xmmword [rbp]
vpxor xmm0, xmm5, xmmword [rsp + 0xc0]
vmovdqu xmmword [rbp], xmm0
cmp ebx, 4
je 0x14012a0fb
lea r10d, [rbx - 4]
cmp ebx, 5
je 0x14012a927
mov ecx, 4
mov r9d, ecx
add ecx, 2
shl r9, 2
lea r11, [rbp + r9]
vmovq xmm1, qword [rsp + r9 + 0xc0]
vmovq xmm0, qword [r11]
vpxor xmm0, xmm0, xmm1
vmovq qword [r11], xmm0
cmp r10d, 2
je 0x14012a0fb
shl rcx, 2
mov r9d, dword [rsp + rcx + 0xc0]
xor dword [rbp + rcx], r9d
jmp 0x14012a0fb
mov ecx, dword [rsp + 0xc0]
xor dword [rbp], ecx
jmp 0x14012a0fb
mov r10d, dword [rcx]
xor dword [rsp + 0x200], r10d
jmp 0x14012a1bc
mov r13d, r9d
xor r10d, r10d
test r9d, r9d
jne 0x14012a541
jmp 0x14012a1d1
mov r10d, 4
jmp 0x14012a1b0
lea ebx, [r12 - 0xe0]
add r11, 0x180
lea r12, [rsp + 0x80]
mov qword [rsp + 0x60], r12
mov qword [rsp + 0x58], r11
jmp 0x14012a620
test r8d, r8d
je 0x14012a8d4
mov ebx, dword [rsp + 0x40]
mov eax, ebx
sub eax, r8d
cmp eax, ebx
jb 0x14012a203
mov rdx, qword [rsp + 0x3a8]
add rdx, r14
jmp 0x14012a23a
mov edx, dword [rbp]
mov rbx, qword [rsp + 0x3a8]
mov dword [rbx], edx
mov edx, dword [rbp + rax - 4]
mov rbx, qword [rsp + 0x3a8]
mov dword [rbx + rax - 4], edx
jmp 0x14012a1f1
mov ecx, dword [rsp + 0x200]
mov dword [rdx], ecx
mov ecx, dword [rsi + rax - 4]
mov dword [rdx + rax - 4], ecx
jmp 0x14012a25b
xor r10d, r10d
mov ebx, r15d
jmp 0x14012a173
mov ecx, 4
jmp 0x14012a844
mov r10d, ebx
xor ecx, ecx
jmp 0x14012a813