Function at 0x140156580
Capabilities:
Resolve function by parsing pe exports

Disassembly:
mov rax, rsp
mov qword [rax + 0x20], r9
mov qword [rax + 0x18], r8
mov qword [rax + 0x10], rdx
mov qword [rax + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r13
push r14
sub rsp, 0x98
mov r13, qword [rcx]
mov rsi, rcx
xor ecx, ecx
mov qword [rax - 0x38], r12
mov qword [rsp + 0x40], rcx
mov r14, r9
mov qword [rsp + 0x38], rcx
mov ebp, ecx
mov qword [rax - 0x40], r15
mov r12d, ecx
mov qword [rax - 0x80], rcx
mov r15d, ecx
test rdx, rdx
je 0x140156bc2
movsxd rdi, dword [rdx]
lea rbx, [rdi + rdi*2]
shl rbx, 3
test r13, r13
je 0x1401565f1
mov rdx, rbx
mov rcx, r13
call fcn.140159ad0
jmp 0x1401565f9
mov rcx, rbx
call fcn.140179810
mov r14, rax
test rax, rax
je 0x14015660e
mov r8, rbx
xor edx, edx
mov rcx, rax
call fcn.140021160
mov eax, 0x7fff
cmp edi, eax
cmovg edi, eax
mov rax, qword [rsp + 0xe0]
mov dword [rsp + 0x60], edi
mov word [rax], di
mov rax, qword [rsp + 0xe8]
mov qword [rax], r14
xor eax, eax
mov dword [rsp + 0x50], eax
mov ebx, eax
test edi, edi
jle 0x140156bcd
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x58], r14
nop dword [rax]
cmp dword [rsi + 0x30], 0
jne 0x140156bbb
mov rcx, qword [rsp + 0xd8]
add rcx, 8
shl rax, 5
add rax, rcx
mov qword [rsp + 0x68], rax
mov rdi, qword [rax + 8]
test rdi, rdi
je 0x140156685
test byte [rax + 0x14], 3
je 0x14015671d
mov rax, qword [rax]
test rax, rax
je 0x1401566ce
nop dword [rax]
mov ecx, dword [rax + 4]
test ecx, 0x82000
je 0x1401566b4
bt ecx, 0x13
jae 0x1401566ab
mov rax, qword [rax + 0x20]
mov rax, qword [rax + 8]
jmp 0x1401566af
mov rax, qword [rax + 0x10]
test rax, rax
jne 0x140156690
test rax, rax
je 0x1401566ce
nop dword [rax]
cmp byte [rax], 0x8d
jne 0x1401566ce
mov rax, qword [rax + 0x18]
test rax, rax
jne 0x1401566c0
movzx ecx, byte [rax]
cmp cl, 0xa7
jne 0x14015670f
test dword [rax + 4], 0x3000000
jne 0x140156718
mov rdx, qword [rax + 0x40]
test rdx, rdx
je 0x140156718
movsx ecx, word [rax + 0x30]
test ecx, ecx
jns 0x140156701
movsx ecx, word [rdx + 0x34]
test ecx, ecx
jns 0x140156701
lea rdi, str.rowid
jmp 0x14015671d
mov rax, qword [rdx + 8]
lea rcx, [rcx + rcx*2]
mov rdi, qword [rax + rcx*8]
jmp 0x140156718
cmp cl, 0x3b
jne 0x140156718
mov rdi, qword [rax + 8]
test rdi, rdi
je 0x14015676e
mov rcx, rdi
call fcn.140177a70
test eax, eax
jne 0x14015676e
mov rbx, 0xffffffffffffffff
inc rbx
cmp byte [rdi + rbx], 0
jne 0x140156730
inc rbx
test r13, r13
je 0x14015674e
mov rdx, rbx
mov rcx, r13
call fcn.140159ad0
jmp 0x140156756
mov rcx, rbx
call fcn.140179810
mov rsi, rax
test rax, rax
je 0x140156784
mov r8, rbx
mov rdx, rdi
mov rcx, rax
call fcn.140022750
jmp 0x140156784
lea r8d, [rbx + 1]
mov rcx, r13
lea rdx, str.column_d
call fcn.1401797e0
mov rsi, rax
xor r9d, r9d
mov ebx, r9d
mov dword [rsp + 0x30], ebx
test rsi, rsi
je 0x14015694d
mov rdi, qword [rsp + 0xd0]
nop
test r15, r15
je 0x1401567f9
movzx eax, byte [rsi]
mov rcx, rsi
mov r8d, r9d
test al, al
je 0x1401567e0
lea rdx, [0x140000000]
nop dword [rax]
movzx eax, al
lea rcx, [rcx + 1]
movzx eax, byte [rax + rdx + 0x282a10]
add eax, r8d
imul r8d, eax, 0x9e3779b1
movzx eax, byte [rcx]
test al, al
jne 0x1401567c0
xor edx, edx
mov eax, r8d
div dword [rsp + 0x38]
mov ecx, edx
add rcx, rcx
mov r10, qword [r15 + rcx*8 + 8]
mov r11d, dword [r15 + rcx*8]
jmp 0x1401567ff
mov r10, rbp
mov r11d, r12d
test r11d, r11d
je 0x140156869
nop dword [rax]
nop dword [rax + rax]
mov r8, qword [r10 + 0x18]
mov r9, rsi
sub r9, r8
nop word [rax + rax]
movzx eax, byte [r8]
movzx ecx, byte [r9 + r8]
cmp eax, ecx
jne 0x140156836
test eax, eax
je 0x140156870
inc r8
jmp 0x140156820
lea rdx, [0x140000000]
movzx edx, byte [rcx + rdx + 0x282a10]
mov rcx, rax
lea rax, [0x140000000]
movzx eax, byte [rcx + rax + 0x282a10]
cmp eax, edx
jne 0x140156860
inc r8
jmp 0x140156820
mov r10, qword [r10]
add r11d, 0xffffffff
jne 0x140156810
lea r10, [0x1402d56c8]
mov rax, qword [r10 + 0x10]
test rax, rax
je 0x14015694a
test byte [rax + 0x14], 0x80
je 0x140156891
mov eax, 0x400
or word [r14 + 0x12], ax
mov ebx, dword [rsp + 0x30]
test rsi, rsi
jne 0x14015689a
xor ecx, ecx
jmp 0x1401568f5
mov rcx, 0xffffffffffffffff
inc rcx
cmp byte [rsi + rcx], 0
jne 0x1401568a1
and ecx, 0x3fffffff
jbe 0x1401568f5
mov edx, ecx
lea r8d, [rcx - 1]
dec rdx
test rdx, rdx
jle 0x1401568ea
lea r9, [0x140000000]
nop word [rax + rax]
movzx eax, byte [rdx + rsi]
test byte [rax + r9 + 0x282b30], 4
je 0x1401568ea
dec r8d
dec rdx
test rdx, rdx
jg 0x1401568d0
movsxd rax, r8d
cmp byte [rax + rsi], 0x3a
cmove ecx, r8d
inc ebx
lea rdx, str._.z:_u
mov r8d, ecx
mov dword [rsp + 0x30], ebx
mov rcx, r13
mov dword [rsp + 0x20], ebx
mov r9, rsi
call fcn.1401797e0
mov rcx, rdi
mov rsi, rax
call fcn.140185d70
mov ebx, dword [rsp + 0x30]
cmp ebx, 3
jbe 0x14015693b
lea rdx, [rsp + 0x30]
mov ecx, 4
call fcn.1400e45e0
mov ebx, dword [rsp + 0x30]
mov r9d, 0
test rsi, rsi
jne 0x1401567a0
xor r9d, r9d
xor dl, dl
mov qword [r14], rsi
mov rcx, rsi
test rsi, rsi
je 0x140156986
movzx eax, byte [rsi]
test al, al
je 0x140156986
lea r8, [0x140000000]
nop dword [rax + rax]
movzx eax, al
lea rcx, [rcx + 1]
add dl, byte [rax + r8 + 0x282a10]
movzx eax, byte [rcx]
test al, al
jne 0x140156970
mov rbx, qword [rsp + 0x68]
mov byte [r14 + 0xe], dl
test dword [rbx + 0x14], 0x100
je 0x1401569a2
mov eax, 0x400
or word [r14 + 0x12], ax
test rsi, rsi
je 0x140156b8e
test r15, r15
je 0x140156a0b
movzx eax, byte [rsi]
mov rcx, rsi
mov r8d, r9d
test al, al
je 0x1401569f0
lea rdx, [0x140000000]
nop dword [rax]
nop dword [rax + rax]
movzx eax, al
lea rcx, [rcx + 1]
movzx eax, byte [rax + rdx + 0x282a10]
add eax, r8d
imul r8d, eax, 0x9e3779b1
movzx eax, byte [rcx]
test al, al
jne 0x1401569d0
xor edx, edx
mov eax, r8d
div dword [rsp + 0x38]
mov eax, edx
add rax, rax
mov edi, edx
mov r10, qword [r15 + rax*8 + 8]
mov r11d, dword [r15 + rax*8]
jmp 0x140156a14
mov edi, r9d
mov r10, rbp
mov r11d, r12d
test r11d, r11d
je 0x140156a79
nop dword [rax]
mov r8, qword [r10 + 0x18]
mov r9, rsi
sub r9, r8
nop word [rax + rax]
movzx edx, byte [r8]
movzx eax, byte [r9 + r8]
cmp edx, eax
jne 0x140156a46
test edx, edx
je 0x140156a80
inc r8
jmp 0x140156a30
lea rcx, [0x140000000]
movzx ecx, byte [rax + rcx + 0x282a10]
mov rax, rdx
lea rdx, [0x140000000]
movzx eax, byte [rax + rdx + 0x282a10]
cmp eax, ecx
jne 0x140156a70
inc r8
jmp 0x140156a30
mov r10, qword [r10]
add r11d, 0xffffffff
jne 0x140156a20
lea r10, [0x1402d56c8]
mov rax, qword [r10 + 0x10]
test rax, rax
je 0x140156a96
mov qword [r10 + 0x10], rbx
mov qword [r10 + 0x18], rsi
jmp 0x140156b81
mov ecx, 0x20
call fcn.140179810
mov rbx, rax
test rax, rax
je 0x140156b86
inc r12d
mov qword [rax + 0x18], rsi
mov rax, qword [rsp + 0x68]
mov qword [rbx + 0x10], rax
mov dword [rsp + 0x3c], r12d
cmp r12d, 0xa
jb 0x140156b04
mov eax, dword [rsp + 0x38]
lea ecx, [rax + rax]
cmp r12d, ecx
jbe 0x140156b04
lea edx, [r12 + r12]
lea rcx, [rsp + 0x38]
call fcn.140140100
test eax, eax
je 0x140156af5
mov rcx, rsi
call fcn.1401b55b0
xor edx, edx
div dword [rsp + 0x38]
mov edi, edx
mov r12d, dword [rsp + 0x3c]
mov rbp, qword [rsp + 0x40]
mov r15, qword [rsp + 0x48]
test r15, r15
je 0x140156b5e
mov ecx, edi
shl rcx, 4
add rcx, r15
je 0x140156b5e
mov eax, dword [rcx]
xor r8d, r8d
test eax, eax
je 0x140156b23
mov rdx, qword [rcx + 8]
jmp 0x140156b26
mov rdx, r8
inc eax
mov qword [rcx + 8], rbx
mov dword [rcx], eax
test rdx, rdx
je 0x140156b5e
mov qword [rbx], rdx
mov rax, qword [rdx + 8]
mov qword [rbx + 8], rax
mov rax, qword [rdx + 8]
test rax, rax
je 0x140156b50
mov qword [rax], rbx
mov qword [rdx + 8], rbx
jmp 0x140156b79
mov rbp, rbx
mov qword [rsp + 0x40], rbx
mov qword [rdx + 8], rbx
jmp 0x140156b79
mov qword [rbx], rbp
test rbp, rbp
je 0x140156b6a
mov qword [rbp + 8], rbx
xor r8d, r8d
mov qword [rsp + 0x40], rbx
mov qword [rbx + 8], r8
mov rbp, rbx
mov rbx, qword [rsp + 0x68]
mov rax, r8
cmp rax, rbx
jne 0x140156b8e
mov rcx, r13
call fcn.14017aa20
mov ebx, dword [rsp + 0x50]
add r14, 0x18
mov rax, qword [rsp + 0x70]
inc ebx
mov rsi, qword [rsp + 0xd0]
inc rax
mov dword [rsp + 0x50], ebx
mov qword [rsp + 0x70], rax
cmp ebx, dword [rsp + 0x60]
jl 0x140156650
mov rbp, qword [rsp + 0x58]
jmp 0x140156bd0
mov word [r8], cx
mov ebx, ecx
mov qword [r9], rcx
jmp 0x140156bd8
mov rbp, r14
mov r14, qword [rsp + 0xe8]
lea rcx, [rsp + 0x38]
call fcn.140174530
cmp dword [rsi + 0x30], 0
mov r15, qword [rsp + 0x88]
mov r12, qword [rsp + 0x90]
je 0x140156c4f
movsxd rdi, ebx
test ebx, ebx
jle 0x140156c1c
mov rbx, rbp
mov rdx, qword [rbx]
test rdx, rdx
je 0x140156c12
mov rcx, r13
call fcn.140159920
add rbx, 0x18
sub rdi, 1
jne 0x140156c02
test rbp, rbp
je 0x140156c2c
mov rdx, rbp
mov rcx, r13
call fcn.140159920
mov rax, qword [rsp + 0xe0]
xor ecx, ecx
mov qword [r14], rcx
mov word [rax], cx
mov eax, dword [rsi + 0x18]
add rsp, 0x98
pop r14
pop r13
pop rdi
pop rsi
pop rbp
pop rbx
ret
xor eax, eax
add rsp, 0x98
pop r14
pop r13
pop rdi
pop rsi
pop rbp
pop rbx
ret