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

Disassembly:
mov dword [rsp + 0x18], r8d
push rbp
push rbx
push rsi
push rdi
push r12
push r14
lea rbp, [rsp - 0x1588]
mov eax, 0x1688
call fcn.140194510
sub rsp, rax
xor r14d, r14d
mov rbx, rdx
mov rsi, rcx
mov dword [rsp + 0x68], r14d
xor eax, eax
mov dword [rsp + 0x70], r14d
mov edi, 0x208
mov word [rsp + 0x74], r14w
mov r8d, edi
mov qword [rsp + 0x78], rax
xor edx, edx
lea rcx, [rbp - 0x80]
mov r12d, r9d
call fcn.1401e8980
movups xmm0, xmmword [0x1405e6490]
xor ecx, ecx
mov qword [rbp + 0x1a0], r14
mov qword [rbp + 0x1a8], r14
movups xmmword [rbp + 0x188], xmm0
mov qword [rbp + 0x1b0], r14
mov qword [rbp + 0x1b8], r14
mov qword [rbp + 0x1c0], r14
mov qword [rbp + 0x1c8], r14
mov qword [rbp + 0x1d0], r14
mov qword [rbp + 0x1d8], r14
mov qword [rbp + 0x1e0], r14
mov dword [rsp + 0x6c], r12d
call fcn.1401b0b50
mov dword [rbp + 0x198], eax
call fcn.1401b0bc0
mov dword [rbp + 0x19c], eax
cmp byte [rsi + 0x2c], r14b
je 0x1401dd413
mov eax, dword [rsi + 0x28]
mov dword [rbp + 0x1c4], eax
jmp 0x1401dd470
mov r8, qword [rsi + 0x10]
cmp r8, 0x104
jbe 0x1401dd446
mov rax, qword [rbp + 0x15f0]
mov dword [rax], r14d
mov dword [rax + 0x414], r14d
mov eax, 0x49
add rsp, 0x1688
pop r14
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
movzx eax, r8w
mov word [rsp + 0x7a], di
add ax, ax
mov rdx, rsi
cmp qword [rsi + 0x18], 8
mov word [rsp + 0x78], ax
jb 0x1401dd464
mov rdx, qword [rsi]
add r8, r8
lea rcx, [rbp - 0x80]
call fcn.1401e82d0
mov qword [rsp + 0x16c8], r13
mov qword [rsp + 0x1680], r15
bt r12d, 0x19
jae 0x1401dd538
bt r12d, 0x15
jb 0x1401dd538
call qword [0x1405e8a30]
mov dword [rbp + 0x1574], 0xffffffff
mov edx, 1
mov dword [rbp + 0x1f4], eax
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rbp + rdx*4 + 0x1f4], eax
inc rdx
cmp rdx, 0x270
jb 0x1401dd4b1
lea rax, [rbp + 0x1f0]
mov dword [rbp + 0x1f0], 0x270
lea rcx, [rsp + 0x40]
mov qword [rsp + 0x40], rax
call fcn.1401dcd90
mov eax, eax
imul rcx, rax, 0xf01
cmp ecx, 0xd12
ja 0x1401dd51f
lea rcx, [rsp + 0x40]
call fcn.1401dcd90
mov eax, eax
imul rcx, rax, 0xf01
cmp ecx, 0xd13
jb 0x1401dd504
shr rcx, 0x20
mov eax, 0x10f
add cx, ax
mov eax, 0xfff0
and cx, ax
mov word [rsp + 0x74], cx
lea rax, [0x1406205f0]
lea r13, [0x1406228e0]
sub r13, rax
mov eax, r12d
and eax, 0x100000
mov dword [rbp + 0x15d8], eax
neg eax
sbb r15, r15
lea r8, [r13 + 0x39c]
and r15d, 0x300
add r8, r15
cmp byte [rsi + 0x2c], r14b
je 0x1401dd57d
mov eax, dword [rsi + 0x28]
add rax, 0x10
add r8, rax
xor edx, edx
mov dword [rsp + 0x20], 0x40
mov r9d, 0x3000
mov rcx, rbx
call qword [0x1405e8ce8]
mov rdi, rax
test rax, rax
jne 0x1401dd5bc
call qword [0x1405e8970]
mov rcx, qword [rbp + 0x15f0]
mov dword [rcx], eax
lea eax, [rdi + 0x15]
mov dword [rcx + 0x414], r14d
jmp 0x1401dda2f
add rax, 0x28f
lea rdx, [0x1405ceaa8]
and rax, 0xfffffffffffffff0
mov ecx, 0xdc
mov qword [rsp + 0x40], rax
add rax, 0xf
add rax, r13
and rax, 0xfffffffffffffff0
mov qword [rsp + 0x48], rax
add rax, r15
mov qword [rsp + 0x50], rax
add rax, 0xeb
and rax, 0xfffffffffffffff0
mov qword [rsp + 0x58], rax
call fcn.1401d3014
mov qword [rsp + 0x60], rax
test rax, rax
je 0x1401dda04
mov rcx, rax
call fcn.1401dd130
mov r14, rax
test rax, rax
je 0x1401dda01
mov rax, qword [rsp + 0x40]
lea rcx, [0x140620710]
mov dword [r14 + 0x98], eax
mov edx, eax
lea rax, [0x1406205f0]
sub edx, eax
lea rax, [0x140620b30]
add eax, edx
add ecx, edx
mov dword [r14 + 0xa0], eax
lea rax, [0x140620c00]
add eax, edx
mov dword [r14 + 0x9c], ecx
mov dword [r14 + 0xa4], eax
lea rax, [0x140620c70]
add eax, edx
mov dword [r14 + 0xa8], eax
lea rax, [0x140620eb0]
add eax, edx
mov dword [r14 + 0xac], eax
lea rax, [0x140621160]
add eax, edx
mov dword [r14 + 0xb0], eax
lea rax, [0x1406212a0]
add eax, edx
mov dword [r14 + 0xb4], eax
lea rax, [0x140621510]
add eax, edx
mov dword [r14 + 0xb8], eax
lea rax, [0x140621600]
add eax, edx
mov dword [r14 + 0xbc], eax
lea rax, [0x1406216b0]
add eax, edx
mov dword [r14 + 0xc0], eax
lea rax, [0x1406219c0]
add eax, edx
mov dword [r14 + 0xc4], eax
lea rax, [0x140621b20]
add eax, edx
mov dword [r14 + 0xc8], eax
lea rax, [0x140621c70]
add eax, edx
mov dword [r14 + 0xcc], eax
lea rax, [0x140622020]
add eax, edx
mov dword [r14 + 0xd0], eax
lea rax, [0x1406222d0]
add edx, eax
mov rax, qword [rsp + 0x50]
cmp dword [rbp + 0x15d8], 0
mov dword [r14 + 0xd4], edx
mov dword [rbp + 0x1e4], eax
je 0x1401dd752
mov rax, qword [rsp + 0x48]
mov dword [rbp + 0x1a0], eax
mov dword [rbp + 0x1a4], r15d
mov eax, dword [rbp + 0x1c0]
lea r8, [rsp + 0x68]
cmp byte [rsi + 0x2c], 0
mov r9d, 0x280
mov rdx, rdi
mov qword [rsp + 0x20], 0
cmovne eax, dword [rsp + 0x58]
mov rcx, rbx
mov dword [rbp + 0x1c0], eax
call qword [0x1405e8d78]
test eax, eax
jne 0x1401dd7b6
call qword [0x1405e8970]
mov rcx, qword [rbp + 0x15f0]
mov dword [rcx + 0x414], 0
mov dword [rcx], eax
mov edx, 0xdc
mov rcx, r14
call fcn.140194698
jmp 0x1401dd8a0
mov r9, r13
mov qword [rsp + 0x20], 0
mov r13, qword [rsp + 0x40]
lea r8, [0x1406205f0]
mov rdx, r13
mov rcx, rbx
call qword [0x1405e8d78]
test eax, eax
je 0x1401dd78b
cmp dword [rbp + 0x15d8], 0
je 0x1401dd810
mov rdx, qword [rsp + 0x48]
lea r8, [0x1406225e0]
mov r9, r15
mov qword [rsp + 0x20], 0
mov rcx, rbx
call qword [0x1405e8d78]
test eax, eax
je 0x1401dd78b
mov rdx, qword [rsp + 0x50]
xor r15d, r15d
mov r9d, 0xdc
mov qword [rsp + 0x20], r15
mov r8, r14
mov rcx, rbx
call qword [0x1405e8d78]
test eax, eax
jne 0x1401dd858
call qword [0x1405e8970]
mov rcx, qword [rbp + 0x15f0]
mov dword [rcx + 0x414], r15d
mov dword [rcx], eax
mov edx, 0xdc
mov rcx, r14
call fcn.140194698
jmp 0x1401dd8a0
mov edx, 0xdc
mov rcx, r14
call fcn.140194698
cmp byte [rsi + 0x2c], r15b
je 0x1401dd8bf
mov r9d, dword [rsi + 0x28]
mov rcx, rbx
mov r8, qword [rsi + 0x20]
mov rdx, qword [rsp + 0x58]
mov qword [rsp + 0x20], r15
call qword [0x1405e8d78]
test eax, eax
jne 0x1401dd8bf
call qword [0x1405e8970]
mov rcx, qword [rbp + 0x15f0]
mov dword [rcx], eax
mov dword [rcx + 0x414], r15d
mov r9d, 0x8000
xor r8d, r8d
mov rdx, rdi
mov rcx, rbx
call qword [0x1405e8cf8]
mov eax, 0x10
jmp 0x1401dda2f
mov eax, dword [rbp + 0x15e8]
mov ecx, r12d
mov rsi, qword [rbp + 0x15f0]
or ecx, 0x3000
mov r14d, dword [rbp + 0x15d0]
test r12b, 8
mov qword [rsp + 0x38], rsi
mov r9d, r14d
mov dword [rsp + 0x30], eax
cmove ecx, r12d
lea rax, [rbp + 0x15c0]
mov dword [rbp + 0x15c0], r15d
mov qword [rsp + 0x28], rax
mov r8d, edi
mov dword [rsp + 0x20], ecx
mov edx, r13d
mov rcx, rbx
call fcn.1401dcf20
mov r15d, eax
test eax, eax
je 0x1401dd94c
cmp r14d, 3
je 0x1401dd944
cmp r14d, 1
jne 0x1401dd92f
cmp eax, 0x1020000a
je 0x1401dd944
mov r9d, 0x8000
xor r8d, r8d
mov rdx, rdi
mov rcx, rbx
call qword [0x1405e8cf8]
mov eax, r15d
jmp 0x1401dda2f
xor r15d, r15d
lea r8, [rsp + 0x68]
mov r9d, 0x280
mov qword [rsp + 0x20], r15
mov rdx, rdi
mov rcx, rbx
call qword [0x1405e8bd0]
test eax, eax
jne 0x1401dd9a3
call qword [0x1405e8970]
mov dword [rsi + 0x414], r15d
mov dword [rsi], eax
cmp r14d, 3
je 0x1401dd999
mov r9d, 0x8000
xor r8d, r8d
mov rdx, rdi
mov rcx, rbx
call qword [0x1405e8cf8]
mov eax, 0x1b
jmp 0x1401dda2f
cmp r14d, 3
je 0x1401dd9be
mov r9d, 0x8000
xor r8d, r8d
mov rdx, rdi
mov rcx, rbx
call qword [0x1405e8cf8]
mov eax, dword [rbp + 0x15c0]
test eax, eax
je 0x1401dd9d7
mov ecx, dword [rsp + 0x70]
mov dword [rsi], ecx
mov dword [rsi + 0x414], r15d
jmp 0x1401dda2f
mov eax, dword [rsp + 0x68]
test eax, eax
jne 0x1401dd9f0
mov dword [rsi], r15d
mov eax, 0x20
mov dword [rsi + 0x414], r15d
jmp 0x1401dda2f
mov rcx, rax
mov rax, qword [rbp + 0x15e0]
mov qword [rax], rcx
xor eax, eax
jmp 0x1401dda2f
xor r14d, r14d
mov rax, qword [rbp + 0x15f0]
mov r9d, 0x8000
xor r8d, r8d
mov rdx, rdi
mov rcx, rbx
mov dword [rax], r14d
mov dword [rax + 0x414], r14d
call qword [0x1405e8cf8]
mov eax, 0x17
mov r13, qword [rsp + 0x16c8]
mov r15, qword [rsp + 0x1680]
add rsp, 0x1688
pop r14
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret