Function at 0x1401f8210
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, 0x58
mov rbx, qword [rcx + 8]
cmp byte [rcx + 0x11], 0
mov r14, qword [rbx]
mov rsi, rcx
mov r12d, edx
mov r13, r8
je 0x1401f8244
add dword [rcx + 0x14], 1
cmp byte [rcx + 0x12], 0
je 0x1401f8360
movzx eax, byte [rsi + 0x10]
cmp al, 2
je 0x1401f8371
cmp al, 1
jne 0x1401f825d
test r12d, r12d
je 0x1401f8791
mov rax, qword [rsi]
movzx edx, word [rbx + 0x28]
test byte [rax + 0x33], 2
je 0x1401f82c0
cmp byte [r14 + 0x12], 0
jne 0x1401f82c0
and edx, 0xfffffffe
mov word [rbx + 0x28], dx
test r12d, r12d
je 0x1401f82d3
cmp byte [rbx + 0x24], 2
je 0x1401f82d8
test dl, 0x80
jne 0x1401f82d8
cmp r12d, 1
jle 0x1401f82eb
mov rax, qword [rbx + 0x78]
test rax, rax
jne 0x1401f82a9
jmp 0x1401f82eb
mov rax, qword [rax + 0x10]
test rax, rax
je 0x1401f82eb
mov rcx, qword [rax]
cmp rcx, rsi
je 0x1401f82a0
mov rax, qword [rcx]
jmp 0x1401f82e2
mov eax, edx
and eax, 1
test ax, ax
je 0x1401f8278
test r12d, r12d
jne 0x1401f83ea
test dl, 0x80
je 0x1401f82eb
mov rax, qword [rbx + 0x80]
mov rax, qword [rax]
test rax, rax
jne 0x1401f87b8
cmp byte [rsi + 0x11], 0
mov rax, qword [rsi + 8]
je 0x1401f83b0
cmp rsi, qword [rax + 0x80]
je 0x1401f8308
test byte [rax + 0x28], 0x40
jne 0x1401f833e
mov rax, qword [rax + 0x78]
test rax, rax
jne 0x1401f832d
jmp 0x1401f83b0
mov rax, qword [rax + 0x10]
test rax, rax
je 0x1401f83b0
cmp rsi, qword [rax]
je 0x1401f8320
cmp dword [rax + 8], 1
jne 0x1401f8320
cmp byte [rax + 0xc], 1
je 0x1401f8320
mov ebp, 0x106
sub dword [rsi + 0x14], 1
jne 0x1401f858f
mov rcx, rsi
call sym.unlockBtreeMutex
jmp 0x1401f858f
call sym.btreeLockCarefully
movzx eax, byte [rsi + 0x10]
cmp al, 2
jne 0x1401f8250
test r13, r13
je 0x1401f8387
mov rax, qword [rbx + 0x18]
mov rax, qword [rax + 0x50]
mov eax, dword [rax + 0x28]
bswap eax
mov dword [r13], eax
test r12d, r12d
je 0x1401f83a9
mov rax, qword [rsi]
mov edx, dword [rax + 0x2f0]
cmp edx, dword [r14 + 0x80]
jle 0x1401f83a9
cmp byte [r14 + 0xa], 0
jne 0x1401f8830
xor ebp, ebp
jmp 0x1401f8585
mov r11d, dword [rbx + 0x40]
and edx, 0xffffffef
mov word [rbx + 0x28], dx
test r11d, r11d
je 0x1401f8748
mov rdi, qword [rbx + 0x18]
test rdi, rdi
je 0x1401f83f8
test r12d, r12d
je 0x1401f8758
test byte [rbx + 0x28], 1
je 0x1401f85d0
cmp byte [rbx + 0x24], 0
je 0x1401f85c0
mov ebp, 8
jmp 0x1401f8585
mov rcx, qword [rbx]
call sym.sqlite3PagerSharedLock
test eax, eax
mov ebp, eax
movzx r15d, al
jne 0x1401f850e
xor r9d, r9d
mov edx, 1
mov rcx, rbx
lea r8, [rsp + 0x48]
call sym.btreeGetPage
test eax, eax
mov ebp, eax
jne 0x1401f850a
mov rdi, qword [rsp + 0x48]
mov rcx, qword [rbx]
mov r8, qword [rdi + 0x50]
mov r9d, dword [rcx + 0x20]
mov eax, dword [r8 + 0x1c]
mov r15d, r9d
test eax, eax
je 0x1401f8456
mov edx, dword [r8 + 0x18]
cmp dword [r8 + 0x5c], edx
je 0x1401f8840
mov rax, qword [rbx + 8]
test byte [rax + 0x33], 2
jne 0x1401f8469
test r15d, r15d
jne 0x1401f88e8
mov eax, dword [rbx + 0x38]
xor r15d, r15d
lea ecx, [rax - 0xc]
mov r8d, 0x80808081
mov qword [rbx + 0x18], rdi
movq xmm0, qword [0x14031fa40]
mov edx, ecx
shl ecx, 6
mov dword [rbx + 0x40], r15d
imul rcx, r8
shl edx, 5
imul rdx, r8
movzx r8d, ax
shr rcx, 0x27
shr rdx, 0x27
movzx ecx, cx
movzx edx, dx
mov rax, rdx
shl rax, 0x10
or rax, r8
shl rax, 0x10
or rax, rdx
mov edx, 0x7f
shl rax, 0x10
or rax, rcx
movq xmm1, rax
paddw xmm0, xmm1
pextrw eax, xmm0, 0
cmp ax, dx
movq qword [rbx + 0x2a], xmm0
cmova eax, edx
mov byte [rbx + 0x25], al
jmp 0x1401f83c8
add dword [rdi + 0x298], 1
cmp qword [rbx + 0x18], 0
je 0x1401f83f8
test ebp, ebp
je 0x1401f8758
movzx r15d, bpl
cmp byte [rbx + 0x24], 0
jne 0x1401f8544
mov rdi, qword [rbx + 0x18]
test rdi, rdi
je 0x1401f8544
mov rcx, qword [rdi + 0x70]
mov qword [rbx + 0x18], 0
mov rdi, qword [rcx + 0x28]
call sym.sqlite3PcacheRelease
mov rax, qword [rdi + 0x120]
cmp qword [rax + 0x18], 0
je 0x1401f8700
cmp r15d, 5
jne 0x1401f8585
cmp byte [rbx + 0x24], 0
jne 0x1401f8585
mov rdi, qword [rbx + 8]
mov rax, qword [rdi + 0x288]
test rax, rax
je 0x1401f8585
mov edx, dword [rdi + 0x298]
test edx, edx
js 0x1401f8585
mov rcx, qword [rdi + 0x290]
call rax
test eax, eax
jne 0x1401f84f0
mov dword [rdi + 0x298], 0xffffffff
cmp byte [rsi + 0x11], 0
jne 0x1401f8343
mov eax, ebp
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp byte [rbx + 0x24], 0
jne 0x1401f83ea
mov rdi, qword [rbx + 0x18]
test rdi, rdi
je 0x1401f83ea
nop dword [rax]
mov r15d, 8
mov ebp, 8
jmp 0x1401f851d
mov ebp, dword [r14 + 0x30]
mov rax, qword [rsi]
test ebp, ebp
movzx eax, byte [rax + 0x66]
jne 0x1401f8698
cmp al, 2
sete byte [r14 + 0x1a]
cmp byte [r14 + 0x15], 1
je 0x1401f8600
mov rcx, rbx
call sym.newDatabase
mov ebp, eax
jmp 0x1401f8502
mov rdi, qword [r14 + 0x128]
test rdi, rdi
je 0x1401f893c
cmp byte [r14 + 8], 0
je 0x1401f865f
cmp byte [rdi + 0x3f], 0
jne 0x1401f8850
mov edx, 4
mov rcx, r14
call sym.pagerLockDb
test eax, eax
mov ebp, eax
jne 0x1401f8698
mov rbp, qword [r14 + 0x128]
cmp byte [rbp + 0x3f], 0
mov rdi, rbp
jne 0x1401f865b
movsx edx, word [rbp + 0x3c]
mov rcx, qword [rbp + 8]
add edx, 3
call sym.walUnlockShared.part.0.isra.0
mov rdi, qword [r14 + 0x128]
mov byte [rbp + 0x3f], 1
cmp byte [rdi + 0x42], 0
jne 0x1401f85a2
cmp byte [rdi + 0x3f], 0
jne 0x1401f885a
mov rcx, qword [rdi + 8]
xor edx, edx
mov r9d, 0xa
mov r8d, 1
mov rax, qword [rcx]
call qword [rax + 0x70]
test eax, eax
mov ebp, eax
je 0x1401f885a
nop dword [rax]
cmp ebp, 0x205
jne 0x1401f850a
cmp byte [rbx + 0x24], 0
jne 0x1401f8820
mov rax, qword [rbx + 0x18]
mov ebp, 5
test rax, rax
je 0x1401f8550
mov rcx, qword [rax + 0x70]
mov qword [rbx + 0x18], 0
mov ebp, 5
mov rdi, qword [rcx + 0x28]
call sym.sqlite3PcacheRelease
mov rax, qword [rdi + 0x120]
cmp qword [rax + 0x18], 0
jne 0x1401f854a
mov r15d, 5
mov ebp, 5
nop word [rax + rax]
movzx eax, byte [rdi + 0x15]
cmp al, 6
je 0x1401f8738
test al, al
je 0x1401f8738
cmp al, 1
je 0x1401f8920
mov rax, qword [0x1402b9260]
test rax, rax
je 0x1401f8722
call rax
mov rcx, rdi
call sym.sqlite3PagerRollback
mov rax, qword [0x1402b9268]
test rax, rax
je 0x1401f8738
call rax
mov rcx, rdi
call sym.pager_unlock
jmp 0x1401f8544
or edx, 0x10
mov word [rbx + 0x28], dx
jmp 0x1401f83c4
cmp byte [rsi + 0x10], 0
jne 0x1401f877c
add dword [rbx + 0x3c], 1
cmp byte [rsi + 0x11], 0
je 0x1401f877c
mov byte [rsi + 0x3c], 1
mov rax, qword [rbx + 0x78]
mov qword [rsi + 0x40], rax
lea rax, [rsi + 0x30]
mov qword [rbx + 0x78], rax
test r12d, r12d
movzx eax, byte [rbx + 0x24]
jne 0x1401f87c8
test al, al
mov byte [rsi + 0x10], 1
jne 0x1401f8791
mov byte [rbx + 0x24], 1
test r13, r13
je 0x1401f83a9
mov rax, qword [rbx + 0x18]
xor ebp, ebp
mov rax, qword [rax + 0x50]
mov eax, dword [rax + 0x28]
bswap eax
mov dword [r13], eax
jmp 0x1401f8585
mov ebp, 0x106
jmp 0x1401f8585
cmp al, 1
mov byte [rsi + 0x10], 2
ja 0x1401f87d4
mov byte [rbx + 0x24], 2
movzx eax, word [rbx + 0x28]
mov qword [rbx + 0x80], rsi
mov rdi, qword [rbx + 0x18]
mov edx, eax
or eax, 0x40
and edx, 0xffffffbf
cmp r12d, 1
cmovg edx, eax
mov word [rbx + 0x28], dx
mov rdx, qword [rdi + 0x50]
mov eax, dword [rdx + 0x1c]
bswap eax
cmp dword [rbx + 0x40], eax
jne 0x1401f88a5
test r13, r13
je 0x1401f838c
mov eax, dword [rdx + 0x28]
bswap eax
mov dword [r13], eax
jmp 0x1401f838c
mov ebp, 0x205
jmp 0x1401f8585
mov rcx, r14
call sym.pagerOpenSavepoint
mov ebp, eax
jmp 0x1401f8585
bswap eax
mov r15d, eax
jmp 0x1401f8456
cmp byte [rdi + 0x42], 0
jne 0x1401f85a2
mov rax, qword [rdi + 0x30]
mov byte [rdi + 0x40], 1
lea rcx, [rdi + 0x48]
mov r8d, 0x30
mov rdx, qword [rax]
call sub.msvcrt.dll_memcmp
test eax, eax
jne 0x1401f89b5
movd xmm0, dword [r14 + 0x20]
mov byte [r14 + 0x15], 2
mov qword [r14 + 0x60], 0
movd dword [r14 + 0x2c], xmm0
pshufd xmm0, xmm0, 0xe0
movq qword [r14 + 0x24], xmm0
jmp 0x1401f85f1
mov rcx, qword [rdi + 0x70]
call sym.sqlite3PagerWrite
test eax, eax
mov ebp, eax
jne 0x1401f8585
mov eax, dword [rbx + 0x40]
test r13, r13
mov rdx, qword [rdi + 0x50]
bswap eax
mov dword [rdx + 0x1c], eax
je 0x1401f838c
mov rax, qword [rbx + 0x18]
mov rax, qword [rax + 0x50]
mov eax, dword [rax + 0x28]
bswap eax
mov dword [r13], eax
jmp 0x1401f838c
movabs rax, 0x66206574694c5153
cmp qword [r8], rax
je 0x1401f89dc
mov r15d, 0x1a
mov ebp, 0x1a
mov rcx, qword [rdi + 0x70]
call sym.sqlite3PagerUnrefPageOne
mov qword [rbx + 0x18], 0
jmp 0x1401f8544
cmp byte [rdi + 8], 0
jne 0x1401f8738
xor r8d, r8d
xor edx, edx
mov rcx, rdi
call sym.pager_end_transaction
jmp 0x1401f8738
mov edx, 2
mov rcx, r14
call sym.pagerLockDb
cmp r12d, 1
mov ebp, eax
jle 0x1401f8bbf
test eax, eax
jne 0x1401f8698
jmp 0x1401f8993
mov rcx, qword [r14 + 0x48]
mov edx, 4
mov rax, qword [rcx]
call qword [rax + 0x38]
test eax, eax
mov ebp, eax
je 0x1401f89ab
cmp eax, 5
jne 0x1401f8698
mov rcx, qword [r14 + 0xf0]
call qword [r14 + 0xe8]
test eax, eax
je 0x1401f850a
movzx eax, byte [r14 + 0x16]
cmp al, 5
je 0x1401f89a4
cmp al, 3
ja 0x1401f887c
cmp byte [r14 + 0x11], 0
je 0x1401f895f
mov byte [r14 + 0x16], 4
jmp 0x1401f887c
cmp byte [rdi + 0x3f], 0
jne 0x1401f89d3
mov rcx, qword [rdi + 8]
mov r9d, 9
mov r8d, 1
xor edx, edx
mov rax, qword [rcx]
call qword [rax + 0x70]
mov byte [rdi + 0x40], 0
jmp 0x1401f86a4
movabs rax, 0x332074616d726f
cmp qword [r8 + 8], rax
jne 0x1401f88fb
cmp byte [r8 + 0x12], 2
jbe 0x1401f89fc
or word [rbx + 0x28], 1
cmp byte [r8 + 0x13], 2
ja 0x1401f88fb
je 0x1401f8ab1
cmp word [r8 + 0x15], 0x2040
jne 0x1401f88fb
cmp byte [r8 + 0x17], 0x20
jne 0x1401f88fb
movzx edx, byte [r8 + 0x10]
movzx eax, byte [r8 + 0x11]
shl edx, 8
shl eax, 0x10
or edx, eax
lea eax, [rdx - 1]
test eax, edx
jne 0x1401f88fb
lea eax, [rdx - 0x101]
cmp eax, 0xfeff
ja 0x1401f88fb
or word [rbx + 0x28], 2
mov eax, edx
movzx ebp, byte [r8 + 0x14]
sub eax, ebp
cmp edx, dword [rbx + 0x34]
jne 0x1401f8b0b
cmp r9d, r15d
jae 0x1401f8a8a
mov rdx, qword [rbx + 8]
mov r15d, r9d
mov rdx, qword [rdx + 0x30]
and edx, 0x10000001
cmp rdx, 1
jne 0x1401f8b85
cmp eax, 0x1df
jbe 0x1401f88fb
mov dword [rbx + 0x38], eax
mov edx, dword [r8 + 0x34]
test edx, edx
setne byte [rbx + 0x21]
mov ecx, dword [r8 + 0x40]
test ecx, ecx
setne byte [rbx + 0x22]
jmp 0x1401f846f
test byte [rbx + 0x28], 0x20
jne 0x1401f8a0d
lea rdx, [rsp + 0x44]
mov dword [rsp + 0x3c], r9d
mov qword [rsp + 0x30], r8
mov dword [rsp + 0x44], 0
call sym.sqlite3PagerOpenWal
mov r8, qword [rsp + 0x30]
test eax, eax
mov r9d, dword [rsp + 0x3c]
mov ebp, eax
jne 0x1401f8b7c
mov r10d, dword [rsp + 0x44]
test r10d, r10d
jne 0x1401f8a0d
mov rcx, qword [rdi + 0x70]
call sym.sqlite3PagerUnrefPageOne
mov rdi, qword [rbx + 0x18]
jmp 0x1401f83c8
mov rcx, qword [rdi + 0x70]
mov dword [rsp + 0x3c], eax
lea rdi, [rbx + 0x34]
mov dword [rsp + 0x30], edx
call sym.sqlite3PagerUnrefPageOne
mov edx, dword [rsp + 0x30]
mov eax, dword [rsp + 0x3c]
mov rcx, qword [rbx + 0x88]
movd xmm0, edx
movd xmm2, eax
test rcx, rcx
punpckldq xmm0, xmm2
movq qword [rbx + 0x34], xmm0
je 0x1401f8b5f
sub rcx, 4
mov qword [rbx + 0x88], rcx
call sym.pcache1Free
xor r8d, r8d
mov qword [rbx + 0x88], r8
mov rcx, qword [rbx]
mov r8d, ebp
mov rdx, rdi
call sym.sqlite3PagerSetPagesize
test eax, eax
mov ebp, eax
je 0x1401f83c4
jmp 0x1401f850a
movzx r15d, al
jmp 0x1401f8906
mov r9d, 0x1182e
mov ecx, 0xb
mov r15d, 0xb
lea rax, [0x1403133bc]
mov ebp, 0xb
mov qword [rsp + 0x20], rax
lea r8, str.database_corruption
lea rdx, str._s_at_line__d_of___.10s_
call sym.sqlite3_log
jmp 0x1401f8906
test eax, eax
je 0x1401f887c
jmp 0x1401f8698