Function at 0x424840
Capabilities:
Encode data using xor

Disassembly:
sub rsp, 0x28
test rcx, rcx
je 0x42455a
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.0041f440
nop
nop
nop word cs:[rax + rax]
push rbx
sub rsp, 0x20
test r8, r8
mov rbx, rdx
mov rax, r8
je 0x4245f2
test rcx, rcx
je 0x424624
test rdx, rdx
je 0x42460b
cmp dword [rdx], 0x27
jbe 0x4245c0
cmp word [r8 + 0x44e8], 0
jne 0x4245d1
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.00424fc0
test eax, eax
jne 0x4245ae
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.0041f440
lea rdx, str.src_prngs_chacha20.c
lea rcx, [0x00472dc3]
mov r8d, 0x9f
call fcn.0041f440
lea rdx, str.src_prngs_chacha20.c
lea rcx, [0x00472db7]
mov r8d, 0x9e
call fcn.0041f440
nop
nop
push rsi
push rbx
sub rsp, 0x28
test r8, r8
je 0x42480a
test rcx, rcx
je 0x424823
cmp edx, 0x27
mov eax, 0x10
jbe 0x4247d2
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 0x42472c
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 0x42472c
cmp rbx, 2
jne 0x4247e0
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 0x4247d0
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 0x4246fc
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 0x4246f8
lea rdx, str.src_prngs_chacha20.c
lea rcx, str.prng___NULL
mov r8d, 0xb9
call fcn.0041f440
lea rdx, str.src_prngs_chacha20.c
lea rcx, [0x00472da2]
mov r8d, 0xba
call fcn.0041f440
nop
nop dword [rax]
push r12
push rbp
mov eax, 0x48c0
push rdi
push rsi
push rbx
call fcn.00448d50
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 [0x00472e50]
movabs rdi, 0x911a7f3759effabc
mov r8d, 0xffffa61a
movabs rdx, 0x58f012b9526b259
movdqa xmm1, xmmword [0x00472e60]
xor r9d, r9d
mov qword [rsp + 0x45c], 0
mov qword [rsp + 0x464], 0
xor r12d, r12d
movdqa xmm2, xmmword [0x00472e70]
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 0x424a39
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 0x424950
lea rdx, [rbx + 0x8c]
mov r9d, 0x14
mov r8d, 0x20
mov rcx, rbx
call fcn.00425030
test eax, eax
je 0x424aa2
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.00424f30
test eax, eax
jne 0x424a94
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.00424fc0
test eax, eax
je 0x424b40
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.0041f420
mov ecx, eax
mov eax, 5
test ecx, ecx
jne 0x424a94
cmp word [rsp + 0x48b8], 0
je 0x424b2c
mov r8d, 0x1f4
mov rdx, rdi
mov rcx, rbx
call fcn.00424fc0
test eax, eax
jne 0x424b2c
cmp word [rsp + 0x48b8], 0
je 0x424b2c
lea r12, [rsp + 0xa0]
mov r8d, 0x28
mov rcx, rbx
mov rdx, r12
call fcn.00424fc0
test eax, eax
jne 0x424a94
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 0x424bdf
mov r9d, 0x14
mov r8d, 0x20
mov rdx, r12
mov rcx, rbx
call fcn.00425030
test eax, eax
jne 0x424a94
lea rdx, [r12 + 0x20]
xor r9d, r9d
mov r8d, 8
mov rcx, rbx
call fcn.00424f30
test eax, eax
jne 0x424a94
mov edx, 0x28
mov rcx, r12
call fcn.0041ff30
cmp word [rsp + 0x48b8], 0
je 0x424b2c
mov r8d, 0x1f4
mov rdx, rdi
mov rcx, rbx
call fcn.00424fc0
test eax, eax
jne 0x424b2c
lea rdx, [rsp + 0x3c]
mov r8, rbx
mov rcx, r12
call 0x424580
test eax, eax
jne 0x424a94
cmp word [rsp + 0x48b8], 0
je 0x424b2c
mov r8d, 0x1f4
mov rdx, rdi
mov rcx, rbx
call fcn.00424fc0
test eax, eax
jne 0x424b2c
cmp word [rsp + 0x48b8], 0
je 0x424b2c
mov r8d, 0xa
mov rdx, rdi
mov rcx, rbx
call fcn.00424fc0
test eax, eax
jne 0x424b2c
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.0041f420
test eax, eax
je 0x424df6
mov eax, 5
jmp 0x424a94
mov rcx, rbx
mov word [rsp + 0x48b8], 0
call fcn.00424ed0
test eax, eax
jne 0x424a94
mov edx, dword [rsp + 0x3c]
mov r8, rbx
mov rcx, r12
call 0x424640
test eax, eax
jne 0x424a94
mov rcx, rbx
call fcn.00424020
test eax, eax
jne 0x424a94
cmp word [rsp + 0x48b8], 0
je 0x424b2c
mov r8d, 0x1f4
mov rdx, rdi
mov rcx, rbx
call fcn.00424fc0
test eax, eax
jne 0x424b2c
cmp word [rsp + 0x48b8], 0
je 0x424b2c
mov r8d, 0xa
mov rdx, rdi
mov rcx, rbx
call fcn.00424fc0
test eax, eax
jne 0x424b2c
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.0041f420
test eax, eax
jne 0x424dec
mov rcx, rbx
mov word [rsp + 0x48b8], 0
call fcn.00424ed0
jmp 0x424a94