Function at 0x180151b90
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister
Hash data using fnv

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r14
lea rbp, [rsp - 0x15e0]
mov eax, 0x16e0
call fcn.1801a9c40
sub rsp, rax
mov rax, qword [0x18026adc0]
xor rax, rsp
mov qword [rbp + 0x15d0], rax
mov ecx, dword [0x18026f2e8]
mov rax, qword gs:[0x58]
mov edx, 4
mov rax, qword [rax + rcx*8]
mov eax, dword [rdx + rax]
cmp dword [0x18026d508], eax
jg 0x180152801
movabs rcx, 0xa5edc40ef369b48d
call fcn.1800ea350
mov edx, eax
movabs rcx, 0x43a66c31c68491c0
call fcn.1800ea410
mov edx, eax
movabs rcx, 0xa6db4965674d243
mov esi, eax
call fcn.1800ea410
cmp byte [0x180266e6d], 0
mov edi, eax
mov dword [rsp + 0x38], eax
je 0x180151c32
mov edi, dword [0x180266e74]
mov dword [rsp + 0x38], edi
jmp 0x180151c38
mov dword [0x180266e74], edi
mov ebx, edi
movabs r14, 0xa38dcffcea8962fa
test ebx, ebx
je 0x180151c61
mov r9d, 1
mov r8d, edi
mov edx, esi
mov rcx, r14
call fcn.18013c1f0
mov dword [0x180266e78], eax
mov qword [rsp + 0x1710], r12
mov r8d, 7
mov qword [rsp + 0x1718], r13
mov edx, esi
movabs rcx, 0x475768a975d5ad17
mov qword [rsp + 0x1720], r15
call fcn.1800ee790
test eax, eax
je 0x1801524ae
test ebx, ebx
je 0x1801524ae
movss xmm2, dword [0x180266e70]
comiss xmm2, dword [0x1801e2ec0]
jbe 0x180151cc2
mov edx, edi
movabs rcx, 0x4757f00bc6323cfe
call fcn.18013ae60
cmp byte [0x180266e3b], 0
movabs r12, 0x583be370b1ec6eb4
movabs r13, 0x2e1202248937775c
je 0x180151e13
lea r9, [rsp + 0x3c]
mov dword [rsp + 0x3c], 0
mov r8d, edi
mov edx, esi
mov rcx, r13
call fcn.180151770
cmp dword [rsp + 0x3c], 1
jg 0x180151e13
mov r9d, 1
mov r8d, edi
mov edx, esi
mov rcx, r14
call fcn.18013c1f0
cmp eax, 1
je 0x180151e13
mov edx, edi
mov rcx, r12
call fcn.1800ea410
mov edx, edi
mov rcx, r12
mov r14d, eax
call fcn.1800ea410
mov edx, edi
mov rcx, r12
mov ebx, eax
call fcn.1800ea410
mov r15d, 2
sub r15d, ebx
add r15d, eax
call fcn.1801ac750
mov dword [rbp + 0x1b4], eax
mov edx, 1
mov dword [rbp + 0x1534], 0xffffffff
nop dword [rax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rbp + rdx*4 + 0x1b4], eax
inc rdx
cmp rdx, 0x270
jb 0x180151d70
sub r14d, r15d
mov dword [rbp + 0x1b0], 0x270
lea rax, [rbp + 0x1b0]
mov qword [rsp + 0x48], rax
lea rcx, [rsp + 0x48]
cmp r14d, 0xffffffff
jne 0x180151dbf
call fcn.180142a20
mov ecx, eax
jmp 0x180151dfb
lea ebx, [r14 + 1]
mov r14d, ebx
call fcn.180142a20
mov ecx, eax
imul rcx, r14
cmp ecx, ebx
jae 0x180151df7
mov eax, ebx
xor edx, edx
neg eax
div ebx
mov ebx, edx
cmp ecx, edx
jae 0x180151df7
lea rcx, [rsp + 0x48]
call fcn.180142a20
mov ecx, eax
imul rcx, r14
cmp ecx, ebx
jb 0x180151de3
shr rcx, 0x20
lea r9d, [r15 + rcx]
mov r8d, edi
movabs rcx, 0xdcd2a934d65cb497
mov edx, esi
call fcn.18013c1f0
cmp byte [0x180266e38], 0
je 0x180151e2d
mov edx, esi
movabs rcx, 0x8c0d57ea686fad87
call fcn.1800ea410
cmp byte [0x180266e3a], 0
je 0x180151e40
xorps xmm1, xmm1
mov ecx, edi
call fcn.180153a00
cmp byte [0x180266e39], 0
movabs r14, 0xcbf29ce484222325
movabs rbx, 0x100000001b3
je 0x180151f40
movzx eax, byte [rsp + 0x39]
mov r8, qword [0x18026ddc8]
movzx edx, dil
xor rdx, r14
imul rdx, rbx
xor rdx, rax
movzx eax, byte [rsp + 0x3a]
imul rdx, rbx
xor rdx, rax
movzx eax, byte [rsp + 0x3b]
imul rdx, rbx
xor rdx, rax
mov rax, qword [0x18026ddd8]
imul rdx, rbx
and rdx, qword [0x18026ddf0]
add rdx, rdx
mov rcx, qword [rax + rdx*8 + 8]
cmp rcx, r8
je 0x180151ed0
mov rax, qword [rax + rdx*8]
cmp edi, dword [rcx + 0x10]
je 0x180151ed2
nop dword [rax + rax]
cmp rcx, rax
je 0x180151ed0
mov rcx, qword [rcx + 8]
cmp edi, dword [rcx + 0x10]
jne 0x180151ec0
jmp 0x180151ed2
xor ecx, ecx
test rcx, rcx
mov rax, r8
cmovne rax, rcx
cmp rax, r8
jne 0x180151f1d
mov ecx, edi
call fcn.1801538c0
mov ecx, edi
mov dword [rsp + 0x50], eax
call fcn.180153860
mov ecx, edi
mov dword [rsp + 0x54], eax
call fcn.180153890
lea r9, [rsp + 0x50]
mov dword [rsp + 0x58], eax
lea r8, [rsp + 0x38]
lea rdx, [rsp + 0x60]
lea rcx, [0x18026ddc0]
call fcn.180151890
xor edx, edx
mov ecx, edi
call fcn.1801539c0
xor edx, edx
mov ecx, edi
call fcn.180153940
xor edx, edx
mov ecx, edi
call fcn.180153980
jmp 0x1801520e0
movzx r15d, byte [rsp + 0x39]
movzx r12d, byte [rsp + 0x3a]
movzx r13d, byte [rsp + 0x3b]
mov r10, qword [0x18026ddd8]
mov r9, qword [0x18026ddc8]
movzx r8d, dil
xor r8, r14
imul r8, rbx
xor r8, r15
imul r8, rbx
xor r8, r12
imul r8, rbx
xor r8, r13
imul r8, rbx
and r8, qword [0x18026ddf0]
add r8, r8
mov rdx, qword [r10 + r8*8 + 8]
mov rcx, rdx
cmp rdx, r9
je 0x180151fb0
mov rax, qword [r10 + r8*8]
cmp edi, dword [rdx + 0x10]
je 0x180151fb2
cmp rcx, rax
je 0x180151fb0
mov rcx, qword [rcx + 8]
cmp edi, dword [rcx + 0x10]
jne 0x180151fa0
jmp 0x180151fb2
xor ecx, ecx
test rcx, rcx
mov rax, r9
cmovne rax, rcx
cmp rax, r9
je 0x1801520cc
cmp rdx, r9
je 0x180152837
mov rax, qword [r10 + r8*8]
cmp edi, dword [rdx + 0x10]
je 0x180151fe9
cmp rdx, rax
je 0x180152837
mov rdx, qword [rdx + 8]
cmp edi, dword [rdx + 0x10]
jne 0x180151fd7
mov edx, dword [rdx + 0x1c]
mov ecx, edi
call fcn.180153940
mov rax, qword [0x18026ddd8]
movzx ecx, dil
xor rcx, r14
imul rcx, rbx
xor rcx, r15
imul rcx, rbx
xor rcx, r12
imul rcx, rbx
xor rcx, r13
imul rcx, rbx
and rcx, qword [0x18026ddf0]
add rcx, rcx
mov rdx, qword [rax + rcx*8 + 8]
cmp rdx, qword [0x18026ddc8]
je 0x180152837
mov rax, qword [rax + rcx*8]
cmp edi, dword [rdx + 0x10]
je 0x180152052
nop
cmp rdx, rax
je 0x180152837
mov rdx, qword [rdx + 8]
cmp edi, dword [rdx + 0x10]
jne 0x180152040
mov edx, dword [rdx + 0x18]
mov ecx, edi
call fcn.180153980
mov rax, qword [0x18026ddd8]
movzx ecx, dil
xor rcx, r14
imul rcx, rbx
xor rcx, r15
imul rcx, rbx
xor rcx, r12
imul rcx, rbx
xor rcx, r13
imul rcx, rbx
and rcx, qword [0x18026ddf0]
add rcx, rcx
mov rdx, qword [rax + rcx*8 + 8]
cmp rdx, qword [0x18026ddc8]
je 0x180152837
mov rax, qword [rax + rcx*8]
cmp edi, dword [rdx + 0x10]
je 0x1801520c2
nop dword [rax + rax]
cmp rdx, rax
je 0x180152837
mov rdx, qword [rdx + 8]
cmp edi, dword [rdx + 0x10]
jne 0x1801520b0
mov edx, dword [rdx + 0x14]
mov ecx, edi
call fcn.1801539c0
movabs r13, 0x2e1202248937775c
movabs r12, 0x583be370b1ec6eb4
cmp byte [0x180266e3c], 0
je 0x18015213d
lea r9, [rsp + 0x40]
mov dword [rsp + 0x40], 0
mov r8d, edi
mov edx, esi
mov rcx, r13
call fcn.180151770
mov edx, dword [0x180266e48]
test edx, edx
jne 0x180152119
mov edx, edi
mov rcx, r12
call fcn.1800ea410
jmp 0x18015211f
mov eax, dword [rsp + 0x40]
add eax, edx
mov r9d, eax
mov r8d, edi
mov edx, esi
movabs rcx, 0xdcd2a934d65cb497
call fcn.18013c1f0
mov byte [0x180266e3c], 0
cmp byte [0x180266e4c], 0
movabs rbx, 0x6d1fea431f800294
movabs r15, 0x1ca07b62ba8c942b
movabs r12, 0xd9a6684febeded80
movabs r13, 0xaadedba8936fcb5d
movabs r14, 0xff3cf8966cbb8cbf
je 0x18015230e
mov r9d, dword [0x180266e50]
mov r8d, edi
mov edx, esi
movabs rcx, 0xd966d51aa5b28bb9
call fcn.1800ee210
mov dword [rbp + 0x1a4], 0x1388
call qword [sym.imp.KERNEL32.dll_GetTickCount64]
xor edx, edx
lea rcx, [rbp - 0x60]
mov r8d, 0x204
mov qword [rbp + 0x1a8], rax
call fcn.1801dcd70
movabs rax, 0x7ad30807d9efe178
lea rdx, [rsp + 0x70]
mov qword [rsp + 0x30], rax
lea rcx, [rbp - 0x60]
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x70], rax
movabs rax, 0xbdc2096f928181f5
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x78], rax
movabs rax, 0xcbfebec0e74faf38
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp - 0x80], rax
movabs rax, 0x8de08bd5ce2b1dde
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp - 0x78], rax
movabs rax, 0xff3cf8966cbba2cb
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp - 0x70], rax
mov qword [rsp + 0x30], rbx
mov rax, qword [rsp + 0x30]
mov qword [rbp - 0x68], rax
mov qword [rsp + 0x30], r15
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], r12
mov qword [rbp + 0x1570], rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], r13
mov qword [rbp + 0x1578], rax
mov rax, qword [rsp + 0x30]
movdqa xmm0, xmmword [rbp + 0x1570]
mov qword [rbp + 0x1580], rax
movabs rax, 0xe385e6bdad4a69aa
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1588], rax
mov qword [rsp + 0x30], r14
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1590], rax
mov qword [rsp + 0x30], rbx
mov rax, qword [rsp + 0x30]
xorps xmm0, xmmword [rsp + 0x70]
movdqa xmm1, xmmword [rbp - 0x80]
xorps xmm1, xmmword [rbp + 0x1580]
movdqa xmmword [rsp + 0x70], xmm0
movdqa xmm0, xmmword [rbp - 0x70]
mov qword [rbp + 0x1598], rax
xorps xmm0, xmmword [rbp + 0x1590]
movdqa xmmword [rbp - 0x70], xmm0
movdqa xmmword [rbp - 0x80], xmm1
call fcn.1800edba0
lea rcx, [rbp - 0x60]
call fcn.180143ba0
mov edi, dword [rsp + 0x38]
mov byte [0x180266e4c], 0
cmp byte [0x180266e54], 0
je 0x180152710
mov r9d, dword [0x180266e58]
mov r8d, edi
mov edx, esi
movabs rcx, 0x1e8be90c74fb4c09
call fcn.1800ee210
mov dword [rbp + 0x1a4], 0x1388
call qword [sym.imp.KERNEL32.dll_GetTickCount64]
xor edx, edx
lea rcx, [rbp - 0x60]
mov r8d, 0x204
mov qword [rbp + 0x1a8], rax
call fcn.1801dcd70
movabs rax, 0x7ad30807d9efe178
lea rdx, [rsp + 0x70]
mov qword [rsp + 0x30], rax
lea rcx, [rbp - 0x60]
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x70], rax
movabs rax, 0xb4c31a6f928181f5
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x78], rax
movabs rax, 0xcfb6af88f70abd32
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp - 0x80], rax
movabs rax, 0x8eed85dcd93e088a
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp - 0x78], rax
movabs rax, 0xff3cf89642cfe2da
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp - 0x70], rax
mov qword [rsp + 0x30], rbx
mov rax, qword [rsp + 0x30]
mov qword [rbp - 0x68], rax
mov qword [rsp + 0x30], r15
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1540], rax
mov qword [rsp + 0x30], r12
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1548], rax
mov qword [rsp + 0x30], r13
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1550], rax
movabs rax, 0xe385e6bdad4a69aa
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1558], rax
mov qword [rsp + 0x30], r14
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1560], rax
mov qword [rsp + 0x30], rbx
mov rax, qword [rsp + 0x30]
movdqa xmm0, xmmword [rsp + 0x70]
xorps xmm0, xmmword [rbp + 0x1540]
movdqa xmm1, xmmword [rbp - 0x80]
xorps xmm1, xmmword [rbp + 0x1550]
movdqa xmmword [rsp + 0x70], xmm0
movdqa xmm0, xmmword [rbp - 0x70]
mov qword [rbp + 0x1568], rax
xorps xmm0, xmmword [rbp + 0x1560]
movdqa xmmword [rbp - 0x70], xmm0
movdqa xmmword [rbp - 0x80], xmm1
call fcn.1800edba0
lea rcx, [rbp - 0x60]
call fcn.180143ba0
mov byte [0x180266e54], 0
jmp 0x180152710
cmp byte [0x180266e3c], 0
je 0x180152710
mov dword [rbp + 0x3b4], 0x1388
call qword [sym.imp.KERNEL32.dll_GetTickCount64]
xor edx, edx
lea rcx, [rbp + 0x1b0]
mov r8d, 0x204
mov qword [rbp + 0x3b8], rax
call fcn.1801dcd70
movabs rax, 0x68d30e0f9af9fb72
lea rdx, [rbp + 0x1540]
mov qword [rsp + 0x30], rax
lea rcx, [rbp + 0x1b0]
mov rax, qword [rsp + 0x30]
movabs r14, 0xff3cf8966cbb8cbf
mov qword [rbp + 0x1540], rax
movabs rbx, 0x6d1fea431f800294
movabs rax, 0xf9c7482b878285a0
movabs r15, 0x1ca07b62ba8c942b
mov qword [rsp + 0x30], rax
movabs r12, 0xd9a6684febeded80
mov rax, qword [rsp + 0x30]
movabs r13, 0xaadedba8936fcb5d
mov qword [rbp + 0x1548], rax
movabs rax, 0xccfeb5c7e30eae2a
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1550], rax
movabs rax, 0xcdf187d5d96a1bc5
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1558], rax
mov qword [rsp + 0x30], r14
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1560], rax
mov qword [rsp + 0x30], rbx
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1568], rax
mov qword [rsp + 0x30], r15
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], r12
mov qword [rbp + 0x15a0], rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], r13
mov qword [rbp + 0x15a8], rax
mov rax, qword [rsp + 0x30]
movdqa xmm0, xmmword [rbp + 0x15a0]
mov qword [rbp + 0x15b0], rax
movabs rax, 0xe385e6bdad4a69aa
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x15b8], rax
mov qword [rsp + 0x30], r14
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x15c0], rax
mov qword [rsp + 0x30], rbx
mov rax, qword [rsp + 0x30]
xorps xmm0, xmmword [rbp + 0x1540]
movdqa xmm1, xmmword [rbp + 0x1550]
xorps xmm1, xmmword [rbp + 0x15b0]
movdqa xmmword [rbp + 0x1540], xmm0
movdqa xmm0, xmmword [rbp + 0x1560]
mov qword [rbp + 0x15c8], rax
xorps xmm0, xmmword [rbp + 0x15c0]
movdqa xmmword [rbp + 0x1560], xmm0
movdqa xmmword [rbp + 0x1550], xmm1
call fcn.1800edba0
mov rdx, qword [0x1802671a8]
cmp rdx, qword [0x1802671b0]
je 0x1801526f6
lea rax, [rbp + 0x1b0]
mov ecx, 4
nop word [rax + rax]
lea rdx, [rdx + 0x80]
movups xmm0, xmmword [rax]
lea rax, [rax + 0x80]
movups xmmword [rdx - 0x80], xmm0
movups xmm1, xmmword [rax - 0x70]
movups xmmword [rdx - 0x70], xmm1
movups xmm0, xmmword [rax - 0x60]
movups xmmword [rdx - 0x60], xmm0
movups xmm1, xmmword [rax - 0x50]
movups xmmword [rdx - 0x50], xmm1
movups xmm0, xmmword [rax - 0x40]
movups xmmword [rdx - 0x40], xmm0
movups xmm1, xmmword [rax - 0x30]
movups xmmword [rdx - 0x30], xmm1
movups xmm0, xmmword [rax - 0x20]
movups xmmword [rdx - 0x20], xmm0
movups xmm1, xmmword [rax - 0x10]
movups xmmword [rdx - 0x10], xmm1
sub rcx, 1
jne 0x180152690
movups xmm0, xmmword [rax]
movups xmmword [rdx], xmm0
add qword [0x1802671a8], 0x210
jmp 0x180152709
lea r8, [rbp + 0x1b0]
lea rcx, [0x1802671a0]
call fcn.1800ea960
mov byte [0x180266e3c], 0
cmp byte [0x180266e5c], 0
movabs r14, 0xb282dc6ebd803c75
je 0x180152755
call fcn.1800e87e0
mov r9d, 0x64
mov dword [rsp + 0x20], 1
mov edx, esi
mov rcx, r14
mov byte [rax + 0x228], 1
mov r8d, dword [0x180266e60]
call fcn.180139950
mov byte [0x180266e5c], 0
cmp byte [0x180266e64], 0
je 0x18015277d
mov r8d, dword [0x180266e68]
mov edx, esi
movabs rcx, 0x4899cb088edf59b8
call fcn.180137e60
mov byte [0x180266e64], 0
cmp byte [0x180266e6c], 0
je 0x1801527cc
call fcn.1800e87e0
mov byte [rax + 0x228], 1
mov rdi, qword [0x18026dd88]
mov rbx, qword [rdi]
cmp rbx, rdi
je 0x1801527c5
mov r8d, dword [rbx + 0x18]
mov r9d, 0x64
mov edx, esi
mov dword [rsp + 0x20], 0
mov rcx, r14
call fcn.180139950
mov rbx, qword [rbx]
cmp rbx, rdi
jne 0x1801527a1
mov byte [0x180266e6c], 0
mov r15, qword [rsp + 0x1720]
mov r13, qword [rsp + 0x1718]
mov r12, qword [rsp + 0x1710]
mov rcx, qword [rbp + 0x15d0]
xor rcx, rsp
call fcn.1801a9830
add rsp, 0x16e0
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret
lea rcx, [0x18026d508]
call fcn.1801a9ea8
cmp dword [0x18026d508], 0xffffffff
jne 0x180151be4
lea rcx, [0x1801ddd60]
call fcn.1801a9be4
lea rcx, [0x18026d508]
call fcn.1801a9e3c
jmp 0x180151be4
lea rcx, [0x1801ed640]
call fcn.1801aae58
int3