Function at 0x496312
Capabilities:
Enumerate pe sections
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x11c
push ebx
mov ebx, ecx
mov dword [esp + 0x38], 1
xor eax, eax
mov dword [esp + 0x28], ebx
push esi
push edi
mov edi, edx
mov dword [esp + 0x6c], eax
mov eax, dword [ebx]
mov dword [esp + 0x48], edi
mov dword [esp + 0x18], eax
call fcn.00492fa0
mov esi, eax
mov dword [esp + 0x14], esi
test edi, edi
je 0x49793d
mov eax, dword [esp + 0x18]
cmp byte [eax + 0x51], 0
jne 0x49793d
xor eax, eax
cmp dword [ebx + 0x24], eax
jne 0x49793d
push eax
push eax
push eax
push 0x15
pop edx
mov ecx, ebx
call fcn.00480c63
add esp, 0xc
test eax, eax
jne 0x49793d
push 0x30
push eax
lea eax, [esp + 0x94]
push eax
call fcn.00589570
mov eax, dword [ebp + 8]
add esp, 0xc
cmp byte [eax], 8
ja 0x4963bb
mov edx, dword [edi + 0x30]
test edx, edx
je 0x4963b0
mov ecx, dword [esp + 0x18]
call fcn.00479b6f
xor eax, eax
and dword [edi + 8], 0xfffffffe
mov dword [edi + 0x30], eax
jmp 0x4963bd
xor eax, eax
push eax
mov edx, edi
mov ecx, ebx
call fcn.00495df0
xor eax, eax
cmp dword [ebx + 0x24], eax
mov eax, dword [esp + 0x1c]
pop ecx
jne 0x4965be
cmp byte [eax + 0x51], 0
jne 0x4965be
mov eax, dword [ebp + 8]
cmp byte [eax], 9
jne 0x4963f2
mov edx, edi
mov ecx, ebx
call fcn.00492a09
mov edx, edi
mov ecx, ebx
call fcn.004a5c45
test eax, eax
jne 0x4965ba
mov eax, dword [edi + 0x20]
mov dword [esp + 0x1c], eax
mov eax, dword [edi + 8]
shr eax, 3
and eax, 1
mov dword [esp + 0x28], eax
xor eax, eax
push 0x28
push eax
lea eax, [esp + 0xc4]
push eax
call fcn.00589570
mov eax, dword [edi + 0x30]
add esp, 0xc
mov edx, dword [esp + 0x1c]
xor ecx, ecx
mov dword [esp + 0xbc], eax
mov eax, ecx
mov dword [esp + 0xc], ecx
jmp 0x496561
cmp eax, dword [edx]
jge 0x49656a
imul ecx, eax, 0x48
mov dword [esp + 0x20], ecx
test byte [ecx + edx + 0x2c], 8
mov esi, dword [ecx + edx + 0x1c]
mov dword [esp + 0x3c], esi
mov esi, dword [ecx + edx + 0x18]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x14]
je 0x4964b1
mov edx, dword [ecx + edx + 0x34]
mov ecx, dword [edi + 0x24]
call fcn.0047d178
test eax, eax
je 0x4964a9
mov eax, dword [esp + 0x18]
mov ecx, 0x2000
test word [eax + 0x4c], cx
jne 0x4964a9
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
and byte [edx + eax + 0x2c], 0xd7
mov edx, dword [edx + eax + 0x34]
mov ecx, dword [edi + 0x24]
call fcn.0049167c
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0xc]
cmp dword [esp + 0x3c], 0
je 0x49655a
mov eax, dword [esp + 0x10]
movsx ecx, word [eax + 0x2a]
mov eax, dword [esp + 0x3c]
mov eax, dword [eax]
cmp ecx, dword [eax]
mov eax, dword [esp + 0x3c]
jne 0x49659d
xor ecx, ecx
test byte [eax + 8], 8
jne 0x496597
cmp dword [eax + 0x30], ecx
mov eax, dword [esp + 0xc]
je 0x496503
test eax, eax
jne 0x496503
test dword [edi + 8], 0x40000
je 0x496503
cmp dword [edx], 1
je 0x49655c
test byte [edx + 0x74], 0xa
jne 0x49655c
push dword [esp + 0x28]
mov edx, edi
mov ecx, ebx
push eax
call fcn.004948f3
pop ecx
pop ecx
test eax, eax
je 0x49652b
xor eax, eax
cmp dword [ebx + 0x24], eax
jne 0x4965ba
or eax, 0xffffffff
mov dword [esp + 0xc], eax
jmp 0x49652f
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x18]
mov edx, dword [edi + 0x20]
mov dword [esp + 0x1c], edx
cmp byte [ecx + 0x51], 0
jne 0x497936
mov ecx, dword [ebp + 8]
cmp byte [ecx], 8
jbe 0x49655a
mov eax, dword [edi + 0x30]
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0xc]
xor ecx, ecx
inc eax
mov dword [esp + 0xc], eax
cmp dword [edi + 0x34], ecx
je 0x496447
cmp dword [edi + 0x34], ecx
je 0x4965f4
push dword [ebp + 8]
mov edx, edi
mov ecx, ebx
call fcn.0049355a
mov esi, eax
xor eax, eax
pop ecx
cmp dword [edi + 0x38], eax
jne 0x496590
mov ecx, ebx
call fcn.00469df8
mov eax, esi
jmp 0x497940
mov eax, dword [esp + 0xc]
jmp 0x49655c
mov eax, dword [eax]
push dword [eax]
mov eax, dword [esp + 0x14]
push dword [eax]
movsx eax, word [eax + 0x2a]
push eax
push str.expected__d_columns_for__s_but_got__d
push ebx
call fcn.004542c2
add esp, 0x14
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0xa8]
test edx, edx
je 0x4965d0
mov ecx, eax
call fcn.00451bec
mov edx, dword [esp + 0xb4]
test edx, edx
je 0x4965e4
mov ecx, dword [esp + 0x18]
call fcn.00451bec
mov ecx, ebx
call fcn.00469df8
mov eax, dword [esp + 0x40]
jmp 0x497940
cmp dword [edx], 1
jle 0x496612
mov eax, dword [esp + 0x18]
cmp word [eax + 0x4c], cx
jl 0x496612
mov edx, edi
mov ecx, ebx
call fcn.00494f74
mov edx, dword [esp + 0x1c]
xor ecx, ecx
mov eax, ecx
mov dword [esp + 0x5c], 0x5f4bbf
mov dword [esp + 0x4c], eax
cmp dword [edx], ecx
jle 0x496926
imul ecx, eax, 0x48
add ecx, 8
add ecx, edx
mov dword [esp + 0xc], ecx
mov eax, dword [ecx + 0x38]
or eax, dword [ecx + 0x3c]
jne 0x496660
cmp dword [ecx + 8], eax
je 0x496660
push dword [ecx + 4]
push dword [esp + 0x60]
push dword [ecx + 8]
mov ecx, ebx
push 0x14
pop edx
call fcn.00480c63
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov edx, dword [esp + 0x1c]
mov eax, dword [ecx + 0x14]
mov dword [esp + 0x24], eax
test eax, eax
je 0x496915
xor eax, eax
lea edx, [esp + 0x10]
mov ecx, edi
mov dword [esp + 0x10], eax
call fcn.00478a01
mov eax, dword [esp + 0x10]
mov ecx, 0x1000
add dword [ebx + 0xd0], eax
mov eax, dword [esp + 0x18]
test word [eax + 0x4c], cx
jne 0x4966bc
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x24]
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.00495009
add esp, 0xc
cmp dword [esp + 0x4c], 0
mov ecx, dword [esp + 0xc]
mov eax, dword [ebx + 0xf0]
mov dword [esp + 0x38], eax
mov eax, dword [ecx + 8]
mov dword [ebx + 0xf0], eax
jne 0x4967a6
mov eax, dword [esp + 0x1c]
cmp dword [eax], 1
je 0x4966f1
test byte [eax + 0x74], 0xa
je 0x4967a6
mov esi, dword [esi + 0x6c]
mov eax, dword [ebx + 0x2c]
inc esi
push esi
inc eax
push 0
push eax
mov dword [ebx + 0x2c], eax
mov dword [ecx + 0x1c], eax
mov ecx, dword [esp + 0x20]
push 0xd
pop edx
call fcn.00469c0b
mov eax, dword [esp + 0x18]
add esp, 0xc
mov byte [esp + 0x74], 0xd
mov dword [eax + 0x18], esi
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x78], eax
xor eax, eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x24]
push dword [eax + 0x14]
push str.CO_ROUTINE__u
push 1
push ebx
call fcn.00469da7
mov edx, dword [esp + 0x34]
lea eax, [esp + 0x84]
push eax
mov ecx, ebx
call fcn.00496312
mov edx, dword [esp + 0x20]
add esp, 0x14
mov eax, dword [esp + 0x24]
mov ecx, dword [edx + 0x10]
mov ax, word [eax + 6]
mov word [ecx + 0x2c], ax
mov eax, dword [esp + 0x7c]
or dword [edx + 0x28], 0x10
mov ecx, dword [esp + 0x14]
mov dword [edx + 0x20], eax
mov edx, dword [edx + 0x1c]
call fcn.00469e95
lea edx, [esi - 1]
mov esi, dword [esp + 0x14]
mov ecx, esi
call fcn.0046a36b
mov ecx, dword [esi + 0x6c]
mov dword [eax + 8], ecx
jmp 0x4968d9
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 0x46
pop edx
call fcn.00469c0b
mov dword [esp + 0x5c], eax
add esp, 0xc
lea ecx, [eax + 1]
mov eax, dword [esp + 0xc]
test byte [eax + 0x28], 8
mov dword [eax + 0x18], ecx
jne 0x4967f4
xor eax, eax
mov ecx, esi
push eax
push eax
push eax
push 0x11
pop edx
call fcn.00469c0b
mov dword [esp + 0x1c], eax
add esp, 0xc
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x1c]
mov edx, eax
call fcn.0049627b
mov dword [esp + 0x20], eax
test eax, eax
je 0x496835
push 0
push dword [eax + 0x2c]
mov eax, dword [esp + 0x14]
mov ecx, esi
push dword [eax + 0x2c]
push 0x6d
pop edx
call fcn.00469c0b
mov eax, dword [esp + 0x2c]
add esp, 0xc
mov ecx, dword [esp + 0x24]
mov eax, dword [eax + 0x14]
mov ax, word [eax + 6]
mov word [ecx + 6], ax
jmp 0x496883
mov eax, dword [esp + 0xc]
mov byte [esp + 0x74], 0xc
mov eax, dword [eax + 0x2c]
mov dword [esp + 0x78], eax
xor eax, eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x24]
push dword [eax + 0x14]
push str.MATERIALIZE__u
push 1
push ebx
call fcn.00469da7
mov edx, dword [esp + 0x34]
lea eax, [esp + 0x84]
push eax
mov ecx, ebx
call fcn.00496312
add esp, 0x14
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x24]
mov ax, word [eax + 6]
mov word [ecx + 0x2c], ax
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4968ad
mov edx, eax
mov ecx, esi
call fcn.0046a36b
mov ecx, dword [esi + 0x6c]
mov dword [eax + 8], ecx
xor eax, eax
mov ecx, esi
push eax
push eax
mov eax, dword [esp + 0x14]
push dword [eax + 0x1c]
push 0x42
pop edx
call fcn.00469c0b
mov edx, dword [esp + 0x5c]
add esp, 0xc
mov ecx, dword [esp + 0x14]
mov esi, eax
call fcn.0046a36b
mov dword [eax + 4], esi
mov esi, ecx
mov eax, dword [esp + 0x18]
xor ecx, ecx
mov dword [ebx + 0x1c], ecx
mov byte [ebx + 0x13], cl
cmp byte [eax + 0x51], cl
jne 0x4965be
mov dword [esp + 0x10], ecx
lea edx, [esp + 0x10]
mov ecx, edi
call fcn.00478a01
mov eax, dword [esp + 0x10]
sub dword [ebx + 0xd0], eax
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x1c]
mov dword [ebx + 0xf0], eax
mov eax, dword [esp + 0x4c]
inc eax
mov dword [esp + 0x4c], eax
cmp eax, dword [edx]
jl 0x496628
mov eax, dword [edi + 0x24]
xor ecx, ecx
mov edx, dword [edi]
inc ecx
mov dword [esp + 0x54], eax
mov eax, dword [edi + 0x28]
mov dword [esp + 0xc], eax
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x4c], eax
mov al, byte [edi + 8]
and al, cl
mov dword [esp + 0x3c], edx
mov byte [esp + 0x2f], al
mov byte [esp + 0x74], al
mov eax, dword [edi + 8]
and al, 9
cmp al, cl
jne 0x496987
mov ecx, dword [esp + 0xbc]
push 0xffffffffffffffff
call fcn.0047ce23
pop ecx
test eax, eax
jne 0x496987
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x18]
and dword [edi + 8], 0xfffffffe
push eax
call fcn.00479422
pop ecx
mov dword [esp + 0xc], eax
mov dword [edi + 0x28], eax
mov edx, dword [esp + 0xbc]
test edx, edx
je 0x4969e2
mov eax, dword [esp + 0x3c]
mov ecx, ebx
push dword [eax]
xor eax, eax
push eax
call fcn.004924a7
mov edx, dword [ebx + 0x28]
push 0xfffffffffffffff7
push eax
xor eax, eax
mov dword [esp + 0xd4], edx
push eax
mov eax, dword [esp + 0xd0]
lea ecx, [edx + 1]
mov dword [ebx + 0x28], ecx
mov ecx, dword [eax]
mov eax, dword [esp + 0x50]
inc ecx
mov eax, dword [eax]
add eax, ecx
mov ecx, esi
push eax
push edx
push 0x70
pop edx
call fcn.00469d31
add esp, 0x1c
mov dword [esp + 0xd0], eax
jmp 0x4969ea
or dword [esp + 0xd0], 0xffffffff
mov eax, dword [ebp + 8]
cmp byte [eax], 0xc
jne 0x496a0a
mov ecx, dword [esp + 0x3c]
push 0
push dword [ecx]
mov ecx, esi
push dword [eax + 4]
push 0x70
pop edx
call fcn.00469c0b
add esp, 0xc
dec dword [ebx + 0x38]
mov ecx, 0x4000
mov eax, dword [ebx + 0x38]
mov dword [esp + 0xe8], eax
test dword [edi + 8], ecx
jne 0x496a2a
mov ecx, 0x140
mov word [edi + 6], cx
push eax
mov edx, edi
mov ecx, ebx
call fcn.00492fc0
pop ecx
xor ecx, ecx
cmp dword [edi + 0xc], ecx
jne 0x496a5b
mov edx, dword [esp + 0xd0]
test edx, edx
js 0x496a5b
mov ecx, esi
call fcn.0046a36b
mov byte [eax], 0x72
or byte [esp + 0xdc], 1
xor ecx, ecx
test byte [edi + 8], 1
je 0x496abf
mov esi, dword [ebx + 0x28]
push ecx
push ecx
mov ecx, ebx
mov dword [esp + 0x80], esi
lea eax, [esi + 1]
mov dword [ebx + 0x28], eax
mov edx, dword [edi]
call fcn.004924a7
mov ecx, dword [esp + 0x1c]
mov edi, eax
xor eax, eax
push eax
push eax
push esi
push 0x70
pop edx
call fcn.00469c0b
mov ecx, dword [esp + 0x28]
add esp, 0x14
mov esi, eax
mov edx, esi
push 0xfffffffffffffff7
push edi
call fcn.0046a2ad
pop ecx
pop ecx
mov dword [esp + 0x7c], esi
mov esi, dword [esp + 0x14]
mov ecx, esi
push 8
pop edx
call fcn.0046a0d0
mov edi, dword [esp + 0x48]
push 3
pop eax
jmp 0x496ac1
mov al, cl
cmp dword [esp + 0x28], 0
mov ecx, dword [esp + 0xc]
mov byte [esp + 0x75], al
mov dword [esp + 0x68], eax
jne 0x496cd7
test ecx, ecx
jne 0x496cd7
cmp byte [esp + 0x2f], cl
mov eax, 0x100
mov edx, 0x4000
cmovne ecx, eax
mov ax, word [edi + 8]
and ax, dx
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 0x496b16
mov edx, eax
mov ecx, ebx
call fcn.004a641b
movsx eax, word [edi + 6]
mov ecx, ebx
mov edx, dword [esp + 0x1c]
push eax
push dword [esp + 0x24]
push dword [edi]
push dword [esp + 0xc8]
push dword [esp + 0x64]
call fcn.004a439c
mov edx, eax
add esp, 0x14
mov dword [esp + 0x10], edx
test edx, edx
je 0x4965ba
movzx eax, word [edx + 0x48]
cmp ax, word [edi + 6]
jge 0x496b56
mov word [edi + 6], ax
cmp byte [esp + 0x2f], 0
je 0x496b7f
mov eax, dword [esp + 0x68]
mov cl, byte [edx + 0x33]
movzx eax, al
test cl, cl
mov dword [esp + 0x68], eax
movzx eax, cl
mov ecx, dword [esp + 0x68]
cmovne ecx, eax
mov dword [esp + 0x68], ecx
mov byte [esp + 0x75], cl
mov ecx, dword [esp + 0xbc]
test ecx, ecx
je 0x496bcb
movsx eax, byte [edx + 0x2f]
mov dword [esp + 0xc0], eax
cmp byte [edx + 0x34], 0
jne 0x496ba0
mov eax, dword [edx + 0x20]
jmp 0x496bae
movzx eax, byte [edx + 0x2e]
imul eax, eax, 0x58
mov eax, dword [eax + edx + 0x2a8]
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0xc0]
cmp eax, dword [ecx]
push 0
pop eax
cmove ecx, eax
mov dword [esp + 0xbc], ecx
cmp dword [esp + 0xd0], 0
jl 0x496beb
test ecx, ecx
jne 0x496beb
mov edx, dword [esp + 0xd0]
mov ecx, esi
call fcn.0046a212
mov edx, dword [esp + 0x10]
cmp dword [esp + 0x28], 0
je 0x496ca5
mov ebx, dword [ebx + 0x38]
mov ecx, dword [esp + 0x30]
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 + 0x54]
mov dword [ecx + 0x38], eax
call fcn.004a7845
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.00469c0b
mov ecx, dword [esp + 0x20]
add esp, 0xc
mov edx, esi
call fcn.00469efd
mov edx, dword [esp + 0x48]
lea esi, [ebx - 1]
mov ecx, dword [esp + 0x30]
xor eax, eax
push esi
push ebx
push dword [ebp + 8]
mov dword [esp + 0xe4], eax
lea eax, [esp + 0x80]
push eax
lea eax, [esp + 0xcc]
push eax
push 0xffffffffffffffff
call fcn.00491d11
mov ecx, dword [esp + 0x2c]
mov edx, ebx
call fcn.00469efd
mov ecx, dword [esp + 0x2c]
xor eax, eax
push eax
push eax
push edi
push 0x42
pop edx
call fcn.00469c0b
add esp, 0x24
mov edx, esi
mov esi, dword [esp + 0x14]
mov ecx, esi
call fcn.00469efd
mov ebx, dword [esp + 0x30]
jmp 0x497704
push dword [edx + 0x24]
lea eax, [esp + 0x78]
mov ecx, ebx
push dword [edx + 0x20]
mov edx, edi
push dword [ebp + 8]
push eax
lea eax, [esp + 0xcc]
push eax
push 0xffffffffffffffff
call fcn.00491d11
mov ecx, dword [esp + 0x28]
add esp, 0x18
call fcn.004a4d58
jmp 0x497704
xor eax, eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x64], eax
test ecx, ecx
je 0x496d89
mov edx, dword [edi]
mov eax, dword [edx]
test eax, eax
jle 0x496d09
add edx, 0x1a
xor esi, esi
dec eax
mov word [edx], si
lea edx, [edx + 0x18]
test eax, eax
jg 0x496cf8
mov esi, dword [esp + 0x14]
mov eax, dword [ecx]
test eax, eax
jle 0x496d23
lea edx, [ecx + 0x1a]
xor ebx, ebx
dec eax
mov word [edx], bx
lea edx, [edx + 0x18]
test eax, eax
jg 0x496d12
mov ebx, dword [esp + 0x30]
push 0x42
pop eax
cmp word [edi + 6], ax
jle 0x496d30
mov word [edi + 6], ax
mov edx, dword [esp + 0xbc]
test edx, edx
je 0x496d8f
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x496d8f
and dword [esp + 0x10], 0
test eax, eax
jle 0x496d73
mov ebx, dword [esp + 0x10]
xor eax, eax
mov esi, eax
mov al, byte [esi + edx + 0x10]
lea esi, [esi + 0x18]
and al, 1
inc ebx
mov byte [ecx + esi - 8], al
mov edx, dword [esp + 0xbc]
cmp ebx, dword [ecx]
jl 0x496d52
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x14]
push 0xffffffffffffffff
call fcn.0047ce23
pop ecx
test eax, eax
jne 0x496d8f
mov dword [esp + 0x64], 1
jmp 0x496d8f
xor eax, eax
mov word [edi + 6], ax
dec dword [ebx + 0x38]
mov eax, dword [ebx + 0x38]
mov dword [esp + 0x60], eax
xor eax, eax
push 0x20
push eax
lea eax, [esp + 0xf4]
push eax
call fcn.00589570
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x98]
mov dword [esp + 0x100], eax
add esp, 0xc
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0xf0], ecx
inc eax
mov ecx, dword [esp + 0xc]
mov dword [esp + 0xec], ebx
mov dword [esp + 0x9c], eax
test ecx, ecx
je 0x496de5
mov eax, dword [ecx]
jmp 0x496de7
xor eax, eax
mov edx, dword [esp + 0x3c]
mov dword [esp + 0xa4], ecx
lea ecx, [esp + 0xec]
mov dword [esp + 0x98], eax
call fcn.0047d5ab
mov edx, dword [esp + 0xbc]
lea ecx, [esp + 0xec]
call fcn.0047d5ab
cmp dword [esp + 0x4c], 0
je 0x496e7f
mov eax, dword [esp + 0xc]
test eax, eax
je 0x496e6f
xor eax, eax
push 0x1c
push eax
lea eax, [esp + 0x114]
push eax
call fcn.00589570
mov edx, dword [edi + 0x2c]
add esp, 0xc
mov dword [esp + 0x10c], ebx
mov dword [esp + 0x110], 0x4961da
mov dword [esp + 0x124], edi
test edx, edx
je 0x496e68
lea ecx, [esp + 0x10c]
call fcn.004764b8
mov eax, dword [edi + 0x24]
mov dword [esp + 0x54], eax
mov edx, dword [esp + 0x4c]
lea ecx, [esp + 0xec]
call fcn.0047d575
mov eax, dword [esp + 0xac]
mov edx, dword [esp + 0xb8]
mov dword [esp + 0xb0], eax
xor eax, eax
cmp dword [edi + 0x28], eax
jne 0x496ecc
cmp dword [edi + 0x2c], eax
jne 0x496ecc
cmp edx, 1
jne 0x496ecc
mov edx, dword [esp + 0xb4]
lea eax, [esp + 0x6c]
mov ecx, dword [esp + 0x18]
push eax
mov edx, dword [edx]
call fcn.00495111
mov edx, dword [esp + 0xbc]
mov byte [esp + 0x3b], al
xor eax, eax
pop ecx
jmp 0x496ed0
mov byte [esp + 0x37], al
mov dword [esp + 0x10], eax
test edx, edx
jle 0x496f51
mov ecx, dword [esp + 0x104]
mov esi, eax
mov edi, eax
mov eax, dword [esp + 0xb4]
or ecx, 8
mov eax, dword [esi + eax]
mov dword [esp + 0x104], ecx
lea ecx, [esp + 0xec]
mov dword [esp + 0x10], eax
mov edx, dword [eax + 0x14]
call fcn.0047d5ab
mov edx, dword [esp + 0x10]
test dword [edx + 4], 0x1000000
je 0x496f29
mov edx, dword [edx + 0x2c]
lea ecx, [esp + 0xec]
mov edx, dword [edx + 0x28]
call fcn.0047d575
mov ecx, dword [esp + 0x104]
add esi, 0x10
mov edx, dword [esp + 0xb8]
and ecx, 0xfffffff7
inc edi
mov dword [esp + 0x104], ecx
cmp edi, edx
jl 0x496ee3
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x14]
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x18]
cmp byte [eax + 0x51], 0
jne 0x49778b
mov ecx, dword [esp + 0xc]
test ecx, ecx
je 0x497558
mov eax, dword [ebx + 0x28]
mov edx, ecx
push dword [esp + 0xac]
mov dword [esp + 0x94], eax
mov ecx, ebx
inc eax
mov dword [ebx + 0x28], eax
xor eax, eax
push eax
call fcn.004924a7
push 0xfffffffffffffff7
push eax
mov dword [esp + 0xf4], eax
mov ecx, esi
xor eax, eax
push eax
push dword [esp + 0xac]
push dword [esp + 0xa8]
push 0x72
pop edx
call fcn.00469d31
mov ecx, dword [ebx + 0x38]
add esp, 0x1c
mov edx, dword [esp + 0xc]
mov dword [esp + 0x70], eax
mov eax, dword [ebx + 0x2c]
inc eax
mov dword [esp + 0x10], eax
inc eax
dec ecx
mov dword [esp + 0x24], eax
add eax, 2
mov dword [esp + 0x5c], ecx
dec ecx
mov dword [ebx + 0x2c], eax
mov dword [ebx + 0x38], ecx
mov dword [esp + 0x28], ecx
mov ecx, eax
add ecx, dword [edx]
mov dword [esp + 0x58], eax
mov dword [ebx + 0x2c], ecx
lea eax, [ecx + 1]
mov dword [esp + 0x44], eax
mov eax, dword [edx]
add eax, ecx
mov ecx, esi
mov dword [ebx + 0x2c], eax
xor eax, eax
push eax
push dword [esp + 0x28]
push eax
push 0x46
pop edx
call fcn.00469c0b
mov eax, dword [esp + 0x18]
add esp, 0xc
mov ecx, dword [esp + 0x58]
inc ecx
mov eax, dword [eax]
dec eax
add eax, ecx
push eax
push ecx
xor eax, eax
mov ecx, esi
push eax
push 0x49
pop edx
call fcn.00469c0b
add esp, 0xc
xor eax, eax
mov ecx, esi
push eax
push dword [esp + 0x2c]
push dword [esp + 0x60]
push 0xc
pop edx
call fcn.00469c0b
add esp, 0xc
xor edx, edx
push edx
cmp dword [esp + 0x68], 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 + 0x2c]
push dword [esp + 0x64]
call fcn.004a439c
mov edx, eax
add esp, 0x14
mov dword [esp + 0x50], edx
test edx, edx
je 0x497787
mov eax, dword [esp + 0xc]
movsx ecx, byte [edx + 0x2f]
cmp ecx, dword [eax]
jne 0x4970a3
xor ecx, ecx
mov edi, ecx
mov dword [esp + 0x1c], edi
jmp 0x49724e
cmp byte [esp + 0x2f], 0
je 0x4970b5
test byte [edi + 8], 1
mov eax, str.DISTINCT
je 0x4970ba
mov eax, str.GROUP_BY
push eax
push str.USE_TEMP_B_TREE_FOR__s
xor eax, eax
push eax
push ebx
call fcn.00469da7
mov edi, dword [esp + 0x1c]
add esp, 0x10
mov dword [esp + 0x1c], 1
mov eax, dword [edi]
mov ecx, eax
mov dword [esp + 0x20], eax
mov edx, eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x38], eax
test eax, eax
jle 0x497113
mov eax, dword [esp + 0xa8]
add eax, 0xc
cmp dword [eax], edx
jl 0x497105
inc ecx
inc edx
add eax, 0x18
sub dword [esp + 0x38], 1
jne 0x4970ff
mov dword [esp + 0x40], ecx
mov edx, ecx
mov ecx, ebx
call fcn.0047d619
xor ecx, ecx
mov dword [esp + 0x54], eax
push ecx
push ecx
push eax
mov edx, edi
mov ecx, ebx
call fcn.0047c2fe
mov ecx, dword [esp + 0xb8]
xor edx, edx
add esp, 0xc
mov eax, edx
mov dword [esp + 0x38], eax
test ecx, ecx
jle 0x49718f
mov ebx, dword [esp + 0x20]
mov edi, edx
mov edx, dword [esp + 0xa8]
cmp dword [edi + edx + 0xc], ebx
jl 0x49717f
mov eax, dword [esp + 0x54]
mov ecx, esi
add eax, ebx
push eax
push dword [edi + edx + 8]
push dword [edi + edx + 4]
mov edx, dword [edi + edx]
call fcn.0047b25f
mov ecx, dword [esp + 0xb8]
add esp, 0xc
mov eax, dword [esp + 0x38]
inc ebx
inc eax
add edi, 0x18
mov dword [esp + 0x38], eax
cmp eax, ecx
jl 0x49714a
mov ebx, dword [esp + 0x30]
mov ecx, ebx
call fcn.0047d5e1
mov ecx, dword [esp + 0x14]
mov esi, eax
push esi
push dword [esp + 0x44]
push dword [esp + 0x5c]
push 0x5c
pop edx
call fcn.00469c0b
mov ecx, dword [esp + 0x20]
add esp, 0xc
xor eax, eax
mov edx, 0x83
push eax
push esi
push dword [esp + 0x98]
call fcn.00469c0b
add esp, 0xc
mov edx, esi
mov ecx, ebx
call fcn.0047d600
mov esi, dword [esp + 0x40]
mov edx, dword [esp + 0x54]
push esi
call fcn.0047d64f
mov ecx, dword [esp + 0x54]
add esp, 4
call fcn.004a4d58
mov edx, dword [ebx + 0x28]
mov ecx, ebx
mov dword [esp + 0x38], edx
mov dword [esp + 0x94], edx
lea eax, [edx + 1]
mov dword [ebx + 0x28], eax
call fcn.0047d5e1
push esi
mov esi, dword [esp + 0x18]
mov ecx, esi
push eax
push edx
push 0x74
pop edx
mov dword [esp + 0x2c], eax
call fcn.00469c0b
add esp, 0xc
xor eax, eax
mov ecx, esi
push eax
push dword [esp + 0x64]
push dword [esp + 0x98]
push 0x22
pop edx
call fcn.00469c0b
mov edx, dword [esp + 0x5c]
xor edi, edi
add esp, 0xc
mov byte [esp + 0x8d], 1
inc edi
xor ecx, ecx
cmp dword [esp + 0x64], 0
je 0x49727e
mov eax, dword [esp + 0x18]
test byte [eax + 0x4c], 4
jne 0x49727e
test edi, edi
jne 0x497269
cmp byte [edx + 0x30], 0
je 0x49727e
mov edx, dword [esp + 0xd0]
mov dword [esp + 0xbc], ecx
mov ecx, esi
call fcn.0046a212
mov eax, dword [esi + 0x6c]
mov dword [esp + 0x40], eax
test edi, edi
je 0x4972a5
push dword [esp + 0x38]
mov ecx, esi
push dword [esp + 0x24]
push dword [esp + 0x98]
push 0x7e
pop edx
call fcn.00469c0b
add esp, 0xc
mov edi, dword [esp + 0xc]
xor eax, eax
mov ecx, eax
mov dword [esp + 0x20], eax
cmp dword [edi], eax
jle 0x497308
lea edx, [edi + 4]
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x44]
add eax, ecx
cmp dword [esp + 0x1c], 0
push eax
je 0x4972de
push ecx
push dword [esp + 0x40]
mov ecx, esi
push 0x5a
pop edx
call fcn.00469c0b
add esp, 0xc
jmp 0x4972f0
mov byte [esp + 0x90], 1
mov ecx, ebx
mov edx, dword [edx]
call fcn.0047c22f
pop ecx
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x64]
inc ecx
add edx, 0x18
mov dword [esp + 0x20], ecx
mov dword [esp + 0x64], edx
cmp ecx, dword [edi]
jl 0x4972bc
mov eax, dword [esp + 0xe4]
test eax, eax
je 0x497315
inc dword [eax]
push 0xfffffffffffffff7
push eax
push dword [edi]
mov eax, dword [esp + 0x64]
mov ecx, esi
push dword [esp + 0x50]
inc eax
push eax
push 0x57
pop edx
call fcn.00469d31
mov esi, dword [esi + 0x6c]
add esp, 0x14
mov edi, dword [esp + 0x14]
mov ecx, edi
lea eax, [esi + 1]
push eax
push 0
push eax
push 0x10
pop edx
call fcn.00469c0b
mov eax, dword [esp + 0x18]
add esp, 0xc
mov edx, dword [esp + 0x44]
mov ecx, ebx
push dword [eax]
mov eax, dword [esp + 0x5c]
inc eax
push eax
call fcn.0047b2fe
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x68]
mov eax, dword [esp + 0x34]
inc eax
push eax
push 0xc
pop edx
call fcn.00469c0b
add esp, 0x14
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x64]
push dword [esp + 0x2c]
push 0x2f
pop edx
call fcn.00469c0b
add esp, 0xc
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x2c]
push dword [esp + 0x60]
push 0xc
pop edx
call fcn.00469c0b
mov edx, esi
add esp, 0xc
mov esi, edi
mov ecx, esi
call fcn.0046a36b
mov ecx, dword [esi + 0x6c]
mov edi, dword [esp + 0x10]
mov edx, edi
mov dword [eax + 8], ecx
lea eax, [esp + 0x8c]
push eax
mov ecx, ebx
call fcn.00495f6d
pop ecx
xor eax, eax
mov ecx, esi
push eax
push edi
push 1
push 0x46
pop edx
call fcn.00469c0b
add esp, 0xc
cmp dword [esp + 0x1c], 0
je 0x49740b
xor eax, eax
mov ecx, esi
push eax
push dword [esp + 0x44]
push dword [esp + 0x98]
push 3
pop edx
call fcn.00469c0b
add esp, 0xc
jmp 0x49741f
mov ecx, dword [esp + 0x50]
call fcn.004a4d58
mov edx, dword [esp + 0x70]
mov ecx, esi
call fcn.0046a212
xor eax, eax
mov ecx, esi
push eax
push dword [esp + 0x60]
lea eax, [edi + 2]
push eax
push 0xc
pop edx
call fcn.00469c0b
mov edx, dword [esp + 0x6c]
add esp, 0xc
mov ecx, esi
call fcn.00469c64
mov edi, dword [esi + 0x6c]
xor eax, eax
push eax
push dword [esp + 0x28]
mov ecx, esi
push 1
push 0x46
pop edx
call fcn.00469c0b
add esp, 0xc
xor eax, eax
mov ecx, esi
push eax
push eax
mov eax, dword [esp + 0x2c]
inc eax
push eax
push 0x42
pop eax
mov edx, eax
call fcn.00469c0b
mov edx, dword [esp + 0x68]
add esp, 0xc
mov ecx, esi
call fcn.00469efd
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.00469c0b
mov ecx, dword [esp + 0x20]
add esp, 0xc
xor eax, eax
push eax
push eax
mov eax, dword [esp + 0x2c]
inc eax
push eax
push 0x42
pop eax
mov edx, eax
call fcn.00469c0b
add esp, 0xc
lea edx, [esp + 0x8c]
mov ecx, ebx
call fcn.00495f11
push 0x10
inc esi
push esi
push dword [esp + 0x54]
push ebx
call fcn.0047c806
mov edx, dword [esp + 0x58]
lea eax, [esp + 0x84]
push edi
push esi
push dword [ebp + 8]
mov ecx, ebx
push eax
lea eax, [esp + 0xdc]
push eax
push 0xffffffffffffffff
call fcn.00491d11
mov eax, dword [esp + 0x4c]
xor edi, edi
mov esi, dword [esp + 0x3c]
inc eax
push edi
push edi
push eax
push 0x42
pop eax
mov edx, eax
mov ecx, esi
call fcn.00469c0b
mov edx, dword [esp + 0x5c]
add esp, 0x34
mov ecx, esi
call fcn.00469efd
lea edx, [esp + 0x8c]
mov ecx, ebx
call fcn.00495e60
push edi
push dword [esp + 0x14]
mov ecx, esi
push edi
push 0x46
pop edx
call fcn.00469c0b
add esp, 0xc
mov ecx, esi
push edi
push edi
push dword [esp + 0x60]
push 0x42
pop eax
mov edx, eax
call fcn.00469c0b
add esp, 0xc
jmp 0x4976f9
cmp dword [edi + 0x24], 0
jne 0x4977a5
mov ecx, dword [edi]
xor eax, eax
inc eax
cmp dword [ecx], eax
jne 0x4977a5
mov ecx, dword [edi + 0x20]
cmp dword [ecx], eax
jne 0x4977a5
cmp dword [ecx + 0x1c], 0
jne 0x4977a5
mov ecx, dword [ecx + 0x18]
mov eax, dword [edi]
mov dword [esp + 0x30], ecx
cmp dword [ecx + 0x38], 0
mov eax, dword [eax + 4]
mov dword [esp + 0x70], eax
jne 0x4975c7
cmp byte [eax], 0xa3
jne 0x4975c7
test edx, edx
je 0x4975c7
mov eax, dword [esp + 0xb4]
mov eax, dword [eax + 4]
test dword [eax + 4], 0x100
je 0x4975c7
mov eax, dword [esp + 0x70]
test dword [eax + 4], 0x1000002
je 0x4977ab
xor ecx, ecx
mov dword [esp + 0x28], ecx
cmp dword [esp + 0xb0], ecx
je 0x49762e
mov eax, ecx
test edx, edx
jle 0x49760f
mov ecx, dword [esp + 0xb4]
mov edi, eax
mov eax, dword [ecx]
test dword [eax + 4], 0x1000000
jne 0x4975f9
mov eax, dword [ecx + 4]
test byte [eax + 4], 0x20
jne 0x497601
inc edi
add ecx, 0x10
cmp edi, edx
jl 0x4975e5
mov dword [esp + 0x10], edi
xor ecx, ecx
mov edi, dword [esp + 0x48]
mov eax, dword [esp + 0x10]
cmp eax, edx
jne 0x49762e
mov eax, dword [ebx + 0x2c]
push ecx
inc eax
push eax
push ecx
push 0x46
pop edx
mov ecx, esi
mov dword [esp + 0x34], eax
mov dword [ebx + 0x2c], eax
call fcn.00469c0b
add esp, 0xc
lea edx, [esp + 0x8c]
mov ecx, ebx
call fcn.00495e60
mov al, byte [esp + 0x37]
xor ecx, ecx
mov edx, dword [esp + 0x1c]
push ecx
movzx eax, al
push eax
push ecx
push dword [esp + 0x78]
mov ecx, ebx
push dword [esp + 0x64]
call fcn.004a439c
add esp, 0x14
mov dword [esp + 0x20], eax
test eax, eax
je 0x497787
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x8c]
push eax
mov ecx, ebx
call fcn.00495f6d
mov eax, dword [esp + 0x2c]
pop ecx
test eax, eax
je 0x497698
push 0
push eax
push 1
push 0x46
pop edx
mov ecx, esi
call fcn.00469c0b
add esp, 0xc
mov eax, dword [esp + 0x20]
cmp byte [eax + 0x2f], 0
jle 0x4976b0
mov edx, dword [eax + 0x24]
mov ecx, esi
call fcn.00469c64
mov eax, dword [esp + 0x20]
mov ecx, eax
call fcn.004a4d58
lea edx, [esp + 0x8c]
mov ecx, ebx
call fcn.00495f11
push 0x10
push dword [esp + 0x64]
xor eax, eax
push dword [esp + 0x54]
mov dword [esp + 0xc8], eax
push ebx
call fcn.0047c806
mov eax, dword [esp + 0x70]
mov edx, edi
push eax
push eax
push dword [ebp + 8]
xor eax, eax
mov ecx, ebx
push eax
push eax
push 0xffffffffffffffff
call fcn.00491d11
add esp, 0x28
mov edx, dword [esp + 0x60]
mov ecx, esi
call fcn.00469efd
mov eax, dword [esp + 0x68]
xor edi, edi
cmp al, 3
jne 0x497722
push str.DISTINCT
push str.USE_TEMP_B_TREE_FOR__s
push edi
push ebx
call fcn.00469da7
add esp, 0x10
cmp dword [esp + 0xbc], 0
je 0x49776d
cmp dword [esp + 0xc0], 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.00469da7
mov eax, dword [esp + 0x4c]
mov ecx, ebx
push dword [ebp + 8]
mov edx, dword [esp + 0x5c]
push dword [eax]
lea eax, [esp + 0xd4]
push eax
call fcn.00492562
add esp, 0x1c
mov edx, dword [esp + 0xe8]
mov ecx, esi
call fcn.00469efd
xor eax, eax
cmp dword [ebx + 0x24], edi
setg al
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x6c]
test ecx, ecx
je 0x4965be
mov edx, ecx
mov ecx, eax
call fcn.00479b6f
jmp 0x4965ba
xor ecx, ecx
mov dword [esp + 0x30], ecx
test ecx, ecx
je 0x4975c7
mov edx, dword [ecx + 0x48]
mov ecx, dword [ebx]
call fcn.00490c32
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 0x28]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x28], eax
lea ecx, [eax + 1]
mov dword [ebx + 0x28], ecx
xor ecx, ecx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0x1c]
mov ecx, ebx
mov dword [esp + 0x20], eax
call fcn.00485561
mov eax, dword [esp + 0x30]
mov ecx, ebx
mov edx, dword [esp + 0x10]
push dword [eax]
push 0
push dword [eax + 0x1c]
call fcn.00480ce7
mov edx, dword [esp + 0x3c]
add esp, 0xc
test byte [edx + 0x24], 0x20
je 0x49781e
mov ecx, edx
call fcn.004818cf
mov dword [esp + 0x44], eax
jmp 0x497822
mov eax, dword [esp + 0x44]
mov ecx, dword [edx + 8]
test ecx, ecx
je 0x49785a
test byte [ecx + 0x38], 4
jne 0x49784b
movzx edi, word [ecx + 0x30]
cmp di, word [edx + 0x2e]
jge 0x49784b
cmp dword [ecx + 0x24], 0
jne 0x49784b
test eax, eax
je 0x497849
cmp di, word [eax + 0x30]
jge 0x49784b
mov eax, ecx
mov ecx, dword [ecx + 0x14]
test ecx, ecx
jne 0x497829
mov edi, dword [esp + 0x48]
mov dword [esp + 0x44], eax
test eax, eax
je 0x497872
mov ecx, dword [eax + 0x2c]
mov edx, eax
mov dword [esp + 0x20], ecx
mov ecx, ebx
call fcn.004859e8
mov dword [esp + 0x50], eax
push 1
push dword [esp + 0x14]
mov ecx, esi
push dword [esp + 0x28]
push dword [esp + 0x34]
push 0x61
pop edx
call fcn.00469e63
mov eax, dword [esp + 0x60]
add esp, 0x10
test eax, eax
je 0x4978a4
push 0xfffffffffffffff7
push eax
or edx, 0xffffffff
mov ecx, esi
call fcn.0046a2ad
pop ecx
pop ecx
xor eax, eax
mov ecx, esi
push eax
mov eax, dword [esp + 0xb8]
push dword [eax + 8]
push dword [esp + 0x30]
push 0x5d
pop edx
call fcn.00469c0b
add esp, 0xc
xor eax, eax
mov ecx, esi
push eax
push eax
push dword [esp + 0x30]
push 0x75
pop edx
call fcn.00469c0b
add esp, 0xc
cmp byte [ebx + 0xc7], 2
jne 0x4976c5
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x30]
test edx, edx
je 0x497903
test byte [ecx + 0x24], 0x20
je 0x4978ff
mov eax, dword [edx + 0x38]
and al, 3
cmp al, 2
je 0x497903
mov eax, dword [edx]
jmp 0x49790d
xor eax, eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x5c]
cmp dword [esp + 0x40], 0
push eax
mov eax, str._USING_COVERING_INDEX
cmove eax, dword [esp + 0x60]
push eax
push dword [ecx]
xor eax, eax
push str.SCAN_TABLE__s_s_s
push eax
push ebx
call fcn.00469da7
add esp, 0x18
jmp 0x4976c5
mov eax, ecx
jmp 0x4965be
xor eax, eax
inc eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret