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

Disassembly:
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1f]
sub rsp, 0xe8
xor edi, edi
mov r12d, dword [0x18028ab2c]
mov r13, qword gs:[0x58]
mov esi, 4
mov rbx, qword [r13 + r12*8]
mov eax, dword [rsi + rbx]
cmp dword [0x1802a3480], eax
jle 0x1801621df
lea rcx, [0x1802a3480]
call fcn.1801d1cb0
cmp dword [0x1802a3480], 0xffffffff
jne 0x1801621df
mov qword [0x1802a3468], rdi
lea rcx, [rbp + 0x67]
call fcn.1800b6ac0
mov rdx, qword [rax]
mov qword [0x1802a3468], rdx
lea rcx, [0x1802a3480]
call fcn.1801d1c44
mov eax, dword [rsi + rbx]
cmp dword [0x1802a3478], eax
jle 0x180162225
lea rcx, [0x1802a3478]
call fcn.1801d1cb0
cmp dword [0x1802a3478], 0xffffffff
jne 0x180162225
mov qword [0x1802a3458], rdi
lea rcx, [rbp + 0x67]
call fcn.1800b6ac0
mov rdx, qword [rax]
mov qword [0x1802a3458], rdx
lea rcx, [0x1802a3478]
call fcn.1801d1c44
lea rax, [0x18028cbc0]
lea rcx, [0x18028cc00]
nop dword [rax]
nop word [rax + rax]
mov qword [rax], rdi
mov byte [rax + 0x14], dil
mov dword [rax + 0x18], edi
add rax, 0x20
cmp rax, rcx
jne 0x180162240
mov dword [rbp + 0x67], 0xe
lea r8, [rbp + 0x67]
lea rdx, [rsp + 0x20]
lea rcx, [0x180285a68]
call fcn.1800d5850
mov rcx, qword [rax]
mov rsi, qword [rcx + 0x18]
mov r15, qword [rcx + 0x20]
cmp rsi, r15
je 0x18016264f
mov r14, rdi
nop word [rax + rax]
mov rcx, qword [rsi]
test rcx, rcx
je 0x180162642
add rcx, 0x10
mov rax, qword [rcx]
call qword [rax + 0x10]
test rax, rax
je 0x180162642
cmp dword [rax + 0x28], 0x1a
jne 0x180162642
mov rcx, qword [rsi]
add rcx, 0x10
mov rax, qword [rcx]
call qword [rax + 0x40]
test al, al
jne 0x180162642
test r14, r14
jne 0x1801623be
lea rcx, [rbp + 0x7f]
call fcn.1800b6ac0
mov rax, qword [rbp + 0x7f]
sub rax, qword [0x1802a3468]
cmp rax, 0x3b9aca00
jl 0x1801624a9
lea rcx, [rbp + 7]
call fcn.1800b6ac0
mov rcx, qword [rax]
mov qword [0x1802a3468], rcx
movzx ebx, byte [0x180297121]
mov qword [rbp - 0x79], rdi
mov qword [rbp - 0x71], rdi
lea rax, str.Found_RED_flag
mov qword [rbp - 0x69], rax
mov qword [rbp - 0x61], 0xe
movaps xmm0, xmmword [rbp - 0x79]
movdqa xmmword [rsp + 0x40], xmm0
movaps xmm1, xmmword [rbp - 0x69]
movdqa xmmword [rsp + 0x20], xmm1
lea r8, [rsp + 0x40]
lea rdx, [rsp + 0x20]
lea rcx, [rbp - 0x39]
call fcn.1800bd840
nop
lea rdi, [rbp - 0x39]
cmp qword [rbp - 0x21], 0xf
cmova rdi, qword [rbp - 0x39]
mov dword [rbp + 0x77], 0xff83ff83
test bl, bl
je 0x1801623b5
mov rcx, qword [0x18028c728]
mov rax, qword [rcx]
lea r9, str.CFlagController
lea r8, str.__s_
lea rdx, [rbp + 0x77]
call qword [rax + 0xb8]
mov rcx, qword [0x18028c728]
mov rax, qword [rcx]
mov dword [rbp + 0x67], 0xffffffff
mov r9, rdi
lea r8, [0x18025dc84]
lea rdx, [rbp + 0x67]
call qword [rax + 0xb8]
nop
lea rcx, [rbp - 0x39]
jmp 0x1801624a2
lea rcx, [rsp + 0x30]
call fcn.1800b6ac0
mov rax, qword [rsp + 0x30]
sub rax, qword [0x1802a3458]
cmp rax, 0x3b9aca00
jl 0x1801624a9
lea rcx, [rbp + 0xf]
call fcn.1800b6ac0
mov rcx, qword [rax]
mov qword [0x1802a3458], rcx
movzx ebx, byte [0x180297121]
mov qword [rbp - 0x59], rdi
mov qword [rbp - 0x51], rdi
lea rax, str.Found_BLU_flag
mov qword [rbp - 0x49], rax
mov qword [rbp - 0x41], 0xe
movaps xmm0, xmmword [rbp - 0x59]
movdqa xmmword [rsp + 0x20], xmm0
movaps xmm1, xmmword [rbp - 0x49]
movdqa xmmword [rsp + 0x40], xmm1
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x40]
lea rcx, [rbp - 0x19]
call fcn.1800bd840
nop
lea rdi, [rbp - 0x19]
cmp qword [rbp - 1], 0xf
cmova rdi, qword [rbp - 0x19]
mov dword [rbp + 0x77], 0xff83ff83
test bl, bl
je 0x18016249e
mov rcx, qword [0x18028c728]
mov rax, qword [rcx]
lea r9, str.CFlagController
lea r8, str.__s_
lea rdx, [rbp + 0x77]
call qword [rax + 0xb8]
mov rcx, qword [0x18028c728]
mov rax, qword [rcx]
mov dword [rbp + 0x6f], 0xffffffff
mov r9, rdi
lea r8, [0x18025dc84]
lea rdx, [rbp + 0x6f]
call qword [rax + 0xb8]
nop
lea rcx, [rbp - 0x19]
call fcn.1800a3670
xor edi, edi
mov rcx, qword [rsi]
mov rax, r14
shl rax, 5
lea rdx, [0x18028cbc0]
mov qword [rax + rdx], rcx
mov rbx, qword [rsi]
mov rax, qword [r13 + r12*8]
mov ecx, 4
mov ecx, dword [rcx + rax]
cmp dword [0x1802a3470], ecx
jle 0x180162588
lea rcx, [0x1802a3470]
call fcn.1801d1cb0
cmp dword [0x1802a3470], 0xffffffff
jne 0x180162581
mov rcx, qword [0x18028c720]
mov rax, qword [rcx]
call qword [rax + 0x40]
mov r10, rax
test rax, rax
je 0x18016256d
nop dword [rax + rax]
mov r8, qword [r10 + 0x10]
mov rcx, 0xffffffffffffffff
mov r9d, 0x811c9dc5
inc rcx
cmp byte [r8 + rcx], 0
jne 0x180162521
mov rdx, rdi
test rcx, rcx
je 0x180162564
nop dword [rax]
nop word [rax + rax]
movsx eax, byte [r8 + rdx]
xor eax, r9d
imul r9d, eax, 0x1000193
inc rdx
cmp rdx, rcx
jb 0x180162540
cmp r9d, 0x33faa6b2
je 0x18016260c
mov r10, qword [r10 + 0x20]
test r10, r10
jne 0x180162510
mov eax, edi
mov dword [0x1802a3474], eax
lea rcx, [0x1802a3470]
call fcn.1801d1c44
lea rdx, [0x18028cbc0]
movsxd rax, dword [0x1802a3474]
cmp dword [rax + rbx], 0
jne 0x180162642
mov rbx, r14
shl rbx, 5
cmp dword [rbx + rdx + 0x18], 0
jne 0x1801625bc
mov rcx, qword [rsi]
call fcn.1800ca2d0
mov ecx, dword [rax]
lea rdx, [0x18028cbc0]
mov dword [rbx + rdx + 0x18], ecx
mov rax, r14
shl rax, 5
cmp byte [rax + rdx + 0x14], 0
jne 0x18016263f
mov rdx, qword [rsi]
call fcn.180161d40
cmp dword [rax], 0
jne 0x18016263f
mov rcx, qword [rsi]
mov rax, qword [rcx]
call qword [rax + 0x48]
mov rdx, rax
mov rcx, r14
shl rcx, 5
lea rax, [0x18028cbc8]
add rcx, rax
cmp byte [rcx + 0xc], 0
je 0x180162621
mov eax, dword [rdx]
mov dword [rcx], eax
mov eax, dword [rdx + 4]
mov dword [rcx + 4], eax
mov eax, dword [rdx + 8]
mov dword [rcx + 8], eax
jmp 0x18016263f
lea r8, str.m_nType
mov rdx, qword [r10 + 0x18]
call fcn.1801d1920
jmp 0x18016256f
mov qword [rcx], 0
mov dword [rcx + 8], edi
mov eax, dword [rdx]
mov dword [rcx], eax
mov eax, dword [rdx + 4]
mov dword [rcx + 4], eax
mov eax, dword [rdx + 8]
mov dword [rcx + 8], eax
mov byte [rcx + 0xc], 1
inc r14
add rsi, 8
cmp rsi, r15
jne 0x180162290
add rsp, 0xe8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret