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

Disassembly:
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x58]
sub rsp, 0x158
mov rdi, rdx
mov rsi, rcx
cmp qword [rcx], 0
je 0x140024dd8
mov eax, 2
jmp 0x140025920
mov rcx, rdi
call fcn.140013210
mov dword [rsi + 0x78], eax
lea r9, [rbp + 0x30]
lea r8, [rbp + 0x28]
lea rdx, [rbp + 8]
mov rcx, rdi
call fcn.140009380
test eax, eax
je 0x140024e05
mov eax, 0x10
jmp 0x140025920
mov eax, dword [rbp + 8]
mov dword [rsi + 0x7c], eax
mov rdx, qword [rbp + 0x30]
lea rcx, [rbp + 0x40]
call fcn.1400273f0
nop
lea r8, [rsi + 0x80]
lea rdx, [rbp + 0x40]
mov rcx, rsi
call fcn.140024740
cmp eax, 1
jbe 0x140024e3b
mov ebx, 0x10
jmp 0x140025914
mov r14d, dword [rdi + 0x1920]
mov dword [rbp - 0x80], r14d
lea ebx, [r14 + 1]
lea rdx, [rbp + 0xb0]
mov rcx, rdi
call fcn.1400130b0
test eax, eax
je 0x140024e63
mov dword [rbp + 0xb0], ebx
lea rdx, [rbp - 0x68]
mov rcx, rdi
call fcn.1400131d0
test eax, eax
je 0x140024e76
mov dword [rbp - 0x68], ebx
lea rdx, [rbp - 0x64]
mov rcx, rdi
call fcn.1400130e0
test eax, eax
je 0x140024e89
mov dword [rbp - 0x64], ebx
mov rbx, qword [rbp + 0xa8]
mov rcx, rbx
call fcn.140013200
test eax, eax
je 0x140024ea3
mov byte [rsi + 0x9a], 1
xor r12d, r12d
mov r13d, r12d
test r14d, r14d
je 0x1400252a4
mov ecx, r12d
mov qword [rbp - 0x78], rcx
mov edi, dword [rbp + 0xa0]
mov r15d, dword [rbp + 0xa0]
mov r12d, dword [rbp + 0xa0]
mov r14, qword [rbp + 0xa0]
xor esi, esi
cmp dword [rbx + 0x1920], r13d
ja 0x140024ee3
mov edx, esi
jmp 0x140024eef
mov rax, qword [rbx + 0x1aa8]
mov rdx, qword [rcx + rax + 0x28]
lea rcx, [rsp + 0x70]
call fcn.1400274b0
nop
cmp dword [rbx + 0x1920], r13d
jbe 0x140024f15
mov rax, qword [rbx + 0x1aa8]
mov rsi, qword [rbp - 0x78]
mov esi, dword [rsi + rax + 0x438]
mov ebx, esi
shr ebx, 1
and bl, 1
lea r8, [rsp + 0x60]
lea rdx, [rsp + 0x70]
mov rcx, qword [rbp + 0xa0]
call fcn.14001da10
cmp eax, 7
jne 0x140024f68
lea r9, [rsp + 0x60]
movzx r8d, bl
lea rdx, [rsp + 0x70]
mov rcx, qword [rbp + 0xa0]
call fcn.14001a010
mov ebx, eax
cmp eax, 1
ja 0x1400253cf
mov edx, esi
mov rcx, qword [rsp + 0x60]
call fcn.140023460
mov rbx, qword [rbp + 0xa8]
mov rcx, qword [rbp - 0x78]
cmp dword [rbx + 0x1920], r13d
jbe 0x140024f8f
mov rax, qword [rbx + 0x1aa8]
mov eax, dword [rcx + rax + 8]
mov dword [rbp + 0xb8], eax
jmp 0x140024f95
mov eax, dword [rbp + 0xb8]
xor edx, edx
mov esi, edx
test eax, eax
je 0x140025238
mov r8d, edx
mov qword [rbp - 0x70], rdx
nop dword [rax + rax]
cmp dword [rbx + 0x1920], r13d
jbe 0x140024ff5
mov rax, qword [rbx + 0x1aa8]
cmp esi, dword [rcx + rax + 8]
jae 0x140024ff5
mov rax, qword [rcx + rax + 0x10]
mov r15d, dword [rax + r8 + 4]
mov edi, dword [rax + r8 + 0x14]
mov r12d, dword [r8 + rax + 0x10]
cmp r12d, 4
jne 0x140024ff0
mov r14d, esi
shl r14, 5
add r14, 8
add r14, rax
jmp 0x140024ff5
mov r14, qword [r8 + rax + 8]
lea r8, [rsp + 0x68]
mov edx, r15d
mov rcx, qword [rsp + 0x60]
call fcn.14001de90
cmp eax, 0xa
jne 0x140025189
mov eax, edi
and eax, 0x7000
je 0x1400250c7
cmp eax, 0x1000
je 0x140025086
cmp eax, 0x2000
jne 0x140025111
mov edx, r15d
mov rcx, qword [rsp + 0x60]
test dil, 2
je 0x140025062
mov byte [rsp + 0x38], 0
xor eax, eax
mov dword [rsp + 0x30], eax
mov qword [rsp + 0x28], rax
mov byte [rsp + 0x20], 1
mov r9d, r12d
mov r8, r14
call fcn.14001aa60
jmp 0x140025111
mov byte [rsp + 0x38], 1
mov dword [rsp + 0x30], r12d
mov qword [rsp + 0x28], r14
mov byte [rsp + 0x20], 0
xor r9d, r9d
xor r8d, r8d
call fcn.14001aa60
jmp 0x140025111
mov eax, dword [r14]
mov edx, r15d
mov rcx, qword [rsp + 0x60]
test dil, 2
je 0x1400250b1
mov byte [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
mov r9b, 1
mov r8d, eax
call fcn.14001a570
jmp 0x140025111
mov byte [rsp + 0x28], 1
mov dword [rsp + 0x20], eax
xor r9d, r9d
xor r8d, r8d
call fcn.14001a570
jmp 0x140025111
mov edx, r15d
mov rcx, qword [rsp + 0x60]
test dil, 2
je 0x1400250f2
mov byte [rsp + 0x38], 0
xor eax, eax
mov dword [rsp + 0x30], eax
mov qword [rsp + 0x28], rax
mov byte [rsp + 0x20], 1
mov r9d, r12d
mov r8, r14
jmp 0x14002510c
mov byte [rsp + 0x38], 1
mov dword [rsp + 0x30], r12d
mov qword [rsp + 0x28], r14
mov byte [rsp + 0x20], 0
xor r9d, r9d
xor r8d, r8d
call fcn.14001a390
lea r8, [rsp + 0x68]
mov edx, r15d
mov rcx, qword [rsp + 0x60]
call fcn.14001de90
test dil, 1
je 0x140025132
mov rax, qword [rsp + 0x68]
mov byte [rax + 0xe], 1
mov rcx, qword [rsp + 0x68]
test dil, 0x10
je 0x14002514c
cmp byte [rcx + 0xd], 0
je 0x14002514c
mov byte [rcx + 0x11], 1
mov rcx, qword [rsp + 0x68]
mov eax, edi
and eax, 0x10002
cmp eax, 0x10002
jne 0x14002516c
cmp dword [rbp + 0xb0], r13d
jne 0x14002516c
mov byte [rcx + 0x10], 1
mov rcx, qword [rsp + 0x68]
test dil, 4
je 0x14002521a
cmp byte [rcx + 0xd], 0
je 0x1400253ca
mov byte [rcx + 0xf], 1
jmp 0x14002521a
test dil, 2
je 0x1400251ca
bt edi, 0x10
jae 0x1400251a7
cmp dword [rbp + 0xb0], r13d
jne 0x1400251a7
mov rax, qword [rsp + 0x68]
mov byte [rax + 0x10], 1
mov rcx, qword [rsp + 0x68]
cmp byte [rcx + 0xc], 0
jne 0x14002521a
mov r8d, r12d
mov rdx, r14
call fcn.140023b30
mov ebx, eax
cmp eax, 1
ja 0x1400253cf
jmp 0x140025213
mov rcx, qword [rsp + 0x68]
cmp byte [rcx + 0xd], 0
jne 0x14002521a
mov r8d, r12d
mov rdx, r14
call fcn.140023790
mov ebx, eax
cmp eax, 1
ja 0x1400253cf
test dil, 4
je 0x140025204
mov rax, qword [rsp + 0x68]
cmp byte [rax + 0xd], 0
je 0x1400253ca
mov byte [rax + 0xf], 1
test dil, 0x10
je 0x140025213
mov rax, qword [rsp + 0x68]
mov byte [rax + 0x11], 1
mov rbx, qword [rbp + 0xa8]
inc esi
mov r8, qword [rbp - 0x70]
add r8, 0x20
mov qword [rbp - 0x70], r8
cmp esi, dword [rbp + 0xb8]
mov rcx, qword [rbp - 0x78]
jb 0x140024fb0
mov rax, qword [rsp + 0x60]
mov rsi, qword [rbp + 0xa0]
cmp qword [rsi + 0x58], 0
jne 0x140025258
cmp r13d, dword [rbp + 0xb0]
jne 0x140025258
mov qword [rsi + 0x58], rax
cmp qword [rsi + 0x60], 0
jne 0x140025269
cmp r13d, dword [rbp - 0x68]
jne 0x140025269
mov qword [rsi + 0x60], rax
cmp qword [rsi + 0x68], 0
jne 0x14002527a
cmp r13d, dword [rbp - 0x64]
jne 0x14002527a
mov qword [rsi + 0x68], rax
lea rcx, [rsp + 0x70]
call fcn.140027e00
nop
inc r13d
mov rcx, qword [rbp - 0x78]
add rcx, 0x440
mov qword [rbp - 0x78], rcx
cmp r13d, dword [rbp - 0x80]
jb 0x140024ed4
xor r12d, r12d
mov eax, dword [rbx + 0x1ae4]
mov dword [rsp + 0x68], eax
mov ebx, r12d
mov dword [rbp + 0xb8], ebx
mov r15d, 0x811c9dc5
test eax, eax
je 0x140025607
mov r14d, 0x24b6
lea edi, [r14 + 0x19]
lea rcx, [rsp + 0x70]
call fcn.140027560
nop
lea rcx, [rbp - 8]
call fcn.140027560
nop
lea rcx, [rbp - 0x18]
call fcn.140027560
nop
lea rcx, [rbp - 0x28]
call fcn.140027560
nop
lea rcx, [rbp - 0x38]
call fcn.140027560
nop
mov qword [rbp - 0x48], r12
mov qword [rbp + 0x10], r12
lea rax, [rbp - 0x80]
mov qword [rsp + 0x50], rax
lea rax, [rbp - 0x70]
mov qword [rsp + 0x48], rax
lea rax, [rbp - 0x78]
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0x60]
mov qword [rsp + 0x38], rax
lea rax, [rbp + 0x38]
mov qword [rsp + 0x30], rax
lea rax, [rbp - 0x60]
mov qword [rsp + 0x28], rax
lea rax, [rbp - 0x58]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x50]
lea r8, [rbp - 0x40]
mov edx, ebx
mov rcx, qword [rbp + 0xa8]
call fcn.140013130
mov rdx, qword [rbp - 0x40]
lea rcx, [rsp + 0x70]
call fcn.140027710
mov rdx, qword [rbp - 0x50]
test rdx, rdx
je 0x140025380
lea rcx, [rbp - 8]
call fcn.140027710
mov rdx, qword [rbp - 0x58]
test rdx, rdx
je 0x140025392
lea rcx, [rbp - 0x18]
call fcn.140027710
mov rdx, qword [rbp - 0x60]
test rdx, rdx
je 0x1400253a4
lea rcx, [rbp - 0x28]
call fcn.140027710
mov edx, r12d
mov r8d, dword [rsp + 0x78]
test r8d, r8d
je 0x1400253f7
mov ecx, edx
mov rax, qword [rsp + 0x70]
movzx r9d, word [rax + rcx*2]
cmp r9w, 0x2a
jne 0x1400253df
mov word [rax + rcx*2], di
jmp 0x1400253eb
mov ebx, 2
lea rcx, [rsp + 0x70]
call fcn.140027e00
nop
jmp 0x140025914
cmp r9w, 0x3f
jne 0x1400253f0
mov word [rax + rcx*2], r14w
mov r8d, dword [rsp + 0x78]
inc edx
cmp edx, r8d
jb 0x1400253b1
mov rbx, qword [rsi + 0x18]
test rbx, rbx
je 0x1400254a4
mov rdx, r15
test r8d, r8d
je 0x140025437
mov rcx, qword [rsp + 0x70]
mov r9d, r8d
nop dword [rax]
nop dword [rax + rax]
movzx eax, word [rcx]
xor rax, rdx
imul rdx, rax, 0x1000193
lea rcx, [rcx + 2]
sub r9, 1
jne 0x140025420
imul rax, rdx, 0x2001
mov rcx, rax
shr rcx, 7
xor rcx, rax
lea rcx, [rcx + rcx*8]
mov rax, rcx
shr rax, 0x11
xor rcx, rax
imul rax, rcx, 0x21
mov ecx, dword [rsi + 0x30]
mov edx, 1
shl rdx, cl
dec rdx
and rdx, rax
mov rbx, qword [rbx + rdx*8]
test rbx, rbx
je 0x1400254a4
lea rdx, [rsp + 0x70]
mov rcx, rbx
call fcn.140027820
test al, al
jne 0x1400254a4
mov eax, dword [rbx + 0x18]
shr eax, 0x1f
test al, al
jne 0x1400254a4
mov rbx, qword [rbx + 0x28]
lea rdx, [rsp + 0x70]
mov rcx, rbx
call fcn.140027820
test al, al
je 0x140025485
mov rdx, qword [rbp + 0x38]
lea rcx, [rbp - 0x38]
call fcn.140027710
lea r8, [rbp - 0x48]
lea rdx, [rbp - 0x38]
mov rcx, rsi
call fcn.14001da10
cmp eax, 1
ja 0x1400255ca
mov r12d, dword [rbp - 0x80]
mov r13d, dword [rbp - 0x70]
cmp dword [rbp - 0x78], 1
sete r15b
cmp dword [rsp + 0x60], 1
sete sil
lea r14, [rbp - 0x28]
cmp qword [rbp - 0x60], 0
mov eax, 0
cmove r14, rax
lea rdi, [rbp - 0x18]
cmp qword [rbp - 0x58], rax
cmove rdi, rax
lea rbx, [rbp - 8]
cmp qword [rbp - 0x50], rax
cmove rbx, rax
mov rdx, qword [rsp + 0x70]
lea rcx, [rbp + 0x18]
call fcn.1400274b0
nop
lea rax, [rbp + 0x10]
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x40], r12d
mov dword [rsp + 0x38], r13d
mov byte [rsp + 0x30], r15b
mov byte [rsp + 0x28], sil
mov qword [rsp + 0x20], r14
mov r9, rdi
mov r8, rbx
lea rdx, [rbp + 0x18]
mov rcx, qword [rbp - 0x48]
call fcn.1400199e0
mov ebx, eax
lea rcx, [rbp + 0x18]
call fcn.140027e00
nop
cmp ebx, 0xc
je 0x140025567
cmp ebx, 1
ja 0x1400255c3
lea rcx, [rbp - 0x38]
call fcn.140027e00
nop
lea rcx, [rbp - 0x28]
call fcn.140027e00
nop
lea rcx, [rbp - 0x18]
call fcn.140027e00
nop
lea rcx, [rbp - 8]
call fcn.140027e00
nop
lea rcx, [rsp + 0x70]
call fcn.140027e00
nop
mov ebx, dword [rbp + 0xb8]
inc ebx
mov dword [rbp + 0xb8], ebx
mov r15d, 0x811c9dc5
xor r12d, r12d
cmp ebx, dword [rsp + 0x68]
jae 0x140025607
mov rsi, qword [rbp + 0xa0]
jmp 0x1400252c5
mov ebx, 2
jmp 0x1400255cf
mov ebx, 0x10
lea rcx, [rbp - 0x38]
call fcn.140027e00
nop
lea rcx, [rbp - 0x28]
call fcn.140027e00
nop
lea rcx, [rbp - 0x18]
call fcn.140027e00
nop
lea rcx, [rbp - 8]
call fcn.140027e00
nop
lea rcx, [rsp + 0x70]
call fcn.140027e00
nop
jmp 0x140025914
mov rdi, qword [rbp + 0xa8]
mov eax, dword [rdi + 0x234c]
mov dword [rbp - 0x80], eax
mov ebx, r12d
mov dword [rbp + 0xb8], ebx
test eax, eax
je 0x140025911
nop dword [rax + rax]
lea rcx, [rsp + 0x70]
call fcn.140027560
nop
lea rcx, [rbp - 0x38]
call fcn.140027560
nop
lea rcx, [rbp - 0x28]
call fcn.140027560
nop
lea rcx, [rbp - 0x18]
call fcn.140027560
nop
lea rcx, [rbp - 8]
call fcn.140027560
nop
mov qword [rbp - 0x40], r12
lea rax, [rsp + 0x68]
mov qword [rsp + 0x50], rax
lea rax, [rsp + 0x60]
mov qword [rsp + 0x48], rax
lea rax, [rbp - 0x78]
mov qword [rsp + 0x40], rax
lea rax, [rbp - 0x70]
mov qword [rsp + 0x38], rax
lea rax, [rbp + 0x10]
mov qword [rsp + 0x30], rax
lea rax, [rbp - 0x48]
mov qword [rsp + 0x28], rax
lea rax, [rbp - 0x50]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x58]
lea r8, [rbp - 0x60]
mov edx, ebx
mov rcx, rdi
call fcn.140013260
mov rdx, qword [rbp - 0x60]
lea rcx, [rsp + 0x70]
call fcn.140027710
mov rdx, qword [rbp - 0x58]
test rdx, rdx
je 0x1400256da
lea rcx, [rbp - 0x38]
call fcn.140027710
mov rdx, qword [rbp - 0x50]
test rdx, rdx
je 0x1400256ec
lea rcx, [rbp - 0x28]
call fcn.140027710
mov rdx, qword [rbp - 0x48]
test rdx, rdx
je 0x1400256fe
lea rcx, [rbp - 0x18]
call fcn.140027710
mov rdi, qword [rbp + 0xa0]
mov rbx, qword [rdi + 0x18]
test rbx, rbx
je 0x1400257b4
mov rdx, r15
mov eax, dword [rsp + 0x78]
test eax, eax
je 0x140025747
mov rcx, qword [rsp + 0x70]
mov r8d, eax
nop word [rax + rax]
movzx eax, word [rcx]
xor rax, rdx
imul rdx, rax, 0x1000193
lea rcx, [rcx + 2]
sub r8, 1
jne 0x140025730
imul rax, rdx, 0x2001
mov rcx, rax
shr rcx, 7
xor rcx, rax
lea rcx, [rcx + rcx*8]
mov rax, rcx
shr rax, 0x11
xor rcx, rax
imul rax, rcx, 0x21
mov ecx, dword [rdi + 0x30]
mov edx, 1
shl rdx, cl
dec rdx
and rdx, rax
mov rbx, qword [rbx + rdx*8]
test rbx, rbx
je 0x1400257b4
lea rdx, [rsp + 0x70]
mov rcx, rbx
call fcn.140027820
test al, al
jne 0x1400257b4
mov eax, dword [rbx + 0x18]
shr eax, 0x1f
test al, al
jne 0x1400257b4
mov rbx, qword [rbx + 0x28]
lea rdx, [rsp + 0x70]
mov rcx, rbx
call fcn.140027820
test al, al
je 0x140025795
mov rdx, qword [rbp + 0x10]
lea rcx, [rbp - 8]
call fcn.140027710
lea r8, [rbp - 0x40]
lea rdx, [rbp - 8]
mov rcx, rdi
call fcn.14001da10
cmp eax, 1
ja 0x1400258d7
mov r12d, dword [rsp + 0x68]
mov r13d, dword [rsp + 0x60]
cmp dword [rbp - 0x78], 1
sete r15b
cmp dword [rbp - 0x70], 1
sete sil
lea r14, [rbp - 0x18]
cmp qword [rbp - 0x48], 0
mov eax, 0
cmove r14, rax
lea rdi, [rbp - 0x28]
cmp qword [rbp - 0x50], rax
cmove rdi, rax
lea rbx, [rbp - 0x38]
cmp qword [rbp - 0x58], rax
cmove rbx, rax
mov rdx, qword [rbp - 0x60]
lea rcx, [rbp + 0x18]
call fcn.1400274b0
nop
xor eax, eax
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x40], r12d
mov dword [rsp + 0x38], r13d
mov byte [rsp + 0x30], r15b
mov byte [rsp + 0x28], sil
mov qword [rsp + 0x20], r14
mov r9, rdi
mov r8, rbx
lea rdx, [rbp + 0x18]
mov rcx, qword [rbp - 0x40]
call fcn.1400199e0
mov ebx, eax
lea rcx, [rbp + 0x18]
call fcn.140027e00
nop
cmp ebx, 0xc
je 0x140025875
cmp ebx, 1
ja 0x1400258d0
lea rcx, [rbp - 8]
call fcn.140027e00
nop
lea rcx, [rbp - 0x18]
call fcn.140027e00
nop
lea rcx, [rbp - 0x28]
call fcn.140027e00
nop
lea rcx, [rbp - 0x38]
call fcn.140027e00
nop
lea rcx, [rsp + 0x70]
call fcn.140027e00
nop
mov ebx, dword [rbp + 0xb8]
inc ebx
mov dword [rbp + 0xb8], ebx
xor r12d, r12d
cmp ebx, dword [rbp - 0x80]
jae 0x140025911
mov rdi, qword [rbp + 0xa8]
mov r15d, 0x811c9dc5
jmp 0x140025630
mov ebx, 2
jmp 0x1400258dc
mov ebx, 0x10
lea rcx, [rbp - 8]
call fcn.140027e00
nop
lea rcx, [rbp - 0x18]
call fcn.140027e00
nop
lea rcx, [rbp - 0x28]
call fcn.140027e00
nop
lea rcx, [rbp - 0x38]
call fcn.140027e00
nop
lea rcx, [rsp + 0x70]
call fcn.140027e00
nop
jmp 0x140025914
mov ebx, r12d
lea rcx, [rbp + 0x40]
call fcn.140027e00
nop
mov eax, ebx
add rsp, 0x158
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret