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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x114
mov eax, dword [0x542040]
xor eax, esp
mov dword [esp + 0x110], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, ecx
mov dword [esp + 0x3c], eax
push esi
xor eax, eax
mov dword [esp + 0x3c], ebx
push edi
mov edi, dword [ebx]
mov esi, edx
mov dword [esp + 0x48], esi
mov dword [esp + 0x54], 1
mov dword [esp + 0x9c], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x1c], edi
call fcn.0044d56e
mov dword [esp + 0x14], eax
test esi, esi
je 0x451e71
cmp byte [edi + 0x51], 0
jne 0x451e71
xor eax, eax
cmp dword [ebx + 0x24], eax
jne 0x451e71
push eax
push eax
push eax
push 0x15
pop edx
mov ecx, ebx
call fcn.0043b10f
add esp, 0xc
test eax, eax
jne 0x451e71
push 0x30
push eax
lea eax, [esp + 0x70]
push eax
call fcn.0046b980
mov eax, dword [esp + 0x50]
add esp, 0xc
cmp byte [eax], 8
ja 0x4508d4
mov edx, dword [esi + 0x30]
test edx, edx
je 0x4508c9
mov ecx, edi
call fcn.00433d44
xor eax, eax
and dword [esi + 8], 0xfffffffe
mov dword [esi + 0x30], eax
jmp 0x4508d6
xor eax, eax
push eax
mov edx, esi
mov ecx, ebx
call fcn.004502f1
xor eax, eax
pop ecx
cmp dword [ebx + 0x24], eax
jne 0x450aa8
cmp byte [edi + 0x51], al
jne 0x450aa8
mov eax, dword [esp + 0x44]
cmp byte [eax], 9
jne 0x450907
mov edx, esi
mov ecx, ebx
call fcn.0044d02f
mov edx, esi
mov ecx, ebx
call fcn.004606c2
test eax, eax
jne 0x450aa8
mov eax, dword [esi + 0x20]
lea edi, [esp + 0xa4]
mov dword [esp + 0x28], eax
xor edx, edx
mov eax, dword [esi + 8]
shr eax, 3
and eax, 1
mov dword [esp + 0x30], eax
xor eax, eax
push 0xa
pop ecx
rep stosd dword es:[edi], eax
mov ecx, edx
mov eax, dword [esi + 0x30]
mov dword [esp + 0xa4], eax
mov dword [esp + 0xc], ecx
cmp dword [esi + 0x34], edx
jne 0x450a66
mov edi, dword [esp + 0x28]
cmp ecx, dword [edi]
jge 0x450af0
imul eax, ecx, 0x48
mov dword [esp + 0x18], eax
test byte [eax + edi + 0x2c], 8
mov ebx, dword [eax + edi + 0x18]
mov edx, dword [eax + edi + 0x1c]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x38], edx
je 0x4509bf
mov edx, dword [eax + edi + 0x34]
mov ecx, dword [esi + 0x24]
call fcn.004375c5
test eax, eax
je 0x4509b7
mov eax, dword [esp + 0x1c]
mov ecx, 0x2000
test word [eax + 0x4c], cx
jne 0x4509b7
mov edx, dword [esp + 0x18]
and byte [edx + edi + 0x2c], 0xd7
mov edx, dword [edx + edi + 0x34]
mov ecx, dword [esi + 0x24]
call fcn.0044bb62
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x38]
test edx, edx
je 0x450a56
mov eax, dword [edx]
mov ebx, dword [esp + 0x10]
mov eax, dword [eax]
mov dword [esp + 0x24], eax
movsx eax, word [ebx + 0x2a]
mov ebx, dword [esp + 0x40]
cmp eax, dword [esp + 0x24]
jne 0x450a8b
test byte [edx + 8], 8
jne 0x450a56
xor eax, eax
cmp dword [edx + 0x30], eax
je 0x450a0a
test ecx, ecx
jne 0x450a0a
test dword [esi + 8], 0x40000
je 0x450a0a
cmp dword [edi], 1
je 0x450a56
test byte [edi + 0x74], 0xa
jne 0x450a56
push dword [esp + 0x30]
mov edx, esi
push ecx
mov ecx, ebx
call fcn.0044edba
pop ecx
pop ecx
test eax, eax
je 0x450a2a
xor eax, eax
cmp dword [ebx + 0x24], eax
jne 0x450aa4
or dword [esp + 0xc], 0xffffffff
mov eax, dword [esp + 0x1c]
mov edi, dword [esi + 0x20]
mov dword [esp + 0x28], edi
cmp byte [eax + 0x51], 0
jne 0x451e6a
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0xc]
cmp byte [eax], 8
jbe 0x450a56
mov eax, dword [esi + 0x30]
mov dword [esp + 0xa4], eax
inc ecx
xor edx, edx
mov dword [esp + 0xc], ecx
cmp dword [esi + 0x34], edx
je 0x450959
push dword [esp + 0x44]
mov edx, esi
mov ecx, ebx
call fcn.0044db2f
mov edi, eax
xor eax, eax
pop ecx
cmp dword [esi + 0x38], eax
jne 0x450a84
mov ecx, ebx
call fcn.00423b60
mov eax, edi
jmp 0x451e74
push dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
push dword [ecx]
push eax
push str.expected__d_columns_for__s_but_got__d
push ebx
call fcn.0040e32e
add esp, 0x14
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x9c]
test eax, eax
je 0x450abc
mov edx, eax
mov ecx, edi
call fcn.00433d44
mov edx, dword [esp + 0x84]
test edx, edx
je 0x450ace
mov ecx, edi
call fcn.0040bcf5
mov edx, dword [esp + 0x90]
test edx, edx
je 0x450ae0
mov ecx, edi
call fcn.0040bcf5
mov ecx, ebx
call fcn.00423b60
mov eax, dword [esp + 0x54]
jmp 0x451e74
cmp dword [edi], 1
jle 0x450b0a
mov eax, dword [esp + 0x1c]
cmp word [eax + 0x4c], dx
jl 0x450b0a
mov edx, esi
mov ecx, ebx
call fcn.0044f429
xor edx, edx
mov eax, edx
mov dword [esp + 0x38], edx
mov ecx, 0x536cb0
cmp dword [edi], edx
jle 0x450e1c
mov dword [esp + 0x28], edi
jmp 0x450b25
xor edx, edx
imul eax, eax, 0x48
add eax, 8
add edi, eax
mov dword [esp + 0x20], edi
mov eax, dword [edi + 0x38]
or eax, dword [edi + 0x3c]
jne 0x450b54
cmp dword [edi + 8], eax
je 0x450b54
push dword [edi + 4]
push ecx
push dword [edi + 8]
mov ecx, ebx
push 0x14
pop edx
call fcn.0043b10f
add esp, 0xc
xor edx, edx
mov eax, dword [edi + 0x14]
mov dword [esp + 0xc], eax
test eax, eax
je 0x450e02
mov dword [esp + 0x24], edx
mov ecx, esi
lea edx, [esp + 0x24]
call fcn.00432c36
mov eax, dword [esp + 0x24]
mov ecx, 0x1000
add dword [ebx + 0xd0], eax
mov eax, dword [esp + 0x1c]
test word [eax + 0x4c], cx
jne 0x450baa
movzx eax, byte [edi + 0x24]
mov ecx, ebx
mov edx, dword [esp + 0xc]
shr eax, 5
and eax, 1
push eax
push dword [edi + 0x2c]
push dword [esi + 0x24]
call fcn.0044f4af
add esp, 0xc
cmp dword [esp + 0x38], 0
mov eax, dword [ebx + 0xf0]
mov dword [esp + 0x60], eax
mov eax, dword [edi + 8]
mov dword [ebx + 0xf0], eax
jne 0x450c9e
mov eax, dword [esp + 0x28]
cmp dword [eax], 1
je 0x450bdb
test byte [eax + 0x74], 0xa
je 0x450c9e
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x20]
mov edi, dword [ecx + 0x6c]
inc dword [ebx + 0x2c]
mov eax, dword [ebx + 0x2c]
mov dword [edx + 0x1c], eax
lea esi, [edi + 1]
push esi
push 0
push eax
push 0xd
pop edx
call fcn.00423978
mov eax, dword [esp + 0x2c]
add esp, 0xc
mov byte [esp + 0xcc], 0xd
mov dword [eax + 0x18], esi
mov esi, eax
mov eax, dword [esi + 0x1c]
mov dword [esp + 0xd0], eax
xor eax, eax
mov dword [esp + 0xdc], eax
mov dword [esp + 0xd4], eax
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0xc]
push dword [eax + 0x14]
push str.CO_ROUTINE__u
push 1
push ebx
call fcn.00423b0f
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0xdc]
push eax
mov ecx, ebx
call fcn.00450819
mov eax, dword [esp + 0x20]
add esp, 0x14
mov ecx, dword [esi + 0x10]
mov ax, word [eax + 6]
mov word [ecx + 0x2c], ax
mov eax, dword [esp + 0xd4]
mov edx, dword [esi + 0x1c]
mov ecx, dword [esp + 0x14]
or dword [esi + 0x28], 0x10
mov dword [esi + 0x20], eax
call fcn.00423bfd
mov edx, edi
mov edi, dword [esp + 0x14]
mov ecx, edi
call fcn.004240dc
mov ecx, dword [edi + 0x6c]
mov dword [eax + 8], ecx
jmp 0x450dc6
mov eax, dword [ebx + 0x2c]
xor ecx, ecx
push ecx
inc eax
mov dword [esp + 0x28], ecx
push eax
push ecx
mov dword [ebx + 0x2c], eax
mov dword [edi + 0x1c], eax
mov edi, dword [esp + 0x20]
mov ecx, edi
push 0x46
pop edx
call fcn.00423978
mov esi, dword [esp + 0x2c]
add esp, 0xc
mov dword [esp + 0x10], eax
lea ecx, [eax + 1]
test byte [esi + 0x28], 8
mov dword [esi + 0x18], ecx
jne 0x450cec
xor eax, eax
mov ecx, edi
push eax
push eax
push eax
push 0x11
pop edx
call fcn.00423978
add esp, 0xc
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x28]
mov edx, esi
call fcn.00450784
mov dword [esp + 0x18], eax
test eax, eax
je 0x450d29
push 0
push dword [eax + 0x2c]
mov ecx, edi
push dword [esi + 0x2c]
push 0x6d
pop edx
call fcn.00423978
mov eax, dword [esp + 0x24]
add esp, 0xc
mov ecx, dword [esp + 0xc]
mov eax, dword [eax + 0x14]
mov ax, word [eax + 6]
mov word [ecx + 6], ax
jmp 0x450d7c
mov eax, dword [esi + 0x2c]
mov dword [esp + 0xd0], eax
xor eax, eax
mov dword [esp + 0xdc], eax
mov dword [esp + 0xd4], eax
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0xc]
mov byte [esp + 0xcc], 0xc
push dword [eax + 0x14]
push str.MATERIALIZE__u
push 1
push ebx
call fcn.00423b0f
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0xdc]
push eax
mov ecx, ebx
call fcn.00450819
add esp, 0x14
mov eax, dword [esp + 0xc]
mov ecx, dword [esi + 0x10]
mov ax, word [eax + 6]
mov word [ecx + 0x2c], ax
mov eax, dword [esp + 0x24]
test eax, eax
je 0x450da2
mov edx, eax
mov ecx, edi
call fcn.004240dc
mov ecx, dword [edi + 0x6c]
mov dword [eax + 8], ecx
xor eax, eax
mov ecx, edi
push eax
push eax
push dword [esi + 0x1c]
push 0x42
pop edx
call fcn.00423978
mov edx, dword [esp + 0x1c]
add esp, 0xc
mov ecx, edi
mov esi, eax
call fcn.004240dc
mov dword [eax + 4], esi
mov edi, dword [esp + 0x1c]
xor eax, eax
mov byte [ebx + 0x13], al
mov dword [ebx + 0x1c], eax
cmp byte [edi + 0x51], al
jne 0x450aa8
mov esi, dword [esp + 0x48]
lea edx, [esp + 0x24]
mov ecx, esi
mov dword [esp + 0x24], eax
call fcn.00432c36
mov eax, dword [esp + 0x24]
sub dword [ebx + 0xd0], eax
mov eax, dword [esp + 0x60]
mov dword [ebx + 0xf0], eax
mov eax, dword [esp + 0x38]
mov ecx, 0x536cb0
mov edi, dword [esp + 0x28]
inc eax
mov dword [esp + 0x38], eax
cmp eax, dword [edi]
jl 0x450b23
mov eax, dword [esi + 0x24]
xor ecx, ecx
mov edi, dword [esi]
inc ecx
mov dword [esp + 0x50], eax
mov eax, dword [esi + 0x28]
mov dword [esp + 0xc], eax
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x38], eax
mov al, byte [esi + 8]
and al, cl
mov dword [esp + 0x24], edi
mov byte [esp + 0x110], al
mov eax, dword [esi + 8]
and al, 9
cmp al, cl
jne 0x450e7c
mov ecx, dword [esp + 0xa4]
mov edx, edi
push 0xffffffffffffffff
call fcn.00437250
pop ecx
test eax, eax
jne 0x450e7c
mov ecx, dword [esp + 0x1c]
mov edx, edi
and dword [esi + 8], 0xfffffffe
push eax
call fcn.00433615
pop ecx
mov dword [esp + 0xc], eax
mov dword [esi + 0x28], eax
mov edx, dword [esp + 0xa4]
test edx, edx
je 0x450ed3
push dword [edi]
xor eax, eax
mov ecx, ebx
push eax
call fcn.0044c98d
mov edx, dword [ebx + 0x28]
push 0xfffffffffffffff7
push eax
xor eax, eax
mov dword [esp + 0xbc], edx
push eax
mov eax, dword [esp + 0xb8]
lea ecx, [edx + 1]
mov dword [ebx + 0x28], ecx
mov ecx, dword [eax]
mov eax, dword [edi]
inc ecx
mov edi, dword [esp + 0x28]
add eax, ecx
push eax
push edx
push 0x70
pop edx
mov ecx, edi
call fcn.00423a9c
add esp, 0x1c
mov dword [esp + 0xb8], eax
jmp 0x450edf
or dword [esp + 0xb8], 0xffffffff
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x44]
cmp byte [eax], 0xc
jne 0x450f00
mov ecx, dword [esp + 0x24]
push 0
push dword [ecx]
mov ecx, edi
push dword [eax + 4]
push 0x70
pop edx
call fcn.00423978
add esp, 0xc
dec dword [ebx + 0x38]
mov ecx, 0x4000
mov eax, dword [ebx + 0x38]
mov dword [esp + 0xec], eax
test dword [esi + 8], ecx
jne 0x450f20
mov ecx, 0x140
mov word [esi + 6], cx
push eax
mov edx, esi
mov ecx, ebx
call fcn.0044d58e
xor eax, eax
pop ecx
cmp dword [esi + 0xc], eax
jne 0x450f51
mov edx, dword [esp + 0xb8]
test edx, edx
js 0x450f51
mov ecx, edi
call fcn.004240dc
mov byte [eax], 0x72
or byte [esp + 0xc4], 1
xor eax, eax
test byte [esi + 8], 1
je 0x450fc3
mov eax, dword [ebx + 0x28]
mov ecx, ebx
mov dword [esp + 0x114], eax
inc eax
mov dword [ebx + 0x28], eax
xor eax, eax
mov edx, dword [esi]
push eax
push eax
call fcn.0044c98d
mov ecx, dword [esp + 0x1c]
mov edi, eax
xor eax, eax
push eax
push eax
push dword [esp + 0x124]
push 0x70
pop edx
call fcn.00423978
add esp, 0x14
mov esi, eax
mov edx, esi
push 0xfffffffffffffff7
push edi
mov edi, dword [esp + 0x1c]
mov ecx, edi
call fcn.0042401e
pop ecx
pop ecx
push 8
pop edx
mov ecx, edi
mov dword [esp + 0x118], esi
call fcn.00423e3f
mov esi, dword [esp + 0x48]
xor eax, eax
mov byte [esp + 0x111], 3
jmp 0x450fca
mov byte [esp + 0x111], al
cmp dword [esp + 0x30], 0
mov ecx, dword [esp + 0xc]
jne 0x4511dd
test ecx, ecx
jne 0x4511dd
cmp byte [esp + 0x110], cl
mov eax, pe_nt_image_headers32
mov edx, 0x4000
cmovne ecx, eax
mov ax, word [esi + 8]
and ax, dx
or cx, ax
movzx eax, cx
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x44]
mov dword [esp + 0x10], eax
test eax, eax
je 0x45101a
mov edx, eax
mov ecx, ebx
call fcn.00460e82
movsx eax, word [esi + 6]
mov ecx, ebx
mov edx, dword [esp + 0x28]
push eax
push dword [esp + 0x1c]
push dword [esi]
push dword [esp + 0xb0]
push dword [esp + 0x60]
call fcn.0045edbf
mov ecx, eax
add esp, 0x14
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x450aa4
movzx eax, word [ecx + 0x48]
cmp ax, word [esi + 6]
jge 0x45105a
mov word [esi + 6], ax
cmp byte [esp + 0x110], 0
je 0x451082
mov cl, byte [ecx + 0x33]
movzx edx, byte [esp + 0x111]
test cl, cl
movzx eax, cl
mov ecx, dword [esp + 0x20]
cmovne edx, eax
mov byte [esp + 0x111], dl
mov edx, dword [esp + 0xa4]
test edx, edx
je 0x4510cd
movsx eax, byte [ecx + 0x2f]
mov dword [esp + 0xa8], eax
cmp byte [ecx + 0x34], 0
jne 0x4510a3
mov eax, dword [ecx + 0x20]
jmp 0x4510b1
movzx eax, byte [ecx + 0x2e]
imul eax, eax, 0x58
mov eax, dword [eax + ecx + 0x2a8]
mov dword [esp + 0xc0], eax
xor ecx, ecx
mov eax, dword [esp + 0xa8]
cmp eax, dword [edx]
cmove edx, ecx
mov dword [esp + 0xa4], edx
cmp dword [esp + 0xb8], 0
jl 0x4510e9
test edx, edx
jne 0x4510e9
mov edx, dword [esp + 0xb8]
mov ecx, edi
call fcn.00423f80
cmp dword [esp + 0x10], 0
je 0x4511a3
mov esi, dword [ebx + 0x38]
mov ecx, dword [esp + 0x40]
dec esi
mov edx, dword [esp + 0x48]
push esi
inc dword [ecx + 0x2c]
lea ebx, [esi - 1]
mov edi, dword [ecx + 0x2c]
lea eax, [ebx - 1]
push edi
push dword [esp + 0x28]
mov dword [ecx + 0x38], eax
call fcn.004622a3
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.00423978
mov ecx, dword [esp + 0x20]
add esp, 0xc
mov edx, esi
call fcn.00423c65
mov edx, dword [esp + 0x48]
lea esi, [ebx - 1]
mov ecx, dword [esp + 0x40]
xor eax, eax
push esi
push ebx
push dword [esp + 0x4c]
mov dword [esp + 0xcc], eax
lea eax, [esp + 0x11c]
push eax
lea eax, [esp + 0xb4]
push eax
push 0xffffffffffffffff
call fcn.0044c208
mov ecx, dword [esp + 0x2c]
mov edx, ebx
call fcn.00423c65
xor eax, eax
push eax
push eax
push edi
mov edi, dword [esp + 0x38]
mov ecx, edi
push 0x42
pop edx
call fcn.00423978
add esp, 0x24
mov edx, esi
mov ecx, edi
call fcn.00423c65
mov ebx, dword [esp + 0x40]
jmp 0x451ddf
mov eax, dword [esp + 0x20]
mov edx, esi
mov ecx, ebx
push dword [eax + 0x24]
push dword [eax + 0x20]
lea eax, [esp + 0x118]
push dword [esp + 0x4c]
push eax
lea eax, [esp + 0xb4]
push eax
push 0xffffffffffffffff
call fcn.0044c208
mov ecx, dword [esp + 0x38]
add esp, 0x18
call fcn.0045f7b3
jmp 0x451ddf
mov dword [esp + 0x5c], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x58], eax
test ecx, ecx
je 0x45128d
mov edx, dword [esi]
mov eax, dword [edx]
test eax, eax
jle 0x45120d
add edx, 0x1a
xor edi, edi
dec eax
mov word [edx], di
lea edx, [edx + 0x18]
test eax, eax
jg 0x4511fc
mov edi, dword [esp + 0x14]
mov eax, dword [ecx]
test eax, eax
jle 0x451227
lea edx, [ecx + 0x1a]
xor ebx, ebx
dec eax
mov word [edx], bx
lea edx, [edx + 0x18]
test eax, eax
jg 0x451216
mov ebx, dword [esp + 0x40]
push 0x42
pop eax
cmp word [esi + 6], ax
jle 0x451234
mov word [esi + 6], ax
mov edx, dword [esp + 0xa4]
test edx, edx
je 0x451293
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x451293
and dword [esp + 0x10], 0
test eax, eax
jle 0x451277
mov ebx, dword [esp + 0x10]
xor eax, eax
mov edi, eax
mov al, byte [edi + edx + 0x10]
lea edi, [edi + 0x18]
and al, 1
inc ebx
mov byte [ecx + edi - 8], al
mov edx, dword [esp + 0xa4]
cmp ebx, dword [ecx]
jl 0x451256
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 0x14]
push 0xffffffffffffffff
call fcn.00437250
pop ecx
test eax, eax
jne 0x451293
mov dword [esp + 0x58], 1
jmp 0x451293
xor eax, eax
mov word [esi + 6], ax
mov eax, dword [ebx + 0x38]
xor edx, edx
mov ecx, dword [esp + 0x28]
dec eax
mov dword [esp + 0x20], eax
xorps xmm0, xmm0
mov dword [ebx + 0x38], eax
lea eax, [esp + 0x68]
mov dword [esp + 0xf8], eax
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0xf4], ecx
inc eax
mov ecx, dword [esp + 0xc]
movlpd qword [esp + 0xfc], xmm0
movlpd qword [esp + 0x104], xmm0
mov dword [esp + 0x10c], edx
mov dword [esp + 0xf0], ebx
mov dword [esp + 0x78], eax
test ecx, ecx
je 0x4512f1
mov eax, dword [ecx]
mov dword [esp + 0x74], eax
jmp 0x4512f5
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x80], ecx
lea ecx, [esp + 0xf0]
call fcn.00437989
mov edx, dword [esp + 0xa4]
lea ecx, [esp + 0xf0]
call fcn.00437989
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x451388
cmp dword [esp + 0xc], 0
je 0x45137a
mov edx, dword [esi + 0x2c]
xorps xmm0, xmm0
movlpd qword [esp + 0xd4], xmm0
movlpd qword [esp + 0xdc], xmm0
mov dword [esp + 0xcc], ebx
mov dword [esp + 0xd0], 0x4506e5
mov dword [esp + 0xe4], esi
test edx, edx
je 0x451373
lea ecx, [esp + 0xcc]
call fcn.00430637
mov ecx, dword [esp + 0x38]
mov eax, dword [esi + 0x24]
mov dword [esp + 0x50], eax
mov edx, ecx
lea ecx, [esp + 0xf0]
call fcn.00437955
mov eax, dword [esp + 0x88]
mov edx, dword [esp + 0x94]
mov dword [esp + 0x8c], eax
xor eax, eax
cmp dword [esi + 0x28], eax
jne 0x4513e0
cmp dword [esi + 0x2c], eax
jne 0x4513e0
cmp edx, 1
jne 0x4513e0
mov edx, dword [esp + 0x90]
lea eax, [esp + 0x4c]
mov ecx, dword [esp + 0x1c]
push eax
mov edx, dword [edx]
call fcn.0044f5bd
mov edx, dword [esp + 0x98]
mov byte [esp + 0x43], al
mov eax, dword [esp + 0x50]
mov dword [esp + 0xa0], eax
xor eax, eax
pop ecx
jmp 0x4513e4
mov byte [esp + 0x3f], al
mov dword [esp + 0x10], eax
test edx, edx
jle 0x451465
mov ecx, dword [esp + 0x108]
mov edi, eax
mov esi, eax
mov eax, dword [esp + 0x90]
or ecx, 8
mov eax, dword [edi + eax]
mov dword [esp + 0x108], ecx
lea ecx, [esp + 0xf0]
mov dword [esp + 0x10], eax
mov edx, dword [eax + 0x14]
call fcn.00437989
mov edx, dword [esp + 0x10]
test dword [edx + 4], 0x1000000
je 0x45143d
mov edx, dword [edx + 0x2c]
lea ecx, [esp + 0xf0]
mov edx, dword [edx + 0x28]
call fcn.00437955
mov ecx, dword [esp + 0x108]
add edi, 0x10
mov edx, dword [esp + 0x94]
and ecx, 0xfffffff7
inc esi
mov dword [esp + 0x108], ecx
cmp esi, edx
jl 0x4513f7
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x14]
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x1c]
cmp byte [eax + 0x51], 0
jne 0x451e6a
mov ecx, dword [esp + 0xc]
test ecx, ecx
je 0x451a75
mov eax, dword [ebx + 0x28]
mov edx, ecx
push dword [esp + 0x88]
mov dword [esp + 0x70], eax
mov ecx, ebx
inc eax
mov dword [ebx + 0x28], eax
xor eax, eax
push eax
call fcn.0044c98d
push 0xfffffffffffffff7
push eax
mov dword [esp + 0xf8], eax
mov ecx, edi
xor eax, eax
push eax
push dword [esp + 0x88]
push dword [esp + 0x84]
push 0x72
pop edx
call fcn.00423a9c
mov ecx, dword [ebx + 0x38]
add esp, 0x1c
mov edx, dword [esp + 0xc]
mov dword [esp + 0x64], eax
mov eax, dword [ebx + 0x2c]
inc eax
mov dword [esp + 0x10], eax
inc eax
dec ecx
mov dword [esp + 0x34], eax
add eax, 2
mov dword [esp + 0x4c], ecx
dec ecx
mov dword [ebx + 0x2c], eax
mov dword [ebx + 0x38], ecx
mov dword [esp + 0x30], ecx
mov ecx, eax
add ecx, dword [edx]
mov dword [esp + 0x2c], eax
mov dword [ebx + 0x2c], ecx
lea eax, [ecx + 1]
mov dword [esp + 0xa0], eax
mov eax, dword [edx]
add eax, ecx
mov ecx, edi
mov dword [ebx + 0x2c], eax
xor eax, eax
push eax
push dword [esp + 0x38]
push eax
push 0x46
pop edx
call fcn.00423978
mov eax, dword [esp + 0x18]
add esp, 0xc
mov ecx, dword [esp + 0x2c]
inc ecx
mov eax, dword [eax]
dec eax
add eax, ecx
push eax
push ecx
xor eax, eax
mov ecx, edi
push eax
push 0x49
pop edx
call fcn.00423978
add esp, 0xc
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x34]
push dword [esp + 0x34]
push 0xc
pop edx
call fcn.00423978
add esp, 0xc
xor edx, edx
push edx
cmp dword [esp + 0x5c], edx
mov ecx, 0x240
push 0x40
pop eax
cmovne eax, ecx
mov ecx, ebx
movzx eax, ax
push eax
push edx
push dword [esp + 0x18]
mov edx, dword [esp + 0x38]
push dword [esp + 0x60]
call fcn.0045edbf
mov edx, eax
add esp, 0x14
mov dword [esp + 0x60], edx
test edx, edx
je 0x450aa4
mov eax, dword [esp + 0xc]
movsx ecx, byte [edx + 0x2f]
cmp ecx, dword [eax]
jne 0x4515b4
xor ecx, ecx
mov esi, ecx
mov dword [esp + 0x28], esi
jmp 0x45176e
cmp byte [esp + 0x110], 0
je 0x4515c9
test byte [esi + 8], 1
mov eax, str.DISTINCT
je 0x4515ce
mov eax, str.GROUP_BY
push eax
push str.USE_TEMP_B_TREE_FOR__s
xor eax, eax
push eax
push ebx
call fcn.00423b0f
mov esi, dword [esp + 0x1c]
add esp, 0x10
cmp dword [esp + 0x88], 0
mov dword [esp + 0x28], 1
mov eax, dword [esi]
mov edx, eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x18], eax
jle 0x451646
mov ebx, dword [esp + 0x84]
mov edi, eax
mov esi, dword [esp + 0x88]
add ebx, 0xc
cmp dword [ebx], edi
lea eax, [edx + 1]
lea ebx, [ebx + 0x18]
cmovl eax, edx
mov edx, eax
lea eax, [edi + 1]
cmovl eax, edi
mov edi, eax
sub esi, 1
jne 0x45161c
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0xc]
mov dword [esp + 0x54], edx
mov ecx, ebx
call fcn.004379f5
xor ecx, ecx
mov dword [esp + 0x50], eax
push ecx
push ecx
push eax
mov edx, esi
mov ecx, ebx
call fcn.0043668d
mov ecx, dword [esp + 0x94]
xor edx, edx
add esp, 0xc
mov eax, edx
mov dword [esp + 0x5c], eax
test ecx, ecx
jle 0x4516c3
mov ebx, dword [esp + 0x98]
mov esi, edx
mov edx, dword [esp + 0x84]
cmp dword [esi + edx + 0xc], ebx
jl 0x4516b3
mov eax, dword [esp + 0x50]
mov ecx, edi
add eax, ebx
push eax
push dword [esi + edx + 8]
push dword [esi + edx + 4]
mov edx, dword [esi + edx]
call fcn.00435472
mov ecx, dword [esp + 0x94]
add esp, 0xc
mov eax, dword [esp + 0x5c]
inc ebx
inc eax
add esi, 0x18
mov dword [esp + 0x5c], eax
cmp eax, ecx
jl 0x45167e
mov ebx, dword [esp + 0x40]
mov ecx, ebx
call fcn.004379bd
mov esi, eax
mov ecx, edi
push esi
push dword [esp + 0x58]
push dword [esp + 0x58]
push 0x5c
pop edx
call fcn.00423978
add esp, 0xc
xor eax, eax
mov edx, 0x83
mov ecx, edi
push eax
push esi
push dword [esp + 0x74]
call fcn.00423978
add esp, 0xc
mov edx, esi
mov ecx, ebx
call fcn.004379dc
mov esi, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
push esi
call fcn.00437a2b
mov ecx, dword [esp + 0x64]
add esp, 4
call fcn.0045f7b3
mov edx, dword [ebx + 0x28]
mov ecx, ebx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x70], edx
lea eax, [edx + 1]
mov dword [ebx + 0x28], eax
call fcn.004379bd
push esi
push eax
push edx
push 0x74
pop edx
mov ecx, edi
mov dword [esp + 0x24], eax
call fcn.00423978
add esp, 0xc
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x24]
push dword [esp + 0x74]
push 0x22
pop edx
call fcn.00423978
mov edx, dword [esp + 0x6c]
xor esi, esi
add esp, 0xc
mov byte [esp + 0x69], 1
inc esi
xor ecx, ecx
cmp dword [esp + 0x58], 0
je 0x45179e
mov eax, dword [esp + 0x1c]
test byte [eax + 0x4c], 4
jne 0x45179e
test esi, esi
jne 0x451789
cmp byte [edx + 0x30], 0
je 0x45179e
mov edx, dword [esp + 0xb8]
mov dword [esp + 0xa4], ecx
mov ecx, edi
call fcn.00423f80
mov eax, dword [edi + 0x6c]
mov dword [esp + 0x98], eax
test esi, esi
je 0x4517c5
push dword [esp + 0x5c]
mov ecx, edi
push dword [esp + 0x1c]
push dword [esp + 0x74]
push 0x7e
pop edx
call fcn.00423978
add esp, 0xc
mov esi, dword [esp + 0xc]
xor ecx, ecx
mov eax, ecx
mov dword [esp + 0x18], ecx
cmp dword [esi], ecx
jle 0x451828
lea ecx, [esi + 4]
mov dword [esp + 0x58], ecx
mov edx, dword [esp + 0xa0]
add edx, eax
cmp dword [esp + 0x28], 0
push edx
je 0x451801
push eax
push dword [esp + 0x64]
mov ecx, edi
push 0x5a
pop edx
call fcn.00423978
add esp, 0xc
jmp 0x451810
mov byte [esp + 0x6c], 1
mov edx, dword [ecx]
mov ecx, ebx
call fcn.004365b3
pop ecx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x58]
inc eax
add ecx, 0x18
mov dword [esp + 0x18], eax
mov dword [esp + 0x58], ecx
cmp eax, dword [esi]
jl 0x4517dc
mov eax, dword [esp + 0xe8]
test eax, eax
je 0x451835
inc dword [eax]
push 0xfffffffffffffff7
push eax
push dword [esi]
mov eax, dword [esp + 0x38]
mov ecx, edi
push dword [esp + 0xac]
inc eax
push eax
push 0x57
pop edx
call fcn.00423a9c
mov esi, dword [edi + 0x6c]
add esp, 0x14
mov ecx, edi
lea eax, [esi + 1]
push eax
push 0
push eax
push 0x10
pop edx
call fcn.00423978
mov eax, dword [esp + 0x18]
add esp, 0xc
mov edx, dword [esp + 0xa0]
mov ecx, ebx
push dword [eax]
mov eax, dword [esp + 0x30]
inc eax
push eax
call fcn.00435560
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x58]
mov eax, dword [esp + 0x44]
inc eax
push eax
push 0xc
pop edx
call fcn.00423978
add esp, 0x14
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x24]
push dword [esp + 0x3c]
push 0x2f
pop edx
call fcn.00423978
add esp, 0xc
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x34]
push dword [esp + 0x34]
push 0xc
pop edx
call fcn.00423978
add esp, 0xc
mov edx, esi
mov ecx, edi
call fcn.004240dc
mov ecx, dword [edi + 0x6c]
mov esi, dword [esp + 0x10]
mov edx, esi
mov dword [eax + 8], ecx
lea eax, [esp + 0x68]
push eax
mov ecx, ebx
call fcn.00450468
pop ecx
xor eax, eax
mov ecx, edi
push eax
push esi
push 1
push 0x46
pop edx
call fcn.00423978
add esp, 0xc
cmp dword [esp + 0x28], 0
je 0x451928
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x9c]
push dword [esp + 0x74]
push 3
pop edx
call fcn.00423978
add esp, 0xc
jmp 0x45193c
mov ecx, dword [esp + 0x60]
call fcn.0045f7b3
mov edx, dword [esp + 0x64]
mov ecx, edi
call fcn.00423f80
mov esi, dword [esp + 0x34]
xor eax, eax
push eax
push dword [esp + 0x50]
mov ecx, edi
lea eax, [esi + 1]
push eax
push 0xc
pop edx
call fcn.00423978
mov edx, dword [esp + 0x2c]
add esp, 0xc
mov ecx, edi
call fcn.004239d1
mov edi, dword [edi + 0x6c]
xor eax, eax
push eax
push esi
mov esi, dword [esp + 0x1c]
mov ecx, esi
push 1
push 0x46
pop edx
call fcn.00423978
add esp, 0xc
xor eax, eax
mov ecx, esi
push eax
push eax
mov eax, dword [esp + 0x3c]
inc eax
push eax
push 0x42
pop eax
mov edx, eax
call fcn.00423978
mov edx, dword [esp + 0x58]
add esp, 0xc
mov ecx, esi
call fcn.00423c65
mov esi, dword [esi + 0x6c]
xor eax, eax
mov ecx, dword [esp + 0x14]
push eax
lea eax, [esi + 2]
push eax
push dword [esp + 0x18]
push 0x2f
pop edx
call fcn.00423978
mov ecx, dword [esp + 0x20]
add esp, 0xc
xor eax, eax
push eax
push eax
mov eax, dword [esp + 0x3c]
inc eax
push eax
push 0x42
pop eax
mov edx, eax
call fcn.00423978
add esp, 0xc
lea edx, [esp + 0x68]
mov ecx, ebx
call fcn.0045040e
push 0x10
inc esi
push esi
push dword [esp + 0x40]
push ebx
call fcn.00436bec
mov edx, dword [esp + 0x58]
lea eax, [esp + 0x120]
push edi
push esi
push dword [esp + 0x5c]
push eax
lea eax, [esp + 0xc4]
push eax
push 0xffffffffffffffff
mov ecx, ebx
call fcn.0044c208
mov eax, dword [esp + 0x5c]
xor esi, esi
mov edi, dword [esp + 0x3c]
inc eax
push esi
push esi
push eax
push 0x42
pop eax
mov edx, eax
mov ecx, edi
call fcn.00423978
mov edx, dword [esp + 0x64]
add esp, 0x34
mov ecx, edi
call fcn.00423c65
lea edx, [esp + 0x68]
mov ecx, ebx
call fcn.0045035f
push esi
push dword [esp + 0x14]
mov ecx, edi
push esi
push 0x46
pop edx
call fcn.00423978
add esp, 0xc
mov ecx, edi
push esi
push esi
push dword [esp + 0x34]
push 0x42
pop eax
mov edx, eax
call fcn.00423978
add esp, 0xc
jmp 0x451dd4
cmp dword [esi + 0x24], 0
mov ecx, dword [esp + 0x90]
jne 0x451cb0
mov ebx, dword [esi]
xor eax, eax
inc eax
cmp dword [ebx], eax
mov ebx, dword [esp + 0x40]
jne 0x451cb0
mov edi, dword [esi + 0x20]
cmp dword [edi], eax
mov edi, dword [esp + 0x14]
jne 0x451cb0
mov eax, dword [esi + 0x20]
cmp dword [eax + 0x1c], 0
jne 0x451cb0
mov ecx, dword [eax + 0x18]
mov eax, dword [esi]
mov dword [esp + 0x2c], ecx
cmp dword [ecx + 0x38], 0
mov eax, dword [eax + 4]
mov dword [esp + 0x64], eax
jne 0x451ca9
cmp byte [eax], 0xa3
jne 0x451ca9
test edx, edx
je 0x451ca9
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 4]
test dword [eax + 4], 0x100
je 0x451ca9
mov eax, dword [esp + 0x64]
test dword [eax + 4], 0x1000002
jne 0x451ca9
test ecx, ecx
je 0x451ca9
mov edx, dword [ecx + 0x48]
mov ecx, dword [ebx]
call fcn.0044b126
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 0x28]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x30], eax
lea ecx, [eax + 1]
mov dword [ebx + 0x28], ecx
xor ecx, ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 0x1c]
mov ecx, ebx
mov dword [esp + 0x18], eax
call fcn.0043fa0c
mov eax, dword [esp + 0x2c]
mov ecx, ebx
mov edx, dword [esp + 0x10]
push dword [eax]
push 0
push dword [eax + 0x1c]
call fcn.0043b193
mov edx, dword [esp + 0x38]
add esp, 0xc
test byte [edx + 0x24], 0x20
je 0x451b79
mov ecx, edx
call fcn.0043bdc8
mov dword [esp + 0x34], eax
jmp 0x451b7d
mov eax, dword [esp + 0x34]
mov ecx, dword [edx + 8]
test ecx, ecx
je 0x451bc7
lea esi, [edx + 0x2e]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x64]
test byte [ecx + 0x38], 4
jne 0x451bb8
movzx edx, word [ecx + 0x30]
cmp dx, word [edi]
jge 0x451bb8
cmp dword [ecx + 0x24], 0
jne 0x451bb8
test eax, eax
je 0x451bb6
cmp dx, word [eax + 0x30]
jge 0x451bb8
mov eax, ecx
mov ecx, dword [ecx + 0x14]
test ecx, ecx
jne 0x451b97
mov edi, dword [esp + 0x14]
mov dword [esp + 0x34], eax
test eax, eax
je 0x451bdf
mov ecx, dword [eax + 0x2c]
mov edx, eax
mov dword [esp + 0x18], ecx
mov ecx, ebx
call fcn.0043feb2
mov dword [esp + 0x4c], eax
push 1
push dword [esp + 0x14]
mov ecx, edi
push dword [esp + 0x20]
push dword [esp + 0x3c]
push 0x61
pop edx
call fcn.00423bcb
mov eax, dword [esp + 0x5c]
add esp, 0x10
test eax, eax
je 0x451c11
push 0xfffffffffffffff7
push eax
or edx, 0xffffffff
mov ecx, edi
call fcn.0042401e
pop ecx
pop ecx
xor eax, eax
mov ecx, edi
push eax
mov eax, dword [esp + 0x94]
push dword [eax + 8]
push dword [esp + 0x38]
push 0x5d
pop edx
call fcn.00423978
add esp, 0xc
xor eax, eax
mov ecx, edi
push eax
push eax
push dword [esp + 0x38]
push 0x75
pop edx
call fcn.00423978
add esp, 0xc
cmp byte [ebx + 0xc7], 2
jne 0x451d9f
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x2c]
test edx, edx
je 0x451c75
test byte [ecx + 0x24], 0x20
je 0x451c6c
mov eax, dword [edx + 0x38]
and al, 3
cmp al, 2
je 0x451c75
mov eax, dword [edx]
mov edx, 0x536cb0
jmp 0x451c82
xor eax, eax
mov edx, 0x536cb0
mov dword [esp + 0x54], eax
mov eax, edx
cmp dword [esp + 0x54], 0
push eax
mov eax, str._USING_COVERING_INDEX
cmove eax, edx
push eax
push dword [ecx]
xor eax, eax
push str.SCAN_TABLE__s_s_s
push eax
push ebx
call fcn.00423b0f
add esp, 0x18
jmp 0x451d9f
mov ecx, dword [esp + 0x90]
and dword [esp + 0x30], 0
cmp dword [esp + 0x8c], 0
je 0x451d10
xor eax, eax
test edx, edx
jle 0x451cef
mov esi, eax
mov eax, dword [ecx]
test dword [eax + 4], 0x1000000
jne 0x451cdb
mov eax, dword [ecx + 4]
test byte [eax + 4], 0x20
jne 0x451ce3
inc esi
add ecx, 0x10
cmp esi, edx
jl 0x451cc7
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x10]
cmp eax, edx
jne 0x451d10
mov eax, dword [ebx + 0x2c]
xor ecx, ecx
push ecx
inc eax
push eax
push ecx
push 0x46
pop edx
mov ecx, edi
mov dword [esp + 0x3c], eax
mov dword [ebx + 0x2c], eax
call fcn.00423978
add esp, 0xc
lea edx, [esp + 0x68]
mov ecx, ebx
call fcn.0045035f
movzx eax, byte [esp + 0x3f]
xor ecx, ecx
mov edx, dword [esp + 0x28]
push ecx
push eax
push ecx
push dword [esp + 0xa8]
mov ecx, ebx
push dword [esp + 0x60]
call fcn.0045edbf
add esp, 0x14
mov dword [esp + 0x18], eax
test eax, eax
je 0x450aa4
mov edx, dword [esp + 0x30]
lea eax, [esp + 0x68]
push eax
mov ecx, ebx
call fcn.00450468
mov eax, dword [esp + 0x34]
pop ecx
test eax, eax
je 0x451d75
push 0
push eax
push 1
push 0x46
pop edx
mov ecx, edi
call fcn.00423978
add esp, 0xc
mov eax, dword [esp + 0x18]
cmp byte [eax + 0x2f], 0
jle 0x451d8d
mov edx, dword [eax + 0x24]
mov ecx, edi
call fcn.004239d1
mov eax, dword [esp + 0x18]
mov ecx, eax
call fcn.0045f7b3
lea edx, [esp + 0x68]
mov ecx, ebx
call fcn.0045040e
push 0x10
push dword [esp + 0x24]
xor eax, eax
push dword [esp + 0x40]
mov dword [esp + 0xb0], eax
push ebx
call fcn.00436bec
mov eax, dword [esp + 0x30]
mov edx, esi
push eax
push eax
push dword [esp + 0x5c]
xor eax, eax
mov ecx, ebx
push eax
push eax
push 0xffffffffffffffff
call fcn.0044c208
add esp, 0x28
mov edx, dword [esp + 0x20]
mov ecx, edi
call fcn.00423c65
xor esi, esi
cmp byte [esp + 0x111], 3
jne 0x451dff
push str.DISTINCT
push str.USE_TEMP_B_TREE_FOR__s
push esi
push ebx
call fcn.00423b0f
add esp, 0x10
cmp dword [esp + 0xa4], 0
je 0x451e4b
cmp dword [esp + 0xa8], 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 esi
push ebx
call fcn.00423b0f
mov eax, dword [esp + 0x34]
mov ecx, ebx
push dword [esp + 0x54]
mov edx, dword [esp + 0x5c]
push dword [eax]
lea eax, [esp + 0xbc]
push eax
call fcn.0044ca46
add esp, 0x1c
mov edx, dword [esp + 0xec]
mov ecx, edi
call fcn.00423c65
xor eax, eax
cmp dword [ebx + 0x24], esi
setg al
mov dword [esp + 0x54], eax
jmp 0x450aa4
mov edi, eax
jmp 0x450aa8
xor eax, eax
inc eax
mov ecx, dword [esp + 0x11c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00469944
mov esp, ebp
pop ebp
ret