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

Disassembly:
sub esp, 0x58
push esi
mov esi, dword [esp + 0x64]
xorps xmm0, xmm0
push edi
movlpd qword [esp + 0x3c], xmm0
mov dword [esp + 0x10], 0
mov eax, dword [esi]
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov byte [esp + 0xb], 0
mov edi, dword [eax]
mov dword [esp + 0x58], edi
mov ecx, dword [edi]
mov dword [esp + 0x18], ecx
cmp byte [ecx + 0x57], 0
jne 0x46c5fb
mov ecx, dword [esp + 0x6c]
push ebx
push ebp
mov ebp, dword [esi + 0x18]
lea ecx, [ecx + ecx*2]
shl ecx, 4
add ebp, ecx
mov dword [esp + 0x14], ecx
lea ecx, [eax + 0x1f0]
mov dword [esp + 0x1c], ecx
mov ebx, dword [ebp]
mov dword [ecx], 0
mov dword [esp + 0x64], ebx
mov eax, dword [ebx + 0xc]
test eax, eax
je 0x46b444
cmp byte [eax], 0xa7
jne 0x46b40b
test byte [eax + 4], 0x20
jne 0x46b40b
push dword [eax + 0x1c]
push ecx
call fcn.004dae60
mov ecx, dword [esp + 0x24]
add esp, 8
mov dword [esp + 0x24], edx
jmp 0x46b456
test dword [eax + 4], 0x810000
je 0x46b430
movlpd qword [esp + 0x58], xmm0
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x24], edx
jmp 0x46b45a
push eax
push ecx
call fcn.004dac70
mov ecx, dword [esp + 0x24]
add esp, 8
mov dword [esp + 0x24], edx
jmp 0x46b456
movlpd qword [esp + 0x58], xmm0
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x30], eax
mov al, byte [ebx]
mov byte [esp + 0x12], al
movzx eax, al
mov dword [esp + 0x54], eax
cmp eax, 0x31
jne 0x46b4b3
push ebx
push edi
call fcn.004a0c40
add esp, 8
test eax, eax
jne 0x46c5f9
test dword [ebx + 4], 0x1000
mov eax, dword [ebx + 0x14]
push eax
push dword [esp + 0x20]
je 0x46b496
call fcn.0046e6e0
jmp 0x46b49b
call fcn.004dabd0
mov ecx, eax
add esp, 8
mov dword [ebp + 0x20], ecx
or ecx, dword [esp + 0x30]
mov dword [ebp + 0x24], edx
or edx, dword [esp + 0x24]
jmp 0x46b565
mov eax, dword [ebx + 0x10]
test eax, eax
je 0x46b4ec
cmp byte [eax], 0xa7
jne 0x46b4d5
test byte [eax + 4], 0x20
jne 0x46b4d5
push dword [eax + 0x1c]
push ecx
call fcn.004dae60
add esp, 8
mov ecx, eax
jmp 0x46b4fd
test dword [eax + 4], 0x810000
jne 0x46b4ec
push eax
push ecx
call fcn.004dac70
add esp, 8
mov ecx, eax
jmp 0x46b4fd
xorps xmm0, xmm0
movlpd qword [esp + 0x58], xmm0
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
mov dword [ebp + 0x20], ecx
mov dword [ebp + 0x24], edx
cmp dword [ebx + 0xc], 0
je 0x46b522
test dword [ebx + 4], 0x41000
jne 0x46b522
cmp dword [ebx + 0x14], 0
jne 0x46b522
or ecx, dword [esp + 0x30]
or edx, dword [esp + 0x24]
jmp 0x46b565
cmp byte [ebx], 0xa7
mov eax, dword [ebx + 4]
jne 0x46b53c
test al, 0x20
jne 0x46b53c
push dword [ebx + 0x1c]
push dword [esp + 0x20]
call fcn.004dae60
jmp 0x46b560
test eax, 0x810000
je 0x46b556
xorps xmm0, xmm0
movlpd qword [esp + 0x58], xmm0
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x58]
jmp 0x46b565
push ebx
push dword [esp + 0x20]
call fcn.004dac70
mov ecx, eax
add esp, 8
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], edx
cmp dword [eax], 0
je 0x46b57f
mov eax, 0x1000
or word [ebp + 0xa], ax
mov eax, dword [ebx + 4]
mov dword [esp + 0x4c], eax
test al, 3
je 0x46b65d
push dword [ebx + 0x24]
push dword [esp + 0x20]
call fcn.004dae60
mov ecx, dword [esp + 0x30]
add esp, 8
test byte [esp + 0x4c], 1
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x58], eax
je 0x46b60e
or edx, dword [esp + 0x34]
or ecx, eax
add eax, 0xffffffff
mov dword [esp + 0x50], ecx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x34]
adc eax, 0xffffffff
mov dword [esp + 0x28], ecx
mov dword [esp + 0x4c], eax
mov eax, edx
shrd dword [esp + 0x50], eax, 1
mov dword [esp + 0x2c], edx
shr eax, 1
cmp eax, dword [esp + 0x34]
jb 0x46b66d
ja 0x46b63d
mov eax, dword [esp + 0x50]
cmp eax, dword [esp + 0x58]
jb 0x46b66d
push str.ON_clause_references_tables_to_its_right
push edi
call fcn.0049fe60
add esp, 8
pop ebp
pop ebx
pop edi
pop esi
add esp, 0x58
ret
mov eax, edx
mov dword [esp + 0x50], ecx
shrd dword [esp + 0x50], eax, 1
shr eax, 1
cmp eax, dword [esp + 0x34]
jb 0x46b65d
ja 0x46b62e
mov eax, dword [esp + 0x50]
cmp eax, dword [esp + 0x58]
jb 0x46b65d
mov eax, dword [esp + 0x6c]
cmp dword [eax], 0
jle 0x46b653
test byte [eax + 0x2c], 0x40
je 0x46b653
push str.ON_clause_references_tables_to_its_right
push edi
call fcn.0049fe60
add esp, 8
pop ebp
pop ebx
pop edi
pop esi
add esp, 0x58
ret
mov eax, dword [esp + 0x4c]
and eax, 0xfffffffd
mov dword [ebx + 4], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x44], eax
xor eax, eax
mov dword [ebp + 0x28], ecx
mov word [ebp + 0xc], ax
mov al, byte [esp + 0x12]
mov dword [ebp + 0x2c], edx
mov dword [ebp + 0x14], 0xffffffff
mov dword [ebp + 0x10], 0xffffffff
cmp al, 0x31
je 0x46bca3
cmp al, 0x35
jb 0x46b69f
cmp al, 0x39
jbe 0x46bca3
cmp al, 0x32
je 0x46bca3
cmp al, 0x2d
je 0x46bca3
mov al, byte [ebx]
cmp al, 0x30
jne 0x46b863
cmp byte [esi + 8], 0x2c
jne 0x46c08f
mov eax, dword [ebx + 0x14]
xor esi, esi
add eax, 8
mov dword [esp + 0x40], esi
mov dword [esp + 0x58], eax
jmp 0x46b6d9
mov esi, dword [esp + 0x40]
mov eax, dword [eax]
mov ebp, dword [esp + 0x20]
test eax, eax
je 0x46b6f7
push 0
push 0
push eax
push ebp
call fcn.0046d670
add esp, 0x10
mov dword [esp + 0x50], eax
jmp 0x46b6ff
mov dword [esp + 0x50], 0
mov eax, dword [ebx + 0xc]
test eax, eax
je 0x46b718
push 0
push 0
push eax
push ebp
call fcn.0046d670
add esp, 0x10
mov ebp, eax
jmp 0x46b71a
xor ebp, ebp
mov al, byte [esi + 0x52e430]
push 0
push 0x34
push dword [edi]
mov byte [esp + 0x1e], al
call fcn.0049db10
mov esi, eax
add esp, 0xc
test esi, esi
je 0x46b7c9
push 0x34
push 0
push esi
call fcn.004fd610
mov al, byte [esp + 0x1e]
add esp, 0xc
mov ecx, dword [esp + 0x50]
mov byte [esi], al
mov eax, 0xffffffff
mov word [esi + 0x22], ax
test ecx, ecx
je 0x46b774
mov dword [esi + 0x10], ecx
mov eax, dword [ecx + 4]
and eax, 0x400208
or dword [esi + 4], eax
mov eax, dword [ecx + 0x18]
inc eax
jmp 0x46b779
mov eax, 1
mov dword [esi + 0x18], eax
test ebp, ebp
je 0x46b79a
mov dword [esi + 0xc], ebp
mov eax, dword [ebp + 4]
and eax, 0x400208
or dword [esi + 4], eax
mov eax, dword [ebp + 0x18]
cmp eax, dword [esi + 0x18]
jl 0x46b79a
inc eax
mov dword [esi + 0x18], eax
mov eax, dword [edi]
mov eax, dword [eax + 0x84]
cmp dword [esi + 0x18], eax
jle 0x46b7b6
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push edi
call fcn.0049fe60
add esp, 0xc
mov eax, dword [ebx + 4]
and eax, 3
je 0x46b7eb
or dword [esi + 4], eax
mov eax, dword [ebx + 0x24]
mov dword [esi + 0x24], eax
jmp 0x46b7eb
test ebp, ebp
je 0x46b7d8
push ebp
push dword [edi]
call fcn.004a3d70
add esp, 8
mov eax, dword [esp + 0x50]
test eax, eax
je 0x46b7eb
push eax
push dword [edi]
call fcn.004a3d70
add esp, 8
mov ebp, dword [esp + 0x70]
push 3
push esi
push ebp
call fcn.004eb5d0
mov esi, eax
push esi
push ebp
push dword [esp + 0x80]
call fcn.0046b370
mov ecx, dword [ebp + 0x18]
lea edx, [esi + esi*2]
mov eax, dword [esp + 0x2c]
add edx, edx
mov esi, dword [esp + 0x8c]
add esp, 0x18
mov dword [ecx + edx*8 + 0x10], esi
lea ebp, [eax + ecx]
mov esi, dword [esp + 0x70]
mov ecx, dword [esi + 0x18]
mov ax, word [eax + ecx + 8]
mov word [ecx + edx*8 + 8], ax
mov eax, dword [esi + 0x18]
mov ecx, dword [esp + 0x14]
inc byte [ecx + eax + 0xe]
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x58]
inc ecx
add eax, 0x14
mov dword [esp + 0x40], ecx
mov dword [esp + 0x58], eax
cmp ecx, 2
jl 0x46b6d5
jmp 0x46c08f
cmp al, 0x2b
jne 0x46b884
push dword [esp + 0x74]
push esi
push dword [esp + 0x74]
call fcn.0046c610
mov ebp, dword [esi + 0x18]
add esp, 0xc
add ebp, dword [esp + 0x14]
jmp 0x46c08f
cmp al, 0x33
jne 0x46b992
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x54], eax
cmp byte [eax], 0xa7
jne 0x46c08f
cmp word [eax + 0x20], 0
jl 0x46c08f
test byte [ebx + 4], 1
jne 0x46c08f
push 0
push 0x34
push dword [esp + 0x28]
call fcn.0049db10
add esp, 0xc
mov dword [esp + 0x58], eax
test eax, eax
je 0x46b8eb
push 0x34
push 0
push eax
call fcn.004fd610
mov eax, dword [esp + 0x64]
add esp, 0xc
or ecx, 0xffffffff
mov byte [eax], 0x79
mov word [eax + 0x22], cx
mov dword [eax + 0x18], 1
mov eax, dword [esp + 0x54]
test eax, eax
je 0x46b906
push 0
push 0
push eax
push dword [esp + 0x2c]
call fcn.0046d670
add esp, 0x10
jmp 0x46b908
xor eax, eax
push dword [esp + 0x58]
push eax
push 0x36
push edi
call fcn.004b28b0
push 0x83
push eax
push esi
call fcn.004eb5d0
mov edx, eax
add esp, 0x1c
test edx, edx
je 0x46c08f
mov ebp, dword [esp + 0x70]
lea esi, [edx + edx*2]
mov ecx, dword [esp + 0x54]
push dword [esp + 0x74]
shl esi, 4
add esi, dword [ebp + 0x18]
push edx
push ebp
mov dword [esi + 0x20], 0
mov dword [esi + 0x24], 0
mov eax, dword [ecx + 0x1c]
mov dword [esi + 0x14], eax
movsx eax, word [ecx + 0x20]
mov dword [esi + 0x18], eax
mov eax, 4
mov word [esi + 0xc], ax
call fcn.0047fdd0
mov ebp, dword [ebp + 0x18]
add esp, 0xc
add ebp, dword [esp + 0x14]
or word [ebp + 0xa], 8
mov eax, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x2c]
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], ecx
mov esi, dword [esp + 0x70]
jmp 0x46c08f
cmp al, 0xac
jne 0x46c08f
cmp byte [esi + 8], 0x2c
jne 0x46c08f
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x20]
push eax
push ebx
push edi
call fcn.00477730
add esp, 0x14
test eax, eax
je 0x46c08f
mov eax, dword [ebx + 0x14]
mov ecx, dword [esp + 0x18]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x54], eax
test ecx, ecx
je 0x46b9f2
push 0
push 0
push ecx
push dword [esp + 0x2c]
call fcn.0046d670
mov ecx, dword [esp + 0x28]
add esp, 0x10
mov dword [esp + 0x34], eax
jmp 0x46b9fa
mov dword [esp + 0x34], 0
cmp dword [esp + 0x40], 0
je 0x46ba65
mov eax, dword [edi]
cmp byte [eax + 0x57], 0
jne 0x46ba65
mov eax, 0x400
or word [ebp + 0xa], ax
xor ebp, ebp
mov eax, dword [ecx + 8]
mov dword [esp + 0x58], eax
mov cl, byte [eax]
test cl, cl
je 0x46ba65
mov esi, dword [esp + 0x18]
mov ebx, eax
mov edi, dword [esp + 0x34]
nop dword [eax + eax]
movzx edx, cl
mov al, byte [edx + 0x52e778]
and al, 0x20
not al
and al, cl
mov byte [ebx], al
mov ecx, dword [edi + 8]
mov al, byte [edx + 0x52e638]
mov byte [ecx + ebp], al
inc ebp
mov ebx, dword [esi + 8]
add ebx, ebp
mov cl, byte [ebx]
test cl, cl
jne 0x46ba30
mov edi, dword [esp + 0x60]
mov ebx, dword [esp + 0x64]
mov esi, dword [esp + 0x70]
mov ecx, dword [esp + 0x20]
cmp byte [ecx + 0x57], 0
jne 0x46bac2
mov eax, dword [esp + 0x34]
mov edx, dword [eax + 8]
test edx, edx
jne 0x46ba7e
xor ecx, ecx
jmp 0x46ba92
mov ecx, edx
lea ebp, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x46ba83
sub ecx, ebp
and ecx, 0x3fffffff
mov al, byte [edx + ecx - 1]
add edx, ecx
cmp dword [esp + 0x40], 0
mov ecx, dword [esp + 0x3c]
je 0x46bab3
xor ebp, ebp
cmp al, 0x40
movzx eax, al
cmove ecx, ebp
mov al, byte [eax + 0x52e638]
inc al
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x20]
mov byte [edx - 1], al
jmp 0x46baca
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x50], eax
cmp dword [esp + 0x40], 0
mov eax, 0x52e74c
mov ebp, str.NOCASE
cmove ebp, eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x64], ebp
test eax, eax
je 0x46baf8
push 0
push 0
push eax
push ecx
call fcn.0046d670
add esp, 0x10
jmp 0x46bafa
xor eax, eax
push ebp
push eax
push edi
call fcn.004a0320
push 0
push 0x34
push dword [edi]
mov dword [esp + 0x70], eax
call fcn.0049db10
mov ebp, eax
add esp, 0x18
test ebp, ebp
je 0x46bbab
push 0x34
push 0
push ebp
call fcn.004fd610
mov ecx, dword [esp + 0x24]
or eax, 0xffffffff
add esp, 0xc
mov byte [ebp], 0x39
mov word [ebp + 0x22], ax
test ecx, ecx
je 0x46bb52
mov dword [ebp + 0x10], ecx
mov eax, dword [ecx + 4]
and eax, 0x400208
or dword [ebp + 4], eax
mov eax, dword [ecx + 0x18]
inc eax
jmp 0x46bb57
mov eax, 1
mov dword [ebp + 0x18], eax
mov ecx, dword [esp + 0x58]
test ecx, ecx
je 0x46bb7c
mov dword [ebp + 0xc], ecx
mov eax, dword [ecx + 4]
and eax, 0x400208
or dword [ebp + 4], eax
mov eax, dword [ecx + 0x18]
cmp eax, dword [ebp + 0x18]
jl 0x46bb7c
inc eax
mov dword [ebp + 0x18], eax
mov eax, dword [edi]
mov eax, dword [eax + 0x84]
cmp dword [ebp + 0x18], eax
jle 0x46bb98
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push edi
call fcn.0049fe60
add esp, 0xc
mov eax, dword [ebx + 4]
and eax, 3
je 0x46bbd1
or dword [ebp + 4], eax
mov eax, dword [ebx + 0x24]
mov dword [ebp + 0x24], eax
jmp 0x46bbd1
mov eax, dword [esp + 0x58]
test eax, eax
je 0x46bbbe
push eax
push dword [edi]
call fcn.004a3d70
add esp, 8
mov eax, dword [esp + 0x18]
test eax, eax
je 0x46bbd1
push eax
push dword [edi]
call fcn.004a3d70
add esp, 8
push 0x103
push ebp
push esi
call fcn.004eb5d0
mov dword [esp + 0x64], eax
add esp, 0xc
mov eax, dword [esp + 0x54]
test eax, eax
je 0x46bbff
push 0
push 0
push eax
push dword [esp + 0x2c]
call fcn.0046d670
add esp, 0x10
jmp 0x46bc01
xor eax, eax
push dword [esp + 0x34]
push dword [esp + 0x68]
push eax
push edi
call fcn.004a0320
add esp, 0xc
push eax
push 0x38
push edi
call fcn.004b28b0
mov ecx, eax
add esp, 0x10
test ecx, ecx
je 0x46bc36
mov eax, dword [ebx + 4]
and eax, 3
je 0x46bc36
or dword [ecx + 4], eax
mov eax, dword [ebx + 0x24]
mov dword [ecx + 0x24], eax
push 0x103
push ecx
push esi
call fcn.004eb5d0
push dword [esp + 0x64]
mov ebp, eax
push esi
push dword [esp + 0x80]
mov dword [esp + 0x7c], ebp
call fcn.0046b370
push ebp
push esi
push dword [esp + 0x8c]
call fcn.0046b370
mov ebp, dword [esi + 0x18]
add esp, 0x24
add ebp, dword [esp + 0x14]
cmp dword [esp + 0x50], 0
je 0x46c08f
push dword [esp + 0x74]
push dword [esp + 0x5c]
push esi
call fcn.0047fdd0
push dword [esp + 0x80]
push dword [esp + 0x74]
push esi
call fcn.0047fdd0
add esp, 0x18
jmp 0x46c08f
mov edx, dword [ebx + 0xc]
mov dword [esp + 0x40], edx
test edx, edx
je 0x46bcc4
nop
test dword [edx + 4], 0x2000
je 0x46bcc0
mov edx, dword [edx + 0xc]
test edx, edx
jne 0x46bcb0
mov dword [esp + 0x40], edx
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x50], eax
test eax, eax
je 0x46bce4
nop
test dword [eax + 4], 0x2000
je 0x46bce0
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x46bcd0
mov dword [esp + 0x50], eax
mov ecx, dword [esp + 0x30]
mov eax, dword [ebp + 0x24]
and ecx, dword [ebp + 0x20]
and eax, dword [esp + 0x24]
or ecx, eax
mov dword [esp + 0x3c], 0x3fff
je 0x46bd06
mov dword [esp + 0x3c], 0x800
mov eax, dword [ebp + 0x1c]
test eax, eax
jle 0x46bd1b
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x14]
mov edx, dword [eax + ecx*4 - 0xc]
mov dword [esp + 0x40], edx
push dword [esp + 0x54]
lea eax, [esp + 0x38]
push edx
push eax
push dword [esp + 0x78]
call fcn.0046e1f0
mov edx, dword [esp + 0x64]
add esp, 0x10
test eax, eax
je 0x46bd59
mov eax, dword [esp + 0x34]
mov dword [ebp + 0x14], eax
mov eax, dword [esp + 0x38]
push edx
mov dword [ebp + 0x18], eax
call fcn.00483230
add esp, 4
and ax, word [esp + 0x3c]
mov word [ebp + 0xc], ax
cmp byte [esp + 0x12], 0x2d
mov eax, 0x800
jne 0x46bd69
or word [ebp + 0xa], ax
mov eax, dword [esp + 0x50]
test eax, eax
je 0x46c043
push edx
push eax
lea eax, [esp + 0x3c]
push eax
push dword [esp + 0x78]
call fcn.0046e1f0
add esp, 0x10
test eax, eax
je 0x46c043
mov eax, dword [esp + 0x50]
test byte [eax + 4], 0x20
jne 0x46c043
cmp dword [ebp + 0x14], 0
mov dword [esp + 0x50], 0
jl 0x46bf34
mov ebp, dword [esp + 0x20]
push 0
push 0
push ebx
push ebp
call fcn.0046d670
add esp, 0x10
mov dword [esp + 0x18], eax
cmp byte [ebp + 0x57], 0
je 0x46bde6
test eax, eax
je 0x46c5f9
push eax
push ebp
call fcn.004a3d70
add esp, 8
pop ebp
pop ebx
pop edi
pop esi
add esp, 0x58
ret
push 3
push eax
push esi
call fcn.004eb5d0
add esp, 0xc
test eax, eax
je 0x46c5f9
push dword [esp + 0x74]
lea ebp, [eax + eax*2]
shl ebp, 4
add ebp, dword [esi + 0x18]
push eax
push esi
mov dword [esp + 0x60], ebp
call fcn.0047fdd0
add esp, 0xc
cmp byte [esp + 0x12], 0x2d
jne 0x46be25
mov eax, 0x800
or word [ebp + 0xa], ax
mov ebp, dword [esi + 0x18]
add ebp, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
or word [ebp + 0xa], 8
mov eax, dword [edi]
test byte [eax + 0x50], 0x80
jne 0x46bf0c
mov al, byte [edx]
cmp al, 0x35
je 0x46be4f
cmp al, 0x2d
jne 0x46bf0c
test byte [edx + 4], 1
jne 0x46bf0c
push dword [edx + 0xc]
call fcn.004a04d0
mov byte [esp + 0x16], al
mov eax, dword [esp + 0x1c]
push dword [eax + 0x10]
call fcn.004a04d0
mov cl, al
add esp, 8
mov al, byte [esp + 0x12]
cmp al, cl
je 0x46be8f
cmp al, 0x43
jl 0x46bf08
cmp cl, 0x43
jl 0x46bf08
push dword [esp + 0x18]
push edi
call fcn.004a3af0
add esp, 8
test eax, eax
je 0x46befb
cmp dword [eax + 0xc], fcn.00460d20
je 0x46befb
mov eax, dword [esp + 0x18]
push dword [eax + 0xc]
mov ecx, dword [eax + 0x10]
push edi
mov dword [esp + 0x6c], ecx
call fcn.004a36a0
add esp, 8
mov dword [esp + 0x58], eax
test eax, eax
jne 0x46bed1
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov dword [esp + 0x58], eax
push dword [esp + 0x64]
push edi
call fcn.004a36a0
add esp, 8
test eax, eax
jne 0x46bee7
mov eax, dword [edi]
mov eax, dword [eax + 8]
push dword [eax]
mov eax, dword [esp + 0x5c]
push dword [eax]
call fcn.004c1f20
add esp, 8
test eax, eax
jne 0x46bf08
mov eax, 0x800
or word [ebp + 0xc], ax
mov dword [esp + 0x50], eax
mov edx, dword [esp + 0x18]
mov ecx, dword [edx + 0xc]
cmp byte [ecx], 0xb1
je 0x46bfc4
mov eax, dword [edx + 0x10]
mov dword [esp + 0x64], eax
cmp byte [eax], 0xb1
je 0x46bfc4
test dword [ecx + 4], 0x200
je 0x46bf40
push ecx
jmp 0x46bf68
mov edx, ebx
mov dword [esp + 0x54], ebp
mov dword [esp + 0x18], edx
jmp 0x46bf0c
test eax, eax
je 0x46bf50
test dword [eax + 4], 0x200
je 0x46bf50
push eax
jmp 0x46bf68
push ecx
push edi
call fcn.004a36a0
mov edx, eax
add esp, 8
mov dword [esp + 0x40], edx
test edx, edx
jne 0x46bf75
push dword [esp + 0x64]
push edi
call fcn.004a36a0
add esp, 8
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x64], ecx
test dword [eax + 4], 0x200
je 0x46bf8f
push eax
jmp 0x46bfb1
test ecx, ecx
je 0x46bf9f
test dword [ecx + 4], 0x200
je 0x46bf9f
push ecx
jmp 0x46bfb1
push eax
push edi
call fcn.004a36a0
add esp, 8
test eax, eax
jne 0x46bfba
push dword [esp + 0x64]
push edi
call fcn.004a36a0
add esp, 8
mov edx, dword [esp + 0x18]
cmp dword [esp + 0x40], eax
je 0x46bfcb
xor dword [edx + 4], 0x400
mov eax, dword [edx + 0xc]
mov ecx, dword [edx + 0x10]
mov dword [edx + 0x10], eax
mov al, byte [edx]
mov dword [edx + 0xc], ecx
cmp al, 0x36
jb 0x46bfe5
sub al, 0x36
xor al, 2
add al, 0x36
mov byte [edx], al
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x4c]
or dword [esp + 0x24], esi
mov dword [ecx + 0x14], eax
mov eax, dword [esp + 0x38]
mov dword [ecx + 0x18], eax
mov eax, dword [esp + 0x30]
or eax, dword [esp + 0x44]
mov dword [ecx + 0x20], eax
mov eax, dword [esp + 0x24]
mov dword [ecx + 0x24], eax
mov eax, dword [esp + 0x28]
mov dword [ecx + 0x28], eax
mov eax, dword [esp + 0x2c]
mov dword [ecx + 0x2c], eax
movzx eax, byte [edx]
push eax
call fcn.00483230
mov ecx, dword [esp + 0x58]
add esp, 4
add ax, word [esp + 0x50]
and ax, word [esp + 0x3c]
mov esi, dword [esp + 0x70]
mov word [ecx + 0xc], ax
jmp 0x46c08f
cmp byte [esp + 0x12], 0x32
jne 0x46c08f
mov eax, dword [ebx + 4]
mov dword [esp + 0x64], eax
test al, 1
jne 0x46c08f
push dword [esp + 0x40]
call fcn.004a0b90
add esp, 4
test eax, eax
jne 0x46c08f
mov eax, dword [esp + 0x64]
or eax, 0x20000000
mov byte [ebx], 0xaa
mov dword [ebx + 4], eax
xor eax, eax
mov dword [ebx + 8], str.false
mov dword [ebp + 0x28], 0
mov dword [ebp + 0x2c], 0
mov word [ebp + 0xc], ax
mov ah, byte [ebx]
mov byte [esp + 0x12], ah
cmp ah, 0x35
je 0x46c0a3
cmp ah, 0x2d
jne 0x46c271
mov ecx, dword [ebx + 0xc]
mov al, byte [ecx]
cmp al, 0xb0
jne 0x46c0af
mov al, byte [ecx + 2]
cmp al, 0xb1
jne 0x46c0b8
mov ecx, dword [ecx + 0x14]
jmp 0x46c0c6
cmp al, 0x8a
jne 0x46c271
mov eax, dword [ecx + 0x14]
mov ecx, dword [eax + 0x1c]
mov ecx, dword [ecx]
mov dword [esp + 0x50], ecx
cmp ecx, 1
jle 0x46c271
mov edx, dword [ebx + 0x10]
mov al, byte [edx]
cmp al, 0xb0
jne 0x46c0e1
mov al, byte [edx + 2]
cmp al, 0xb1
jne 0x46c0ea
mov eax, dword [edx + 0x14]
jmp 0x46c0f8
cmp al, 0x8a
jne 0x46c271
mov eax, dword [edx + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], ecx
jne 0x46c271
mov eax, dword [ebx + 0xc]
test dword [eax + 4], 0x1000
je 0x46c119
test dword [edx + 4], 0x1000
jne 0x46c271
cmp byte [esi + 8], 0x2c
jne 0x46c271
xor eax, eax
mov dword [esp + 0x54], eax
nop dword [eax]
push ecx
push eax
push dword [ebx + 0xc]
push edi
call fcn.004a3e10
push dword [esp + 0x60]
mov ebp, eax
push dword [esp + 0x68]
push dword [ebx + 0x10]
push edi
call fcn.004a3e10
push 0
mov dword [esp + 0x7c], eax
mov al, byte [ebx]
push 0x34
push dword [edi]
mov byte [esp + 0x3f], al
call fcn.0049db10
mov esi, eax
add esp, 0x2c
test esi, esi
je 0x46c1fd
push 0x34
push 0
push esi
call fcn.004fd610
mov al, byte [esp + 0x1f]
add esp, 0xc
mov ecx, dword [esp + 0x58]
mov byte [esi], al
mov eax, 0xffffffff
mov word [esi + 0x22], ax
test ecx, ecx
je 0x46c1a8
mov dword [esi + 0x10], ecx
mov eax, dword [ecx + 4]
and eax, 0x400208
or dword [esi + 4], eax
mov eax, dword [ecx + 0x18]
inc eax
jmp 0x46c1ad
mov eax, 1
mov dword [esi + 0x18], eax
test ebp, ebp
je 0x46c1ce
mov dword [esi + 0xc], ebp
mov eax, dword [ebp + 4]
and eax, 0x400208
or dword [esi + 4], eax
mov eax, dword [ebp + 0x18]
cmp eax, dword [esi + 0x18]
jl 0x46c1ce
inc eax
mov dword [esi + 0x18], eax
mov eax, dword [edi]
mov eax, dword [eax + 0x84]
cmp dword [esi + 0x18], eax
jle 0x46c1ea
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push edi
call fcn.0049fe60
add esp, 0xc
mov eax, dword [ebx + 4]
and eax, 3
je 0x46c21f
or dword [esi + 4], eax
mov eax, dword [ebx + 0x24]
mov dword [esi + 0x24], eax
jmp 0x46c21f
test ebp, ebp
je 0x46c20c
push ebp
push dword [edi]
call fcn.004a3d70
add esp, 8
mov eax, dword [esp + 0x58]
test eax, eax
je 0x46c21f
push eax
push dword [edi]
call fcn.004a3d70
add esp, 8
push 0x8001
push esi
mov esi, dword [esp + 0x78]
push esi
call fcn.004eb5d0
push eax
push esi
push dword [esp + 0x80]
call fcn.0046b370
mov eax, dword [esp + 0x6c]
add esp, 0x18
mov ecx, dword [esp + 0x50]
inc eax
mov dword [esp + 0x54], eax
cmp eax, ecx
jl 0x46c130
mov eax, dword [esi + 0x18]
mov ecx, 0x2000
mov edx, dword [esp + 0x14]
or word [eax + edx + 0xa], 6
mov word [eax + edx + 0xc], cx
jmp 0x46c5e6
cmp byte [esp + 0x12], 0x31
jne 0x46c35a
cmp dword [ebp + 0x1c], 0
jne 0x46c35a
mov eax, dword [ebx + 0xc]
cmp byte [eax], 0xb1
jne 0x46c35a
test dword [ebx + 4], 0x1000
je 0x46c35a
mov eax, dword [ebx + 0x14]
cmp dword [eax + 0x34], 0
je 0x46c2b5
test dword [eax + 4], 0x200
je 0x46c35a
cmp dword [eax + 0x44], 0
jne 0x46c35a
cmp byte [esi + 8], 0x2c
jne 0x46c5e2
mov edx, dword [esp + 0x14]
xor ebp, ebp
nop
mov ecx, dword [ebx + 0xc]
mov al, byte [ecx]
cmp al, 0xb0
jne 0x46c2dc
mov al, byte [ecx + 2]
cmp al, 0xb1
jne 0x46c2e7
mov eax, dword [ecx + 0x14]
mov eax, dword [eax]
jmp 0x46c2fa
cmp al, 0x8a
jne 0x46c2f5
mov eax, dword [ecx + 0x14]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax]
jmp 0x46c2fa
mov eax, 1
cmp ebp, eax
jge 0x46c5e6
push 0x8002
push ebx
push esi
call fcn.004eb5d0
mov edi, dword [esp + 0x7c]
inc ebp
push eax
push edi
push dword [esp + 0x80]
mov ecx, dword [edi + 0x18]
lea esi, [eax + eax*2]
add esi, esi
mov dword [ecx + esi*8 + 0x1c], ebp
call fcn.0046b370
mov eax, dword [edi + 0x18]
add esp, 0x18
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x14]
mov dword [eax + esi*8 + 0x10], ecx
mov ecx, dword [edi + 0x18]
mov ax, word [edx + ecx + 8]
mov word [ecx + esi*8 + 8], ax
mov esi, edi
mov eax, dword [esi + 0x18]
inc byte [edx + eax + 0xe]
jmp 0x46c2d0
cmp byte [esi + 8], 0x2c
jne 0x46c5e2
lea eax, [esp + 0x58]
mov dword [esp + 0x58], 0
push eax
lea eax, [esp + 0x58]
mov dword [esp + 0x58], 0
push eax
lea eax, [esp + 0x1b]
push eax
push ebx
push dword [esp + 0x30]
call fcn.00476f40
add esp, 0x14
test eax, eax
jle 0x46c5e2
mov cl, byte [esp + 0x13]
mov esi, dword [esp + 0x54]
mov ebp, dword [esp + 0x58]
mov byte [esp + 0x13], cl
mov dword [esp + 0x50], esi
nop dword [eax]
dec eax
mov dword [esp + 0x64], eax
test ebp, ebp
je 0x46c409
cmp byte [ebp], 0xa7
jne 0x46c3da
test byte [ebp + 4], 0x20
jne 0x46c3da
push dword [ebp + 0x1c]
push dword [esp + 0x20]
call fcn.004dae60
add esp, 8
mov dword [esp + 0x2c], edx
jmp 0x46c41e
test dword [ebp + 4], 0x810000
je 0x46c3f6
xorps xmm0, xmm0
movlpd qword [esp + 0x58], xmm0
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x2c], ecx
jmp 0x46c41a
push ebp
push dword [esp + 0x20]
call fcn.004dac70
add esp, 8
mov dword [esp + 0x2c], edx
jmp 0x46c41e
xorps xmm0, xmm0
movlpd qword [esp + 0x58], xmm0
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x30], eax
test esi, esi
je 0x46c45a
cmp byte [esi], 0xa7
jne 0x46c442
test byte [esi + 4], 0x20
jne 0x46c442
push dword [esi + 0x1c]
push dword [esp + 0x20]
call fcn.004dae60
add esp, 8
jmp 0x46c46b
test dword [esi + 4], 0x810000
jne 0x46c45a
push esi
push dword [esp + 0x20]
call fcn.004dac70
add esp, 8
jmp 0x46c46b
xorps xmm0, xmm0
movlpd qword [esp + 0x58], xmm0
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
and eax, dword [esp + 0x30]
and edx, dword [esp + 0x2c]
or eax, edx
jne 0x46c5c2
test ebp, ebp
je 0x46c490
push eax
push eax
push ebp
push dword [esp + 0x2c]
call fcn.0046d670
add esp, 0x10
jmp 0x46c492
xor eax, eax
push 0
push 0x34
push dword [edi]
mov dword [esp + 0x60], eax
call fcn.0049db10
mov esi, eax
add esp, 0xc
test esi, esi
je 0x46c502
push 0x34
push 0
push esi
call fcn.004fd610
mov ecx, dword [esp + 0x60]
or eax, 0xffffffff
add esp, 0xc
mov byte [esi], 0x2e
mov word [esi + 0x22], ax
test ecx, ecx
je 0x46c4dd
mov dword [esi + 0x10], ecx
mov eax, dword [ecx + 4]
and eax, 0x400208
or dword [esi + 4], eax
mov ecx, dword [ecx + 0x18]
inc ecx
jmp 0x46c4e2
mov ecx, 1
mov dword [esi + 0x18], ecx
mov eax, dword [edi]
mov eax, dword [eax + 0x84]
cmp ecx, eax
jle 0x46c515
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push edi
call fcn.0049fe60
add esp, 0xc
jmp 0x46c515
mov eax, dword [esp + 0x54]
test eax, eax
je 0x46c515
push eax
push dword [edi]
call fcn.004a3d70
add esp, 8
test byte [ebx + 4], 1
je 0x46c529
test esi, esi
je 0x46c529
or dword [esi + 4], 1
mov eax, dword [ebx + 0x24]
mov dword [esi + 0x24], eax
push 3
push esi
mov esi, dword [esp + 0x78]
push esi
call fcn.004eb5d0
mov esi, dword [esi + 0x18]
add esp, 0xc
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x74]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x30]
shl edx, 4
add esi, edx
mov dword [esi + 0x20], eax
mov eax, dword [esp + 0x2c]
mov dword [esi + 0x24], eax
mov eax, dword [ecx + 0x1c]
mov dword [esi + 0x14], eax
movsx eax, word [ecx + 0x20]
mov ecx, dword [esp + 0x70]
mov dword [esi + 0x18], eax
mov eax, 0x40
mov word [esi + 0xc], ax
mov al, byte [esp + 0x13]
mov byte [esi + 0xf], al
mov eax, dword [ecx + 0x18]
mov dword [eax + edx + 0x10], edi
mov ecx, dword [ecx + 0x18]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x60]
mov ax, word [eax + ecx + 8]
mov word [ecx + edx + 8], ax
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x14]
mov eax, dword [ecx + 0x18]
inc byte [edx + eax + 0xe]
mov ecx, dword [ecx + 0x18]
add ecx, edx
or word [ecx + 0xa], 8
mov eax, dword [ecx + 0x28]
mov ecx, dword [ecx + 0x2c]
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], ecx
mov esi, dword [esp + 0x50]
jmp 0x46c5c6
mov edx, dword [esp + 0x14]
mov eax, esi
mov esi, ebp
mov ebp, eax
mov dword [esp + 0x50], esi
mov eax, dword [esp + 0x64]
test eax, eax
jg 0x46c3b0
mov esi, dword [esp + 0x70]
jmp 0x46c5e6
mov edx, dword [esp + 0x14]
mov eax, dword [esi + 0x18]
mov ecx, dword [esp + 0x44]
add eax, edx
or dword [eax + 0x20], ecx
mov ecx, dword [esp + 0x4c]
or dword [eax + 0x24], ecx
pop ebp
pop ebx
pop edi
pop esi
add esp, 0x58
ret