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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1470]
mov eax, 0x1570
call fcn.180166060
sub rsp, rax
movaps xmmword [rsp + 0x1560], xmm6
movaps xmmword [rsp + 0x1550], xmm7
movaps xmmword [rsp + 0x1540], xmm8
movaps xmmword [rsp + 0x1530], xmm9
movaps xmmword [rsp + 0x1520], xmm10
movaps xmmword [rsp + 0x1510], xmm11
movaps xmmword [rsp + 0x1500], xmm12
movaps xmmword [rsp + 0x14f0], xmm13
movaps xmmword [rsp + 0x14e0], xmm14
mov rax, qword [0x1801f6340]
xor rax, rsp
mov qword [rbp + 0x13d0], rax
mov r15, rcx
mov qword [rsp + 0x20], rcx
mov rax, qword [0x1801ffe68]
inc dword [rcx + rax]
call fcn.180100e40
movsxd rbx, eax
test eax, eax
je 0x180102fe7
xor eax, eax
xorps xmm1, xmm1
movdqu xmmword [rbp - 0x10], xmm1
mov qword [rbp], rax
movsd xmm11, qword [0x1801d3010]
comisd xmm11, xmmword [0x1801ffd70]
jbe 0x18010269e
mov rax, qword [0x1801ffe60]
mov rcx, qword [r15 + rax]
mov eax, dword [rcx + 0x58]
sub eax, dword [rcx + 0x84]
movsxd rcx, eax
mov qword [rbp - 0x30], rcx
je 0x18010269e
movabs rax, 0x1fffffffffffffff
cmp rcx, rax
ja 0x180103049
lea rdx, [rbp - 0x30]
lea rcx, [rbp - 0x10]
call fcn.1801030d0
call fcn.180100920
mov qword [rsp + 0x38], rax
movss xmm2, dword [0x1801d2c98]
lea rdx, [rbp - 0x10]
mov rcx, r15
call fcn.180101090
mov edi, dword [0x1801ff004]
mov rax, qword gs:[0x58]
mov r14d, 0x10
mov rsi, qword [rax + rdi*8]
mov qword [rsp + 0x30], rsi
mov eax, dword [rsi + r14]
cmp dword [0x180203418], eax
jle 0x180102715
lea rcx, [0x180203418]
call fcn.1801651b0
cmp dword [0x180203418], 0xffffffff
jne 0x180102715
mov rax, qword [0x1801fff98]
mov qword [0x180203478], rax
lea rcx, [0x180203418]
call fcn.180165144
mov eax, dword [rsi + r14]
cmp dword [0x1802034a0], eax
jle 0x180102750
lea rcx, [0x1802034a0]
call fcn.1801651b0
cmp dword [0x1802034a0], 0xffffffff
jne 0x180102750
mov rax, qword [0x1801fff78]
mov qword [0x180203410], rax
lea rcx, [0x1802034a0]
call fcn.180165144
mov eax, dword [rsi + r14]
cmp dword [0x1802034dc], eax
jle 0x18010278b
lea rcx, [0x1802034dc]
call fcn.1801651b0
cmp dword [0x1802034dc], 0xffffffff
jne 0x18010278b
mov rax, qword [0x1801fff98]
mov qword [0x1802033e8], rax
lea rcx, [0x1802034dc]
call fcn.180165144
mov eax, dword [rsi + r14]
cmp dword [0x180203454], eax
jle 0x1801027c6
lea rcx, [0x180203454]
call fcn.1801651b0
cmp dword [0x180203454], 0xffffffff
jne 0x1801027c6
mov rax, qword [0x1801ffe98]
mov qword [0x180203428], rax
lea rcx, [0x180203454]
call fcn.180165144
mov eax, dword [rsi + r14]
cmp dword [0x18020344c], eax
jle 0x180102801
lea rcx, [0x18020344c]
call fcn.1801651b0
cmp dword [0x18020344c], 0xffffffff
jne 0x180102801
mov rax, qword [0x1801ffe98]
mov qword [0x180203440], rax
lea rcx, [0x18020344c]
call fcn.180165144
xor r13d, r13d
mov dword [rsp + 0x28], r13d
mov rcx, r15
call fcn.180083630
cmp dword [rax + 8], r13d
jle 0x180102f98
mov qword [rsp + 0x48], rbx
xor r14d, r14d
mov qword [rbp - 0x30], r14
movss xmm10, dword [0x1801d2d3c]
xorps xmm8, xmm8
movsd xmm12, qword [0x1801d2d70]
movsd xmm9, qword [0x1801d3078]
movss xmm13, dword [0x1801d2cd4]
movss xmm14, dword [0x1801d2d14]
mov rcx, r15
call fcn.180083630
mov rcx, qword [rax]
mov r12, qword [rcx + r14*8]
test r12, r12
je 0x180102f77
cmp r14, rbx
jge 0x180102f77
mov rcx, r12
call fcn.180100850
cmp qword [rax], 0
je 0x180102f77
cmp qword [0x1801fffe8], 0
je 0x1801028f6
mov rcx, r12
call fcn.1800aa7d0
cmp qword [rax], 0
je 0x1801028f6
mov eax, 0x10
mov eax, dword [rsi + rax]
cmp dword [0x1802033f4], eax
jle 0x1801028e2
lea rcx, [0x1802033f4]
call fcn.1801651b0
cmp dword [0x1802033f4], 0xffffffff
jne 0x1801028e2
mov rax, qword [0x1801fffe8]
mov qword [0x180203488], rax
lea rcx, [0x1802033f4]
call fcn.180165144
mov rbx, qword [0x180203488]
mov rcx, r12
call fcn.1800aa7d0
mov rcx, qword [rax]
call rbx
xor eax, eax
xorps xmm1, xmm1
movdqu xmmword [rbp + 0x10], xmm1
mov qword [rbp + 0x20], rax
mov r13, qword [rbp - 0x10]
mov rax, qword [rbp - 8]
mov qword [rsp + 0x40], rax
cmp r13, rax
je 0x180102f6d
nop word [rax + rax]
mov rax, qword [r13]
test rax, rax
je 0x180102f4f
mov rsi, qword [rax]
test rsi, rsi
je 0x180102f4f
mov rdx, r12
mov rcx, rsi
call fcn.180101d90
mov r14, rax
xor eax, eax
xorps xmm1, xmm1
movdqu xmmword [rbp - 0x50], xmm1
mov qword [rbp - 0x40], rax
mov rdx, r12
lea rcx, [rbp - 0x80]
call fcn.180101ff0
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x50], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rsp + 0x60], xmm1
movups xmm2, xmmword [rax + 0x20]
movups xmmword [rsp + 0x70], xmm2
mov rdx, qword [rbp - 0x48]
cmp rdx, qword [rbp - 0x40]
je 0x180102997
movups xmmword [rdx], xmm0
movups xmmword [rdx + 0x10], xmm1
movups xmmword [rdx + 0x20], xmm2
add qword [rbp - 0x48], 0x30
jmp 0x1801029a5
lea r8, [rsp + 0x50]
lea rcx, [rbp - 0x50]
call fcn.1801031d0
mov r8, r12
mov rdx, rsi
mov rcx, r15
call fcn.180102260
movzx r15d, al
test r14, r14
jne 0x1801029c4
test al, al
je 0x180102eea
cmp qword [0x180200000], 0
je 0x180102c0d
mov ebx, 0x10
cmp qword [0x1801ffe50], 0
je 0x180102c12
mov rax, qword gs:[0x58]
mov rax, qword [rax + rdi*8]
mov ecx, dword [rbx + rax]
cmp dword [0x180203490], ecx
jle 0x180102a2c
lea rcx, [0x180203490]
call fcn.1801651b0
cmp dword [0x180203490], 0xffffffff
jne 0x180102a2c
mov rax, qword [0x180200000]
mov qword [0x1802033d8], rax
lea rcx, [0x180203490]
call fcn.180165144
mov rcx, rsi
call fcn.1800581b0
test al, al
jne 0x180102c12
mov rcx, rsi
call fcn.180058350
test al, al
jne 0x180102c12
mov rcx, rsi
call fcn.1800584f0
test al, al
jne 0x180102c12
mov rcx, r12
call fcn.180100850
cmp qword [rax], 0
je 0x180102c12
mov rcx, r12
call fcn.180100850
lea rdx, [rbp + 0x28]
mov rcx, qword [rax]
call fcn.1800570c0
xor edi, edi
mov r8, qword [rbp - 0x48]
mov rcx, r8
mov r11, qword [rbp - 0x50]
sub rcx, r11
movabs r9, 0x2aaaaaaaaaaaaaab
mov rax, r9
imul rcx
sar rdx, 3
mov rax, rdx
shr rax, 0x3f
add rdx, rax
je 0x180102b98
xor ebx, ebx
nop dword [rax + rax]
cmp qword [r11 + rbx + 0x10], 0
je 0x180102b6c
mov eax, dword [0x1801ff004]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov ecx, 0x10
mov ecx, dword [rcx + rax]
cmp dword [0x180203448], ecx
jle 0x180102b22
lea rcx, [0x180203448]
call fcn.1801651b0
cmp dword [0x180203448], 0xffffffff
jne 0x180102b1e
mov rax, qword [0x1801ffe50]
mov qword [0x1802034c0], rax
lea rcx, [0x180203448]
call fcn.180165144
mov r11, qword [rbp - 0x50]
mov rcx, qword [rsi]
mov rax, qword [0x1802034c0]
mov r10, qword [rcx + rax*8]
movsxd rax, edi
lea r9, [rax + rax*2]
shl r9, 4
add r9, 0x18
add r9, r11
mov r8, qword [r11 + rbx + 0x10]
mov rdx, qword [r11 + rbx + 8]
mov rcx, rsi
call r10
test al, al
jne 0x180102c0d
mov r8, qword [rbp - 0x48]
mov r11, qword [rbp - 0x50]
movabs r9, 0x2aaaaaaaaaaaaaab
inc edi
add rbx, 0x30
mov rcx, r8
sub rcx, r11
mov rax, r9
imul rcx
sar rdx, 3
mov rax, rdx
shr rax, 0x3f
add rdx, rax
movsxd rax, edi
cmp rax, rdx
jb 0x180102ac0
test r14, r14
je 0x180102bb4
mov rcx, r14
call qword [0x1802033d8]
mov r11, qword [rbp - 0x50]
movabs r9, 0x2aaaaaaaaaaaaaab
test r11, r11
je 0x180102f4a
mov rcx, qword [rbp - 0x40]
sub rcx, r11
mov rax, r9
imul rcx
sar rdx, 3
mov rax, rdx
shr rax, 0x3f
add rdx, rax
lea rdx, [rdx + rdx*2]
shl rdx, 4
mov rax, r11
cmp rdx, 0x1000
jb 0x180102c05
add rdx, 0x27
mov r11, qword [r11 - 8]
sub rax, r11
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180102fd4
mov rcx, r11
jmp 0x180102f45
mov ebx, 0x10
test r14, r14
jne 0x180102d47
mov rax, qword [rsp + 0x30]
mov eax, dword [rax + rbx]
cmp dword [0x1802035f8], eax
jle 0x180102c6a
lea rcx, [0x1802035f8]
call fcn.1801651b0
cmp dword [0x1802035f8], 0xffffffff
jne 0x180102c6a
mov rax, qword [0x1801ffdd0]
xor r9d, r9d
lea r8, [0x1801d2990]
xor edx, edx
xor ecx, ecx
call rax
mov qword [0x180203610], rax
lea rcx, [0x1802035f8]
call fcn.180165144
mov rax, qword [rsi + 0x10]
test rax, rax
je 0x180102ca2
mov rcx, qword [0x180203610]
mov rdx, qword [0x1801ffd50]
cmp rcx, rax
je 0x180102c91
mov rax, qword [rax + rdx]
test rax, rax
jne 0x180102c81
jmp 0x180102ca2
mov rcx, r12
call fcn.1800aa7d0
cmp rsi, qword [rax]
jne 0x180102eea
test r15b, r15b
je 0x180102dcb
cmp dword [0x1801ffe14], 0x1a6
jl 0x180102d0c
xorps xmm0, xmm0
movups xmmword [rbp - 0x20], xmm0
mov dword [rbp - 0x18], 6
mov dword [rbp - 0x14], 6
lea rax, [0x1801d2148]
mov qword [rbp - 0x20], rax
lea rdx, [rbp - 0x20]
lea rcx, [rbp + 8]
call fcn.1800ffaa0
mov r9d, 0xffffffff
mov r8d, 2
lea rdx, [rbp + 8]
mov rcx, r12
call qword [0x1802033e8]
mov r14, rax
xor eax, eax
mov qword [rbp - 0x20], rax
mov qword [rbp - 0x18], rax
jmp 0x180102d26
mov r9d, 0xffffffff
mov r8b, 1
mov edx, 2
mov rcx, r12
call qword [0x180203478]
mov r14, rax
test r14, r14
je 0x180102eea
mov rdx, rsi
mov rcx, r14
cmp dword [0x1801ffe14], 0x1f4
jl 0x180102dbd
call qword [0x180203428]
mov rcx, r14
call qword [0x180203410]
test rax, rax
je 0x180102eea
comisd xmm11, xmmword [0x1801ffd70]
jbe 0x180102eea
mov rcx, qword [rsp + 0x38]
call fcn.1800fd500
movaps xmm7, xmm0
mov rcx, rsi
call fcn.180057df0
movaps xmm6, xmm10
divss xmm6, dword [rax]
movss dword [rbp - 0x28], xmm6
mov rcx, rsi
call fcn.180057ec0
movaps xmm1, xmm10
divss xmm1, dword [rax]
comiss xmm1, xmm6
jbe 0x180102e93
mov rcx, rsi
call fcn.180057ec0
movaps xmm3, xmm10
divss xmm3, dword [rax]
movss dword [rbp - 0x38], xmm3
jmp 0x180102e9b
xor r8d, r8d
call qword [0x180203440]
jmp 0x180102d47
mov rcx, rsi
call fcn.180057df0
comiss xmm10, dword [rax]
jbe 0x180102eea
call qword [0x180175418]
mov dword [rbp + 0x13c4], 0xffffffff
mov dword [rbp + 0x44], eax
mov edx, 1
nop word [rax + rax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rbp + rdx*4 + 0x44], eax
inc rdx
cmp rdx, 0x270
jb 0x180102e00
mov dword [rbp + 0x40], 0x270
movaps xmm7, xmm8
movaps xmm6, xmm12
mov ebx, 2
lea rcx, [rbp + 0x40]
call fcn.1800c2570
mov eax, eax
xorps xmm0, xmm0
cvtsi2sd xmm0, rax
subsd xmm0, xmm8
mulsd xmm0, xmm6
addsd xmm7, xmm0
mulsd xmm6, xmm9
sub rbx, 1
jne 0x180102e33
call fcn.180100920
mov rcx, rax
call fcn.1800fd500
divsd xmm7, xmm6
addsd xmm7, xmm8
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm7
mulss xmm1, xmm13
addss xmm0, xmm1
cvtss2sd xmm0, xmm0
mov rax, qword [r13]
movsd qword [rax + 0x10], xmm0
jmp 0x180102eea
movss dword [rbp - 0x38], xmm6
movaps xmm3, xmm6
xorps xmm2, xmm2
cvtss2sd xmm2, xmm7
mov rdx, qword [r13]
movaps xmm0, xmm2
subsd xmm0, qword [rdx + 0x18]
cvtpd2ps xmm1, xmm0
mulss xmm1, xmm14
movss dword [rsp + 0x2c], xmm1
lea rcx, [rbp - 0x28]
lea rax, [rsp + 0x2c]
comiss xmm6, xmm1
cmovbe rcx, rax
lea rax, [rbp - 0x38]
comiss xmm1, xmm3
cmovbe rax, rcx
movss xmm0, dword [rax]
movss dword [rdx + 0x20], xmm0
mov rax, qword [r13]
movsd qword [rax + 0x18], xmm2
mov r8, qword [rbp - 0x50]
test r8, r8
je 0x180102f4a
mov rcx, qword [rbp - 0x40]
movabs rax, 0x2aaaaaaaaaaaaaab
sub rcx, r8
imul rcx
sar rdx, 3
mov rax, rdx
shr rax, 0x3f
add rdx, rax
lea rdx, [rdx + rdx*2]
shl rdx, 4
mov rax, r8
cmp rdx, 0x1000
jb 0x180102f42
mov r8, qword [r8 - 8]
sub rax, r8
add rdx, 0x27
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180102fdb
mov rcx, r8
call fcn.180165090
mov r15, qword [rsp + 0x20]
add r13, 8
cmp r13, qword [rsp + 0x40]
mov edi, dword [0x1801ff004]
jne 0x180102920
mov rsi, qword [rsp + 0x30]
mov r14, qword [rbp - 0x30]
mov r13d, dword [rsp + 0x28]
mov rbx, qword [rsp + 0x48]
inc r13d
mov dword [rsp + 0x28], r13d
inc r14
mov qword [rbp - 0x30], r14
mov rcx, r15
call fcn.180083630
cmp r13d, dword [rax + 8]
jl 0x180102858
mov rcx, qword [rbp - 0x10]
test rcx, rcx
je 0x180102fe7
mov rdx, qword [rbp]
sub rdx, rcx
and rdx, 0xfffffffffffffff8
mov rax, rcx
cmp rdx, 0x1000
jb 0x180102fe2
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x180102fe2
call qword [0x180175aa8]
nop
call qword [0x180175aa8]
int3
call qword [0x180175aa8]
nop
call fcn.180165090
xor eax, eax
mov rcx, qword [rbp + 0x13d0]
xor rcx, rsp
call fcn.180164fa0
lea r11, [rsp + 0x1570]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
movaps xmm8, xmmword [r11 - 0x30]
movaps xmm9, xmmword [r11 - 0x40]
movaps xmm10, xmmword [r11 - 0x50]
movaps xmm11, xmmword [r11 - 0x60]
movaps xmm12, xmmword [r11 - 0x70]
movaps xmm13, xmmword [r11 - 0x80]
movaps xmm14, xmmword [r11 - 0x90]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
call fcn.1800675f0
nop
int3