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

Disassembly:
push rbp
push r15
push r14
push r12
push rsi
push rdi
push rbx
mov eax, 0x1410
call fcn.18001c0e0
sub rsp, rax
lea rbp, [rsp + 0x80]
movdqa xmmword [rbp + 0x1380], xmm8
movdqa xmmword [rbp + 0x1370], xmm7
movdqa xmmword [rbp + 0x1360], xmm6
mov qword [rbp + 0x1358], 0xfffffffffffffffe
mov ecx, 0x830
call fcn.18001b390
mov qword [rbp + 0x1350], rax
mov rcx, rax
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_CEventHandler::constructor_void____ptr64]
lea rax, vtable.ISocketInterfaceShared.0
mov rdx, qword [rbp + 0x1350]
mov qword [rdx], rax
mov dword [rdx + 0x10], 0
lea rcx, [rdx + 0x28]
pxor xmm6, xmm6
movdqu xmmword [rdx + 0x18], xmm6
mov qword [rbp + 0x1348], rcx
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_CComposerJson::constructor_void____ptr64]
mov rax, qword [rbp + 0x1350]
mov byte [rax + 0x30], 0
lea rcx, [rax + 0x60]
movdqu xmmword [rax + 0x38], xmm6
movdqu xmmword [rax + 0x48], xmm6
mov qword [rax + 0x58], 0
mov qword [rbp + 0x1330], rcx
xor edx, edx
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_CLightDynString::constructor_unsigned_long_long_unsigned___int64_____ptr64]
mov rsi, qword [rbp + 0x1350]
lea r12, [rsi + 0xf8]
mov r8d, 0x148
mov rcx, r12
xor edx, edx
call fcn.180013190
mov byte [rsi + 0x240], 1
lea r15, [rsi + 0x248]
mov rcx, r15
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_uint256_type::constructor_void____ptr64]
mov rax, qword [rbp + 0x1350]
lea r14, [rax + 0x268]
mov rcx, r14
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_uint256_type::constructor_void____ptr64]
mov rax, qword [rbp + 0x1350]
lea rbx, [rax + 0x288]
mov rcx, rbx
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_uint256_type::constructor_void____ptr64]
mov rax, qword [rbp + 0x1350]
lea rdi, [rax + 0x2a8]
mov rcx, rdi
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_uint256_type::constructor_void____ptr64]
mov rax, qword [rbp + 0x1350]
lea rsi, [rax + 0x2c8]
mov rcx, rsi
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_uint256_type::constructor_void____ptr64]
mov rax, qword [rbp + 0x1350]
lea rcx, [rax + 0x2e8]
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_uint256_type::constructor_void____ptr64]
mov qword [rbp + 0x1338], r12
mov rax, qword [rbp + 0x1350]
mov qword [rax + 0x308], 0
mov dword [rax + 0x310], 0
pxor xmm0, xmm0
movdqu xmmword [rax + 0x318], xmm0
mov dword [rax + 0x328], 0
movdqu xmmword [rax + 0x330], xmm0
movdqu xmmword [rax + 0x340], xmm0
mov qword [rax + 0x350], 0
mov qword [rax + 0x358], 0xffffffffffffffff
mov dword [rax + 0x360], 0
movdqu xmmword [rax + 0x368], xmm0
movdqu xmmword [rax + 0x378], xmm0
movdqu xmmword [rax + 0x388], xmm0
mov qword [rax + 0x398], 0
movdqu xmmword [rax + 0x3a0], xmm0
mov qword [rax + 0x3b0], 0
mov rcx, r15
xor edx, edx
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_uint256_type::reset_unsigned_char____ptr64]
mov rcx, r14
xor edx, edx
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_uint256_type::reset_unsigned_char____ptr64]
mov rcx, rbx
xor edx, edx
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_uint256_type::reset_unsigned_char____ptr64]
mov rcx, rdi
xor edx, edx
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_uint256_type::reset_unsigned_char____ptr64]
mov rcx, rsi
xor edx, edx
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_uint256_type::reset_unsigned_char____ptr64]
mov rax, qword [rbp + 0x1350]
lea rcx, [rax + 0x3b8]
pxor xmm0, xmm0
movdqu xmmword [rcx], xmm0
mov qword [rbp + 0x1340], rcx
mov qword [rcx + 0x10], 0
mov byte [rax + 0x3d0], 1
lea rcx, [rax + 0x3d8]
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_uint256_type::constructor_void____ptr64]
call sub.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_
mov edx, eax
movabs rax, 0x5555555555555555
mov qword [rbp + 0x1328], rax
mov qword [rbp - 0x58], rdx
xor ecx, ecx
movabs rax, 0x5851f42d4c957f2d
nop dword [rax + rax]
mov r8, rdx
shr r8, 0x3e
xor r8, rdx
imul r8, rax
lea rdx, [rcx + r8]
inc rdx
mov qword [rbp + rcx*8 - 0x50], rdx
mov r8, rdx
shr r8, 0x3e
xor r8, rdx
imul r8, rax
lea rdx, [rcx + r8]
add rdx, 2
mov qword [rbp + rcx*8 - 0x48], rdx
mov r8, rdx
shr r8, 0x3e
xor r8, rdx
imul r8, rax
lea rdx, [rcx + r8]
add rdx, 3
mov qword [rbp + rcx*8 - 0x40], rdx
mov r8, rdx
shr r8, 0x3e
xor r8, rdx
imul r8, rax
lea rdx, [rcx + r8]
add rdx, 4
mov qword [rbp + rcx*8 - 0x38], rdx
mov r8, rdx
shr r8, 0x3e
xor r8, rdx
imul r8, rax
lea rdx, [rcx + r8]
add rdx, 5
mov qword [rbp + rcx*8 - 0x30], rdx
mov r8, rdx
shr r8, 0x3e
xor r8, rdx
imul r8, rax
lea rdx, [rcx + r8]
add rdx, 6
mov qword [rbp + rcx*8 - 0x28], rdx
mov r8, rdx
shr r8, 0x3e
xor r8, rdx
imul r8, rax
lea rdx, [rcx + r8]
add rdx, 7
mov qword [rbp + rcx*8 - 0x20], rdx
mov r8, rdx
shr r8, 0x3e
xor r8, rdx
imul r8, rax
lea rdx, [rcx + r8]
add rdx, 8
mov qword [rbp + rcx*8 - 0x18], rdx
add rcx, 8
cmp rcx, 0x130
jne 0x1800016a0
add r8, rcx
mov rcx, r8
shr rcx, 0x3e
xor rcx, r8
imul rcx, rax
add rcx, 0x131
mov qword [rbp + 0x930], rcx
mov rdx, rcx
shr rdx, 0x3e
xor rdx, rcx
imul rdx, rax
add rdx, 0x132
mov qword [rbp + 0x938], rdx
mov rcx, rdx
shr rcx, 0x3e
xor rcx, rdx
imul rcx, rax
add rcx, 0x133
mov qword [rbp + 0x940], rcx
mov rdx, rcx
shr rdx, 0x3e
xor rdx, rcx
imul rdx, rax
add rdx, 0x134
mov qword [rbp + 0x948], rdx
mov rcx, rdx
shr rcx, 0x3e
xor rcx, rdx
imul rcx, rax
add rcx, 0x135
mov qword [rbp + 0x950], rcx
mov rdx, rcx
shr rdx, 0x3e
xor rdx, rcx
imul rdx, rax
add rdx, 0x136
mov qword [rbp + 0x958], rdx
mov rcx, rdx
shr rcx, 0x3e
xor rcx, rdx
imul rcx, rax
add rcx, 0x137
mov qword [rbp + 0x960], rcx
mov r8d, 0x138
xor eax, eax
movdqa xmm0, xmmword [0x18001f170]
movdqa xmm1, xmmword [0x18001f180]
movdqa xmm2, xmmword [0x18001f190]
movabs rcx, 0x555555555
movabs rdx, 0x71d67fffeda60000
mov r11, qword [rbp + 0x1350]
jmp 0x180001987
movdqu xmm5, xmmword [rbp + 0x1320]
movdqu xmm3, xmmword [rbp + 0x1318]
movdqu xmm4, xmmword [rbp + 0xe38]
movdqu xmm6, xmmword [rbp + 0xe40]
pshufd xmm7, xmm6, 0xa0
pslld xmm7, 0x1f
psrad xmm7, 0x1f
pand xmm7, xmm0
psrlq xmm6, 1
pand xmm6, xmm1
psrlq xmm4, 1
pand xmm4, xmm2
por xmm4, xmm6
pxor xmm4, xmm3
pxor xmm4, xmm7
movdqu xmmword [rbp + 0x478], xmm4
movq xmm6, qword [rbp - 0x58]
punpcklqdq xmm5, xmm6
pshufd xmm6, xmm5, 0xa0
pslld xmm6, 0x1f
psrad xmm6, 0x1f
pand xmm6, xmm0
psrlq xmm5, 1
pand xmm5, xmm1
psrlq xmm3, 1
pand xmm3, xmm2
por xmm3, xmm5
pxor xmm3, xmm6
pxor xmm3, xmm4
movdqu xmmword [rbp + 0x958], xmm3
xor r8d, r8d
mov r9d, r8d
inc r8d
mov r9, qword [rbp + r9*8 - 0x58]
mov r10, r9
shr r10, 0x1d
and r10, rcx
xor r10, r9
mov r9, r10
shl r9, 0x11
and r9, rdx
xor r9, r10
mov r10d, r9d
and r10d, 0x7ffbf77
shl r10, 0x25
xor r10, r9
mov r9, r10
shr r9, 0x2b
xor r9, r10
mov qword [r11 + rax*8 + 0x3d8], r9
lea r9, [rax + 1]
cmp rax, 3
mov rax, r9
je 0x180001b61
cmp r8d, 0x138
jne 0x180001a90
mov r8, 0xfffffffffffff640
mov r9, qword [rbp - 0x58]
nop
movdqu xmm3, xmmword [rbp + r8 + 0x970]
movdqu xmm4, xmmword [rbp + r8 + 0x980]
pshufd xmm5, xmm3, 0xa0
pslld xmm5, 0x1f
psrad xmm5, 0x1f
pand xmm5, xmm0
movdqu xmm6, xmmword [rbp + r8 + 0xe48]
pxor xmm6, xmm5
movdqa xmm5, xmm3
psrlq xmm5, 1
pand xmm5, xmm1
movq xmm7, r9
movdqa xmm8, xmm3
punpcklqdq xmm8, xmm7
psrlq xmm8, 1
pand xmm8, xmm2
pshufd xmm7, xmm8, 0x4e
por xmm7, xmm5
pxor xmm7, xmm6
movdqu xmmword [rbp + r8 + 0x1328], xmm7
pshufd xmm5, xmm4, 0xa0
pslld xmm5, 0x1f
psrad xmm5, 0x1f
pand xmm5, xmm0
movdqu xmm6, xmmword [rbp + r8 + 0xe58]
pxor xmm6, xmm5
movsd xmm3, xmm4
pshufd xmm5, xmm4, 0xee
psrlq xmm4, 1
pand xmm4, xmm1
psrlq xmm3, 1
pand xmm3, xmm2
pshufd xmm3, xmm3, 0x4e
por xmm3, xmm4
pxor xmm3, xmm6
movdqu xmmword [rbp + r8 + 0x1338], xmm3
movq r9, xmm5
add r8, 0x20
jne 0x1800019a0
mov r8d, 0x138
jmp 0x18000192e
cmp r8d, 0x270
jb 0x18000192e
mov r8, 0xfffffffffffffffe
nop word cs:[rax + rax]
movdqu xmm3, xmmword [rbp + r8*8 + 0x978]
movdqu xmm5, xmmword [rbp + r8*8 + 0x980]
pshufd xmm6, xmm5, 0xa0
pslld xmm6, 0x1f
psrad xmm6, 0x1f
pand xmm6, xmm0
movdqu xmm4, xmmword [rbp + r8*8 + 0xe58]
psrlq xmm5, 1
pand xmm5, xmm1
psrlq xmm3, 1
pand xmm3, xmm2
por xmm3, xmm5
pxor xmm3, xmm4
pxor xmm3, xmm6
movdqu xmmword [rbp + r8*8 - 0x48], xmm3
movdqu xmm5, xmmword [rbp + r8*8 + 0xe60]
pshufd xmm6, xmm5, 0xa0
pslld xmm6, 0x1f
psrad xmm6, 0x1f
pand xmm6, xmm0
psrlq xmm5, 1
pand xmm5, xmm1
psrlq xmm4, 1
pand xmm4, xmm2
por xmm4, xmm5
pxor xmm4, xmm6
pxor xmm4, xmm3
movdqu xmmword [rbp + r8*8 + 0x498], xmm4
add r8, 2
cmp r8, 0x98
jb 0x180001ab0
jmp 0x180001890
lea rax, vtable.ISocketInterfaceBase.0
mov qword [r11], rax
mov qword [r11 + 0x3f8], 0
mov dword [r11 + 0x400], 0
lea rcx, [r11 + 0x408]
mov qword [rbp + 0x1348], rcx
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_INwInterfaceSocket::constructor_void____ptr64]
mov rcx, qword [rbp + 0x1350]
mov dword [rcx + 0x800], 0x1000100
call qword [sym.imp.TT_SubSystem.dll_public:_void____ptr64___cdecl_CEventHandler::GetEvHandle_void_const___ptr64]
mov rcx, qword [rbp + 0x1350]
mov qword [rcx + 0x418], rax
mov rcx, qword [rbp + 0x1348]
call qword [sym.imp.TT_SubSystem.dll_public:_void____ptr64___cdecl_CEventHandler::GetEvHandle_void_const___ptr64]
mov rcx, qword [rbp + 0x1350]
mov qword [rcx + 0x18], rax
lea rax, vtable.IPluginImpl.0
mov qword [rcx], rax
mov byte [rcx + 0x808], 0
add rcx, 0x810
call qword [sym.imp.TT_SubSystem.dll_public:_void___cdecl_uint256_type::constructor_void____ptr64]
mov rax, qword [rbp + 0x1350]
movaps xmm6, xmmword [rbp + 0x1360]
movaps xmm7, xmmword [rbp + 0x1370]
movaps xmm8, xmmword [rbp + 0x1380]
add rsp, 0x1410
pop rbx
pop rdi
pop rsi
pop r12
pop r14
pop r15
pop rbp
ret