Function at 0x14012b6b0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
movups xmmword [rsp + 0x70], xmm6
mov eax, dword [rsp + 0xf8]
mov rdi, qword [rsp + 0xf0]
mov r13d, dword [rsp + 0x100]
mov r12d, dword [rsp + 0x108]
mov r14, qword [rsp + 0x110]
mov dword [rsp + 0x68], eax
mov eax, dword [rcx + 0x3c]
mov rsi, rcx
mov rbx, rdx
mov qword [rsp + 0x38], r9
mov r15d, r8d
test eax, eax
jne 0x14012b760
test r13d, r13d
js 0x14012b8f0
movsxd rax, r13d
shl rax, 4
mov eax, dword [rax + rdx + 0x24]
cmp r12d, eax
cmovg r12d, eax
movsxd rax, r12d
cmp r12d, 2
jle 0x14012bbd2
mov ebp, 2
nop dword [rax]
add rbp, rbp
cmp rbp, rax
jl 0x14012b738
lea rax, [rbp - 1]
mov r9, rbp
shl rax, 5
lea rdx, [rbp + rax + 0x3a]
shl rdx, 2
jmp 0x14012b773
mov edx, 0x170
mov r9d, 2
xor r12d, r12d
mov ebp, 2
lea rax, [rsi + 0x3c]
mov qword [rsp + 0x30], r9
mov rcx, rax
mov qword [rsp + 0x40], rax
call sym.sqlite3Fts5MallocZero
mov r9, qword [rsp + 0x30]
test rax, rax
mov r10, rax
je 0x14012b8a0
shl r9, 7
mov dword [rax + 0x48], ebp
lea rax, [rax + r9 + 0x68]
mov qword [r10 + 0x20], rsi
mov qword [r10 + 0x60], rax
lea rax, [sym.fts5IterSetOutputs_Noop]
mov qword [r10 + 0x40], rax
mov eax, r15d
and eax, 2
mov qword [r14], r10
mov dword [rsp + 0x30], eax
setne al
movzx eax, al
mov dword [r10 + 0x4c], eax
mov eax, r15d
shr eax, 4
and eax, 1
mov byte [r10 + 0x50], al
mov rax, qword [rsp + 0x38]
mov qword [r10 + 0x38], rax
test r15b, 0x20
je 0x14012b8c0
mov ecx, dword [rsi + 0x3c]
test ecx, ecx
jne 0x14012b898
test r13d, r13d
js 0x14012b910
sub r12d, 1
js 0x14012b872
movsxd rax, r12d
mov r12d, r12d
lea rdi, [r10 + 0x68]
lea rbp, [rax*8]
shl r12, 7
sub rbp, rax
movsxd rax, r13d
lea r12, [r10 + r12 + 0xe8]
mov r13, r10
add rax, 2
shl rbp, 3
shl rax, 4
add rbx, rax
mov rdx, qword [rbx + 8]
add rdx, rbp
mov ecx, dword [rdx + 4]
test ecx, ecx
je 0x14012b859
mov r8, rdi
mov rcx, rsi
call sym.fts5SegIterInit.part.0
sub rdi, 0xffffffffffffff80
sub rbp, 0x38
cmp r12, rdi
jne 0x14012b840
mov r10, r13
mov r9d, dword [rsi + 0x3c]
test r9d, r9d
jne 0x14012b898
movups xmm6, xmmword [rsp + 0x70]
mov rdx, r10
mov rcx, rsi
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp sym.fts5MultiIterFinishSetup
mov rcx, r10
call sym.fts5MultiIterFree.part.0
mov qword [r14], 0
movups xmm6, xmmword [rsp + 0x70]
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov eax, dword [rsi + 0x3c]
test eax, eax
jne 0x14012b898
mov rcx, qword [rsp + 0x40]
mov rdx, r10
mov qword [rsp + 0x38], r10
call sym.fts5IterSetOutputCb.part.0
mov ecx, dword [rsi + 0x3c]
mov r10, qword [rsp + 0x38]
jmp 0x14012b7f3
cmp qword [rcx + 0x18], 0
mov r12d, dword [rdx + 0x18]
je 0x14012b723
xor eax, eax
test r8b, 0x40
sete al
add r12d, eax
jmp 0x14012b723
movsxd rax, dword [rbx + 0x1c]
mov r13, qword [rsi + 0x18]
add rax, 2
shl rax, 4
add rax, rbx
mov qword [rsp + 0x38], rax
test r13, r13
je 0x14012b937
test r15b, 0x40
je 0x14012ba41
mov rax, qword [rsp + 0x38]
lea rbp, [rbx + 0x20]
cmp rbp, rax
jae 0x14012b872
mov qword [rsp + 0x40], r10
mov qword [rsp + 0x48], r14
mov r14, rbp
nop word cs:[rax + rax]
mov ebp, dword [r14 + 4]
mov r11d, ebp
sub r11d, 1
js 0x14012ba20
movsxd rdx, r11d
mov r11d, r11d
mov dword [rsp + 0x30], ebp
lea rax, [rdx*8]
sub rax, rdx
movsxd rdx, ecx
lea r12, [rax*8]
mov rax, qword [rsp + 0x40]
shl rdx, 7
lea r13, [rax + rdx + 0x68]
movsxd rdx, ebp
sub rdx, r11
mov rbp, r13
mov r13d, ecx
lea r11, [rdx*8]
sub r11, rdx
lea rbx, [r11*8 - 0x70]
jmp 0x14012b9ea
mov qword [rsp + 0x20], rdx
mov r8d, dword [rsp + 0x68]
mov r9d, r15d
mov rdx, rdi
mov qword [rsp + 0x28], rbp
mov rcx, rsi
call sym.fts5SegIterSeekInit
sub r12, 0x38
sub rbp, 0xffffffffffffff80
cmp rbx, r12
je 0x14012ba17
mov rdx, qword [r14 + 8]
add rdx, r12
test rdi, rdi
jne 0x14012b9c0
mov r8d, dword [rdx + 4]
test r8d, r8d
je 0x14012b9dd
mov r8, rbp
mov rcx, rsi
sub r12, 0x38
sub rbp, 0xffffffffffffff80
call sym.fts5SegIterInit.part.0
cmp rbx, r12
jne 0x14012b9ea
mov ebp, dword [rsp + 0x30]
mov ecx, r13d
add ecx, ebp
mov rax, qword [rsp + 0x38]
add r14, 0x10
cmp r14, rax
jb 0x14012b960
mov r10, qword [rsp + 0x40]
mov r14, qword [rsp + 0x48]
jmp 0x14012b869
test rdi, rdi
je 0x14012ba50
test r15b, 8
je 0x14012bbe7
mov r8d, dword [rsp + 0x68]
mov rcx, r13
lea r9, [r13 + 0x18]
mov rdx, rdi
mov qword [rsp + 0x48], r10
call sym.fts5HashEntrySort
mov rcx, qword [rsi + 0x18]
mov r10, qword [rsp + 0x48]
mov dword [rsi + 0x3c], eax
mov r12, qword [rcx + 0x18]
test r12, r12
je 0x14012bbc5
mov eax, dword [r12 + 0x1c]
xor r8d, r8d
mov rdx, r12
mov qword [rsp + 0x50], r10
mov dword [rsp + 0x48], eax
call sym.fts5HashAddPoslistSize
mov rcx, qword [rsp + 0x40]
mov edx, 0x10
mov r13d, dword [r12 + 0x18]
call sym.sqlite3Fts5MallocZero
mov r10, qword [rsp + 0x50]
test rax, rax
mov rbp, rax
je 0x14012bbc5
movsxd rax, dword [rsp + 0x48]
lea r9, [r12 + 0x30]
sub r13d, 0x30
sub r13d, eax
mov r11, rax
add rax, r9
mov qword [rbp], rax
mov r12d, r13d
mov dword [rsi + 0x30], 0
mov rcx, qword [rsp + 0x40]
lea rdx, [r10 + 0xc8]
movd xmm0, r12d
mov dword [r10 + 0xd0], 0
mov r8d, r11d
mov qword [rsp + 0x48], r10
pshufd xmm6, xmm0, 0xe0
lea r13, [r10 + 0x68]
call sym.sqlite3Fts5BufferAppendBlob
mov r10, qword [rsp + 0x48]
movq qword [rbp + 8], xmm6
mov rcx, qword [rbp]
mov qword [r10 + 0x78], rbp
lea rdx, [r10 + 0xd8]
mov qword [rsp + 0x40], r10
call sym.sqlite3Fts5GetVarint
mov r10, qword [rsp + 0x40]
mov ebp, dword [rsp + 0x30]
movzx eax, al
mov qword [r10 + 0x88], rax
mov dword [r10 + 0xac], r12d
test ebp, ebp
jne 0x14012bd96
mov r11d, dword [rsi + 0x3c]
test r11d, r11d
jne 0x14012bb7a
mov rcx, qword [rsi]
mov rdx, r13
mov qword [rsp + 0x30], r10
call sym.fts5SegIterLoadNPos.part.0.isra.0
mov r10, qword [rsp + 0x30]
mov eax, dword [r10 + 0x70]
lea rdx, [sym.fts5SegIterNext_Reverse]
test al, 2
jne 0x14012bba2
mov rax, qword [rsi]
lea rdx, [sym.fts5SegIterNext_None]
cmp dword [rax + 0x60], 1
lea rax, [sym.fts5SegIterNext]
cmovne rdx, rax
mov rax, qword [rsp + 0x38]
lea rbp, [rbx + 0x20]
mov ecx, 1
mov qword [r10 + 0x98], rdx
cmp rbp, rax
jb 0x14012b949
jmp 0x14012b869
mov dword [rsi + 0x30], 0
mov eax, dword [r10 + 0x70]
jmp 0x14012bb7e
mov edx, 0x170
mov r9d, 2
mov ebp, 2
jmp 0x14012b773
movsxd rcx, dword [rsp + 0x68]
mov r12d, dword [r13 + 0x14]
mov eax, ecx
sub eax, 1
js 0x14012bdc4
movsxd rdx, eax
lea r9, [rdi + rcx - 2]
mov eax, eax
sub r9, rax
add rdx, rdi
mov eax, 0xd
movzx r8d, byte [rdx]
lea ecx, [rax*8]
sub rdx, 1
xor ecx, r8d
xor eax, ecx
cmp r9, rdx
jne 0x14012bc10
xor edx, edx
div r12d
mov rax, qword [r13 + 0x20]
mov r12, qword [rax + rdx*8]
test r12, r12
je 0x14012bd86
movsxd rbp, dword [rsp + 0x68]
mov rcx, rbx
mov qword [rsp + 0x50], rsi
mov rbx, r12
mov qword [rsp + 0x48], r10
mov r12, rcx
mov esi, ebp
jmp 0x14012bc6c
mov rbx, qword [rbx]
test rbx, rbx
je 0x14012bd79
cmp esi, dword [rbx + 0x1c]
jne 0x14012bc60
lea rcx, [rbx + 0x30]
mov r8, rbp
mov rdx, rdi
call sym.memcmp
test eax, eax
jne 0x14012bc60
mov rax, r12
mov r12, rbx
mov r10, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
mov rbx, rax
mov eax, dword [0x14014efd4]
mov ebp, dword [r12 + 0x18]
test eax, eax
jne 0x14012bdb9
mov qword [rsp + 0x48], r10
call sym.sqlite3MutexInit
mov r10, qword [rsp + 0x48]
test eax, eax
jne 0x14012bdce
call sym.sqlite3_initialize.part.0
mov r10, qword [rsp + 0x48]
test eax, eax
jne 0x14012bdce
mov eax, dword [rsp + 0x68]
mov qword [rsp + 0x58], r10
mov dword [rsp + 0x6c], eax
add eax, 0x30
sub ebp, eax
mov dword [rsp + 0x48], eax
lea ecx, [rbp + 0x1a]
mov dword [rsp + 0x50], ebp
movsxd rcx, ecx
call sym.sqlite3Malloc
mov r10, qword [rsp + 0x58]
test rax, rax
mov rbp, rax
je 0x14012bdce
movsxd rdx, dword [rsp + 0x48]
lea r9, [rax + 0x10]
movsxd r8, dword [rsp + 0x50]
mov qword [rsp + 0x60], r10
mov rcx, r9
mov qword [rsp + 0x58], r9
add rdx, r12
call sym.memcpy
mov eax, dword [rsp + 0x48]
mov rdx, r12
mov rcx, r13
mov r8d, 0x10
sub r8d, eax
movsxd r8, r8d
add r8, rbp
call sym.fts5HashAddPoslistSize
mov r9, qword [rsp + 0x58]
mov ecx, dword [rsp + 0x50]
mov dword [rsi + 0x3c], 0
mov r10, qword [rsp + 0x60]
mov r11d, dword [rsp + 0x6c]
mov qword [rbp], r9
lea r12d, [rcx + rax]
mov r9, rdi
or dword [r10 + 0x70], 1
jmp 0x14012bae5
mov r10, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
mov rbx, r12
mov eax, dword [r10 + 0x70]
or eax, 1
mov dword [r10 + 0x70], eax
jmp 0x14012bb7e
or dword [r10 + 0x70], 2
mov rdx, r13
mov rcx, rsi
mov qword [rsp + 0x30], r10
call sym.fts5SegIterReverseInitPage
mov r10, qword [rsp + 0x30]
mov eax, dword [r10 + 0x70]
jmp 0x14012bb7e
lock or qword [rsp], 0
jmp 0x14012bcd3
mov eax, 0xd
jmp 0x14012bc29
mov dword [rsi + 0x3c], 7
jmp 0x14012bd86