Function at 0x455390
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 0x45661b
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 0x455464
cmp byte [eax], 0xa7
jne 0x45542b
test byte [eax + 4], 0x20
jne 0x45542b
push dword [eax + 0x1c]
push ecx
call fcn.004c4e60
mov ecx, dword [esp + 0x24]
add esp, 8
mov dword [esp + 0x24], edx
jmp 0x455476
test dword [eax + 4], 0x810000
je 0x455450
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 0x45547a
push eax
push ecx
call fcn.004c4c70
mov ecx, dword [esp + 0x24]
add esp, 8
mov dword [esp + 0x24], edx
jmp 0x455476
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 0x4554d3
push ebx
push edi
call fcn.0048ac40
add esp, 8
test eax, eax
jne 0x456619
test dword [ebx + 4], 0x1000
mov eax, dword [ebx + 0x14]
push eax
push dword [esp + 0x20]
je 0x4554b6
call fcn.00458700
jmp 0x4554bb
call fcn.004c4bd0
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 0x455585
mov eax, dword [ebx + 0x10]
test eax, eax
je 0x45550c
cmp byte [eax], 0xa7
jne 0x4554f5
test byte [eax + 4], 0x20
jne 0x4554f5
push dword [eax + 0x1c]
push ecx
call fcn.004c4e60
add esp, 8
mov ecx, eax
jmp 0x45551d
test dword [eax + 4], 0x810000
jne 0x45550c
push eax
push ecx
call fcn.004c4c70
add esp, 8
mov ecx, eax
jmp 0x45551d
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 0x455542
test dword [ebx + 4], 0x41000
jne 0x455542
cmp dword [ebx + 0x14], 0
jne 0x455542
or ecx, dword [esp + 0x30]
or edx, dword [esp + 0x24]
jmp 0x455585
cmp byte [ebx], 0xa7
mov eax, dword [ebx + 4]
jne 0x45555c
test al, 0x20
jne 0x45555c
push dword [ebx + 0x1c]
push dword [esp + 0x20]
call fcn.004c4e60
jmp 0x455580
test eax, 0x810000
je 0x455576
xorps xmm0, xmm0
movlpd qword [esp + 0x58], xmm0
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x58]
jmp 0x455585
push ebx
push dword [esp + 0x20]
call fcn.004c4c70
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 0x45559f
mov eax, 0x1000
or word [ebp + 0xa], ax
mov eax, dword [ebx + 4]
mov dword [esp + 0x4c], eax
test al, 3
je 0x45567d
push dword [ebx + 0x24]
push dword [esp + 0x20]
call fcn.004c4e60
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 0x45562e
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 0x45568d
ja 0x45565d
mov eax, dword [esp + 0x50]
cmp eax, dword [esp + 0x58]
jb 0x45568d
push str.ON_clause_references_tables_to_its_right
push edi
call fcn.00489e60
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 0x45567d
ja 0x45564e
mov eax, dword [esp + 0x50]
cmp eax, dword [esp + 0x58]
jb 0x45567d
mov eax, dword [esp + 0x6c]
cmp dword [eax], 0
jle 0x455673
test byte [eax + 0x2c], 0x40
je 0x455673
push str.ON_clause_references_tables_to_its_right
push edi
call fcn.00489e60
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 0x455cc3
cmp al, 0x35
jb 0x4556bf
cmp al, 0x39
jbe 0x455cc3
cmp al, 0x32
je 0x455cc3
cmp al, 0x2d
je 0x455cc3
mov al, byte [ebx]
cmp al, 0x30
jne 0x455883
cmp byte [esi + 8], 0x2c
jne 0x4560af
mov eax, dword [ebx + 0x14]
xor esi, esi
add eax, 8
mov dword [esp + 0x40], esi
mov dword [esp + 0x58], eax
jmp 0x4556f9
mov esi, dword [esp + 0x40]
mov eax, dword [eax]
mov ebp, dword [esp + 0x20]
test eax, eax
je 0x455717
push 0
push 0
push eax
push ebp
call fcn.00457690
add esp, 0x10
mov dword [esp + 0x50], eax
jmp 0x45571f
mov dword [esp + 0x50], 0
mov eax, dword [ebx + 0xc]
test eax, eax
je 0x455738
push 0
push 0
push eax
push ebp
call fcn.00457690
add esp, 0x10
mov ebp, eax
jmp 0x45573a
xor ebp, ebp
mov al, byte [esi + 0x512ca0]
push 0
push 0x34
push dword [edi]
mov byte [esp + 0x1e], al
call fcn.00487b10
mov esi, eax
add esp, 0xc
test esi, esi
je 0x4557e9
push 0x34
push 0
push esi
call fcn.004e7970
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 0x455794
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 0x455799
mov eax, 1
mov dword [esi + 0x18], eax
test ebp, ebp
je 0x4557ba
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 0x4557ba
inc eax
mov dword [esi + 0x18], eax
mov eax, dword [edi]
mov eax, dword [eax + 0x84]
cmp dword [esi + 0x18], eax
jle 0x4557d6
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push edi
call fcn.00489e60
add esp, 0xc
mov eax, dword [ebx + 4]
and eax, 3
je 0x45580b
or dword [esi + 4], eax
mov eax, dword [ebx + 0x24]
mov dword [esi + 0x24], eax
jmp 0x45580b
test ebp, ebp
je 0x4557f8
push ebp
push dword [edi]
call fcn.0048dd70
add esp, 8
mov eax, dword [esp + 0x50]
test eax, eax
je 0x45580b
push eax
push dword [edi]
call fcn.0048dd70
add esp, 8
mov ebp, dword [esp + 0x70]
push 3
push esi
push ebp
call fcn.004d55d0
mov esi, eax
push esi
push ebp
push dword [esp + 0x80]
call fcn.00455390
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 0x4556f5
jmp 0x4560af
cmp al, 0x2b
jne 0x4558a4
push dword [esp + 0x74]
push esi
push dword [esp + 0x74]
call fcn.00456630
mov ebp, dword [esi + 0x18]
add esp, 0xc
add ebp, dword [esp + 0x14]
jmp 0x4560af
cmp al, 0x33
jne 0x4559b2
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x54], eax
cmp byte [eax], 0xa7
jne 0x4560af
cmp word [eax + 0x20], 0
jl 0x4560af
test byte [ebx + 4], 1
jne 0x4560af
push 0
push 0x34
push dword [esp + 0x28]
call fcn.00487b10
add esp, 0xc
mov dword [esp + 0x58], eax
test eax, eax
je 0x45590b
push 0x34
push 0
push eax
call fcn.004e7970
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 0x455926
push 0
push 0
push eax
push dword [esp + 0x2c]
call fcn.00457690
add esp, 0x10
jmp 0x455928
xor eax, eax
push dword [esp + 0x58]
push eax
push 0x36
push edi
call fcn.0049c8b0
push 0x83
push eax
push esi
call fcn.004d55d0
mov edx, eax
add esp, 0x1c
test edx, edx
je 0x4560af
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.00469dd0
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 0x4560af
cmp al, 0xac
jne 0x4560af
cmp byte [esi + 8], 0x2c
jne 0x4560af
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x20]
push eax
push ebx
push edi
call fcn.00461750
add esp, 0x14
test eax, eax
je 0x4560af
mov eax, dword [ebx + 0x14]
mov ecx, dword [esp + 0x18]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x54], eax
test ecx, ecx
je 0x455a12
push 0
push 0
push ecx
push dword [esp + 0x2c]
call fcn.00457690
mov ecx, dword [esp + 0x28]
add esp, 0x10
mov dword [esp + 0x34], eax
jmp 0x455a1a
mov dword [esp + 0x34], 0
cmp dword [esp + 0x40], 0
je 0x455a85
mov eax, dword [edi]
cmp byte [eax + 0x57], 0
jne 0x455a85
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 0x455a85
mov esi, dword [esp + 0x18]
mov ebx, eax
mov edi, dword [esp + 0x34]
nop dword [eax + eax]
movzx edx, cl
mov al, byte [edx + 0x512fe8]
and al, 0x20
not al
and al, cl
mov byte [ebx], al
mov ecx, dword [edi + 8]
mov al, byte [edx + 0x512ea8]
mov byte [ecx + ebp], al
inc ebp
mov ebx, dword [esi + 8]
add ebx, ebp
mov cl, byte [ebx]
test cl, cl
jne 0x455a50
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 0x455ae2
mov eax, dword [esp + 0x34]
mov edx, dword [eax + 8]
test edx, edx
jne 0x455a9e
xor ecx, ecx
jmp 0x455ab2
mov ecx, edx
lea ebp, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x455aa3
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 0x455ad3
xor ebp, ebp
cmp al, 0x40
movzx eax, al
cmove ecx, ebp
mov al, byte [eax + 0x512ea8]
inc al
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x20]
mov byte [edx - 1], al
jmp 0x455aea
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x50], eax
cmp dword [esp + 0x40], 0
mov eax, 0x512fbc
mov ebp, str.NOCASE
cmove ebp, eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x64], ebp
test eax, eax
je 0x455b18
push 0
push 0
push eax
push ecx
call fcn.00457690
add esp, 0x10
jmp 0x455b1a
xor eax, eax
push ebp
push eax
push edi
call fcn.0048a320
push 0
push 0x34
push dword [edi]
mov dword [esp + 0x70], eax
call fcn.00487b10
mov ebp, eax
add esp, 0x18
test ebp, ebp
je 0x455bcb
push 0x34
push 0
push ebp
call fcn.004e7970
mov ecx, dword [esp + 0x24]
or eax, 0xffffffff
add esp, 0xc
mov byte [ebp], 0x39
mov word [ebp + 0x22], ax
test ecx, ecx
je 0x455b72
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 0x455b77
mov eax, 1
mov dword [ebp + 0x18], eax
mov ecx, dword [esp + 0x58]
test ecx, ecx
je 0x455b9c
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 0x455b9c
inc eax
mov dword [ebp + 0x18], eax
mov eax, dword [edi]
mov eax, dword [eax + 0x84]
cmp dword [ebp + 0x18], eax
jle 0x455bb8
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push edi
call fcn.00489e60
add esp, 0xc
mov eax, dword [ebx + 4]
and eax, 3
je 0x455bf1
or dword [ebp + 4], eax
mov eax, dword [ebx + 0x24]
mov dword [ebp + 0x24], eax
jmp 0x455bf1
mov eax, dword [esp + 0x58]
test eax, eax
je 0x455bde
push eax
push dword [edi]
call fcn.0048dd70
add esp, 8
mov eax, dword [esp + 0x18]
test eax, eax
je 0x455bf1
push eax
push dword [edi]
call fcn.0048dd70
add esp, 8
push 0x103
push ebp
push esi
call fcn.004d55d0
mov dword [esp + 0x64], eax
add esp, 0xc
mov eax, dword [esp + 0x54]
test eax, eax
je 0x455c1f
push 0
push 0
push eax
push dword [esp + 0x2c]
call fcn.00457690
add esp, 0x10
jmp 0x455c21
xor eax, eax
push dword [esp + 0x34]
push dword [esp + 0x68]
push eax
push edi
call fcn.0048a320
add esp, 0xc
push eax
push 0x38
push edi
call fcn.0049c8b0
mov ecx, eax
add esp, 0x10
test ecx, ecx
je 0x455c56
mov eax, dword [ebx + 4]
and eax, 3
je 0x455c56
or dword [ecx + 4], eax
mov eax, dword [ebx + 0x24]
mov dword [ecx + 0x24], eax
push 0x103
push ecx
push esi
call fcn.004d55d0
push dword [esp + 0x64]
mov ebp, eax
push esi
push dword [esp + 0x80]
mov dword [esp + 0x7c], ebp
call fcn.00455390
push ebp
push esi
push dword [esp + 0x8c]
call fcn.00455390
mov ebp, dword [esi + 0x18]
add esp, 0x24
add ebp, dword [esp + 0x14]
cmp dword [esp + 0x50], 0
je 0x4560af
push dword [esp + 0x74]
push dword [esp + 0x5c]
push esi
call fcn.00469dd0
push dword [esp + 0x80]
push dword [esp + 0x74]
push esi
call fcn.00469dd0
add esp, 0x18
jmp 0x4560af
mov edx, dword [ebx + 0xc]
mov dword [esp + 0x40], edx
test edx, edx
je 0x455ce4
nop
test dword [edx + 4], 0x2000
je 0x455ce0
mov edx, dword [edx + 0xc]
test edx, edx
jne 0x455cd0
mov dword [esp + 0x40], edx
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x50], eax
test eax, eax
je 0x455d04
nop
test dword [eax + 4], 0x2000
je 0x455d00
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x455cf0
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 0x455d26
mov dword [esp + 0x3c], 0x800
mov eax, dword [ebp + 0x1c]
test eax, eax
jle 0x455d3b
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.00458210
mov edx, dword [esp + 0x64]
add esp, 0x10
test eax, eax
je 0x455d79
mov eax, dword [esp + 0x34]
mov dword [ebp + 0x14], eax
mov eax, dword [esp + 0x38]
push edx
mov dword [ebp + 0x18], eax
call fcn.0046d230
add esp, 4
and ax, word [esp + 0x3c]
mov word [ebp + 0xc], ax
cmp byte [esp + 0x12], 0x2d
mov eax, 0x800
jne 0x455d89
or word [ebp + 0xa], ax
mov eax, dword [esp + 0x50]
test eax, eax
je 0x456063
push edx
push eax
lea eax, [esp + 0x3c]
push eax
push dword [esp + 0x78]
call fcn.00458210
add esp, 0x10
test eax, eax
je 0x456063
mov eax, dword [esp + 0x50]
test byte [eax + 4], 0x20
jne 0x456063
cmp dword [ebp + 0x14], 0
mov dword [esp + 0x50], 0
jl 0x455f54
mov ebp, dword [esp + 0x20]
push 0
push 0
push ebx
push ebp
call fcn.00457690
add esp, 0x10
mov dword [esp + 0x18], eax
cmp byte [ebp + 0x57], 0
je 0x455e06
test eax, eax
je 0x456619
push eax
push ebp
call fcn.0048dd70
add esp, 8
pop ebp
pop ebx
pop edi
pop esi
add esp, 0x58
ret
push 3
push eax
push esi
call fcn.004d55d0
add esp, 0xc
test eax, eax
je 0x456619
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.00469dd0
add esp, 0xc
cmp byte [esp + 0x12], 0x2d
jne 0x455e45
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 0x455f2c
mov al, byte [edx]
cmp al, 0x35
je 0x455e6f
cmp al, 0x2d
jne 0x455f2c
test byte [edx + 4], 1
jne 0x455f2c
push dword [edx + 0xc]
call fcn.0048a4d0
mov byte [esp + 0x16], al
mov eax, dword [esp + 0x1c]
push dword [eax + 0x10]
call fcn.0048a4d0
mov cl, al
add esp, 8
mov al, byte [esp + 0x12]
cmp al, cl
je 0x455eaf
cmp al, 0x43
jl 0x455f28
cmp cl, 0x43
jl 0x455f28
push dword [esp + 0x18]
push edi
call fcn.0048daf0
add esp, 8
test eax, eax
je 0x455f1b
cmp dword [eax + 0xc], fcn.0044ad40
je 0x455f1b
mov eax, dword [esp + 0x18]
push dword [eax + 0xc]
mov ecx, dword [eax + 0x10]
push edi
mov dword [esp + 0x6c], ecx
call fcn.0048d6a0
add esp, 8
mov dword [esp + 0x58], eax
test eax, eax
jne 0x455ef1
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov dword [esp + 0x58], eax
push dword [esp + 0x64]
push edi
call fcn.0048d6a0
add esp, 8
test eax, eax
jne 0x455f07
mov eax, dword [edi]
mov eax, dword [eax + 8]
push dword [eax]
mov eax, dword [esp + 0x5c]
push dword [eax]
call fcn.004abf20
add esp, 8
test eax, eax
jne 0x455f28
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 0x455fe4
mov eax, dword [edx + 0x10]
mov dword [esp + 0x64], eax
cmp byte [eax], 0xb1
je 0x455fe4
test dword [ecx + 4], 0x200
je 0x455f60
push ecx
jmp 0x455f88
mov edx, ebx
mov dword [esp + 0x54], ebp
mov dword [esp + 0x18], edx
jmp 0x455f2c
test eax, eax
je 0x455f70
test dword [eax + 4], 0x200
je 0x455f70
push eax
jmp 0x455f88
push ecx
push edi
call fcn.0048d6a0
mov edx, eax
add esp, 8
mov dword [esp + 0x40], edx
test edx, edx
jne 0x455f95
push dword [esp + 0x64]
push edi
call fcn.0048d6a0
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 0x455faf
push eax
jmp 0x455fd1
test ecx, ecx
je 0x455fbf
test dword [ecx + 4], 0x200
je 0x455fbf
push ecx
jmp 0x455fd1
push eax
push edi
call fcn.0048d6a0
add esp, 8
test eax, eax
jne 0x455fda
push dword [esp + 0x64]
push edi
call fcn.0048d6a0
add esp, 8
mov edx, dword [esp + 0x18]
cmp dword [esp + 0x40], eax
je 0x455feb
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 0x456005
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.0046d230
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 0x4560af
cmp byte [esp + 0x12], 0x32
jne 0x4560af
mov eax, dword [ebx + 4]
mov dword [esp + 0x64], eax
test al, 1
jne 0x4560af
push dword [esp + 0x40]
call fcn.0048ab90
add esp, 4
test eax, eax
jne 0x4560af
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 0x4560c3
cmp ah, 0x2d
jne 0x456291
mov ecx, dword [ebx + 0xc]
mov al, byte [ecx]
cmp al, 0xb0
jne 0x4560cf
mov al, byte [ecx + 2]
cmp al, 0xb1
jne 0x4560d8
mov ecx, dword [ecx + 0x14]
jmp 0x4560e6
cmp al, 0x8a
jne 0x456291
mov eax, dword [ecx + 0x14]
mov ecx, dword [eax + 0x1c]
mov ecx, dword [ecx]
mov dword [esp + 0x50], ecx
cmp ecx, 1
jle 0x456291
mov edx, dword [ebx + 0x10]
mov al, byte [edx]
cmp al, 0xb0
jne 0x456101
mov al, byte [edx + 2]
cmp al, 0xb1
jne 0x45610a
mov eax, dword [edx + 0x14]
jmp 0x456118
cmp al, 0x8a
jne 0x456291
mov eax, dword [edx + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], ecx
jne 0x456291
mov eax, dword [ebx + 0xc]
test dword [eax + 4], 0x1000
je 0x456139
test dword [edx + 4], 0x1000
jne 0x456291
cmp byte [esi + 8], 0x2c
jne 0x456291
xor eax, eax
mov dword [esp + 0x54], eax
nop dword [eax]
push ecx
push eax
push dword [ebx + 0xc]
push edi
call fcn.0048de10
push dword [esp + 0x60]
mov ebp, eax
push dword [esp + 0x68]
push dword [ebx + 0x10]
push edi
call fcn.0048de10
push 0
mov dword [esp + 0x7c], eax
mov al, byte [ebx]
push 0x34
push dword [edi]
mov byte [esp + 0x3f], al
call fcn.00487b10
mov esi, eax
add esp, 0x2c
test esi, esi
je 0x45621d
push 0x34
push 0
push esi
call fcn.004e7970
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 0x4561c8
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 0x4561cd
mov eax, 1
mov dword [esi + 0x18], eax
test ebp, ebp
je 0x4561ee
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 0x4561ee
inc eax
mov dword [esi + 0x18], eax
mov eax, dword [edi]
mov eax, dword [eax + 0x84]
cmp dword [esi + 0x18], eax
jle 0x45620a
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push edi
call fcn.00489e60
add esp, 0xc
mov eax, dword [ebx + 4]
and eax, 3
je 0x45623f
or dword [esi + 4], eax
mov eax, dword [ebx + 0x24]
mov dword [esi + 0x24], eax
jmp 0x45623f
test ebp, ebp
je 0x45622c
push ebp
push dword [edi]
call fcn.0048dd70
add esp, 8
mov eax, dword [esp + 0x58]
test eax, eax
je 0x45623f
push eax
push dword [edi]
call fcn.0048dd70
add esp, 8
push 0x8001
push esi
mov esi, dword [esp + 0x78]
push esi
call fcn.004d55d0
push eax
push esi
push dword [esp + 0x80]
call fcn.00455390
mov eax, dword [esp + 0x6c]
add esp, 0x18
mov ecx, dword [esp + 0x50]
inc eax
mov dword [esp + 0x54], eax
cmp eax, ecx
jl 0x456150
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 0x456606
cmp byte [esp + 0x12], 0x31
jne 0x45637a
cmp dword [ebp + 0x1c], 0
jne 0x45637a
mov eax, dword [ebx + 0xc]
cmp byte [eax], 0xb1
jne 0x45637a
test dword [ebx + 4], 0x1000
je 0x45637a
mov eax, dword [ebx + 0x14]
cmp dword [eax + 0x34], 0
je 0x4562d5
test dword [eax + 4], 0x200
je 0x45637a
cmp dword [eax + 0x44], 0
jne 0x45637a
cmp byte [esi + 8], 0x2c
jne 0x456602
mov edx, dword [esp + 0x14]
xor ebp, ebp
nop
mov ecx, dword [ebx + 0xc]
mov al, byte [ecx]
cmp al, 0xb0
jne 0x4562fc
mov al, byte [ecx + 2]
cmp al, 0xb1
jne 0x456307
mov eax, dword [ecx + 0x14]
mov eax, dword [eax]
jmp 0x45631a
cmp al, 0x8a
jne 0x456315
mov eax, dword [ecx + 0x14]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax]
jmp 0x45631a
mov eax, 1
cmp ebp, eax
jge 0x456606
push 0x8002
push ebx
push esi
call fcn.004d55d0
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.00455390
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 0x4562f0
cmp byte [esi + 8], 0x2c
jne 0x456602
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.00460f60
add esp, 0x14
test eax, eax
jle 0x456602
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 0x456429
cmp byte [ebp], 0xa7
jne 0x4563fa
test byte [ebp + 4], 0x20
jne 0x4563fa
push dword [ebp + 0x1c]
push dword [esp + 0x20]
call fcn.004c4e60
add esp, 8
mov dword [esp + 0x2c], edx
jmp 0x45643e
test dword [ebp + 4], 0x810000
je 0x456416
xorps xmm0, xmm0
movlpd qword [esp + 0x58], xmm0
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x2c], ecx
jmp 0x45643a
push ebp
push dword [esp + 0x20]
call fcn.004c4c70
add esp, 8
mov dword [esp + 0x2c], edx
jmp 0x45643e
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 0x45647a
cmp byte [esi], 0xa7
jne 0x456462
test byte [esi + 4], 0x20
jne 0x456462
push dword [esi + 0x1c]
push dword [esp + 0x20]
call fcn.004c4e60
add esp, 8
jmp 0x45648b
test dword [esi + 4], 0x810000
jne 0x45647a
push esi
push dword [esp + 0x20]
call fcn.004c4c70
add esp, 8
jmp 0x45648b
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 0x4565e2
test ebp, ebp
je 0x4564b0
push eax
push eax
push ebp
push dword [esp + 0x2c]
call fcn.00457690
add esp, 0x10
jmp 0x4564b2
xor eax, eax
push 0
push 0x34
push dword [edi]
mov dword [esp + 0x60], eax
call fcn.00487b10
mov esi, eax
add esp, 0xc
test esi, esi
je 0x456522
push 0x34
push 0
push esi
call fcn.004e7970
mov ecx, dword [esp + 0x60]
or eax, 0xffffffff
add esp, 0xc
mov byte [esi], 0x2e
mov word [esi + 0x22], ax
test ecx, ecx
je 0x4564fd
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 0x456502
mov ecx, 1
mov dword [esi + 0x18], ecx
mov eax, dword [edi]
mov eax, dword [eax + 0x84]
cmp ecx, eax
jle 0x456535
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push edi
call fcn.00489e60
add esp, 0xc
jmp 0x456535
mov eax, dword [esp + 0x54]
test eax, eax
je 0x456535
push eax
push dword [edi]
call fcn.0048dd70
add esp, 8
test byte [ebx + 4], 1
je 0x456549
test esi, esi
je 0x456549
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.004d55d0
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 0x4565e6
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 0x4563d0
mov esi, dword [esp + 0x70]
jmp 0x456606
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