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

Disassembly:
push rbx
sub rsp, 0x60
mov rax, qword [rcx + 0x20]
mov qword [rsp + 0x50], rdi
mov rdi, rcx
mov rcx, qword [rax + 0x18]
mov qword [rsp + 0x30], r15
mov r15d, edx
test rcx, rcx
je 0x1400ae5a9
call qword [0x140288bd0]
mov rcx, qword [rdi + 0x28]
cmp byte [rcx + 0x11], 0
je 0x1400ae5c1
inc dword [rcx + 0x14]
cmp byte [rcx + 0x12], 0
jne 0x1400ae5c1
call fcn.1400cf920
mov rax, qword [rdi]
test rax, rax
je 0x1400ae5d8
mov rcx, qword [rax + 0x18]
test rcx, rcx
je 0x1400ae5d8
call qword [0x140288bd0]
mov ebx, dword [rdi + 0x30]
test ebx, ebx
je 0x1400ae5eb
lea eax, [rbx - 5]
cmp eax, 1
ja 0x1400aec94
cmp qword [rdi], 0
mov r9, qword [rdi + 0x28]
mov qword [rsp + 0x78], rbp
mov rdx, qword [r9 + 8]
mov qword [rsp + 0x58], rsi
mov qword [rsp + 0x48], r12
mov rax, qword [rdx]
mov qword [rsp + 0x40], r13
mov dword [rsp + 0x88], 0
mov qword [rsp + 0x28], rax
mov rax, qword [rdi + 8]
mov qword [rsp + 0x38], r14
mov rcx, qword [rax + 8]
mov r13, qword [rcx]
je 0x1400ae63d
cmp byte [rdx + 0x24], 2
jne 0x1400ae63d
mov ebx, 5
jmp 0x1400ae667
xor ebx, ebx
test r9, r9
je 0x1400ae64d
movzx eax, byte [r9 + 0x10]
test eax, eax
jne 0x1400ae667
xor r8d, r8d
xor edx, edx
mov rcx, r9
call fcn.14011adf0
mov dword [rsp + 0x88], 1
mov ebx, eax
cmp dword [rdi + 0x14], 0
mov esi, 7
jne 0x1400ae698
test ebx, ebx
jne 0x1400ae6c1
mov rax, qword [rdi + 0x28]
xor r9d, r9d
xor r8d, r8d
mov rcx, qword [rax + 8]
mov edx, dword [rcx + 0x34]
mov rcx, qword [rdi + 8]
call fcn.14011e6f0
cmp eax, esi
jne 0x1400ae69c
mov ebx, esi
jmp 0x1400ae6c1
test ebx, ebx
jne 0x1400ae6c1
cmp dword [rdi + 0x14], 0
jne 0x1400ae6c1
mov rcx, qword [rdi + 8]
lea r8, [rdi + 0x10]
mov edx, 2
call fcn.14011adf0
mov ebx, eax
test eax, eax
jne 0x1400ae6c1
mov dword [rdi + 0x14], 1
mov rax, qword [rdi + 0x28]
mov rcx, qword [rax + 8]
mov rax, qword [rdi + 8]
mov rax, qword [rax + 8]
mov edx, dword [rcx + 0x34]
mov r8d, dword [rax + 0x34]
mov rax, qword [rax]
mov dword [rsp + 0x70], edx
movzx r12d, byte [rax + 9]
mov dword [rsp + 0x80], r8d
test ebx, ebx
jne 0x1400ae701
cmp r12d, 5
jne 0x1400ae701
mov eax, 8
cmp edx, r8d
cmovne ebx, eax
mov r14d, dword [rcx + 0x40]
xor ebp, ebp
test r15d, r15d
js 0x1400ae711
cmp ebp, r15d
jge 0x1400ae782
mov esi, dword [rdi + 0x18]
cmp esi, r14d
ja 0x1400ae782
test ebx, ebx
jne 0x1400ae7c7
mov rax, qword [rdi + 0x28]
xor edx, edx
mov rcx, qword [rax + 8]
mov eax, dword [0x140288a84]
div dword [rcx + 0x34]
inc eax
cmp esi, eax
je 0x1400ae77b
mov rax, qword [rsp + 0x28]
lea r9d, [rbx + 2]
lea r8, [rsp + 0x20]
mov rcx, rax
mov edx, esi
call qword [rax + 0x108]
mov ebx, eax
test eax, eax
jne 0x1400ae77b
mov rax, qword [rsp + 0x20]
xor r9d, r9d
mov edx, esi
mov r8, qword [rax + 8]
mov rcx, rdi
call fcn.1400cc480
mov rcx, qword [rsp + 0x20]
mov ebx, eax
call fcn.140144f90
inc dword [rdi + 0x18]
inc ebp
jmp 0x1400ae707
test ebx, ebx
jne 0x1400ae7c7
mov eax, r14d
mov dword [rdi + 0x38], r14d
sub eax, dword [rdi + 0x18]
inc eax
mov dword [rdi + 0x34], eax
cmp dword [rdi + 0x18], r14d
ja 0x1400ae7d0
cmp dword [rdi + 0x3c], ebx
jne 0x1400aebea
mov rax, qword [rdi + 0x28]
mov rcx, qword [rax + 8]
mov rdx, qword [rcx]
mov rax, qword [rdx + 0x70]
mov qword [rdi + 0x40], rax
mov qword [rdx + 0x70], rdi
mov dword [rdi + 0x3c], 1
jmp 0x1400aebea
cmp ebx, 0x65
jne 0x1400aebea
test r14d, r14d
jne 0x1400ae828
mov rsi, qword [rdi + 8]
cmp byte [rsi + 0x11], r14b
je 0x1400ae7f0
inc dword [rsi + 0x14]
cmp byte [rsi + 0x12], r14b
jne 0x1400ae7f0
mov rcx, rsi
call fcn.1400cf920
mov rax, qword [rsi + 8]
mov dword [rax + 0x40], 0
mov rcx, qword [rsi + 8]
call fcn.140104200
cmp byte [rsi + 0x11], 0
mov ebx, eax
je 0x1400ae819
dec dword [rsi + 0x14]
jne 0x1400ae819
mov rcx, rsi
call fcn.140177260
mov r14d, 1
test ebx, ebx
je 0x1400ae828
cmp ebx, 0x65
jne 0x1400ae87c
mov rsi, qword [rdi + 8]
mov ebp, dword [rdi + 0x10]
mov rbx, qword [rsi + 8]
inc ebp
cmp byte [rsi + 0x11], 0
je 0x1400ae84c
inc dword [rsi + 0x14]
cmp byte [rsi + 0x12], 0
jne 0x1400ae84c
mov rcx, rsi
call fcn.1400cf920
mov rcx, qword [rbx + 0x18]
mov r15, qword [rcx + 0x50]
mov rcx, qword [rcx + 0x70]
call fcn.1401450d0
mov ebx, eax
test eax, eax
jne 0x1400ae869
bswap ebp
mov dword [r15 + 0x28], ebp
cmp byte [rsi + 0x11], 0
je 0x1400ae87c
dec dword [rsi + 0x14]
jne 0x1400ae87c
mov rcx, rsi
call fcn.140177260
test ebx, ebx
jne 0x1400aebea
mov rcx, qword [rdi]
test rcx, rcx
je 0x1400ae891
call fcn.14014c2b0
cmp r12d, 5
jne 0x1400ae8af
mov rcx, qword [rdi + 8]
lea edx, [r12 - 3]
call fcn.14011e900
mov ebx, eax
test eax, eax
jne 0x1400aebea
mov ebp, dword [rsp + 0x80]
movsxd r8, dword [rsp + 0x70]
cmp r8d, ebp
jge 0x1400ae8ef
mov eax, ebp
cdq
idiv r8d
mov ecx, eax
dec eax
add eax, r14d
cdq
idiv ecx
xor edx, edx
mov esi, eax
mov rax, qword [rdi + 8]
mov rcx, qword [rax + 8]
mov eax, dword [0x140288a84]
div dword [rcx + 0x34]
inc eax
cmp esi, eax
jne 0x1400ae8fb
dec esi
jmp 0x1400ae8fb
mov eax, r8d
cdq
idiv ebp
mov esi, eax
imul esi, r14d
cmp r8d, ebp
jge 0x1400aeb4b
mov ebp, dword [r13 + 0x20]
movsxd r12, r14d
mov r14, qword [r13 + 0x48]
imul r12, r8
mov r15, r8
cmp esi, ebp
ja 0x1400ae9c1
mov rax, qword [rdi + 8]
xor edx, edx
mov rcx, qword [rax + 8]
mov eax, dword [0x140288a84]
div dword [rcx + 0x34]
inc eax
cmp esi, eax
je 0x1400ae9b5
lea r8, [rsp + 0x20]
xor r9d, r9d
mov edx, esi
mov rcx, r13
call qword [r13 + 0x108]
mov ebx, eax
test eax, eax
jne 0x1400ae9b5
mov rcx, qword [rsp + 0x20]
call fcn.1401450d0
mov r8, qword [rsp + 0x20]
mov ebx, eax
test r8, r8
je 0x1400ae9b5
test byte [r8 + 0x34], 0x20
je 0x1400ae9ad
mov r10, qword [r8 + 0x28]
dec dword [r10 + 0x98]
mov rax, qword [r10 + 0xa8]
mov qword [r8 + 0x20], rax
mov rcx, qword [r10 + 0x48]
mov qword [r10 + 0xa8], r8
mov edx, dword [r8 + 0x30]
mov r9, qword [rcx]
mov r8, qword [r8 + 8]
dec edx
imul rdx, qword [r10 + 0xc0]
call qword [r9 + 0x90]
jmp 0x1400ae9b5
mov rcx, r8
call fcn.140146430
inc esi
test ebx, ebx
je 0x1400ae916
jmp 0x1400ae9d5
test ebx, ebx
jne 0x1400ae9d5
lea r8d, [rbx + 1]
xor edx, edx
mov rcx, r13
call fcn.1401435a0
mov ebx, eax
mov eax, dword [rsp + 0x80]
mov rbp, r12
add eax, dword [0x140288a84]
movsxd rcx, eax
mov eax, dword [rsp + 0x70]
cmp rcx, r12
cmovl rbp, rcx
add eax, dword [0x140288a84]
movsxd rsi, eax
test ebx, ebx
jne 0x1400aebea
cmp rsi, rbp
jge 0x1400aeace
mov rax, rsi
lea r8, [rsp + 0x80]
xor r9d, r9d
cqo
mov qword [rsp + 0x80], 0
idiv r15
lea edx, [rax + 1]
mov rax, qword [rsp + 0x28]
mov rcx, rax
call qword [rax + 0x108]
mov ebx, eax
test eax, eax
jne 0x1400aea63
mov rax, qword [rsp + 0x80]
mov r10, qword [r14]
mov r8d, dword [rsp + 0x70]
mov rdx, qword [rax + 8]
mov r9, rsi
mov rcx, r14
call qword [r10 + reloc.ODBC32.dll_SQLAllocHandle]
mov ebx, eax
mov r8, qword [rsp + 0x80]
test r8, r8
je 0x1400aeabe
test byte [r8 + 0x34], 0x20
je 0x1400aeab6
mov r10, qword [r8 + 0x28]
dec dword [r10 + 0x98]
mov rax, qword [r10 + 0xa8]
mov qword [r8 + 0x20], rax
mov rcx, qword [r10 + 0x48]
mov qword [r10 + 0xa8], r8
mov edx, dword [r8 + 0x30]
mov r9, qword [rcx]
mov r8, qword [r8 + 8]
dec edx
imul rdx, qword [r10 + 0xc0]
call qword [r9 + 0x90]
jmp 0x1400aeabe
mov rcx, r8
call fcn.140146430
add rsi, r15
test ebx, ebx
je 0x1400aea04
jmp 0x1400aebea
test ebx, ebx
jne 0x1400aebea
mov rax, qword [r14]
lea rdx, [rsp + 0x70]
mov rcx, r14
call qword [rax + 0x30]
mov ebx, eax
test eax, eax
jne 0x1400aeaff
cmp qword [rsp + 0x70], r12
jle 0x1400aeaff
mov rax, qword [r14]
mov rdx, r12
mov rcx, r14
call qword [rax + 0x20]
mov ebx, eax
test ebx, ebx
jne 0x1400aebea
mov rcx, qword [r13 + 0x48]
mov rax, qword [rcx]
test rax, rax
je 0x1400aeb29
lea edx, [rbx + 0x15]
xor r8d, r8d
call qword [rax + 0x50]
mov ebx, eax
cmp eax, 0xc
je 0x1400aeb29
test eax, eax
jne 0x1400aeb5e
jmp 0x1400aeb2b
xor ebx, ebx
cmp byte [r13 + 0xb], 0
jne 0x1400aeb5e
movzx edx, byte [r13 + 0xe]
mov rcx, qword [r13 + 0x48]
test edx, edx
je 0x1400aeb47
mov rax, qword [rcx]
call qword [rax + 0x28]
jmp 0x1400aeb5c
xor ebx, ebx
jmp 0x1400aeb5e
xor r8d, r8d
xor edx, edx
mov rcx, r13
mov dword [r13 + 0x20], esi
call fcn.1401435a0
mov ebx, eax
test ebx, ebx
jne 0x1400aebea
mov rsi, qword [rdi + 8]
cmp byte [rsi + 0x10], bl
je 0x1400aebe5
cmp byte [rsi + 0x11], bl
je 0x1400aeb84
inc dword [rsi + 0x14]
cmp byte [rsi + 0x12], bl
jne 0x1400aeb84
mov rcx, rsi
call fcn.1400cf920
cmp byte [rsi + 0x10], 2
jne 0x1400aebca
mov r14, qword [rsi + 8]
mov rcx, qword [r14]
call fcn.140143780
mov ebx, eax
test eax, eax
je 0x1400aebb1
cmp byte [rsi + 0x11], 0
je 0x1400aebea
dec dword [rsi + 0x14]
jne 0x1400aebea
mov rcx, rsi
call fcn.140177260
jmp 0x1400aebea
dec dword [rsi + 0x1c]
mov rcx, qword [r14 + 0x60]
mov byte [r14 + 0x24], 1
call fcn.14011a800
mov qword [r14 + 0x60], 0
mov rcx, rsi
call fcn.1400cf3a0
cmp byte [rsi + 0x11], 0
je 0x1400aebe5
dec dword [rsi + 0x14]
jne 0x1400aebe5
mov rcx, rsi
call fcn.140177260
mov ebx, 0x65
cmp dword [rsp + 0x88], 0
mov r13, qword [rsp + 0x40]
mov r12, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x78]
je 0x1400aec79
mov rcx, qword [rdi + 0x28]
xor edx, edx
call fcn.14011b550
mov rsi, qword [rdi + 0x28]
cmp byte [rsi + 0x10], 0
je 0x1400aec79
cmp byte [rsi + 0x11], 0
je 0x1400aec2f
inc dword [rsi + 0x14]
cmp byte [rsi + 0x12], 0
jne 0x1400aec2f
mov rcx, rsi
call fcn.1400cf920
cmp byte [rsi + 0x10], 2
jne 0x1400aec5e
mov r14, qword [rsi + 8]
mov rcx, qword [r14]
call fcn.140143780
test eax, eax
jne 0x1400aec66
dec dword [rsi + 0x1c]
mov rcx, qword [r14 + 0x60]
mov byte [r14 + 0x24], 1
call fcn.14011a800
mov qword [r14 + 0x60], 0
mov rcx, rsi
call fcn.1400cf3a0
cmp byte [rsi + 0x11], 0
je 0x1400aec79
dec dword [rsi + 0x14]
jne 0x1400aec79
mov rcx, rsi
call fcn.140177260
mov r14, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x58]
cmp ebx, 0xc0a
mov eax, 7
cmove ebx, eax
mov dword [rdi + 0x30], ebx
mov rax, qword [rdi]
mov r15, qword [rsp + 0x30]
test rax, rax
je 0x1400aecb0
mov rcx, qword [rax + 0x18]
test rcx, rcx
je 0x1400aecb0
call qword [0x140288be0]
mov rcx, qword [rdi + 0x28]
cmp byte [rcx + 0x11], 0
je 0x1400aecc4
dec dword [rcx + 0x14]
jne 0x1400aecc4
call fcn.140177260
mov rcx, qword [rdi + 0x20]
mov rdi, qword [rsp + 0x50]
mov rcx, qword [rcx + 0x18]
test rcx, rcx
je 0x1400aecdc
call qword [0x140288be0]
mov eax, ebx
add rsp, 0x60
pop rbx
ret