Function at 0x18014f7c0
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.1801a7af0
sub rsp, rax
mov rax, qword [0x180269dc0]
xor rax, rsp
mov qword [rbp + 0x15d0], rax
mov ecx, dword [0x18026e2e8]
mov rax, qword gs:[0x58]
mov edx, 4
mov rax, qword [rax + rcx*8]
mov eax, dword [rdx + rax]
cmp dword [0x18026c508], eax
jg 0x180150431
movabs rcx, 0xa5edc40ef369b48d
call fcn.1800e7ce0
mov edx, eax
movabs rcx, 0x43a66c31c68491c0
call fcn.1800e7da0
mov edx, eax
movabs rcx, 0xa6db4965674d243
mov esi, eax
call fcn.1800e7da0
cmp byte [0x180265e85], 0
mov edi, eax
mov dword [rsp + 0x38], eax
je 0x18014f862
mov edi, dword [0x180265e8c]
mov dword [rsp + 0x38], edi
jmp 0x18014f868
mov dword [0x180265e8c], edi
mov ebx, edi
movabs r14, 0xa38dcffcea8962fa
test ebx, ebx
je 0x18014f891
mov r9d, 1
mov r8d, edi
mov edx, esi
mov rcx, r14
call fcn.180139cb0
mov dword [0x180265e90], 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.1800ec120
test eax, eax
je 0x1801500de
test ebx, ebx
je 0x1801500de
movss xmm2, dword [0x180265e88]
comiss xmm2, dword [0x1801e0ec0]
jbe 0x18014f8f2
mov edx, edi
movabs rcx, 0x4757f00bc6323cfe
call fcn.1801387c0
cmp byte [0x180265e53], 0
movabs r12, 0x583be370b1ec6eb4
movabs r13, 0x2e1202248937775c
je 0x18014fa43
lea r9, [rsp + 0x3c]
mov dword [rsp + 0x3c], 0
mov r8d, edi
mov edx, esi
mov rcx, r13
call fcn.18014f3a0
cmp dword [rsp + 0x3c], 1
jg 0x18014fa43
mov r9d, 1
mov r8d, edi
mov edx, esi
mov rcx, r14
call fcn.180139cb0
cmp eax, 1
je 0x18014fa43
mov edx, edi
mov rcx, r12
call fcn.1800e7da0
mov edx, edi
mov rcx, r12
mov r14d, eax
call fcn.1800e7da0
mov edx, edi
mov rcx, r12
mov ebx, eax
call fcn.1800e7da0
mov r15d, 2
sub r15d, ebx
add r15d, eax
call fcn.1801aa600
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 0x18014f9a0
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 0x18014f9ef
call fcn.180140710
mov ecx, eax
jmp 0x18014fa2b
lea ebx, [r14 + 1]
mov r14d, ebx
call fcn.180140710
mov ecx, eax
imul rcx, r14
cmp ecx, ebx
jae 0x18014fa27
mov eax, ebx
xor edx, edx
neg eax
div ebx
mov ebx, edx
cmp ecx, edx
jae 0x18014fa27
lea rcx, [rsp + 0x48]
call fcn.180140710
mov ecx, eax
imul rcx, r14
cmp ecx, ebx
jb 0x18014fa13
shr rcx, 0x20
lea r9d, [r15 + rcx]
mov r8d, edi
movabs rcx, 0xdcd2a934d65cb497
mov edx, esi
call fcn.180139cb0
cmp byte [0x180265e50], 0
je 0x18014fa5d
mov edx, esi
movabs rcx, 0x8c0d57ea686fad87
call fcn.1800e7da0
cmp byte [0x180265e52], 0
je 0x18014fa70
xorps xmm1, xmm1
mov ecx, edi
call fcn.180151630
cmp byte [0x180265e51], 0
movabs r14, 0xcbf29ce484222325
movabs rbx, 0x100000001b3
je 0x18014fb70
movzx eax, byte [rsp + 0x39]
mov r8, qword [0x18026cdc8]
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 [0x18026cdd8]
imul rdx, rbx
and rdx, qword [0x18026cdf0]
add rdx, rdx
mov rcx, qword [rax + rdx*8 + 8]
cmp rcx, r8
je 0x18014fb00
mov rax, qword [rax + rdx*8]
cmp edi, dword [rcx + 0x10]
je 0x18014fb02
nop dword [rax + rax]
cmp rcx, rax
je 0x18014fb00
mov rcx, qword [rcx + 8]
cmp edi, dword [rcx + 0x10]
jne 0x18014faf0
jmp 0x18014fb02
xor ecx, ecx
test rcx, rcx
mov rax, r8
cmovne rax, rcx
cmp rax, r8
jne 0x18014fb4d
mov ecx, edi
call fcn.1801514f0
mov ecx, edi
mov dword [rsp + 0x50], eax
call fcn.180151490
mov ecx, edi
mov dword [rsp + 0x54], eax
call fcn.1801514c0
lea r9, [rsp + 0x50]
mov dword [rsp + 0x58], eax
lea r8, [rsp + 0x38]
lea rdx, [rsp + 0x60]
lea rcx, [0x18026cdc0]
call fcn.18014f4c0
xor edx, edx
mov ecx, edi
call fcn.1801515f0
xor edx, edx
mov ecx, edi
call fcn.180151570
xor edx, edx
mov ecx, edi
call fcn.1801515b0
jmp 0x18014fd10
movzx r15d, byte [rsp + 0x39]
movzx r12d, byte [rsp + 0x3a]
movzx r13d, byte [rsp + 0x3b]
mov r10, qword [0x18026cdd8]
mov r9, qword [0x18026cdc8]
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 [0x18026cdf0]
add r8, r8
mov rdx, qword [r10 + r8*8 + 8]
mov rcx, rdx
cmp rdx, r9
je 0x18014fbe0
mov rax, qword [r10 + r8*8]
cmp edi, dword [rdx + 0x10]
je 0x18014fbe2
cmp rcx, rax
je 0x18014fbe0
mov rcx, qword [rcx + 8]
cmp edi, dword [rcx + 0x10]
jne 0x18014fbd0
jmp 0x18014fbe2
xor ecx, ecx
test rcx, rcx
mov rax, r9
cmovne rax, rcx
cmp rax, r9
je 0x18014fcfc
cmp rdx, r9
je 0x180150467
mov rax, qword [r10 + r8*8]
cmp edi, dword [rdx + 0x10]
je 0x18014fc19
cmp rdx, rax
je 0x180150467
mov rdx, qword [rdx + 8]
cmp edi, dword [rdx + 0x10]
jne 0x18014fc07
mov edx, dword [rdx + 0x1c]
mov ecx, edi
call fcn.180151570
mov rax, qword [0x18026cdd8]
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 [0x18026cdf0]
add rcx, rcx
mov rdx, qword [rax + rcx*8 + 8]
cmp rdx, qword [0x18026cdc8]
je 0x180150467
mov rax, qword [rax + rcx*8]
cmp edi, dword [rdx + 0x10]
je 0x18014fc82
nop
cmp rdx, rax
je 0x180150467
mov rdx, qword [rdx + 8]
cmp edi, dword [rdx + 0x10]
jne 0x18014fc70
mov edx, dword [rdx + 0x18]
mov ecx, edi
call fcn.1801515b0
mov rax, qword [0x18026cdd8]
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 [0x18026cdf0]
add rcx, rcx
mov rdx, qword [rax + rcx*8 + 8]
cmp rdx, qword [0x18026cdc8]
je 0x180150467
mov rax, qword [rax + rcx*8]
cmp edi, dword [rdx + 0x10]
je 0x18014fcf2
nop dword [rax + rax]
cmp rdx, rax
je 0x180150467
mov rdx, qword [rdx + 8]
cmp edi, dword [rdx + 0x10]
jne 0x18014fce0
mov edx, dword [rdx + 0x14]
mov ecx, edi
call fcn.1801515f0
movabs r13, 0x2e1202248937775c
movabs r12, 0x583be370b1ec6eb4
cmp byte [0x180265e54], 0
je 0x18014fd6d
lea r9, [rsp + 0x40]
mov dword [rsp + 0x40], 0
mov r8d, edi
mov edx, esi
mov rcx, r13
call fcn.18014f3a0
mov edx, dword [0x180265e60]
test edx, edx
jne 0x18014fd49
mov edx, edi
mov rcx, r12
call fcn.1800e7da0
jmp 0x18014fd4f
mov eax, dword [rsp + 0x40]
add eax, edx
mov r9d, eax
mov r8d, edi
mov edx, esi
movabs rcx, 0xdcd2a934d65cb497
call fcn.180139cb0
mov byte [0x180265e54], 0
cmp byte [0x180265e64], 0
movabs rbx, 0x6d1fea431f800294
movabs r15, 0x1ca07b62ba8c942b
movabs r12, 0xd9a6684febeded80
movabs r13, 0xaadedba8936fcb5d
movabs r14, 0xff3cf8966cbb8cbf
je 0x18014ff3e
mov r9d, dword [0x180265e68]
mov r8d, edi
mov edx, esi
movabs rcx, 0xd966d51aa5b28bb9
call fcn.1800ebba0
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.1801dac20
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.1800eb530
lea rcx, [rbp - 0x60]
call fcn.180141890
mov edi, dword [rsp + 0x38]
mov byte [0x180265e64], 0
cmp byte [0x180265e6c], 0
je 0x180150340
mov r9d, dword [0x180265e70]
mov r8d, edi
mov edx, esi
movabs rcx, 0x1e8be90c74fb4c09
call fcn.1800ebba0
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.1801dac20
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.1800eb530
lea rcx, [rbp - 0x60]
call fcn.180141890
mov byte [0x180265e6c], 0
jmp 0x180150340
cmp byte [0x180265e54], 0
je 0x180150340
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.1801dac20
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.1800eb530
mov rdx, qword [0x1802661c8]
cmp rdx, qword [0x1802661d0]
je 0x180150326
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 0x1801502c0
movups xmm0, xmmword [rax]
movups xmmword [rdx], xmm0
add qword [0x1802661c8], 0x210
jmp 0x180150339
lea r8, [rbp + 0x1b0]
lea rcx, [0x1802661c0]
call fcn.1800e82f0
mov byte [0x180265e54], 0
cmp byte [0x180265e74], 0
movabs r14, 0xb282dc6ebd803c75
je 0x180150385
call fcn.1800e6170
mov r9d, 0x64
mov dword [rsp + 0x20], 1
mov edx, esi
mov rcx, r14
mov byte [rax + 0x228], 1
mov r8d, dword [0x180265e78]
call fcn.1801375f0
mov byte [0x180265e74], 0
cmp byte [0x180265e7c], 0
je 0x1801503ad
mov r8d, dword [0x180265e80]
mov edx, esi
movabs rcx, 0x4899cb088edf59b8
call fcn.180135b00
mov byte [0x180265e7c], 0
cmp byte [0x180265e84], 0
je 0x1801503fc
call fcn.1800e6170
mov byte [rax + 0x228], 1
mov rdi, qword [0x18026cd88]
mov rbx, qword [rdi]
cmp rbx, rdi
je 0x1801503f5
mov r8d, dword [rbx + 0x18]
mov r9d, 0x64
mov edx, esi
mov dword [rsp + 0x20], 0
mov rcx, r14
call fcn.1801375f0
mov rbx, qword [rbx]
cmp rbx, rdi
jne 0x1801503d1
mov byte [0x180265e84], 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.1801a76e0
add rsp, 0x16e0
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret
lea rcx, [0x18026c508]
call fcn.1801a7d58
cmp dword [0x18026c508], 0xffffffff
jne 0x18014f814
lea rcx, [0x1801dbc10]
call fcn.1801a7a94
lea rcx, [0x18026c508]
call fcn.1801a7cec
jmp 0x18014f814
lea rcx, [0x1801eb600]
call fcn.1801a8d08
int3