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

Disassembly:
push ebp
push edi
mov edi, eax
push esi
push ebx
mov ebx, edx
sub esp, 0xec
mov ebp, dword [edi + 8]
mov dword [esp + 0x24], eax
mov eax, dword [eax]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], eax
mov eax, dword [edx + 0x34]
mov dword [esp + 0x28], eax
mov eax, dword [ecx]
mov dword [esp + 0x8c], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0x90], eax
mov eax, dword [ecx + 8]
mov dword [esp + 0x94], eax
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x98], eax
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x9c], eax
mov eax, dword [ecx + 0x14]
mov dword [esp + 0xa0], eax
mov eax, dword [ecx + 0x18]
mov dword [esp + 0xa4], eax
test ebp, ebp
je 0x6661c890
cmp byte [esp + 0x8c], 0xc
je 0x6661c8b4
mov edx, dword [ebx + 4]
test dh, 4
jne 0x6661c8eb
and dh, 0x20
je 0x6661c421
mov eax, ebx
jmp 0x6661c41a
test byte [eax + 5], 0x20
je 0x6661c9e8
mov eax, dword [eax + 0x34]
test eax, eax
jne 0x6661c410
mov eax, dword [ebx + 0x30]
mov dword [esp + 0x3c], eax
test eax, eax
jne 0x6661c660
mov eax, dword [esp + 0x28]
mov esi, dword [eax + 0x34]
test esi, esi
je 0x6661db45
movzx eax, byte [ebx]
cmp al, 0x86
je 0x6661d093
and eax, 0xfffffffd
cmp al, 0x85
je 0x6661ce76
mov edi, dword [esp + 0x24]
mov esi, dword [edi + 0x28]
lea eax, [esi + 2]
mov dword [edi + 0x28], eax
mov eax, dword [ebp + 0x6c]
cmp eax, dword [ebp + 0x70]
jge 0x6661dc7c
mov ecx, dword [ebp + 0x68]
lea edx, [eax + 1]
mov dword [ebp + 0x6c], edx
lea edx, [eax + eax*4]
lea edx, [ecx + edx*4]
mov dword [edx + 4], esi
mov dword [edx + 8], 0
mov dword [edx + 0xc], 0
mov dword [edx + 0x10], 0
mov dword [edx], 0x65
mov dword [ebx + 0x14], eax
mov eax, ebx
mov edx, eax
mov eax, dword [eax + 0x38]
test eax, eax
jne 0x6661c4a0
or dword [edx + 4], 0x20
lea eax, [esp + 0xc4]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x40], eax
mov ecx, eax
mov eax, dword [esp + 0x24]
mov byte [esp + 0xc4], 1
mov dword [esp + 0xc8], esi
mov dword [esp + 0xcc], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
call fcn.6660adb0
mov dword [esp + 0x30], eax
test eax, eax
jne 0x6661ce38
lea eax, [esi + 1]
mov dword [esp + 0x30], eax
mov eax, dword [ebp + 0x6c]
cmp eax, dword [ebp + 0x70]
jge 0x6661e3ec
mov ecx, dword [ebp + 0x68]
lea edx, [eax + 1]
lea edi, [esi + 1]
mov dword [ebp + 0x6c], edx
lea edx, [eax + eax*4]
lea edx, [ecx + edx*4]
mov dword [edx + 4], edi
mov dword [edx + 8], 0
mov dword [edx + 0xc], 0
mov dword [edx + 0x10], 0
mov dword [edx], 0x65
mov dword [ebx + 0x18], eax
lea eax, [esi + 1]
mov edi, dword [ebx + 0x3c]
mov edx, str.UNION
mov dword [esp + 0xc8], eax
movzx eax, byte [ebx]
mov dword [ebx + 0x34], 0
sub eax, 0x86
mov dword [ebx + 0x3c], 0
cmp eax, 2
jbe 0x6661dc70
mov eax, dword [esp + 0x24]
mov dword [esp + 0xc], edx
mov dword [esp + 8], str._s_USING_TEMP_B_TREE
mov dword [esp], eax
mov dword [esp + 4], 1
call fcn.665bd1e0
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x24]
mov edx, ebx
call fcn.6660adb0
mov dword [esp + 0x30], eax
mov eax, dword [ebx + 0x34]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x28]
mov dword [ebx + 0x34], eax
movzx eax, word [eax + 2]
cmp word [ebx + 2], ax
jle 0x6661c5d4
mov word [ebx + 2], ax
mov edx, dword [ebx + 0x3c]
test edx, edx
je 0x6661c5e4
mov eax, dword [esp + 0x38]
call fcn.665978b0
mov eax, dword [esp + 0x30]
mov dword [ebx + 0x3c], edi
test eax, eax
je 0x6661dc9e
lea esi, [esi]
nop
mov eax, dword [ebx + 0x38]
test eax, eax
je 0x6661daa5
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x24]
test eax, eax
jne 0x6661c618
test byte [ebx + 4], 0x20
jne 0x6661e6ce
mov eax, dword [esp + 0x98]
mov ebx, dword [esp + 0x34]
mov dword [ebx + 0xc], eax
mov eax, dword [esp + 0x9c]
mov dword [ebx + 0x10], eax
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x6661c9d4
mov edx, eax
mov eax, dword [esp + 0x38]
mov ecx, 1
call fcn.665977a0
mov eax, dword [esp + 0x30]
add esp, 0xec
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x24]
mov edi, dword [eax]
mov ebp, dword [eax + 8]
mov dword [esp + 0x30], edi
mov edi, dword [eax + 0x38]
lea esi, [edi - 1]
mov dword [esp + 0x70], edi
sub edi, 2
mov dword [eax + 0x38], edi
movzx eax, byte [ebx]
mov dword [esp + 0x50], edi
mov edi, dword [ebx + 0x34]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x44], eax
mov esi, dword [edi]
mov dword [esp + 0x28], esi
cmp eax, 0x86
je 0x6661dc35
lea eax, [esp + 0xc4]
mov esi, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x30]
cmp byte [eax + 0x53], 0
jne 0x6661c71f
mov dword [esp + 0x48], ebp
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x3c]
nop
mov eax, dword [ebx + 0x1c]
cmp dword [eax], esi
jl 0x6661c713
lea eax, [ebp + 4]
test edi, edi
jle 0x6661cd48
xor edx, edx
jmp 0x6661c6fe
add edx, 1
add eax, 0x14
cmp edx, edi
je 0x6661cd50
movzx ecx, word [eax + 0x10]
cmp ecx, esi
jne 0x6661c6f0
mov eax, dword [esp + 0x30]
add esi, 1
cmp byte [eax + 0x53], 0
je 0x6661c6d0
mov dword [esp + 0x28], edi
mov dword [esp + 0x3c], ebp
mov ebp, dword [esp + 0x48]
mov edi, dword [esp + 0x28]
xor edx, edx
mov eax, dword [esp + 0x30]
mov ecx, edx
lea esi, [edi*4 + 4]
mov edx, esi
call fcn.6658bdd0
mov dword [esp + 0x64], 0
mov dword [esp + 0x74], eax
mov edx, eax
test eax, eax
je 0x6661c797
mov dword [esp + 0x28], edi
lea eax, [eax + 4]
add esi, edx
mov dword [eax - 4], edi
mov edi, dword [esp + 0x3c]
lea ecx, [edi + 4]
mov edi, dword [esp + 0x28]
test edi, edi
jle 0x6661c788
mov edi, dword [esp + 0x28]
lea esi, [esi]
movzx edx, word [ecx + 0x10]
add eax, 4
add ecx, 0x14
sub edx, 1
mov dword [eax - 4], edx
cmp esi, eax
jne 0x6661c770
mov dword [esp + 0x28], edi
mov eax, dword [esp + 0x24]
mov edx, ebx
call fcn.665b6080
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x24]
xor ecx, ecx
mov dword [ebx + 0x30], eax
mov edx, eax
mov eax, dword [esi]
call fcn.665a7910
mov edx, dword [esp + 0x38]
cmp dword [esp + 0x44], 0x86
mov dword [edx + 0x30], eax
je 0x6661d24f
mov eax, dword [ebx + 0x1c]
xor ecx, ecx
mov edx, dword [eax]
mov eax, dword [esi + 0x2c]
lea edi, [eax + 1]
lea eax, [edx + eax + 1]
mov dword [esp + 0x3c], edx
mov edx, 0x45
mov dword [esi + 0x2c], eax
mov eax, ebp
mov dword [esp], edi
mov dword [esp + 4], 0
mov dword [esp + 0x6c], edi
call fcn.6659fdb0
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
mov ecx, 1
mov edx, esi
call fcn.6658bec0
mov dword [esp + 0x58], eax
mov edi, eax
test eax, eax
je 0x6661d948
test esi, esi
jle 0x6661d948
mov dword [esp + 0x54], ebp
xor ecx, ecx
jmp 0x6661c878
mov ebp, dword [esi + 0x34]
test ebp, ebp
je 0x6661cde5
mov edx, dword [ebp + 0x34]
test edx, edx
je 0x6661cdda
mov eax, dword [esp + 0x24]
mov dword [esp + 0x48], ecx
call fcn.665b5f90
mov ecx, dword [esp + 0x48]
test eax, eax
je 0x6661cdda
nop
mov dword [edi + ecx*4 + 0x14], eax
mov eax, dword [edi + 0x10]
mov byte [eax + ecx], 0
add ecx, 1
cmp dword [esp + 0x3c], ecx
je 0x6661d944
mov esi, dword [ebx + 0x34]
test esi, esi
jne 0x6661c830
mov eax, dword [ebx + 0x1c]
cmp dword [eax], ecx
jg 0x6661d232
xor eax, eax
jmp 0x6661c860
mov eax, dword [edi + 0x74]
test eax, eax
je 0x6661ce5f
mov eax, dword [esp + 0x24]
call fcn.6659fe10
cmp byte [esp + 0x8c], 0xc
mov ebp, eax
jne 0x6661c3f1
mov dword [esp + 4], 0
mov eax, dword [ebx + 0x1c]
mov edx, 0x65
mov ecx, dword [esp + 0x90]
mov eax, dword [eax]
mov dword [esp], eax
mov eax, ebp
call fcn.6659fdb0
mov edx, dword [ebx + 4]
mov byte [esp + 0x8c], 0xe
test dh, 4
je 0x6661c3fd
mov eax, dword [ebx + 0x3c]
xor ecx, ecx
mov dword [esp + 0x30], eax
test eax, eax
mov eax, dword [ebx + 0x44]
sete cl
test eax, eax
jne 0x6661c3fd
mov eax, ebx
mov esi, 1
jmp 0x6661c91d
mov edi, dword [eax + 0x44]
add esi, ecx
test edi, edi
jne 0x6661c3fd
mov edi, eax
mov eax, dword [eax + 0x34]
test eax, eax
jne 0x6661c910
cmp esi, 1
mov ecx, 0x666825b4
mov eax, 0x6667d542
mov ebx, edi
cmovne eax, ecx
mov ebp, dword [esp + 0x24]
mov dword [esp + 0xc], esi
mov edi, esi
mov dword [esp + 8], str.SCAN__d_CONSTANT_ROW_s
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0
mov dword [esp], ebp
call fcn.665bd1e0
lea eax, [esp + 0x8c]
mov esi, eax
lea esi, [esi]
nop
mov dword [esp + 8], esi
mov eax, ebp
mov ecx, 0xffffffff
mov edx, ebx
mov dword [esp + 0x10], 1
mov dword [esp + 0xc], 1
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.66619d30
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x6661c9b4
mov word [ebx + 2], di
mov ebx, dword [ebx + 0x38]
test ebx, ebx
jne 0x6661c970
mov eax, dword [esp + 0x98]
mov ebx, dword [esp + 0x34]
mov dword [esp + 0x30], 0
mov dword [ebx + 0xc], eax
mov eax, dword [esp + 0x9c]
mov dword [ebx + 0x10], eax
mov eax, dword [esp + 0x30]
add esp, 0xec
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [ebx + 0x44]
test edx, edx
je 0x6661cb2d
mov eax, dword [esp + 0x24]
mov dword [esp + 4], str.cannot_use_window_functions_in_recursive_queries
mov dword [esp], eax
call fcn.665b3dd0
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x24]
mov dword [esp + 0x30], eax
test eax, eax
jne 0x6661c9b4
test byte [ebx + 4], 0x20
je 0x6661c9b4
mov eax, dword [ebx + 0x1c]
mov ecx, 1
mov eax, dword [eax]
mov dword [esp + 0x28], eax
mov edx, eax
mov eax, dword [esp + 0x38]
call fcn.6658bec0
mov esi, eax
test eax, eax
je 0x6661e37f
mov dword [esp + 0x3c], 0
mov eax, dword [esp + 0x28]
lea edi, [esi + 0x14]
xor ecx, ecx
test eax, eax
jle 0x6661caa0
mov dword [esp + 0x40], ebp
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x44], esi
mov esi, ecx
lea esi, [esi]
mov edx, dword [ebx + 0x34]
test edx, edx
je 0x6661cb10
mov ecx, esi
mov eax, ebp
call fcn.665b5f90
test eax, eax
je 0x6661cb10
mov dword [edi], eax
add esi, 1
add edi, 4
cmp esi, dword [esp + 0x28]
jne 0x6661ca68
mov ebp, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
lea esi, [esi]
xor edi, edi
mov edx, dword [ebx + edi*4 + 0x14]
test edx, edx
js 0x6661caec
mov ecx, dword [ebp]
mov eax, 0x666b004c
cmp byte [ecx + 0x53], 0
jne 0x6661cac1
mov ecx, dword [ebp + 0x68]
lea eax, [edx + edx*4]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x28]
mov dword [eax + 8], ecx
mov ecx, esi
mov eax, ebp
add dword [esi], 1
mov dword [esp], 0xfffffff7
call fcn.6659aa70
mov dword [ebx + edi*4 + 0x14], 0xffffffff
cmp edi, 1
jne 0x6661cdd0
mov ebx, dword [ebx + 0x34]
test ebx, ebx
jne 0x6661caa0
sub dword [esi], 1
jne 0x6661c618
mov eax, dword [esi + 0xc]
mov edx, esi
call fcn.665926e0
jmp 0x6661c618
mov eax, dword [ebx + 0x1c]
cmp esi, dword [eax]
jl 0x6661ce18
mov dword [edi], 0
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 8]
jmp 0x6661ca84
mov eax, dword [ebx + 0x1c]
mov esi, dword [ebx + 0x20]
xor ecx, ecx
mov edx, 0x21
mov eax, dword [eax]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x24]
mov edi, dword [eax + 8]
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [esp + 0x30], edi
call fcn.665b6330
mov edi, eax
test eax, eax
jne 0x6661ca07
mov eax, dword [esp + 0x24]
mov ecx, 0x140
mov edx, dword [eax + 0x38]
mov dword [esp + 0x54], edx
sub edx, 1
mov dword [eax + 0x38], edx
mov word [ebx + 2], cx
mov ecx, edx
mov dword [esp + 0x50], edx
mov edx, ebx
call fcn.66613d00
mov eax, dword [ebx + 0x3c]
mov ecx, dword [esi]
mov dword [ebx + 0x3c], 0
mov dword [esp + 0x58], eax
mov eax, dword [ebx + 8]
mov dword [ebx + 8], 0
mov dword [esp + 0x5c], eax
mov eax, dword [ebx + 0xc]
mov dword [ebx + 0xc], 0
mov dword [esp + 0x60], eax
mov eax, dword [ebx + 0x30]
mov dword [esp + 0x48], eax
test ecx, ecx
jle 0x6661de62
xor eax, eax
jmp 0x6661cbdb
add eax, 1
cmp ecx, eax
je 0x6661de62
lea edx, [eax + eax*8]
lea edx, [esi + edx*8]
test byte [edx + 0x30], 0x20
je 0x6661cbd0
mov eax, dword [edx + 0x34]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x24]
mov esi, dword [eax + 0x28]
mov dword [esp + 0x28], esi
add esi, 1
mov dword [eax + 0x28], esi
mov eax, dword [eax + 0x2c]
mov dword [esp + 0x40], eax
add eax, 1
cmp byte [ebx], 0x85
mov dword [esp + 0x4c], eax
je 0x6661e2a9
mov eax, dword [esp + 0x48]
test eax, eax
je 0x6661e40f
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
mov edx, 0x73
mov byte [esp + 0xc4], 7
mov dword [esp + 0xcc], 0
mov ecx, dword [esp + 0x44]
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0xd8], 0
mov dword [esi + 0x2c], eax
mov esi, dword [esp + 0x3c]
mov dword [esp], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 4], esi
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
call fcn.6659fdb0
mov eax, dword [esp + 0x24]
mov edx, ebx
call fcn.665b6080
mov esi, dword [esp + 0x48]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0xc], 0xfffffff7
mov dword [esp + 8], eax
mov edx, 0x65
mov dword [esp + 4], 0
mov eax, dword [esi]
mov dword [esp + 0x3c], eax
add eax, 2
mov dword [esp], eax
mov eax, dword [esp + 0x30]
call fcn.665a0890
mov dword [esp + 0xdc], esi
test edi, edi
jne 0x6661e32d
mov eax, dword [ebx + 4]
mov dword [ebx + 0x30], 0
mov esi, ebx
jmp 0x6661cd04
mov edi, dword [esi + 0x34]
mov byte [esi], 0x86
mov eax, dword [edi + 4]
test ah, 0x20
je 0x6661dfaf
mov esi, edi
test al, 8
je 0x6661ccf0
mov eax, dword [esp + 0x24]
mov dword [esp + 4], str.recursive_aggregate_queries_not_supported
mov dword [esp], eax
call fcn.665b3dd0
mov edx, dword [ebx + 0x30]
test edx, edx
je 0x6661cd2e
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
call fcn.66597980
mov eax, dword [esp + 0x48]
mov dword [ebx + 0x30], eax
mov eax, dword [esp + 0x58]
mov dword [ebx + 0x3c], eax
jmp 0x6661ca07
jne 0x6661c706
nop
mov dword [esp], 0
mov ecx, dword [esp + 0x40]
mov edx, 0x9a
mov dword [esp + 0xc4], 0
mov eax, dword [esp + 0x30]
mov dword [esp + 0xc8], 0
call fcn.6658c010
mov ecx, eax
test eax, eax
je 0x6661e397
or dword [eax + 4], 0x400
mov edx, ebp
mov dword [eax + 8], esi
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
call fcn.66599380
mov dword [ebx + 0x30], eax
mov ebp, eax
test eax, eax
je 0x6661c706
lea eax, [edi + edi*4]
add edi, 1
mov word [ebp + eax*4 + 0x14], si
mov eax, dword [esp + 0x30]
add esi, 1
cmp byte [eax + 0x53], 0
je 0x6661c6d0
jmp 0x6661c713
mov edi, 1
jmp 0x6661caa2
mov eax, dword [ebp + 0x1c]
cmp dword [eax], ecx
jg 0x6661dc45
mov eax, dword [esi + 0x1c]
cmp dword [eax], ecx
jle 0x6661c87f
lea edx, [ecx + ecx*4]
mov dword [esp + 0x48], ecx
mov edx, dword [eax + edx*4 + 4]
mov eax, dword [esp + 0x24]
call fcn.665b4ee0
mov ecx, dword [esp + 0x48]
test eax, eax
jne 0x6661c860
jmp 0x6661c87f
lea edx, [esi + esi*4]
mov edx, dword [eax + edx*4 + 4]
mov eax, ebp
call fcn.665b4ee0
mov dword [edi], eax
test eax, eax
jne 0x6661ca86
jmp 0x6661cb21
mov ebx, dword [esp + 0x34]
mov eax, dword [esp + 0x98]
mov dword [ebx + 0xc], eax
mov eax, dword [esp + 0x9c]
mov dword [ebx + 0x10], eax
mov eax, dword [esp + 0x30]
add esp, 0xec
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x38]
test byte [eax + 0x4c], 8
jne 0x6661c89b
mov byte [edi + 0x17], 1
jmp 0x6661c89b
cmp byte [esp + 0x8c], 1
jne 0x6661db7e
mov esi, dword [esp + 0x90]
lea eax, [esp + 0xc4]
mov edx, dword [esp + 0x28]
mov byte [esp + 0xc4], 1
mov dword [esp + 0x40], eax
mov ecx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0xc8], esi
mov dword [esp + 0xcc], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
call fcn.6660adb0
mov dword [esp + 0x30], eax
test eax, eax
jne 0x6661ce38
movzx eax, byte [ebx]
mov edi, dword [ebx + 0x3c]
mov dword [ebx + 0x34], 0
mov dword [ebx + 0x3c], 0
mov edx, eax
sub eax, 0x86
cmp dl, 0x87
je 0x6661de4e
mov byte [esp + 0xc4], 1
mov edx, str.UNION
cmp eax, 2
jbe 0x6661de56
mov eax, dword [esp + 0x24]
mov dword [esp + 0xc], edx
mov dword [esp + 8], str._s_USING_TEMP_B_TREE
mov dword [esp], eax
mov dword [esp + 4], 1
call fcn.665bd1e0
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x24]
mov edx, ebx
call fcn.6660adb0
cmp byte [ebx], 0x85
mov dword [ebx + 0x30], 0
mov dword [esp + 0x30], eax
mov eax, dword [ebx + 0x34]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x28]
mov dword [ebx + 0x34], eax
jne 0x6661cf84
movsx edx, word [eax + 2]
movsx eax, word [ebx + 2]
call fcn.665889f0
mov word [ebx + 2], ax
mov edx, dword [ebx + 0x3c]
test edx, edx
je 0x6661cf94
mov eax, dword [esp + 0x38]
call fcn.665978b0
cmp byte [esp + 0x8c], 1
mov dword [ebx + 0x3c], edi
mov dword [ebx + 8], 0
mov dword [ebx + 0xc], 0
je 0x6661c5f8
mov eax, dword [esp + 0x38]
cmp byte [eax + 0x53], 0
jne 0x6661c5f8
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x38]
lea edi, [edx - 1]
mov dword [esp + 0x28], edx
sub edx, 2
mov dword [eax + 0x38], edx
mov ecx, edi
mov dword [esp + 0x44], edx
mov edx, ebx
call fcn.66613d00
mov dword [esp], edi
mov ecx, esi
mov edx, 0x25
mov dword [esp + 4], 0
mov eax, ebp
call fcn.6659fdb0
mov ecx, dword [ebp + 0x6c]
mov dword [esp + 0x10], edi
mov edx, ebx
mov edi, dword [esp + 0x44]
lea eax, [esp + 0x8c]
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0xc], edi
not edi
mov dword [esp], 0
mov dword [esp + 0x40], ecx
mov ecx, esi
call fcn.66619d30
mov eax, dword [ebp + 0xc]
mov ecx, edi
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
js 0x6661e601
mov edx, dword [ebp + 0x6c]
mov eax, dword [eax + 0x40]
mov dword [eax + edi*4], edx
mov eax, dword [esp + 0x40]
mov dword [esp + 4], 0
mov edx, 5
mov ecx, esi
mov dword [esp], eax
mov eax, ebp
call fcn.6659fdb0
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
js 0x6661e5ef
mov edx, dword [esp + 0x28]
mov ecx, dword [ebp + 0x6c]
shl edx, 2
neg edx
add edx, dword [eax + 0x40]
mov dword [edx], ecx
jmp 0x6661de2c
mov esi, dword [esp + 0x28]
mov eax, dword [ebx + 8]
mov dword [esi + 8], eax
mov eax, dword [ebx + 0xc]
mov edx, esi
mov dword [esi + 0xc], eax
mov eax, dword [ebx + 0x3c]
mov dword [esi + 0x3c], eax
lea eax, [esp + 0x8c]
mov dword [esp + 0x3c], eax
mov ecx, eax
mov eax, dword [esp + 0x24]
call fcn.6660adb0
mov dword [esi + 0x3c], 0
mov dword [esp + 0x30], eax
test eax, eax
jne 0x6661ce38
mov eax, dword [esp + 0x28]
mov dword [ebx + 0x34], 0
mov esi, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [ebx + 8], esi
mov dword [ebx + 0xc], eax
test esi, esi
jne 0x6661e1c6
mov edi, dword [esp + 0x24]
mov dword [esp + 8], str.UNION_ALL
mov dword [esp + 4], 1
mov dword [esp], edi
call fcn.665bd1e0
mov ecx, dword [esp + 0x3c]
mov edx, ebx
mov eax, edi
call fcn.6660adb0
mov dword [esp + 0x30], eax
mov eax, dword [ebx + 0x34]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x28]
mov dword [ebx + 0x34], eax
movsx edx, word [eax + 2]
movsx eax, word [ebx + 2]
call fcn.665889f0
mov word [ebx + 2], ax
mov eax, dword [ebx + 0x3c]
test eax, eax
je 0x6661d202
mov eax, dword [eax + 0xc]
lea edx, [esp + 0xc4]
call fcn.66583000
test eax, eax
je 0x6661d202
mov eax, dword [esp + 0xc4]
test eax, eax
jle 0x6661d202
cdq
mov dword [esp + 0x28], eax
movzx edi, word [ebx + 2]
mov dword [esp + 0x2c], edx
cmp eax, 7
jg 0x6661e65d
xor edx, edx
cmp eax, 1
je 0x6661d1f9
mov edx, 0x1e
mov dword [esp + 0x44], ebx
mov word [esp + 0x40], dx
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
movzx ebx, word [esp + 0x40]
shld edx, eax, 1
add eax, eax
mov ecx, edx
mov edx, eax
mov eax, ebx
sub ebx, 0xa
mov dword [esp + 0x2c], ecx
mov ecx, 0
mov word [esp + 0x40], bx
mov ebx, 7
mov dword [esp + 0x28], edx
cmp ebx, dword [esp + 0x28]
sbb ecx, dword [esp + 0x2c]
jae 0x6661d19b
mov word [esp + 0x40], ax
mov ebx, dword [esp + 0x44]
mov edx, dword [esp + 0x28]
movzx eax, word [esp + 0x40]
and edx, 7
movzx edx, word [edx + edx + 0x66689498]
lea edx, [eax + edx - 0xa]
cmp di, dx
jle 0x6661d202
mov word [ebx + 2], dx
test esi, esi
je 0x6661c5f8
mov edx, dword [ebp + 0x6c]
mov ecx, dword [ebp]
lea eax, [edx - 1]
cmovs esi, eax
cmp byte [ecx + 0x53], 0
mov eax, 0x666b004c
jne 0x6661d22a
mov eax, dword [ebp + 0x68]
lea ecx, [esi + esi*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
jmp 0x6661c5f8
lea edx, [ecx + ecx*4]
mov dword [esp + 0x48], ecx
mov edx, dword [eax + edx*4 + 4]
mov eax, dword [esp + 0x24]
call fcn.665b4ee0
mov ecx, dword [esp + 0x48]
jmp 0x6661c860
mov esi, dword [esp + 0x38]
mov ecx, dword [ebx + 0x30]
mov dword [ebx + 0x34], 0
mov edx, ebx
mov eax, dword [esp + 0x24]
mov dword [esi + 0x38], 0
mov dword [esp], str.ORDER
call fcn.665b9860
mov eax, dword [esi + 0x34]
mov dword [esp + 0x58], eax
test eax, eax
je 0x6661df8b
mov dword [esp + 0x58], 0
mov dword [esp + 0x6c], 0
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x24]
mov edx, ebx
call fcn.66613d00
mov ecx, dword [ebx + 8]
cmp dword [esp + 0x44], 0x86
mov dword [esp + 0x68], 0
sete byte [esp + 0x60]
movzx edx, byte [esp + 0x60]
test ecx, ecx
mov dword [esp + 0x54], 0
setne al
and al, dl
mov esi, eax
jne 0x6661df29
mov edx, dword [ebx + 0x3c]
test edx, edx
je 0x6661d2e8
mov eax, dword [esp + 0x30]
call fcn.665978b0
mov esi, dword [esp + 0x24]
mov dword [ebx + 0x3c], 0
mov byte [esp + 0xa8], 0xd
mov eax, dword [esi + 0x2c]
mov dword [esp + 0xb0], 0
mov dword [esp + 0xbc], 0
lea edx, [eax + 1]
lea ecx, [eax + 2]
mov dword [esp + 0xb4], 0
lea edi, [eax + 3]
add eax, 4
mov dword [esp + 0x3c], edx
mov dword [esp + 0x7c], eax
mov dword [esi + 0x2c], eax
movzx eax, byte [ebx]
mov dword [esp + 0xac], edx
mov edx, str.UNION
sub eax, 0x86
mov dword [esp + 0x48], ecx
mov dword [esp + 0x5c], edi
mov dword [esp + 0xb8], 0
mov byte [esp + 0xc4], 0xd
mov dword [esp + 0xc8], ecx
mov dword [esp + 0xcc], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
cmp eax, 2
ja 0x6661d3a4
mov edx, dword [eax*4 + 0x66686dd8]
mov eax, dword [esp + 0x24]
mov dword [esp + 0xc], edx
mov dword [esp + 8], str.MERGE___s_
mov dword [esp + 4], 1
mov dword [esp], eax
call fcn.665bd1e0
mov esi, dword [ebp + 0x6c]
lea edx, [esi + 1]
cmp esi, dword [ebp + 0x70]
jge 0x6661df07
mov ecx, dword [ebp + 0x68]
mov edi, dword [esp + 0x3c]
lea eax, [esi + esi*4]
mov dword [ebp + 0x6c], edx
lea eax, [ecx + eax*4]
mov dword [eax + 4], edi
mov dword [eax + 8], 0
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], 0
mov dword [eax], 0xd
mov eax, dword [esp + 0x38]
mov edi, dword [esp + 0x54]
mov ecx, dword [esp + 0x24]
mov dword [eax + 8], edi
lea edi, [esp + 0xa8]
mov dword [esp], ecx
mov dword [esp + 8], str.LEFT
mov dword [esp + 4], 1
call fcn.665bd1e0
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x24]
mov ecx, edi
call fcn.6660adb0
mov ecx, dword [esp + 0x3c]
mov edx, 0x42
mov eax, ebp
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.6659fdb0
mov eax, dword [ebp + 0xc]
mov byte [eax + 0x13], 0
mov edx, dword [ebp]
mov dword [eax + 0x1c], 0
mov eax, dword [ebp + 0x6c]
mov dword [esp + 0x54], eax
sub eax, 1
test esi, esi
cmovs esi, eax
cmp byte [edx + 0x53], 0
mov eax, 0x666b004c
jne 0x6661d48d
mov eax, dword [ebp + 0x68]
lea edx, [esi + esi*4]
lea eax, [eax + edx*4]
mov esi, dword [esp + 0x54]
mov dword [eax + 8], esi
lea edx, [esi + 1]
cmp esi, dword [ebp + 0x70]
jge 0x6661dee3
mov eax, dword [esp + 0x54]
mov ecx, dword [ebp + 0x68]
mov dword [ebp + 0x6c], edx
mov edi, dword [esp + 0x48]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
mov dword [eax + 4], edi
mov dword [eax + 8], 0
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], 0
mov dword [eax], 0xd
mov eax, dword [esp + 0x68]
mov edi, dword [ebx + 8]
mov esi, dword [ebx + 0xc]
mov dword [ebx + 0xc], 0
mov dword [ebx + 8], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 8], str.RIGHT
mov dword [esp], eax
mov dword [esp + 4], 1
call fcn.665bd1e0
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x24]
mov edx, ebx
call fcn.6660adb0
mov dword [ebx + 8], edi
mov ecx, dword [esp + 0x48]
mov eax, ebp
mov dword [ebx + 0xc], esi
mov edx, 0x42
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.6659fdb0
mov eax, dword [ebp + 0xc]
mov edi, dword [esp + 0x4c]
mov edx, ebx
lea ecx, [esp + 0xa8]
mov byte [eax + 0x13], 0
mov dword [eax + 0x1c], 0
mov eax, dword [esp + 0x24]
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x58]
mov dword [esp + 0xc], edi
mov edi, dword [esp + 0x6c]
mov dword [esp + 8], edi
mov edi, dword [esp + 0x5c]
mov dword [esp + 4], edi
mov edi, dword [esp + 0x34]
mov dword [esp], edi
call fcn.665a88c0
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x44]
sub eax, 0x85
mov dword [esp + 0x78], eax
cmp eax, 1
jbe 0x6661d9a3
mov esi, dword [esp + 0x58]
mov dword [esp + 0x6c], 0
test esi, esi
je 0x6661d5b4
mov eax, dword [esi]
mov dword [esp + 0x34], eax
sub eax, 1
mov dword [esi], eax
je 0x6661dc24
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x4c]
sub eax, 0x87
mov dword [esp + 0x58], esi
mov dword [esp + 0x34], esi
cmp eax, 1
ja 0x6661d9f6
cmp dword [esp + 0x44], 0x88
mov esi, dword [ebp + 0x6c]
mov eax, dword [ebp + 0x70]
jne 0x6661d8d2
mov edi, dword [esp + 0x38]
movzx edx, word [edi + 2]
mov edi, dword [esp + 0x34]
mov dword [esp + 0x40], edi
cmp word [ebx + 2], dx
jle 0x6661d600
mov word [ebx + 2], dx
cmp eax, esi
jle 0x6661debd
mov edx, dword [ebp + 0x68]
lea eax, [esi + 1]
mov edi, dword [esp + 0x5c]
mov dword [ebp + 0x6c], eax
lea eax, [esi + esi*4]
lea eax, [edx + eax*4]
mov dword [eax + 4], edi
mov edi, dword [esp + 0x68]
mov dword [eax + 0xc], 0
mov dword [eax + 8], edi
mov dword [eax + 0x10], 0
mov dword [eax], 0xc
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x3c]
mov edx, 0xe
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, ebp
call fcn.6659fdb0
mov eax, dword [ebp + 0x6c]
cmp eax, dword [ebp + 0x70]
jge 0x6661de94
lea edx, [eax + 1]
mov edi, dword [esp + 0x50]
mov dword [ebp + 0x6c], edx
mov dword [esp + 0x4c], edx
lea edx, [eax + eax*4]
mov eax, dword [ebp + 0x68]
lea eax, [eax + edx*4]
mov dword [eax + 8], edi
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
mov dword [eax], 0xb
mov dword [eax + 4], 0
cmp byte [esp + 0x60], 0
mov dword [esp + 0x5c], esi
jne 0x6661d6b9
cmp dword [esp + 0x44], 0x88
jne 0x6661dae6
lea eax, [esi + 1]
mov dword [esp + 0x5c], eax
cmp dword [esp + 0x78], 1
jbe 0x6661dbe2
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x48]
mov edx, 0xe
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, ebp
call fcn.6659fdb0
mov eax, dword [ebp + 0x6c]
cmp eax, dword [ebp + 0x70]
jge 0x6661de6f
lea edx, [eax + 1]
lea ecx, [eax + eax*4]
mov eax, dword [ebp + 0x68]
mov edi, dword [esp + 0x50]
mov dword [ebp + 0x6c], edx
lea eax, [eax + ecx*4]
mov dword [eax + 8], edi
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
mov dword [eax], 0xb
mov dword [eax + 4], 0
mov ecx, dword [esp + 0x54]
lea eax, [edx - 1]
test ecx, ecx
cmovns eax, ecx
mov ecx, dword [ebp]
cmp byte [ecx + 0x53], 0
mov edi, eax
mov eax, 0x666b004c
jne 0x6661d745
mov eax, dword [ebp + 0x68]
lea ecx, [edi + edi*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov eax, dword [esp + 0x58]
mov edx, 0xe
mov dword [esp + 4], 0
mov ecx, dword [esp + 0x3c]
mov dword [esp], eax
mov eax, ebp
call fcn.6659fdb0
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x48]
mov dword [esp + 4], 0
mov edx, 0xe
mov dword [esp], eax
mov eax, ebp
call fcn.6659fdb0
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x50]
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
not ecx
js 0x6661dc18
mov edx, dword [ebp + 0x6c]
mov eax, dword [eax + 0x40]
mov dword [eax + ecx*4], edx
mov eax, dword [esp + 0x74]
mov dword [esp], 0
xor ecx, ecx
mov edx, 0x56
mov dword [esp + 0xc], 0xfffffff1
mov dword [esp + 8], eax
mov eax, ebp
mov dword [esp + 4], 0
call fcn.665a0890
mov eax, dword [esp + 0x64]
mov edx, 0x57
mov dword [esp + 0xc], 0xfffffff7
mov ecx, dword [esp + 0xb4]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xd0]
mov dword [esp], eax
mov eax, ebp
call fcn.665a0890
mov eax, dword [ebp + 0x6c]
test eax, eax
jle 0x6661d81f
mov edx, dword [ebp + 0x68]
lea eax, [eax + eax*4]
mov ecx, 1
lea eax, [edx + eax*4]
mov word [eax - 0x12], cx
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x5c]
mov dword [esp], esi
mov edx, 0x10
mov dword [esp + 4], eax
mov eax, ebp
call fcn.6659fdb0
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
js 0x6661dc06
mov edx, dword [esp + 0x70]
mov ecx, dword [ebp + 0x6c]
shl edx, 2
neg edx
add edx, dword [eax + 0x40]
mov dword [edx], ecx
mov edx, dword [ebx + 0x34]
test edx, edx
je 0x6661d86f
mov eax, dword [esp + 0x30]
mov ecx, 1
call fcn.665977a0
mov eax, dword [esp + 0x38]
mov dword [ebx + 0x34], eax
mov dword [eax + 0x38], ebx
mov ebx, dword [esp + 0x24]
mov eax, dword [ebx + 0xd4]
test eax, eax
je 0x6661d8ab
mov edx, dword [ebx + 8]
jns 0x6661d892
mov eax, dword [edx + 0x6c]
sub eax, 1
mov ebx, dword [edx]
mov ecx, 0x666b004c
cmp byte [ebx + 0x53], 0
jne 0x6661d8a8
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x68]
lea ecx, [eax + ecx*4]
mov eax, dword [ecx + 8]
mov ebx, dword [esp + 0x24]
mov edi, dword [ebx + 0x24]
mov dword [ebx + 0xd4], eax
xor eax, eax
test edi, edi
setne al
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x30]
add esp, 0xec
pop ebx
pop esi
pop edi
pop ebp
ret
cmp esi, eax
jge 0x6661e227
lea eax, [esi + 1]
mov edi, dword [esp + 0x5c]
lea edx, [esi + esi*4]
mov dword [esp + 0x40], esi
mov dword [ebp + 0x6c], eax
mov eax, dword [ebp + 0x68]
lea eax, [eax + edx*4]
mov dword [eax + 4], edi
mov edi, dword [esp + 0x68]
mov dword [eax + 0xc], 0
mov dword [eax + 8], edi
mov dword [eax + 0x10], 0
mov dword [eax], 0xc
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x3c]
mov edx, 0xe
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, ebp
call fcn.6659fdb0
mov edx, dword [esp + 0x40]
mov eax, ebp
call fcn.665a07c0
mov esi, dword [ebp + 0x6c]
mov eax, dword [ebp + 0x70]
jmp 0x6661d600
mov ebp, dword [esp + 0x54]
mov esi, dword [esp + 0x38]
mov ecx, dword [ebx + 0x30]
mov dword [ebx + 0x34], 0
mov edx, ebx
mov eax, dword [esp + 0x24]
mov dword [esi + 0x38], 0
mov dword [esp], str.ORDER
call fcn.665b9860
mov eax, dword [esi + 0x34]
test eax, eax
je 0x6661df93
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x24]
mov edx, ebx
call fcn.66613d00
mov byte [esp + 0x60], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x54], 0
jmp 0x6661d2d8
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x58]
mov edx, ebx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0xc], esi
mov dword [esp + 8], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x34]
mov dword [esp], eax
mov eax, dword [esp + 0x24]
call fcn.665a88c0
mov dword [esp + 0x6c], eax
test esi, esi
je 0x6661d9f6
mov esi, dword [esp + 0x58]
mov eax, dword [esi]
mov dword [esp + 0x34], eax
sub eax, 1
mov dword [esi], eax
je 0x6661dc24
mov eax, dword [ebp + 0x6c]
mov edx, dword [ebp + 0x70]
mov dword [esp + 0x34], eax
cmp eax, edx
jge 0x6661e24f
mov esi, dword [esp + 0x34]
mov ecx, dword [ebp + 0x68]
lea eax, [esi + 1]
mov dword [ebp + 0x6c], eax
mov dword [esp + 0x58], eax
lea eax, [esi + esi*4]
mov esi, dword [esp + 0x7c]
lea eax, [ecx + eax*4]
mov dword [eax + 4], esi
mov esi, dword [esp + 0x6c]
mov dword [eax + 0xc], 0
mov dword [eax + 8], esi
mov dword [eax + 0x10], 0
mov dword [eax], 0xc
cmp dword [esp + 0x58], edx
jge 0x6661e281
mov esi, dword [esp + 0x58]
mov edx, dword [ebp + 0x68]
lea eax, [esi + 1]
mov dword [ebp + 0x6c], eax
lea eax, [esi + esi*4]
mov esi, dword [esp + 0x48]
lea eax, [edx + eax*4]
mov dword [eax + 4], esi
mov esi, dword [esp + 0x4c]
mov dword [eax + 0xc], 0
mov dword [eax + 8], esi
mov dword [eax + 0x10], 0
mov dword [eax], 0xe
mov edx, dword [esp + 0x34]
mov eax, ebp
call fcn.665a07c0
mov eax, dword [esp + 0x38]
movsx edx, word [eax + 2]
movsx eax, word [ebx + 2]
call fcn.665889f0
mov word [ebx + 2], ax
jmp 0x6661d5d2
mov esi, dword [esp + 0x24]
mov eax, dword [esi + 0xd4]
test eax, eax
je 0x6661dad7
mov edx, dword [esi + 8]
jns 0x6661dabe
mov eax, dword [edx + 0x6c]
sub eax, 1
mov esi, dword [edx]
mov ecx, 0x666b004c
cmp byte [esi + 0x53], 0
jne 0x6661dad4
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x68]
lea ecx, [eax + ecx*4]
mov eax, dword [ecx + 8]
mov edi, dword [esp + 0x24]
mov dword [edi + 0xd4], eax
jmp 0x6661c603
mov eax, dword [esp + 0x4c]
cmp dword [ebp + 0x70], eax
jle 0x6661e3a4
mov edi, dword [esp + 0x4c]
lea eax, [edi + 1]
lea edx, [edi + edi*4]
mov dword [ebp + 0x6c], eax
mov eax, dword [ebp + 0x68]
lea eax, [eax + edx*4]
mov edx, dword [esp + 0x3c]
mov dword [eax + 0xc], 0
mov dword [eax + 4], edx
mov edx, dword [esp + 0x34]
mov dword [eax + 0x10], 0
mov dword [eax + 8], edx
mov dword [eax], 0xe
mov edx, dword [esp + 0x50]
mov eax, ebp
call fcn.665a07c0
mov eax, dword [ebp + 0x6c]
mov dword [esp + 0x5c], esi
mov esi, edi
mov dword [esp + 0x4c], eax
jmp 0x6661d6b9
mov esi, dword [esp + 0x24]
mov dword [esp + 8], str.COMPOUND_QUERY
mov dword [esp + 4], 1
mov dword [esp], esi
call fcn.665bd1e0
mov dword [esp + 8], str.LEFT_MOST_SUBQUERY
mov dword [esp + 4], 1
mov dword [esp], esi
call fcn.665bd1e0
jmp 0x6661c43f
mov edi, dword [esp + 0x24]
mov esi, dword [edi + 0x28]
lea eax, [esi + 1]
mov dword [edi + 0x28], eax
mov eax, dword [ebp + 0x6c]
cmp eax, dword [ebp + 0x70]
jge 0x6661e3ca
mov ecx, dword [ebp + 0x68]
lea edx, [eax + 1]
mov dword [ebp + 0x6c], edx
lea edx, [eax + eax*4]
lea edx, [ecx + edx*4]
mov dword [edx + 4], esi
mov dword [edx + 8], 0
mov dword [edx + 0xc], 0
mov dword [edx + 0x10], 0
mov dword [edx], 0x65
mov dword [ebx + 0x14], eax
mov eax, ebx
lea esi, [esi]
mov edx, eax
mov eax, dword [eax + 0x38]
test eax, eax
jne 0x6661dbd0
or dword [edx + 4], 0x20
jmp 0x6661ce8b
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x7c]
mov edx, 0xc
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, ebp
call fcn.6659fdb0
jmp 0x6661d6c4
mov ecx, dword [esp + 0x70]
mov edx, ebp
neg ecx
call fcn.6659a020
jmp 0x6661d85a
mov edx, ebp
call fcn.6659a020
jmp 0x6661d7a4
mov edx, dword [esp + 0x58]
mov eax, dword [edx + 0xc]
call fcn.665926e0
jmp 0x6661d5b4
lea eax, [esp + 0xc4]
mov dword [esp + 0x40], eax
jmp 0x6661c71f
lea edx, [ecx + ecx*4]
mov dword [esp + 0x48], ecx
mov edx, dword [eax + edx*4 + 4]
mov eax, dword [esp + 0x24]
call fcn.665b4ee0
mov ecx, dword [esp + 0x48]
test eax, eax
jne 0x6661c860
jmp 0x6661cde5
mov edx, dword [eax*4 + 0x66686dd8]
jmp 0x6661c585
mov dword [esp], 0
mov ecx, esi
mov edx, 0x65
mov eax, ebp
mov dword [esp + 4], 0
call fcn.6659fd40
jmp 0x6661c49b
mov eax, dword [esp + 0x24]
mov edi, dword [eax + 0x38]
lea edx, [edi - 1]
mov dword [esp + 0x44], edi
sub edi, 2
mov dword [eax + 0x38], edi
mov ecx, edx
mov dword [esp + 0x48], edx
mov edx, ebx
mov dword [esp + 0x40], edi
mov edi, eax
call fcn.66613d00
mov edx, dword [esp + 0x48]
mov ecx, esi
mov eax, ebp
mov dword [esp + 4], 0
mov dword [esp], edx
mov edx, 0x25
call fcn.6659fdb0
movzx eax, byte [edi + 0x13]
test al, al
je 0x6661e496
mov edi, dword [esp + 0x24]
sub eax, 1
mov byte [edi + 0x13], al
movzx eax, al
mov edi, dword [edi + eax*4 + 0x94]
mov eax, dword [ebp + 0x6c]
mov dword [esp + 0x28], eax
cmp eax, dword [ebp + 0x70]
jge 0x6661e6a1
mov edx, dword [esp + 0x28]
lea eax, [edx + 1]
mov dword [ebp + 0x6c], eax
lea eax, [edx + edx*4]
mov edx, dword [ebp + 0x68]
lea eax, [edx + eax*4]
mov dword [eax + 4], esi
mov dword [eax + 8], edi
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
mov dword [eax], 0x81
mov eax, dword [esp + 0x40]
mov dword [esp + 4], edi
lea ecx, [esi + 1]
mov edx, 0x1d
mov dword [esp + 8], 0
mov dword [esp], eax
mov eax, ebp
call fcn.665a0980
test edi, edi
je 0x6661dd7e
mov ecx, dword [esp + 0x24]
movzx eax, byte [ecx + 0x13]
cmp al, 7
ja 0x6661dd7e
lea edx, [eax + 1]
mov byte [ecx + 0x13], dl
mov dword [ecx + eax*4 + 0x94], edi
mov eax, dword [esp + 0x48]
mov edi, dword [esp + 0x40]
mov ecx, esi
mov edx, ebx
mov dword [esp + 4], 0
mov dword [esp + 0x10], eax
lea eax, [esp + 0x8c]
mov dword [esp + 0xc], edi
not edi
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
mov dword [esp], 0
call fcn.66619d30
mov eax, dword [ebp + 0xc]
mov ecx, edi
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
js 0x6661e572
mov edx, dword [ebp + 0x6c]
mov eax, dword [eax + 0x40]
mov dword [eax + edi*4], edx
mov eax, dword [esp + 0x28]
mov dword [esp + 4], 0
mov edx, 5
mov ecx, esi
mov dword [esp], eax
mov eax, ebp
call fcn.6659fdb0
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
js 0x6661e560
mov edx, dword [esp + 0x44]
mov ecx, dword [ebp + 0x6c]
shl edx, 2
neg edx
add edx, dword [eax + 0x40]
mov dword [edx], ecx
mov dword [esp + 4], 0
lea ecx, [esi + 1]
mov edx, 0x75
mov eax, ebp
mov dword [esp], 0
call fcn.6659fdb0
mov dword [esp], 0
mov ecx, esi
mov edx, 0x75
mov eax, ebp
mov dword [esp + 4], 0
call fcn.6659fdb0
jmp 0x6661c5f8
mov byte [esp + 0xc4], 2
mov edx, dword [eax*4 + 0x66686dd8]
jmp 0x6661cf26
mov dword [esp + 0x44], 0
jmp 0x6661cbee
mov eax, dword [esp + 0x50]
mov dword [esp + 4], 0
mov edx, 0xb
xor ecx, ecx
mov dword [esp], eax
mov eax, ebp
call fcn.6659fd40
mov edx, dword [ebp + 0x6c]
jmp 0x6661d720
mov eax, dword [esp + 0x50]
mov dword [esp + 4], 0
xor ecx, ecx
mov edx, 0xb
mov dword [esp], eax
mov eax, ebp
call fcn.6659fd40
mov eax, dword [ebp + 0x6c]
mov dword [esp + 0x4c], eax
jmp 0x6661d699
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x5c]
mov edx, 0xc
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, ebp
call fcn.6659fd40
mov esi, eax
jmp 0x6661d639
mov dword [esp + 4], edx
mov ecx, dword [esp + 0x48]
mov edx, 0xd
mov eax, ebp
mov dword [esp], 0
call fcn.6659fd40
mov dword [esp + 0x54], eax
jmp 0x6661d4ce
mov dword [esp + 4], edx
mov ecx, dword [esp + 0x3c]
mov edx, 0xd
mov eax, ebp
mov dword [esp], 0
call fcn.6659fd40
mov esi, eax
jmp 0x6661d3fd
mov edx, dword [esp + 0x24]
mov eax, dword [edx + 0x2c]
lea edi, [eax + 1]
add eax, 2
mov dword [edx + 0x2c], eax
mov dword [esp + 0x68], eax
mov eax, dword [ebx + 0xc]
mov dword [esp + 4], 0
test eax, eax
lea edx, [eax + 1]
mov dword [esp], edi
mov eax, ebp
cmovne ecx, edx
mov edx, 0x4d
mov dword [esp + 0x54], edi
call fcn.6659fdb0
mov eax, dword [esp + 0x68]
mov ecx, edi
mov edx, 0x4d
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, ebp
call fcn.6659fdb0
mov eax, esi
mov byte [esp + 0x60], al
jmp 0x6661d2d8
mov dword [esp + 0x6c], 0
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x24]
mov ecx, dword [edx + 0x30]
mov dword [esp], str.ORDER
call fcn.665b9860
jmp 0x6661d295
mov eax, dword [esp + 0x24]
mov dword [edi + 0x38], 0
mov dword [esp + 8], str.SETUP
mov dword [esp], eax
mov dword [esp + 4], 1
call fcn.665bd1e0
lea edx, [esp + 0xc4]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x40], edx
mov ecx, edx
mov edx, edi
call fcn.6660adb0
mov dword [edi + 0x38], ebx
test eax, eax
jne 0x6661cd1c
mov eax, dword [esp + 0x30]
mov edx, dword [eax + 0x6c]
mov dword [esp + 0x3c], edx
cmp edx, dword [eax + 0x70]
jge 0x6661e633
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x30]
lea eax, [edx + 1]
mov dword [ecx + 0x6c], eax
lea eax, [edx + edx*4]
mov edx, dword [ecx + 0x68]
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x28]
mov dword [eax + 0xc], 0
mov dword [eax + 4], edx
mov edx, dword [esp + 0x50]
mov dword [eax + 0x10], 0
mov dword [eax + 8], edx
mov dword [eax], 0x25
mov dword [esp], 0
mov ecx, dword [esp + 0x44]
mov edx, 0x83
mov dword [esp + 4], 0
mov eax, dword [esp + 0x30]
call fcn.6659fdb0
mov edx, dword [esp + 0x48]
test edx, edx
je 0x6661e60d
mov ecx, dword [esp + 0x4c]
mov dword [esp + 4], ecx
mov edx, dword [edx]
mov ecx, dword [esp + 0x28]
lea eax, [edx + 1]
mov dword [esp + 0x4c], edx
mov edx, 0x5a
mov dword [esp], eax
mov eax, dword [esp + 0x30]
call fcn.6659fdb0
mov dword [esp], 0
mov ecx, dword [esp + 0x28]
mov edx, 0x7d
mov dword [esp + 4], 0
mov eax, dword [esp + 0x30]
call fcn.6659fdb0
mov ecx, dword [esp + 0x24]
mov edx, dword [ecx + 0x38]
mov dword [esp + 0x28], edx
sub edx, 1
mov dword [ecx + 0x38], edx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x4c], edx
test ecx, ecx
jle 0x6661e0ec
mov dword [esp], edx
mov eax, dword [esp + 0x30]
mov edx, 0x30
mov dword [esp + 4], 1
call fcn.6659fdb0
mov eax, dword [esp + 0x50]
mov dword [esp + 4], 0
mov edx, ebx
mov dword [esp], 0
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0xc], eax
lea eax, [esp + 0x8c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
call fcn.66619d30
mov eax, dword [esp + 0x5c]
test eax, eax
jne 0x6661e53a
mov eax, dword [esp + 0x30]
mov eax, dword [eax + 0xc]
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
js 0x6661e5db
mov edx, dword [esp + 0x30]
mov ecx, dword [edx + 0x6c]
mov edx, dword [esp + 0x28]
shl edx, 2
neg edx
add edx, dword [eax + 0x40]
mov dword [edx], ecx
mov eax, dword [esp + 0x24]
mov dword [esi + 0x34], 0
mov dword [esp + 8], str.RECURSIVE_STEP
mov dword [esp], eax
mov dword [esp + 4], 1
call fcn.665bd1e0
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x24]
mov edx, ebx
call fcn.6660adb0
mov dword [esi + 0x34], edi
mov esi, dword [esp + 0x30]
mov edx, dword [esp + 0x3c]
mov eax, esi
call fcn.665a07c0
mov eax, dword [esi + 0xc]
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
js 0x6661e5c7
mov esi, dword [esp + 0x30]
mov edx, dword [esp + 0x54]
mov ecx, dword [esi + 0x6c]
shl edx, 2
neg edx
add edx, dword [eax + 0x40]
mov dword [edx], ecx
jmp 0x6661cd1c
mov ecx, dword [ebp + 0x6c]
cmp ecx, dword [ebp + 0x70]
jge 0x6661e57e
mov edi, dword [ebp + 0x68]
lea edx, [ecx + 1]
mov dword [ebp + 0x6c], edx
lea edx, [ecx + ecx*4]
lea edx, [edi + edx*4]
mov dword [edx + 8], 0
mov dword [edx + 0xc], 0
mov dword [edx + 0x10], 0
mov dword [edx], 0x14
mov dword [edx + 4], esi
mov esi, ecx
test eax, eax
je 0x6661d0f3
mov ecx, dword [ebx + 8]
mov dword [esp + 4], eax
add eax, 1
mov edx, 0x9b
mov dword [esp], eax
mov eax, ebp
call fcn.6659fdb0
jmp 0x6661d0f3
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x5c]
mov edx, 0xc
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, ebp
call fcn.6659fd40
mov dword [esp + 0x40], eax
jmp 0x6661d90f
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x7c]
mov edx, 0xc
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, ebp
call fcn.6659fd40
mov edx, dword [ebp + 0x70]
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 0x6c]
mov dword [esp + 0x58], eax
jmp 0x6661da41
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov edx, 0xe
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, ebp
call fcn.6659fd40
mov dword [esp + 0x58], eax
jmp 0x6661da80
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x48]
add eax, 2
test edx, edx
je 0x6661e4ac
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x44]
mov edx, 0x73
mov byte [esp + 0xc4], 6
mov dword [esp + 0xcc], 0
mov dword [edi + 0x28], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0xd8], 0
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0xd0], 0
mov dword [edi + 0x2c], eax
mov edi, dword [esp + 0x3c]
mov dword [esp], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 4], edi
mov edi, esi
mov dword [esp + 0xd4], 0
call fcn.6659fdb0
jmp 0x6661cc89
mov esi, dword [esp + 0x30]
mov eax, dword [esi + 0x6c]
cmp eax, dword [esi + 0x70]
jge 0x6661e5a5
mov esi, dword [esp + 0x30]
lea edx, [eax + 1]
mov ecx, dword [esi + 0x68]
mov dword [esi + 0x6c], edx
lea edx, [eax + eax*4]
lea edx, [ecx + edx*4]
mov dword [edx + 4], edi
mov dword [edx + 8], 0
mov dword [edx + 0xc], 0
mov dword [edx + 0x10], 0
mov dword [edx], 0x65
mov dword [ebx + 0x14], eax
mov eax, dword [ebx + 4]
or eax, 0x20
mov dword [ebx + 4], eax
jmp 0x6661ccdc
mov eax, dword [esp + 0x98]
mov ebx, dword [esp + 0x34]
mov dword [ebx + 0xc], eax
mov eax, dword [esp + 0x9c]
mov dword [ebx + 0x10], eax
mov dword [esp + 0x30], 7
jmp 0x6661c9d4
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x3c]
mov edx, 0xe
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, ebp
call fcn.6659fd40
mov edi, eax
jmp 0x6661db28
mov dword [esp], 0
mov ecx, esi
mov edx, 0x65
mov eax, ebp
mov dword [esp + 4], 0
call fcn.6659fd40
jmp 0x6661dbc4
mov dword [esp + 4], 0
lea ecx, [esi + 1]
mov edx, 0x65
mov eax, ebp
mov dword [esp], 0
call fcn.6659fd40
jmp 0x6661c551
mov eax, dword [esp + 0x4c]
mov edi, dword [esp + 0x24]
mov edx, 0x73
mov byte [esp + 0xc4], 8
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x44]
mov dword [esp + 0xcc], 0
mov dword [edi + 0x2c], eax
mov edi, dword [esp + 0x3c]
mov dword [esp], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 4], edi
mov dword [esp + 0xc8], esi
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
call fcn.6659fdb0
mov dword [esp], edi
mov eax, dword [esp + 0x30]
mov ecx, esi
mov dword [esp + 4], 0
mov edx, 0x65
call fcn.6659fdb0
jmp 0x6661ccd9
mov eax, dword [esp + 0x24]
mov edi, dword [eax + 0x2c]
mov dword [esp + 0x28], edi
add edi, 1
mov dword [eax + 0x2c], edi
jmp 0x6661dd02
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x4c]
mov byte [esp + 0xc4], 5
mov dword [esp + 0xcc], 0
mov ecx, dword [esp + 0x44]
mov dword [edi + 0x28], eax
mov eax, dword [esp + 0x28]
mov dword [edi + 0x2c], edx
mov edi, dword [esp + 0x3c]
mov dword [esp], edx
mov edx, 0x73
mov dword [esp + 4], edi
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
call fcn.6659fdb0
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x30]
mov dword [esp], edi
mov dword [esp + 4], 0
mov edx, 0x65
mov edi, esi
call fcn.6659fdb0
jmp 0x6661ccd1
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x5c]
mov edx, 0x3b
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, dword [esp + 0x30]
call fcn.6659fdb0
jmp 0x6661e131
mov ecx, dword [esp + 0x44]
mov edx, ebp
neg ecx
call fcn.6659a020
jmp 0x6661de0e
mov edx, ebp
call fcn.6659a020
jmp 0x6661ddd1
mov dword [esp], 0
mov ecx, esi
mov edx, 0x14
mov eax, ebp
mov dword [esp + 4], 0
call fcn.6659fd40
mov esi, eax
mov eax, dword [ebx + 0xc]
jmp 0x6661e201
mov dword [esp], 0
mov ecx, edi
mov edx, 0x65
mov eax, esi
mov dword [esp + 4], 0
call fcn.6659fd40
jmp 0x6661e36e
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x30]
neg ecx
call fcn.6659a020
jmp 0x6661cd1c
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x30]
neg ecx
call fcn.6659a020
jmp 0x6661e159
mov ecx, dword [esp + 0x28]
mov edx, ebp
neg ecx
call fcn.6659a020
jmp 0x6661de2c
mov edx, ebp
call fcn.6659a020
jmp 0x6661d051
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x28]
mov edx, 0x81
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, dword [esp + 0x30]
call fcn.6659fdb0
jmp 0x6661e095
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x28]
mov edx, 0x25
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, dword [esp + 0x30]
call fcn.6659fd40
mov dword [esp + 0x3c], eax
jmp 0x6661e042
mov ecx, dword [esp + 0x2c]
test ecx, ecx
je 0x6661e6c3
bsr eax, ecx
xor eax, 0x1f
mov ecx, 0x3c
mov edx, dword [esp + 0x2c]
sub ecx, eax
lea eax, [ecx + ecx*4]
lea eax, [eax + eax + 0x28]
mov word [esp + 0x40], ax
mov eax, dword [esp + 0x28]
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
je 0x6661e694
mov eax, edx
xor edx, edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
jmp 0x6661d1e1
mov dword [esp], edi
mov ecx, esi
mov edx, 0x81
mov eax, ebp
mov dword [esp + 4], 0
call fcn.6659fd40
mov dword [esp + 0x28], eax
jmp 0x6661dd3f
bsr eax, eax
xor eax, 0x1f
add eax, 0x20
jmp 0x6661e66b
mov eax, dword [ebx + 0x1c]
mov ecx, 1
mov eax, dword [eax]
mov dword [esp + 0x28], eax
mov edx, eax
mov eax, dword [esp + 0x38]
call fcn.6658bec0
mov esi, eax
test eax, eax
jne 0x6661ca47
mov dword [esp + 0x30], 7
jmp 0x6661c618