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

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x40
mov rbx, qword [rcx + 0x18]
xor ebp, ebp
mov rax, qword [rcx + 8]
mov rdi, r8
mov r10, qword [rcx]
movzx r11d, r9w
mov rsi, qword [rsp + 0xa0]
mov qword [rsp + 0x28], rax
movzx eax, byte [rbx + 0x10]
mov rcx, qword [r10]
movsxd r13, dword [rsi]
mov r14, qword [rsi + 0x20]
imul r15, rax, 0x70
mov rax, qword [r10 + 8]
lea r10d, [rbp + 1]
mov qword [rsp + 0x20], rax
mov rax, qword [rsp + 0xb0]
mov qword [rbx], rdx
mov r8, qword [rsi + 8]
mov qword [rsp + 0x30], r15
mov qword [rsp + 0x38], r14
mov qword [rsp + 0x88], rcx
mov dword [rax], ebp
test r13d, r13d
jle 0x1400ab10d
mov rsi, qword [rsp + 0x28]
add r8, 5
mov r9d, r13d
nop dword [rax]
movsxd rdx, dword [r8 + 3]
shl rdx, 6
add rdx, qword [rsi + 0x20]
mov byte [r8], bpl
mov rax, qword [rdx + 0x30]
and rax, rdi
cmp rax, qword [rdx + 0x30]
jne 0x1400ab0fc
test word [rdx + 0x14], r11w
movzx eax, bpl
cmove eax, r10d
mov byte [r8], al
add r8, 0xc
sub r9, r10
jne 0x1400ab0d0
mov rsi, qword [rsp + 0xa0]
lea r8, [r13*8]
xor edx, edx
mov rcx, r14
call fcn.14011adb0
mov rcx, qword [rsp + 0x20]
movabs rax, 0x546d42aea2879f2e
mov r14, qword [rsp + 0x88]
mov qword [rsi + 0x30], rbp
mov dword [rsi + 0x28], ebp
mov dword [rsi + 0x3c], ebp
mov qword [rsi + 0x40], rax
mov qword [rsi + 0x48], SQLFreeHandle
mov dword [rsi + 0x50], ebp
mov rax, qword [r15 + rcx + 0x60]
mov qword [rsi + 0x58], rax
mov rax, qword [r15 + rcx + 0x28]
mov rcx, qword [rax + 0x60]
test rcx, rcx
je 0x1400ab17e
mov rax, qword [r14]
nop dword [rax]
cmp qword [rcx], rax
je 0x1400ab17e
mov rcx, qword [rcx + 0x28]
test rcx, rcx
jne 0x1400ab170
mov r15, qword [rcx + 0x10]
mov rdx, rsi
mov rcx, r15
mov rax, qword [r15]
call qword [rax + reloc.ODBC32.dll_SQLAllocHandle]
mov edi, eax
lea rdx, [0x140000000]
test eax, eax
je 0x1400ab25c
cmp edi, 0x13
je 0x1400ab25c
cmp edi, 7
jne 0x1400ab1f5
mov rax, qword [r14]
cmp byte [rax + 0x61], bpl
jne 0x1400ab25c
cmp byte [rax + 0x62], bpl
jne 0x1400ab25c
mov byte [rax + 0x61], 1
cmp dword [rax + 0xd4], ebp
jle 0x1400ab1da
mov dword [rax + 0x160], 1
inc dword [rax + 0x168]
mov rcx, qword [rax + 0x128]
test rcx, rcx
je 0x1400ab25c
mov dword [rcx + 0x18], 7
jmp 0x1400ab25c
mov r8, qword [r15 + 0x10]
test r8, r8
jne 0x1400ab24d
mov ecx, edi
lea r8, str.unknown_error
sub ecx, 0x64
je 0x1400ab246
sub ecx, 1
je 0x1400ab23d
cmp ecx, 0x19f
je 0x1400ab234
movzx eax, dil
cmp eax, 0x1d
jae 0x1400ab24d
mov rcx, qword [rdx + rax*8 + 0x147040]
test rcx, rcx
je 0x1400ab24d
mov r8, rcx
jmp 0x1400ab24d
lea r8, str.abort_due_to_ROLLBACK
jmp 0x1400ab24d
lea r8, str.no_more_rows_available
jmp 0x1400ab24d
lea r8, str.another_row_available
lea rdx, [0x1401615c0]
mov rcx, r14
call fcn.14001a970
mov r14, qword [r15 + 0x10]
test r14, r14
je 0x1400ab290
cmp dword [0x1401abb60], ebp
mov rcx, r14
je 0x1400ab28a
call qword [0x1401abb98]
movsxd rdx, eax
mov rcx, r14
sub qword [0x1401b2b20], rdx
dec qword [0x1401b2b68]
call qword [0x1401abb88]
mov qword [r15 + 0x10], rbp
test edi, edi
je 0x1400ab2a5
cmp edi, 0x13
cmove edi, ebp
mov eax, edi
jmp 0x1400ab690
mov r14d, 0xffffffff
mov edi, ebp
test r13d, r13d
jle 0x1400ab314
cmp r13d, 2
jb 0x1400ab314
mov r9, qword [rbx + 0x38]
lea rdx, [rbx + 0x38]
lea eax, [r13 - 1]
movsxd rcx, eax
lea rax, [r9 + rcx*8]
cmp r9, rdx
ja 0x1400ab2d5
cmp rax, rdx
jae 0x1400ab314
mov eax, r13d
and eax, 0x80000001
jge 0x1400ab2e6
dec eax
or eax, 0xfffffffe
inc eax
mov edx, r13d
sub edx, eax
nop dword [rax + rax]
add edi, 2
cmp edi, edx
jl 0x1400ab2f0
lea eax, [rdx + 1]
mov rcx, r9
cdq
sub eax, edx
xor edx, edx
sar eax, 1
movsxd r8, eax
shl r8, 4
and r8, 0xfffffffffffffff8
call fcn.14011adb0
movsxd rcx, edi
cmp rcx, r13
jge 0x1400ab330
nop dword [rax]
mov rax, qword [rbx + 0x38]
mov qword [rax + rcx*8], rbp
inc rcx
cmp rcx, r13
jl 0x1400ab320
mov word [rbx + 0x1e], bp
movzx ecx, bp
mov r9, qword [rsi + 8]
test r13d, r13d
jle 0x1400ab408
mov r15, qword [rsp + 0x38]
mov rcx, rbp
add r9, 5
movsxd r8, dword [r15 + rcx*8]
lea edx, [r8 - 1]
test edx, edx
js 0x1400ab3f4
cmp edx, r13d
jge 0x1400ab462
movsxd rax, dword [r9 + 3]
test eax, eax
js 0x1400ab462
mov rdi, qword [rsp + 0x28]
cmp eax, dword [rdi + 0x14]
jge 0x1400ab462
mov r11, qword [rbx + 0x38]
mov r10, r8
cmp qword [r11 + r8*8 - 8], rbp
jne 0x1400ab462
cmp byte [r9], bpl
je 0x1400ab462
mov r8, rax
shl r8, 6
add r8, qword [rdi + 0x20]
mov rax, qword [r8 + 0x30]
or qword [rbx], rax
mov eax, edx
cmp edx, r14d
mov qword [r11 + r10*8 - 8], r8
cmovle eax, r14d
mov r14d, eax
cmp edx, 0x10
jge 0x1400ab3d8
cmp byte [r15 + rcx*8 + 4], bpl
je 0x1400ab3d8
movzx eax, word [rbx + 0x1e]
bts eax, edx
mov word [rbx + 0x1e], ax
test byte [r8 + 0x14], 1
je 0x1400ab3f4
mov rax, qword [rsp + 0xb0]
and dword [rsi + 0x50], 0xfffffffe
mov dword [rsi + 0x3c], ebp
mov dword [rax], 1
inc rcx
add r9, 0xc
cmp rcx, r13
jl 0x1400ab350
movzx ecx, word [rbx + 0x1e]
movzx eax, word [rsp + 0xa8]
not ax
and ax, cx
mov ecx, ebp
mov word [rbx + 0x1e], ax
lea eax, [r14 + 1]
mov word [rbx + 0x2c], ax
test r14d, r14d
js 0x1400ab440
mov rax, qword [rbx + 0x38]
nop dword [rax]
cmp qword [rax], rbp
je 0x1400ab462
inc ecx
add rax, 8
cmp ecx, r14d
jle 0x1400ab430
mov eax, dword [rsi + 0x28]
mov dword [rbx + 0x18], eax
movzx eax, byte [rsi + 0x38]
mov byte [rbx + 0x1c], al
mov rax, qword [rsi + 0x30]
mov dword [rsi + 0x38], ebp
mov qword [rbx + 0x20], rax
cmp dword [rsi + 0x3c], ebp
je 0x1400ab492
mov eax, dword [rsi + 0x10]
jmp 0x1400ab494
mov rcx, qword [rsp + 0x20]
lea rdx, str._s.xBestIndex_malfunction
mov r8, qword [rsp + 0x30]
mov r8, qword [r8 + rcx + 0x28]
mov rcx, qword [rsp + 0x88]
mov r8, qword [r8]
call fcn.14001a970
mov eax, 1
jmp 0x1400ab690
mov eax, ebp
mov byte [rbx + 0x1d], al
mov edx, SQLGetData
mov word [rbx + 0x12], bp
movsd xmm0, qword [rsi + 0x40]
comisd xmm0, xmmword [0x140195008]
movsd qword [rsp + 0xa0], xmm0
ja 0x1400ab4c0
movzx eax, bp
jmp 0x1400ab59a
comisd xmm0, xmmword [0x140195078]
ja 0x1400ab579
movsd xmm1, qword [0x1401950a8]
xor ecx, ecx
comisd xmm0, xmm1
jb 0x1400ab4f5
subsd xmm0, xmm1
comisd xmm0, xmm1
jae 0x1400ab4f5
movabs rax, 0x8000000000000000
mov rcx, rax
cvttsd2si rax, xmm0
add rax, rcx
movzx ecx, dx
cmp rax, 8
jae 0x1400ab522
cmp rax, 2
jae 0x1400ab513
mov eax, ebp
jmp 0x1400ab59a
add cx, 0xfff6
add rax, rax
cmp rax, 8
jb 0x1400ab513
jmp 0x1400ab55d
cmp rax, 0xff
jbe 0x1400ab53f
nop word [rax + rax]
add cx, dx
shr rax, 4
cmp rax, 0xff
ja 0x1400ab530
cmp rax, 0xf
jbe 0x1400ab55d
nop word [rax + rax]
add cx, 0xa
shr rax, 1
cmp rax, 0xf
ja 0x1400ab550
and eax, 7
lea r8, [0x140000000]
movzx eax, word [r8 + rax*2 + 0x149430]
sub ax, 0xa
add ax, cx
jmp 0x1400ab5a1
mov rcx, qword [rsp + 0xa0]
mov eax, 0x3fe
shr rcx, 0x34
sub cx, ax
movzx eax, cx
shl ax, 2
add cx, ax
lea eax, [rcx + rcx]
lea r8, [0x140000000]
mov word [rbx + 0x14], ax
mov rax, qword [rsi + 0x48]
cmp rax, 8
jae 0x1400ab5cf
cmp rax, 2
jb 0x1400ab620
nop word [rax + rax]
add dx, 0xfff6
add rax, rax
cmp rax, 8
jb 0x1400ab5c0
jmp 0x1400ab60d
cmp rax, 0xff
jbe 0x1400ab5f0
nop word [rax + rax]
add dx, 0x28
shr rax, 4
cmp rax, 0xff
ja 0x1400ab5e0
cmp rax, 0xf
jbe 0x1400ab60d
nop word [rax + rax]
add dx, 0xa
shr rax, 1
cmp rax, 0xf
ja 0x1400ab600
and eax, 7
movzx ebp, word [r8 + rax*2 + 0x149430]
sub bp, 0xa
add bp, dx
mov edx, dword [rbx + 0x28]
mov eax, edx
bts edx, 0xc
mov word [rbx + 0x16], bp
mov ecx, dword [rsi + 0x50]
btr eax, 0xc
and cl, 1
mov rcx, qword [rsp + 0x80]
cmove edx, eax
mov dword [rbx + 0x28], edx
mov rdx, rbx
call fcn.1400a98b0
cmp byte [rbx + 0x1c], 0
mov esi, eax
je 0x1400ab68e
mov rdi, qword [rbx + 0x20]
test rdi, rdi
je 0x1400ab68a
cmp dword [0x1401abb60], 0
mov rcx, rdi
je 0x1400ab684
call qword [0x1401abb98]
movsxd rdx, eax
mov rcx, rdi
sub qword [0x1401b2b20], rdx
dec qword [0x1401b2b68]
call qword [0x1401abb88]
mov byte [rbx + 0x1c], 0
mov eax, esi
mov rbx, qword [rsp + 0x90]
add rsp, 0x40
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret