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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xec
mov eax, dword [0x4c8048]
xor eax, esp
mov dword [esp + 0xe8], eax
mov eax, dword [ebp + 8]
mov dword [esp + 0x38], eax
xor eax, eax
inc eax
push ebx
mov ebx, ecx
mov dword [esp + 0x50], eax
mov dword [esp + 0x4c], eax
xor eax, eax
push esi
push edi
mov edi, edx
mov dword [esp + 0x70], eax
mov dword [esp + 0x34], eax
mov eax, dword [ebx]
mov dword [esp + 0x68], edi
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x24], eax
call fcn.0044c090
mov esi, eax
mov dword [esp + 0x10], esi
test edi, edi
je 0x450b68
mov eax, dword [esp + 0x24]
cmp byte [eax + 0x51], 0
jne 0x450b68
xor eax, eax
cmp dword [ebx + 0x24], eax
jne 0x450b68
push eax
push eax
push eax
push 0x15
pop edx
mov ecx, ebx
call fcn.0044cfbb
add esp, 0xc
test eax, eax
jne 0x450b68
mov eax, dword [esp + 0x44]
cmp byte [eax], 6
ja 0x44f524
mov edx, dword [edi + 0x30]
test edx, edx
je 0x44f511
mov ecx, dword [esp + 0x24]
call fcn.0044cfbb
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.0044cfbb
xor eax, eax
pop ecx
cmp dword [ebx + 0x24], eax
jne 0x44f778
mov eax, dword [esp + 0x24]
cmp byte [eax + 0x51], 0
jne 0x44f778
test dword [edi + 4], 0x800000
je 0x44f5b6
mov ecx, dword [edi + 0x20]
xor eax, eax
inc eax
mov dword [esp + 0x5c], eax
cmp dword [ecx], eax
jle 0x44f5b6
mov eax, dword [ecx + 0x18]
push 0x48
pop edx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0xc], edx
mov esi, dword [ecx + 0x18]
cmp esi, dword [edx + ecx + 0x18]
mov esi, dword [esp + 0x10]
jne 0x44f5a6
push dword [edx + ecx + 0x14]
mov eax, dword [ecx + 0x14]
push eax
mov dword [esp + 0x24], eax
call fcn.0044cfbb
pop ecx
pop ecx
test eax, eax
je 0x44f75b
mov ecx, dword [edi + 0x20]
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x5c]
inc eax
add edx, 0x48
mov dword [esp + 0x5c], eax
mov dword [esp + 0xc], edx
cmp eax, dword [ecx]
jl 0x44f573
mov eax, dword [esp + 0x44]
cmp byte [eax], 9
jne 0x44f5c8
mov edx, edi
mov ecx, ebx
call fcn.0044cfbb
mov edx, edi
mov ecx, ebx
call fcn.0044cfbb
mov dword [esp + 0x54], eax
test eax, eax
jne 0x44f778
mov eax, dword [edi + 0x20]
mov dword [esp + 0x20], eax
mov eax, dword [edi + 4]
shr eax, 3
and eax, 1
mov dword [esp + 0x48], eax
xor eax, eax
push 0x28
push eax
lea eax, [esp + 0x84]
push eax
call dword [sym.imp.VCRUNTIME140.dll_memset]
mov eax, dword [edi + 0x30]
add esp, 0xc
mov dword [esp + 0x7c], eax
xor eax, eax
mov edx, eax
mov dword [esp + 0x2c], eax
cmp dword [edi + 0x34], eax
jne 0x44f736
mov ecx, dword [esp + 0x20]
cmp edx, dword [ecx]
jge 0x44f7a3
imul eax, edx, 0x48
mov dword [esp + 0x1c], eax
test byte [eax + ecx + 0x2c], 8
mov esi, dword [eax + ecx + 0x1c]
mov dword [esp + 0xc], esi
mov esi, dword [eax + ecx + 0x18]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x10]
je 0x44f68d
mov edx, dword [eax + ecx + 0x34]
mov ecx, dword [edi + 0x24]
call fcn.0044cfbb
test eax, eax
je 0x44f685
mov eax, dword [esp + 0x24]
mov ecx, 0x2000
test word [eax + 0x4c], cx
jne 0x44f685
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
and byte [edx + eax + 0x2c], 0xd7
mov edx, dword [edx + eax + 0x34]
mov ecx, dword [edi + 0x24]
call fcn.0044cfbb
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0xc]
test eax, eax
je 0x44f727
mov eax, dword [eax + 0x1c]
mov esi, dword [esp + 0x28]
mov ebx, dword [eax]
movsx eax, word [esi + 0x2a]
mov esi, dword [esp + 0x10]
cmp eax, ebx
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x4c]
jne 0x44f788
mov eax, dword [esp + 0xc]
test byte [eax + 4], 8
jne 0x44f727
cmp dword [eax + 0x30], 0
je 0x44f6e2
test edx, edx
jne 0x44f6e2
test dword [edi + 4], 0x40000
je 0x44f6e2
cmp dword [ecx], 1
je 0x44f727
test byte [ecx + 0x74], 0xa
jne 0x44f727
push dword [esp + 0x48]
mov ecx, ebx
push edx
mov edx, edi
call fcn.0044cfbb
pop ecx
pop ecx
test eax, eax
je 0x44f702
xor eax, eax
cmp dword [ebx + 0x24], eax
jne 0x44f778
or dword [esp + 0x2c], 0xffffffff
mov eax, dword [esp + 0x24]
mov ecx, dword [edi + 0x20]
mov dword [esp + 0x20], ecx
cmp byte [eax + 0x51], 0
jne 0x44f778
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x2c]
cmp byte [eax], 8
jbe 0x44f727
mov eax, dword [edi + 0x30]
mov dword [esp + 0x7c], eax
inc edx
cmp dword [edi + 0x34], 0
mov dword [esp + 0x2c], edx
je 0x44f623
push dword [esp + 0x44]
mov edx, edi
mov ecx, ebx
call fcn.0044cfbb
mov esi, eax
xor eax, eax
pop ecx
cmp dword [edi + 0x38], eax
jne 0x44f754
mov ecx, ebx
call fcn.00420a32
mov eax, esi
jmp 0x450b6b
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x44f769
mov eax, dword [esp + 0x28]
mov eax, dword [eax]
push eax
push str.target_object_alias_may_not_appear_in_FROM_clause:__s
push ebx
call fcn.0044cfbb
add esp, 0xc
mov ecx, ebx
call fcn.00420a32
mov eax, dword [esp + 0x54]
jmp 0x450b6b
push dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
push dword [ecx]
push eax
push str.expected__d_columns_for__s_but_got__d
push ebx
call fcn.0044cfbb
add esp, 0x14
jmp 0x44f778
mov eax, dword [ecx]
cmp eax, 1
jle 0x44f7c9
mov edx, dword [esp + 0x24]
xor esi, esi
cmp word [edx + 0x4c], si
mov esi, dword [esp + 0x10]
jl 0x44f7c9
mov edx, edi
mov ecx, ebx
call fcn.0044cfbb
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx]
xor edx, edx
mov dword [esp + 0x6c], 0x4adacc
mov dword [esp + 0x40], edx
test eax, eax
jle 0x44fb07
mov dword [esp + 0x20], ecx
imul eax, edx, 0x48
add eax, 8
add ecx, eax
mov dword [esp + 0x18], ecx
mov eax, dword [ecx + 0x38]
or eax, dword [ecx + 0x3c]
jne 0x44f81b
cmp dword [ecx + 8], eax
je 0x44f81b
push dword [ecx + 4]
push dword [esp + 0x70]
push dword [ecx + 8]
mov ecx, ebx
push 0x14
pop edx
call fcn.0044cfbb
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov edx, dword [esp + 0x40]
mov eax, dword [ecx + 0x14]
mov dword [esp + 0x14], eax
test eax, eax
je 0x44faf6
xor eax, eax
lea edx, [esp + 0xc]
mov ecx, edi
mov dword [esp + 0xc], eax
call fcn.00430571
mov eax, dword [esp + 0xc]
mov ecx, 0x1000
add dword [ebx + 0xd4], eax
mov eax, dword [esp + 0x24]
test word [eax + 0x4c], cx
jne 0x44f877
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
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.0044cfbb
add esp, 0xc
cmp dword [esp + 0x40], 0
mov ecx, dword [esp + 0x18]
mov eax, dword [ebx + 0xf4]
mov dword [esp + 0x50], eax
mov eax, dword [ecx + 8]
mov dword [ebx + 0xf4], eax
jne 0x44f974
mov eax, dword [esp + 0x20]
cmp dword [eax], 1
je 0x44f8ac
test byte [eax + 0x74], 0xa
je 0x44f974
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 + 0x18]
push eax
push 0xd
pop edx
call fcn.0044cfbb
mov eax, dword [esp + 0x24]
add esp, 0xc
mov byte [esp + 0xa4], 0xd
mov dword [eax + 0x18], esi
mov eax, dword [eax + 0x1c]
mov dword [esp + 0xa8], eax
xor eax, eax
mov dword [esp + 0xac], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x14]
push dword [eax + 0x10]
push str.CO_ROUTINE__u
push 1
push ebx
call fcn.0044cfbb
mov edx, dword [esp + 0x24]
lea eax, [esp + 0xb4]
push eax
mov ecx, ebx
call fcn.0044cfbb
mov edx, dword [esp + 0x2c]
add esp, 0x14
mov eax, dword [esp + 0x14]
mov ecx, dword [edx + 0x10]
mov ax, word [eax + 2]
mov word [ecx + 0x2e], ax
mov eax, dword [esp + 0xb0]
or dword [edx + 0x28], 0x10
mov ecx, dword [esp + 0x10]
mov dword [edx + 0x20], eax
mov edx, dword [edx + 0x1c]
call fcn.00420ade
lea edx, [esi - 1]
mov esi, dword [esp + 0x10]
mov ecx, esi
call fcn.00420fd2
mov ecx, dword [esi + 0x6c]
mov dword [eax + 8], ecx
jmp 0x44faba
mov eax, dword [ebx + 0x2c]
xor edx, edx
push edx
inc eax
mov dword [esp + 0x10], edx
push eax
push edx
mov dword [ebx + 0x2c], eax
mov dword [ecx + 0x1c], eax
mov ecx, esi
push 0x45
pop edx
call fcn.0044cfbb
mov dword [esp + 0x34], eax
add esp, 0xc
lea ecx, [eax + 1]
mov eax, dword [esp + 0x18]
test byte [eax + 0x28], 8
mov dword [eax + 0x18], ecx
jne 0x44f9c2
xor eax, eax
mov ecx, esi
push eax
push eax
push eax
push 0x11
pop edx
call fcn.0044cfbb
mov dword [esp + 0x18], eax
add esp, 0xc
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
mov edx, eax
call fcn.0044cfbb
mov dword [esp + 0x1c], eax
test eax, eax
je 0x44fa06
xor ecx, ecx
push ecx
push dword [eax + 0x2c]
mov eax, dword [esp + 0x20]
mov ecx, esi
push dword [eax + 0x2c]
push 0x62
pop edx
call fcn.0044cfbb
mov eax, dword [esp + 0x28]
add esp, 0xc
mov ecx, dword [esp + 0x14]
mov eax, dword [eax + 0x14]
movzx eax, word [eax + 2]
mov word [ecx + 2], ax
mov ecx, eax
jmp 0x44fa6c
mov eax, dword [esp + 0x18]
mov byte [esp + 0xa4], 0xc
mov eax, dword [eax + 0x2c]
mov dword [esp + 0xa8], eax
xor eax, eax
mov dword [esp + 0xac], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x14]
push dword [eax + 0x10]
push str.MATERIALIZE__u
push 1
push ebx
call fcn.0044cfbb
mov edx, dword [esp + 0x24]
lea eax, [esp + 0xb4]
push eax
mov ecx, ebx
call fcn.0044cfbb
mov eax, dword [esp + 0x28]
add esp, 0x14
movzx ecx, word [eax + 2]
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x10]
mov word [eax + 0x2e], cx
mov eax, dword [esp + 0xc]
test eax, eax
je 0x44fa8e
mov edx, eax
mov ecx, esi
call fcn.00420fd2
mov ecx, dword [esi + 0x6c]
mov dword [eax + 8], ecx
xor eax, eax
mov ecx, esi
push eax
push eax
mov eax, dword [esp + 0x20]
push dword [eax + 0x1c]
push 0x41
pop edx
call fcn.0044cfbb
mov edx, dword [esp + 0x34]
add esp, 0xc
mov ecx, dword [esp + 0x10]
mov esi, eax
call fcn.00420fd2
mov dword [eax + 4], esi
mov esi, ecx
mov eax, dword [esp + 0x24]
xor ecx, ecx
mov byte [ebx + 0x13], cl
mov dword [ebx + 0x1c], ecx
cmp byte [eax + 0x51], cl
jne 0x450b4e
mov dword [esp + 0xc], ecx
lea edx, [esp + 0xc]
mov ecx, edi
call fcn.00430571
mov eax, dword [esp + 0xc]
sub dword [ebx + 0xd4], eax
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x40]
mov dword [ebx + 0xf4], eax
mov ecx, dword [esp + 0x20]
inc edx
mov dword [esp + 0x40], edx
cmp edx, dword [ecx]
jl 0x44f7e3
mov eax, dword [edi + 0x24]
xor ecx, ecx
mov edx, dword [edi + 0x1c]
inc ecx
mov dword [esp + 0x60], eax
mov eax, dword [edi + 0x28]
mov dword [esp + 0x18], eax
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x5c], eax
mov al, byte [edi + 4]
and al, cl
mov dword [esp + 0x40], edx
mov byte [esp + 0xe8], al
mov eax, dword [edi + 4]
and al, 9
cmp al, cl
jne 0x44fb70
mov ecx, dword [esp + 0x7c]
push 0xffffffffffffffff
call fcn.0044cfbb
pop ecx
xor ecx, ecx
test eax, eax
jne 0x44fb72
cmp dword [edi + 0x44], ecx
jne 0x44fb72
mov edx, dword [esp + 0x40]
and dword [edi + 4], 0xfffffffe
push ecx
mov ecx, dword [esp + 0x28]
call fcn.0044cfbb
or dword [edi + 4], 8
pop ecx
mov dword [esp + 0x18], eax
mov dword [edi + 0x28], eax
xor ecx, ecx
mov edx, dword [esp + 0x7c]
test edx, edx
je 0x44fbc8
mov eax, dword [esp + 0x40]
push dword [eax]
push ecx
mov ecx, ebx
call fcn.0044cfbb
mov edx, dword [ebx + 0x28]
push 0xfffffffffffffff7
push eax
xor eax, eax
mov dword [esp + 0x94], edx
push eax
mov eax, dword [esp + 0x54]
lea ecx, [edx + 1]
mov dword [ebx + 0x28], ecx
mov ecx, dword [eax]
mov eax, dword [esp + 0x90]
inc ecx
mov eax, dword [eax]
add eax, ecx
mov ecx, esi
push eax
push edx
push 0x64
pop edx
call fcn.0044cfbb
add esp, 0x1c
mov dword [esp + 0x90], eax
jmp 0x44fbd0
or dword [esp + 0x90], 0xffffffff
mov eax, dword [esp + 0x44]
cmp byte [eax], 0xc
jne 0x44fbf2
xor ecx, ecx
push ecx
mov ecx, dword [esp + 0x44]
push dword [ecx]
mov ecx, esi
push dword [eax + 4]
push 0x64
pop edx
call fcn.0044cfbb
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 0x44fc12
mov ecx, 0x140
mov word [edi + 2], cx
push eax
mov edx, edi
mov ecx, ebx
call fcn.0044cfbb
xor eax, eax
pop ecx
cmp dword [edi + 8], eax
jne 0x44fc43
mov edx, dword [esp + 0x90]
test edx, edx
js 0x44fc43
mov ecx, esi
call fcn.00420fd2
mov byte [eax], 0x6f
or byte [esp + 0x9c], 1
xor eax, eax
test byte [edi + 4], 1
je 0x44fcb6
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.0044cfbb
mov edi, eax
mov ecx, esi
xor eax, eax
push eax
push eax
push dword [esp + 0xfc]
push 0x64
pop edx
call fcn.0044cfbb
mov ecx, dword [esp + 0x24]
add esp, 0x14
mov esi, eax
mov edx, esi
push 0xfffffffffffffff7
push edi
call fcn.0044cfbb
pop ecx
pop ecx
mov dword [esp + 0xf0], esi
mov esi, dword [esp + 0x10]
mov ecx, esi
push 8
pop edx
call fcn.00420d1d
mov edi, dword [esp + 0x68]
xor eax, eax
mov byte [esp + 0xe9], 3
jmp 0x44fcbd
mov byte [esp + 0xe9], al
cmp dword [esp + 0x48], 0
mov ecx, dword [esp + 0x18]
jne 0x44fecf
test ecx, ecx
jne 0x44fecf
cmp byte [esp + 0xe8], cl
mov eax, 0x100
mov edx, 0x4000
cmovne ecx, eax
mov ax, word [edi + 4]
and ax, dx
or cx, ax
movzx eax, cx
mov dword [esp + 0x58], eax
mov eax, dword [edi + 0x44]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x44fd0d
mov edx, edi
mov ecx, ebx
call fcn.0044cfbb
movsx eax, word [edi + 2]
mov ecx, ebx
mov edx, dword [esp + 0x20]
push eax
push dword [esp + 0x5c]
push dword [edi + 0x1c]
push dword [esp + 0x88]
push dword [esp + 0x70]
call fcn.0044cfbb
mov ecx, eax
add esp, 0x14
mov dword [esp + 0x3c], ecx
test ecx, ecx
je 0x450b4a
movzx eax, word [ecx + 0x34]
cmp ax, word [edi + 2]
jge 0x44fd4e
mov word [edi + 2], ax
cmp byte [esp + 0xe8], 0
je 0x44fd76
mov cl, byte [ecx + 0x2f]
movzx edx, byte [esp + 0xe9]
test cl, cl
movzx eax, cl
mov ecx, dword [esp + 0x3c]
cmovne edx, eax
mov byte [esp + 0xe9], dl
mov edx, dword [esp + 0x7c]
test edx, edx
je 0x44fdbb
movsx eax, byte [ecx + 0x2d]
mov dword [esp + 0x80], eax
test byte [ecx + 0x30], 4
jne 0x44fd94
mov eax, dword [ecx + 0x1c]
jmp 0x44fda2
movzx eax, byte [ecx + 0x2c]
imul eax, eax, 0x58
mov eax, dword [eax + ecx + 0x2a8]
mov dword [esp + 0x98], eax
xor ecx, ecx
mov eax, dword [esp + 0x80]
cmp eax, dword [edx]
cmove edx, ecx
mov dword [esp + 0x7c], edx
cmp dword [esp + 0x90], 0
jl 0x44fdd7
test edx, edx
jne 0x44fdd7
mov edx, dword [esp + 0x90]
mov ecx, esi
call fcn.00420e79
cmp dword [esp + 0x1c], 0
je 0x44fe95
mov ebx, dword [ebx + 0x38]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x68]
lea esi, [ebx - 1]
sub ebx, 2
inc dword [ecx + 0x2c]
mov edi, dword [ecx + 0x2c]
push esi
push edi
push dword [esp + 0x44]
lea eax, [ebx - 1]
mov dword [ecx + 0x38], eax
call fcn.0044cfbb
add esp, 0xc
lea eax, [ebx - 1]
xor ecx, ecx
push ecx
push eax
push ecx
mov ecx, dword [esp + 0x1c]
push 0xb
pop edx
call fcn.0044cfbb
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov edx, esi
call fcn.00420b46
mov edx, dword [esp + 0x68]
lea esi, [ebx - 1]
mov ecx, dword [esp + 0x4c]
xor eax, eax
push esi
push ebx
push dword [esp + 0x4c]
mov dword [esp + 0xa4], eax
lea eax, [esp + 0xf4]
push eax
lea eax, [esp + 0x8c]
push eax
push 0xffffffffffffffff
call fcn.0044cfbb
mov ecx, dword [esp + 0x28]
mov edx, ebx
call fcn.00420b46
mov ecx, dword [esp + 0x28]
xor eax, eax
push eax
push eax
push edi
push 0x41
pop edx
call fcn.0044cfbb
add esp, 0x24
mov edx, esi
mov esi, dword [esp + 0x10]
mov ecx, esi
call fcn.00420b46
mov ebx, dword [esp + 0x4c]
jmp 0x450ac7
mov eax, dword [esp + 0x3c]
mov edx, edi
mov ecx, ebx
push dword [eax + 0x20]
push dword [eax + 0x1c]
lea eax, [esp + 0xf0]
push dword [esp + 0x4c]
push eax
lea eax, [esp + 0x8c]
push eax
push 0xffffffffffffffff
call fcn.0044cfbb
mov ecx, dword [esp + 0x54]
add esp, 0x18
call fcn.0044cfbb
jmp 0x450ac7
mov dword [esp + 0x64], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x50], eax
test ecx, ecx
je 0x44ff7a
mov edx, dword [edi + 0x1c]
mov eax, dword [edx]
test eax, eax
jle 0x44ff00
add edx, 0x16
xor esi, esi
dec eax
mov word [edx], si
lea edx, [edx + 0x14]
test eax, eax
jg 0x44feef
mov esi, dword [esp + 0x10]
mov eax, dword [ecx]
test eax, eax
jle 0x44ff1a
lea edx, [ecx + 0x16]
xor ebx, ebx
dec eax
mov word [edx], bx
lea edx, [edx + 0x14]
test eax, eax
jg 0x44ff09
mov ebx, dword [esp + 0x4c]
push 0x42
pop eax
cmp word [edi + 2], ax
jle 0x44ff27
mov word [edi + 2], ax
mov edx, dword [esp + 0x7c]
test edx, edx
je 0x44ff80
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x44ff80
and dword [esp + 0xc], 0
test eax, eax
jle 0x44ff64
mov ebx, dword [esp + 0xc]
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 + 0x7c]
cmp ebx, dword [ecx]
jl 0x44ff46
mov ebx, dword [esp + 0x4c]
mov esi, dword [esp + 0x10]
push 0xffffffffffffffff
call fcn.0044cfbb
pop ecx
test eax, eax
jne 0x44ff80
mov dword [esp + 0x50], 1
jmp 0x44ff80
xor eax, eax
mov word [edi + 2], ax
dec dword [ebx + 0x38]
mov eax, dword [ebx + 0x38]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x3c], eax
xor eax, eax
push eax
push 0x38
call fcn.0044cfbb
mov dword [esp + 0x1c], eax
pop ecx
pop ecx
test eax, eax
je 0x450b4a
mov ecx, dword [ebx + 0x80]
mov dword [eax + 0x34], ecx
mov dword [ebx + 0x80], eax
mov ecx, dword [edi + 0x10]
mov dword [eax + 0x30], ecx
xor eax, eax
push 0x20
push eax
lea eax, [esp + 0xd0]
push eax
call dword [sym.imp.VCRUNTIME140.dll_memset]
mov ecx, dword [esp + 0x2c]
add esp, 0xc
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0xcc], ecx
inc eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xd0], ecx
mov dword [ecx + 0x10], eax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x450001
mov edx, dword [eax]
jmp 0x450003
xor edx, edx
mov dword [ecx + 0xc], edx
mov edx, dword [esp + 0x40]
mov dword [ecx + 0x18], eax
lea ecx, [esp + 0xc8]
call fcn.0044cfbb
mov edx, dword [esp + 0x7c]
lea ecx, [esp + 0xc8]
call fcn.0044cfbb
cmp dword [esp + 0x5c], 0
je 0x450090
cmp dword [esp + 0x18], 0
je 0x450080
xor eax, eax
push 0x1c
push eax
lea eax, [esp + 0xac]
push eax
call dword [sym.imp.VCRUNTIME140.dll_memset]
mov edx, dword [edi + 0x2c]
add esp, 0xc
mov dword [esp + 0xa4], ebx
mov dword [esp + 0xa8], 0x44f330
mov dword [esp + 0xbc], edi
test edx, edx
je 0x450079
lea ecx, [esp + 0xa4]
call fcn.0042ddf7
mov eax, dword [edi + 0x24]
mov dword [esp + 0x60], eax
mov edx, dword [esp + 0x5c]
lea ecx, [esp + 0xc8]
call fcn.0044cfbb
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x20]
mov dword [ecx + 0x24], eax
xor eax, eax
cmp dword [edi + 0x28], eax
jne 0x4500d4
cmp dword [edi + 0x2c], eax
jne 0x4500d4
cmp dword [ecx + 0x2c], 1
jne 0x4500d4
mov edx, dword [ecx + 0x28]
lea eax, [esp + 0x34]
mov ecx, dword [esp + 0x24]
push eax
mov edx, dword [edx]
call fcn.0044cfbb
mov byte [esp + 0x3f], al
mov eax, dword [esp + 0x38]
pop ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x70], eax
xor eax, eax
jmp 0x4500d8
mov byte [esp + 0x3b], al
cmp dword [ecx + 0x2c], 0
mov dword [esp + 0xc], eax
jle 0x450161
mov ecx, dword [esp + 0xe0]
mov ebx, eax
mov esi, dword [esp + 0x14]
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.0044cfbb
test dword [edi + 4], 0x1000000
je 0x45012c
mov edx, dword [edi + 0x2c]
lea ecx, [esp + 0xc8]
mov edx, dword [edx + 0x28]
call fcn.0044cfbb
mov ecx, dword [esp + 0xe0]
add ebx, 0x10
mov eax, dword [esp + 0xc]
and ecx, 0xfffdffff
inc eax
mov dword [esp + 0xe0], ecx
mov dword [esp + 0xc], eax
cmp eax, dword [esi + 0x2c]
jl 0x4500ef
mov ebx, dword [esp + 0x4c]
mov edi, dword [esp + 0x68]
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov eax, dword [ebx + 0x2c]
mov dword [ecx + 0x14], eax
mov eax, dword [esp + 0x24]
cmp byte [eax + 0x51], 0
jne 0x450b4e
mov edx, dword [esp + 0x18]
test edx, edx
je 0x450757
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.0044cfbb
push 0xfffffffffffffff7
push eax
mov dword [esp + 0xd0], eax
mov ecx, esi
xor eax, eax
push eax
mov eax, dword [esp + 0x28]
push dword [eax + 0xc]
push dword [eax + 4]
push 0x6f
pop edx
call fcn.0044cfbb
mov ecx, dword [ebx + 0x38]
add esp, 0x1c
mov edx, dword [esp + 0x18]
mov dword [esp + 0x78], eax
mov eax, dword [ebx + 0x2c]
inc eax
mov dword [esp + 0x34], eax
inc eax
dec ecx
mov dword [esp + 0x2c], eax
add eax, 2
mov dword [esp + 0x28], ecx
dec ecx
mov dword [ebx + 0x2c], eax
mov dword [ebx + 0x38], ecx
mov dword [esp + 0xc], ecx
mov ecx, eax
add ecx, dword [edx]
mov dword [esp + 0x30], eax
mov dword [ebx + 0x2c], ecx
lea eax, [ecx + 1]
mov dword [esp + 0x48], eax
mov eax, dword [edx]
add eax, ecx
mov ecx, esi
mov dword [ebx + 0x2c], eax
xor eax, eax
push eax
push dword [esp + 0x30]
push eax
push 0x45
pop edx
call fcn.0044cfbb
mov eax, dword [esp + 0x24]
add esp, 0xc
mov ecx, dword [esp + 0x30]
inc ecx
mov eax, dword [eax]
dec eax
add eax, ecx
push eax
push ecx
xor eax, eax
mov ecx, esi
push eax
push 0x48
pop edx
call fcn.0044cfbb
add esp, 0xc
xor eax, eax
mov ecx, esi
push eax
push dword [esp + 0x10]
push dword [esp + 0x38]
push 0xc
pop edx
call fcn.0044cfbb
add esp, 0xc
xor edx, edx
push edx
push 0x40
cmp dword [esp + 0x58], edx
mov ecx, 0x240
pop eax
cmovne eax, ecx
mov ecx, ebx
movzx eax, ax
push eax
push edx
push dword [esp + 0x24]
mov edx, dword [esp + 0x30]
push dword [esp + 0x70]
call fcn.0044cfbb
mov edx, eax
add esp, 0x14
mov dword [esp + 0x6c], edx
test edx, edx
je 0x450b4a
mov eax, dword [esp + 0x18]
movsx ecx, byte [edx + 0x2d]
cmp ecx, dword [eax]
jne 0x4502a2
mov edi, dword [esp + 0x14]
xor eax, eax
mov dword [esp + 0x20], eax
jmp 0x45045b
cmp byte [esp + 0xe8], 0
je 0x4502b7
test byte [edi + 4], 1
mov eax, str.DISTINCT
je 0x4502bc
mov eax, str.GROUP_BY
push eax
push str.USE_TEMP_B_TREE_FOR__s
xor eax, eax
push eax
push ebx
call fcn.0044cfbb
mov eax, dword [esp + 0x28]
add esp, 0x10
mov edi, dword [esp + 0x14]
mov dword [esp + 0x20], 1
mov eax, dword [eax]
mov edx, eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x58], eax
mov eax, dword [edi + 0x20]
mov dword [esp + 0x1c], eax
test eax, eax
jle 0x450330
mov esi, dword [edi + 0x1c]
mov ebx, eax
add esi, 0x12
mov edi, edx
movsx ecx, word [esi]
lea eax, [edx + 1]
cmp ecx, edi
lea esi, [esi + 0x14]
cmovl eax, edx
mov edx, eax
lea eax, [edi + 1]
cmovl eax, edi
mov edi, eax
sub ebx, 1
jne 0x450303
mov ebx, dword [esp + 0x4c]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov dword [esp + 0x60], edx
mov ecx, ebx
call fcn.00435766
mov edx, dword [esp + 0x18]
xor ecx, ecx
push ecx
push ecx
push eax
mov ecx, ebx
mov dword [esp + 0x70], eax
call fcn.0044cfbb
xor eax, eax
add esp, 0xc
mov ecx, eax
mov dword [esp + 0x54], ecx
cmp dword [edi + 0x20], eax
jle 0x4503a9
mov ebx, dword [esp + 0x74]
mov dword [esp + 0x1c], eax
mov edx, dword [edi + 0x1c]
add edx, eax
movsx eax, word [edx + 0x12]
cmp eax, ebx
jl 0x450390
mov eax, dword [esp + 0x64]
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.0044cfbb
mov ecx, dword [esp + 0x60]
add esp, 0xc
inc ebx
mov eax, dword [esp + 0x1c]
inc ecx
add eax, 0x14
mov dword [esp + 0x54], ecx
mov dword [esp + 0x1c], eax
cmp ecx, dword [edi + 0x20]
jl 0x450363
mov ebx, dword [esp + 0x4c]
mov ecx, ebx
call fcn.0043572e
mov ecx, dword [esp + 0x10]
mov esi, eax
push esi
push dword [esp + 0x64]
push dword [esp + 0x6c]
push 0x5b
pop edx
call fcn.0044cfbb
mov edx, dword [esp + 0x20]
add esp, 0xc
mov ecx, dword [esp + 0x10]
xor eax, eax
push eax
push esi
push dword [edx + 4]
mov edx, 0x84
call fcn.0044cfbb
add esp, 0xc
mov edx, esi
mov ecx, ebx
call fcn.0043574d
mov esi, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
push esi
call fcn.0044cfbb
mov ecx, dword [esp + 0x70]
add esp, 4
call fcn.0044cfbb
mov edi, dword [esp + 0x14]
mov ecx, ebx
mov edx, dword [ebx + 0x28]
mov dword [esp + 0x64], edx
mov dword [edi + 8], edx
inc dword [ebx + 0x28]
call fcn.0043572e
push esi
mov esi, dword [esp + 0x14]
mov ecx, esi
push eax
push edx
push 0x72
pop edx
mov dword [esp + 0x28], eax
call fcn.0044cfbb
add esp, 0xc
xor eax, eax
mov ecx, esi
push eax
push dword [esp + 0x40]
push dword [edi + 4]
push 0x23
pop edx
call fcn.0044cfbb
mov edx, dword [esp + 0x78]
xor eax, eax
add esp, 0xc
mov byte [edi + 1], 1
inc eax
cmp dword [esp + 0x50], 0
je 0x45048a
mov ecx, dword [esp + 0x24]
test byte [ecx + 0x4c], 4
jne 0x45048a
test eax, eax
jne 0x450476
test byte [edx + 0x30], 8
je 0x45048a
mov edx, dword [esp + 0x90]
xor eax, eax
mov ecx, esi
mov dword [esp + 0x7c], eax
call fcn.00420e79
cmp dword [esp + 0x20], 0
mov eax, dword [esi + 0x6c]
mov dword [esp + 0x74], eax
je 0x4504b0
push dword [esp + 0x64]
mov ecx, esi
push dword [esp + 0x20]
push dword [edi + 4]
push 0x7e
pop edx
call fcn.0044cfbb
add esp, 0xc
xor eax, eax
mov ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], ecx
mov edx, dword [eax]
test edx, edx
jle 0x450516
add eax, 4
mov dword [esp + 0x50], eax
jmp 0x4504cf
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x48]
add edx, ecx
cmp dword [esp + 0x20], 0
push edx
je 0x4504f1
push ecx
push dword [esp + 0x6c]
mov ecx, esi
push 0x59
pop edx
call fcn.0044cfbb
add esp, 0xc
jmp 0x4504fe
mov byte [edi], 1
mov ecx, ebx
mov edx, dword [eax]
call fcn.0044cfbb
pop ecx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x50], 0x14
inc ecx
mov dword [esp + 0x1c], ecx
mov edx, dword [eax]
cmp ecx, edx
jl 0x4504cb
mov ecx, dword [esp + 0xc0]
test ecx, ecx
je 0x450525
inc dword [ecx]
mov edx, dword [eax]
mov eax, dword [esp + 0x30]
push 0xfffffffffffffff7
push ecx
push edx
push dword [esp + 0x54]
inc eax
mov ecx, esi
push eax
push 0x56
pop edx
call fcn.0044cfbb
mov esi, dword [esi + 0x6c]
add esp, 0x14
mov edi, dword [esp + 0x10]
xor ecx, ecx
lea eax, [esi + 1]
push eax
push ecx
push eax
push 0x10
pop edx
mov ecx, edi
call fcn.0044cfbb
mov eax, dword [esp + 0x24]
add esp, 0xc
mov edx, dword [esp + 0x48]
mov ecx, ebx
push dword [eax]
mov eax, dword [esp + 0x34]
inc eax
push eax
call fcn.0044cfbb
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x34]
mov eax, dword [esp + 0x3c]
inc eax
push eax
push 0xc
pop edx
call fcn.0044cfbb
add esp, 0x14
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x40]
push dword [esp + 0x34]
push 0x30
pop edx
call fcn.0044cfbb
add esp, 0xc
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x10]
push dword [esp + 0x38]
push 0xc
pop edx
call fcn.0044cfbb
mov edx, esi
add esp, 0xc
mov esi, edi
mov ecx, esi
call fcn.00420fd2
mov ecx, dword [esi + 0x6c]
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x34]
mov dword [eax + 8], ecx
mov ecx, ebx
push edi
call fcn.0044cfbb
pop ecx
xor eax, eax
mov ecx, esi
push eax
push dword [esp + 0x38]
push 1
push 0x45
pop edx
call fcn.0044cfbb
add esp, 0xc
cmp dword [esp + 0x20], 0
je 0x450615
xor eax, eax
mov ecx, esi
push eax
push dword [esp + 0x78]
push dword [edi + 4]
push 3
pop edx
call fcn.0044cfbb
add esp, 0xc
jmp 0x450629
mov ecx, dword [esp + 0x6c]
call fcn.0044cfbb
mov edx, dword [esp + 0x78]
mov ecx, esi
call fcn.00420e79
xor eax, eax
mov ecx, esi
push eax
push dword [esp + 0x2c]
mov eax, dword [esp + 0x34]
inc eax
push eax
push 0xc
pop edx
call fcn.0044cfbb
mov edx, dword [esp + 0x48]
add esp, 0xc
mov ecx, esi
call fcn.00420811
mov edi, dword [esi + 0x6c]
xor eax, eax
push eax
push dword [esp + 0x30]
mov ecx, esi
push 1
push 0x45
pop edx
call fcn.0044cfbb
add esp, 0xc
xor eax, eax
mov ecx, esi
push eax
push eax
mov eax, dword [esp + 0x34]
inc eax
push eax
push 0x41
pop edx
call fcn.0044cfbb
mov edx, dword [esp + 0x34]
add esp, 0xc
mov ecx, esi
call fcn.00420b46
mov esi, dword [esi + 0x6c]
xor eax, eax
mov ecx, dword [esp + 0x10]
push eax
lea eax, [esi + 2]
push eax
push dword [esp + 0x3c]
push 0x30
pop edx
call fcn.0044cfbb
mov ecx, dword [esp + 0x1c]
add esp, 0xc
xor eax, eax
push eax
push eax
mov eax, dword [esp + 0x34]
inc eax
push eax
push 0x41
pop edx
call fcn.0044cfbb
mov edx, dword [esp + 0x20]
add esp, 0xc
mov ecx, ebx
call fcn.0044cfbb
push 0x10
inc esi
push esi
push dword [esp + 0x64]
push ebx
call fcn.0044cfbb
mov edx, dword [esp + 0x78]
lea eax, [esp + 0xf8]
push edi
push esi
push dword [esp + 0x5c]
mov ecx, ebx
push eax
lea eax, [esp + 0x9c]
push eax
push 0xffffffffffffffff
call fcn.0044cfbb
xor edi, edi
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x38]
inc eax
push edi
push edi
push eax
push 0x41
pop edx
mov ecx, esi
call fcn.0044cfbb
mov edx, dword [esp + 0x40]
add esp, 0x34
mov ecx, esi
call fcn.00420b46
mov edx, dword [esp + 0x14]
mov ecx, ebx
call fcn.0044cfbb
push edi
push dword [esp + 0x38]
mov ecx, esi
push edi
push 0x45
pop edx
call fcn.0044cfbb
add esp, 0xc
mov ecx, esi
push edi
push edi
push dword [esp + 0x38]
push 0x41
pop edx
call fcn.0044cfbb
add esp, 0xc
jmp 0x450abc
xor eax, eax
cmp dword [edi + 0x24], eax
jne 0x450986
mov edx, dword [edi + 0x1c]
inc eax
cmp dword [edx], eax
jne 0x450984
mov edx, dword [edi + 0x20]
cmp dword [edx], eax
jne 0x450984
xor eax, eax
cmp dword [edx + 0x1c], eax
jne 0x450986
mov edx, dword [edx + 0x18]
mov dword [esp + 0x30], edx
cmp dword [edx + 0x38], eax
jne 0x450986
mov eax, dword [edi + 0x1c]
mov eax, dword [eax + 4]
cmp byte [eax], 0xa5
jne 0x450984
cmp dword [ecx + 0x2c], 0
je 0x450984
mov eax, dword [ecx + 0x28]
mov eax, dword [eax + 4]
test dword [eax + 4], 0x100
je 0x450984
mov esi, dword [edi + 0x1c]
mov eax, dword [esi + 4]
mov esi, dword [esp + 0x10]
test dword [eax + 4], 0x1000002
jne 0x450984
test edx, edx
je 0x450984
mov edx, dword [edx + 0x48]
mov ecx, dword [ebx]
call fcn.00449c12
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0x28]
mov edx, dword [esp + 0xc]
mov dword [esp + 0x28], eax
lea ecx, [eax + 1]
mov dword [ebx + 0x28], ecx
xor ecx, ecx
cmp dword [ebx + 0x74], 0
mov dword [esp + 0x54], ecx
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0x1c]
mov ecx, ebx
cmovne ecx, dword [ebx + 0x74]
mov dword [esp + 0x1c], eax
call fcn.0043de66
mov eax, dword [esp + 0x30]
xor ecx, ecx
mov edx, dword [esp + 0xc]
push dword [eax]
push ecx
push dword [eax + 0x1c]
mov ecx, ebx
call fcn.0044cfbb
mov edx, dword [esp + 0x3c]
add esp, 0xc
test byte [edx + 0x24], 0x80
je 0x450853
mov ecx, edx
call fcn.00439df5
mov dword [esp + 0x34], eax
jmp 0x450857
mov eax, dword [esp + 0x34]
mov ecx, dword [edi + 0x20]
mov dword [esp + 0x48], edx
test byte [ecx + 0x30], 1
jne 0x4508a4
mov ecx, dword [edx + 8]
mov dword [esp + 0x48], edx
test ecx, ecx
je 0x4508a4
mov dword [esp + 0x48], edx
test byte [ecx + 0x38], 4
jne 0x450895
movzx esi, word [ecx + 0x30]
cmp si, word [edx + 0x30]
jge 0x450895
cmp dword [ecx + 0x24], 0
jne 0x450895
test eax, eax
je 0x450893
cmp si, word [eax + 0x30]
jge 0x450895
mov eax, ecx
mov ecx, dword [ecx + 0x14]
test ecx, ecx
jne 0x450873
mov esi, dword [esp + 0x10]
mov dword [esp + 0x34], eax
test eax, eax
je 0x4508bc
mov ecx, dword [eax + 0x2c]
mov edx, eax
mov dword [esp + 0x1c], ecx
mov ecx, ebx
call fcn.0044cfbb
mov dword [esp + 0x54], eax
push 1
push dword [esp + 0x10]
mov ecx, esi
push dword [esp + 0x24]
push dword [esp + 0x34]
push 0x60
pop edx
call fcn.0044cfbb
mov eax, dword [esp + 0x64]
add esp, 0x10
test eax, eax
je 0x4508ee
push 0xfffffffffffffff7
push eax
or edx, 0xffffffff
mov ecx, esi
call fcn.0044cfbb
pop ecx
pop ecx
xor eax, eax
mov ecx, esi
push eax
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x28]
push dword [eax + 8]
push dword [esp + 0x30]
push 0x5c
pop edx
call fcn.0044cfbb
add esp, 0xc
xor eax, eax
mov ecx, esi
push eax
push eax
push dword [esp + 0x30]
push 0x74
pop edx
call fcn.0044cfbb
add esp, 0xc
cmp byte [ebx + 0xcb], 2
jne 0x450a87
mov edx, dword [esp + 0x34]
test edx, edx
je 0x45094d
mov ecx, dword [esp + 0x30]
test byte [ecx + 0x24], 0x80
je 0x450949
mov eax, dword [edx + 0x38]
and al, 3
cmp al, 2
je 0x45094d
mov eax, dword [edx]
jmp 0x450957
xor eax, eax
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x6c]
cmp dword [esp + 0x58], 0
push eax
mov eax, str._USING_COVERING_INDEX
cmove eax, dword [esp + 0x70]
push eax
mov eax, dword [esp + 0x50]
push dword [eax]
xor eax, eax
push str.SCAN_TABLE__s_s_s
push eax
push ebx
call fcn.0044cfbb
add esp, 0x18
jmp 0x450a87
xor eax, eax
mov dword [esp + 0x28], eax
cmp dword [ecx + 0x24], eax
je 0x4509ef
mov edx, dword [ecx + 0x2c]
mov dword [esp + 0xc], eax
test edx, edx
jle 0x4509cb
mov edi, dword [ecx + 0x28]
mov esi, eax
mov eax, dword [edi]
test dword [eax + 4], 0x1000000
jne 0x4509b3
mov eax, dword [edi + 4]
test byte [eax + 4], 0x20
jne 0x4509bb
inc esi
add edi, 0x10
cmp esi, edx
jl 0x45099f
mov edi, dword [esp + 0x68]
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
cmp eax, edx
jne 0x4509ef
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.0044cfbb
mov ecx, dword [esp + 0x20]
add esp, 0xc
mov edx, ecx
mov ecx, ebx
call fcn.0044cfbb
movzx eax, byte [esp + 0x3b]
xor ecx, ecx
mov edx, dword [esp + 0x20]
push ecx
push eax
push ecx
push dword [esp + 0x7c]
mov ecx, ebx
push dword [esp + 0x70]
call fcn.0044cfbb
add esp, 0x14
mov dword [esp + 0x58], eax
test eax, eax
je 0x450b4a
push dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
mov ecx, ebx
call fcn.0044cfbb
mov eax, dword [esp + 0x2c]
pop ecx
test eax, eax
je 0x450a4f
xor ecx, ecx
push ecx
push eax
push 1
push 0x45
pop edx
mov ecx, esi
call fcn.0044cfbb
add esp, 0xc
mov ecx, dword [esp + 0x58]
test byte [ecx + 0x30], 4
je 0x450a77
movzx eax, byte [ecx + 0x2c]
imul eax, eax, 0x58
mov edx, dword [eax + ecx + 0x2a8]
cmp edx, dword [ecx + 0x1c]
je 0x450a77
mov ecx, esi
call fcn.00420811
mov ecx, dword [esp + 0x58]
call fcn.0044cfbb
mov edx, dword [esp + 0x14]
mov ecx, ebx
call fcn.0044cfbb
push 0x10
push dword [esp + 0x40]
xor eax, eax
push dword [esp + 0x64]
mov dword [esp + 0x88], eax
push ebx
call fcn.0044cfbb
mov eax, dword [esp + 0x4c]
mov edx, edi
push eax
push eax
push dword [esp + 0x5c]
xor eax, eax
mov ecx, ebx
push eax
push eax
push 0xffffffffffffffff
call fcn.0044cfbb
add esp, 0x28
mov edx, dword [esp + 0x3c]
mov ecx, esi
call fcn.00420b46
xor edi, edi
cmp byte [esp + 0xe9], 3
jne 0x450ae7
push str.DISTINCT
push str.USE_TEMP_B_TREE_FOR__s
push edi
push ebx
call fcn.0044cfbb
add esp, 0x10
cmp dword [esp + 0x7c], 0
je 0x450b30
cmp dword [esp + 0x80], 0
mov ecx, str.ORDER_BY
mov eax, str.RIGHT_PART_OF_ORDER_BY
cmovle eax, ecx
push eax
push str.USE_TEMP_B_TREE_FOR__s
push edi
push ebx
call fcn.0044cfbb
mov eax, dword [esp + 0x50]
mov ecx, ebx
push dword [esp + 0x54]
mov edx, dword [esp + 0x7c]
push dword [eax]
lea eax, [esp + 0x94]
push eax
call fcn.0044cfbb
add esp, 0x1c
mov edx, dword [esp + 0xc4]
mov ecx, esi
call fcn.00420b46
xor eax, eax
cmp dword [ebx + 0x24], edi
setg al
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x70]
test ecx, ecx
je 0x44f778
mov edx, ecx
mov ecx, eax
call fcn.0044cfbb
jmp 0x44f778
xor eax, eax
inc eax
mov ecx, dword [esp + 0xf4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00488240
mov esp, ebp
pop ebp
ret