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

Disassembly:
sub esp, 0xe0
push ebx
mov ebx, dword [esp + 0xe8]
xor eax, eax
push ebp
inc eax
push esi
mov esi, dword [ebx]
mov dword [esp + 0x58], eax
mov dword [esp + 0x24], eax
xor eax, eax
push edi
push ebx
mov dword [esp + 0x70], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x20], esi
call fcn.1014a41d
mov ebp, dword [esp + 0xfc]
mov edi, eax
mov dword [esp + 0x3c], edi
pop ecx
test ebp, ebp
je 0x1015529f
cmp byte [esi + 0x51], 0
jne 0x1015529f
xor eax, eax
cmp dword [ebx + 0x24], eax
jne 0x1015529f
push eax
push eax
push eax
push 0x15
push ebx
call fcn.1021b520
add esp, 0x14
test eax, eax
jne 0x1015529f
mov eax, dword [esp + 0xfc]
cmp byte [eax], 6
ja 0x10153dcf
cmp dword [ebp + 0x30], 0
je 0x10153dbc
push dword [ebp + 0x30]
push esi
call fcn.1012a078
pop ecx
pop ecx
xor eax, eax
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 4]
and eax, 0xfffffffe
or eax, 0x400000
mov dword [ebp + 4], eax
xor eax, eax
push eax
push ebp
push ebx
call fcn.1021b520
xor eax, eax
add esp, 0xc
cmp dword [ebx + 0x24], eax
jne 0x10154018
cmp byte [esi + 0x51], al
jne 0x10154018
test dword [ebp + 4], 0x800000
je 0x10153e5d
mov ecx, dword [ebp + 0x20]
inc eax
mov dword [esp + 0x20], eax
cmp dword [ecx], eax
jle 0x10153e5d
mov esi, dword [ecx + 0x18]
push 0x48
pop edx
mov dword [esp + 0x50], esi
mov dword [esp + 0x14], edx
cmp esi, dword [edx + ecx + 0x18]
jne 0x10153e4d
mov esi, dword [ecx + 0x14]
mov eax, dword [edx + ecx + 0x14]
test esi, esi
jne 0x10153e2a
neg eax
sbb eax, eax
jmp 0x10153e3e
test eax, eax
je 0x10153e46
push eax
push esi
call fcn.101565fc
mov edx, dword [esp + 0x1c]
pop ecx
pop ecx
mov ecx, dword [ebp + 0x20]
test eax, eax
je 0x10153fff
mov esi, dword [ecx + 0x18]
mov eax, dword [esp + 0x20]
inc eax
add edx, 0x48
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], edx
cmp eax, dword [ecx]
jl 0x10153e13
mov eax, dword [esp + 0xfc]
cmp byte [eax], 9
jne 0x10153e72
push ebp
push ebx
call fcn.1012c621
pop ecx
pop ecx
push ebp
push ebx
call fcn.10167fdf
mov dword [esp + 0x30], eax
pop ecx
pop ecx
test eax, eax
jne 0x10154018
mov eax, dword [ebp + 4]
mov esi, dword [ebp + 0x20]
shr eax, 3
and eax, 1
mov dword [esp + 0x24], esi
mov dword [esp + 0x3c], eax
xor eax, eax
push 0x28
push eax
lea eax, [esp + 0x80]
push eax
call sub.VCRUNTIME140.dll_memset
mov eax, dword [ebp + 0x30]
xor edx, edx
add esp, 0xc
mov dword [esp + 0x78], eax
mov ecx, edx
mov dword [esp + 0x10], edx
cmp dword [ebp + 0x34], edx
jne 0x10153fd7
cmp ecx, dword [esi]
jge 0x10154043
imul eax, ecx, 0x48
mov dword [esp + 0x50], eax
test byte [eax + esi + 0x2c], 8
mov edi, dword [eax + esi + 0x18]
mov edx, dword [eax + esi + 0x1c]
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x38]
mov dword [esp + 0x2c], edx
je 0x10153f32
push dword [eax + esi + 0x34]
push dword [ebp + 0x24]
call fcn.1021b520
pop ecx
pop ecx
test eax, eax
je 0x10153f2a
mov eax, dword [esp + 0x1c]
mov ecx, 0x2000
test word [eax + 0x4c], cx
jne 0x10153f2a
mov eax, dword [esp + 0x50]
push dword [eax + esi + 0x34]
and byte [eax + esi + 0x2c], 0xd7
push dword [ebp + 0x24]
call fcn.10169a97
pop ecx
pop ecx
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x2c]
test edx, edx
je 0x10153fc8
mov eax, dword [edx + 0x1c]
mov ebx, dword [esp + 0x30]
mov eax, dword [eax]
mov dword [esp + 0x14], eax
movsx eax, word [ebx + 0x2a]
mov ebx, dword [esp + 0xf4]
cmp eax, dword [esp + 0x14]
jne 0x10154028
test byte [edx + 4], 8
jne 0x10153fc8
xor eax, eax
cmp dword [edx + 0x30], eax
je 0x10153f81
test ecx, ecx
jne 0x10153f81
test dword [ebp + 4], 0x40000
je 0x10153f81
cmp dword [esi], 1
je 0x10153fc8
test byte [esi + 0x74], 0xa
jne 0x10153fc8
push dword [esp + 0x3c]
push ecx
push ebp
push ebx
call fcn.1012ba07
add esp, 0x10
test eax, eax
je 0x10153fa0
xor eax, eax
cmp dword [ebx + 0x24], eax
jne 0x10154018
or dword [esp + 0x10], 0xffffffff
mov eax, dword [esp + 0x1c]
mov esi, dword [ebp + 0x20]
mov dword [esp + 0x24], esi
cmp byte [eax + 0x51], 0
jne 0x10154018
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 0x10]
cmp byte [eax], 8
jbe 0x10153fc8
mov eax, dword [ebp + 0x30]
mov dword [esp + 0x78], eax
inc ecx
cmp dword [ebp + 0x34], 0
mov dword [esp + 0x10], ecx
je 0x10153ec8
push dword [esp + 0xfc]
push ebp
push ebx
call fcn.101301b7
mov esi, eax
add esp, 0xc
xor eax, eax
cmp dword [ebp + 0x38], eax
jne 0x10153ff8
push ebx
call fcn.1015fa6e
pop ecx
mov eax, esi
jmp 0x101552a2
test esi, esi
jne 0x10154009
mov esi, dword [esp + 0x50]
mov esi, dword [esi]
push esi
push str.target_object_alias_may_not_appear_in_FROM_clause:__s
push ebx
call fcn.10143429
add esp, 0xc
push ebx
call fcn.1015fa6e
mov eax, dword [esp + 0x2c]
pop ecx
jmp 0x101552a2
push dword [esp + 0x14]
mov ecx, dword [esp + 0x34]
push dword [ecx]
push eax
push str.expected__d_columns_for__s_but_got__d
push ebx
call fcn.10143429
add esp, 0x14
jmp 0x10154018
mov eax, dword [esi]
xor edx, edx
cmp eax, 1
jle 0x10154063
mov ecx, dword [esp + 0x1c]
cmp word [ecx + 0x4c], dx
jl 0x10154063
push ebp
push ebx
call fcn.1013512a
mov eax, dword [esi]
xor edx, edx
pop ecx
pop ecx
mov dword [esp + 0x30], 0x1025e560
mov ecx, edx
mov dword [esp + 0x20], ecx
test eax, eax
jle 0x1015435b
mov dword [esp + 0x24], esi
jmp 0x10154081
xor edx, edx
imul eax, ecx, 0x48
add eax, 8
add esi, eax
mov dword [esp + 0x2c], esi
mov eax, dword [esi + 0x38]
or eax, dword [esi + 0x3c]
jne 0x101540b5
cmp dword [esi + 8], eax
je 0x101540b5
push dword [esi + 4]
push dword [esp + 0x34]
push dword [esi + 8]
push 0x14
push ebx
call fcn.1021b520
mov ecx, dword [esp + 0x34]
add esp, 0x14
xor edx, edx
mov eax, dword [esi + 0x14]
mov dword [esp + 0x10], eax
test eax, eax
je 0x1015434a
lea eax, [esp + 0x14]
mov dword [esp + 0x14], edx
push eax
push ebp
call fcn.1012dc3c
mov eax, dword [esp + 0x1c]
add dword [ebx + 0xd4], eax
mov eax, dword [esp + 0x24]
pop ecx
pop ecx
mov ecx, 0x1000
test word [eax + 0x4c], cx
jne 0x1015410c
movzx eax, byte [esi + 0x24]
shr eax, 5
and eax, 1
push eax
push dword [esi + 0x2c]
push dword [ebp + 0x24]
push dword [esp + 0x1c]
push ebx
call fcn.1013540f
add esp, 0x14
cmp dword [esp + 0x20], 0
mov eax, dword [ebx + 0xf4]
mov dword [esp + 0x64], eax
mov eax, dword [esi + 8]
mov dword [ebx + 0xf4], eax
jne 0x101541f9
mov eax, dword [esp + 0x24]
cmp dword [eax], 1
je 0x1015413d
test byte [eax + 0x74], 0xa
je 0x101541f9
mov esi, dword [edi + 0x6c]
mov ecx, dword [esp + 0x2c]
inc esi
inc dword [ebx + 0x2c]
mov eax, dword [ebx + 0x2c]
push esi
push 0
push eax
push 0xd
push edi
mov dword [ecx + 0x1c], eax
call fcn.1021b520
mov eax, dword [esp + 0x40]
mov byte [esp + 0xc0], 0xd
mov dword [eax + 0x18], esi
mov eax, dword [eax + 0x1c]
mov dword [esp + 0xc4], eax
xor eax, eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xd4], eax
mov dword [esp + 0xcc], eax
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0x24]
push dword [eax + 0x10]
push str.CO_ROUTINE__u
push 1
push ebx
call fcn.1015fa1f
lea eax, [esp + 0xd0]
push eax
push dword [esp + 0x38]
push ebx
call fcn.10153d2c
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x40]
mov ecx, dword [edx + 0x10]
mov ax, word [eax + 2]
mov word [ecx + 0x2e], ax
push dword [edx + 0x1c]
mov eax, dword [esp + 0xec]
or dword [edx + 0x28], 0x10
push edi
mov dword [edx + 0x20], eax
call fcn.10159fcc
lea eax, [esi - 1]
push eax
push edi
call fcn.1015fcbe
mov ecx, dword [edi + 0x6c]
add esp, 0x40
mov dword [eax + 8], ecx
jmp 0x1015430c
xor ecx, ecx
inc dword [ebx + 0x2c]
mov eax, dword [ebx + 0x2c]
push eax
push ecx
push 0x45
push edi
mov dword [esp + 0x24], ecx
mov dword [esi + 0x1c], eax
call fcn.101596d3
add esp, 0x10
mov dword [esp + 0x18], eax
test byte [esi + 0x28], 8
lea ecx, [eax + 1]
mov dword [esi + 0x18], ecx
jne 0x10154233
push 0x11
push edi
call fcn.101596a4
pop ecx
pop ecx
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x24]
push esi
push ecx
call fcn.1012eb9c
mov dword [esp + 0x58], eax
pop ecx
pop ecx
test eax, eax
je 0x10154270
push dword [eax + 0x2c]
push dword [esi + 0x2c]
push 0x62
push edi
call fcn.101596d3
mov eax, dword [esp + 0x60]
add esp, 0x10
mov ecx, dword [esp + 0x10]
mov eax, dword [eax + 0x14]
movzx eax, word [eax + 2]
mov word [ecx + 2], ax
mov ecx, eax
jmp 0x101542d1
mov eax, dword [esi + 0x2c]
mov dword [esp + 0xb0], eax
xor eax, eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0xc0], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0x10]
mov byte [esp + 0xac], 0xc
push dword [eax + 0x10]
push str.MATERIALIZE__u
push 1
push ebx
call fcn.1015fa1f
lea eax, [esp + 0xbc]
push eax
push dword [esp + 0x24]
push ebx
call fcn.10153d2c
mov eax, dword [esp + 0x2c]
add esp, 0x1c
movzx ecx, word [eax + 2]
mov eax, dword [esi + 0x10]
mov word [eax + 0x2e], cx
mov eax, dword [esp + 0x14]
test eax, eax
je 0x101542ef
push eax
push edi
call fcn.1015fcbe
pop ecx
pop ecx
mov ecx, dword [edi + 0x6c]
mov dword [eax + 8], ecx
push dword [esi + 0x1c]
push 0x41
push edi
call fcn.101596ba
push dword [esp + 0x24]
mov esi, eax
push edi
call fcn.1015fcbe
add esp, 0x14
mov dword [eax + 4], esi
mov eax, dword [esp + 0x1c]
xor ecx, ecx
mov byte [ebx + 0x13], cl
mov dword [ebx + 0x1c], ecx
cmp byte [eax + 0x51], cl
jne 0x10155285
lea eax, [esp + 0x14]
mov dword [esp + 0x14], ecx
push eax
push ebp
call fcn.1012dc3c
mov eax, dword [esp + 0x1c]
sub dword [ebx + 0xd4], eax
mov eax, dword [esp + 0x6c]
pop ecx
pop ecx
mov ecx, dword [esp + 0x20]
mov dword [ebx + 0xf4], eax
mov esi, dword [esp + 0x24]
inc ecx
mov dword [esp + 0x20], ecx
cmp ecx, dword [esi]
jl 0x1015407f
mov eax, dword [ebp + 0x24]
xor ecx, ecx
mov esi, dword [ebp + 0x1c]
inc ecx
mov dword [esp + 0x44], eax
mov eax, dword [ebp + 0x28]
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x2c]
mov dword [esp + 0x68], eax
mov al, byte [ebp + 4]
and al, cl
mov dword [esp + 0x50], esi
mov byte [esp + 0x36], al
mov byte [esp + 0x18], al
mov byte [esp + 0xa0], al
mov eax, dword [ebp + 4]
and al, 9
cmp al, cl
jne 0x101543cf
push 0xffffffffffffffff
push esi
push dword [esp + 0x80]
call fcn.1014647d
add esp, 0xc
test eax, eax
jne 0x101543cf
cmp dword [ebp + 0x44], eax
jne 0x101543d1
and dword [ebp + 4], 0xfffffffe
push eax
push esi
push dword [esp + 0x24]
call fcn.101464ed
add esp, 0xc
mov dword [esp + 0x10], eax
or dword [ebp + 4], 8
mov dword [ebp + 0x28], eax
xor eax, eax
cmp dword [esp + 0x78], 0
je 0x10154420
push dword [esi]
push eax
push dword [esp + 0x80]
push ebx
call fcn.1014c41b
mov edx, dword [ebx + 0x28]
push 0xfffffffffffffff7
push eax
xor eax, eax
mov dword [esp + 0x98], edx
push eax
mov eax, dword [esp + 0x94]
lea ecx, [edx + 1]
mov dword [ebx + 0x28], ecx
mov eax, dword [eax]
inc eax
add eax, dword [esi]
push eax
push edx
push 0x64
push edi
call fcn.1021b520
add esp, 0x2c
mov dword [esp + 0x8c], eax
jmp 0x10154428
or dword [esp + 0x8c], 0xffffffff
mov eax, dword [esp + 0xfc]
cmp byte [eax], 0xc
jne 0x10154444
push dword [esi]
push dword [eax + 4]
push 0x64
push edi
call fcn.101596d3
add esp, 0x10
dec dword [ebx + 0x38]
mov esi, 0x4000
mov eax, dword [ebx + 0x38]
mov dword [esp + 0xcc], eax
test dword [ebp + 4], esi
jne 0x10154464
mov ecx, 0x140
mov word [ebp + 2], cx
push eax
push ebp
push ebx
call fcn.10125fb7
xor ecx, ecx
add esp, 0xc
cmp dword [ebp + 8], ecx
jne 0x1015449b
cmp dword [esp + 0x8c], ecx
jl 0x1015449b
push dword [esp + 0x8c]
push edi
call fcn.1015fcbe
pop ecx
pop ecx
mov byte [eax], 0x6f
or byte [esp + 0x98], 1
xor ecx, ecx
test byte [ebp + 4], 1
je 0x101544eb
mov esi, dword [ebx + 0x28]
push 0xfffffffffffffff7
push ecx
push ecx
lea eax, [esi + 1]
mov dword [esp + 0xb0], esi
mov dword [ebx + 0x28], eax
push dword [ebp + 0x1c]
push ebx
call fcn.1014c41b
add esp, 0x10
push eax
xor eax, eax
push eax
push eax
push esi
push 0x64
push edi
call fcn.1021b520
push 8
push edi
mov dword [esp + 0xcc], eax
call fcn.10159a50
add esp, 0x24
mov esi, 0x4000
push 3
pop eax
jmp 0x101544ed
mov al, cl
cmp dword [esp + 0x3c], 0
mov ecx, dword [esp + 0x10]
mov byte [esp + 0xa1], al
mov dword [esp + 0x2c], eax
jne 0x101546e3
test ecx, ecx
jne 0x101546e3
mov eax, dword [esp + 0x18]
movzx ecx, al
mov eax, 0x100
imul ecx, eax
mov ax, word [ebp + 4]
and ax, si
or cx, ax
mov eax, dword [ebp + 0x44]
movzx esi, cx
mov dword [esp + 0x14], eax
test eax, eax
je 0x1015453f
push ebp
push ebx
call fcn.101670a3
pop ecx
pop ecx
movsx eax, word [ebp + 2]
mov ecx, dword [esp + 0x24]
push eax
push esi
push dword [ebp + 0x1c]
push dword [esp + 0x84]
push dword [esp + 0x54]
push ecx
push ebx
call fcn.1016406a
mov esi, eax
add esp, 0x1c
mov dword [esp + 0x30], esi
test esi, esi
je 0x10155281
movzx eax, word [esi + 0x34]
cmp ax, word [ebp + 2]
jge 0x1015457d
mov word [ebp + 2], ax
cmp byte [esp + 0x36], 0
je 0x101545a1
mov cl, byte [esi + 0x2f]
mov edx, dword [esp + 0x2c]
test cl, cl
movzx edx, dl
movzx eax, cl
cmovne edx, eax
mov dword [esp + 0x2c], edx
mov byte [esp + 0xa1], dl
mov eax, dword [esp + 0x78]
mov dword [esp + 0x18], eax
test eax, eax
je 0x101545d5
movsx edx, byte [esi + 0x2d]
push esi
mov dword [esp + 0x80], edx
call fcn.10166ceb
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x1c]
pop ecx
xor ecx, ecx
cmp edx, dword [eax]
cmove eax, ecx
mov dword [esp + 0x78], eax
cmp dword [esp + 0x8c], 0
jl 0x101545f2
test eax, eax
jne 0x101545f2
push dword [esp + 0x8c]
push edi
call fcn.10159a6c
pop ecx
pop ecx
cmp dword [esp + 0x14], 0
je 0x101546af
mov ebx, dword [ebx + 0x38]
mov eax, dword [esp + 0xf4]
lea esi, [ebx - 1]
sub ebx, 2
inc dword [eax + 0x2c]
mov edi, dword [eax + 0x2c]
push esi
push edi
push dword [esp + 0x38]
lea ebp, [ebx - 1]
push dword [esp + 0x104]
mov dword [eax + 0x38], ebp
push eax
call fcn.10167271
push ebp
xor eax, eax
push eax
push 0xb
push dword [esp + 0x58]
call fcn.101596d3
push esi
mov esi, dword [esp + 0x60]
push esi
call fcn.10161d60
push ebp
push ebx
push dword [esp + 0x130]
xor eax, eax
mov dword [esp + 0xcc], eax
lea eax, [esp + 0xd8]
push eax
lea eax, [esp + 0xb4]
push eax
push 0xffffffffffffffff
push dword [esp + 0x13c]
push dword [esp + 0x13c]
call fcn.10139431
add esp, 0x4c
push ebx
push esi
call fcn.10161d60
push edi
push 0x41
mov edi, esi
push edi
call fcn.101596ba
push ebp
push edi
call fcn.10161d60
mov ebx, dword [esp + 0x110]
add esp, 0x1c
mov ebp, dword [esp + 0xf8]
jmp 0x10155213
push dword [esi + 0x20]
lea eax, [esp + 0xa4]
push dword [esi + 0x1c]
push dword [esp + 0x104]
push eax
lea eax, [esp + 0x88]
push eax
push 0xffffffffffffffff
push ebp
push ebx
call fcn.10139431
push esi
call fcn.10166231
add esp, 0x24
jmp 0x10155213
xor eax, eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x64], eax
test ecx, ecx
je 0x1015477b
mov edx, dword [ebp + 0x1c]
mov eax, dword [edx]
test eax, eax
jle 0x10154712
add edx, 0x16
xor esi, esi
dec eax
mov word [edx], si
lea edx, [edx + 0x14]
test eax, eax
jg 0x10154705
mov eax, dword [ecx]
test eax, eax
jle 0x10154728
lea edx, [ecx + 0x16]
xor esi, esi
dec eax
mov word [edx], si
lea edx, [edx + 0x14]
test eax, eax
jg 0x1015471b
push 0x42
pop eax
cmp word [ebp + 2], ax
jle 0x10154735
mov word [ebp + 2], ax
mov eax, dword [esp + 0x78]
test eax, eax
je 0x10154781
mov edx, dword [ecx]
cmp edx, dword [eax]
jne 0x10154781
xor esi, esi
test edx, edx
jle 0x10154761
xor edx, edx
mov al, byte [edx + eax + 0xc]
lea edx, [edx + 0x14]
and al, 1
inc esi
mov byte [ecx + edx - 8], al
mov eax, dword [esp + 0x78]
cmp esi, dword [ecx]
jl 0x1015474b
push 0xffffffffffffffff
push eax
push ecx
call fcn.1014647d
add esp, 0xc
test eax, eax
jne 0x10154781
mov dword [esp + 0x64], 1
jmp 0x10154781
xor eax, eax
mov word [ebp + 2], ax
dec dword [ebx + 0x38]
mov eax, dword [ebx + 0x38]
mov dword [esp + 0x20], eax
xor eax, eax
push eax
push 0x38
push dword [esp + 0x24]
call fcn.10141c12
mov esi, eax
add esp, 0xc
mov dword [esp + 0x60], esi
test esi, esi
je 0x10155281
mov ecx, dword [ebx + 0x80]
xor eax, eax
push 0x20
push eax
mov dword [esi + 0x34], ecx
lea eax, [esp + 0xd8]
mov dword [ebx + 0x80], esi
mov ecx, dword [ebp + 0x10]
push eax
mov dword [esi + 0x30], ecx
call sub.VCRUNTIME140.dll_memset
mov eax, dword [ebx + 0x2c]
add esp, 0xc
mov ecx, dword [esp + 0x24]
inc eax
mov dword [esp + 0xd0], ebx
mov dword [esp + 0xd4], ecx
mov dword [esp + 0xd8], esi
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x10]
test eax, eax
je 0x10154800
mov ecx, dword [eax]
jmp 0x10154802
xor ecx, ecx
push dword [esp + 0x50]
mov dword [esi + 0x18], eax
lea eax, [esp + 0xd4]
push eax
mov dword [esi + 0xc], ecx
call fcn.10143832
push dword [esp + 0x80]
lea eax, [esp + 0xdc]
push eax
call fcn.10143832
add esp, 0x10
cmp dword [esp + 0x68], 0
je 0x1015489e
cmp dword [esp + 0x10], 0
je 0x1015488b
xor eax, eax
push 0x1c
push eax
lea eax, [esp + 0xb4]
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov dword [esp + 0xac], ebx
cmp dword [ebp + 0x2c], 0
mov dword [esp + 0xb0], 0x1012db40
mov dword [esp + 0xc4], ebp
je 0x10154884
push dword [ebp + 0x2c]
lea eax, [esp + 0xb0]
push eax
call fcn.1016f153
pop ecx
pop ecx
mov eax, dword [ebp + 0x24]
mov dword [esp + 0x44], eax
push dword [esp + 0x68]
lea eax, [esp + 0xd4]
push eax
call fcn.1021b520
pop ecx
pop ecx
mov eax, dword [esi + 0x20]
mov dword [esi + 0x24], eax
xor eax, eax
cmp dword [ebp + 0x28], eax
jne 0x101548dc
cmp dword [ebp + 0x2c], eax
jne 0x101548dc
cmp dword [esi + 0x2c], 1
jne 0x101548dc
lea eax, [esp + 0x40]
push eax
mov eax, dword [esi + 0x28]
push dword [eax]
push dword [esp + 0x24]
call fcn.1021b520
mov byte [esp + 0x43], al
add esp, 0xc
mov eax, dword [esp + 0x40]
mov dword [esp + 0x6c], eax
xor eax, eax
jmp 0x101548e0
mov byte [esp + 0x37], al
mov edx, dword [esi + 0x2c]
mov dword [esp + 0x14], eax
test edx, edx
jle 0x1015496f
mov ecx, dword [esp + 0xe8]
mov ebp, eax
mov ebx, eax
mov eax, dword [esi + 0x28]
or ecx, 0x20000
mov edi, dword [eax + ebp]
lea eax, [esp + 0xd0]
mov dword [esp + 0xe8], ecx
push dword [edi + 0x14]
push eax
call fcn.10143832
test dword [edi + 4], 0x1000000
pop ecx
pop ecx
je 0x1015493d
mov eax, dword [edi + 0x2c]
push dword [eax + 0x28]
lea eax, [esp + 0xd4]
push eax
call fcn.1021b520
pop ecx
pop ecx
mov ecx, dword [esp + 0xe8]
add ebp, 0x10
and ecx, 0xfffdffff
inc ebx
mov dword [esp + 0xe8], ecx
cmp ebx, dword [esi + 0x2c]
jl 0x101548fa
mov ebx, dword [esp + 0xf4]
mov ebp, dword [esp + 0xf8]
mov edi, dword [esp + 0x38]
mov edx, dword [esi + 0x2c]
mov eax, dword [ebx + 0x2c]
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0x1c]
cmp byte [eax + 0x51], 0
jne 0x10155285
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x10154ef4
mov eax, dword [ebx + 0x28]
mov dword [esi + 4], eax
xor eax, eax
inc dword [ebx + 0x28]
push dword [esi + 0x20]
push eax
push ecx
push ebx
call fcn.1014c41b
push 0xfffffffffffffff7
push eax
mov dword [esp + 0xe0], eax
xor eax, eax
push eax
push dword [esi + 0xc]
push dword [esi + 4]
push 0x6f
push edi
call fcn.1021b520
mov ecx, dword [ebx + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0xa0], eax
mov eax, dword [ebx + 0x2c]
inc eax
mov dword [esp + 0x74], eax
inc eax
mov dword [esp + 0x80], eax
dec ecx
push dword [esp + 0x80]
add eax, 2
mov dword [esp + 0x60], ecx
mov dword [esp + 0x7c], eax
dec ecx
mov dword [ebx + 0x2c], eax
inc eax
mov dword [ebx + 0x38], ecx
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x7c]
add ecx, dword [edx]
mov dword [esp + 0x8c], eax
mov dword [ebx + 0x2c], ecx
lea eax, [ecx + 1]
mov dword [esp + 0x70], eax
mov eax, dword [edx]
add eax, ecx
mov dword [ebx + 0x2c], eax
xor eax, eax
push eax
push 0x45
push edi
call fcn.101596d3
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x98]
mov eax, dword [eax]
dec eax
add eax, ecx
push eax
push ecx
xor eax, eax
push eax
push 0x48
push edi
call fcn.1021b520
add esp, 0x50
push dword [esp + 0x14]
push dword [esp + 0x50]
push 0xc
push edi
call fcn.101596d3
xor edx, edx
mov ecx, 0x240
cmp dword [esp + 0x74], edx
push edx
push 0x40
pop eax
cmovne eax, ecx
movzx eax, ax
push eax
push edx
push dword [esp + 0x2c]
push dword [esp + 0x64]
push dword [esp + 0x48]
push ebx
call fcn.1016406a
mov edx, eax
add esp, 0x2c
mov dword [esp + 0x3c], edx
test edx, edx
je 0x10155281
mov eax, dword [esp + 0x10]
movsx ecx, byte [edx + 0x2d]
cmp ecx, dword [eax]
jne 0x10154aa7
xor eax, eax
mov dword [esp + 0x44], eax
jmp 0x10154c40
cmp byte [esp + 0x36], 0
je 0x10154ab9
test byte [ebp + 4], 1
mov eax, str.DISTINCT
je 0x10154abe
mov eax, str.GROUP_BY
push eax
push ebx
call fcn.10128798
mov eax, dword [esp + 0x18]
pop ecx
pop ecx
mov dword [esp + 0x44], 1
mov eax, dword [eax]
mov edx, eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x20]
test eax, eax
jle 0x10154b25
mov ebp, dword [esi + 0x1c]
mov edi, edx
add ebp, 0x12
mov esi, eax
movsx ecx, word [ebp]
lea eax, [edx + 1]
cmp ecx, edi
lea ebp, [ebp + 0x14]
cmovl eax, edx
mov edx, eax
lea eax, [edi + 1]
cmovl eax, edi
mov edi, eax
sub esi, 1
jne 0x10154af4
mov ebp, dword [esp + 0xf8]
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0x60]
mov dword [esp + 0x24], edx
push edx
push ebx
call fcn.10149ba4
xor ecx, ecx
mov dword [esp + 0x60], eax
push ecx
push ecx
push eax
push dword [esp + 0x24]
push ebx
call fcn.10143c27
xor eax, eax
add esp, 0x1c
mov edx, eax
mov dword [esp + 0x28], edx
cmp dword [esi + 0x20], eax
jle 0x10154ba7
mov ebp, dword [esp + 0x70]
mov ebx, dword [esp + 0x58]
mov dword [esp + 0x18], eax
mov ecx, dword [esi + 0x1c]
add ecx, eax
movsx eax, word [ecx + 0x12]
cmp eax, ebp
jl 0x10154b84
lea eax, [ebx + ebp]
push eax
movsx eax, word [ecx + 0x10]
push eax
push dword [ecx + 8]
push dword [ecx]
push edi
call fcn.1021b520
mov edx, dword [esp + 0x3c]
add esp, 0x14
inc ebp
mov eax, dword [esp + 0x18]
inc edx
add eax, 0x14
mov dword [esp + 0x28], edx
mov dword [esp + 0x18], eax
cmp edx, dword [esi + 0x20]
jl 0x10154b5b
mov ebx, dword [esp + 0xf4]
mov ebp, dword [esp + 0xf8]
push ebx
call fcn.10149be5
mov esi, eax
push esi
push dword [esp + 0x2c]
push dword [esp + 0x64]
push 0x5b
push edi
call fcn.1021b520
mov eax, dword [esp + 0x78]
push esi
push dword [eax + 4]
push 0x84
push edi
call fcn.101596d3
push esi
push ebx
call fcn.10152995
push dword [esp + 0x54]
push dword [esp + 0x8c]
push ebx
call fcn.1021b520
push dword [esp + 0x78]
call fcn.10166231
mov esi, dword [esp + 0xa0]
add esp, 0x40
mov edx, dword [ebx + 0x28]
mov dword [esp + 0x58], edx
mov dword [esi + 8], edx
inc dword [ebx + 0x28]
push ebx
call fcn.10149be5
push dword [esp + 0x28]
mov dword [esp + 0x20], eax
push eax
push edx
push 0x72
push edi
call fcn.1021b520
push dword [esp + 0x38]
push dword [esi + 4]
push 0x23
push edi
call fcn.101596d3
mov edx, dword [esp + 0x64]
xor eax, eax
add esp, 0x28
mov byte [esi + 1], 1
inc eax
cmp dword [esp + 0x64], 0
je 0x10154c73
mov ecx, dword [esp + 0x1c]
test byte [ecx + 0x4c], 4
jne 0x10154c73
test eax, eax
jne 0x10154c5b
test byte [edx + 0x30], 8
je 0x10154c73
push dword [esp + 0x8c]
xor eax, eax
push edi
mov dword [esp + 0x80], eax
call fcn.10159a6c
pop ecx
pop ecx
cmp dword [esp + 0x44], 0
mov eax, dword [edi + 0x6c]
mov dword [esp + 0x28], eax
je 0x10154c97
push dword [esp + 0x58]
push dword [esp + 0x1c]
push dword [esi + 4]
push 0x7e
push edi
call fcn.1021b520
add esp, 0x14
xor eax, eax
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
test ecx, ecx
jle 0x10154cfd
mov ebp, dword [esp + 0x70]
lea edx, [eax + 4]
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x40]
add eax, ebp
cmp dword [esp + 0x44], 0
push eax
je 0x10154cd2
push ebp
push dword [esp + 0x60]
push 0x59
push edi
call fcn.1021b520
add esp, 0x14
jmp 0x10154ce0
mov byte [esi], 1
push dword [edx]
push ebx
call fcn.1021b520
add esp, 0xc
mov eax, dword [esp + 0x10]
inc ebp
mov edx, dword [esp + 0x18]
add edx, 0x14
mov dword [esp + 0x18], edx
mov ecx, dword [eax]
cmp ebp, ecx
jl 0x10154cb2
mov ebp, dword [esp + 0xf8]
mov edx, dword [esp + 0xc8]
test edx, edx
je 0x10154d0c
inc dword [edx]
mov ecx, dword [eax]
push 0xfffffffffffffff7
push edx
push ecx
push dword [esp + 0x4c]
push dword [esp + 0x6c]
push 0x56
push edi
call fcn.1021b520
mov esi, dword [edi + 0x6c]
lea eax, [esi + 1]
push eax
push 0
push eax
push 0x10
push edi
call fcn.1021b520
mov eax, dword [esp + 0x40]
push dword [eax]
push dword [esp + 0x90]
push dword [esp + 0x78]
push ebx
call fcn.1014444e
mov eax, dword [esp + 0x94]
add esp, 0x40
inc eax
push dword [esp + 0x30]
push eax
push 0xc
push edi
call fcn.101596d3
push dword [esp + 0x30]
push dword [esp + 0x68]
push 0x30
push edi
call fcn.101596d3
push dword [esp + 0x34]
push dword [esp + 0x70]
push 0xc
push edi
call fcn.101596d3
push esi
push edi
call fcn.1015fcbe
mov esi, dword [esp + 0x98]
mov ecx, dword [edi + 0x6c]
push esi
push dword [esp + 0x84]
mov dword [eax + 8], ecx
push ebx
call fcn.10169b06
add esp, 0x44
push dword [esp + 0x48]
push 1
push 0x45
push edi
call fcn.101596d3
add esp, 0x10
cmp dword [esp + 0x44], 0
je 0x10154dd2
push dword [esp + 0x28]
push dword [esi + 4]
push 3
push edi
call fcn.101596d3
add esp, 0x10
jmp 0x10154de8
push dword [esp + 0x3c]
call fcn.10166231
push dword [esp + 0x78]
push edi
call fcn.10159a6c
add esp, 0xc
mov esi, dword [esp + 0x54]
push dword [esp + 0x30]
lea eax, [esi + 1]
push eax
push 0xc
push edi
call fcn.101596d3
push dword [esp + 0x30]
push edi
call fcn.1015fce3
mov edi, dword [edi + 0x6c]
push esi
mov esi, dword [esp + 0x54]
push 1
push 0x45
push esi
call fcn.101596d3
mov eax, dword [esp + 0x7c]
inc eax
push eax
push 0x41
push esi
call fcn.101596ba
push dword [esp + 0x64]
push esi
call fcn.10161d60
mov esi, dword [esi + 0x6c]
lea eax, [esi + 2]
push eax
push dword [esp + 0x88]
push 0x30
push dword [esp + 0x80]
call fcn.101596d3
mov eax, dword [esp + 0xa0]
add esp, 0x4c
inc eax
push eax
push 0x41
push dword [esp + 0x40]
call fcn.101596ba
mov eax, dword [esp + 0x6c]
push eax
push ebx
call fcn.1012a9e6
push 0x10
inc esi
push esi
push dword [esp + 0x84]
push ebx
call fcn.10145a70
push edi
push esi
push dword [esp + 0x128]
lea eax, [esp + 0xd0]
push eax
lea eax, [esp + 0xac]
push eax
push 0xffffffffffffffff
push ebp
push ebx
call fcn.10139431
mov eax, dword [esp + 0x98]
add esp, 0x44
mov edi, dword [esp + 0x38]
inc eax
push eax
push 0x41
push edi
call fcn.101596ba
push dword [esp + 0x20]
push edi
call fcn.10161d60
push dword [esp + 0x74]
push ebx
call fcn.10137170
push dword [esp + 0x64]
xor eax, eax
push eax
push 0x45
push edi
call fcn.101596d3
push dword [esp + 0x78]
push 0x41
push edi
call fcn.101596ba
mov esi, dword [esp + 0x58]
add esp, 0x38
jmp 0x1015520a
xor eax, eax
cmp dword [ebp + 0x24], eax
jne 0x101550fc
mov ecx, dword [ebp + 0x1c]
inc eax
cmp dword [ecx], eax
jne 0x101550fc
mov ecx, dword [ebp + 0x20]
cmp dword [ecx], eax
jne 0x101550fc
xor eax, eax
cmp dword [ecx + 0x1c], eax
jne 0x101550fc
mov ecx, dword [ecx + 0x18]
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0x48], ecx
cmp dword [ecx + 0x38], 0
mov eax, dword [eax + 4]
mov dword [esp + 0x74], eax
jne 0x101550fc
cmp byte [eax], 0xa5
jne 0x101550fc
test edx, edx
je 0x101550fc
mov eax, dword [esi + 0x28]
mov eax, dword [eax + 4]
test dword [eax + 4], 0x100
je 0x101550fc
mov eax, dword [esp + 0x74]
test dword [eax + 4], 0x1000002
jne 0x101550fc
test ecx, ecx
je 0x101550fc
push dword [ecx + 0x48]
push dword [ebx]
call fcn.10153cd9
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + 0x28]
push dword [esp + 0x1c]
mov dword [esp + 0x4c], eax
push ebx
lea ecx, [eax + 1]
mov dword [ebx + 0x28], ecx
xor ecx, ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x58]
mov eax, dword [ecx + 0x1c]
mov dword [esp + 0x28], eax
call fcn.1013ff8f
mov eax, dword [esp + 0x58]
push dword [eax]
push 0
push dword [eax + 0x1c]
push dword [esp + 0x30]
push ebx
call fcn.10156889
mov edx, dword [esp + 0x6c]
add esp, 0x24
test byte [edx + 0x24], 0x80
je 0x10154fe2
push edx
call fcn.10152228
pop ecx
mov dword [esp + 0x4c], eax
jmp 0x10154fe6
mov eax, dword [esp + 0x4c]
mov ecx, dword [ebp + 0x20]
mov dword [esp + 0x3c], edx
test byte [ecx + 0x30], 1
jne 0x10155033
mov ecx, dword [edx + 8]
mov dword [esp + 0x3c], edx
test ecx, ecx
je 0x10155033
mov dword [esp + 0x3c], edx
test byte [ecx + 0x38], 4
jne 0x10155024
movzx edi, word [ecx + 0x30]
cmp di, word [edx + 0x30]
jge 0x10155024
cmp dword [ecx + 0x24], 0
jne 0x10155024
test eax, eax
je 0x10155022
cmp di, word [eax + 0x30]
jge 0x10155024
mov eax, ecx
mov ecx, dword [ecx + 0x14]
test ecx, ecx
jne 0x10155002
mov edi, dword [esp + 0x38]
mov dword [esp + 0x4c], eax
test eax, eax
je 0x1015504b
mov ecx, dword [eax + 0x2c]
push eax
push ebx
mov dword [esp + 0x20], ecx
call fcn.1014c4a0
pop ecx
pop ecx
mov dword [esp + 0x28], eax
push 1
push dword [esp + 0x18]
push dword [esp + 0x20]
push dword [esp + 0x4c]
push 0x60
push edi
call fcn.1021b520
mov eax, dword [esp + 0x40]
add esp, 0x18
test eax, eax
je 0x1015507a
push 0xfffffffffffffff7
push eax
push 0xffffffffffffffff
push edi
call fcn.1021b520
add esp, 0x10
mov eax, dword [esi + 0x28]
mov esi, dword [esp + 0x40]
push dword [eax + 8]
push esi
push 0x5c
push edi
call fcn.101596d3
push esi
push 0x74
push edi
call fcn.101596ba
add esp, 0x1c
cmp byte [ebx + 0xcb], 2
jne 0x101551d7
mov edx, dword [esp + 0x4c]
test edx, edx
je 0x101550c5
mov ecx, dword [esp + 0x48]
test byte [ecx + 0x24], 0x80
je 0x101550c1
mov eax, dword [edx + 0x38]
and al, 3
cmp al, 2
je 0x101550c5
mov eax, dword [edx]
jmp 0x101550cf
xor eax, eax
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x30]
cmp dword [esp + 0x5c], 0
push eax
mov eax, str._USING_COVERING_INDEX
cmove eax, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x44]
push dword [eax]
xor eax, eax
push str.SCAN_TABLE__s_s_s
push eax
push ebx
call fcn.1015fa1f
add esp, 0x18
jmp 0x101551d7
xor edx, edx
mov dword [esp + 0x14], edx
cmp dword [esi + 0x24], edx
je 0x10155151
cmp edx, dword [esi + 0x2c]
jge 0x10155136
mov ecx, dword [esi + 0x28]
mov eax, dword [ecx]
test dword [eax + 4], 0x1000000
jne 0x10155123
mov eax, dword [ecx + 4]
test byte [eax + 4], 0x20
jne 0x1015512c
inc edx
add ecx, 0x10
cmp edx, dword [esi + 0x2c]
jl 0x1015510f
mov ebp, dword [esp + 0xf8]
cmp edx, dword [esi + 0x2c]
jne 0x10155151
inc dword [ebx + 0x2c]
mov eax, dword [ebx + 0x2c]
push eax
mov dword [esp + 0x18], eax
xor eax, eax
push eax
push 0x45
push edi
call fcn.101596d3
add esp, 0x10
push esi
push ebx
call fcn.10137170
movzx eax, byte [esp + 0x3f]
xor ecx, ecx
push ecx
push eax
push ecx
push dword [esp + 0x80]
push dword [esp + 0x5c]
push dword [esp + 0x40]
push ebx
call fcn.1016406a
add esp, 0x24
mov dword [esp + 0x18], eax
test eax, eax
je 0x10155281
push esi
push dword [esp + 0x18]
push ebx
call fcn.10169b06
mov eax, dword [esp + 0x20]
add esp, 0xc
test eax, eax
je 0x101551aa
push eax
push 1
push 0x45
push edi
call fcn.101596d3
add esp, 0x10
mov edx, dword [esp + 0x18]
push edx
call fcn.10166ceb
pop ecx
cmp eax, dword [edx + 0x1c]
je 0x101551c7
push eax
push edi
call fcn.1015fce3
mov edx, dword [esp + 0x20]
pop ecx
pop ecx
push edx
call fcn.10166231
push esi
push ebx
call fcn.1012a9e6
add esp, 0xc
mov esi, dword [esp + 0x20]
xor eax, eax
push 0x10
push esi
push dword [esp + 0x70]
mov dword [esp + 0x84], eax
push ebx
call fcn.10145a70
push esi
push esi
push dword [esp + 0x114]
xor eax, eax
push eax
push eax
push 0xffffffffffffffff
push ebp
push ebx
call fcn.10139431
add esp, 0x30
push esi
push edi
call fcn.10161d60
pop ecx
pop ecx
cmp byte [esp + 0x2c], 3
jne 0x10155227
push str.DISTINCT
push ebx
call fcn.10128798
pop ecx
pop ecx
cmp dword [esp + 0x78], 0
je 0x10155266
cmp dword [esp + 0x7c], 0
mov ecx, str.ORDER_BY
mov eax, str.RIGHT_PART_OF_ORDER_BY
cmovle eax, ecx
push eax
push ebx
call fcn.10128798
push dword [esp + 0x104]
mov eax, dword [esp + 0x5c]
push dword [eax]
lea eax, [esp + 0x88]
push eax
push ebp
push ebx
call fcn.1012ca03
add esp, 0x1c
push dword [esp + 0xcc]
push edi
call fcn.10161d60
xor eax, eax
cmp dword [ebx + 0x24], eax
pop ecx
setg al
pop ecx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x6c]
test ecx, ecx
je 0x10154018
push ecx
push eax
call fcn.1012a078
pop ecx
pop ecx
jmp 0x10154018
xor eax, eax
inc eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe0
ret