Function at 0x2c1a77440
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister

Disassembly:
push r15
mov eax, 0x1498
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
call fcn.2c1a8e910
sub rsp, rax
movaps xmmword [rsp + 0x1480], xmm6
lea rax, [rsp + 0xe0]
mov r14, rcx
mov dword [rsp + 0xac0], 0x61666564
lea rdi, [rsp + 0xab0]
mov rcx, rax
mov dword [rsp + 0xac3], 0x746c7561
lea rbx, [rsp + 0xac0]
mov rdx, rdi
mov qword [rsp + 0xab8], 7
mov qword [rsp + 0xab0], rbx
mov byte [rsp + 0xac7], 0
mov qword [rsp + 0x68], rax
call fcn.2c1afb560
mov rcx, qword [rsp + 0xab0]
cmp rcx, rbx
je 0x2c1a774dc
mov rax, qword [rsp + 0xac0]
lea rdx, [rax + 1]
call fcn.2c1b17110
mov rcx, qword [rsp + 0x68]
call fcn.2c1afb760
mov edx, eax
mov dword [rsp + 0xab0], eax
mov ebx, 1
nop dword [rax]
mov eax, edx
shr eax, 0x1e
xor eax, edx
imul eax, eax, 0x6c078965
lea edx, [rax + rbx]
mov dword [rdi + rbx*4], edx
add rbx, 1
cmp rbx, 0x270
jne 0x2c1a774f8
movabs rax, 0x555555555555555
mov qword [rsp + 0x1470], 0x270
cmp rax, r14
jb 0x2c1a77d27
test r14, r14
pxor xmm0, xmm0
movups xmmword [rsp + 0x88], xmm0
je 0x2c1a77c3a
lea rax, [r14 + r14*2]
lea rsi, [rax*8]
mov rcx, rsi
mov qword [rsp + 0x78], rsi
mov qword [rsp + 0x70], rsi
call fcn.2c1b17150
add rsi, rax
cmp r14, 1
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x50], rsi
mov qword [rsp + 0x90], rsi
je 0x2c1a775de
mov rcx, r14
mov rdx, r14
pxor xmm0, xmm0
shr rcx, 1
and rdx, 0xfffffffffffffffe
add rdx, rcx
shl rdx, 4
add rdx, rax
nop dword [rax + rax]
movups xmmword [rax], xmm0
add rax, 0x30
movups xmmword [rax - 0x20], xmm0
movups xmmword [rax - 0x10], xmm0
cmp rax, rdx
jne 0x2c1a775b0
test r14b, 1
je 0x2c1a775ed
mov rsi, qword [rsp + 0x58]
mov rax, r14
and rax, 0xfffffffffffffffe
lea rax, [rax + rax*2]
lea rax, [rsi + rax*8]
pxor xmm0, xmm0
mov qword [rax + 0x10], 0
movups xmmword [rax], xmm0
mov qword [rsp + 0x38], 0
mov rax, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x78]
mov qword [rsp + 0x88], rax
lea rax, [r14*4]
mov qword [rsp + 0x60], rax
sar rdx, 3
movabs rax, 0xaaaaaaaaaaaaaaab
imul rdx, rax
mov rax, qword [rsp + 0x58]
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x48], rdx
nop word cs:[rax + rax]
mov rax, qword [rsp + 0x30]
mov rcx, qword [rax + 8]
mov rdx, qword [rax]
mov rax, rcx
sub rax, rdx
sar rax, 2
cmp rax, r14
jb 0x2c1a77bf8
cmp r14, rax
jae 0x2c1a77680
mov rax, qword [rsp + 0x60]
add rdx, rax
cmp rcx, rdx
je 0x2c1a77680
mov rax, qword [rsp + 0x30]
mov qword [rax + 8], rdx
nop word [rax + rax]
pxor xmm0, xmm0
xor r13d, r13d
xor r15d, r15d
xor ebp, ebp
movaps xmmword [rsp + 0xc0], xmm0
mov qword [rsp + 0xd0], 0
jmp 0x2c1a776d7
shr rsi, 0x20
add esi, 1
cmp r13, r15
je 0x2c1a777c3
lea rax, [rbp + 1]
mov dword [r15], esi
add r15, 4
cmp r14, rax
mov qword [rsp + 0xc8], r15
je 0x2c1a77870
mov rbp, rax
cmp rbx, 0x26f
ja 0x2c1a778e0
mov eax, dword [rsp + rbx*4 + 0xab0]
lea rdx, [rbx + 1]
mov qword [rsp + 0x1470], rdx
mov rbx, rdx
mov ecx, eax
shr ecx, 0xb
xor eax, ecx
mov ecx, eax
shl ecx, 7
and ecx, 0x9d2c5680
xor eax, ecx
mov ecx, eax
shl ecx, 0xf
and ecx, 0xefc60000
xor eax, ecx
mov ecx, eax
shr ecx, 0x12
xor eax, ecx
lea rax, [rax + rax*4]
lea rsi, [rax + rax*4]
cmp esi, 0x14
ja 0x2c1a776a8
cmp rdx, 0x26f
mov rax, rdx
ja 0x2c1a77794
nop
lea rdx, [rax + 1]
mov eax, dword [rsp + rax*4 + 0xab0]
mov qword [rsp + 0x1470], rdx
mov ecx, eax
shr ecx, 0xb
xor eax, ecx
mov ecx, eax
shl ecx, 7
and ecx, 0x9d2c5680
xor eax, ecx
mov ecx, eax
shl ecx, 0xf
and ecx, 0xefc60000
xor eax, ecx
mov ecx, eax
shr ecx, 0x12
xor eax, ecx
lea rax, [rax + rax*4]
lea rsi, [rax + rax*4]
cmp esi, 0x14
ja 0x2c1a777b0
cmp rdx, 0x26f
mov rax, rdx
jbe 0x2c1a77740
mov rcx, rdi
call fcn.2c1b02310
mov rax, qword [rsp + 0x1470]
jmp 0x2c1a77740
shr rsi, 0x20
mov rbx, rdx
add esi, 1
cmp r13, r15
jne 0x2c1a776b8
mov rdx, qword [rsp + 0xc0]
mov rax, r13
sub rax, rdx
mov qword [rsp + 0x28], rdx
mov r12, rax
mov qword [rsp + 0x40], rax
movabs rax, 0x1fffffffffffffff
sar r12, 2
cmp r12, rax
je 0x2c1a77d33
cmp qword [rsp + 0x28], r13
je 0x2c1a77920
lea rax, [r12 + r12]
cmp rax, r12
jb 0x2c1a77c10
test rax, rax
jne 0x2c1a77d04
xor r12d, r12d
xor ecx, ecx
mov rax, qword [rsp + 0x40]
movq xmm6, rcx
lea r15, [rcx + rax + 4]
test rax, rax
mov dword [rcx + rax], esi
movq xmm2, r15
punpcklqdq xmm6, xmm2
jg 0x2c1a778f8
cmp qword [rsp + 0x28], 0
jne 0x2c1a77905
lea rax, [rbp + 1]
movaps xmmword [rsp + 0xc0], xmm6
mov r13, r12
cmp r14, rax
mov qword [rsp + 0xd0], r12
jne 0x2c1a776d4
nop dword [rax + rax]
mov rsi, qword [rsp + 0x38]
cmp qword [rsp + 0x48], rsi
je 0x2c1a77d47
mov rsi, qword [rsp + 0x30]
lea r15, [rsp + 0xc0]
mov rdx, r15
mov rcx, rsi
call fcn.2c1a76a40
mov rcx, qword [rsp + 0xc0]
test rcx, rcx
je 0x2c1a77960
mov rdx, r13
add rsi, 0x18
sub rdx, rcx
call fcn.2c1b17110
mov rdx, qword [rsp + 0x38]
mov qword [rsp + 0x30], rsi
lea rax, [rdx + 1]
cmp rbp, rdx
je 0x2c1a77978
mov qword [rsp + 0x38], rax
jmp 0x2c1a77640
mov rcx, rdi
call fcn.2c1b02310
mov rbx, qword [rsp + 0x1470]
jmp 0x2c1a776e4
mov rdx, qword [rsp + 0x28]
mov r8, rax
call fcn.2c1a9ad28
mov rcx, qword [rsp + 0x28]
mov rdx, r13
sub rdx, rcx
call fcn.2c1b17110
jmp 0x2c1a7784b
add r12, 1
jb 0x2c1a77c10
movabs rax, 0x1fffffffffffffff
cmp r12, rax
cmova r12, rax
shl r12, 2
lea r15, [rsp + 0xc0]
mov rcx, r12
call fcn.2c1b17150
mov rcx, rax
add r12, rax
jmp 0x2c1a7781b
mov rsi, qword [rsp + 0x38]
add qword [rsp + 0x30], 0x18
lea rax, [rsi + 1]
cmp rbp, rsi
jne 0x2c1a778cf
mov rcx, qword [rsp + 0x78]
pxor xmm0, xmm0
mov qword [rsp + 0xd0], 0
movaps xmmword [rsp + 0xc0], xmm0
call fcn.2c1b17150
mov r12, rax
mov rax, qword [rsp + 0x70]
movq xmm3, r12
mov r8, r12
mov rdx, qword [rsp + 0x50]
movddup xmm0, xmm3
movaps xmmword [rsp + 0xc0], xmm0
mov rcx, qword [rsp + 0x58]
add rax, r12
mov qword [rsp + 0xd0], rax
call fcn.2c1b152b0
mov r13, rax
mov rsi, rax
mov qword [rsp + 0xc8], rax
pxor xmm0, xmm0
sub r13, r12
movaps xmmword [rsp + 0xa0], xmm0
movabs rax, 0xaaaaaaaaaaaaaaab
mov qword [rsp + 0xb0], 0
mov rbp, r13
sar rbp, 3
imul rbp, rax
test r13, r13
jne 0x2c1a77cba
xor ebx, ebx
xor edi, edi
cmp rsi, r12
mov qword [rsp + 0xa8], rbx
mov r14, r12
je 0x2c1a77a51
nop dword [rax + rax]
mov rcx, qword [r14]
test rcx, rcx
je 0x2c1a77c1f
mov rdx, qword [r14 + 0x10]
add r14, 0x18
sub rdx, rcx
call fcn.2c1b17110
cmp rsi, r14
jne 0x2c1a77a30
test r12, r12
je 0x2c1a77a63
mov rdx, qword [rsp + 0x70]
mov rcx, r12
call fcn.2c1b17110
mov r12, qword [rdi + 8]
pxor xmm0, xmm0
mov qword [rsp + 0xd0], 0
sub r12, qword [rdi]
movaps xmmword [rsp + 0xc0], xmm0
sar r12, 2
test rbp, rbp
je 0x2c1a77c71
mov rcx, r13
call fcn.2c1b17150
mov rbp, rax
movq xmm4, rbp
mov r8, rbp
mov rdx, rbx
lea rax, [rbp + r13]
mov rcx, rdi
movddup xmm0, xmm4
movaps xmmword [rsp + 0xc0], xmm0
mov qword [rsp + 0xd0], rax
call fcn.2c1b152b0
lea r15, [rsp + 0xc0]
mov edx, r12d
mov rsi, rax
mov qword [rsp + 0xc8], rax
mov rcx, r15
call fcn.2c1a76bc0
movsd xmm1, qword [0x2c1b1b500]
comisd xmm0, xmm1
jb 0x2c1a77cb0
subsd xmm0, xmm1
cvttsd2si r12, xmm0
btc r12, 0x3f
cmp rsi, rbp
mov r14, rbp
je 0x2c1a77b31
nop dword [rax]
mov rcx, qword [r14]
test rcx, rcx
je 0x2c1a77c8a
mov rdx, qword [r14 + 0x10]
add r14, 0x18
sub rdx, rcx
call fcn.2c1b17110
cmp rsi, r14
jne 0x2c1a77b10
test rbp, rbp
je 0x2c1a77b41
mov rdx, r13
mov rcx, rbp
call fcn.2c1b17110
cmp rdi, rbx
mov rsi, rdi
je 0x2c1a77b71
nop dword [rax]
mov rcx, qword [rsi]
test rcx, rcx
je 0x2c1a77c78
mov rdx, qword [rsi + 0x10]
add rsi, 0x18
sub rdx, rcx
call fcn.2c1b17110
cmp rbx, rsi
jne 0x2c1a77b50
sub rbx, rdi
mov rcx, rdi
mov rdx, rbx
call fcn.2c1b17110
mov rax, qword [rsp + 0x58]
cmp qword [rsp + 0x50], rax
mov rbx, rax
je 0x2c1a77bb3
nop
mov rcx, qword [rbx]
test rcx, rcx
je 0x2c1a77c9c
mov rdx, qword [rbx + 0x10]
add rbx, 0x18
sub rdx, rcx
call fcn.2c1b17110
cmp qword [rsp + 0x50], rbx
jne 0x2c1a77b90
cmp qword [rsp + 0x58], 0
je 0x2c1a77bca
mov rdx, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x58]
call fcn.2c1b17110
mov rcx, qword [rsp + 0x68]
call fcn.2c1afb4d0
nop
movaps xmm6, xmmword [rsp + 0x1480]
mov rax, r12
add rsp, 0x1498
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, qword [rsp + 0x30]
mov rdx, r14
sub rdx, rax
call fcn.2c1b060f0
jmp 0x2c1a77680
movabs r12, 0x7ffffffffffffffc
jmp 0x2c1a7793f
add r14, 0x18
cmp rsi, r14
jne 0x2c1a77a30
test r12, r12
jne 0x2c1a77a56
jmp 0x2c1a77a63
mov qword [rsp + 0x90], 0
xor r12d, r12d
movaps xmmword [rsp + 0x80], xmm0
mov qword [rsp + 0x70], 0
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x50], 0
jmp 0x2c1a7799d
xor ebp, ebp
jmp 0x2c1a77a9a
add rsi, 0x18
cmp rbx, rsi
jne 0x2c1a77b50
jmp 0x2c1a77b71
add r14, 0x18
cmp rsi, r14
jne 0x2c1a77b10
jmp 0x2c1a77b31
add rbx, 0x18
cmp qword [rsp + 0x50], rbx
jne 0x2c1a77b90
jmp 0x2c1a77bb3
cvttsd2si r12, xmm0
jmp 0x2c1a77b04
test rbp, rbp
je 0x2c1a77d00
movabs rax, 0x7ffffffffffffff8
cmp rax, r13
jb 0x2c1a77d22
mov rcx, r13
call fcn.2c1b17150
mov rdi, rax
mov r8, rdi
mov rdx, rsi
mov rcx, r12
call fcn.2c1b152b0
lea rbx, [rdi + r13]
mov qword [rsp + 0xa0], rdi
mov qword [rsp + 0xb0], rbx
jmp 0x2c1a77a1b
xor edi, edi
jmp 0x2c1a77cd9
movabs rdx, 0x1fffffffffffffff
cmp rax, rdx
cmova rax, rdx
lea r12, [rax*4]
jmp 0x2c1a7793f
call fcn.2c1b17e90
lea rcx, str.cannot_create_std::vector_larger_than_max_size__
call fcn.2c1b18040
lea rcx, str.vector::_M_realloc_insert
lea r15, [rsp + 0xc0]
call fcn.2c1b18040
mov rdx, qword [rsp + 0x48]
lea rcx, str.vector::_M_range_check:___n__which_is__zu____this__size____which_is__zu_
lea r15, [rsp + 0xc0]
mov r8, rdx
call fcn.2c1b154d0
mov rcx, r15
mov rbx, rax
call fcn.2c1b06070
lea rcx, [rsp + 0xa0]
call fcn.2c1b06070
lea rcx, [rsp + 0x80]
call fcn.2c1b06070
mov rcx, qword [rsp + 0x68]
call fcn.2c1afb4d0
mov rcx, rbx
call fcn.2c1a8f110
mov rcx, r15
mov rbx, rax
call fcn.2c1b062b0
jmp 0x2c1a77d7b