Function at 0x423a40
Capabilities:
Encode data using xor

Disassembly:
sub rsp, 0x28
test rcx, rcx
je 0x42375a
xor eax, eax
mov qword [rcx + 0x8c], 0
mov qword [rcx + 0x94], 0
mov word [rcx + 0x44e8], ax
xor eax, eax
mov qword [rcx + 0x9c], 0
mov qword [rcx + 0xa4], 0
mov qword [rcx + 0xac], 0
mov dword [rcx + 0xb4], 0
add rsp, 0x28
ret
lea rdx, str.src_prngs_chacha20.c
lea rcx, str.prng___NULL
mov r8d, 0x27
call fcn.0041e640
nop
nop
nop word cs:[rax + rax]
push rbx
sub rsp, 0x20
test r8, r8
mov rbx, rdx
mov rax, r8
je 0x4237f2
test rcx, rcx
je 0x423824
test rdx, rdx
je 0x42380b
cmp dword [rdx], 0x27
jbe 0x4237c0
cmp word [r8 + 0x44e8], 0
jne 0x4237d1
mov eax, 9
add rsp, 0x20
pop rbx
ret
mov eax, 6
mov dword [rdx], 0x28
add rsp, 0x20
pop rbx
ret
mov rdx, rcx
mov r8d, 0x28
mov rcx, rax
call fcn.004241c0
test eax, eax
jne 0x4237ae
mov dword [rbx], 0x28
add rsp, 0x20
pop rbx
ret
lea rdx, str.src_prngs_chacha20.c
lea rcx, str.prng___NULL
mov r8d, 0x9d
call fcn.0041e640
lea rdx, str.src_prngs_chacha20.c
lea rcx, [0x0045ef43]
mov r8d, 0x9f
call fcn.0041e640
lea rdx, str.src_prngs_chacha20.c
lea rcx, [0x0045ef37]
mov r8d, 0x9e
call fcn.0041e640
nop
nop
push rsi
push rbx
sub rsp, 0x28
test r8, r8
je 0x423a0a
test rcx, rcx
je 0x423a23
cmp edx, 0x27
mov eax, 0x10
jbe 0x4239d2
lea ebx, [rdx - 1]
xor eax, eax
xor r9d, r9d
mov word [r8 + 0x44e8], ax
mov qword [r8 + 0x8c], 0
mov r10d, 0xcccccccd
lea r11, [rcx + rbx + 1]
and ebx, 3
mov qword [r8 + 0x94], 0
mov qword [r8 + 0x9c], 0
mov qword [r8 + 0xa4], 0
mov qword [r8 + 0xac], 0
mov dword [r8 + 0xb4], 0
je 0x42392c
add rcx, 1
movzx edx, byte [rcx - 1]
mov r9d, 1
xor byte [r8 + 0x8c], dl
cmp rbx, 1
mov dword [r8 + 0xb4], 1
je 0x42392c
cmp rbx, 2
jne 0x4239e0
add rcx, 1
lea edx, [r9 + 1]
mov eax, r9d
movzx ebx, byte [rcx - 1]
mov dword [r8 + 0xb4], edx
mul r10d
shr edx, 5
lea esi, [rdx + rdx*4]
shl esi, 3
sub r9d, esi
xor byte [r8 + r9 + 0x8c], bl
mov r9d, dword [r8 + 0xb4]
lea eax, [r9 + 1]
movzx esi, byte [rcx]
lea rbx, [rcx + 1]
mov dword [r8 + 0xb4], eax
mov eax, r9d
mul r10d
shr edx, 5
lea eax, [rdx + rdx*4]
shl eax, 3
sub r9d, eax
xor byte [r8 + r9 + 0x8c], sil
cmp rbx, r11
je 0x4239d0
mov r9d, dword [r8 + 0xb4]
movzx ebx, byte [rcx + 1]
add rcx, 4
mov eax, r9d
lea esi, [r9 + 1]
mul r10d
mov dword [r8 + 0xb4], esi
shr edx, 5
lea esi, [rdx + rdx*4]
shl esi, 3
sub r9d, esi
xor byte [r8 + r9 + 0x8c], bl
mov r9d, dword [r8 + 0xb4]
movzx ebx, byte [rcx - 2]
lea eax, [r9 + 1]
mov dword [r8 + 0xb4], eax
mov eax, r9d
mul r10d
shr edx, 5
lea esi, [rdx + rdx*4]
shl esi, 3
sub r9d, esi
xor byte [r8 + r9 + 0x8c], bl
mov r9d, dword [r8 + 0xb4]
jmp 0x4238fc
xor eax, eax
add rsp, 0x28
pop rbx
pop rsi
ret
lea eax, [r9 + 1]
movzx esi, byte [rcx]
and r9d, 1
add rcx, 1
mov dword [r8 + 0xb4], eax
xor byte [r8 + r9 + 0x8c], sil
mov r9d, dword [r8 + 0xb4]
jmp 0x4238f8
lea rdx, str.src_prngs_chacha20.c
lea rcx, str.prng___NULL
mov r8d, 0xb9
call fcn.0041e640
lea rdx, str.src_prngs_chacha20.c
lea rcx, [0x0045ef22]
mov r8d, 0xba
call fcn.0041e640
nop
nop dword [rax]
push r12
push rbp
mov eax, 0x48c0
push rdi
push rsi
push rbx
call fcn.00447f50
sub rsp, rax
movabs rbx, 0x273475e4030dc947
mov esi, 0xffffdebd
mov ecx, 0xffffd8be
mov qword [rsp + 0x4c], rbx
mov word [rsp + 0x54], si
lea rbx, [rsp + 0x3d0]
lea rsi, [rsp + 0x60]
movdqa xmm0, xmmword [0x0045efd0]
movabs rdi, 0x911a7f3759effabc
mov r8d, 0xffffa61a
movabs rdx, 0x58f012b9526b259
movdqa xmm1, xmmword [0x0045efe0]
xor r9d, r9d
mov qword [rsp + 0x45c], 0
mov qword [rsp + 0x464], 0
xor r12d, r12d
movdqa xmm2, xmmword [0x0045eff0]
mov word [rsp + 0x4a], cx
mov qword [rsp + 0x56], rdi
mov rcx, rsi
mov word [rsp + 0x5e], r8w
mov byte [rsp + 0x90], 0x31
mov r8d, 0xcccccccd
movaps xmmword [rsp + 0x60], xmm0
mov byte [rsp + 0x91], 0x32
mov dword [rsp + 0x3c], 0x12c
lea rdi, [rsi + 0x32]
movaps xmmword [rsp + 0x70], xmm1
movaps xmmword [rsp + 0x80], xmm2
mov qword [rsp + 0x42], rdx
mov word [rsp + 0x48b8], r9w
mov qword [rbx + 0x9c], 0
mov qword [rbx + 0xa4], 0
mov qword [rbx + 0xac], 0
jmp 0x423c39
mov eax, r10d
lea ebp, [r12 + 2]
movzx r9d, byte [rcx + 1]
mul r8d
add rcx, 7
mov eax, ebp
shr edx, 5
lea r11d, [rdx + rdx*4]
mul r8d
shl r11d, 3
sub r10d, r11d
shr edx, 5
xor byte [rsp + r10 + 0x45c], r9b
lea r9d, [r12 + 3]
lea r11d, [rdx + rdx*4]
movzx r10d, byte [rcx - 5]
mov eax, r9d
shl r11d, 3
sub ebp, r11d
mul r8d
xor byte [rsp + rbp + 0x45c], r10b
lea r10d, [r12 + 4]
movzx ebp, byte [rcx - 4]
mov eax, r10d
shr edx, 5
lea r11d, [rdx + rdx*4]
mul r8d
shl r11d, 3
sub r9d, r11d
lea r11d, [r12 + 5]
shr edx, 5
xor byte [rsp + r9 + 0x45c], bpl
movzx r9d, byte [rcx - 3]
lea ebp, [rdx + rdx*4]
mov eax, r11d
mul r8d
shl ebp, 3
sub r10d, ebp
xor byte [rsp + r10 + 0x45c], r9b
lea r10d, [r12 + 6]
shr edx, 5
lea ebp, [rdx + rdx*4]
movzx r9d, byte [rcx - 2]
add r12d, 7
mov eax, r10d
mov dword [rsp + 0x484], r12d
mul r8d
shl ebp, 3
sub r11d, ebp
xor byte [rsp + r11 + 0x45c], r9b
movzx r11d, byte [rcx - 1]
shr edx, 5
lea r9d, [rdx + rdx*4]
shl r9d, 3
sub r10d, r9d
xor byte [rsp + r10 + 0x45c], r11b
mov eax, r12d
lea r11, [rcx + 1]
movzx ebp, byte [rcx]
mul r8d
mov eax, r12d
lea r10d, [r12 + 1]
mov dword [rsp + 0x484], r10d
shr edx, 5
lea r9d, [rdx + rdx*4]
shl r9d, 3
sub eax, r9d
xor byte [rsp + rax + 0x45c], bpl
cmp r11, rdi
jne 0x423b50
lea rdx, [rbx + 0x8c]
mov r9d, 0x14
mov r8d, 0x20
mov rcx, rbx
call fcn.00424230
test eax, eax
je 0x423ca2
add rsp, 0x48c0
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
lea rdx, [rbx + 0xac]
xor r9d, r9d
mov r8d, 8
mov rcx, rbx
call fcn.00424130
test eax, eax
jne 0x423c94
lea rdi, [rsp + 0x1d0]
mov qword [rbx + 0x94], 0
mov qword [rbx + 0x9c], 0
mov qword [rbx + 0xa4], 0
mov qword [rbx + 0xac], 0
mov r12d, 1
mov qword [rbx + 0x8c], 0
mov r8d, 0xa
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x484], 0
mov word [rsp + 0x48b8], r12w
call fcn.004241c0
test eax, eax
je 0x423d40
mov eax, 9
add rsp, 0x48c0
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
lea rbp, str.CHACHA_PRNG
lea r8, [rsp + 0x42]
mov rcx, rdi
mov dword [rsp + 0x28], 1
mov r9d, 0xa
mov edx, 0xa
mov qword [rsp + 0x20], rbp
call fcn.0041e620
mov ecx, eax
mov eax, 5
test ecx, ecx
jne 0x423c94
cmp word [rsp + 0x48b8], 0
je 0x423d2c
mov r8d, 0x1f4
mov rdx, rdi
mov rcx, rbx
call fcn.004241c0
test eax, eax
jne 0x423d2c
cmp word [rsp + 0x48b8], 0
je 0x423d2c
lea r12, [rsp + 0xa0]
mov r8d, 0x28
mov rcx, rbx
mov rdx, r12
call fcn.004241c0
test eax, eax
jne 0x423c94
movzx r11d, byte [rsi]
mov r8d, 0xcccccccd
mov r10d, 1
xor byte [rsp + 0xa0], r11b
mov eax, r10d
movzx r11d, byte [rsi + r10]
mul r8d
mov eax, r10d
shr edx, 5
lea r9d, [rdx + rdx*4]
shl r9d, 3
sub eax, r9d
lea r9, [r10 + 1]
xor byte [rsp + rax + 0xa0], r11b
movzx r11d, byte [rsi + r10 + 1]
mov eax, r9d
mul r8d
shr edx, 5
lea ecx, [rdx + rdx*4]
shl ecx, 3
sub r9d, ecx
xor byte [rsp + r9 + 0xa0], r11b
lea r9, [r10 + 2]
movzx r11d, byte [rsi + r10 + 2]
mov eax, r9d
mul r8d
shr edx, 5
lea ecx, [rdx + rdx*4]
shl ecx, 3
sub r9d, ecx
xor byte [rsp + r9 + 0xa0], r11b
lea r9, [r10 + 3]
movzx r11d, byte [rsi + r10 + 3]
mov eax, r9d
mul r8d
shr edx, 5
lea ecx, [rdx + rdx*4]
shl ecx, 3
sub r9d, ecx
xor byte [rsp + r9 + 0xa0], r11b
lea r9, [r10 + 4]
movzx r11d, byte [rsi + r10 + 4]
mov eax, r9d
mul r8d
shr edx, 5
lea ecx, [rdx + rdx*4]
shl ecx, 3
sub r9d, ecx
xor byte [rsp + r9 + 0xa0], r11b
lea r9, [r10 + 5]
movzx r11d, byte [rsi + r10 + 5]
mov eax, r9d
mul r8d
shr edx, 5
lea ecx, [rdx + rdx*4]
shl ecx, 3
sub r9d, ecx
xor byte [rsp + r9 + 0xa0], r11b
lea r9, [r10 + 6]
movzx r11d, byte [rsi + r10 + 6]
mov eax, r9d
mul r8d
shr edx, 5
lea ecx, [rdx + rdx*4]
shl ecx, 3
add r10, 7
sub r9d, ecx
xor byte [rsp + r9 + 0xa0], r11b
cmp r10, 0x32
jne 0x423ddf
mov r9d, 0x14
mov r8d, 0x20
mov rdx, r12
mov rcx, rbx
call fcn.00424230
test eax, eax
jne 0x423c94
lea rdx, [r12 + 0x20]
xor r9d, r9d
mov r8d, 8
mov rcx, rbx
call fcn.00424130
test eax, eax
jne 0x423c94
mov edx, 0x28
mov rcx, r12
call fcn.0041f130
cmp word [rsp + 0x48b8], 0
je 0x423d2c
mov r8d, 0x1f4
mov rdx, rdi
mov rcx, rbx
call fcn.004241c0
test eax, eax
jne 0x423d2c
lea rdx, [rsp + 0x3c]
mov r8, rbx
mov rcx, r12
call 0x423780
test eax, eax
jne 0x423c94
cmp word [rsp + 0x48b8], 0
je 0x423d2c
mov r8d, 0x1f4
mov rdx, rdi
mov rcx, rbx
call fcn.004241c0
test eax, eax
jne 0x423d2c
cmp word [rsp + 0x48b8], 0
je 0x423d2c
mov r8d, 0xa
mov rdx, rdi
mov rcx, rbx
call fcn.004241c0
test eax, eax
jne 0x423d2c
lea r8, [rsp + 0x4c]
mov dword [rsp + 0x28], 2
mov qword [rsp + 0x20], rbp
mov r9d, 0xa
mov edx, 0xa
mov rcx, rdi
call fcn.0041e620
test eax, eax
je 0x423ff6
mov eax, 5
jmp 0x423c94
mov rcx, rbx
mov word [rsp + 0x48b8], 0
call fcn.004240d0
test eax, eax
jne 0x423c94
mov edx, dword [rsp + 0x3c]
mov r8, rbx
mov rcx, r12
call 0x423840
test eax, eax
jne 0x423c94
mov rcx, rbx
call fcn.00423220
test eax, eax
jne 0x423c94
cmp word [rsp + 0x48b8], 0
je 0x423d2c
mov r8d, 0x1f4
mov rdx, rdi
mov rcx, rbx
call fcn.004241c0
test eax, eax
jne 0x423d2c
cmp word [rsp + 0x48b8], 0
je 0x423d2c
mov r8d, 0xa
mov rdx, rdi
mov rcx, rbx
call fcn.004241c0
test eax, eax
jne 0x423d2c
lea r8, [rsp + 0x56]
mov dword [rsp + 0x28], 3
mov qword [rsp + 0x20], rbp
mov r9d, 0xa
mov edx, 0xa
mov rcx, rdi
call fcn.0041e620
test eax, eax
jne 0x423fec
mov rcx, rbx
mov word [rsp + 0x48b8], 0
call fcn.004240d0
jmp 0x423c94