<?xml version="1.0"?>
<swf version="9" compressed="1">
  <Header framerate="25" frames="1">
    <size>
      <Rectangle left="0" right="8000" top="0" bottom="6000"/>
    </size>
    <tags>
      <FileAttributes hasMetaData="0" allowABC="1" suppressCrossDomainCaching="0" swfRelativeURLs="0" useNetwork="0"/>
      <DoABCDefine flags="0" name="">
        <actions>
          <Action3 minorVersion="16" majorVersion="46">
            <constants>
              <Constants>
                <ints/>
                <uints/>
                <doubles/>
                <strings>
                  <String2 value="A.f()"/>
                  <String2 value="A"/>
                  <String2 value="MovieClip"/>
                  <String2 value="f"/>
                  <String2 value="Object"/>
                  <String2 value="EventDispatcher"/>
                  <String2 value="DisplayObject"/>
                  <String2 value="InteractiveObject"/>
                  <String2 value="DisplayObjectContainer"/>
                  <String2 value="Sprite"/>
                  <String2 value="trace"/>
                  <String2 value="a"/>
                  <String2 value="flash.display"/>
                  <String2 value=""/>
                  <String2 value="flash.events"/>
                </strings>
                <namespaces>
                  <ProtectedNamespace index="2"/>
                  <PackageNamespace index="12"/>
                  <PackageNamespace index="13"/>
                  <PackageNamespace index="14"/>
                  <PackageNamespace index="15"/>
                </namespaces>
                <namespaceSets/>
                <multinames>
                  <QName namespaceIndex="2" nameIndex="2"/>
                  <QName namespaceIndex="3" nameIndex="3"/>
                  <QName namespaceIndex="4" nameIndex="4"/>
                  <QName namespaceIndex="4" nameIndex="5"/>
                  <QName namespaceIndex="5" nameIndex="6"/>
                  <QName namespaceIndex="3" nameIndex="7"/>
                  <QName namespaceIndex="3" nameIndex="8"/>
                  <QName namespaceIndex="3" nameIndex="9"/>
                  <QName namespaceIndex="3" nameIndex="10"/>
                  <QName namespaceIndex="4" nameIndex="11"/>
                </multinames>
              </Constants>
            </constants>
            <methods>
              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" needActivation="0" needArguments="0">
                <paramTypes/>
              </MethodInfo>
              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" needActivation="0" needArguments="0">
                <paramTypes/>
              </MethodInfo>
              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" needActivation="0" needArguments="0">
                <paramTypes/>
              </MethodInfo>
              <MethodInfo retType="0" nameIndex="0" hasParamNames="0" setSDXNs="0" isExplicit="0" ignoreRest="0" hasOptional="0" needRest="0" needActivation="0" needArguments="0">
                <paramTypes/>
              </MethodInfo>
            </methods>
            <metadata/>
            <instances>
              <InstanceInfo nameIndex="1" superIndex="2" hasProtectedNS="1" interface="0" final="0" sealed="1" protectedNS="1" iInitIndex="2">
                <interfaces/>
                <traits>
                  <TraitInfo nameIndex="3" override="0" final="0">
                    <trait>
                      <Method dispID="1" methodInfo="1"/>
                    </trait>
                  </TraitInfo>
                </traits>
              </InstanceInfo>
            </instances>
            <classes>
              <ClassInfo cInitIndex="3">
                <traits/>
              </ClassInfo>
            </classes>
            <scripts>
              <ScriptInfo initIndex="0">
                <traits>
                  <TraitInfo nameIndex="1" override="0" final="0">
                    <trait>
                      <Class slotID="1" classInfo="0"/>
                    </trait>
                  </TraitInfo>
                </traits>
              </ScriptInfo>
            </scripts>
            <methodBodies>
              <MethodBody methodInfo="0" maxStack="3" maxRegs="1" scopeDepth="0" maxScope="8" exceptionCount="0">
                <code>
                  <OpGetLocal0/>
                  <OpPushScope/>
                  <OpGetGlobalScope/>
                  <OpGetLex name="2"/>
                  <OpDup/>
                  <OpPushScope/>
                  <OpNewClass classIndex="0"/>
                  <OpPopScope/>
                  <OpSetSlot slotID="1"/>
                  <OpReturnVoid/>
                </code>
                <exceptions/>
                <traits/>
              </MethodBody>

              <!-- This is function A.f() -->
              <!--
              Its purpose is to push things onto the stack and the scope
              stack and leave them there to see whether they are still
              available after return.
              Ideally we would also verify that the stack and the scope stack
              from before this function call are not available, but this causes
              VerifyErrors that interrupt execution.
              -->
              <MethodBody methodInfo="1" maxStack="8" maxRegs="1" scopeDepth="5" maxScope="14" exceptionCount="0">
                <code>

                  <!-- OpPop and OpPopScope cause a scope stack
                  underflow error, so we don't do it. -->

                  <OpFindPropStrict name="10"/>
                  <OpPushString index="1"/>
                  <OpCallPropVoid name="10" argc="1"/>

                  <!-- Push junk to the stack -->
                  <OpPushByte value="9"/>
                  <OpPushByte value="9"/>
                  <OpPushByte value="9"/>
                  <OpPushByte value="9"/>
                  <OpPushByte value="9"/>
                  
                  <!-- Push junk to the scope stack (first A.A, then
                  4 Sprite classes) -->
                  <OpGetLocal0/>
                  <OpPushScope/>
                  <OpGetGlobalScope/>
                  <OpGetLex name="9"/>
                  <OpPushScope/>
                  <OpGetLex name="9"/>
                  <OpPushScope/>
                  <OpGetLex name="9"/>
                  <OpPushScope/>
                  <OpGetLex name="9"/>
                  <OpPushScope/>

                  <!-- Check that the junk is there -->
                  <OpFindPropStrict name="10"/>
                  <OpGetScopeObject scopeIndex="0"/>
                  <OpCallPropVoid name="10" argc="1"/>
                  <OpFindPropStrict name="10"/>
                  <OpGetScopeObject scopeIndex="1"/>
                  <OpCallPropVoid name="10" argc="1"/>
                  <OpFindPropStrict name="10"/>
                  <OpGetScopeObject scopeIndex="2"/>
                  <OpCallPropVoid name="10" argc="1"/>
                  <OpFindPropStrict name="10"/>
                  <OpGetScopeObject scopeIndex="3"/>
                  <OpCallPropVoid name="10" argc="1"/>
                  <OpFindPropStrict name="10"/>
                  <OpGetScopeObject scopeIndex="4"/>
                  <OpCallPropVoid name="10" argc="1"/>
                  <!-- scopeIndex 5 causes a VerifyError (out of bounds),
                  so the scope stack from before the call is not available. -->

		  <OpReturnVoid/>
                </code>
                <exceptions/>
                <traits/>
              </MethodBody>
              <MethodBody methodInfo="2" maxStack="10" maxRegs="1" scopeDepth="8" maxScope="12" exceptionCount="0">
                <code>
                  <OpGetLocal0/>
                  <OpConstructSuper argc="0"/>
		  
                  <!-- Push stuff to the scope stack (A.A then three 
                  EventDispatcher classes) -->
                  <OpGetLocal0/>
                  <OpPushScope/>
                  <OpGetGlobalScope/>
                  <OpGetLex name="5"/>
                  <OpPushScope/>
                  <OpGetLex name="5"/>
                  <OpPushScope/>
                  <OpGetLex name="5"/>
                  <OpPushScope/>

                  <!-- Push 3 values, 3 trace function lookups to the stack -->
                  <OpFindPropStrict name="10"/>
                  <OpPushByte value="1"/>	
                  <OpFindPropStrict name="10"/>
                  <OpPushByte value="2"/>	
                  <OpFindPropStrict name="10"/>
                  <OpPushByte value="3"/>	
                  
                  <!-- This is one call to trace() -->
                  <OpCallPropVoid name="10" argc="1"/>
		  
                  <!-- This is the call to f() -->
                  <!-- f() pushes things to the stack and scope stack, 
                  and leaves them there. They should not be available after
                  the function call has finished, but what was on the stacks
                  before the call should still be there. -->
                  <OpGetLocal0/>
                  <OpCallPropVoid name="3" argc="0"/>
		  
                  <!-- These are the remaining calls to trace() -->
                  <OpCallPropVoid name="10" argc="1"/>
                  <OpCallPropVoid name="10" argc="1"/>

                  <!-- Now trace what's on the scope stack -->
                  <OpFindPropStrict name="10"/>
                  <OpGetScopeObject scopeIndex="0"/>
                  <OpCallPropVoid name="10" argc="1"/>
		  
                  <OpFindPropStrict name="10"/>
                  <OpGetScopeObject scopeIndex="1"/>
                  <OpCallPropVoid name="10" argc="1"/>
		  
                  <OpFindPropStrict name="10"/>
                  <OpGetScopeObject scopeIndex="2"/>
                  <OpCallPropVoid name="10" argc="1"/>
		  
                  <OpFindPropStrict name="10"/>
                  <OpGetScopeObject scopeIndex="3"/>
                  <OpCallPropVoid name="10" argc="1"/>
		  
                  <OpReturnVoid/>
                </code>
                <exceptions/>
                <traits/>
              </MethodBody>
              <MethodBody methodInfo="3" maxStack="1" maxRegs="1" scopeDepth="8" maxScope="9" exceptionCount="0">
                <code>
                  <OpGetLocal0/>
                  <OpPushScope/>
                  <OpReturnVoid/>
                </code>
                <exceptions/>
                <traits/>
              </MethodBody>
            </methodBodies>
          </Action3>
        </actions>
      </DoABCDefine>
      <SymbolClass>
        <symbols>
          <Symbol objectID="0" name="a.A"/>
        </symbols>
      </SymbolClass>
      <ShowFrame/>
      <End/>
    </tags>
  </Header>
</swf>
