Function at 0x1806ac000
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.1807049f0
sub rsp, rax
mov rax, qword [0x1808fed40]
xor rax, rsp
mov qword [rbp + 0x15d0], rax
mov ecx, dword [0x180903208]
mov rax, qword gs:[0x58]
mov edx, 4
mov rax, qword [rax + rcx*8]
mov eax, dword [rdx + rax]
cmp dword [0x180901488], eax
jg 0x1806accf1
movabs rcx, 0xa5edc40ef369b48d
call fcn.18063b5a0
mov edx, eax
movabs rcx, 0x43a66c31c68491c0
call fcn.18063b680
mov edx, eax
movabs rcx, 0xa6db4965674d243
mov r14d, eax
call fcn.18063b680
cmp byte [0x1808fae3d], 0
mov edi, eax
mov dword [rsp + 0x38], eax
jne 0x1806ac09f
mov dword [0x1808fae44], eax
jmp 0x1806ac0a9
mov edi, dword [0x1808fae44]
mov dword [rsp + 0x38], edi
mov ebx, edi
movabs rsi, 0xa38dcffcea8962fa
test ebx, ebx
je 0x1806ac0d3
mov r9d, 1
mov r8d, edi
mov edx, r14d
mov rcx, rsi
call fcn.180695c60
mov dword [0x1808fae48], eax
mov qword [rsp + 0x1710], r12
mov r8d, 7
mov qword [rsp + 0x1718], r13
mov edx, r14d
movabs rcx, 0x475768a975d5ad17
mov qword [rsp + 0x1720], r15
call fcn.18063f860
test eax, eax
je 0x1806ac932
test ebx, ebx
je 0x1806ac932
movss xmm2, dword [0x1808fae40]
comiss xmm2, dword [0x18073feb8]
jbe 0x1806ac135
mov edx, edi
movabs rcx, 0x4757f00bc6323cfe
call fcn.1806941e0
cmp byte [0x1808fae0b], 0
movabs r12, 0x583be370b1ec6eb4
movabs r13, 0x2e1202248937775c
je 0x1806ac282
lea r9, [rsp + 0x3c]
mov dword [rsp + 0x3c], 0
mov r8d, edi
mov edx, r14d
mov rcx, r13
call fcn.1806abbd0
cmp dword [rsp + 0x3c], 1
jg 0x1806ac282
mov r9d, 1
mov r8d, edi
mov edx, r14d
mov rcx, rsi
call fcn.180695c60
cmp eax, 1
je 0x1806ac282
mov edx, edi
mov rcx, r12
call fcn.18063b680
mov edx, edi
mov rcx, r12
mov esi, eax
call fcn.18063b680
mov edx, edi
mov rcx, r12
mov ebx, eax
call fcn.18063b680
mov r15d, 2
sub r15d, ebx
add r15d, eax
call fcn.180707500
mov dword [rbp + 0x1b4], eax
mov edx, 1
mov dword [rbp + 0x1534], 0xffffffff
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 0x1806ac1e1
sub esi, r15d
mov dword [rbp + 0x1b0], 0x270
lea rax, [rbp + 0x1b0]
mov qword [rsp + 0x48], rax
lea rcx, [rsp + 0x48]
cmp esi, 0xffffffff
jne 0x1806ac22f
call fcn.18069c520
mov ecx, eax
jmp 0x1806ac269
lea ebx, [rsi + 1]
mov esi, ebx
call fcn.18069c520
mov ecx, eax
imul rcx, rsi
cmp ecx, ebx
jae 0x1806ac265
mov eax, ebx
xor edx, edx
neg eax
div ebx
mov ebx, edx
cmp ecx, edx
jae 0x1806ac265
lea rcx, [rsp + 0x48]
call fcn.18069c520
mov ecx, eax
imul rcx, rsi
cmp ecx, ebx
jb 0x1806ac251
shr rcx, 0x20
lea r9d, [r15 + rcx]
mov r8d, edi
movabs rcx, 0xdcd2a934d65cb497
mov edx, r14d
call fcn.180695c60
cmp byte [0x1808fae08], 0
je 0x1806ac29d
mov edx, r14d
movabs rcx, 0x8c0d57ea686fad87
call fcn.18063b680
cmp byte [0x1808fae0a], 0
je 0x1806ac2ab
xorps xmm1, xmm1
jmp 0x1806ac2b3
movss xmm1, dword [0x18073feb8]
mov ecx, edi
call fcn.1806adef0
cmp byte [0x1808fae09], 0
movabs rsi, 0xcbf29ce484222325
movabs rbx, 0x100000001b3
je 0x1806ac3b2
movzx eax, byte [rsp + 0x39]
mov r8, qword [0x180901cf8]
movzx edx, dil
xor rdx, rsi
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 [0x180901d08]
imul rdx, rbx
and rdx, qword [0x180901d20]
add rdx, rdx
mov rcx, qword [rax + rdx*8 + 8]
cmp rcx, r8
je 0x1806ac345
mov rax, qword [rax + rdx*8]
cmp edi, dword [rcx + 0x10]
je 0x1806ac347
cmp rcx, rax
je 0x1806ac345
mov rcx, qword [rcx + 8]
cmp edi, dword [rcx + 0x10]
jne 0x1806ac335
jmp 0x1806ac347
xor ecx, ecx
test rcx, rcx
mov rax, r8
cmovne rax, rcx
cmp rax, r8
jne 0x1806ac392
mov ecx, edi
call fcn.1806addb0
mov ecx, edi
mov dword [rsp + 0x50], eax
call fcn.1806add50
mov ecx, edi
mov dword [rsp + 0x54], eax
call fcn.1806add80
lea r9, [rsp + 0x50]
mov dword [rsp + 0x58], eax
lea r8, [rsp + 0x38]
lea rdx, [rsp + 0x60]
lea rcx, [0x180901cf0]
call fcn.1806abd00
xor edx, edx
mov ecx, edi
call fcn.1806adeb0
xor edx, edx
mov ecx, edi
call fcn.1806ade30
xor edx, edx
mov ecx, edi
call fcn.1806ade70
jmp 0x1806ac560
movzx r15d, byte [rsp + 0x39]
movzx r12d, byte [rsp + 0x3a]
movzx r13d, byte [rsp + 0x3b]
mov r10, qword [0x180901d08]
mov r9, qword [0x180901cf8]
movzx r8d, dil
xor r8, rsi
imul r8, rbx
xor r8, r15
imul r8, rbx
xor r8, r12
imul r8, rbx
xor r8, r13
imul r8, rbx
and r8, qword [0x180901d20]
add r8, r8
mov rdx, qword [r10 + r8*8 + 8]
mov rcx, rdx
cmp rdx, r9
je 0x1806ac422
mov rax, qword [r10 + r8*8]
cmp edi, dword [rdx + 0x10]
je 0x1806ac424
cmp rcx, rax
je 0x1806ac422
mov rcx, qword [rcx + 8]
cmp edi, dword [rcx + 0x10]
jne 0x1806ac412
jmp 0x1806ac424
xor ecx, ecx
test rcx, rcx
mov rax, r9
cmovne rax, rcx
cmp rax, r9
je 0x1806ac54c
cmp rdx, r9
je 0x1806accde
mov rax, qword [r10 + r8*8]
cmp edi, dword [rdx + 0x10]
je 0x1806ac462
nop dword [rax]
cmp rdx, rax
je 0x1806accde
mov rdx, qword [rdx + 8]
cmp edi, dword [rdx + 0x10]
jne 0x1806ac450
mov edx, dword [rdx + 0x1c]
mov ecx, edi
call fcn.1806ade30
mov rax, qword [0x180901d08]
movzx ecx, dil
xor rcx, rsi
imul rcx, rbx
xor rcx, r15
imul rcx, rbx
xor rcx, r12
imul rcx, rbx
xor rcx, r13
imul rcx, rbx
and rcx, qword [0x180901d20]
add rcx, rcx
mov rdx, qword [rax + rcx*8 + 8]
cmp rdx, qword [0x180901cf8]
je 0x1806accde
mov rax, qword [rax + rcx*8]
cmp edi, dword [rdx + 0x10]
je 0x1806ac4d2
nop dword [rax + rax]
cmp rdx, rax
je 0x1806accde
mov rdx, qword [rdx + 8]
cmp edi, dword [rdx + 0x10]
jne 0x1806ac4c0
mov edx, dword [rdx + 0x18]
mov ecx, edi
call fcn.1806ade70
mov rax, qword [0x180901d08]
movzx ecx, dil
xor rcx, rsi
imul rcx, rbx
xor rcx, r15
imul rcx, rbx
xor rcx, r12
imul rcx, rbx
xor rcx, r13
imul rcx, rbx
and rcx, qword [0x180901d20]
add rcx, rcx
mov rdx, qword [rax + rcx*8 + 8]
cmp rdx, qword [0x180901cf8]
je 0x1806accde
mov rax, qword [rax + rcx*8]
cmp edi, dword [rdx + 0x10]
je 0x1806ac542
nop dword [rax + rax]
cmp rdx, rax
je 0x1806accde
mov rdx, qword [rdx + 8]
cmp edi, dword [rdx + 0x10]
jne 0x1806ac530
mov edx, dword [rdx + 0x14]
mov ecx, edi
call fcn.1806adeb0
movabs r13, 0x2e1202248937775c
movabs r12, 0x583be370b1ec6eb4
cmp byte [0x1808fae0c], 0
je 0x1806ac5bf
lea r9, [rsp + 0x40]
mov dword [rsp + 0x40], 0
mov r8d, edi
mov edx, r14d
mov rcx, r13
call fcn.1806abbd0
mov edx, dword [0x1808fae18]
test edx, edx
jne 0x1806ac59a
mov edx, edi
mov rcx, r12
call fcn.18063b680
jmp 0x1806ac5a0
mov eax, dword [rsp + 0x40]
add eax, edx
mov r9d, eax
mov r8d, edi
mov edx, r14d
movabs rcx, 0xdcd2a934d65cb497
call fcn.180695c60
mov byte [0x1808fae0c], 0
cmp byte [0x1808fae1c], 0
movabs rbx, 0x2e3557a479cfd0e6
movabs rsi, 0x7065af6160bb9fe9
movabs r15, 0x388b0715b2cd0085
movabs r12, 0xac622a82b9d8fb2
movabs r13, 0x10bc727798e47c7
je 0x1806ac791
mov r9d, dword [0x1808fae20]
mov r8d, edi
mov edx, r14d
movabs rcx, 0xd966d51aa5b28bb9
call fcn.18063f2d0
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.180738870
movabs rax, 0x5ef87470d1ae75d6
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, 0x6ea2438852f1e3c7
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x78], rax
movabs rax, 0x602ba24f0dae23a2
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp - 0x80], rax
movabs rax, 0x49bbec7a952fbcc8
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp - 0x78], rax
movabs rax, 0x7065af6160bbb19d
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, 0x27de8112f64ec8bc
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1588], rax
mov qword [rsp + 0x30], rsi
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.18063ec70
lea rcx, [rbp - 0x60]
call fcn.1806a0080
mov edi, dword [rsp + 0x38]
mov byte [0x1808fae1c], 0
cmp byte [0x1808fae24], 0
je 0x1806acb90
mov r9d, dword [0x1808fae28]
mov r8d, edi
mov edx, r14d
movabs rcx, 0x1e8be90c74fb4c09
call fcn.18063f2d0
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.180738870
movabs rax, 0x5ef87470d1ae75d6
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, 0x67a3508852f1e3c7
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x78], rax
movabs rax, 0x6463b3071deb31a8
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp - 0x80], rax
movabs rax, 0x4ab6e273823aa99c
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp - 0x78], rax
movabs rax, 0x7065af614ecff18c
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, 0x27de8112f64ec8bc
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1558], rax
mov qword [rsp + 0x30], rsi
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.18063ec70
lea rcx, [rbp - 0x60]
call fcn.1806a0080
mov byte [0x1808fae24], 0
jmp 0x1806acb90
cmp byte [0x1808fae0c], 0
je 0x1806acb90
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.180738870
movabs rax, 0x4cf8727892b86fdc
lea rdx, [rbp + 0x1540]
mov qword [rsp + 0x30], rax
lea rcx, [rbp + 0x1b0]
mov rax, qword [rsp + 0x30]
movabs rsi, 0x7065af6160bb9fe9
mov qword [rbp + 0x1540], rax
movabs rbx, 0x2e3557a479cfd0e6
movabs rax, 0x2aa702cc47f2e792
movabs r15, 0x388b0715b2cd0085
mov qword [rsp + 0x30], rax
movabs r12, 0xac622a82b9d8fb2
mov rax, qword [rsp + 0x30]
movabs r13, 0x10bc727798e47c7
mov qword [rbp + 0x1548], rax
movabs rax, 0x672ba94809ef22b0
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1550], rax
movabs rax, 0x9aae07a826ebad3
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1558], rax
mov qword [rsp + 0x30], rsi
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, 0x27de8112f64ec8bc
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x15b8], rax
mov qword [rsp + 0x30], rsi
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.18063ec70
mov rdx, qword [0x1808fb148]
cmp rdx, qword [0x1808fb150]
je 0x1806acb76
lea rax, [rbp + 0x1b0]
mov ecx, 4
nop
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 0x1806acb10
movups xmm0, xmmword [rax]
movups xmmword [rdx], xmm0
add qword [0x1808fb148], 0x210
jmp 0x1806acb89
lea r8, [rbp + 0x1b0]
lea rcx, [0x1808fb140]
call fcn.18063bb90
mov byte [0x1808fae0c], 0
cmp byte [0x1808fae2c], 0
movabs r15, 0xb282dc6ebd803c75
je 0x1806acbd6
call fcn.180639bd0
mov r9d, 0x64
mov dword [rsp + 0x20], 1
mov edx, r14d
mov rcx, r15
mov byte [rax + 0x228], 1
mov r8d, dword [0x1808fae30]
call fcn.180692a50
mov byte [0x1808fae2c], 0
cmp byte [0x1808fae34], 0
je 0x1806acbff
mov r8d, dword [0x1808fae38]
mov edx, r14d
movabs rcx, 0x4899cb088edf59b8
call fcn.180690f10
mov byte [0x1808fae34], 0
cmp byte [0x1808fae3c], 0
je 0x1806acca9
call fcn.180639bd0
mov byte [rax + 0x228], 1
mov rdi, qword [0x180901ca8]
mov rbx, qword [rdi]
cmp rbx, rdi
je 0x1806acca2
nop word [rax + rax]
lea rdx, [rbx + 0x10]
lea rcx, [rbp + 0x1540]
call fcn.180648de0
mov r8d, dword [rbx + 0x30]
mov r9d, 0x64
mov edx, r14d
mov dword [rsp + 0x20], 0
mov rcx, r15
call fcn.180692a50
mov rdx, qword [rbp + 0x1558]
cmp rdx, 0xf
jbe 0x1806acc9a
mov rcx, qword [rbp + 0x1540]
inc rdx
mov rax, rcx
cmp rdx, 0x1000
jb 0x1806acc95
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1806acceb
call fcn.18070454c
mov rbx, qword [rbx]
cmp rbx, rdi
jne 0x1806acc30
mov byte [0x1808fae3c], 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.1807045e0
add rsp, 0x16e0
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret
lea rcx, [0x180744860]
call fcn.180705c08
int3
call fcn.1807199bc
int3
lea rcx, [0x180901488]
call fcn.180704c58
cmp dword [0x180901488], 0xffffffff
jne 0x1806ac054
lea rcx, [0x180739860]
call fcn.180704994
lea rcx, [0x180901488]
call fcn.180704bec
jmp 0x1806ac054