Function at 0x18007c2d0
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
mov rax, rsp
mov qword [rax + 0x20], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rax - 0xc8]
sub rsp, 0x190
movaps xmmword [rax - 0x48], xmm6
movaps xmmword [rax - 0x58], xmm7
movaps xmmword [rax - 0x68], xmm8
movaps xmmword [rax - 0x78], xmm9
movaps xmmword [rax - 0x88], xmm10
movaps xmmword [rax - 0x98], xmm11
movaps xmmword [rax - 0xa8], xmm12
movaps xmmword [rax - 0xb8], xmm14
movaps xmmword [rax - 0xc8], xmm15
mov rax, qword [0x1802ec4c0]
xor rax, rsp
mov qword [rbp - 0x10], rax
movzx r13d, r9b
movaps xmm6, xmm2
movaps xmm9, xmm1
movss dword [rsp + 0x68], xmm9
movsxd r12, ecx
xorps xmm0, xmm0
movups xmmword [rbp - 0x30], xmm0
mov qword [rbp - 0x20], 8
mov qword [rbp - 0x18], 0xf
movabs rax, 0x4955476b63696c43
mov qword [rbp - 0x30], rax
mov byte [rbp - 0x28], 0
movabs rdi, 0xcbf29ce484222325
mov rcx, rdi
xor edx, edx
movabs rbx, 0x100000001b3
nop
movzx eax, byte [rbp + rdx - 0x30]
xor rcx, rax
imul rcx, rbx
inc rdx
cmp rdx, 8
jb 0x18007c390
mov qword [rsp + 0x60], rcx
lea rdx, [rsp + 0x60]
call fcn.180134530
mov rcx, qword [rax + 8]
test rcx, rcx
je 0x18007c3c1
lock inc dword [rcx + 8]
mov r8, qword [rax]
mov qword [rsp + 0x50], r8
mov r14, qword [rax + 8]
mov qword [rsp + 0x58], r14
xorps xmm0, xmm0
movups xmmword [rbp - 0x70], xmm0
mov qword [rbp - 0x60], 0xf
mov qword [rbp - 0x58], 0xf
movsd xmm0, qword [str.colors_primary3]
movsd qword [rbp - 0x70], xmm0
mov eax, dword [0x1802a2510]
mov dword [rbp - 0x68], eax
movzx eax, word [0x1802a2514]
mov word [rbp - 0x64], ax
movzx eax, byte [0x1802a2516]
mov byte [rbp - 0x62], al
mov byte [rbp - 0x61], 0
mov rcx, rdi
xor edx, edx
nop dword [rax]
movzx eax, byte [rbp + rdx - 0x70]
xor rcx, rax
imul rcx, rbx
inc rdx
cmp rdx, 0xf
jb 0x18007c420
mov rax, qword [r8 + 0xa0]
and rax, rcx
add rax, rax
mov rsi, qword [r8 + 0x88]
mov rbx, qword [rsi + rax*8 + 8]
mov r15, qword [r8 + 0x78]
cmp rbx, r15
je 0x18007c493
mov rsi, qword [rsi + rax*8]
nop dword [rax + rax]
lea rdx, [rbx + 0x10]
mov rax, qword [rdx + 0x10]
cmp qword [rdx + 0x18], 0xf
jbe 0x18007c472
mov rdx, qword [rdx]
cmp rax, 0xf
jne 0x18007c488
mov r8, rax
lea rcx, [rbp - 0x70]
call fcn.180245950
test eax, eax
je 0x18007c495
cmp rbx, rsi
je 0x18007c493
mov rbx, qword [rbx + 8]
jmp 0x18007c460
xor ebx, ebx
test rbx, rbx
je 0x18007c4a5
cmp rbx, r15
je 0x18007c4a5
mov rdx, qword [rbx + 0x30]
jmp 0x18007c4a7
xor edx, edx
add rdx, 0x28
lea rcx, [rsp + 0x70]
call fcn.180085120
movups xmm0, xmmword [rax]
movups xmmword [rbp - 0x30], xmm0
test r14, r14
je 0x18007c4f6
mov esi, 0xffffffff
mov eax, esi
lock xadd dword [r14 + 8], eax
cmp eax, 1
jne 0x18007c4f6
mov rbx, qword [rsp + 0x58]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
lock xadd dword [rbx + 0xc], esi
cmp esi, 1
jne 0x18007c4f6
mov rcx, qword [rsp + 0x58]
mov rax, qword [rcx]
call qword [rax + reloc.d2d1.dll_Ordinal_8]
nop
xorps xmm0, xmm0
movups xmmword [rbp - 0x50], xmm0
mov qword [rbp - 0x40], 8
mov qword [rbp - 0x38], 0xf
movabs r15, 0x4955476b63696c43
mov qword [rbp - 0x50], r15
mov byte [rbp - 0x48], 0
mov rcx, rdi
xor edx, edx
movabs r14, 0x100000001b3
nop
movzx eax, byte [rbp + rdx - 0x50]
xor rcx, rax
imul rcx, r14
inc rdx
cmp rdx, 8
jb 0x18007c530
mov qword [rsp + 0x60], rcx
lea rdx, [rsp + 0x60]
call fcn.180134530
mov rcx, qword [rax + 8]
test rcx, rcx
je 0x18007c561
lock inc dword [rcx + 8]
mov rcx, qword [rax]
mov qword [rsp + 0x70], rcx
mov rbx, qword [rax + 8]
mov qword [rsp + 0x78], rbx
lea rsi, [rcx + 0x70]
xorps xmm0, xmm0
movups xmmword [rbp - 0x70], xmm0
mov qword [rbp - 0x60], 0xf
mov qword [rbp - 0x58], 0xf
movsd xmm0, qword [str.colors_primary1]
movsd qword [rbp - 0x70], xmm0
mov eax, dword [0x1802a2538]
mov dword [rbp - 0x68], eax
movzx eax, word [0x1802a253c]
mov word [rbp - 0x64], ax
movzx eax, byte [0x1802a253e]
mov byte [rbp - 0x62], al
mov byte [rbp - 0x61], 0
mov r9, rdi
xor ecx, ecx
movzx eax, byte [rbp + rcx - 0x70]
xor r9, rax
imul r9, r14
inc rcx
cmp rcx, 0xf
jb 0x18007c5c1
lea r8, [rbp - 0x70]
lea rdx, [rbp - 0x80]
mov rcx, rsi
call fcn.18004b0e0
mov rcx, qword [rax + 8]
test rcx, rcx
je 0x18007c5fb
cmp rcx, qword [rsi + 8]
je 0x18007c5fb
mov rdx, qword [rcx + 0x30]
jmp 0x18007c5fd
xor edx, edx
add rdx, 0x28
lea rcx, [rsp + 0x50]
call fcn.180085120
movups xmm0, xmmword [rax]
movups xmmword [rbp - 0x80], xmm0
test rbx, rbx
je 0x18007c620
mov rcx, rbx
call fcn.180003820
nop
xorps xmm0, xmm0
movups xmmword [rbp - 0x50], xmm0
mov qword [rbp - 0x40], 8
mov qword [rbp - 0x38], 0xf
mov qword [rbp - 0x50], r15
mov byte [rbp - 0x48], 0
xor ecx, ecx
movzx eax, byte [rbp + rcx - 0x50]
xor rdi, rax
imul rdi, r14
inc rcx
cmp rcx, 8
jb 0x18007c641
mov qword [rsp + 0x60], rdi
lea rdx, [rsp + 0x60]
call fcn.180134530
mov rcx, qword [rax + 8]
test rcx, rcx
je 0x18007c672
lock inc dword [rcx + 8]
mov rcx, qword [rax]
mov qword [rsp + 0x70], rcx
mov rbx, qword [rax + 8]
mov qword [rsp + 0x78], rbx
add rcx, 0x70
xorps xmm0, xmm0
movups xmmword [rbp - 0x70], xmm0
movdqa xmm1, xmmword [0x1802b8660]
movdqu xmmword [rbp - 0x60], xmm1
movsd xmm0, qword [str.colors_primary2]
movsd qword [rbp - 0x70], xmm0
mov eax, dword [0x1802a25c0]
mov dword [rbp - 0x68], eax
movzx eax, word [0x1802a25c4]
mov word [rbp - 0x64], ax
movzx eax, byte [0x1802a25c6]
mov byte [rbp - 0x62], al
mov byte [rbp - 0x61], 0
lea rdx, [rbp - 0x70]
call fcn.180044ae0
lea rdx, [rax + 0x28]
lea rcx, [rsp + 0x50]
call fcn.180085120
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x70], xmm0
test rbx, rbx
je 0x18007c6f7
mov rcx, rbx
call fcn.180003820
nop
movss xmm2, dword [0x180343f60]
movss dword [rsp + 0x60], xmm2
mov rbx, r12
shl rbx, 4
mov rax, qword [0x18034e5d0]
movss dword [rax + rbx + 0xc], xmm2
movzx edi, byte [0x180343f40]
test dil, dil
je 0x18007c79f
xor ecx, ecx
mov dword [rsp + 0x40], ecx
mov eax, dword [0x180343f64]
inc eax
test eax, eax
jle 0x18007c79f
xor edx, edx
xorps xmm7, xmm7
nop dword [rax]
cmp edx, dword [0x180343f44]
jg 0x18007c77e
lea r8, [rsp + 0x40]
lea rdx, [rsp + 0x50]
call fcn.18005e370
mov rcx, qword [rax]
movss xmm0, dword [rcx + 0x14]
comiss xmm0, xmm7
jbe 0x18007c77a
lea r8, [rsp + 0x40]
lea rdx, [rbp - 0x70]
call fcn.18005e370
mov rcx, qword [rax]
addss xmm6, dword [rcx + 0x14]
mov ecx, dword [rsp + 0x40]
inc ecx
mov dword [rsp + 0x40], ecx
mov edx, ecx
mov eax, dword [0x180343f64]
inc eax
cmp ecx, eax
jl 0x18007c740
movzx edi, byte [0x180343f40]
movss xmm2, dword [rsp + 0x60]
mov qword [rbp - 0x40], 6
mov qword [rbp - 0x38], 0xf
mov ecx, dword [str.height]
movzx eax, word [0x1802a1e88]
mov byte [rbp - 0x4a], 0
movss xmm8, dword [0x1802f8f0c]
cmp ecx, 0x67696568
jne 0x18007c7e6
cmp ax, 0x7468
jne 0x18007c7e6
movaps xmm10, xmm8
mulss xmm10, dword [0x1802b8074]
jmp 0x18007c7ed
movss xmm10, dword [rsp + 0x68]
mov qword [rbp - 0x40], 6
mov qword [rbp - 0x38], 0xf
mov byte [rbp - 0x4a], 0
cmp ecx, 0x67696568
jne 0x18007c81d
cmp ax, 0x7468
jne 0x18007c81d
movaps xmm7, xmm8
mulss xmm7, dword [0x1802b803c]
jmp 0x18007c823
movss xmm7, dword [rsp + 0x68]
movaps xmm0, xmm7
mulss xmm0, dword [0x1802b819c]
subss xmm6, xmm0
mulss xmm8, dword [0x1802b83d4]
divss xmm8, dword [0x1802b8474]
test dil, dil
je 0x18007c850
mov byte [0x180343f40], 0
movss xmm3, dword [0x1802ed1c0]
movss xmm11, dword [0x1802b80a0]
movss dword [rsp + 0x5c], xmm2
mov rax, qword [0x18034e5d0]
lea r8, [rsp + 0x50]
lea rdx, [rbp - 0x30]
lea rcx, [rbp - 0x70]
mulss xmm3, xmm11
test r13b, r13b
je 0x18007c89c
movss xmm0, dword [rbp - 0x80]
movss dword [rsp + 0x50], xmm0
movss xmm1, dword [rbp - 0x7c]
movss xmm0, dword [rbp - 0x78]
jmp 0x18007c8b1
movss xmm0, dword [rbp - 0x30]
movss dword [rsp + 0x50], xmm0
movss xmm1, dword [rbp - 0x2c]
movss xmm0, dword [rbp - 0x28]
movss dword [rsp + 0x58], xmm0
movups xmm0, xmmword [rax + rbx]
movss dword [rsp + 0x54], xmm1
movaps xmmword [rbp - 0x30], xmm0
call fcn.180084db0
movups xmm1, xmmword [rax]
mov rax, qword [0x18034e5d0]
movups xmmword [rax + rbx], xmm1
cmp byte [rbp + 0xf0], 0
je 0x18007c8ea
lea rax, [0x180343f50]
jmp 0x18007c8f4
mov rax, qword [0x18034e5d0]
add rax, rbx
movups xmm0, xmmword [rax]
movaps xmmword [rbp - 0x30], xmm0
mov dword [rsp + 0x38], 0xf0
movss dword [rsp + 0x28], xmm8
movss dword [rsp + 0x20], xmm7
movaps xmm3, xmm10
lea r8, [rbp - 0x30]
movaps xmm1, xmm6
movaps xmm0, xmm9
call fcn.18007f8c0
movaps xmm9, xmm7
mulss xmm9, dword [0x1802b81d4]
movaps xmm14, xmm9
mulss xmm14, dword [0x1802b8114]
movaps xmm15, xmm9
mulss xmm15, dword [0x1802b80d0]
movss xmm12, dword [0x1802f8f0c]
mulss xmm12, dword [0x1802b83b8]
divss xmm12, dword [0x1802b8474]
movss xmm2, dword [0x1802ed1c0]
mov rax, qword [0x18034e5a0]
lea rdx, [rsp + 0x40]
mulss xmm2, dword [0x1802b8134]
lea rcx, [rax + r12*4]
test r13b, r13b
je 0x18007c9bd
movaps xmm8, xmm9
mulss xmm8, dword [0x1802b8280]
movss dword [rsp + 0x40], xmm8
call fcn.18008d090
mov rax, qword [0x18034e5a0]
movss xmm2, dword [rax + r12*4]
comiss xmm2, xmm8
jbe 0x18007c9de
movaps xmm2, xmm8
jmp 0x18007c9de
movaps xmm0, xmm9
mulss xmm0, xmm11
movss dword [rsp + 0x40], xmm0
call fcn.18008d090
mov rax, qword [0x18034e5a0]
movss xmm2, dword [rax + r12*4]
movss xmm0, dword [rsp + 0x70]
movss dword [rsp + 0x50], xmm0
movss xmm1, dword [rsp + 0x74]
movss dword [rsp + 0x54], xmm1
movss xmm0, dword [rsp + 0x78]
movss dword [rsp + 0x58], xmm0
movss xmm1, dword [rsp + 0x60]
movss dword [rsp + 0x5c], xmm1
movaps xmm1, xmm6
addss xmm1, xmm14
movss xmm11, dword [rsp + 0x68]
movaps xmm0, xmm11
addss xmm0, xmm15
addss xmm0, xmm2
mov dword [rsp + 0x38], 0xf0
movss dword [rsp + 0x28], xmm12
movss dword [rsp + 0x20], xmm9
movaps xmm3, xmm9
lea r8, [rsp + 0x50]
call fcn.18007f8c0
test dil, dil
je 0x18007ca5a
mov byte [0x180343f40], 1
cmp byte [0x180343f38], 0
je 0x18007ca6b
addss xmm6, dword [0x180343f3c]
movss xmm0, dword [0x1802f8f00]
comiss xmm0, xmm11
jb 0x18007cac9
addss xmm11, xmm10
comiss xmm11, xmm0
jb 0x18007cac9
movss xmm0, dword [0x1802f8f04]
comiss xmm0, xmm6
jb 0x18007cac9
addss xmm6, xmm7
comiss xmm6, xmm0
jb 0x18007cac9
cmp dword [0x180343f34], 1
jne 0x18007cac9
cmp byte [0x180343f30], 0
jne 0x18007cac9
cmp dword [0x180343f48], 0
je 0x18007cabb
cmp r12d, 0x7b
jne 0x18007cac9
mov dword [0x180343f34], 0
mov al, 1
jmp 0x18007cacb
xor al, al
mov rcx, qword [rbp - 0x10]
xor rcx, rsp
call fcn.18020e120
lea r11, [rsp + 0x190]
mov rbx, qword [r11 + 0x58]
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 xmm14, xmmword [r11 - 0x80]
movaps xmm15, xmmword [r11 - 0x90]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret