Function at 0x40efb0
Capabilities:
Encode data using xor

Disassembly:
sub rsp, 0x28
test rcx, rcx
je 0x40ecca
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.00409b50
nop
nop
nop word cs:[rax + rax]
push rbx
sub rsp, 0x20
test r8, r8
mov rbx, rdx
mov rax, r8
je 0x40ed62
test rcx, rcx
je 0x40ed94
test rdx, rdx
je 0x40ed7b
cmp dword [rdx], 0x27
jbe 0x40ed30
cmp word [r8 + 0x44e8], 0
jne 0x40ed41
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.0040f730
test eax, eax
jne 0x40ed1e
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.00409b50
lea rdx, str.src_prngs_chacha20.c
lea rcx, [0x00440ee3]
mov r8d, 0x9f
call fcn.00409b50
lea rdx, str.src_prngs_chacha20.c
lea rcx, [0x00440ed7]
mov r8d, 0x9e
call fcn.00409b50
nop
nop
push rsi
push rbx
sub rsp, 0x28
test r8, r8
je 0x40ef7a
test rcx, rcx
je 0x40ef93
cmp edx, 0x27
mov eax, 0x10
jbe 0x40ef42
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 0x40ee9c
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 0x40ee9c
cmp rbx, 2
jne 0x40ef50
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 0x40ef40
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 0x40ee6c
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 0x40ee68
lea rdx, str.src_prngs_chacha20.c
lea rcx, str.prng___NULL
mov r8d, 0xb9
call fcn.00409b50
lea rdx, str.src_prngs_chacha20.c
lea rcx, [0x00440ec2]
mov r8d, 0xba
call fcn.00409b50
nop
nop dword [rax]
push r12
push rbp
mov eax, 0x48c0
push rdi
push rsi
push rbx
call fcn.00433f20
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 [0x00440f70]
movabs rdi, 0x911a7f3759effabc
mov r8d, 0xffffa61a
movabs rdx, 0x58f012b9526b259
movdqa xmm1, xmmword [0x00440f80]
xor r9d, r9d
mov qword [rsp + 0x45c], 0
mov qword [rsp + 0x464], 0
xor r12d, r12d
movdqa xmm2, xmmword [0x00440f90]
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 0x40f1a9
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 0x40f0c0
lea rdx, [rbx + 0x8c]
mov r9d, 0x14
mov r8d, 0x20
mov rcx, rbx
call fcn.0040f7a0
test eax, eax
je 0x40f212
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.0040f6a0
test eax, eax
jne 0x40f204
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.0040f730
test eax, eax
je 0x40f2b0
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.00409b30
mov ecx, eax
mov eax, 5
test ecx, ecx
jne 0x40f204
cmp word [rsp + 0x48b8], 0
je 0x40f29c
mov r8d, 0x1f4
mov rdx, rdi
mov rcx, rbx
call fcn.0040f730
test eax, eax
jne 0x40f29c
cmp word [rsp + 0x48b8], 0
je 0x40f29c
lea r12, [rsp + 0xa0]
mov r8d, 0x28
mov rcx, rbx
mov rdx, r12
call fcn.0040f730
test eax, eax
jne 0x40f204
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 0x40f34f
mov r9d, 0x14
mov r8d, 0x20
mov rdx, r12
mov rcx, rbx
call fcn.0040f7a0
test eax, eax
jne 0x40f204
lea rdx, [r12 + 0x20]
xor r9d, r9d
mov r8d, 8
mov rcx, rbx
call fcn.0040f6a0
test eax, eax
jne 0x40f204
mov edx, 0x28
mov rcx, r12
call fcn.0040a640
cmp word [rsp + 0x48b8], 0
je 0x40f29c
mov r8d, 0x1f4
mov rdx, rdi
mov rcx, rbx
call fcn.0040f730
test eax, eax
jne 0x40f29c
lea rdx, [rsp + 0x3c]
mov r8, rbx
mov rcx, r12
call 0x40ecf0
test eax, eax
jne 0x40f204
cmp word [rsp + 0x48b8], 0
je 0x40f29c
mov r8d, 0x1f4
mov rdx, rdi
mov rcx, rbx
call fcn.0040f730
test eax, eax
jne 0x40f29c
cmp word [rsp + 0x48b8], 0
je 0x40f29c
mov r8d, 0xa
mov rdx, rdi
mov rcx, rbx
call fcn.0040f730
test eax, eax
jne 0x40f29c
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.00409b30
test eax, eax
je 0x40f566
mov eax, 5
jmp 0x40f204
mov rcx, rbx
mov word [rsp + 0x48b8], 0
call fcn.0040f640
test eax, eax
jne 0x40f204
mov edx, dword [rsp + 0x3c]
mov r8, rbx
mov rcx, r12
call 0x40edb0
test eax, eax
jne 0x40f204
mov rcx, rbx
call fcn.0040e790
test eax, eax
jne 0x40f204
cmp word [rsp + 0x48b8], 0
je 0x40f29c
mov r8d, 0x1f4
mov rdx, rdi
mov rcx, rbx
call fcn.0040f730
test eax, eax
jne 0x40f29c
cmp word [rsp + 0x48b8], 0
je 0x40f29c
mov r8d, 0xa
mov rdx, rdi
mov rcx, rbx
call fcn.0040f730
test eax, eax
jne 0x40f29c
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.00409b30
test eax, eax
jne 0x40f55c
mov rcx, rbx
mov word [rsp + 0x48b8], 0
call fcn.0040f640
jmp 0x40f204