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

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x120]
sub rsp, 0x220
mov rax, qword [0x14015d080]
xor rax, rsp
mov qword [rbp + 0x118], rax
mov rbx, r9
mov r14, r8
mov qword [rsp + 0x70], r8
mov qword [rsp + 0x78], rdx
mov rdi, rcx
test rcx, rcx
je 0x14003fd7f
cmp qword [rcx + 8], 0
je 0x14003fd7f
mov r15d, 4
mov rax, qword gs:[0x58]
mov rsi, qword [rax]
mov eax, dword [r15 + rsi]
cmp dword [0x140182ba8], eax
jle 0x14003e9d6
lea rcx, [0x140182ba8]
call fcn.1400c8468
cmp dword [0x140182ba8], 0xffffffff
jne 0x14003e9d6
lea rcx, [0x140182ba8]
call fcn.1400c83fc
mov eax, dword [r15 + rsi]
cmp dword [0x140183f50], eax
jle 0x14003ea55
lea rcx, [0x140183f50]
call fcn.1400c8468
cmp dword [0x140183f50], 0xffffffff
jne 0x14003ea55
call fcn.1400c766c
mov edx, eax
mov dword [0x140183f44], 0xffffffff
mov dword [0x140182bc4], eax
mov ecx, 1
lea r8, [0x140182bc4]
nop word [rax + rax]
mov eax, edx
shr eax, 0x1e
xor eax, edx
imul edx, eax, 0x6c078965
add edx, ecx
mov dword [r8 + rcx*4], edx
inc rcx
cmp rcx, 0x270
jb 0x14003ea20
mov dword [0x140182bc0], 0x270
lea rcx, [0x140183f50]
call fcn.1400c83fc
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp + 0xa0], xmm0
mov qword [rbp + 0xb0], rax
mov rax, qword [rbp + 0x188]
movss xmm0, dword [rax]
movss dword [rsp + 0x20], xmm0
movss xmm1, dword [rax + 4]
movss dword [rsp + 0x24], xmm1
movss xmm0, dword [rax + 8]
movss dword [rsp + 0x28], xmm0
lea r9, [rsp + 0x20]
movzx r8d, byte [rbp + 0x180]
lea rdx, [rbp + 0xa0]
mov rcx, rdi
call fcn.14003e480
nop
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp + 0xb8], xmm0
mov qword [rbp + 0xc8], rax
mov rcx, qword [rbp + 0xa8]
mov rdi, qword [rbp + 0xa0]
sub rcx, rdi
movabs rax, 0x2aaaaaaaaaaaaaab
imul rcx
mov r13, rdx
sar r13, 1
mov rax, r13
shr rax, 0x3f
add r13, rax
je 0x14003fdb4
movss xmm0, dword [rdi]
movss dword [rsp + 0x20], xmm0
movss xmm0, dword [rdi + 4]
movss dword [rsp + 0x24], xmm0
movss xmm0, dword [rdi + 8]
movss dword [rsp + 0x28], xmm0
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x50]
mov rcx, r14
call fcn.14003a7f0
cmp r13, 1
jbe 0x14003fdb4
movss xmm0, dword [rdi + 0xc]
movss dword [rsp + 0x20], xmm0
movss xmm0, dword [rdi + 0x10]
movss dword [rsp + 0x24], xmm0
movss xmm0, dword [rdi + 0x14]
movss dword [rsp + 0x28], xmm0
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x58]
call fcn.14003a7f0
cmp r13, 2
jbe 0x14003fdb4
movss xmm0, dword [rdi + 0x18]
movss dword [rsp + 0x20], xmm0
movss xmm0, dword [rdi + 0x1c]
movss dword [rsp + 0x24], xmm0
movss xmm0, dword [rdi + 0x20]
movss dword [rsp + 0x28], xmm0
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x60]
call fcn.14003a7f0
cmp r13, 3
jbe 0x14003fdb4
movss xmm0, dword [rdi + 0x24]
movss dword [rsp + 0x20], xmm0
movss xmm0, dword [rdi + 0x28]
movss dword [rsp + 0x24], xmm0
movss xmm0, dword [rdi + 0x2c]
movss dword [rsp + 0x28], xmm0
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x68]
call fcn.14003a7f0
mov edx, 4
call fcn.1400202f0
mov rsi, rax
mov qword [rbp + 0xb8], rax
lea r12, [rax + 0x20]
mov qword [rbp + 0xc8], r12
mov r8d, 0x20
lea rdx, [rsp + 0x50]
mov rcx, rax
call fcn.1400ca520
mov qword [rbp + 0xc0], r12
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp + 0xd0], xmm0
mov qword [rbp + 0xe0], rax
movss xmm0, dword [rdi]
movss dword [rsp + 0x20], xmm0
movss xmm1, dword [rdi + 4]
movss dword [rsp + 0x24], xmm1
movss xmm0, dword [rdi + 8]
movss dword [rsp + 0x28], xmm0
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x30]
mov rcx, r14
call fcn.14003a7f0
movss xmm0, dword [rdi + 0xc]
movss dword [rsp + 0x20], xmm0
movss xmm1, dword [rdi + 0x10]
movss dword [rsp + 0x24], xmm1
movss xmm0, dword [rdi + 0x14]
movss dword [rsp + 0x28], xmm0
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x38]
call fcn.14003a7f0
cmp r13, 5
jbe 0x14003fdd2
movss xmm0, dword [rdi + 0x3c]
movss dword [rsp + 0x20], xmm0
movss xmm0, dword [rdi + 0x40]
movss dword [rsp + 0x24], xmm0
movss xmm0, dword [rdi + 0x44]
movss dword [rsp + 0x28], xmm0
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x40]
call fcn.14003a7f0
movss xmm0, dword [rdi + 0x30]
movss dword [rsp + 0x20], xmm0
movss xmm0, dword [rdi + 0x34]
movss dword [rsp + 0x24], xmm0
movss xmm0, dword [rdi + 0x38]
movss dword [rsp + 0x28], xmm0
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x48]
call fcn.14003a7f0
mov edx, 4
call fcn.1400202f0
mov r14, rax
mov qword [rbp + 0xd0], rax
lea r15, [rax + 0x20]
mov qword [rbp + 0xe0], r15
mov r8d, 0x20
lea rdx, [rsp + 0x30]
mov rcx, rax
call fcn.1400ca520
mov qword [rbp + 0xd8], r15
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp + 0xe8], xmm0
mov qword [rbp + 0xf8], rax
movss xmm0, dword [rdi + 0x18]
movss dword [rsp + 0x20], xmm0
movss xmm1, dword [rdi + 0x1c]
movss dword [rsp + 0x24], xmm1
movss xmm0, dword [rdi + 0x20]
movss dword [rsp + 0x28], xmm0
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x50]
mov rcx, qword [rsp + 0x70]
call fcn.14003a7f0
movss xmm0, dword [rdi + 0x24]
movss dword [rsp + 0x20], xmm0
movss xmm1, dword [rdi + 0x28]
movss dword [rsp + 0x24], xmm1
movss xmm0, dword [rdi + 0x2c]
movss dword [rsp + 0x28], xmm0
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x58]
call fcn.14003a7f0
cmp r13, 7
jbe 0x14003fdd8
movss xmm0, dword [rdi + 0x54]
movss dword [rsp + 0x20], xmm0
movss xmm0, dword [rdi + 0x58]
movss dword [rsp + 0x24], xmm0
movss xmm0, dword [rdi + 0x5c]
movss dword [rsp + 0x28], xmm0
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x60]
call fcn.14003a7f0
movss xmm0, dword [rdi + 0x48]
movss dword [rsp + 0x20], xmm0
movss xmm0, dword [rdi + 0x4c]
movss dword [rsp + 0x24], xmm0
movss xmm0, dword [rdi + 0x50]
movss dword [rsp + 0x28], xmm0
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x68]
call fcn.14003a7f0
mov edx, 4
call fcn.1400202f0
mov r15, rax
mov qword [rbp + 0xe8], rax
lea r13, [rax + 0x20]
mov qword [rbp + 0xf8], r13
mov r8d, 0x20
lea rdx, [rsp + 0x50]
mov rcx, rax
call fcn.1400ca520
mov qword [rbp + 0xf0], r13
xorps xmm0, xmm0
movups xmmword [rbp + 0x100], xmm0
movss xmm0, dword [rdi + 0x30]
movss dword [rsp + 0x20], xmm0
movss xmm1, dword [rdi + 0x34]
movss dword [rsp + 0x24], xmm1
movss xmm0, dword [rdi + 0x38]
movss dword [rsp + 0x28], xmm0
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x30]
mov rcx, qword [rsp + 0x70]
call fcn.14003a7f0
movss xmm0, dword [rdi + 0x3c]
movss dword [rsp + 0x20], xmm0
movss xmm1, dword [rdi + 0x40]
movss dword [rsp + 0x24], xmm1
movss xmm0, dword [rdi + 0x44]
movss dword [rsp + 0x28], xmm0
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x38]
call fcn.14003a7f0
movss xmm0, dword [rdi + 0x48]
movss dword [rsp + 0x20], xmm0
movss xmm1, dword [rdi + 0x4c]
movss dword [rsp + 0x24], xmm1
movss xmm0, dword [rdi + 0x50]
movss dword [rsp + 0x28], xmm0
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x40]
call fcn.14003a7f0
movss xmm0, dword [rdi + 0x54]
movss dword [rsp + 0x20], xmm0
movss xmm1, dword [rdi + 0x58]
movss dword [rsp + 0x24], xmm1
movss xmm0, dword [rdi + 0x5c]
movss dword [rsp + 0x28], xmm0
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x48]
call fcn.14003a7f0
mov edx, 4
call fcn.1400202f0
mov r13, rax
mov qword [rbp + 0x100], rax
add rax, 0x20
mov qword [rbp + 0x110], rax
mov r8d, 0x20
lea rdx, [rsp + 0x30]
mov rcx, r13
call fcn.1400ca520
lea rax, [r13 + 0x20]
mov qword [rbp + 0x108], rax
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp + 0x88], xmm0
mov qword [rbp + 0x98], rax
movss xmm0, dword [rdi]
movss dword [rbp - 0x80], xmm0
movss xmm1, dword [rdi + 4]
movss dword [rbp - 0x7c], xmm1
movss xmm0, dword [rdi + 8]
movss dword [rbp - 0x78], xmm0
movss xmm1, dword [rdi + 0xc]
movss dword [rbp - 0x74], xmm1
movss xmm0, dword [rdi + 0x10]
movss dword [rbp - 0x70], xmm0
movss xmm1, dword [rdi + 0x14]
movss dword [rbp - 0x6c], xmm1
movss xmm0, dword [rdi + 0x18]
movss dword [rbp - 0x68], xmm0
movss xmm1, dword [rdi + 0x1c]
movss dword [rbp - 0x64], xmm1
movss xmm0, dword [rdi + 0x20]
movss dword [rbp - 0x60], xmm0
movss xmm1, dword [rdi + 0x24]
movss dword [rbp - 0x5c], xmm1
movss xmm0, dword [rdi + 0x28]
movss dword [rbp - 0x58], xmm0
movss xmm1, dword [rdi + 0x2c]
movss dword [rbp - 0x54], xmm1
xorps xmm0, xmm0
movdqu xmmword [rbp + 0x88], xmm0
mov qword [rbp + 0x98], rax
lea edx, [rax + 4]
call fcn.1400206d0
mov rdx, rax
mov qword [rbp + 0x88], rax
mov qword [rbp + 0x90], rax
add rax, 0x30
mov qword [rbp + 0x98], rax
lea rcx, [rbp - 0x78]
lea rax, [rbp - 0x78]
mov r8, rdx
sub r8, rax
nop dword [rax]
mov eax, dword [rcx - 8]
mov dword [rdx], eax
mov eax, dword [rcx - 4]
mov dword [r8 + rcx + 4], eax
mov eax, dword [rcx]
mov dword [r8 + rcx + 8], eax
add rdx, 0xc
lea rcx, [rcx + 0xc]
lea rax, [rcx - 8]
lea r9, [rbp - 0x50]
cmp rax, r9
jne 0x14003f020
mov qword [rbp + 0x90], rdx
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp + 0x70], xmm0
mov qword [rbp + 0x80], rax
movss xmm0, dword [rdi]
movss dword [rbp - 0x50], xmm0
movss xmm1, dword [rdi + 4]
movss dword [rbp - 0x4c], xmm1
movss xmm0, dword [rdi + 8]
movss dword [rbp - 0x48], xmm0
movss xmm1, dword [rdi + 0xc]
movss dword [rbp - 0x44], xmm1
movss xmm0, dword [rdi + 0x10]
movss dword [rbp - 0x40], xmm0
movss xmm1, dword [rdi + 0x14]
movss dword [rbp - 0x3c], xmm1
movss xmm0, dword [rdi + 0x3c]
movss dword [rbp - 0x38], xmm0
movss xmm1, dword [rdi + 0x40]
movss dword [rbp - 0x34], xmm1
movss xmm0, dword [rdi + 0x44]
movss dword [rbp - 0x30], xmm0
movss xmm1, dword [rdi + 0x30]
movss dword [rbp - 0x2c], xmm1
movss xmm0, dword [rdi + 0x34]
movss dword [rbp - 0x28], xmm0
movss xmm1, dword [rdi + 0x38]
movss dword [rbp - 0x24], xmm1
xorps xmm0, xmm0
movdqu xmmword [rbp + 0x70], xmm0
mov qword [rbp + 0x80], rax
lea edx, [rax + 4]
call fcn.1400206d0
mov rcx, rax
mov qword [rbp + 0x70], rax
mov qword [rbp + 0x78], rax
add rax, 0x30
mov qword [rbp + 0x80], rax
lea r8, [rbp - 0x4c]
sub r8, rcx
lea rdx, [rbp - 0x50]
sub rdx, rcx
mov eax, dword [rdx + rcx]
mov dword [rcx], eax
mov eax, dword [rcx + rdx + 4]
mov dword [rcx + 4], eax
mov eax, dword [rcx + r8 + 4]
mov dword [rcx + 8], eax
add rcx, 0xc
lea rax, [rdx + rcx]
lea r9, [rbp - 0x20]
cmp rax, r9
jne 0x14003f112
mov qword [rbp + 0x78], rcx
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp + 0x58], xmm0
mov qword [rbp + 0x68], rax
movss xmm0, dword [rdi + 0x18]
movss dword [rbp - 0x20], xmm0
movss xmm1, dword [rdi + 0x1c]
movss dword [rbp - 0x1c], xmm1
movss xmm0, dword [rdi + 0x20]
movss dword [rbp - 0x18], xmm0
movss xmm1, dword [rdi + 0x24]
movss dword [rbp - 0x14], xmm1
movss xmm0, dword [rdi + 0x28]
movss dword [rbp - 0x10], xmm0
movss xmm1, dword [rdi + 0x2c]
movss dword [rbp - 0xc], xmm1
movss xmm0, dword [rdi + 0x54]
movss dword [rbp - 8], xmm0
movss xmm1, dword [rdi + 0x58]
movss dword [rbp - 4], xmm1
movss xmm0, dword [rdi + 0x5c]
movss dword [rbp], xmm0
movss xmm1, dword [rdi + 0x48]
movss dword [rbp + 4], xmm1
movss xmm0, dword [rdi + 0x4c]
movss dword [rbp + 8], xmm0
movss xmm1, dword [rdi + 0x50]
movss dword [rbp + 0xc], xmm1
xorps xmm0, xmm0
movdqu xmmword [rbp + 0x58], xmm0
mov qword [rbp + 0x68], rax
lea edx, [rax + 4]
call fcn.1400206d0
mov rcx, rax
mov qword [rbp + 0x58], rax
mov qword [rbp + 0x60], rax
add rax, 0x30
mov qword [rbp + 0x68], rax
lea r8, [rbp - 0x1c]
sub r8, rcx
lea rdx, [rbp - 0x20]
sub rdx, rcx
nop word [rax + rax]
mov eax, dword [rdx + rcx]
mov dword [rcx], eax
mov eax, dword [rdx + rcx + 4]
mov dword [rcx + 4], eax
mov eax, dword [r8 + rcx + 4]
mov dword [rcx + 8], eax
add rcx, 0xc
lea rax, [rdx + rcx]
lea r9, [rbp + 0x10]
cmp rax, r9
jne 0x14003f200
mov qword [rbp + 0x60], rcx
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp + 0x40], xmm0
mov qword [rbp + 0x50], rax
movss xmm0, dword [rdi + 0x30]
movss dword [rbp + 0x10], xmm0
movss xmm1, dword [rdi + 0x34]
movss dword [rbp + 0x14], xmm1
movss xmm0, dword [rdi + 0x38]
movss dword [rbp + 0x18], xmm0
movss xmm1, dword [rdi + 0x3c]
movss dword [rbp + 0x1c], xmm1
movss xmm0, dword [rdi + 0x40]
movss dword [rbp + 0x20], xmm0
movss xmm1, dword [rdi + 0x44]
movss dword [rbp + 0x24], xmm1
movss xmm0, dword [rdi + 0x48]
movss dword [rbp + 0x28], xmm0
movss xmm1, dword [rdi + 0x4c]
movss dword [rbp + 0x2c], xmm1
movss xmm0, dword [rdi + 0x50]
movss dword [rbp + 0x30], xmm0
movss xmm1, dword [rdi + 0x54]
movss dword [rbp + 0x34], xmm1
movss xmm0, dword [rdi + 0x58]
movss dword [rbp + 0x38], xmm0
movss xmm1, dword [rdi + 0x5c]
movss dword [rbp + 0x3c], xmm1
xorps xmm0, xmm0
movdqu xmmword [rbp + 0x40], xmm0
xor edi, edi
mov qword [rbp + 0x50], rdi
lea edx, [rax + 4]
call fcn.1400206d0
mov rcx, rax
mov qword [rbp + 0x40], rax
mov qword [rbp + 0x48], rax
add rax, 0x30
mov qword [rbp + 0x50], rax
lea r8, [rbp + 0x14]
sub r8, rcx
lea rdx, [rbp + 0x10]
sub rdx, rcx
nop word [rax + rax]
mov eax, dword [rdx + rcx]
mov dword [rcx], eax
mov eax, dword [rdx + rcx + 4]
mov dword [rcx + 4], eax
mov eax, dword [r8 + rcx + 4]
mov dword [rcx + 8], eax
add rcx, 0xc
lea rax, [rdx + rcx]
lea r9, [rbp + 0x40]
cmp rax, r9
jne 0x14003f2f0
mov qword [rbp + 0x48], rcx
mov qword [rsp + 0x70], rbx
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x50], xmm0
mov edx, 4
call fcn.1400202f0
mov qword [rsp + 0x50], rax
lea rbx, [rax + 0x20]
mov qword [rsp + 0x60], rbx
mov r8d, 0x20
mov rdx, rsi
mov rcx, rax
call fcn.1400ca520
mov qword [rsp + 0x58], rbx
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x70]
call fcn.14003fe60
xorps xmm0, xmm0
test al, al
je 0x14003f578
movdqu xmmword [rsp + 0x30], xmm0
mov qword [rsp + 0x40], rdi
mov rcx, qword [rbp + 0x90]
sub rcx, qword [rbp + 0x88]
movabs rax, 0x2aaaaaaaaaaaaaab
imul rcx
mov rbx, rdx
sar rbx, 1
mov rax, rbx
shr rax, 0x3f
add rbx, rax
je 0x14003f412
movabs rax, 0x1555555555555555
cmp rbx, rax
ja 0x14003fdde
mov rdx, rbx
call fcn.1400206d0
mov rdx, rax
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x38], rax
lea rax, [rbx + rbx*2]
lea rcx, [rdx + rax*4]
mov qword [rsp + 0x40], rcx
mov rcx, qword [rbp + 0x88]
mov r8, qword [rbp + 0x90]
cmp rcx, r8
je 0x14003f40d
nop
mov eax, dword [rcx]
mov dword [rdx], eax
mov eax, dword [rcx + 4]
mov dword [rdx + 4], eax
mov eax, dword [rcx + 8]
mov dword [rdx + 8], eax
add rdx, 0xc
add rcx, 0xc
cmp rcx, r8
jne 0x14003f3f0
mov qword [rsp + 0x38], rdx
lea r8, [rsp + 0x30]
mov rbx, qword [rsp + 0x78]
mov rdx, rbx
call fcn.140040050
nop
lea rcx, [rbp + 0x40]
call fcn.14001f8f0
nop
lea rcx, [rbp + 0x58]
call fcn.14001f8f0
nop
lea rcx, [rbp + 0x70]
call fcn.14001f8f0
nop
lea rcx, [rbp + 0x88]
call fcn.14001f8f0
nop
test r13, r13
je 0x14003f496
lea rax, [r13 + 0x20]
sub rax, r13
sar rax, 3
lea rdx, [rax*8]
cmp rdx, 0x1000
jb 0x14003f48d
add rdx, 0x27
mov rcx, qword [r13 - 8]
sub r13, rcx
lea rax, [r13 - 8]
cmp rax, 0x1f
ja 0x14003fde4
mov r13, rcx
mov rcx, r13
call fcn.1400c838c
nop
test r15, r15
je 0x14003f4dc
lea rax, [r15 + 0x20]
sub rax, r15
sar rax, 3
lea rdx, [rax*8]
cmp rdx, 0x1000
jb 0x14003f4d3
add rdx, 0x27
mov rcx, qword [r15 - 8]
sub r15, rcx
lea rax, [r15 - 8]
cmp rax, 0x1f
ja 0x14003fdea
mov r15, rcx
mov rcx, r15
call fcn.1400c838c
nop
test r14, r14
je 0x14003f522
lea rax, [r14 + 0x20]
sub rax, r14
sar rax, 3
lea rdx, [rax*8]
cmp rdx, 0x1000
jb 0x14003f519
add rdx, 0x27
mov rcx, qword [r14 - 8]
sub r14, rcx
lea rax, [r14 - 8]
cmp rax, 0x1f
ja 0x14003fdf0
mov r14, rcx
mov rcx, r14
call fcn.1400c838c
nop
test rsi, rsi
je 0x14003f564
sub r12, rsi
sar r12, 3
lea rdx, [r12*8]
cmp rdx, 0x1000
jb 0x14003f55b
add rdx, 0x27
mov rcx, qword [rsi - 8]
sub rsi, rcx
lea rax, [rsi - 8]
cmp rax, 0x1f
ja 0x14003fdf6
mov rsi, rcx
mov rcx, rsi
call fcn.1400c838c
nop
lea rcx, [rbp + 0xa0]
call fcn.14001f8f0
mov rax, rbx
jmp 0x14003fd8a
movdqu xmmword [rsp + 0x50], xmm0
mov edx, 4
call fcn.1400202f0
mov qword [rsp + 0x50], rax
lea rbx, [rax + 0x20]
mov qword [rsp + 0x60], rbx
mov r8d, 0x20
mov rdx, r15
mov rcx, rax
call fcn.1400ca520
mov qword [rsp + 0x58], rbx
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x70]
call fcn.14003fe60
xorps xmm0, xmm0
test al, al
je 0x14003f7b8
movdqu xmmword [rsp + 0x30], xmm0
mov qword [rsp + 0x40], rdi
mov rcx, qword [rbp + 0x60]
sub rcx, qword [rbp + 0x58]
movabs rax, 0x2aaaaaaaaaaaaaab
imul rcx
mov rbx, rdx
sar rbx, 1
mov rax, rbx
shr rax, 0x3f
add rbx, rax
je 0x14003f665
movabs rax, 0x1555555555555555
cmp rbx, rax
ja 0x14003fdfc
mov rdx, rbx
call fcn.1400206d0
mov r8, rax
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x38], rax
lea rcx, [rbx + rbx*2]
lea rdx, [rax + rcx*4]
mov qword [rsp + 0x40], rdx
mov rcx, qword [rbp + 0x58]
mov rdx, qword [rbp + 0x60]
cmp rcx, rdx
je 0x14003f660
nop word [rax + rax]
mov eax, dword [rcx]
mov dword [r8], eax
mov eax, dword [rcx + 4]
mov dword [r8 + 4], eax
mov eax, dword [rcx + 8]
mov dword [r8 + 8], eax
add r8, 0xc
add rcx, 0xc
cmp rcx, rdx
jne 0x14003f640
mov qword [rsp + 0x38], r8
lea r8, [rsp + 0x30]
mov rbx, qword [rsp + 0x78]
mov rdx, rbx
call fcn.140040050
nop
lea rcx, [rbp + 0x40]
call fcn.14001f8f0
nop
lea rcx, [rbp + 0x58]
call fcn.14001f8f0
nop
lea rcx, [rbp + 0x70]
call fcn.14001f8f0
nop
lea rcx, [rbp + 0x88]
call fcn.14001f8f0
nop
test r13, r13
je 0x14003f6e9
lea rax, [r13 + 0x20]
sub rax, r13
sar rax, 3
lea rdx, [rax*8]
cmp rdx, 0x1000
jb 0x14003f6e0
add rdx, 0x27
mov rcx, qword [r13 - 8]
sub r13, rcx
lea rax, [r13 - 8]
cmp rax, 0x1f
ja 0x14003fe02
mov r13, rcx
mov rcx, r13
call fcn.1400c838c
nop
test r15, r15
je 0x14003f72f
lea rax, [r15 + 0x20]
sub rax, r15
sar rax, 3
lea rdx, [rax*8]
cmp rdx, 0x1000
jb 0x14003f726
add rdx, 0x27
mov rcx, qword [r15 - 8]
sub r15, rcx
lea rax, [r15 - 8]
cmp rax, 0x1f
ja 0x14003fe08
mov r15, rcx
mov rcx, r15
call fcn.1400c838c
nop
test r14, r14
je 0x14003f775
lea rax, [r14 + 0x20]
sub rax, r14
sar rax, 3
lea rdx, [rax*8]
cmp rdx, 0x1000
jb 0x14003f76c
add rdx, 0x27
mov rcx, qword [r14 - 8]
sub r14, rcx
lea rax, [r14 - 8]
cmp rax, 0x1f
ja 0x14003fe0e
mov r14, rcx
mov rcx, r14
call fcn.1400c838c
nop
test rsi, rsi
je 0x14003f564
sub r12, rsi
sar r12, 3
lea rdx, [r12*8]
cmp rdx, 0x1000
jb 0x14003f55b
add rdx, 0x27
mov rcx, qword [rsi - 8]
sub rsi, rcx
lea rax, [rsi - 8]
cmp rax, 0x1f
ja 0x14003fdba
jmp 0x14003f558
movdqu xmmword [rsp + 0x50], xmm0
mov edx, 4
call fcn.1400202f0
mov qword [rsp + 0x50], rax
lea rbx, [rax + 0x20]
mov qword [rsp + 0x60], rbx
mov r8d, 0x20
mov rdx, r14
mov rcx, rax
call fcn.1400ca520
mov qword [rsp + 0x58], rbx
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x70]
call fcn.14003fe60
xorps xmm0, xmm0
test al, al
je 0x14003f9f8
movdqu xmmword [rsp + 0x30], xmm0
mov qword [rsp + 0x40], rdi
mov rcx, qword [rbp + 0x78]
sub rcx, qword [rbp + 0x70]
movabs rax, 0x2aaaaaaaaaaaaaab
imul rcx
mov rbx, rdx
sar rbx, 1
mov rax, rbx
shr rax, 0x3f
add rbx, rax
je 0x14003f8a5
movabs rax, 0x1555555555555555
cmp rbx, rax
ja 0x14003fe14
mov rdx, rbx
call fcn.1400206d0
mov r8, rax
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x38], rax
lea rcx, [rbx + rbx*2]
lea rdx, [rax + rcx*4]
mov qword [rsp + 0x40], rdx
mov rcx, qword [rbp + 0x70]
mov rdx, qword [rbp + 0x78]
cmp rcx, rdx
je 0x14003f8a0
nop word [rax + rax]
mov eax, dword [rcx]
mov dword [r8], eax
mov eax, dword [rcx + 4]
mov dword [r8 + 4], eax
mov eax, dword [rcx + 8]
mov dword [r8 + 8], eax
add r8, 0xc
add rcx, 0xc
cmp rcx, rdx
jne 0x14003f880
mov qword [rsp + 0x38], r8
lea r8, [rsp + 0x30]
mov rbx, qword [rsp + 0x78]
mov rdx, rbx
call fcn.140040050
nop
lea rcx, [rbp + 0x40]
call fcn.14001f8f0
nop
lea rcx, [rbp + 0x58]
call fcn.14001f8f0
nop
lea rcx, [rbp + 0x70]
call fcn.14001f8f0
nop
lea rcx, [rbp + 0x88]
call fcn.14001f8f0
nop
test r13, r13
je 0x14003f929
lea rax, [r13 + 0x20]
sub rax, r13
sar rax, 3
lea rdx, [rax*8]
cmp rdx, 0x1000
jb 0x14003f920
add rdx, 0x27
mov rcx, qword [r13 - 8]
sub r13, rcx
lea rax, [r13 - 8]
cmp rax, 0x1f
ja 0x14003fe1a
mov r13, rcx
mov rcx, r13
call fcn.1400c838c
nop
test r15, r15
je 0x14003f96f
lea rax, [r15 + 0x20]
sub rax, r15
sar rax, 3
lea rdx, [rax*8]
cmp rdx, 0x1000
jb 0x14003f966
add rdx, 0x27
mov rcx, qword [r15 - 8]
sub r15, rcx
lea rax, [r15 - 8]
cmp rax, 0x1f
ja 0x14003fe20
mov r15, rcx
mov rcx, r15
call fcn.1400c838c
nop
test r14, r14
je 0x14003f9b5
lea rax, [r14 + 0x20]
sub rax, r14
sar rax, 3
lea rdx, [rax*8]
cmp rdx, 0x1000
jb 0x14003f9ac
add rdx, 0x27
mov rcx, qword [r14 - 8]
sub r14, rcx
lea rax, [r14 - 8]
cmp rax, 0x1f
ja 0x14003fe26
mov r14, rcx
mov rcx, r14
call fcn.1400c838c
nop
test rsi, rsi
je 0x14003f564
sub r12, rsi
sar r12, 3
lea rdx, [r12*8]
cmp rdx, 0x1000
jb 0x14003f55b
add rdx, 0x27
mov rcx, qword [rsi - 8]
sub rsi, rcx
lea rax, [rsi - 8]
cmp rax, 0x1f
ja 0x14003fdc0
jmp 0x14003f558
movdqu xmmword [rsp + 0x50], xmm0
mov edx, 4
call fcn.1400202f0
mov qword [rsp + 0x50], rax
lea rbx, [rax + 0x20]
mov qword [rsp + 0x60], rbx
mov r8d, 0x20
mov rdx, r13
mov rcx, rax
call fcn.1400ca520
mov qword [rsp + 0x58], rbx
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x70]
call fcn.14003fe60
test al, al
je 0x14003fc38
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x30], xmm0
mov qword [rsp + 0x40], rdi
mov rcx, qword [rbp + 0x48]
sub rcx, qword [rbp + 0x40]
movabs rax, 0x2aaaaaaaaaaaaaab
imul rcx
mov rbx, rdx
sar rbx, 1
mov rax, rbx
shr rax, 0x3f
add rbx, rax
je 0x14003fae5
movabs rax, 0x1555555555555555
cmp rbx, rax
ja 0x14003fe2c
mov rdx, rbx
call fcn.1400206d0
mov r8, rax
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x38], rax
lea rcx, [rbx + rbx*2]
lea rdx, [rax + rcx*4]
mov qword [rsp + 0x40], rdx
mov rcx, qword [rbp + 0x40]
mov rdx, qword [rbp + 0x48]
cmp rcx, rdx
je 0x14003fae0
nop word [rax + rax]
mov eax, dword [rcx]
mov dword [r8], eax
mov eax, dword [rcx + 4]
mov dword [r8 + 4], eax
mov eax, dword [rcx + 8]
mov dword [r8 + 8], eax
add r8, 0xc
add rcx, 0xc
cmp rcx, rdx
jne 0x14003fac0
mov qword [rsp + 0x38], r8
lea r8, [rsp + 0x30]
mov rbx, qword [rsp + 0x78]
mov rdx, rbx
call fcn.140040050
nop
lea rcx, [rbp + 0x40]
call fcn.14001f8f0
nop
lea rcx, [rbp + 0x58]
call fcn.14001f8f0
nop
lea rcx, [rbp + 0x70]
call fcn.14001f8f0
nop
lea rcx, [rbp + 0x88]
call fcn.14001f8f0
nop
test r13, r13
je 0x14003fb69
lea rax, [r13 + 0x20]
sub rax, r13
sar rax, 3
lea rdx, [rax*8]
cmp rdx, 0x1000
jb 0x14003fb60
add rdx, 0x27
mov rcx, qword [r13 - 8]
sub r13, rcx
lea rax, [r13 - 8]
cmp rax, 0x1f
ja 0x14003fe32
mov r13, rcx
mov rcx, r13
call fcn.1400c838c
nop
test r15, r15
je 0x14003fbaf
lea rax, [r15 + 0x20]
sub rax, r15
sar rax, 3
lea rdx, [rax*8]
cmp rdx, 0x1000
jb 0x14003fba6
add rdx, 0x27
mov rcx, qword [r15 - 8]
sub r15, rcx
lea rax, [r15 - 8]
cmp rax, 0x1f
ja 0x14003fe38
mov r15, rcx
mov rcx, r15
call fcn.1400c838c
nop
test r14, r14
je 0x14003fbf5
lea rax, [r14 + 0x20]
sub rax, r14
sar rax, 3
lea rdx, [rax*8]
cmp rdx, 0x1000
jb 0x14003fbec
add rdx, 0x27
mov rcx, qword [r14 - 8]
sub r14, rcx
lea rax, [r14 - 8]
cmp rax, 0x1f
ja 0x14003fe3e
mov r14, rcx
mov rcx, r14
call fcn.1400c838c
nop
test rsi, rsi
je 0x14003f564
sub r12, rsi
sar r12, 3
lea rdx, [r12*8]
cmp rdx, 0x1000
jb 0x14003f55b
add rdx, 0x27
mov rcx, qword [rsi - 8]
sub rsi, rcx
lea rax, [rsi - 8]
cmp rax, 0x1f
ja 0x14003fdc6
jmp 0x14003f558
mov rbx, qword [rsp + 0x78]
mov qword [rbx], rdi
mov dword [rbx + 8], edi
lea rcx, [rbp + 0x40]
call fcn.14001f8f0
nop
lea rcx, [rbp + 0x58]
call fcn.14001f8f0
nop
lea rcx, [rbp + 0x70]
call fcn.14001f8f0
nop
lea rcx, [rbp + 0x88]
call fcn.14001f8f0
nop
test r13, r13
je 0x14003fcb4
lea rax, [r13 + 0x20]
sub rax, r13
sar rax, 3
lea rdx, [rax*8]
cmp rdx, 0x1000
jb 0x14003fcab
add rdx, 0x27
mov rcx, qword [r13 - 8]
sub r13, rcx
lea rax, [r13 - 8]
cmp rax, 0x1f
ja 0x14003fe44
mov r13, rcx
mov rcx, r13
call fcn.1400c838c
nop
test r15, r15
je 0x14003fcfa
lea rax, [r15 + 0x20]
sub rax, r15
sar rax, 3
lea rdx, [rax*8]
cmp rdx, 0x1000
jb 0x14003fcf1
add rdx, 0x27
mov rcx, qword [r15 - 8]
sub r15, rcx
lea rax, [r15 - 8]
cmp rax, 0x1f
ja 0x14003fe4a
mov r15, rcx
mov rcx, r15
call fcn.1400c838c
nop
test r14, r14
je 0x14003fd40
lea rax, [r14 + 0x20]
sub rax, r14
sar rax, 3
lea rdx, [rax*8]
cmp rdx, 0x1000
jb 0x14003fd37
add rdx, 0x27
mov rcx, qword [r14 - 8]
sub r14, rcx
lea rax, [r14 - 8]
cmp rax, 0x1f
ja 0x14003fe50
mov r14, rcx
mov rcx, r14
call fcn.1400c838c
nop
test rsi, rsi
je 0x14003f564
sub r12, rsi
sar r12, 3
lea rdx, [r12*8]
cmp rdx, 0x1000
jb 0x14003f55b
add rdx, 0x27
mov rcx, qword [rsi - 8]
sub rsi, rcx
lea rax, [rsi - 8]
cmp rax, 0x1f
ja 0x14003fdcc
jmp 0x14003f558
xor eax, eax
mov qword [rdx], rax
mov dword [rdx + 8], eax
mov rax, rdx
mov rcx, qword [rbp + 0x118]
xor rcx, rsp
call fcn.1400c80e0
mov rbx, qword [rsp + 0x270]
add rsp, 0x220
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.1400207f0
nop
call fcn.1400cf09c
int3
call fcn.1400cf09c
int3
call fcn.1400cf09c
int3
call fcn.1400cf09c
nop
call fcn.1400207f0
nop
call fcn.1400207f0
nop
call fcn.140006440
nop
call fcn.1400cf09c
nop
call fcn.1400cf09c
nop
call fcn.1400cf09c
nop
call fcn.1400cf09c
nop
call fcn.140006440
nop
call fcn.1400cf09c
nop
call fcn.1400cf09c
nop
call fcn.1400cf09c
nop
call fcn.140006440
nop
call fcn.1400cf09c
nop
call fcn.1400cf09c
nop
call fcn.1400cf09c
nop
call fcn.140006440
nop
call fcn.1400cf09c
nop
call fcn.1400cf09c
nop
call fcn.1400cf09c
nop
call fcn.1400cf09c
nop
call fcn.1400cf09c
nop
call fcn.1400cf09c
int3