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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xec
mov eax, dword [0x1822b00c]
xor eax, esp
mov dword [esp + 0xe8], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, ecx
mov dword [esp + 0x44], eax
xor eax, eax
mov dword [esp + 0x48], ebx
push esi
push edi
mov edi, edx
mov dword [esp + 0x70], eax
mov dword [esp + 0x6c], eax
mov eax, dword [ebx]
mov dword [esp + 0x64], edi
mov dword [esp + 0x38], 1
mov dword [esp + 0x2c], eax
call fcn.1812b77b
mov esi, eax
mov dword [esp + 0x14], esi
test edi, edi
je 0x1813050f
mov eax, dword [esp + 0x2c]
cmp byte [eax + 0x51], 0
jne 0x1813050f
xor eax, eax
cmp dword [ebx + 0x24], eax
jne 0x1813050f
push eax
push eax
push eax
push 0x15
pop edx
mov ecx, ebx
call fcn.18118204
add esp, 0xc
test eax, eax
jne 0x1813050f
mov eax, dword [esp + 0x4c]
cmp byte [eax], 6
ja 0x1812eedf
mov edx, dword [edi + 0x30]
test edx, edx
je 0x1812eecc
mov ecx, dword [esp + 0x2c]
call fcn.18110852
xor eax, eax
mov dword [edi + 0x30], eax
mov eax, dword [edi + 4]
and eax, 0xfffffffe
or eax, 0x400000
mov dword [edi + 4], eax
xor eax, eax
mov edx, edi
push eax
mov ecx, ebx
call fcn.1812e8ee
xor eax, eax
pop ecx
cmp dword [ebx + 0x24], eax
jne 0x1812f13b
mov eax, dword [esp + 0x2c]
cmp byte [eax + 0x51], 0
jne 0x1812f13b
test dword [edi + 4], 0x800000
je 0x1812ef7e
mov ecx, dword [edi + 0x20]
xor eax, eax
inc eax
mov dword [esp + 0x5c], eax
cmp dword [ecx], eax
jle 0x1812ef7e
mov edx, dword [ecx + 0x18]
push 0x48
mov dword [esp + 0x2c], edx
pop edx
mov dword [esp + 0x10], edx
mov esi, dword [ecx + 0x18]
cmp esi, dword [edx + ecx + 0x18]
mov esi, dword [esp + 0x14]
jne 0x1812ef6e
mov eax, dword [edx + ecx + 0x14]
mov ecx, dword [ecx + 0x14]
mov dword [esp + 0x20], ecx
test ecx, ecx
jne 0x1812ef4c
neg eax
sbb eax, eax
jmp 0x1812ef5f
test eax, eax
je 0x1812ef67
mov edx, eax
call fcn.180e90b3
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
test eax, eax
je 0x1812f122
mov eax, dword [esp + 0x5c]
mov ecx, dword [edi + 0x20]
inc eax
add edx, 0x48
mov dword [esp + 0x5c], eax
mov dword [esp + 0x10], edx
cmp eax, dword [ecx]
jl 0x1812ef2a
mov eax, dword [esp + 0x4c]
cmp byte [eax], 9
jne 0x1812ef90
mov edx, edi
mov ecx, ebx
call fcn.1812b1cb
mov edx, edi
mov ecx, ebx
call fcn.1813fee0
mov dword [esp + 0x38], eax
test eax, eax
jne 0x1812f13b
mov eax, dword [edi + 0x20]
mov dword [esp + 0x24], eax
mov eax, dword [edi + 4]
shr eax, 3
and eax, 1
mov dword [esp + 0x58], eax
xor eax, eax
push 0x28
push eax
lea eax, [esp + 0x80]
push eax
call fcn.181757a0
mov eax, dword [edi + 0x30]
add esp, 0xc
mov dword [esp + 0x78], eax
xor eax, eax
mov edx, eax
mov dword [esp + 0x30], eax
cmp dword [edi + 0x34], eax
jne 0x1812f0fd
mov ecx, dword [esp + 0x24]
cmp edx, dword [ecx]
jge 0x1812f166
imul eax, edx, 0x48
mov dword [esp + 0x20], eax
test byte [eax + ecx + 0x2c], 8
mov esi, dword [eax + ecx + 0x1c]
mov dword [esp + 0x10], esi
mov esi, dword [eax + ecx + 0x18]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x14]
je 0x1812f054
mov edx, dword [eax + ecx + 0x34]
mov ecx, dword [edi + 0x24]
call fcn.18114261
test eax, eax
je 0x1812f04c
mov eax, dword [esp + 0x2c]
mov ecx, 0x2000
test word [eax + 0x4c], cx
jne 0x1812f04c
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
and byte [edx + eax + 0x2c], 0xd7
mov edx, dword [edx + eax + 0x34]
mov ecx, dword [edi + 0x24]
call fcn.18129d84
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x10]
test eax, eax
je 0x1812f0ee
mov eax, dword [eax + 0x1c]
mov esi, dword [esp + 0x28]
mov ebx, dword [eax]
movsx eax, word [esi + 0x2a]
mov esi, dword [esp + 0x14]
cmp eax, ebx
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x50]
jne 0x1812f14b
mov eax, dword [esp + 0x10]
test byte [eax + 4], 8
jne 0x1812f0ee
cmp dword [eax + 0x30], 0
je 0x1812f0a9
test edx, edx
jne 0x1812f0a9
test dword [edi + 4], 0x40000
je 0x1812f0a9
cmp dword [ecx], 1
je 0x1812f0ee
test byte [ecx + 0x74], 0xa
jne 0x1812f0ee
push dword [esp + 0x58]
mov ecx, ebx
push edx
mov edx, edi
call fcn.1812d236
pop ecx
pop ecx
test eax, eax
je 0x1812f0c9
xor eax, eax
cmp dword [ebx + 0x24], eax
jne 0x1812f13b
or dword [esp + 0x30], 0xffffffff
mov eax, dword [esp + 0x2c]
mov ecx, dword [edi + 0x20]
mov dword [esp + 0x24], ecx
cmp byte [eax + 0x51], 0
jne 0x1812f13b
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x30]
cmp byte [eax], 8
jbe 0x1812f0ee
mov eax, dword [edi + 0x30]
mov dword [esp + 0x78], eax
inc edx
cmp dword [edi + 0x34], 0
mov dword [esp + 0x30], edx
je 0x1812efea
push dword [esp + 0x4c]
mov edx, edi
mov ecx, ebx
call fcn.1812bd64
mov esi, eax
xor eax, eax
pop ecx
cmp dword [edi + 0x38], eax
jne 0x1812f11b
mov ecx, ebx
call fcn.180ff88d
mov eax, esi
jmp 0x18130512
test ecx, ecx
jne 0x1812f12c
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
push ecx
push str.target_object_alias_may_not_appear_in_FROM_clause:__s
push ebx
call fcn.180e8fc0
add esp, 0xc
mov ecx, ebx
call fcn.180ff88d
mov eax, dword [esp + 0x38]
jmp 0x18130512
push dword [esp + 0x20]
mov ecx, dword [esp + 0x2c]
push dword [ecx]
push eax
push str.expected__d_columns_for__s_but_got__d
push ebx
call fcn.180e8fc0
add esp, 0x14
jmp 0x1812f13b
mov eax, dword [ecx]
cmp eax, 1
jle 0x1812f18c
mov edx, dword [esp + 0x2c]
xor esi, esi
cmp word [edx + 0x4c], si
mov esi, dword [esp + 0x14]
jl 0x1812f18c
mov edx, edi
mov ecx, ebx
call fcn.1812d94d
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx]
xor edx, edx
mov dword [esp + 0x3c], 0x181f4ba4
mov dword [esp + 0x48], edx
test eax, eax
jle 0x1812f4c8
mov dword [esp + 0x24], ecx
imul eax, edx, 0x48
add eax, 8
add ecx, eax
mov dword [esp + 0x1c], ecx
mov eax, dword [ecx + 0x38]
or eax, dword [ecx + 0x3c]
jne 0x1812f1de
cmp dword [ecx + 8], eax
je 0x1812f1de
push dword [ecx + 4]
push dword [esp + 0x40]
push dword [ecx + 8]
mov ecx, ebx
push 0x14
pop edx
call fcn.18118204
mov ecx, dword [esp + 0x28]
add esp, 0xc
mov edx, dword [esp + 0x48]
mov eax, dword [ecx + 0x14]
mov dword [esp + 0x18], eax
test eax, eax
je 0x1812f4b7
xor eax, eax
lea edx, [esp + 0x10]
mov ecx, edi
mov dword [esp + 0x10], eax
call fcn.1810f678
mov eax, dword [esp + 0x10]
mov ecx, 0x1000
add dword [ebx + 0xd4], eax
mov eax, dword [esp + 0x2c]
test word [eax + 0x4c], cx
jne 0x1812f23a
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
movzx eax, byte [ecx + 0x24]
shr eax, 5
and eax, 1
push eax
push dword [ecx + 0x2c]
mov ecx, ebx
push dword [edi + 0x24]
call fcn.1812d9e0
add esp, 0xc
cmp dword [esp + 0x48], 0
mov ecx, dword [esp + 0x1c]
mov eax, dword [ebx + 0xf4]
mov dword [esp + 0x54], eax
mov eax, dword [ecx + 8]
mov dword [ebx + 0xf4], eax
jne 0x1812f337
mov eax, dword [esp + 0x24]
cmp dword [eax], 1
je 0x1812f26f
test byte [eax + 0x74], 0xa
je 0x1812f337
mov esi, dword [esi + 0x6c]
inc esi
inc dword [ebx + 0x2c]
mov eax, dword [ebx + 0x2c]
mov dword [ecx + 0x1c], eax
xor ecx, ecx
push esi
push ecx
mov ecx, dword [esp + 0x1c]
push eax
push 0xd
pop edx
call fcn.180ff616
mov eax, dword [esp + 0x28]
add esp, 0xc
mov byte [esp + 0xa0], 0xd
mov dword [eax + 0x18], esi
mov eax, dword [eax + 0x1c]
mov dword [esp + 0xa4], eax
xor eax, eax
mov dword [esp + 0xa8], eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0xac], eax
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x18]
push dword [eax + 0x10]
push str.CO_ROUTINE__u
push 1
push ebx
call fcn.180ff83c
mov edx, dword [esp + 0x28]
lea eax, [esp + 0xb0]
push eax
mov ecx, ebx
call fcn.1812ee27
mov edx, dword [esp + 0x30]
add esp, 0x14
mov eax, dword [esp + 0x18]
mov ecx, dword [edx + 0x10]
mov ax, word [eax + 2]
mov word [ecx + 0x2e], ax
mov eax, dword [esp + 0xac]
or dword [edx + 0x28], 0x10
mov ecx, dword [esp + 0x14]
mov dword [edx + 0x20], eax
mov edx, dword [edx + 0x1c]
call fcn.180ff932
lea edx, [esi - 1]
mov esi, dword [esp + 0x14]
mov ecx, esi
call fcn.180ffe36
mov ecx, dword [esi + 0x6c]
mov dword [eax + 8], ecx
jmp 0x1812f47b
mov eax, dword [ebx + 0x2c]
xor edx, edx
push edx
inc eax
mov dword [esp + 0x14], edx
push eax
push edx
mov dword [ebx + 0x2c], eax
mov dword [ecx + 0x1c], eax
mov ecx, esi
push 0x45
pop edx
call fcn.180ff616
mov ecx, dword [esp + 0x28]
add esp, 0xc
mov dword [esp + 0x28], eax
inc eax
test byte [ecx + 0x28], 8
mov dword [ecx + 0x18], eax
jne 0x1812f383
xor eax, eax
mov ecx, esi
push eax
push eax
push eax
push 0x11
pop edx
call fcn.180ff616
mov ecx, dword [esp + 0x28]
add esp, 0xc
mov dword [esp + 0x10], eax
mov edx, ecx
mov ecx, dword [esp + 0x24]
call fcn.1812ed92
mov dword [esp + 0x20], eax
test eax, eax
je 0x1812f3c7
xor ecx, ecx
push ecx
push dword [eax + 0x2c]
mov eax, dword [esp + 0x24]
mov ecx, esi
push dword [eax + 0x2c]
push 0x62
pop edx
call fcn.180ff616
mov eax, dword [esp + 0x2c]
add esp, 0xc
mov ecx, dword [esp + 0x18]
mov eax, dword [eax + 0x14]
movzx eax, word [eax + 2]
mov word [ecx + 2], ax
mov ecx, eax
jmp 0x1812f42d
mov eax, dword [esp + 0x1c]
mov byte [esp + 0xa0], 0xc
mov eax, dword [eax + 0x2c]
mov dword [esp + 0xa4], eax
xor eax, eax
mov dword [esp + 0xa8], eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0xac], eax
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x18]
push dword [eax + 0x10]
push str.MATERIALIZE__u
push 1
push ebx
call fcn.180ff83c
mov edx, dword [esp + 0x28]
lea eax, [esp + 0xb0]
push eax
mov ecx, ebx
call fcn.1812ee27
mov eax, dword [esp + 0x2c]
add esp, 0x14
movzx ecx, word [eax + 2]
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x10]
mov word [eax + 0x2e], cx
mov eax, dword [esp + 0x10]
test eax, eax
je 0x1812f44f
mov edx, eax
mov ecx, esi
call fcn.180ffe36
mov ecx, dword [esi + 0x6c]
mov dword [eax + 8], ecx
xor eax, eax
mov ecx, esi
push eax
push eax
mov eax, dword [esp + 0x24]
push dword [eax + 0x1c]
push 0x41
pop edx
call fcn.180ff616
mov edx, dword [esp + 0x34]
add esp, 0xc
mov ecx, dword [esp + 0x14]
mov esi, eax
call fcn.180ffe36
mov dword [eax + 4], esi
mov esi, ecx
mov eax, dword [esp + 0x2c]
xor ecx, ecx
mov byte [ebx + 0x13], cl
mov dword [ebx + 0x1c], ecx
cmp byte [eax + 0x51], cl
jne 0x181304f5
mov dword [esp + 0x10], ecx
lea edx, [esp + 0x10]
mov ecx, edi
call fcn.1810f678
mov eax, dword [esp + 0x10]
sub dword [ebx + 0xd4], eax
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x48]
mov dword [ebx + 0xf4], eax
mov ecx, dword [esp + 0x24]
inc edx
mov dword [esp + 0x48], edx
cmp edx, dword [ecx]
jl 0x1812f1a6
mov eax, dword [edi + 0x24]
mov ecx, dword [edi + 0x1c]
mov dword [esp + 0x60], eax
mov eax, dword [edi + 0x28]
mov dword [esp + 0x1c], eax
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x5c], eax
mov al, byte [edi + 4]
and al, 1
mov dword [esp + 0x30], ecx
mov byte [esp + 0xe8], al
mov eax, dword [edi + 4]
and al, 9
cmp al, 1
jne 0x1812f532
mov edx, ecx
mov ecx, dword [esp + 0x78]
push 0xffffffffffffffff
call fcn.18113f29
pop ecx
test eax, eax
jne 0x1812f52e
cmp dword [edi + 0x44], eax
jne 0x1812f588
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
and dword [edi + 4], 0xfffffffe
push eax
call fcn.181100e7
or dword [edi + 4], 8
pop ecx
mov dword [esp + 0x1c], eax
mov dword [edi + 0x28], eax
mov ecx, dword [esp + 0x30]
xor eax, eax
mov edx, dword [esp + 0x78]
test edx, edx
je 0x1812f58e
push dword [ecx]
mov ecx, ebx
push eax
call fcn.1812ac28
mov edx, dword [ebx + 0x28]
mov ecx, eax
push 0xfffffffffffffff7
push ecx
mov dword [esp + 0x90], edx
lea eax, [edx + 1]
mov dword [ebx + 0x28], eax
xor eax, eax
push eax
mov eax, dword [esp + 0x44]
mov ecx, dword [eax]
mov eax, dword [esp + 0x8c]
inc ecx
mov eax, dword [eax]
add eax, ecx
mov ecx, esi
push eax
push edx
push 0x64
pop edx
call fcn.180ff738
add esp, 0x1c
mov dword [esp + 0x8c], eax
jmp 0x1812f596
mov ecx, dword [esp + 0x30]
jmp 0x1812f534
or dword [esp + 0x8c], 0xffffffff
mov eax, dword [esp + 0x4c]
cmp byte [eax], 0xc
jne 0x1812f5b8
xor ecx, ecx
push ecx
mov ecx, dword [esp + 0x34]
push dword [ecx]
mov ecx, esi
push dword [eax + 4]
push 0x64
pop edx
call fcn.180ff616
add esp, 0xc
dec dword [ebx + 0x38]
mov ecx, 0x4000
mov eax, dword [ebx + 0x38]
mov dword [esp + 0xc4], eax
test dword [edi + 4], ecx
jne 0x1812f5d8
mov ecx, 0x140
mov word [edi + 2], cx
push eax
mov edx, edi
mov ecx, ebx
call fcn.1812b79b
xor eax, eax
pop ecx
cmp dword [edi + 8], eax
jne 0x1812f609
mov edx, dword [esp + 0x8c]
test edx, edx
js 0x1812f609
mov ecx, esi
call fcn.180ffe36
mov byte [eax], 0x6f
or byte [esp + 0x98], 1
xor eax, eax
test byte [edi + 4], 1
je 0x1812f67c
mov eax, dword [ebx + 0x28]
mov ecx, ebx
mov dword [esp + 0xec], eax
inc eax
mov dword [ebx + 0x28], eax
xor eax, eax
mov edx, dword [edi + 0x1c]
push eax
push eax
call fcn.1812ac28
mov edi, eax
mov ecx, esi
xor eax, eax
push eax
push eax
push dword [esp + 0xfc]
push 0x64
pop edx
call fcn.180ff616
mov ecx, dword [esp + 0x28]
add esp, 0x14
mov esi, eax
mov edx, esi
push 0xfffffffffffffff7
push edi
call fcn.180ffd78
pop ecx
pop ecx
mov dword [esp + 0xf0], esi
mov esi, dword [esp + 0x14]
mov ecx, esi
push 8
pop edx
call fcn.180ffb71
mov edi, dword [esp + 0x64]
xor eax, eax
mov byte [esp + 0xe9], 3
jmp 0x1812f683
mov byte [esp + 0xe9], al
cmp dword [esp + 0x58], 0
mov ecx, dword [esp + 0x1c]
jne 0x1812f894
test ecx, ecx
jne 0x1812f894
movzx ecx, byte [esp + 0xe8]
mov edx, 0x4000
mov ax, word [edi + 4]
neg ecx
sbb ecx, ecx
and ax, dx
and ecx, 0x100
or cx, ax
movzx eax, cx
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0x44]
mov dword [esp + 0x28], eax
test eax, eax
je 0x1812f6d6
mov edx, edi
mov ecx, ebx
call fcn.18140717
movsx eax, word [edi + 2]
mov ecx, ebx
mov edx, dword [esp + 0x24]
push eax
push dword [esp + 0x24]
push dword [edi + 0x1c]
push dword [esp + 0x84]
push dword [esp + 0x70]
call fcn.1813e43f
mov edx, eax
add esp, 0x14
mov dword [esp + 0x10], edx
test edx, edx
je 0x181304f1
movzx eax, word [edx + 0x34]
cmp ax, word [edi + 2]
jge 0x1812f717
mov word [edi + 2], ax
cmp byte [esp + 0xe8], 0
je 0x1812f72f
mov al, byte [edx + 0x2f]
test al, al
je 0x1812f72f
mov byte [esp + 0xe9], al
mov eax, dword [esp + 0x78]
test eax, eax
je 0x1812f783
movsx ecx, byte [edx + 0x2d]
mov dword [esp + 0x7c], ecx
test byte [edx + 0x30], 4
jne 0x1812f752
mov esi, dword [edx + 0x1c]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x14]
jmp 0x1812f768
movzx eax, byte [edx + 0x2c]
imul eax, eax, 0x58
mov eax, dword [eax + edx + 0x2a8]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x78]
mov ebx, dword [esp + 0x38]
mov dword [esp + 0x94], ebx
sub ecx, dword [eax]
mov ebx, dword [esp + 0x50]
neg ecx
sbb ecx, ecx
and eax, ecx
mov dword [esp + 0x78], eax
cmp dword [esp + 0x8c], 0
jl 0x1812f7a3
test eax, eax
jne 0x1812f7a3
mov edx, dword [esp + 0x8c]
mov ecx, esi
call fcn.180ffccd
mov edx, dword [esp + 0x10]
cmp dword [esp + 0x28], 0
je 0x1812f85e
mov ebx, dword [ebx + 0x38]
mov ecx, dword [esp + 0x50]
lea esi, [ebx - 1]
sub ebx, 2
inc dword [ecx + 0x2c]
mov edi, dword [ecx + 0x2c]
push esi
push edi
lea eax, [ebx - 1]
push edx
mov edx, dword [esp + 0x70]
mov dword [ecx + 0x38], eax
call fcn.18141bd6
add esp, 0xc
lea eax, [ebx - 1]
xor ecx, ecx
push ecx
push eax
push ecx
mov ecx, dword [esp + 0x20]
push 0xb
pop edx
call fcn.180ff616
mov ecx, dword [esp + 0x20]
add esp, 0xc
mov edx, esi
call fcn.180ff99a
mov edx, dword [esp + 0x64]
lea esi, [ebx - 1]
mov ecx, dword [esp + 0x50]
xor eax, eax
push esi
push ebx
push dword [esp + 0x54]
mov dword [esp + 0xa0], eax
lea eax, [esp + 0xf4]
push eax
lea eax, [esp + 0x88]
push eax
push 0xffffffffffffffff
call fcn.1812a413
mov ecx, dword [esp + 0x2c]
mov edx, ebx
call fcn.180ff99a
mov ecx, dword [esp + 0x2c]
xor eax, eax
push eax
push eax
push edi
push 0x41
pop edx
call fcn.180ff616
add esp, 0x24
mov edx, esi
mov esi, dword [esp + 0x14]
mov ecx, esi
call fcn.180ff99a
mov ebx, dword [esp + 0x50]
jmp 0x18130472
push dword [edx + 0x20]
lea eax, [esp + 0xec]
mov ecx, ebx
push dword [edx + 0x1c]
mov edx, edi
push dword [esp + 0x54]
push eax
lea eax, [esp + 0x88]
push eax
push 0xffffffffffffffff
call fcn.1812a413
mov ecx, dword [esp + 0x28]
add esp, 0x18
call fcn.1813ee22
jmp 0x18130472
mov dword [esp + 0x68], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x54], eax
test ecx, ecx
je 0x1812f93f
mov edx, dword [edi + 0x1c]
mov eax, dword [edx]
test eax, eax
jle 0x1812f8c5
add edx, 0x16
xor esi, esi
dec eax
mov word [edx], si
lea edx, [edx + 0x14]
test eax, eax
jg 0x1812f8b4
mov esi, dword [esp + 0x14]
mov eax, dword [ecx]
test eax, eax
jle 0x1812f8df
lea edx, [ecx + 0x16]
xor ebx, ebx
dec eax
mov word [edx], bx
lea edx, [edx + 0x14]
test eax, eax
jg 0x1812f8ce
mov ebx, dword [esp + 0x50]
push 0x42
pop eax
cmp word [edi + 2], ax
jle 0x1812f8ec
mov word [edi + 2], ax
mov edx, dword [esp + 0x78]
test edx, edx
je 0x1812f945
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x1812f945
and dword [esp + 0x10], 0
test eax, eax
jle 0x1812f929
mov ebx, dword [esp + 0x10]
xor eax, eax
mov esi, eax
mov al, byte [esi + edx + 0xc]
lea esi, [esi + 0x14]
and al, 1
inc ebx
mov byte [ecx + esi - 8], al
mov edx, dword [esp + 0x78]
cmp ebx, dword [ecx]
jl 0x1812f90b
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x14]
push 0xffffffffffffffff
call fcn.18113f29
pop ecx
test eax, eax
jne 0x1812f945
mov dword [esp + 0x54], 1
jmp 0x1812f945
xor eax, eax
mov word [edi + 2], ax
dec dword [ebx + 0x38]
mov eax, dword [ebx + 0x38]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x48], eax
xor eax, eax
push eax
push 0x38
call fcn.180e699a
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x18], ecx
test ecx, ecx
je 0x181304f1
mov eax, dword [ebx + 0x80]
mov dword [ecx + 0x34], eax
mov dword [ebx + 0x80], ecx
mov eax, dword [edi + 0x10]
mov dword [ecx + 0x30], eax
xor eax, eax
push 0x20
push eax
lea eax, [esp + 0xd0]
push eax
call fcn.181757a0
mov eax, dword [esp + 0x30]
add esp, 0xc
mov ecx, dword [esp + 0x18]
mov dword [esp + 0xcc], eax
mov eax, dword [ebx + 0x2c]
inc eax
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xd0], ecx
mov dword [ecx + 0x10], eax
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x1812f9c7
mov edx, dword [eax]
jmp 0x1812f9c9
xor edx, edx
mov dword [ecx + 0xc], edx
mov edx, dword [esp + 0x30]
mov dword [ecx + 0x18], eax
lea ecx, [esp + 0xc8]
call fcn.181147e1
mov edx, dword [esp + 0x78]
lea ecx, [esp + 0xc8]
call fcn.181147e1
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x1812fa58
cmp dword [esp + 0x1c], 0
je 0x1812fa4a
xor eax, eax
push 0x1c
push eax
lea eax, [esp + 0xa8]
push eax
call fcn.181757a0
mov edx, dword [edi + 0x2c]
add esp, 0xc
mov dword [esp + 0xa0], ebx
mov dword [esp + 0xa4], 0x1812ecdc
mov dword [esp + 0xb8], edi
test edx, edx
je 0x1812fa3f
lea ecx, [esp + 0xa0]
call fcn.1810cc83
mov eax, dword [edi + 0x24]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x5c]
mov edx, eax
lea ecx, [esp + 0xc8]
call fcn.181147ad
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0x20]
mov dword [ecx + 0x24], eax
xor eax, eax
cmp dword [edi + 0x28], eax
jne 0x1812fa9c
cmp dword [edi + 0x2c], eax
jne 0x1812fa9c
cmp dword [ecx + 0x2c], 1
jne 0x1812fa9c
mov edx, dword [ecx + 0x28]
lea eax, [esp + 0x6c]
mov ecx, dword [esp + 0x2c]
push eax
mov edx, dword [edx]
call fcn.1812db01
mov byte [esp + 0x47], al
mov eax, dword [esp + 0x70]
pop ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x70], eax
xor eax, eax
jmp 0x1812faa0
mov byte [esp + 0x43], al
cmp dword [ecx + 0x2c], 0
mov dword [esp + 0x10], eax
jle 0x1812fb29
mov ecx, dword [esp + 0xe0]
mov ebx, eax
mov esi, dword [esp + 0x18]
mov eax, dword [esi + 0x28]
or ecx, 0x20000
mov edi, dword [ebx + eax]
mov dword [esp + 0xe0], ecx
lea ecx, [esp + 0xc8]
mov edx, dword [edi + 0x14]
call fcn.181147e1
test dword [edi + 4], 0x1000000
je 0x1812faf4
mov edx, dword [edi + 0x2c]
lea ecx, [esp + 0xc8]
mov edx, dword [edx + 0x28]
call fcn.181147ad
mov ecx, dword [esp + 0xe0]
add ebx, 0x10
mov eax, dword [esp + 0x10]
and ecx, 0xfffdffff
inc eax
mov dword [esp + 0xe0], ecx
mov dword [esp + 0x10], eax
cmp eax, dword [esi + 0x2c]
jl 0x1812fab7
mov ebx, dword [esp + 0x50]
mov edi, dword [esp + 0x64]
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov eax, dword [ebx + 0x2c]
mov dword [ecx + 0x14], eax
mov eax, dword [esp + 0x2c]
cmp byte [eax + 0x51], 0
jne 0x181304f5
mov edx, dword [esp + 0x1c]
test edx, edx
je 0x1813010e
mov eax, dword [ebx + 0x28]
mov dword [ecx + 4], eax
xor eax, eax
inc dword [ebx + 0x28]
push dword [ecx + 0x20]
mov ecx, ebx
push eax
call fcn.1812ac28
push 0xfffffffffffffff7
push eax
mov dword [esp + 0xcc], eax
mov ecx, esi
xor eax, eax
push eax
mov eax, dword [esp + 0x2c]
push dword [eax + 0xc]
push dword [eax + 4]
push 0x6f
pop edx
call fcn.180ff738
mov edx, dword [esp + 0x38]
add esp, 0x1c
mov dword [esp + 0xc0], eax
mov eax, dword [ebx + 0x2c]
inc eax
mov dword [esp + 0x34], eax
inc eax
mov dword [esp + 0x3c], eax
lea ecx, [eax + 2]
mov eax, dword [ebx + 0x38]
dec eax
mov dword [ebx + 0x2c], ecx
mov dword [esp + 0x28], eax
dec eax
mov dword [ebx + 0x38], eax
mov dword [esp + 0x44], ecx
add ecx, dword [edx]
mov dword [esp + 0x10], eax
mov dword [ebx + 0x2c], ecx
lea eax, [ecx + 1]
mov dword [esp + 0x6c], eax
mov eax, dword [edx]
add eax, ecx
mov ecx, esi
mov dword [ebx + 0x2c], eax
xor eax, eax
push eax
push dword [esp + 0x40]
push eax
push 0x45
pop edx
call fcn.180ff616
mov ecx, dword [esp + 0x28]
add esp, 0xc
mov eax, dword [ecx]
mov ecx, dword [esp + 0x44]
dec eax
inc ecx
add eax, ecx
push eax
push ecx
xor eax, eax
mov ecx, esi
push eax
push 0x48
pop edx
call fcn.180ff616
add esp, 0xc
xor eax, eax
mov ecx, esi
push eax
push dword [esp + 0x14]
push dword [esp + 0x4c]
push 0xc
pop edx
call fcn.180ff616
mov eax, dword [esp + 0x60]
add esp, 0xc
xor ecx, ecx
neg eax
push ecx
mov edx, dword [esp + 0x28]
sbb eax, eax
and eax, 0x200
add eax, 0x40
push eax
push ecx
push dword [esp + 0x28]
mov ecx, ebx
push dword [esp + 0x70]
call fcn.1813e43f
mov edx, eax
add esp, 0x14
mov dword [esp + 0x58], edx
test edx, edx
je 0x181304f1
mov ecx, dword [esp + 0x1c]
movsx eax, byte [edx + 0x2d]
cmp eax, dword [ecx]
jne 0x1812fc69
mov edi, dword [esp + 0x18]
xor eax, eax
mov dword [esp + 0x24], eax
jmp 0x1812fe0f
cmp byte [esp + 0xe8], 0
je 0x1812fc7e
test byte [edi + 4], 1
mov eax, str.DISTINCT
je 0x1812fc83
mov eax, str.GROUP_BY
push eax
push str.USE_TEMP_B_TREE_FOR__s
xor eax, eax
push eax
push ebx
call fcn.180ff83c
mov eax, dword [esp + 0x2c]
add esp, 0x10
mov edi, dword [esp + 0x18]
mov dword [esp + 0x24], 1
mov eax, dword [eax]
mov edx, eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0x20]
test eax, eax
jle 0x1812fce3
mov ecx, dword [edi + 0x1c]
mov esi, edx
add ecx, 0x12
mov edi, eax
movsx eax, word [ecx]
cmp eax, esi
jl 0x1812fccf
inc edx
inc esi
add ecx, 0x14
sub edi, 1
jne 0x1812fcc6
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov dword [esp + 0x60], edx
mov ecx, ebx
call fcn.1811484d
mov edx, dword [esp + 0x1c]
xor ecx, ecx
push ecx
push ecx
push eax
mov ecx, ebx
mov dword [esp + 0x74], eax
call fcn.181133b9
xor eax, eax
add esp, 0xc
mov ecx, eax
mov dword [esp + 0x38], ecx
cmp dword [edi + 0x20], eax
jle 0x1812fd5c
mov ebx, dword [esp + 0x74]
mov dword [esp + 0x20], eax
mov edx, dword [edi + 0x1c]
add edx, eax
movsx eax, word [edx + 0x12]
cmp eax, ebx
jl 0x1812fd43
mov eax, dword [esp + 0x68]
mov ecx, esi
add eax, ebx
push eax
movsx eax, word [edx + 0x10]
push eax
push dword [edx + 8]
mov edx, dword [edx]
call fcn.18111fca
mov ecx, dword [esp + 0x44]
add esp, 0xc
inc ebx
mov eax, dword [esp + 0x20]
inc ecx
add eax, 0x14
mov dword [esp + 0x38], ecx
mov dword [esp + 0x20], eax
cmp ecx, dword [edi + 0x20]
jl 0x1812fd16
mov ebx, dword [esp + 0x50]
mov ecx, ebx
call fcn.18114815
mov ecx, dword [esp + 0x14]
mov esi, eax
push esi
push dword [esp + 0x64]
push dword [esp + 0x70]
push 0x5b
pop edx
call fcn.180ff616
mov edx, dword [esp + 0x24]
add esp, 0xc
mov ecx, dword [esp + 0x14]
xor eax, eax
push eax
push esi
push dword [edx + 4]
mov edx, 0x84
call fcn.180ff616
add esp, 0xc
mov edx, esi
mov ecx, ebx
call fcn.18114834
mov esi, dword [esp + 0x60]
mov edx, dword [esp + 0x68]
push esi
call fcn.18114883
mov ecx, dword [esp + 0x5c]
add esp, 4
call fcn.1813ee22
mov edi, dword [esp + 0x18]
mov ecx, ebx
mov edx, dword [ebx + 0x28]
mov dword [esp + 0x68], edx
mov dword [edi + 8], edx
inc dword [ebx + 0x28]
call fcn.18114815
push esi
mov esi, dword [esp + 0x18]
mov ecx, esi
push eax
push edx
push 0x72
pop edx
mov dword [esp + 0x2c], eax
call fcn.180ff616
add esp, 0xc
xor eax, eax
mov ecx, esi
push eax
push dword [esp + 0x4c]
push dword [edi + 4]
push 0x23
pop edx
call fcn.180ff616
mov eax, dword [esp + 0x30]
add esp, 0xc
mov edx, dword [esp + 0x58]
mov byte [edi + 1], 1
cmp dword [esp + 0x54], 0
je 0x1812fe3e
mov ecx, dword [esp + 0x2c]
test byte [ecx + 0x4c], 4
jne 0x1812fe3e
test eax, eax
jne 0x1812fe2a
test byte [edx + 0x30], 8
je 0x1812fe3e
mov edx, dword [esp + 0x8c]
xor eax, eax
mov ecx, esi
mov dword [esp + 0x78], eax
call fcn.180ffccd
cmp dword [esp + 0x24], 0
mov eax, dword [esi + 0x6c]
mov dword [esp + 0x74], eax
je 0x1812fe64
push dword [esp + 0x68]
mov ecx, esi
push dword [esp + 0x24]
push dword [edi + 4]
push 0x7e
pop edx
call fcn.180ff616
add esp, 0xc
xor eax, eax
mov ecx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x20], ecx
mov edx, dword [eax]
test edx, edx
jle 0x1812feca
add eax, 4
mov dword [esp + 0x54], eax
jmp 0x1812fe83
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x6c]
add edx, ecx
cmp dword [esp + 0x24], 0
push edx
je 0x1812fea5
push ecx
push dword [esp + 0x70]
mov ecx, esi
push 0x59
pop edx
call fcn.180ff616
add esp, 0xc
jmp 0x1812feb2
mov byte [edi], 1
mov ecx, ebx
mov edx, dword [eax]
call fcn.181132e5
pop ecx
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
add dword [esp + 0x54], 0x14
inc ecx
mov dword [esp + 0x20], ecx
mov edx, dword [eax]
cmp ecx, edx
jl 0x1812fe7f
mov ecx, dword [esp + 0xbc]
test ecx, ecx
je 0x1812fed9
inc dword [ecx]
mov edx, dword [eax]
mov eax, dword [esp + 0x44]
push 0xfffffffffffffff7
push ecx
push edx
push dword [esp + 0x78]
inc eax
mov ecx, esi
push eax
push 0x56
pop edx
call fcn.180ff738
mov esi, dword [esi + 0x6c]
add esp, 0x14
mov edi, dword [esp + 0x14]
xor ecx, ecx
lea eax, [esi + 1]
push eax
push ecx
push eax
push 0x10
pop edx
mov ecx, edi
call fcn.180ff616
mov eax, dword [esp + 0x28]
add esp, 0xc
mov edx, dword [esp + 0x6c]
mov ecx, ebx
push dword [eax]
mov eax, dword [esp + 0x48]
inc eax
push eax
call fcn.181120c9
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x34]
mov eax, dword [esp + 0x4c]
inc eax
push eax
push 0xc
pop edx
call fcn.180ff616
add esp, 0x14
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x4c]
push dword [esp + 0x44]
push 0x30
pop edx
call fcn.180ff616
add esp, 0xc
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x14]
push dword [esp + 0x4c]
push 0xc
pop edx
call fcn.180ff616
mov edx, esi
add esp, 0xc
mov esi, edi
mov ecx, esi
call fcn.180ffe36
mov ecx, dword [esi + 0x6c]
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x34]
mov dword [eax + 8], ecx
mov ecx, ebx
push edi
call fcn.1812ea7d
pop ecx
xor eax, eax
mov ecx, esi
push eax
push dword [esp + 0x38]
push 1
push 0x45
pop edx
call fcn.180ff616
add esp, 0xc
cmp dword [esp + 0x24], 0
je 0x1812ffc9
xor eax, eax
mov ecx, esi
push eax
push dword [esp + 0x78]
push dword [edi + 4]
push 3
pop edx
call fcn.180ff616
add esp, 0xc
jmp 0x1812ffe0
mov ecx, dword [esp + 0x58]
call fcn.1813ee22
mov edx, dword [esp + 0xc0]
mov ecx, esi
call fcn.180ffccd
xor eax, eax
mov ecx, esi
push eax
push dword [esp + 0x2c]
mov eax, dword [esp + 0x44]
inc eax
push eax
push 0xc
pop edx
call fcn.180ff616
mov edx, dword [esp + 0x54]
add esp, 0xc
mov ecx, esi
call fcn.180ff66f
mov edi, dword [esi + 0x6c]
xor eax, eax
push eax
push dword [esp + 0x40]
mov ecx, esi
push 1
push 0x45
pop edx
call fcn.180ff616
add esp, 0xc
xor eax, eax
mov ecx, esi
push eax
push eax
mov eax, dword [esp + 0x44]
inc eax
push eax
push 0x41
pop edx
call fcn.180ff616
mov edx, dword [esp + 0x34]
add esp, 0xc
mov ecx, esi
call fcn.180ff99a
mov esi, dword [esi + 0x6c]
xor eax, eax
mov ecx, dword [esp + 0x14]
push eax
lea eax, [esi + 2]
push eax
push dword [esp + 0x3c]
push 0x30
pop edx
call fcn.180ff616
mov ecx, dword [esp + 0x20]
add esp, 0xc
xor eax, eax
push eax
push eax
mov eax, dword [esp + 0x44]
inc eax
push eax
push 0x41
pop edx
call fcn.180ff616
mov edx, dword [esp + 0x24]
add esp, 0xc
mov ecx, ebx
call fcn.1812ea23
push 0x10
inc esi
push esi
push dword [esp + 0x64]
push ebx
call fcn.181138ef
mov edx, dword [esp + 0x74]
lea eax, [esp + 0xf8]
push edi
push esi
push dword [esp + 0x64]
mov ecx, ebx
push eax
lea eax, [esp + 0x98]
push eax
push 0xffffffffffffffff
call fcn.1812a413
xor edi, edi
mov eax, dword [esp + 0x64]
mov esi, dword [esp + 0x3c]
inc eax
push edi
push edi
push eax
push 0x41
pop edx
mov ecx, esi
call fcn.180ff616
mov edx, dword [esp + 0x44]
add esp, 0x34
mov ecx, esi
call fcn.180ff99a
mov edx, dword [esp + 0x18]
mov ecx, ebx
call fcn.1812e95c
push edi
push dword [esp + 0x38]
mov ecx, esi
push edi
push 0x45
pop edx
call fcn.180ff616
add esp, 0xc
mov ecx, esi
push edi
push edi
push dword [esp + 0x4c]
push 0x41
pop edx
call fcn.180ff616
add esp, 0xc
jmp 0x18130467
xor edx, edx
cmp dword [edi + 0x24], edx
jne 0x18130328
mov eax, dword [edi + 0x1c]
cmp dword [eax], 1
jne 0x18130328
mov edx, dword [edi + 0x20]
cmp dword [edx], 1
jne 0x18130326
cmp dword [edx + 0x1c], 0
jne 0x18130326
mov edx, dword [edx + 0x18]
mov dword [esp + 0x44], edx
cmp dword [edx + 0x38], 0
jne 0x18130326
mov eax, dword [eax + 4]
cmp byte [eax], 0xa5
jne 0x18130326
cmp dword [ecx + 0x2c], 0
je 0x18130326
mov eax, dword [ecx + 0x28]
mov eax, dword [eax + 4]
test dword [eax + 4], 0x100
je 0x18130326
mov esi, dword [edi + 0x1c]
mov eax, dword [esi + 4]
mov esi, dword [esp + 0x14]
test dword [eax + 4], 0x1000002
jne 0x18130326
test edx, edx
je 0x18130326
mov edx, dword [edx + 0x48]
mov ecx, dword [ebx]
call fcn.181292fc
mov edx, eax
xor ecx, ecx
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x10], eax
inc eax
mov dword [ebx + 0x28], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x58], ecx
mov dword [esp + 0x34], ecx
mov ecx, ebx
mov dword [esp + 0x20], edx
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x38], eax
call fcn.1811d1b9
mov eax, dword [esp + 0x44]
xor ecx, ecx
mov edx, dword [esp + 0x20]
push dword [eax]
push ecx
push dword [eax + 0x1c]
mov ecx, ebx
call fcn.18118288
mov edx, dword [esp + 0x50]
add esp, 0xc
test byte [edx + 0x24], 0x80
je 0x181301fe
mov ecx, edx
call fcn.1811903a
mov ecx, eax
mov dword [esp + 0x34], ecx
jmp 0x18130202
mov ecx, dword [esp + 0x34]
mov eax, dword [edi + 0x20]
mov dword [esp + 0x28], edx
test byte [eax + 0x30], 1
jne 0x1813024f
mov eax, dword [edx + 8]
mov dword [esp + 0x28], edx
test eax, eax
je 0x1813024f
mov dword [esp + 0x28], edx
test byte [eax + 0x38], 4
jne 0x18130240
movzx edi, word [eax + 0x30]
cmp di, word [edx + 0x30]
jge 0x18130240
cmp dword [eax + 0x24], 0
jne 0x18130240
test ecx, ecx
je 0x1813023e
cmp di, word [ecx + 0x30]
jge 0x18130240
mov ecx, eax
mov eax, dword [eax + 0x14]
test eax, eax
jne 0x1813021e
mov edi, dword [esp + 0x64]
mov dword [esp + 0x34], ecx
test ecx, ecx
je 0x18130267
mov eax, dword [ecx + 0x2c]
mov edx, ecx
mov ecx, ebx
mov dword [esp + 0x38], eax
call fcn.1811d65c
mov dword [esp + 0x58], eax
push 1
push dword [esp + 0x24]
mov ecx, esi
push dword [esp + 0x40]
push dword [esp + 0x1c]
push 0x60
pop edx
call fcn.180ff900
mov eax, dword [esp + 0x68]
add esp, 0x10
test eax, eax
je 0x18130299
push 0xfffffffffffffff7
push eax
or edx, 0xffffffff
mov ecx, esi
call fcn.180ffd78
pop ecx
pop ecx
xor eax, eax
mov ecx, esi
push eax
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x28]
push dword [eax + 8]
push dword [esp + 0x18]
push 0x5c
pop edx
call fcn.180ff616
add esp, 0xc
xor eax, eax
mov ecx, esi
push eax
push eax
push dword [esp + 0x18]
push 0x74
pop edx
call fcn.180ff616
add esp, 0xc
cmp byte [ebx + 0xcb], 2
jne 0x18130432
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x18130301
mov eax, dword [esp + 0x44]
test byte [eax + 0x24], 0x80
je 0x181302f4
mov eax, dword [ecx + 0x38]
and al, 3
cmp al, 2
je 0x18130301
mov eax, dword [ecx]
mov dword [esp + 0x3c], eax
mov eax, str._USING_COVERING_INDEX
jmp 0x18130305
mov eax, dword [esp + 0x3c]
push dword [esp + 0x3c]
push eax
mov eax, dword [esp + 0x30]
push dword [eax]
xor eax, eax
push str.SCAN_TABLE__s_s_s
push eax
push ebx
call fcn.180ff83c
add esp, 0x18
jmp 0x18130432
xor edx, edx
mov dword [esp + 0x28], edx
cmp dword [ecx + 0x24], edx
je 0x1813039a
mov eax, edx
mov edx, dword [ecx + 0x2c]
mov dword [esp + 0x34], eax
test edx, edx
jle 0x18130376
mov eax, dword [ecx + 0x28]
mov dword [esp + 0x10], eax
mov eax, dword [eax]
test dword [eax + 4], 0x1000000
jne 0x1813035d
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 4]
test byte [eax + 4], 0x20
jne 0x1813039a
mov eax, dword [esp + 0x10]
inc dword [esp + 0x34]
add eax, 0x10
mov dword [esp + 0x10], eax
cmp dword [esp + 0x34], edx
jl 0x18130345
mov eax, dword [esp + 0x34]
cmp eax, edx
jne 0x1813039a
inc dword [ebx + 0x2c]
xor ecx, ecx
mov eax, dword [ebx + 0x2c]
push ecx
push eax
push ecx
push 0x45
pop edx
mov ecx, esi
mov dword [esp + 0x34], eax
call fcn.180ff616
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov edx, ecx
mov ecx, ebx
call fcn.1812e95c
movzx eax, byte [esp + 0x43]
xor ecx, ecx
mov edx, dword [esp + 0x24]
push ecx
push eax
push ecx
push dword [esp + 0x7c]
mov ecx, ebx
push dword [esp + 0x70]
call fcn.1813e43f
add esp, 0x14
mov dword [esp + 0x20], eax
test eax, eax
je 0x181304f1
push dword [esp + 0x18]
mov edx, dword [esp + 0x2c]
mov ecx, ebx
call fcn.1812ea7d
mov eax, dword [esp + 0x2c]
pop ecx
test eax, eax
je 0x181303fa
xor ecx, ecx
push ecx
push eax
push 1
push 0x45
pop edx
mov ecx, esi
call fcn.180ff616
add esp, 0xc
mov ecx, dword [esp + 0x20]
test byte [ecx + 0x30], 4
je 0x18130422
movzx eax, byte [ecx + 0x2c]
imul eax, eax, 0x58
mov edx, dword [eax + ecx + 0x2a8]
cmp edx, dword [ecx + 0x1c]
je 0x18130422
mov ecx, esi
call fcn.180ff66f
mov ecx, dword [esp + 0x20]
call fcn.1813ee22
mov edx, dword [esp + 0x18]
mov ecx, ebx
call fcn.1812ea23
push 0x10
push dword [esp + 0x4c]
xor eax, eax
push dword [esp + 0x64]
mov dword [esp + 0x84], eax
push ebx
call fcn.181138ef
mov eax, dword [esp + 0x58]
mov edx, edi
push eax
push eax
push dword [esp + 0x64]
xor eax, eax
mov ecx, ebx
push eax
push eax
push 0xffffffffffffffff
call fcn.1812a413
add esp, 0x28
mov edx, dword [esp + 0x48]
mov ecx, esi
call fcn.180ff99a
xor edi, edi
cmp byte [esp + 0xe9], 3
jne 0x18130492
push str.DISTINCT
push str.USE_TEMP_B_TREE_FOR__s
push edi
push ebx
call fcn.180ff83c
add esp, 0x10
cmp dword [esp + 0x78], 0
je 0x181304d7
cmp dword [esp + 0x7c], 0
mov eax, str.RIGHT_PART_OF_ORDER_BY
jg 0x181304aa
mov eax, str.ORDER_BY
push eax
push str.USE_TEMP_B_TREE_FOR__s
push edi
push ebx
call fcn.180ff83c
mov eax, dword [esp + 0x40]
mov ecx, ebx
push dword [esp + 0x5c]
mov edx, dword [esp + 0x78]
push dword [eax]
lea eax, [esp + 0x90]
push eax
call fcn.1812ace1
add esp, 0x1c
mov edx, dword [esp + 0xc4]
mov ecx, esi
call fcn.180ff99a
xor eax, eax
cmp dword [ebx + 0x24], edi
setg al
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x70]
test ecx, ecx
je 0x1812f13b
mov edx, ecx
mov ecx, eax
call fcn.18110852
jmp 0x1812f13b
xor eax, eax
inc eax
mov ecx, dword [esp + 0xf4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.181605f4
mov esp, ebp
pop ebp
ret