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

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
mov eax, 0x90b8
call fcn.140038500
sub rsp, rax
lea rbp, [rsp + 0x80]
movdqa xmmword [rbp + 0x9020], xmm8
movdqa xmmword [rbp + 0x9010], xmm7
movdqa xmmword [rbp + 0x9000], xmm6
mov qword [rbp + 0x8ff8], 0xfffffffffffffffe
mov qword [rbp + 0x8fa8], rdx
mov dword [rbp + 0x8fd4], ecx
movdqa xmm0, xmmword [0x140039230]
xor eax, eax
movdqa xmm1, xmmword [0x140039240]
lea rcx, [0x140047028]
movdqa xmm2, xmmword [0x140039250]
movdqa xmm3, xmmword [0x140039260]
nop dword [rax + rax]
movdqa xmm4, xmm1
psllq xmm4, xmm0
pshufd xmm5, xmm0, 0xee
movdqa xmm6, xmm1
psllq xmm6, xmm5
pblendw xmm6, xmm4, 0xf
movdqu xmmword [rcx + rax*8], xmm6
movdqa xmm4, xmm0
paddq xmm4, xmm2
movdqa xmm5, xmm1
psllq xmm5, xmm4
pshufd xmm4, xmm4, 0xee
movdqa xmm6, xmm1
psllq xmm6, xmm4
pblendw xmm6, xmm5, 0xf
movdqu xmmword [rcx + rax*8 + 0x10], xmm6
add rax, 4
paddq xmm0, xmm3
cmp rax, 0x40
jne 0x140036ae0
xor eax, eax
jmp 0x140036b54
mov rax, qword [rbp + 0x8fe8]
inc rax
cmp rax, 0x40
je 0x140036f2b
mov qword [rbp + 0x8fe8], rax
lea rcx, [0x14003b5c0]
mov r13, qword [rcx + rax*8]
xor ecx, ecx
popcnt rcx, r13
cmp rcx, 0x1f
jne 0x140036d60
mov rax, qword [rbp + 0x8fe8]
lea rcx, [0x14003b7c0]
mov r13, qword [rcx + rax*8]
xor ecx, ecx
popcnt rcx, r13
cmp rcx, 0x1f
je 0x140036b40
mov edi, 1
shl edi, cl
cmp edi, 2
mov eax, 1
cmovl edi, eax
xor eax, eax
nop word [rax + rax]
mov ecx, 1
xor edx, edx
mov r8, r13
nop word [rax + rax]
mov r9, rcx
and r9, rax
mov r10, r8
neg r10
and r10, r8
test r9, r9
cmove r10, r9
or rdx, r10
lea r9, [r8 - 1]
add rcx, rcx
and r8, r9
jne 0x140036bc0
mov qword [rbp + rax*8 - 0x60], rdx
inc rax
cmp rax, rdi
jne 0x140036bb0
mov rdx, qword [rbp + 0x8fe8]
mov rcx, rdx
shl rcx, 0xc
lea rax, [0x140051b98]
add rcx, rax
mov qword [rbp + 0x8fd8], rcx
mov rax, r13
not rax
xor ecx, ecx
popcnt rcx, rax
movsxd rax, edx
lea r8, [0x14003a060]
mov r10, qword [r8 + rax*8 + 0x800]
mov r15, qword [r8 + rax*8 + 0xa00]
mov r12, qword [r8 + rax*8 + 0xc00]
mov rax, qword [r8 + rax*8 + 0xe00]
mov qword [rbp + 0x8ff0], rax
lea rax, [0x14003bbc0]
mov rax, qword [rax + rdx*8]
mov qword [rbp + 0x8fe0], rax
xor edx, edx
jmp 0x140036ccb
mov ebx, 0x3f
sub rbx, r15
mov r12, r14
xor rax, r14
xor r9, r10
or r9, rax
mov r15, r11
xor rsi, r11
or r9, rsi
lea rax, [0x14003a060]
mov rax, qword [rax + rbx*8 + 0xe00]
xor rax, qword [rbp + 0x8ff0]
and r8, r13
imul r8, qword [rbp + 0x8fe0]
shr r8, cl
or rax, r9
mov r9, qword [rbp + 0x8fd8]
mov qword [r9 + r8*8], rax
inc rdx
cmp rdi, rdx
je 0x140036b40
mov r8, qword [rbp + rdx*8 - 0x60]
mov rax, r10
mov esi, 0x40
mov r9d, 0x40
and rax, r8
je 0x140036ce8
tzcnt r9, rax
mov r11, r15
mov rax, r15
and rax, r8
je 0x140036cfb
bsr rsi, rax
xor rsi, 0x3f
mov r14, r12
mov rbx, r12
mov r15d, 0x40
mov eax, 0x40
and rbx, r8
je 0x140036d16
tzcnt rax, rbx
lea r12, [0x14003a060]
mov r9, qword [r12 + r9*8 + 0x800]
mov ebx, 0x3f
sub rbx, rsi
mov rsi, qword [r12 + rbx*8 + 0xa00]
mov rax, qword [r12 + rax*8 + 0xc00]
mov rbx, qword [rbp + 0x8ff0]
and rbx, r8
je 0x140036c70
bsr r15, rbx
xor r15, 0x3f
jmp 0x140036c70
mov edi, 1
shl edi, cl
cmp edi, 2
mov eax, 1
cmovl edi, eax
xor eax, eax
nop word cs:[rax + rax]
mov ecx, 1
xor edx, edx
mov r8, r13
nop word [rax + rax]
mov r9, rcx
and r9, rax
mov r10, r8
neg r10
and r10, r8
test r9, r9
cmove r10, r9
or rdx, r10
lea r9, [r8 - 1]
add rcx, rcx
and r8, r9
jne 0x140036d90
mov qword [rbp + rax*8 + 0xfa0], rdx
inc rax
cmp rax, rdi
jne 0x140036d80
mov rdx, qword [rbp + 0x8fe8]
mov rcx, rdx
shl rcx, 0xf
lea rax, [0x140091b98]
add rcx, rax
mov qword [rbp + 0x8fd8], rcx
mov rax, r13
not rax
xor ecx, ecx
popcnt rcx, rax
movsxd rax, edx
lea r8, [0x14003a060]
mov r10, qword [r8 + rax*8]
mov r15, qword [r8 + rax*8 + 0x200]
mov r12, qword [r8 + rax*8 + 0x400]
mov rax, qword [r8 + rax*8 + 0x600]
mov qword [rbp + 0x8ff0], rax
lea rax, [0x14003b9c0]
mov rax, qword [rax + rdx*8]
mov qword [rbp + 0x8fe0], rax
xor edx, edx
jmp 0x140036e9c
mov r11d, 0x3f
sub r11, r15
mov r12, r14
xor rax, r14
xor r9, r10
or r9, rax
mov r15, rbx
xor rsi, rbx
or r9, rsi
lea rax, [0x14003a060]
mov rax, qword [rax + r11*8 + 0x600]
xor rax, qword [rbp + 0x8ff0]
and r8, r13
imul r8, qword [rbp + 0x8fe0]
shr r8, cl
or rax, r9
mov r9, qword [rbp + 0x8fd8]
mov qword [r9 + r8*8], rax
inc rdx
cmp rdi, rdx
je 0x140036b77
mov r8, qword [rbp + rdx*8 + 0xfa0]
mov rax, r10
mov esi, 0x40
mov r9d, 0x40
and rax, r8
je 0x140036ebc
tzcnt r9, rax
mov rbx, r15
mov rax, r15
and rax, r8
je 0x140036ecf
bsr rsi, rax
xor rsi, 0x3f
mov r14, r12
mov r11, r12
mov r15d, 0x40
mov eax, 0x40
and r11, r8
je 0x140036eea
tzcnt rax, r11
lea r12, [0x14003a060]
mov r9, qword [r12 + r9*8]
mov r11d, 0x3f
sub r11, rsi
mov rsi, qword [r12 + r11*8 + 0x200]
mov rax, qword [r12 + rax*8 + 0x400]
mov r11, qword [rbp + 0x8ff0]
and r11, r8
je 0x140036e40
bsr r15, r11
xor r15, 0x3f
jmp 0x140036e40
movabs rax, 0x5555555555555555
mov qword [rbp + 0x2328], rax
movabs rdx, 0xabbaba5ed
mov qword [rbp + 0xfa8], rdx
mov eax, 3
movabs rcx, 0x5851f42d4c957f2d
nop dword [rax]
mov r8, rdx
shr r8, 0x3e
xor r8, rdx
imul r8, rcx
lea rdx, [rax + r8]
add rdx, 0xfffffffffffffffe
mov qword [rbp + rax*8 + 0xf98], rdx
cmp rax, 0x139
je 0x140036fa9
mov r8, rdx
shr r8, 0x3e
xor r8, rdx
imul r8, rcx
lea rdx, [rax + r8]
dec rdx
mov qword [rbp + rax*8 + 0xfa0], rdx
add rax, 2
jmp 0x140036f60
movq xmm0, qword [rbp + 0xfa8]
pshufd xmm3, xmm0, 0x44
mov eax, 0x139
movdqa xmm0, xmmword [0x140039270]
movdqa xmm1, xmmword [0x140039280]
movdqa xmm2, xmmword [0x140039290]
nop word cs:[rax + rax]
movdqu xmm4, xmmword [rbp + rax*8 + 0x5e8]
movdqa xmm5, xmm4
palignr xmm5, xmm3, 8
pand xmm5, xmm0
movdqa xmm6, xmm4
movdqa xmm3, xmm4
pand xmm4, xmm1
por xmm4, xmm5
psrlq xmm4, 1
psllq xmm6, 0x3f
pxor xmm5, xmm5
pcmpgtq xmm5, xmm6
pand xmm5, xmm2
movdqu xmm6, xmmword [rbp + rax*8 + 0xac0]
pxor xmm6, xmm5
pxor xmm6, xmm4
movdqu xmmword [rbp + rax*8 + 0xfa0], xmm6
add rax, 2
cmp rax, 0x271
jne 0x140036fe0
mov dword [rbp + 0xfa0], 0x139
mov rax, qword [rbp + 0x1968]
mov rcx, rax
shr rcx, 0x1d
and rcx, qword [rbp + 0x2328]
xor rcx, rax
mov rdx, rcx
shl rdx, 0x11
movabs rax, 0x71d67fffeda60000
and rdx, rax
xor rdx, rcx
mov ecx, edx
and ecx, 0x7ffbf77
shl rcx, 0x25
xor rcx, rdx
mov rdx, rcx
shr rdx, 0x2b
xor rdx, rcx
mov qword [0x140047020], rdx
mov r11d, 0x139
xor ecx, ecx
lea rdx, [0x140045420]
movabs r8, 0xb5026f5aa96619e9
jmp 0x1400370cd
inc rcx
cmp rcx, 0x40
je 0x14003749a
imul r9, rcx, 0x70
add r9, rdx
xor r10d, r10d
jmp 0x140037138
mov r11d, 0x138
mov esi, r11d
mov rsi, qword [rbp + rsi*8 + 0xfa8]
mov rdi, rsi
shr rdi, 0x1d
and rdi, qword [rbp + 0x2328]
inc r11d
xor rdi, rsi
mov rsi, rdi
shl rsi, 0x11
and rsi, rax
xor rsi, rdi
mov edi, esi
and edi, 0x7ffbf77
shl rdi, 0x25
xor rdi, rsi
mov rsi, rdi
shr rsi, 0x2b
xor rsi, rdi
mov qword [r9 + r10*8], rsi
inc r10
cmp r10, 0xe
je 0x1400370c0
cmp r11d, 0x138
jne 0x1400371d0
movq xmm3, qword [rbp + 0xfa8]
pshufd xmm3, xmm3, 0x44
mov r11, 0xfffffffffffff640
nop dword [rax]
movdqu xmm4, xmmword [rbp + r11 + 0x1970]
movdqa xmm5, xmm4
palignr xmm5, xmm3, 8
pand xmm5, xmm0
movdqa xmm6, xmm4
movdqa xmm3, xmm4
pand xmm4, xmm1
por xmm4, xmm5
psrlq xmm4, 1
psllq xmm6, 0x3f
pxor xmm5, xmm5
pcmpgtq xmm5, xmm6
pand xmm5, xmm2
movdqu xmm6, xmmword [rbp + r11 + 0x1e48]
pxor xmm6, xmm5
pxor xmm6, xmm4
movdqu xmmword [rbp + r11 + 0x2328], xmm6
add r11, 0x10
jne 0x140037160
jmp 0x1400370e0
cmp r11d, 0x270
jb 0x1400370e6
movq xmm3, qword [rbp + 0x1968]
pshufd xmm7, xmm3, 0x44
mov r11, 0xfffffffffffffb20
nop word cs:[rax + rax]
movdqu xmm3, xmmword [rbp + r11 + 0x1e50]
movdqu xmm4, xmmword [rbp + r11 + 0x1e60]
movdqa xmm6, xmm3
palignr xmm6, xmm7, 8
pand xmm6, xmm0
movdqa xmm5, xmm3
pand xmm5, xmm1
por xmm5, xmm6
movdqa xmm6, xmm4
movdqa xmm8, xmm4
movdqa xmm7, xmm4
palignr xmm4, xmm3, 8
pand xmm4, xmm0
pand xmm6, xmm1
por xmm6, xmm4
psrlq xmm5, 1
psrlq xmm6, 1
psllq xmm3, 0x3f
pxor xmm4, xmm4
pcmpgtq xmm4, xmm3
pand xmm4, xmm2
psllq xmm8, 0x3f
pxor xmm3, xmm3
pcmpgtq xmm3, xmm8
pand xmm3, xmm2
movdqu xmm8, xmmword [rbp + r11 + 0x2328]
pxor xmm8, xmm5
pxor xmm8, xmm4
movdqu xmm4, xmmword [rbp + r11 + 0x2338]
pxor xmm4, xmm6
pxor xmm4, xmm3
movdqu xmmword [rbp + r11 + 0x1488], xmm8
movdqu xmmword [rbp + r11 + 0x1498], xmm4
add r11, 0x20
jne 0x140037200
movq xmm3, qword [rbp + 0x1e48]
pshufd xmm3, xmm3, 0x44
xor r11d, r11d
nop word cs:[rax + rax]
movdqu xmm4, xmmword [rbp + r11*8 + 0x1e50]
movdqa xmm5, xmm4
palignr xmm5, xmm3, 8
movdqu xmm3, xmmword [rbp + r11*8 + 0x1e60]
movdqa xmm6, xmm3
palignr xmm6, xmm4, 8
pand xmm5, xmm0
pand xmm6, xmm0
movdqa xmm7, xmm4
pand xmm7, xmm1
por xmm7, xmm5
movdqa xmm5, xmm3
pand xmm5, xmm1
por xmm5, xmm6
psrlq xmm7, 1
psrlq xmm5, 1
psllq xmm4, 0x3f
pxor xmm6, xmm6
pcmpgtq xmm6, xmm4
pand xmm6, xmm2
movdqa xmm4, xmm3
psllq xmm4, 0x3f
pxor xmm8, xmm8
pcmpgtq xmm8, xmm4
pand xmm8, xmm2
movdqu xmm4, xmmword [rbp + r11*8 + 0xfa8]
pxor xmm4, xmm7
pxor xmm4, xmm6
movdqu xmm6, xmmword [rbp + r11*8 + 0xfb8]
pxor xmm6, xmm5
pxor xmm6, xmm8
movdqu xmmword [rbp + r11*8 + 0x1488], xmm4
movdqu xmmword [rbp + r11*8 + 0x1498], xmm6
add r11, 4
cmp r11, 0x98
jne 0x1400372e0
pextrq rsi, xmm3, 1
and rsi, 0xffffffff80000000
mov r11, qword [rbp + 0x2310]
mov edi, r11d
and edi, 0x7ffffffe
or rdi, rsi
shr rdi, 1
mov esi, r11d
and esi, 1
neg rsi
and rsi, r8
xor rsi, qword [rbp + 0x1468]
xor rsi, rdi
mov qword [rbp + 0x1948], rsi
and r11, 0xffffffff80000000
mov rsi, qword [rbp + 0x2318]
mov edi, esi
and edi, 0x7ffffffe
or rdi, r11
shr rdi, 1
mov r11d, esi
and r11d, 1
neg r11
and r11, r8
xor r11, qword [rbp + 0x1470]
xor r11, rdi
mov qword [rbp + 0x1950], r11
and rsi, 0xffffffff80000000
mov r11, qword [rbp + 0x2320]
mov edi, r11d
and edi, 0x7ffffffe
or rdi, rsi
shr rdi, 1
mov esi, r11d
and esi, 1
neg rsi
and rsi, r8
xor rsi, qword [rbp + 0x1478]
xor rsi, rdi
mov qword [rbp + 0x1958], rsi
and r11, 0xffffffff80000000
mov rsi, qword [rbp + 0xfa8]
mov edi, esi
and edi, 0x7ffffffe
or rdi, r11
and esi, 1
neg rsi
and rsi, r8
xor rsi, qword [rbp + 0x1480]
shr rdi, 1
xor rsi, rdi
mov qword [rbp + 0x1960], rsi
xor r11d, r11d
jmp 0x1400370e6
lea rsi, [0x14004722c]
xor edi, edi
nop word cs:[rax + rax]
xorps xmm6, xmm6
cvtsi2sd xmm6, edi
xor ebx, ebx
nop dword [rax]
movsd xmm8, qword [0x1400516d0]
movapd xmm0, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_log
movapd xmm7, xmm0
xorps xmm0, xmm0
cvtsi2sd xmm0, ebx
call sub.api_ms_win_crt_math_l1_1_0.dll_log
mulsd xmm0, xmm7
mulsd xmm0, qword [0x140051708]
addsd xmm0, xmm8
cvttsd2si eax, xmm0
mov byte [rsi + rbx], al
inc rbx
cmp rbx, 0xda
jne 0x1400374c0
inc rdi
add rsi, 0xda
cmp rdi, 0x32
jne 0x1400374b0
call fcn.14002f020
mov rax, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov rcx, qword [rax]
movsxd rcx, dword [rcx + 4]
or dword [rax + rcx + 0x18], 0x4000
cmp dword [rbp + 0x8fd4], 2
jl 0x1400376ab
mov rax, qword [rbp + 0x8fa8]
mov rdi, qword [rax + 8]
pxor xmm0, xmm0
movdqa xmmword [rbp + 0xfb0], xmm0
movdqa xmmword [rbp + 0xfa0], xmm0
mov rcx, rdi
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
test rax, rax
js 0x140037859
mov rsi, rax
cmp rax, 0xf
ja 0x1400375a7
mov qword [rbp + 0xfb0], rsi
mov qword [rbp + 0xfb8], 0xf
lea rcx, [rbp + 0xfa0]
mov rdx, rdi
mov r8, rsi
call sub.VCRUNTIME140.dll_memcpy
add rsi, rbp
add rsi, 0xfa0
jmp 0x14003760e
mov rax, rsi
or rax, 0xf
cmp rax, 0x17
mov r14d, 0x16
cmovae r14, rax
cmp r14, 0xfff
jb 0x1400375dc
lea rcx, [r14 + 0x28]
call fcn.14003794c
lea rbx, [rax + 0x27]
and rbx, 0xffffffffffffffe0
mov qword [rbx - 8], rax
jmp 0x1400375e8
lea rcx, [r14 + 1]
call fcn.14003794c
mov rbx, rax
mov qword [rbp + 0xfa0], rbx
mov qword [rbp + 0xfb0], rsi
mov qword [rbp + 0xfb8], r14
mov rcx, rbx
mov rdx, rdi
mov r8, rsi
call sub.VCRUNTIME140.dll_memcpy
add rsi, rbx
mov byte [rsi], 0
mov rax, qword [rbp + 0xfb8]
cmp qword [rbp + 0xfb0], 5
jne 0x140037631
cmp rax, 0x10
jb 0x14003764d
mov rcx, qword [rbp + 0xfa0]
jmp 0x140037654
xor esi, esi
cmp rax, 0x10
jae 0x14003766e
test sil, sil
je 0x1400376ab
mov ecx, 0xe
call fcn.14002f760
jmp 0x140037828
lea rcx, [rbp + 0xfa0]
mov edx, 0x636e6562
xor edx, dword [rcx]
movzx ecx, byte [rcx + 4]
xor ecx, 0x68
or ecx, edx
sete sil
cmp rax, 0x10
jb 0x140037639
mov rcx, qword [rbp + 0xfa0]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x1400376a1
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x140037864
add rax, 0x28
mov rdx, rax
mov rcx, r8
call fcn.1400379dc
test sil, sil
jne 0x14003763e
pxor xmm6, xmm6
movdqa xmmword [rbp + 0xfa0], xmm6
mov qword [rbp + 0xfb0], 0
mov qword [rbp + 0xfb8], 0xf
mov rsi, qword [sym.imp.MSVCP140.dll_class_std::basic_istream_char__struct_std::char_traits_char___std::cin]
lea rdi, [rbp + 0xfa0]
lea rbx, [rbp + 0x8fb0]
mov r12d, 0x16
jmp 0x14003772c
cmp rax, 0x10
cmovb r14, rdi
cmp dword [r14], 0x74697571
je 0x1400377e2
mov qword [rbp + 0x8fc0], r15
mov qword [rbp + 0x8fc8], 0xf
movdqu xmm0, xmmword [r14]
movdqa xmmword [rbp + 0x8fb0], xmm0
mov rcx, rbx
call fcn.140031270
mov rcx, rsi
mov rdx, rdi
mov r8b, 0xa
call fcn.140007350
mov r14, qword [rbp + 0xfa0]
mov r15, qword [rbp + 0xfb0]
mov rax, qword [rbp + 0xfb8]
cmp r15, 4
je 0x1400376f0
movdqa xmmword [rbp + 0x8fc0], xmm6
movdqa xmmword [rbp + 0x8fb0], xmm6
cmp rax, 0x10
cmovb r14, rdi
test r15, r15
js 0x140037854
cmp r15, 0xf
jbe 0x140037705
mov r13, r15
or r13, 0xf
cmp r13, 0x17
cmovb r13, r12
cmp r13, 0xfff
jb 0x1400377ae
lea rcx, [r13 + 0x28]
call fcn.14003794c
mov rcx, rax
add rax, 0x27
and rax, 0xffffffffffffffe0
mov qword [rax - 8], rcx
jmp 0x1400377b7
lea rcx, [r13 + 1]
call fcn.14003794c
mov qword [rbp + 0x8fb0], rax
mov qword [rbp + 0x8fc0], r15
mov qword [rbp + 0x8fc8], r13
inc r15
mov rcx, rax
mov rdx, r14
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
jmp 0x140037724
call fcn.140031170
mov rax, qword [rbp + 0xfb8]
cmp rax, 0x10
jb 0x140037828
mov rcx, qword [rbp + 0xfa0]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x140037823
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x14003785e
add rax, 0x28
mov rdx, rax
mov rcx, r8
call fcn.1400379dc
xor eax, eax
movaps xmm6, xmmword [rbp + 0x9000]
movaps xmm7, xmmword [rbp + 0x9010]
movaps xmm8, xmmword [rbp + 0x9020]
add rsp, 0x90b8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
call fcn.140001a60
call fcn.140001a60
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3