Function at 0x14018b510
Capabilities:
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, 0x128
cmp dword [rcx + 0x20], 0
mov rbx, rcx
je 0x14018bada
xor edx, edx
mov r13, qword [rcx + 0x18]
mov dword [rcx + 0x20], edx
xor ecx, ecx
mov dword [rsp + 0x7c], ecx
mov rcx, rbx
call sym.fts5StructureRead
mov rcx, rbx
mov rdx, rax
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x88], rax
call sym.fts5AllocateSegid
mov rcx, rbx
mov dword [rsp + 0x3c], eax
call sym.fts5StructureInvalidate
cmp dword [rsp + 0x3c], 0
je 0x14018b9ea
mov rax, qword [rbx]
lea rdx, [rsp + 0xa8]
mov rcx, rbx
mov r8d, dword [rsp + 0x3c]
mov edi, dword [rax + 0x84]
mov eax, dword [rax + 0x5c]
mov dword [rsp + 0x2c], edi
mov dword [rsp + 0x68], eax
call sym.fts5WriteInit
cmp dword [rbx + 0x34], 0
jne 0x14018b959
lea r9, [r13 + 0x18]
xor r8d, r8d
xor edx, edx
mov rcx, r13
call sym.fts5HashEntrySort
mov dword [rbx + 0x34], eax
lea rax, [rsp + 0x84]
mov qword [rsp + 0x48], rax
cmp dword [rbx + 0x34], 0
jne 0x14018b959
cmp qword [r13 + 0x18], 0
je 0x14018b959
lea rdx, [rsp + 0x90]
mov rcx, r13
lea r9, [rsp + 0x80]
lea r8, [rsp + 0x98]
call sym.sqlite3Fts5HashScanEntry
mov rcx, qword [rsp + 0x90]
call sym.strlen
mov r9, qword [rsp + 0x90]
lea rdx, [rsp + 0xa8]
mov rcx, rbx
mov r8d, eax
call sym.fts5WriteAppendTerm
cmp dword [rbx + 0x34], 0
jne 0x14018b959
mov eax, dword [rsp + 0xc0]
mov edx, dword [rsp + 0xd0]
mov r14d, dword [rsp + 0x80]
add edx, eax
add edx, r14d
cmp dword [rsp + 0x2c], edx
jle 0x14018b67c
movsxd rdx, eax
add rdx, qword [rsp + 0xb8]
add eax, r14d
movsxd rcx, r14d
mov rsi, qword [rsp + 0x98]
mov dword [rsp + 0xc0], eax
mov rdi, rdx
rep movsb byte [rdi], byte [rsi]
jmp 0x14018b93e
xor eax, eax
xor ebp, ebp
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0xa0]
mov qword [rsp + 0x60], rax
cmp dword [rbx + 0x34], 0
jne 0x14018b93e
cmp r14d, ebp
jle 0x14018b93e
mov r12, qword [rsp + 0x98]
movsxd rcx, ebp
mov rdx, qword [rsp + 0x60]
add rcx, r12
call sym.sqlite3Fts5GetVarint
movsxd rcx, dword [rsp + 0xc0]
movzx eax, al
mov r8, qword [rsp + 0xb8]
add eax, ebp
mov rdx, qword [rsp + 0xa0]
add qword [rsp + 0x40], rdx
mov dword [rsp + 0x38], eax
mov eax, dword [rsp + 0xc0]
mov r10, rcx
add rcx, r8
xchg al, ah
cmp byte [rsp + 0xf1], 0
je 0x14018b73c
mov rdx, qword [rsp + 0x40]
mov word [r8], ax
call sym.sqlite3PutVarint
mov r8, qword [rsp + 0x40]
mov rcx, rbx
mov byte [rsp + 0xf1], 0
lea rdx, [rsp + 0xa8]
add eax, r10d
mov dword [rsp + 0xc0], eax
call sym.fts5WriteDlidxAppend
cmp dword [rbx + 0x34], 0
je 0x14018b74b
jmp 0x14018b93e
call sym.sqlite3PutVarint
add eax, r10d
mov dword [rsp + 0xc0], eax
cmp dword [rsp + 0x68], 1
mov r15d, dword [rsp + 0xc0]
jne 0x14018b7e2
mov ebp, dword [rsp + 0x38]
cmp r14d, ebp
jle 0x14018b7b5
movsxd rax, ebp
cmp byte [r12 + rax], 0
jne 0x14018b7b5
mov rdx, qword [rsp + 0xb8]
lea eax, [r15 + 1]
inc ebp
movsxd rcx, r15d
cmp r14d, ebp
mov dword [rsp + 0xc0], eax
mov byte [rdx + rcx], 0
jle 0x14018b7b5
movsxd rcx, ebp
cmp byte [r12 + rcx], 0
jne 0x14018b7b5
mov ebp, dword [rsp + 0x38]
add r15d, 2
cdqe
mov dword [rsp + 0xc0], r15d
mov byte [rdx + rax], 0
add ebp, 2
mov eax, dword [rsp + 0xd0]
add eax, dword [rsp + 0xc0]
cmp dword [rsp + 0x2c], eax
jg 0x14018b692
lea rdx, [rsp + 0xa8]
mov rcx, rbx
call sym.fts5WriteFlushLeaf
jmp 0x14018b692
movsxd rax, dword [rsp + 0x38]
mov ecx, 1
add r12, rax
movzx edx, byte [r12]
test dl, dl
mov dword [rsp + 0x84], edx
jns 0x14018b80e
mov rdx, qword [rsp + 0x48]
mov rcx, r12
call sym.sqlite3Fts5GetVarint32
mov ecx, eax
mov eax, dword [rsp + 0x84]
mov r8d, 2
cdq
idiv r8d
lea ebp, [rax + rcx]
mov eax, dword [rsp + 0xd0]
add eax, r15d
add eax, ebp
cmp dword [rsp + 0x2c], eax
jl 0x14018b85a
movsxd rax, r15d
add rax, qword [rsp + 0xb8]
add r15d, ebp
movsxd rcx, ebp
mov rsi, r12
mov dword [rsp + 0xc0], r15d
mov rdi, rax
rep movsb byte [rdi], byte [rsi]
jmp 0x14018b931
lea rax, [rsp + 0xa8]
xor r15d, r15d
mov qword [rsp + 0x58], rax
cmp dword [rbx + 0x34], 0
jne 0x14018b931
mov eax, dword [rsp + 0xc0]
mov r8d, ebp
movsxd rsi, r15d
mov edi, dword [rsp + 0x2c]
sub r8d, r15d
add rsi, r12
mov dword [rsp + 0x50], eax
mov eax, dword [rsp + 0xd0]
mov dword [rsp + 0x54], eax
mov eax, dword [rsp + 0x50]
sub edi, eax
mov eax, dword [rsp + 0x54]
sub edi, eax
cmp edi, r8d
jge 0x14018b8e9
mov rdx, qword [rsp + 0x48]
mov rcx, rsi
call sym.sqlite3Fts5GetVarint32
cmp edi, eax
mov r8d, eax
jle 0x14018b8e9
mov rdx, qword [rsp + 0x48]
movsxd rcx, r8d
mov dword [rsp + 0x6c], r8d
add rcx, rsi
call sym.sqlite3Fts5GetVarint32
mov r8d, dword [rsp + 0x6c]
mov edx, eax
mov eax, r8d
add r8d, edx
cmp edi, r8d
jge 0x14018b8bf
mov r8d, eax
movsxd rax, dword [rsp + 0x50]
movsxd rcx, r8d
add r15d, r8d
add rax, qword [rsp + 0xb8]
mov rdi, rax
mov eax, dword [rsp + 0x50]
rep movsb byte [rdi], byte [rsi]
mov edi, dword [rsp + 0x54]
add eax, r8d
add edi, eax
cmp dword [rsp + 0x2c], edi
mov dword [rsp + 0xc0], eax
jg 0x14018b928
mov rdx, qword [rsp + 0x58]
mov rcx, rbx
call sym.fts5WriteFlushLeaf
cmp ebp, r15d
jg 0x14018b86a
mov eax, dword [rsp + 0x38]
add eax, ebp
mov ebp, eax
jmp 0x14018b692
cmp dword [rbx + 0x34], 0
jne 0x14018b5ca
mov rax, qword [r13 + 0x18]
mov rax, qword [rax + 8]
mov qword [r13 + 0x18], rax
jmp 0x14018b5ca
lea rsi, [rbx + 0x34]
mov rcx, r13
call sym.sqlite3Fts5HashClear
lea rdx, [rsp + 0xa8]
mov rcx, rbx
lea r8, [rsp + 0x7c]
call sym.fts5WriteFinish
mov rax, qword [rsp + 0x30]
cmp dword [rax + 0x14], 0
jne 0x14018b995
lea rdx, [rsp + 0x88]
mov rcx, rsi
call sym.fts5StructureAddLevel
mov rbp, qword [rsp + 0x88]
xor r9d, r9d
xor r8d, r8d
mov rcx, rsi
mov rdx, rbp
call sym.fts5StructureExtendLevel.constprop.0
cmp dword [rbx + 0x34], 0
jne 0x14018b9dd
movsxd rax, dword [rbp + 0x1c]
mov esi, dword [rsp + 0x3c]
lea edx, [rax + 1]
imul rax, rax, 0xc
mov dword [rbp + 0x1c], edx
mov edx, dword [rsp + 0x7c]
add rax, qword [rbp + 0x20]
mov dword [rax], esi
mov dword [rax + 4], 1
mov dword [rax + 8], edx
inc dword [rbp + 0x10]
mov r8, rbp
xor edx, edx
mov rcx, rbx
call sym.fts5StructurePromote
cmp dword [rbx + 0x34], 0
jne 0x14018ba4f
mov rax, qword [rbx]
mov r9d, dword [rax + 0x88]
test r9d, r9d
jle 0x14018ba4f
mov r10, qword [rsp + 0x88]
test r10, r10
je 0x14018ba4f
mov rcx, qword [r10 + 8]
xor edx, edx
movsxd r8, dword [rsp + 0x7c]
movsxd r11, dword [rbx + 0x10]
add r8, rcx
mov rax, r8
mov qword [r10 + 8], r8
div r11
xor edx, edx
mov r8, rax
mov rax, rcx
div r11
sub r8d, eax
mov rcx, rbx
imul r8d, r11d
lea rdx, [rsp + 0x88]
imul r8d, dword [r10 + 0x14]
call sym.fts5IndexMerge
mov rax, qword [rbx]
lea r12, [rsp + 0xa8]
xor esi, esi
mov ebp, dword [rax + 0x8c]
mov rax, qword [rsp + 0x88]
mov qword [rsp + 0xa8], rax
cmp dword [rbx + 0x34], 0
mov rdi, qword [rsp + 0xa8]
jne 0x14018bab4
movsxd rax, esi
shl rax, 4
cmp ebp, dword [rax + rdi + 0x1c]
jg 0x14018bab4
mov r8d, esi
mov rdx, r12
mov rcx, rbx
xor r9d, r9d
inc esi
call sym.fts5IndexMergeLevel
mov r8, qword [rsp + 0xa8]
mov edx, esi
mov rcx, rbx
call sym.fts5StructurePromote
jmp 0x14018ba72
mov rcx, rbx
mov rdx, rdi
call sym.fts5StructureWrite
mov rcx, rdi
add rsp, 0x128
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp sym.fts5StructureRelease
add rsp, 0x128
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret