Function at 0x1800664f0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov rbx, r9
mov rdi, r8
mov rsi, rdx
mov r14, qword [rsp + 0xd0]
mov rax, qword [0x1804a9038]
xor rax, rsp
mov qword [rsp + 0x60], rax
lea rdx, [0x18041b2e8]
mov r8d, 0x180
mov rcx, rsi
call fcn.1803665d0
xor r12d, r12d
mov r8d, 0x178
mov rcx, rsi
xor edx, edx
call fcn.180366c80
mov cl, byte [r14 + 0x164]
mov eax, 0
test cl, 8
je 0x180066651
mov r8, qword [r14 + 0xf8]
test r8, r8
je 0x180066651
mov rax, r8
shr rax, 1
movabs rdx, 0x5555555555555555
and rdx, rax
mov rax, r8
sub rax, rdx
movabs rdx, 0x3333333333333333
mov r9, rax
and r9, rdx
shr rax, 2
and rax, rdx
add rax, r9
mov rdx, rax
shr rdx, 4
add rdx, rax
movabs rax, 0xf0f0f0f0f0f0f0f
and rax, rdx
movabs r9, 0x101010101010101
imul r9, rax
shr r9, 0x38
cmp r9, 1
jbe 0x1800665e7
mov ebp, 3
cmp r8, 3
ja 0x1800665ee
mov al, 3
movzx eax, al
div r8b
movzx ebp, ah
jmp 0x1800665ee
lea ebp, [r8 - 1]
and ebp, 3
mov rax, qword [r14 + 0xf0]
mov rdx, qword [rax + rbp*8]
mov eax, 0
test rdx, rdx
je 0x180066651
mov r10, qword [rdx]
test r10, r10
je 0x180066651
lea r11, [r8 - 1]
jmp 0x180066620
cmp dword [r10 + 0x10], 3
je 0x180066649
mov r10, qword [r10]
test r10, r10
je 0x18006664f
mov rax, qword [r10 + 8]
cmp rax, 3
je 0x180066611
cmp r9d, 1
ja 0x18006663a
and rax, r11
cmp rax, rbp
je 0x180066618
jmp 0x18006664f
cmp rax, r8
jb 0x180066633
xor edx, edx
div r8
mov rax, rdx
jmp 0x180066633
mov eax, dword [r10 + 0x1c]
jmp 0x180066651
xor eax, eax
mov dword [rsi + 0xc], eax
test cl, 0x10
je 0x1800667aa
mov rcx, qword [r14 + 0xf8]
test rcx, rcx
je 0x1800667aa
mov rax, rcx
shr rax, 1
movabs rdx, 0x5555555555555555
and rdx, rax
mov rax, rcx
sub rax, rdx
movabs rdx, 0x3333333333333333
mov r8, rax
and r8, rdx
shr rax, 2
and rax, rdx
add rax, r8
mov rdx, rax
shr rdx, 4
add rdx, rax
movabs rax, 0xf0f0f0f0f0f0f0f
and rax, rdx
movabs r8, 0x101010101010101
imul r8, rax
shr r8, 0x38
cmp r8, 1
jbe 0x1800666e6
mov ebp, 4
cmp rcx, 4
ja 0x1800666ec
mov al, 4
movzx eax, al
div cl
movzx ebp, ah
jmp 0x1800666ec
lea ebp, [rcx - 1]
and ebp, 4
mov rax, qword [r14 + 0xf0]
mov rax, qword [rax + rbp*8]
test rax, rax
je 0x1800667aa
mov r9, qword [rax]
test r9, r9
je 0x1800667aa
lea r10, [rcx - 1]
jmp 0x180066725
cmp dword [r9 + 0x10], 4
je 0x18006674e
mov r9, qword [r9]
test r9, r9
je 0x1800667a7
mov rax, qword [r9 + 8]
cmp rax, 4
je 0x180066712
cmp r8d, 1
ja 0x18006673f
and rax, r10
cmp rax, rbp
je 0x180066719
jmp 0x1800667a7
cmp rax, rcx
jb 0x180066738
xor edx, edx
div rcx
mov rax, rdx
jmp 0x180066738
mov r12d, dword [r9 + 0x1c]
jmp 0x1800667aa
lea rcx, [rsi + 0x168]
call fcn.180010a80
test al, al
je 0x18006677c
mov al, byte [rdi + 0x17]
mov ecx, eax
xor cl, 1
mov byte [rsi + 0x16d], cl
test al, al
jne 0x180066932
jmp 0x180066783
mov byte [rsi + 0x16d], 1
mov dword [rsi + 0x170], 0
movss xmm0, dword [0x1803dda24]
jmp 0x18006692a
mov qword [rsi], 0
xor eax, eax
xor ecx, ecx
jmp 0x1800667dd
xor r12d, r12d
mov r14, qword [rsp + 0xd8]
lea r15, [rdi + 0x68]
mov dword [rsi + 0x10], r12d
test rbx, rbx
je 0x18006679a
mov eax, dword [rbx + 0x18]
mov ecx, dword [rbx + 0x148]
shl rcx, 0x20
or rax, rcx
mov qword [rsi], rax
mov rax, qword [r15]
mov eax, dword [rax]
mov cl, byte [rbx + 0x270]
mov dword [rsi + 8], eax
mov byte [rsi + 0x19], cl
mov al, byte [rdi + 0x1e1]
mov byte [rsi + 0x155], al
mov rcx, r15
mov rdx, r14
call fcn.180063100
mov byte [rsi + 0x18], al
mov rcx, r15
mov rdx, r14
call fcn.180063140
test al, al
je 0x180066869
mov byte [rsi + 0x1a], 1
movups xmm0, xmmword [rdi + 0x84]
mov eax, dword [rdi + 0x94]
mov ecx, dword [rdi + 0x98]
movups xmmword [rsi + 0x1c], xmm0
mov edx, 0xff
cmp eax, edx
setne byte [rsi + 0x2c]
cmp cl, 0xff
setne byte [rsi + 0x2d]
test ecx, ecx
setne byte [rsi + 0x2e]
movaps xmm0, xmmword [rdi + 0xa0]
mov eax, dword [rdi + 0xb0]
mov ecx, dword [rdi + 0xb4]
movups xmmword [rsi + 0x30], xmm0
cmp eax, edx
setne byte [rsi + 0x40]
cmp cl, 0xff
setne byte [rsi + 0x41]
test ecx, ecx
setne byte [rsi + 0x42]
mov bpl, byte [rsp + 0xe0]
mov rcx, r14
call fcn.1800623c0
mov dword [rsi + 0x168], eax
mov rcx, r15
mov rdx, r14
call fcn.180063160
mov byte [rsi + 0x45], al
movss xmm0, dword [rdi + 0x78]
movss dword [rsi + 0x15c], xmm0
movss xmm0, dword [rdi + 0x7c]
movss dword [rsi + 0x160], xmm0
mov rcx, r15
mov rdx, r14
call fcn.180063120
test al, al
je 0x180066932
mov byte [rsi + 0x44], 1
mov eax, dword [rdi + 0x80]
mov dword [rsi + 0x14], eax
mov al, byte [rdi + 0x16]
xorps xmm0, xmm0
xorps xmm1, xmm1
test al, al
je 0x1800668d5
movss xmm1, dword [rdi + 0x30]
mov cl, 1
ucomiss xmm1, xmm0
jne 0x1800668f6
jp 0x1800668f6
xorps xmm1, xmm1
test al, al
je 0x1800668ea
movss xmm1, dword [rdi + 0x34]
cmpneqss xmm1, xmm0
movd ecx, xmm1
and ecx, 1
mov byte [rsi + 0x16c], cl
cmp byte [rdi + 0x13], 0
je 0x180066754
mov byte [rsi + 0x16d], 1
movss xmm0, dword [rdi + 0x5c]
movss xmm1, dword [rdi + 0x60]
movaps xmm2, xmm0
minss xmm2, xmm1
movss dword [rsi + 0x170], xmm2
maxss xmm0, xmm1
movss dword [rsi + 0x174], xmm0
xor r15d, r15d
mov byte [rsi + 0x46], bpl
test rbx, rbx
mov qword [rsp + 0x30], rbx
je 0x180066ab0
mov bl, byte [rbx + 0x1c8]
and bl, 1
mov qword [rsp + 0x38], rdi
lea r12, [rdi + 0xc0]
lea rdi, [rsi + 0x48]
lea r13, [rsp + 0x44]
xor ebp, ebp
mov rcx, r12
mov edx, ebp
mov r8, r14
call fcn.180063720
mov ecx, r15d
shl eax, cl
or dword [rsi + 0x128], eax
mov rcx, r14
mov edx, ebp
call fcn.180062370
mov dword [rsi + rbp*4 + 0x12c], eax
mov byte [rsp + 0x20], bl
mov rcx, r12
mov rdx, r13
mov r8d, ebp
mov r9, r14
call fcn.180063310
movups xmm0, xmmword [rsp + 0x44]
movups xmm1, xmmword [rsp + 0x50]
movups xmmword [rdi + 0xc], xmm1
movups xmmword [rdi], xmm0
inc rbp
add rdi, 0x1c
add r15d, 4
cmp rbp, 8
jne 0x180066967
mov rbx, qword [rsp + 0x38]
mov r8d, dword [rbx + 0x20]
mov rcx, rbx
mov dl, 1
call fcn.180062a40
cmp dword [rbx + 0x28], 2
mov edx, dword [rbx + 0x1e4]
setne cl
xor al, 1
or al, cl
cmp edx, 2
setae cl
and cl, al
mov dword [rsi + 0x14c], edx
mov eax, dword [rbx + 0x1e8]
mov dword [rsi + 0x150], eax
mov byte [rsi + 0x154], cl
mov r14, qword [rsp + 0x30]
test r14, r14
je 0x180066b57
mov r8, qword [r14 + 0xd0]
test r8, r8
je 0x180066b57
mov rax, r8
shr rax, 1
movabs rdx, 0x5555555555555555
and rdx, rax
mov rax, r8
sub rax, rdx
movabs rdx, 0x3333333333333333
mov r9, rax
and r9, rdx
shr rax, 2
and rax, rdx
add rax, r9
mov rdx, rax
shr rdx, 4
add rdx, rax
movabs rax, 0xf0f0f0f0f0f0f0f
and rax, rdx
movabs r9, 0x101010101010101
imul r9, rax
shr r9, 0x38
cmp r9, 1
ja 0x180066ab7
lea ebp, [r8 - 1]
and ebp, 0x12
mov r10, qword [r14 + 0xc8]
mov rax, qword [r10 + rbp*8]
test rax, rax
je 0x180066b07
mov r11, qword [rax]
test r11, r11
je 0x180066b07
lea rdi, [r8 - 1]
jmp 0x180066ade
xor ebx, ebx
jmp 0x180066950
mov ebp, 0x12
cmp r8, 0x12
ja 0x180066a92
mov al, 0x12
movzx eax, al
div r8b
movzx ebp, ah
jmp 0x180066a92
cmp dword [r11 + 0x10], 0x12
je 0x180066b46
mov r11, qword [r11]
test r11, r11
je 0x180066b07
mov rax, qword [r11 + 8]
cmp rax, 0x12
je 0x180066acf
cmp r9d, 1
ja 0x180066af8
and rax, rdi
cmp rax, rbp
je 0x180066ad6
jmp 0x180066b07
cmp rax, r8
jb 0x180066af1
xor edx, edx
div r8
mov rax, rdx
jmp 0x180066af1
cmp r9d, 1
jbe 0x180066b25
mov ebp, 0x13
cmp r8, 0x13
ja 0x180066b2c
mov al, 0x13
movzx eax, al
div r8b
movzx ebp, ah
jmp 0x180066b2c
lea ebp, [r8 - 1]
and ebp, 0x13
mov rax, qword [r10 + rbp*8]
test rax, rax
je 0x180066b57
mov r10, qword [rax]
test r10, r10
je 0x180066b57
lea r11, [r8 - 1]
jmp 0x180066be9
mov byte [rsi + 0x157], 1
movss xmm0, dword [0x1803dda24]
jmp 0x180066b6b
mov al, byte [rbx + 0x1e0]
mov byte [rsi + 0x157], al
movss xmm0, dword [rbx + 0x1ec]
test r14, r14
sete al
movss dword [rsi + 0x158], xmm0
xor cl, 1
or cl, al
jne 0x180066b92
mov al, byte [r14 + 0x1c8]
shr al, 2
and al, 1
mov byte [rsi + 0x156], al
mov eax, dword [rbx + 0x1c]
mov dword [rsi + 0x164], eax
xor eax, eax
xor ecx, ecx
xor ecx, dword [rsi + rax*4]
inc rax
cmp rax, 0x5e
jne 0x180066b9f
mov dword [rsi + 0x178], ecx
mov rcx, qword [rsp + 0x60]
xor rcx, rsp
call fcn.180364a40
mov rax, rsi
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp dword [r10 + 0x10], 0x13
je 0x180066b46
mov r10, qword [r10]
test r10, r10
je 0x180066b57
mov rax, qword [r10 + 8]
cmp rax, 0x13
je 0x180066bd2
cmp r9d, 1
ja 0x180066c06
and rax, r11
cmp rax, rbp
je 0x180066bdd
jmp 0x180066b57
cmp rax, r8
jb 0x180066bfc
xor edx, edx
div r8
mov rax, rdx
jmp 0x180066bfc