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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xb8
mov rdi, rcx
mov rax, qword [r9 + 0x10]
mov qword [rcx + 0x10], rax
movdqu xmm0, xmmword [r9]
movdqu xmmword [rcx], xmm0
cmp qword [r9], 0
je 0x140099597
mov rbp, qword [r9 + 8]
mov r15, qword [r9 + 0x10]
mov rsi, qword [rdi + 0x348]
inc qword [rsi]
je 0x140099cd3
cmp rbp, r8
jae 0x14009978a
mov rbx, rdx
mov rax, rbp
shl rax, 6
cmp byte [rdx + rax + 0x3c], 2
je 0x14009978a
add rbx, rax
cmp qword [rbx], r15
jne 0x14009978a
movabs rax, 0x100000001b3
mov qword [rsp + 0x68], rbp
movabs r13, 0xcbf29ce484222325
xor ecx, ecx
movzx edx, byte [rsp + rcx + 0x68]
inc rcx
xor r13, rdx
imul r13, rax
cmp rcx, 8
jne 0x1400994b3
mov qword [rsp + 0x68], r15
xor ecx, ecx
movzx edx, byte [rsp + rcx + 0x68]
inc rcx
xor r13, rdx
imul r13, rax
cmp rcx, 8
jne 0x1400994cf
movabs r12, 0x8000000000000019
lea rcx, [rdi + 0x328]
mov r14, r13
shr r14, 0x39
mov rdx, qword [rdi + 0x328]
mov rax, qword [rdi + 0x330]
mov r8, rax
and r8, r13
movd xmm0, r14d
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
xor r9d, r9d
pcmpeqd xmm1, xmm1
movdqu xmm2, xmmword [rdx + r8]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb r10d, xmm3
test r10w, r10w
je 0x140099575
mov r11d, r10d
lea r10d, [r11 - 1]
and r10d, r11d
bsf r11d, r11d
add r11, r8
and r11, rax
neg r11
lea r11, [r11 + r11*4]
shl r11, 4
cmp qword [rdx + r11 - 0x50], rbp
jne 0x14009953d
cmp qword [rdx + r11 - 0x48], r15
jne 0x14009953d
jmp 0x1400996d6
pcmpeqb xmm2, xmm1
pmovmskb r10d, xmm2
test r10d, r10d
jne 0x1400997a7
add r8, r9
add r8, 0x10
add r9, 0x10
and r8, rax
jmp 0x14009952a
mov rax, qword [rdi + 0x360]
test rax, rax
je 0x140099633
mov edx, dword [rdi + 0x368]
mov rax, qword [rax + 0xf8]
test rax, rax
je 0x140099c5f
mov ecx, 0x8d40
call rax
mov rax, qword [rdi + 0x348]
mov rcx, qword [rdi + 0x358]
mov qword [rdi + 0x350], rcx
mov rax, qword [rax + 0x15d0]
test rax, rax
je 0x140099c70
mov rdx, rcx
shr rdx, 0x20
movd xmm0, edx
cvttss2si r9d, xmm0
movss xmm1, dword [0x1402eac94]
ucomiss xmm0, xmm1
mov edx, 0x7fffffff
cmova r9d, edx
xor r10d, r10d
ucomiss xmm0, xmm0
cmovp r9d, r10d
movd xmm0, ecx
cvttss2si r8d, xmm0
ucomiss xmm0, xmm1
cmova r8d, edx
ucomiss xmm0, xmm0
cmovp r8d, r10d
jmp 0x1400996bc
mov rax, qword [rdi + 0x348]
mov rax, qword [rax + 0xf8]
test rax, rax
je 0x140099c5f
xor esi, esi
mov ecx, 0x8d40
xor edx, edx
call rax
mov rax, qword [rdi + 0x348]
mov rcx, qword [rdi + 0x358]
mov qword [rdi + 0x350], rcx
mov rax, qword [rax + 0x15d0]
test rax, rax
je 0x140099c70
mov rdx, rcx
shr rdx, 0x20
movd xmm0, edx
cvttss2si r9d, xmm0
movss xmm1, dword [0x1402eac94]
ucomiss xmm0, xmm1
mov edx, 0x7fffffff
cmova r9d, edx
ucomiss xmm0, xmm0
cmovp r9d, esi
movd xmm0, ecx
cvttss2si r8d, xmm0
ucomiss xmm0, xmm1
cmova r8d, edx
ucomiss xmm0, xmm0
cmovp r8d, esi
xor ecx, ecx
xor edx, edx
add rsp, 0xb8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp rax
add rdx, r11
cmp qword [rdx - 0x40], r12
jne 0x14009978a
mov rax, qword [rdx - 0x38]
mov edx, dword [rdx - 0x30]
mov rax, qword [rax + 0xf8]
test rax, rax
je 0x140099c81
mov ecx, 0x8d40
call rax
mov r8, qword [rbx + 0x20]
test r8, r8
js 0x140099714
xorps xmm0, xmm0
cvtsi2ss xmm0, r8
jmp 0x14009972f
mov rax, r8
shr rax, 1
mov ecx, r8d
and ecx, 1
or rcx, rax
xorps xmm0, xmm0
cvtsi2ss xmm0, rcx
addss xmm0, xmm0
movss dword [rdi + 0x350], xmm0
mov r9, qword [rbx + 0x28]
test r9, r9
js 0x14009974a
xorps xmm0, xmm0
cvtsi2ss xmm0, r9
jmp 0x140099765
mov rax, r9
shr rax, 1
mov ecx, r9d
and ecx, 1
or rcx, rax
xorps xmm0, xmm0
cvtsi2ss xmm0, rcx
addss xmm0, xmm0
movss dword [rdi + 0x354], xmm0
mov rax, qword [rdi + 0x348]
mov rax, qword [rax + 0x15d0]
test rax, rax
je 0x140099c94
xor ecx, ecx
xor edx, edx
call rax
mov rcx, rsi
call fcn.14008ceb8
nop
add rsp, 0xb8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp qword [rdi + 0x338], 0
jne 0x1400997b6
call fcn.14008d361
mov dword [rsp + 0x68], 0
mov rax, qword [rsi + 0x650]
mov ecx, 0x11
mov qword [rsp + 0x40], rcx
test rax, rax
je 0x140099cd5
lea rdx, [rsp + 0x68]
mov ecx, 1
call rax
mov eax, dword [rsp + 0x68]
mov dword [rsp + 0x4c], eax
test eax, eax
je 0x140099cbb
mov rax, qword [rsi + 0xf8]
test rax, rax
je 0x140099c8b
mov ecx, 0x8d40
mov edx, dword [rsp + 0x4c]
call rax
mov rax, qword [rbx + 0x20]
mov qword [rsp + 0xb0], rax
mov rax, qword [rbx + 0x28]
mov qword [rsp + 0xa8], rax
mov r9d, dword [rbx + 0x38]
mov rax, qword [rsi + 0x628]
test rax, rax
je 0x140099cde
mov dword [rsp + 0x20], 0
mov ecx, 0x8d40
mov edx, 0x8ce0
mov r8d, 0xde1
call rax
mov dword [rsp + 0x68], 0
mov rax, qword [rsi + 0x668]
mov ecx, 0x12
mov qword [rsp + 0x40], rcx
test rax, rax
je 0x140099cf1
lea rdx, [rsp + 0x68]
mov ecx, 1
call rax
mov edx, dword [rsp + 0x68]
test edx, edx
je 0x140099cbb
mov rax, qword [rsi + 0x118]
lea rcx, str.glBindRenderbufferglBindRenderbuffer
mov qword [rsp + 0x30], rcx
test rax, rax
je 0x140099caa
mov ecx, 0x8d41
mov dword [rsp + 0x48], edx
call rax
mov rax, qword [rsi + 0xf18]
test rax, rax
je 0x140099cfa
mov ecx, 0x8d41
mov edx, 0x8d48
mov r8, qword [rsp + 0xb0]
mov r9, qword [rsp + 0xa8]
call rax
mov rax, qword [rsi + 0x118]
test rax, rax
je 0x140099caa
mov ecx, 0x8d41
xor edx, edx
call rax
mov rax, qword [rsi + 0x610]
test rax, rax
je 0x140099d0d
mov ecx, 0x8d40
mov edx, 0x8d20
mov r8d, 0x8d41
mov r9d, dword [rsp + 0x48]
call rax
mov rax, qword [rsi + 0x1e8]
test rax, rax
je 0x140099d20
mov ecx, 0x8d40
call rax
mov dword [rsp + 0x3c], eax
cmp eax, 0x8cd5
jne 0x140099987
mov rax, qword [rsi + 0xf8]
lea rcx, str.glBindFramebufferglBindFramebuffer
mov qword [rsp + 0x30], rcx
mov ecx, 0x11
mov qword [rsp + 0x40], rcx
test rax, rax
je 0x140099caa
mov ecx, 0x8d40
xor edx, edx
call rax
inc qword [rsi]
mov rcx, rsi
mov r8, r12
jne 0x140099b7a
jmp 0x140099cd3
cmp eax, 0x8cdc
jg 0x1400999f9
cmp eax, 0x8cd6
je 0x140099a64
cmp eax, 0x8cd7
jne 0x140099b0b
lea rax, [rsp + 0x3c]
lea rcx, [rsp + 0x98]
mov qword [rcx], rax
lea rax, [fcn.14007fae0]
mov qword [rcx + 8], rax
lea rax, [0x14033ea48]
lea rdx, [rsp + 0x68]
mov qword [rdx], rax
mov qword [rdx + 8], 2
mov qword [rdx + 0x20], 0
mov qword [rdx + 0x10], rcx
mov qword [rdx + 0x18], 1
lea rcx, [rsp + 0x50]
call fcn.1400777d0
jmp 0x140099b5b
cmp eax, 0x8cdd
je 0x140099ab9
cmp eax, 0x8d56
jne 0x140099b0b
lea rax, [rsp + 0x3c]
lea rcx, [rsp + 0x98]
mov qword [rcx], rax
lea rax, [fcn.14007fae0]
mov qword [rcx + 8], rax
lea rax, [0x14033ea90]
lea rdx, [rsp + 0x68]
mov qword [rdx], rax
mov qword [rdx + 8], 2
mov qword [rdx + 0x20], 0
mov qword [rdx + 0x10], rcx
mov qword [rdx + 0x18], 1
lea rcx, [rsp + 0x50]
call fcn.1400777d0
jmp 0x140099b5b
lea rax, [rsp + 0x3c]
lea rcx, [rsp + 0x98]
mov qword [rcx], rax
lea rax, [fcn.14007fae0]
mov qword [rcx + 8], rax
lea rax, [0x14033e9f8]
lea rdx, [rsp + 0x68]
mov qword [rdx], rax
mov qword [rdx + 8], 2
mov qword [rdx + 0x20], 0
mov qword [rdx + 0x10], rcx
mov qword [rdx + 0x18], 1
lea rcx, [rsp + 0x50]
call fcn.1400777d0
jmp 0x140099b5b
lea rax, [rsp + 0x3c]
lea rcx, [rsp + 0x98]
mov qword [rcx], rax
lea rax, [fcn.14007fae0]
mov qword [rcx + 8], rax
lea rax, [0x14033ead0]
lea rdx, [rsp + 0x68]
mov qword [rdx], rax
mov qword [rdx + 8], 2
mov qword [rdx + 0x20], 0
mov qword [rdx + 0x10], rcx
mov qword [rdx + 0x18], 1
lea rcx, [rsp + 0x50]
call fcn.1400777d0
jmp 0x140099b5b
lea rax, [rsp + 0x3c]
lea rcx, [rsp + 0x98]
mov qword [rcx], rax
lea rax, [fcn.14007fae0]
mov qword [rcx + 8], rax
lea rax, [0x14033eb10]
lea rdx, [rsp + 0x68]
mov qword [rdx], rax
mov qword [rdx + 8], 2
mov qword [rdx + 0x20], 0
mov qword [rdx + 0x10], rcx
mov qword [rdx + 0x18], 1
lea rcx, [rsp + 0x50]
call fcn.1400777d0
mov rcx, qword [rsp + 0x50]
mov eax, dword [rsp + 0x58]
mov dword [rsp + 0x4c], eax
mov eax, dword [rsp + 0x5c]
mov dword [rsp + 0x48], eax
mov rax, qword [rsp + 0x60]
lea r8, [r12 - 5]
mov r9, qword [rdi + 0x328]
mov rdx, qword [rdi + 0x330]
and r13, rdx
movdqu xmm0, xmmword [r9 + r13]
pmovmskb r10d, xmm0
test r10d, r10d
jne 0x140099bbb
mov r11d, 0x10
add r13, r11
and r13, rdx
movdqu xmm0, xmmword [r9 + r13]
pmovmskb r10d, xmm0
add r11, 0x10
test r10d, r10d
je 0x140099ba1
bsf r10d, r10d
add r10, r13
and r10, rdx
mov r11b, byte [r9 + r10]
test r11b, r11b
js 0x140099be0
movdqa xmm0, xmmword [r9]
pmovmskb r10d, xmm0
bsf r10d, r10d
mov r11b, byte [r9 + r10]
lea r13, [r10 - 0x10]
and r13, rdx
mov byte [r9 + r10], r14b
mov byte [r13 + r9 + 0x10], r14b
neg r10
lea r10, [r10 + r10*4]
and r11b, 1
movzx edx, r11b
sub qword [rdi + 0x338], rdx
shl r10, 4
lea rdx, [r9 + r10]
mov qword [r9 + r10 - 0x50], rbp
mov qword [r9 + r10 - 0x48], r15
mov qword [r9 + r10 - 0x40], r8
mov qword [r9 + r10 - 0x38], rcx
mov ecx, dword [rsp + 0x4c]
mov dword [r9 + r10 - 0x30], ecx
mov ecx, dword [rsp + 0x48]
mov dword [r9 + r10 - 0x2c], ecx
mov qword [r9 + r10 - 0x28], rax
movdqu xmm0, xmmword [rsp + 0x68]
movdqu xmm1, xmmword [rsp + 0x78]
movdqu xmmword [r9 + r10 - 0x20], xmm0
movdqu xmmword [r9 + r10 - 0x10], xmm1
inc qword [rdi + 0x340]
jmp 0x1400996d9
lea rcx, str.glBindFramebufferglBindFramebuffer
mov edx, 0x11
call fcn.1400a5f9a
lea rcx, str.glViewportglViewport
mov edx, 0xa
call fcn.1400a5f9a
mov eax, 0x11
mov qword [rsp + 0x40], rax
lea rax, str.glBindFramebufferglBindFramebuffer
jmp 0x140099ca5
mov eax, 0xa
mov qword [rsp + 0x40], rax
lea rax, str.glViewportglViewport
mov qword [rsp + 0x30], rax
mov rcx, qword [rsp + 0x30]
mov rdx, qword [rsp + 0x40]
call fcn.1400a5f9a
jmp 0x140099cd3
lea rcx, str.expected_non_zero_GL_name
lea r8, str._home_janus_.cargo_registry_src_index.crates.io_6f17d22bba15001f_glow_0.13.1_src_native.rs
mov edx, 0x19
call fcn.14007fc00
ud2
lea rax, str.glGenFramebuffersglGenFramebuffers
jmp 0x140099ca5
mov eax, 0x16
mov qword [rsp + 0x40], rax
lea rax, str.glFramebufferTexture2DglFramebufferTexture2D
jmp 0x140099ca5
lea rax, str.glGenRenderbuffersglGenRenderbuffers
jmp 0x140099ca5
mov eax, 0x15
mov qword [rsp + 0x40], rax
lea rax, str.glRenderbufferStorageglRenderbufferStorage
jmp 0x140099ca5
mov eax, 0x19
mov qword [rsp + 0x40], rax
lea rax, str.glFramebufferRenderbufferglFramebufferRenderbuffer
jmp 0x140099ca5
mov eax, 0x18
mov qword [rsp + 0x40], rax
lea rax, str.glCheckFramebufferStatusglCheckFramebufferStatus
jmp 0x140099ca5