Function at 0x14027e520
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, 0x48
mov r15, qword [rcx + 8]
mov rdi, rcx
mov rsi, qword [r15]
mov ebp, edx
mov qword [rsp + 0xa0], r8
call fcn.14027f180
mov al, byte [rdi + 0x10]
cmp al, 2
je 0x14022e940
test ebp, ebp
jne 0x14022e470
dec al
je 0x14022e9ff
mov rax, qword [rdi]
test byte [rax + 0x33], 2
je 0x14022e485
cmp byte [rsi + 0x12], 0
jne 0x14022e485
and word [r15 + 0x28], 0xfffe
mov eax, dword [r15 + 0x28]
test al, 1
je 0x14022e49b
test ebp, ebp
mov ebx, 8
je 0x14022e4a6
jmp 0x14022ea31
test ebp, ebp
je 0x14022e4a6
cmp byte [r15 + 0x24], 2
je 0x14022e4aa
test al, 0x80
je 0x14022e4b6
mov rax, qword [r15 + 0x80]
mov rax, qword [rax]
jmp 0x14022e4d7
cmp ebp, 1
jle 0x14022e4e5
mov rax, qword [r15 + 0x78]
test rax, rax
je 0x14022e4e5
mov rdx, qword [rax]
cmp rdx, rdi
je 0x14022e4d1
mov rax, qword [rdx]
jmp 0x14022e4d7
mov rax, qword [rax + 0x10]
jmp 0x14022e4bf
test rax, rax
mov ebx, 0x106
jne 0x14022ea31
mov r8d, 1
mov edx, 1
mov rcx, rdi
call fcn.14026ec70
test eax, eax
mov ebx, eax
jne 0x14022ea31
mov eax, dword [r15 + 0x28]
and eax, 0xffffffef
cmp dword [r15 + 0x40], 0
mov word [r15 + 0x28], ax
jne 0x14022e51d
or eax, 0x10
mov word [r15 + 0x28], ax
cmp qword [r15 + 0x18], 0
jne 0x14022e7ac
mov rcx, qword [r15]
call fcn.14029e730
test eax, eax
mov ebx, eax
jne 0x14022e90f
xor r9d, r9d
mov edx, 1
mov rcx, r15
lea r8, [rsp + 0x38]
call fcn.14022efd0
test eax, eax
mov ebx, eax
jne 0x14022e7ac
mov r14, qword [rsp + 0x38]
mov rbx, qword [r15]
mov r12, qword [r14 + 0x50]
mov eax, dword [rbx + 0x20]
mov r11d, dword [r12 + 0x1c]
mov dword [rsp + 0x28], eax
mov r13d, eax
test r11d, r11d
mov dword [rsp + 0x2c], r11d
je 0x14022e5a2
lea rdx, [r12 + 0x5c]
mov r8d, 4
lea rcx, [r12 + 0x18]
call sub.msvcrt.dll_memcmp
test eax, eax
jne 0x14022e5a2
mov r11d, dword [rsp + 0x2c]
bswap r11d
mov r13d, r11d
mov rax, qword [r15 + 8]
test byte [rax + 0x33], 2
jne 0x14022e72c
test r13d, r13d
je 0x14022e72c
lea rdx, str.SQLite_format_3
mov r8d, 0x10
mov rcx, r12
call sub.msvcrt.dll_memcmp
test eax, eax
jne 0x14022e78f
cmp byte [r12 + 0x12], 2
jbe 0x14022e5e4
or word [r15 + 0x28], 1
cmp byte [r12 + 0x13], 2
ja 0x14022e78f
jne 0x14022e62b
test byte [r15 + 0x28], 0x20
jne 0x14022e62b
lea rdx, [rsp + 0x34]
xor ecx, ecx
mov dword [rsp + 0x34], ecx
mov rcx, rbx
call fcn.14029e020
test eax, eax
mov ebx, eax
jne 0x14022e794
cmp dword [rsp + 0x34], 0
jne 0x14022e62b
mov rcx, qword [r14 + 0x70]
call fcn.14026f8c0
jmp 0x14022e788
lea rcx, [r12 + 0x15]
mov r8d, 3
lea rdx, [0x1403ec01f]
call sub.msvcrt.dll_memcmp
test eax, eax
jne 0x14022e78f
movzx ebx, byte [r12 + 0x10]
movzx eax, byte [r12 + 0x11]
shl ebx, 8
shl eax, 0x10
or ebx, eax
lea eax, [rbx - 1]
test eax, ebx
jne 0x14022e78f
lea eax, [rbx - 0x101]
cmp eax, 0xfeff
ja 0x14022e78f
movzx r8d, byte [r12 + 0x14]
mov edx, ebx
sub edx, r8d
cmp ebx, dword [r15 + 0x34]
je 0x14022e6cf
mov rcx, qword [r14 + 0x70]
mov dword [rsp + 0x2c], r8d
mov dword [rsp + 0x28], edx
call fcn.14026f8c0
mov edx, dword [rsp + 0x28]
mov dword [r15 + 0x34], ebx
mov rcx, r15
or word [r15 + 0x28], 2
mov dword [r15 + 0x38], edx
call fcn.14023ae10
mov r8d, dword [rsp + 0x2c]
lea rdx, [r15 + 0x34]
mov rcx, qword [r15]
call fcn.14029e5e0
mov ebx, eax
jmp 0x14022e7a3
cmp dword [rsp + 0x28], r13d
jae 0x14022e6fe
mov rax, qword [r15 + 8]
mov r13d, dword [rsp + 0x28]
mov rax, qword [rax + 0x30]
and eax, 0x10000001
dec rax
je 0x14022e6fe
mov ecx, 0x11efa
call fcn.140283940
mov ebx, eax
jmp 0x14022e794
cmp edx, 0x1df
jbe 0x14022e78f
or word [r15 + 0x28], 2
mov dword [r15 + 0x38], edx
cmp dword [r12 + 0x34], 0
setne byte [r15 + 0x21]
cmp dword [r12 + 0x40], 0
setne byte [r15 + 0x22]
jmp 0x14022e72f
xor r13d, r13d
mov r9d, dword [r15 + 0x38]
mov r11d, 0xff
xor edx, edx
mov qword [r15 + 0x18], r14
mov dword [r15 + 0x40], r13d
lea r8d, [r9 - 0xc]
sub r9d, 0x23
mov eax, r8d
mov word [r15 + 0x2e], r9w
shl eax, 6
div r11d
xor edx, edx
lea ecx, [rax - 0x17]
mov eax, r8d
shl eax, 5
mov word [r15 + 0x2a], cx
div r11d
sub eax, 0x17
mov word [r15 + 0x2c], ax
mov word [r15 + 0x30], ax
mov eax, 0x7f
cmp cx, ax
cmova ecx, eax
mov byte [r15 + 0x25], cl
xor ebx, ebx
jmp 0x14022e51d
mov ebx, 0x1a
mov rcx, qword [r14 + 0x70]
call fcn.14026f8c0
xor edx, edx
mov qword [r15 + 0x18], rdx
test ebx, ebx
je 0x14022e788
jmp 0x14022e90f
test ebx, ebx
jne 0x14022e90f
test ebp, ebp
je 0x14022e90b
test byte [r15 + 0x28], 1
je 0x14022e7cd
mov ebx, 8
jmp 0x14022e90f
mov ebx, dword [rsi + 0x30]
mov rax, qword [rdi]
test ebx, ebx
mov al, byte [rax + 0x66]
jne 0x14022e8ee
cmp al, 2
sete byte [rsi + 0x1a]
cmp byte [rsi + 0x15], 1
jne 0x14022e8e2
mov rax, qword [rsi + 0x128]
test rax, rax
je 0x14022e8b5
cmp byte [rsi + 8], 0
je 0x14022e83b
cmp byte [rax + 0x3f], 0
jne 0x14022e83b
mov edx, 4
mov rcx, rsi
call fcn.140269dc0
test eax, eax
mov ebx, eax
jne 0x14022e8ee
mov rbx, qword [rsi + 0x128]
movsx edx, word [rbx + 0x3c]
mov rcx, rbx
add edx, 3
call fcn.1402d3eb0
mov byte [rbx + 0x3f], 1
mov r13, qword [rsi + 0x128]
cmp byte [r13 + 0x42], 0
jne 0x14022e7c3
xor edx, edx
mov r8d, 1
mov rcx, r13
call fcn.1402d38c0
test eax, eax
mov ebx, eax
jne 0x14022e8ee
mov rax, qword [r13 + 0x30]
mov byte [r13 + 0x40], 1
lea rcx, [r13 + 0x48]
mov r8d, 0x30
mov rdx, qword [rax]
call sub.msvcrt.dll_memcmp
test eax, eax
jne 0x14022e89e
mov eax, dword [rsi + 0x20]
mov byte [rsi + 0x15], 2
mov dword [rsi + 0x2c], eax
mov dword [rsi + 0x28], eax
mov dword [rsi + 0x24], eax
xor eax, eax
mov qword [rsi + 0x60], rax
jmp 0x14022e8e2
mov r8d, 1
xor edx, edx
mov rcx, r13
call fcn.1402d3e90
mov byte [r13 + 0x40], 0
jmp 0x14022e8f6
mov edx, 2
mov rcx, rsi
call fcn.140269dc0
cmp ebp, 1
mov ebx, eax
jle 0x14022e8dc
test eax, eax
jne 0x14022e8ee
mov edx, 4
mov rcx, rsi
call fcn.14026b7b0
mov ebx, eax
test ebx, ebx
je 0x14022e886
jmp 0x14022e8ee
mov rcx, r15
call fcn.140268400
mov ebx, eax
jmp 0x14022e90b
cmp ebx, 0x205
jne 0x14022e90f
cmp byte [r15 + 0x24], 1
sbb ebx, ebx
and ebx, 0xfffffe00
add ebx, 0x205
jmp 0x14022e90f
test ebx, ebx
je 0x14022e971
mov rcx, r15
call fcn.1402cebe0
cmp bl, 5
jne 0x14022ea31
cmp byte [r15 + 0x24], 0
jne 0x14022ea31
mov rcx, r15
call fcn.14022f180
test eax, eax
jne 0x14022e51d
jmp 0x14022ea31
cmp qword [rsp + 0xa0], 0
je 0x14022e962
mov rax, qword [r15 + 0x18]
mov rdx, qword [rsp + 0xa0]
mov rax, qword [rax + 0x50]
mov eax, dword [rax + 0x28]
bswap eax
mov dword [rdx], eax
test ebp, ebp
jne 0x14022e9ea
xor ebx, ebx
jmp 0x14022ea31
cmp byte [rdi + 0x10], 0
jne 0x14022e995
inc dword [r15 + 0x3c]
cmp byte [rdi + 0x11], 0
je 0x14022e995
mov byte [rdi + 0x3c], 1
mov rax, qword [r15 + 0x78]
mov qword [rdi + 0x40], rax
lea rax, [rdi + 0x30]
mov qword [r15 + 0x78], rax
cmp ebp, 1
mov al, 1
sbb al, 0xff
mov byte [rdi + 0x10], al
cmp byte [r15 + 0x24], al
jae 0x14022e9a9
mov byte [r15 + 0x24], al
test ebp, ebp
je 0x14022e9ff
mov eax, dword [r15 + 0x28]
mov qword [r15 + 0x80], rdi
mov r13, qword [r15 + 0x18]
and eax, 0xffffffbf
cmp ebp, 1
jle 0x14022e9c7
or eax, 0x40
mov word [r15 + 0x28], ax
mov rax, qword [r13 + 0x50]
mov eax, dword [rax + 0x1c]
bswap eax
cmp dword [r15 + 0x40], eax
jne 0x14022ea13
cmp qword [rsp + 0xa0], 0
jne 0x14022e94b
mov rax, qword [rdi]
mov rcx, rsi
mov edx, dword [rax + 0x2f0]
call fcn.14029e000
mov ebx, eax
jmp 0x14022ea31
cmp qword [rsp + 0xa0], 0
jne 0x14022e94b
jmp 0x14022e96a
mov rcx, qword [r13 + 0x70]
call fcn.14029ec80
test eax, eax
mov ebx, eax
jne 0x14022ea31
mov eax, dword [r15 + 0x40]
mov rdx, qword [r13 + 0x50]
bswap eax
mov dword [rdx + 0x1c], eax
jmp 0x14022e9db
mov rcx, rdi
call fcn.140280620
mov eax, ebx
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp byte [rcx + 0x11], 0
jne 0x14027e535
mov al, byte [rcx + 0x10]
test al, al
je 0x14027e535
dec al
jne 0x14027e53a
test edx, edx
je 0x14027e53a
jmp 0x14022e430
test r8, r8
mov r9, qword [rcx + 8]
je 0x14027e553
mov rax, qword [r9 + 0x18]
mov rax, qword [rax + 0x50]
mov eax, dword [rax + 0x28]
bswap eax
mov dword [r8], eax
test edx, edx
je 0x14027e568
mov rax, qword [rcx]
mov rcx, qword [r9]
mov edx, dword [rax + 0x2f0]
jmp fcn.14029e000
xor eax, eax
ret