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

Disassembly:
sub esp, 0x58
push ebx
push esi
mov esi, dword [esp + 0x68]
xorps xmm0, xmm0
movlpd qword [esp + 0x38], xmm0
mov dword [esp + 0xc], 0
mov dword [esp + 0x30], 0
mov eax, dword [esi]
mov dword [esp + 0x34], 0
mov ebx, dword [eax]
mov dword [esp + 0x50], ebx
mov ecx, dword [ebx]
mov dword [esp + 0x14], ecx
cmp byte [ecx + 0x57], 0
jne 0x4a7548
mov ecx, dword [esp + 0x6c]
lea edx, [eax + 0x1f0]
push ebp
push edi
mov dword [esp + 0x18], edx
lea ebp, [ecx + ecx*2]
shl ebp, 4
add ebp, dword [esi + 0x18]
mov edi, dword [ebp]
mov dword [edx], 0
mov dword [esp + 0x64], edi
mov eax, dword [edi + 0xc]
test eax, eax
je 0x4a6219
cmp byte [eax], 0xa7
jne 0x4a61e0
test byte [eax + 4], 0x20
jne 0x4a61e0
push dword [eax + 0x1c]
push edx
call fcn.00511800
mov dword [esp + 0x28], edx
add esp, 8
mov edx, dword [esp + 0x18]
jmp 0x4a622b
test dword [eax + 4], 0x810000
je 0x4a6205
movlpd qword [esp + 0x5c], xmm0
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x2c], ecx
jmp 0x4a622f
push eax
push edx
call fcn.00511600
mov dword [esp + 0x28], edx
add esp, 8
mov edx, dword [esp + 0x18]
jmp 0x4a622b
movlpd qword [esp + 0x5c], xmm0
mov eax, dword [esp + 0x60]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x2c], eax
mov al, byte [edi]
mov byte [esp + 0x13], al
movzx eax, al
mov dword [esp + 0x50], eax
cmp eax, 0x31
jne 0x4a6288
push edi
push ebx
call fcn.004d8930
add esp, 8
test eax, eax
jne 0x4a7546
test dword [edi + 4], 0x1000
mov ecx, dword [edi + 0x14]
push ecx
push dword [esp + 0x1c]
je 0x4a626b
call fcn.004a9720
jmp 0x4a6270
call fcn.00511560
mov ecx, eax
add esp, 8
mov dword [ebp + 0x20], ecx
or ecx, dword [esp + 0x2c]
mov dword [ebp + 0x24], edx
or edx, dword [esp + 0x20]
jmp 0x4a6341
mov eax, dword [edi + 0x10]
test eax, eax
je 0x4a62c1
cmp byte [eax], 0xa7
jne 0x4a62aa
test byte [eax + 4], 0x20
jne 0x4a62aa
push dword [eax + 0x1c]
push edx
call fcn.00511800
add esp, 8
mov ecx, eax
jmp 0x4a62d2
test dword [eax + 4], 0x810000
jne 0x4a62c1
push eax
push edx
call fcn.00511600
add esp, 8
mov ecx, eax
jmp 0x4a62d2
xorps xmm0, xmm0
movlpd qword [esp + 0x5c], xmm0
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x60]
mov dword [ebp + 0x20], ecx
mov dword [ebp + 0x24], edx
cmp dword [edi + 0xc], 0
je 0x4a62fa
test dword [edi + 4], 0x41000
lea eax, [edi + 4]
jne 0x4a62fa
cmp dword [edi + 0x14], 0
jne 0x4a62fa
or ecx, dword [esp + 0x2c]
or edx, dword [esp + 0x20]
jmp 0x4a6344
cmp byte [edi], 0xa7
jne 0x4a6313
test byte [edi + 4], 0x20
jne 0x4a6313
push dword [edi + 0x1c]
push dword [esp + 0x1c]
call fcn.00511800
jmp 0x4a633c
test dword [edi + 4], 0x810000
lea eax, [edi + 4]
je 0x4a6332
xorps xmm0, xmm0
movlpd qword [esp + 0x5c], xmm0
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x5c]
jmp 0x4a6344
push edi
push dword [esp + 0x1c]
call fcn.00511600
mov ecx, eax
add esp, 8
lea eax, [edi + 4]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
cmp dword [esi], 0
mov esi, dword [esp + 0x70]
je 0x4a6366
mov ebx, 0x1000
or word [ebp + 0xa], bx
mov ebx, dword [esp + 0x58]
mov eax, dword [eax]
mov dword [esp + 0x48], eax
test al, 3
je 0x4a642b
push dword [edi + 0x24]
push dword [esp + 0x1c]
call fcn.00511800
mov ecx, dword [esp + 0x2c]
add esp, 8
test byte [esp + 0x48], 1
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x5c], eax
je 0x4a63dc
or edx, dword [esp + 0x30]
or ecx, eax
add eax, 0xffffffff
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x30]
adc eax, 0xffffffff
mov dword [esp + 0x24], ecx
mov dword [esp + 0x48], eax
mov eax, edx
shrd dword [esp + 0x4c], eax, 1
mov dword [esp + 0x28], edx
shr eax, 1
cmp eax, dword [esp + 0x30]
ja 0x4a640b
jb 0x4a643b
mov eax, dword [esp + 0x4c]
cmp eax, dword [esp + 0x5c]
jae 0x4a640b
jmp 0x4a643b
mov dword [esp + 0x4c], ecx
mov eax, edx
shrd dword [esp + 0x4c], eax, 1
shr eax, 1
cmp eax, dword [esp + 0x30]
jb 0x4a642b
ja 0x4a63fc
mov eax, dword [esp + 0x4c]
cmp eax, dword [esp + 0x5c]
jb 0x4a642b
mov eax, dword [esp + 0x6c]
cmp dword [eax], 0
jle 0x4a6421
test byte [eax + 0x2c], 0x40
je 0x4a6421
push str.ON_clause_references_tables_to_its_right
push ebx
call fcn.004d7b40
add esp, 8
pop edi
pop ebp
pop esi
pop ebx
add esp, 0x58
ret
mov eax, dword [esp + 0x48]
and eax, 0xfffffffd
mov dword [edi + 4], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x40], eax
xor eax, eax
mov dword [ebp + 0x28], ecx
mov word [ebp + 0xc], ax
mov al, byte [esp + 0x13]
mov dword [ebp + 0x2c], edx
mov dword [ebp + 0x14], 0xffffffff
mov dword [ebp + 0x10], 0xffffffff
cmp al, 0x31
je 0x4a6ab2
cmp al, 0x35
jb 0x4a646d
cmp al, 0x39
jbe 0x4a6ab2
cmp al, 0x32
je 0x4a6ab2
cmp al, 0x2d
je 0x4a6ab2
mov al, byte [edi]
cmp al, 0x30
jne 0x4a663d
cmp byte [esi + 8], 0x2c
jne 0x4a6667
mov ecx, dword [esp + 0x74]
xor esi, esi
mov eax, dword [edi + 0x14]
mov dword [esp + 0x3c], esi
lea ecx, [ecx + ecx*2]
shl ecx, 4
add eax, 8
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x50], eax
jmp 0x4a64b5
mov esi, dword [esp + 0x3c]
mov eax, dword [eax]
test eax, eax
je 0x4a64d0
push 0
push 0
push eax
push dword [esp + 0x28]
call fcn.004a85e0
add esp, 0x10
mov ebp, eax
jmp 0x4a64d2
xor ebp, ebp
mov eax, dword [edi + 0xc]
test eax, eax
je 0x4a64ec
push 0
push 0
push eax
push dword [esp + 0x28]
call fcn.004a85e0
add esp, 0x10
jmp 0x4a64ee
xor eax, eax
push 0
mov dword [esp + 0x50], eax
mov al, byte [esi + 0x571a30]
push 0x34
push dword [ebx]
mov byte [esp + 0x1f], al
call fcn.004d5b60
mov esi, eax
add esp, 0xc
test esi, esi
je 0x4a65a3
push 0x34
push 0
push esi
call fcn.005326d0
mov al, byte [esp + 0x1f]
add esp, 0xc
mov byte [esi], al
mov eax, 0xffffffff
mov word [esi + 0x22], ax
test ebp, ebp
je 0x4a6548
mov dword [esi + 0x10], ebp
mov eax, dword [ebp + 4]
and eax, 0x400208
or dword [esi + 4], eax
mov ecx, dword [ebp + 0x18]
inc ecx
jmp 0x4a654d
mov ecx, 1
mov edx, dword [esp + 0x4c]
mov ebp, ecx
mov dword [esi + 0x18], ecx
test edx, edx
je 0x4a6575
mov dword [esi + 0xc], edx
mov eax, dword [edx + 4]
and eax, 0x400208
or dword [esi + 4], eax
mov eax, dword [edx + 0x18]
cmp eax, ecx
jl 0x4a6575
lea ebp, [eax + 1]
mov dword [esi + 0x18], ebp
mov eax, dword [ebx]
mov eax, dword [eax + 0x84]
cmp ebp, eax
jle 0x4a6590
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ebx
call fcn.004d7b40
add esp, 0xc
mov eax, dword [edi + 4]
and eax, 3
je 0x4a65c5
or dword [esi + 4], eax
mov eax, dword [edi + 0x24]
mov dword [esi + 0x24], eax
jmp 0x4a65c5
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x4a65b6
push eax
push dword [ebx]
call fcn.004db740
add esp, 8
test ebp, ebp
je 0x4a65c5
push ebp
push dword [ebx]
call fcn.004db740
add esp, 8
mov ebp, dword [esp + 0x70]
push 3
push esi
push ebp
call fcn.00520bc0
mov esi, eax
push esi
push ebp
push dword [esp + 0x80]
call fcn.004a6150
mov ecx, dword [ebp + 0x18]
lea edx, [esi + esi*2]
mov eax, dword [esp + 0x74]
add edx, edx
mov esi, dword [esp + 0x8c]
add esp, 0x18
mov dword [ecx + edx*8 + 0x10], esi
lea ebp, [ecx + eax]
mov esi, dword [esp + 0x70]
mov ecx, dword [esi + 0x18]
mov ax, word [ecx + eax + 8]
mov word [ecx + edx*8 + 8], ax
mov eax, dword [esi + 0x18]
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x3c]
inc ecx
mov dword [esp + 0x3c], ecx
inc byte [eax + edx + 0xe]
mov eax, dword [esp + 0x50]
add eax, 0x14
mov dword [esp + 0x50], eax
cmp ecx, 2
jl 0x4a64b1
jmp 0x4a6ea1
cmp al, 0x2b
jne 0x4a6667
push dword [esp + 0x74]
push esi
push dword [esp + 0x74]
call fcn.004a7550
mov edx, dword [esp + 0x80]
add esp, 0xc
lea ebp, [edx + edx*2]
shl ebp, 4
add ebp, dword [esi + 0x18]
jmp 0x4a6ea1
cmp al, 0x33
jne 0x4a6788
mov eax, dword [edi + 0xc]
mov dword [esp + 0x4c], eax
cmp byte [eax], 0xa7
jne 0x4a6ea1
cmp word [eax + 0x20], 0
jl 0x4a6ea1
test byte [edi + 4], 1
jne 0x4a6ea1
test eax, eax
je 0x4a66af
push 0
push 0
push eax
push dword [esp + 0x28]
call fcn.004a85e0
add esp, 0x10
mov dword [esp + 0x5c], eax
jmp 0x4a66b7
mov dword [esp + 0x5c], 0
push 0
push 0x34
push dword [esp + 0x24]
call fcn.004d5b60
add esp, 0xc
mov dword [esp + 0x50], eax
test eax, eax
je 0x4a66f1
push 0x34
push 0
push eax
call fcn.005326d0
mov eax, dword [esp + 0x5c]
add esp, 0xc
or ecx, 0xffffffff
mov byte [eax], 0x79
mov word [eax + 0x22], cx
mov dword [eax + 0x18], 1
push eax
push dword [esp + 0x60]
push 0x36
push ebx
call fcn.004e97f0
push 0x83
push eax
push esi
call fcn.00520bc0
add esp, 0x1c
mov dword [esp + 0x5c], eax
test eax, eax
je 0x4a6ea1
mov ecx, dword [esp + 0x70]
lea esi, [eax + eax*2]
mov edx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x74]
shl esi, 4
add esi, dword [ecx + 0x18]
push ebp
push dword [esp + 0x60]
mov dword [esi + 0x20], 0
mov dword [esi + 0x24], 0
mov eax, dword [edx + 0x1c]
mov dword [esi + 0x14], eax
movsx eax, word [edx + 0x20]
mov dword [esi + 0x18], eax
mov eax, 4
push ecx
mov word [esi + 0xc], ax
call fcn.004b85c0
mov eax, dword [esp + 0x7c]
lea ebp, [ebp + ebp*2]
shl ebp, 4
add esp, 0xc
add ebp, dword [eax + 0x18]
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 0x4a6ea1
cmp al, 0xac
jne 0x4a6ea1
cmp byte [esi + 8], 0x2c
jne 0x4a6ea1
lea eax, [esp + 0x3c]
push eax
lea eax, [esp + 0x3c]
push eax
lea eax, [esp + 0x1c]
push eax
push edi
push ebx
call fcn.004b1f00
add esp, 0x14
test eax, eax
je 0x4a6ea1
mov eax, dword [edi + 0x14]
mov ecx, dword [esp + 0x14]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x50], eax
test ecx, ecx
je 0x4a67e8
push 0
push 0
push ecx
push dword [esp + 0x28]
call fcn.004a85e0
mov ecx, dword [esp + 0x24]
add esp, 0x10
mov dword [esp + 0x30], eax
jmp 0x4a67f0
mov dword [esp + 0x30], 0
cmp dword [esp + 0x3c], 0
je 0x4a685c
mov eax, dword [ebx]
cmp byte [eax + 0x57], 0
jne 0x4a685c
mov eax, 0x400
or word [ebp + 0xa], ax
xor ebp, ebp
mov ecx, dword [ecx + 8]
mov dword [esp + 0x5c], ecx
mov cl, byte [ecx]
test cl, cl
je 0x4a685c
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x5c]
mov ebx, dword [esp + 0x30]
movzx edx, cl
lea ebp, [ebp + 1]
mov al, byte [edx + 0x571828]
and al, 0x20
not al
and al, cl
mov byte [edi + ebp - 1], al
mov ecx, dword [ebx + 8]
mov al, byte [edx + 0x571710]
mov byte [ecx + ebp - 1], al
mov edi, dword [esi + 8]
mov cl, byte [edi + ebp]
test cl, cl
jne 0x4a6823
mov edi, dword [esp + 0x64]
mov ebx, dword [esp + 0x58]
mov esi, dword [esp + 0x70]
mov ecx, dword [esp + 0x1c]
cmp byte [ecx + 0x57], 0
jne 0x4a68bf
mov eax, dword [esp + 0x30]
mov edx, dword [eax + 8]
test edx, edx
jne 0x4a6875
xor ecx, ecx
jmp 0x4a688f
mov ecx, edx
lea ebp, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4a6880
sub ecx, ebp
and ecx, 0x3fffffff
mov al, byte [edx + ecx - 1]
add edx, ecx
cmp dword [esp + 0x3c], 0
mov ecx, dword [esp + 0x38]
je 0x4a68b0
xor ebp, ebp
cmp al, 0x40
movzx eax, al
cmove ecx, ebp
mov al, byte [eax + 0x571710]
inc al
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x1c]
mov byte [edx - 1], al
jmp 0x4a68c7
mov eax, dword [esp + 0x38]
mov dword [esp + 0x38], eax
cmp dword [esp + 0x3c], 0
mov eax, str.BINARY
mov ebp, str.NOCASE
cmove ebp, eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x64], ebp
test eax, eax
je 0x4a68f5
push 0
push 0
push eax
push ecx
call fcn.004a85e0
add esp, 0x10
jmp 0x4a68f7
xor eax, eax
push ebp
push eax
push ebx
call fcn.004d8020
push 0
push 0x34
push dword [ebx]
mov dword [esp + 0x74], eax
call fcn.004d5b60
mov ebp, eax
add esp, 0x18
test ebp, ebp
je 0x4a69b4
push 0x34
push 0
push ebp
call fcn.005326d0
mov ecx, dword [esp + 0x20]
or eax, 0xffffffff
add esp, 0xc
mov byte [ebp], 0x39
mov word [ebp + 0x22], ax
test ecx, ecx
je 0x4a694f
mov dword [ebp + 0x10], ecx
mov eax, dword [ecx + 4]
and eax, 0x400208
or dword [ebp + 4], eax
mov ecx, dword [ecx + 0x18]
inc ecx
jmp 0x4a6954
mov ecx, 1
mov edx, dword [esp + 0x5c]
mov dword [ebp + 0x18], ecx
mov dword [esp + 0x4c], ecx
test edx, edx
je 0x4a6984
mov dword [ebp + 0xc], edx
mov eax, dword [edx + 4]
and eax, 0x400208
mov dword [esp + 0x4c], ecx
or dword [ebp + 4], eax
mov eax, dword [edx + 0x18]
cmp eax, ecx
jl 0x4a6984
inc eax
mov dword [esp + 0x4c], eax
mov dword [ebp + 0x18], eax
mov eax, dword [ebx]
mov eax, dword [eax + 0x84]
cmp dword [esp + 0x4c], eax
jle 0x4a69a1
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ebx
call fcn.004d7b40
add esp, 0xc
mov eax, dword [edi + 4]
and eax, 3
je 0x4a69da
or dword [ebp + 4], eax
mov eax, dword [edi + 0x24]
mov dword [ebp + 0x24], eax
jmp 0x4a69da
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x4a69c7
push eax
push dword [ebx]
call fcn.004db740
add esp, 8
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a69da
push eax
push dword [ebx]
call fcn.004db740
add esp, 8
push 0x103
push ebp
push esi
call fcn.00520bc0
mov dword [esp + 0x68], eax
add esp, 0xc
mov eax, dword [esp + 0x50]
test eax, eax
je 0x4a6a08
push 0
push 0
push eax
push dword [esp + 0x28]
call fcn.004a85e0
add esp, 0x10
jmp 0x4a6a0a
xor eax, eax
push dword [esp + 0x30]
push dword [esp + 0x68]
push eax
push ebx
call fcn.004d8020
add esp, 0xc
push eax
push 0x38
push ebx
call fcn.004e97f0
mov ecx, eax
add esp, 0x10
test ecx, ecx
je 0x4a6a3f
mov eax, dword [edi + 4]
and eax, 3
je 0x4a6a3f
or dword [ecx + 4], eax
mov eax, dword [edi + 0x24]
mov dword [ecx + 0x24], eax
push 0x103
push ecx
push esi
call fcn.00520bc0
push dword [esp + 0x68]
mov ebp, eax
push esi
push dword [esp + 0x80]
mov dword [esp + 0x7c], ebp
call fcn.004a6150
push ebp
push esi
push dword [esp + 0x8c]
call fcn.004a6150
mov edx, dword [esp + 0x98]
add esp, 0x24
lea ebp, [edx + edx*2]
shl ebp, 4
add ebp, dword [esi + 0x18]
cmp dword [esp + 0x38], 0
je 0x4a6ea1
push edx
push dword [esp + 0x60]
push esi
call fcn.004b85c0
push dword [esp + 0x80]
push dword [esp + 0x74]
push esi
call fcn.004b85c0
add esp, 0x18
jmp 0x4a6ea1
mov edx, dword [edi + 0xc]
mov dword [esp + 0x3c], edx
test edx, edx
je 0x4a6ad4
nop dword [eax]
test dword [edx + 4], 0x2000
je 0x4a6ad0
mov edx, dword [edx + 0xc]
test edx, edx
jne 0x4a6ac0
mov dword [esp + 0x3c], edx
mov eax, dword [edi + 0x10]
mov dword [esp + 0x4c], eax
test eax, eax
je 0x4a6af4
nop
test dword [eax + 4], 0x2000
je 0x4a6af0
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x4a6ae0
mov dword [esp + 0x4c], eax
mov ecx, dword [esp + 0x2c]
mov eax, dword [ebp + 0x24]
and ecx, dword [ebp + 0x20]
and eax, dword [esp + 0x20]
or ecx, eax
mov dword [esp + 0x38], 0x3fff
je 0x4a6b16
mov dword [esp + 0x38], 0x800
mov eax, dword [ebp + 0x1c]
test eax, eax
jle 0x4a6b2b
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x14]
mov edx, dword [eax + ecx*4 - 0xc]
mov dword [esp + 0x3c], edx
push dword [esp + 0x50]
lea eax, [esp + 0x34]
push edx
push eax
push dword [esp + 0x78]
call fcn.004a91d0
mov edx, dword [esp + 0x60]
add esp, 0x10
test eax, eax
je 0x4a6b69
mov eax, dword [esp + 0x30]
mov dword [ebp + 0x14], eax
mov eax, dword [esp + 0x34]
push edx
mov dword [ebp + 0x18], eax
call fcn.004bba50
add esp, 4
and ax, word [esp + 0x38]
mov word [ebp + 0xc], ax
cmp byte [esp + 0x13], 0x2d
mov eax, 0x800
jne 0x4a6b79
or word [ebp + 0xa], ax
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x4a6e55
push edx
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x78]
call fcn.004a91d0
add esp, 0x10
test eax, eax
je 0x4a6e55
mov eax, dword [esp + 0x4c]
test byte [eax + 4], 0x20
jne 0x4a6e55
cmp dword [ebp + 0x14], 0
mov dword [esp + 0x4c], 0
jl 0x4a6d46
mov ebp, dword [esp + 0x1c]
push 0
push 0
push edi
push ebp
call fcn.004a85e0
add esp, 0x10
mov dword [esp + 0x14], eax
cmp byte [ebp + 0x57], 0
je 0x4a6bf6
test eax, eax
je 0x4a7546
push eax
push ebp
call fcn.004db740
add esp, 8
pop edi
pop ebp
pop esi
pop ebx
add esp, 0x58
ret
push 3
push eax
push esi
call fcn.00520bc0
add esp, 0xc
test eax, eax
je 0x4a7546
push dword [esp + 0x74]
lea ebp, [eax + eax*2]
shl ebp, 4
add ebp, dword [esi + 0x18]
push eax
push esi
mov dword [esp + 0x5c], ebp
call fcn.004b85c0
add esp, 0xc
cmp byte [esp + 0x13], 0x2d
jne 0x4a6c35
mov eax, 0x800
or word [ebp + 0xa], ax
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x14]
lea ebp, [eax + eax*2]
shl ebp, 4
add ebp, dword [esi + 0x18]
or word [ebp + 0xa], 8
mov eax, dword [ebx]
test byte [eax + 0x50], 0x80
jne 0x4a6d1e
mov al, byte [edx]
cmp al, 0x35
je 0x4a6c65
cmp al, 0x2d
jne 0x4a6d1e
test byte [edx + 4], 1
jne 0x4a6d1e
push dword [edx + 0xc]
call fcn.004d8100
mov byte [esp + 0x17], al
mov eax, dword [esp + 0x18]
push dword [eax + 0x10]
call fcn.004d8100
mov cl, al
add esp, 8
mov al, byte [esp + 0x13]
cmp al, cl
je 0x4a6ca1
cmp al, 0x43
jl 0x4a6d1a
cmp cl, 0x43
jl 0x4a6d1a
push dword [esp + 0x14]
push ebx
call fcn.004db4c0
add esp, 8
test eax, eax
je 0x4a6d0d
cmp dword [eax + 0xc], fcn.0049c2a0
je 0x4a6d0d
mov eax, dword [esp + 0x14]
push dword [eax + 0xc]
mov ecx, dword [eax + 0x10]
push ebx
mov dword [esp + 0x6c], ecx
call fcn.004db080
add esp, 8
mov dword [esp + 0x5c], eax
test eax, eax
jne 0x4a6ce3
mov eax, dword [ebx]
mov eax, dword [eax + 8]
mov dword [esp + 0x5c], eax
push dword [esp + 0x64]
push ebx
call fcn.004db080
add esp, 8
test eax, eax
jne 0x4a6cf9
mov eax, dword [ebx]
mov eax, dword [eax + 8]
push dword [eax]
mov eax, dword [esp + 0x60]
push dword [eax]
call fcn.004f93b0
add esp, 8
test eax, eax
jne 0x4a6d1a
mov eax, 0x800
or word [ebp + 0xc], ax
mov dword [esp + 0x4c], eax
mov edx, dword [esp + 0x14]
mov ecx, dword [edx + 0xc]
cmp byte [ecx], 0xb1
je 0x4a6dd6
mov eax, dword [edx + 0x10]
mov dword [esp + 0x64], eax
cmp byte [eax], 0xb1
je 0x4a6dd6
test dword [ecx + 4], 0x200
je 0x4a6d52
push ecx
jmp 0x4a6d7a
mov edx, edi
mov dword [esp + 0x50], ebp
mov dword [esp + 0x14], edx
jmp 0x4a6d1e
test eax, eax
je 0x4a6d62
test dword [eax + 4], 0x200
je 0x4a6d62
push eax
jmp 0x4a6d7a
push ecx
push ebx
call fcn.004db080
mov ecx, eax
add esp, 8
mov dword [esp + 0x3c], ecx
test ecx, ecx
jne 0x4a6d87
push dword [esp + 0x64]
push ebx
call fcn.004db080
add esp, 8
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x64], ecx
test dword [eax + 4], 0x200
je 0x4a6da1
push eax
jmp 0x4a6dc3
test ecx, ecx
je 0x4a6db1
test dword [ecx + 4], 0x200
je 0x4a6db1
push ecx
jmp 0x4a6dc3
push eax
push ebx
call fcn.004db080
add esp, 8
test eax, eax
jne 0x4a6dcc
push dword [esp + 0x64]
push ebx
call fcn.004db080
add esp, 8
mov edx, dword [esp + 0x14]
cmp dword [esp + 0x3c], eax
je 0x4a6ddd
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 0x4a6df7
sub al, 0x36
xor al, 2
add al, 0x36
mov byte [edx], al
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x48]
or dword [esp + 0x20], esi
mov dword [ecx + 0x14], eax
mov eax, dword [esp + 0x34]
mov dword [ecx + 0x18], eax
mov eax, dword [esp + 0x2c]
or eax, dword [esp + 0x40]
mov dword [ecx + 0x20], eax
mov eax, dword [esp + 0x20]
mov dword [ecx + 0x24], eax
mov eax, dword [esp + 0x24]
mov dword [ecx + 0x28], eax
mov eax, dword [esp + 0x28]
mov dword [ecx + 0x2c], eax
movzx eax, byte [edx]
push eax
call fcn.004bba50
mov ecx, dword [esp + 0x54]
add esp, 4
add ax, word [esp + 0x4c]
and ax, word [esp + 0x38]
mov esi, dword [esp + 0x70]
mov word [ecx + 0xc], ax
jmp 0x4a6ea1
cmp byte [esp + 0x13], 0x32
jne 0x4a6ea1
mov eax, dword [edi + 4]
mov dword [esp + 0x64], eax
test al, 1
jne 0x4a6ea1
push dword [esp + 0x3c]
call fcn.004d8880
add esp, 4
test eax, eax
jne 0x4a6ea1
mov eax, dword [esp + 0x64]
or eax, 0x20000000
mov byte [edi], 0xaa
mov dword [edi + 4], eax
xor eax, eax
mov dword [edi + 8], str.false
mov dword [ebp + 0x28], 0
mov dword [ebp + 0x2c], 0
mov word [ebp + 0xc], ax
mov al, byte [edi]
cmp al, 0x35
je 0x4a6eaf
cmp al, 0x2d
jne 0x4a7079
mov ecx, dword [edi + 0xc]
mov al, byte [ecx]
cmp al, 0xb0
jne 0x4a6ebb
mov al, byte [ecx + 2]
cmp al, 0xb1
jne 0x4a6ec4
mov ecx, dword [ecx + 0x14]
jmp 0x4a6ed2
cmp al, 0x8a
jne 0x4a7079
mov eax, dword [ecx + 0x14]
mov ecx, dword [eax + 0x1c]
mov ecx, dword [ecx]
mov dword [esp + 0x50], ecx
cmp ecx, 1
jle 0x4a7079
mov edx, dword [edi + 0x10]
mov al, byte [edx]
cmp al, 0xb0
jne 0x4a6eed
mov al, byte [edx + 2]
cmp al, 0xb1
jne 0x4a6ef6
mov eax, dword [edx + 0x14]
jmp 0x4a6f04
cmp al, 0x8a
jne 0x4a7079
mov eax, dword [edx + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], ecx
jne 0x4a7079
mov eax, dword [edi + 0xc]
test dword [eax + 4], 0x1000
je 0x4a6f25
test dword [edx + 4], 0x1000
jne 0x4a7079
cmp byte [esi + 8], 0x2c
jne 0x4a7079
xor ebp, ebp
mov dword [esp + 0x58], ebp
push ecx
push ebp
push dword [edi + 0xc]
push ebx
call fcn.004db7d0
push dword [esp + 0x60]
mov dword [esp + 0x70], eax
push ebp
push dword [edi + 0x10]
push ebx
call fcn.004db7d0
push 0
mov ebp, eax
mov al, byte [edi]
push 0x34
push dword [ebx]
mov byte [esp + 0x3f], al
call fcn.004d5b60
mov esi, eax
add esp, 0x2c
test esi, esi
je 0x4a7001
push 0x34
push 0
push esi
call fcn.005326d0
mov al, byte [esp + 0x1f]
add esp, 0xc
mov byte [esi], al
mov eax, 0xffffffff
mov word [esi + 0x22], ax
test ebp, ebp
je 0x4a6fa6
mov dword [esi + 0x10], ebp
mov eax, dword [ebp + 4]
and eax, 0x400208
or dword [esi + 4], eax
mov ecx, dword [ebp + 0x18]
inc ecx
jmp 0x4a6fab
mov ecx, 1
mov edx, dword [esp + 0x5c]
mov ebp, ecx
mov dword [esi + 0x18], ecx
test edx, edx
je 0x4a6fd3
mov dword [esi + 0xc], edx
mov eax, dword [edx + 4]
and eax, 0x400208
or dword [esi + 4], eax
mov eax, dword [edx + 0x18]
cmp eax, ecx
jl 0x4a6fd3
lea ebp, [eax + 1]
mov dword [esi + 0x18], ebp
mov eax, dword [ebx]
mov eax, dword [eax + 0x84]
cmp ebp, eax
jle 0x4a6fee
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ebx
call fcn.004d7b40
add esp, 0xc
mov eax, dword [edi + 4]
and eax, 3
je 0x4a7023
or dword [esi + 4], eax
mov eax, dword [edi + 0x24]
mov dword [esi + 0x24], eax
jmp 0x4a7023
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x4a7014
push eax
push dword [ebx]
call fcn.004db740
add esp, 8
test ebp, ebp
je 0x4a7023
push ebp
push dword [ebx]
call fcn.004db740
add esp, 8
push 0x8001
push esi
mov esi, dword [esp + 0x78]
push esi
call fcn.00520bc0
push eax
push esi
push dword [esp + 0x80]
call fcn.004a6150
mov ebp, dword [esp + 0x70]
add esp, 0x18
mov ecx, dword [esp + 0x50]
inc ebp
mov dword [esp + 0x58], ebp
cmp ebp, ecx
jl 0x4a6f35
mov eax, dword [esp + 0x74]
mov ecx, 0x2000
lea eax, [eax + eax*2]
shl eax, 4
add eax, dword [esi + 0x18]
or word [eax + 0xa], 6
mov word [eax + 0xc], cx
jmp 0x4a752b
mov cl, byte [edi]
cmp cl, 0x31
jne 0x4a716b
cmp dword [ebp + 0x1c], 0
jne 0x4a716b
mov eax, dword [edi + 0xc]
cmp byte [eax], 0xb1
jne 0x4a716b
test dword [edi + 4], 0x1000
je 0x4a716b
mov eax, dword [edi + 0x14]
cmp dword [eax + 0x34], 0
je 0x4a70bd
test dword [eax + 4], 0x200
je 0x4a716b
cmp dword [eax + 0x44], 0
jne 0x4a716b
cmp byte [esi + 8], 0x2c
jne 0x4a752b
mov eax, dword [esp + 0x74]
xor ebp, ebp
lea eax, [eax + eax*2]
shl eax, 4
mov dword [esp + 0x64], eax
mov ecx, dword [edi + 0xc]
mov al, byte [ecx]
cmp al, 0xb0
jne 0x4a70ed
mov al, byte [ecx + 2]
cmp al, 0xb1
jne 0x4a70f8
mov eax, dword [ecx + 0x14]
mov eax, dword [eax]
jmp 0x4a710b
cmp al, 0x8a
jne 0x4a7106
mov eax, dword [ecx + 0x14]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax]
jmp 0x4a710b
mov eax, 1
cmp ebp, eax
jge 0x4a752b
push 0x8002
push edi
push esi
call fcn.00520bc0
mov ebx, dword [esp + 0x7c]
inc ebp
push eax
push ebx
push dword [esp + 0x80]
mov ecx, dword [ebx + 0x18]
lea esi, [eax + eax*2]
add esi, esi
mov dword [ecx + esi*8 + 0x1c], ebp
call fcn.004a6150
mov eax, dword [ebx + 0x18]
add esp, 0x18
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x64]
mov dword [eax + esi*8 + 0x10], ecx
mov ecx, dword [ebx + 0x18]
mov ax, word [ecx + edx + 8]
mov word [ecx + esi*8 + 8], ax
mov esi, ebx
mov eax, dword [esi + 0x18]
inc byte [eax + edx + 0xe]
jmp 0x4a70e1
cmp byte [esi + 8], 0x2c
jne 0x4a752b
cmp cl, 0xac
jne 0x4a7268
mov ecx, dword [edi + 0x14]
mov dword [esp + 0x4c], ecx
test ecx, ecx
je 0x4a752b
cmp dword [ecx], 2
jne 0x4a752b
mov ebp, dword [ecx + 0x1c]
cmp byte [ebp], 0xa7
jne 0x4a71d8
mov eax, dword [ebp + 0x2c]
cmp byte [eax + 0x2b], 1
jne 0x4a71d8
xor eax, eax
mov dword [esp + 0x50], eax
nop
push dword [eax*8 + 0x5719fc]
push dword [edi + 8]
call fcn.004f93b0
add esp, 8
test eax, eax
mov eax, dword [esp + 0x50]
je 0x4a7248
inc eax
mov dword [esp + 0x50], eax
cmp eax, 4
jl 0x4a71b0
mov ecx, dword [esp + 0x4c]
mov ebp, dword [ecx + 8]
cmp byte [ebp], 0xa7
jne 0x4a752b
mov eax, dword [ebp + 0x2c]
cmp byte [eax + 0x2b], 1
jne 0x4a752b
push eax
push dword [esp + 0x20]
call fcn.004e4590
add esp, 8
mov ecx, dword [eax + 8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x48]
test eax, eax
je 0x4a752b
lea edx, [esp + 0x38]
push edx
lea edx, [esp + 0x34]
push edx
push dword [edi + 8]
push 2
push ecx
call eax
add esp, 0x14
mov dword [esp + 0x3c], eax
cmp eax, 0x96
jl 0x4a752b
mov esi, dword [esp + 0x4c]
mov ecx, 1
mov esi, dword [esi + 0x1c]
mov dword [esp + 0x24], esi
jmp 0x4a72ef
mov esi, dword [esp + 0x4c]
mov ecx, 1
mov al, byte [eax*8 + 0x571a00]
mov dword [esp + 0x3c], eax
mov esi, dword [esi + 8]
mov dword [esp + 0x24], esi
jmp 0x4a72ef
cmp cl, 0x34
je 0x4a727b
cmp cl, 0xab
je 0x4a727b
cmp cl, 0x33
jne 0x4a752b
mov ebp, dword [edi + 0xc]
xor ecx, ecx
mov esi, dword [edi + 0x10]
mov dword [esp + 0x24], esi
cmp byte [ebp], 0xa7
jne 0x4a729b
mov eax, dword [ebp + 0x2c]
mov edx, 1
cmp byte [eax + 0x2b], dl
cmove ecx, edx
test esi, esi
je 0x4a72b8
cmp byte [esi], 0xa7
jne 0x4a72b8
mov eax, dword [esi + 0x2c]
cmp byte [eax + 0x2b], 1
jne 0x4a72b8
mov eax, ebp
inc ecx
mov ebp, esi
mov dword [esp + 0x24], eax
mov esi, eax
mov dl, byte [edi]
cmp dl, 0x34
setne al
dec al
and al, 0x44
cmp dl, 0xab
jne 0x4a72d0
mov byte [esp + 0x3c], 0x45
jmp 0x4a72e7
cmp dl, 0x33
movzx eax, al
mov dword [esp + 0x64], 0x46
cmove eax, dword [esp + 0x64]
mov byte [esp + 0x3c], al
test ecx, ecx
je 0x4a7527
mov eax, dword [esp + 0x74]
lea eax, [eax + eax*2]
shl eax, 4
mov dword [esp + 0x5c], eax
nop dword [eax]
dec ecx
mov dword [esp + 0x64], ecx
test esi, esi
je 0x4a7358
cmp byte [esi], 0xa7
jne 0x4a7329
test byte [esi + 4], 0x20
jne 0x4a7329
push dword [esi + 0x1c]
push dword [esp + 0x1c]
call fcn.00511800
add esp, 8
mov dword [esp + 0x28], edx
jmp 0x4a736d
test dword [esi + 4], 0x810000
je 0x4a7345
xorps xmm0, xmm0
movlpd qword [esp + 0x50], xmm0
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x28], ecx
jmp 0x4a7369
push esi
push dword [esp + 0x1c]
call fcn.00511600
add esp, 8
mov dword [esp + 0x28], edx
jmp 0x4a736d
xorps xmm0, xmm0
movlpd qword [esp + 0x50], xmm0
mov eax, dword [esp + 0x54]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x2c], eax
test ebp, ebp
je 0x4a73aa
cmp byte [ebp], 0xa7
jne 0x4a7392
test byte [ebp + 4], 0x20
jne 0x4a7392
push dword [ebp + 0x1c]
push dword [esp + 0x1c]
call fcn.00511800
add esp, 8
jmp 0x4a73bb
test dword [ebp + 4], 0x810000
jne 0x4a73aa
push ebp
push dword [esp + 0x1c]
call fcn.00511600
add esp, 8
jmp 0x4a73bb
xorps xmm0, xmm0
movlpd qword [esp + 0x50], xmm0
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
and eax, dword [esp + 0x2c]
and edx, dword [esp + 0x28]
or eax, edx
jne 0x4a7511
test esi, esi
je 0x4a73e0
push eax
push eax
push esi
push dword [esp + 0x28]
call fcn.004a85e0
add esp, 0x10
jmp 0x4a73e2
xor eax, eax
push 0
push 0x34
push dword [ebx]
mov dword [esp + 0x5c], eax
call fcn.004d5b60
mov esi, eax
add esp, 0xc
test esi, esi
je 0x4a7457
push 0x34
push 0
push esi
call fcn.005326d0
mov ecx, dword [esp + 0x5c]
or eax, 0xffffffff
add esp, 0xc
mov byte [esi], 0x2e
mov word [esi + 0x22], ax
lea edx, [eax + 0x19]
test ecx, ecx
je 0x4a7430
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 0x4a7435
mov ecx, 1
mov eax, esi
mov dword [eax + edx], ecx
mov eax, dword [ebx]
mov eax, dword [eax + 0x84]
cmp ecx, eax
jle 0x4a746a
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ebx
call fcn.004d7b40
add esp, 0xc
jmp 0x4a746a
mov eax, dword [esp + 0x50]
test eax, eax
je 0x4a746a
push eax
push dword [ebx]
call fcn.004db740
add esp, 8
test byte [edi + 4], 1
je 0x4a747e
test esi, esi
je 0x4a747e
or dword [esi + 4], 1
mov eax, dword [edi + 0x24]
mov dword [esi + 0x24], eax
mov eax, dword [esp + 0x70]
push 3
push esi
push eax
call fcn.00520bc0
mov ecx, dword [esp + 0x7c]
add esp, 0xc
mov ebx, dword [esp + 0x74]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x2c]
mov esi, dword [ecx + 0x18]
shl edx, 4
add esi, edx
mov dword [esi + 0x20], eax
mov eax, dword [esp + 0x28]
mov dword [esi + 0x24], eax
mov eax, dword [ebp + 0x1c]
mov dword [esi + 0x14], eax
movsx eax, word [ebp + 0x20]
mov dword [esi + 0x18], eax
mov eax, 0x40
mov word [esi + 0xc], ax
mov eax, dword [esp + 0x3c]
mov byte [esi + 0xf], al
mov eax, dword [ecx + 0x18]
mov dword [eax + edx + 0x10], ebx
mov ecx, dword [ecx + 0x18]
mov eax, dword [esp + 0x5c]
mov ebx, dword [esp + 0x58]
mov ax, word [ecx + eax + 8]
mov word [ecx + edx + 8], ax
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x5c]
mov eax, dword [ecx + 0x18]
inc byte [eax + edx + 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 + 0x24]
mov ecx, dword [esp + 0x64]
mov eax, ebp
mov ebp, esi
mov esi, eax
mov dword [esp + 0x24], esi
test ecx, ecx
jg 0x4a7300
mov esi, dword [esp + 0x70]
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x40]
lea eax, [eax + eax*2]
shl eax, 4
add eax, dword [esi + 0x18]
or dword [eax + 0x20], ecx
mov ecx, dword [esp + 0x48]
or dword [eax + 0x24], ecx
pop edi
pop ebp
pop esi
pop ebx
add esp, 0x58
ret