-- UUAGC 0.9.36 (src/ByteCode.ag) module ByteCode where {-# LINE 6 "src/ByteCode.ag" #-} import Data.Word import Data.ByteString.Lazy(ByteString) import Data.Bits {-# LINE 12 "dist/src/sdist.27680/asil-1.2/dist/build/ByteCode.hs" #-} {-# LINE 19 "src/ByteCode.ag" #-} fromS24 :: Word32 -> Int fromS24 w | testBit w 31 = negate (fromIntegral w) | otherwise = fromIntegral w {-# LINE 18 "dist/src/sdist.27680/asil-1.2/dist/build/ByteCode.hs" #-} {-# LINE 27 "src/ByteCode.ag" #-} type AbcFiles = [AbcFile] type SwfFiles = [SwfFile] {-# LINE 24 "dist/src/sdist.27680/asil-1.2/dist/build/ByteCode.hs" #-} -- AbcFile ----------------------------------------------------- data AbcFile = AbcFile_File !(Word16) !(Word16) !(PoolInfo ) !(MethodInfos ) !(MetaInfos ) !(InstanceInfos ) !(ClassInfos ) !(ScriptInfos ) !(BodyInfos ) deriving ( Eq,Ord,Show) -- AbcFlag ----------------------------------------------------- data AbcFlag = AbcFlag_LazyInit deriving ( Eq,Ord,Show) -- AbcFlags ---------------------------------------------------- type AbcFlags = [AbcFlag ] -- BodyInfo ---------------------------------------------------- data BodyInfo = BodyInfo_Info !(Word32) !(Word32) !(Word32) !(Word32) !(Word32) !(Instructions ) !(Exceptions ) !(Traits ) deriving ( Eq,Ord,Show) -- BodyInfos --------------------------------------------------- type BodyInfos = [BodyInfo ] -- CaseOffsets ------------------------------------------------- type CaseOffsets = [(Word32)] -- ClassInfo --------------------------------------------------- data ClassInfo = ClassInfo_Info !(Word32) !(Traits ) deriving ( Eq,Ord,Show) -- ClassInfos -------------------------------------------------- type ClassInfos = [ClassInfo ] -- DebugType --------------------------------------------------- data DebugType = DebugType_Local deriving ( Eq,Ord,Show) -- Exception --------------------------------------------------- data Exception = Exception_Info !(Word32) !(Word32) !(Word32) !(Word32) !(Word32) deriving ( Eq,Ord,Show) -- Exceptions -------------------------------------------------- type Exceptions = [Exception ] -- InstanceFlag ------------------------------------------------ data InstanceFlag = InstanceFlag_ClassFinal | InstanceFlag_ClassInterface | InstanceFlag_ClassProtected | InstanceFlag_ClassSealed deriving ( Eq,Ord,Show) -- InstanceFlags ----------------------------------------------- type InstanceFlags = [InstanceFlag ] -- InstanceInfo ------------------------------------------------ data InstanceInfo = InstanceInfo_Info !(Word32) !(Word32) !(InstanceFlags ) !(Word32) !(Interfaces ) !(Word32) !(Traits ) deriving ( Eq,Ord,Show) -- InstanceInfos ----------------------------------------------- type InstanceInfos = [InstanceInfo ] -- Instruction ------------------------------------------------- data Instruction = Instruction_Add | Instruction_Add_d | Instruction_Add_i | Instruction_ApplyType !(Word32) | Instruction_AsType !(Word32) | Instruction_AsTypeLate | Instruction_BitAnd | Instruction_BitNot | Instruction_BitOr | Instruction_BitXor | Instruction_BreakLine !(Word32) | Instruction_Breakpoint | Instruction_Call !(Word32) | Instruction_CallInterface !(Word32) !(Word32) | Instruction_CallMethod !(Word32) !(Word32) | Instruction_CallProp !(Word32) !(Word32) | Instruction_CallPropLex !(Word32) !(Word32) | Instruction_CallPropVoid !(Word32) !(Word32) | Instruction_CallStatic !(Word32) !(Word32) | Instruction_CallSuper !(Word32) !(Word32) | Instruction_CallSuperId | Instruction_CallSuperVoid !(Word32) !(Word32) | Instruction_CheckFilter | Instruction_Coerce !(Word32) | Instruction_Coerce_a | Instruction_Coerce_b | Instruction_Coerce_d | Instruction_Coerce_i | Instruction_Coerce_o | Instruction_Coerce_s | Instruction_Coerce_u | Instruction_Concat | Instruction_Construct !(Word32) | Instruction_ConstructProp !(Word32) !(Word32) | Instruction_ConstructSuper !(Word32) | Instruction_Convert_b | Instruction_Convert_d | Instruction_Convert_i | Instruction_Convert_o | Instruction_Convert_s | Instruction_Convert_u | Instruction_Debug !(DebugType ) !(Word32) !(Word32) !(Word32) | Instruction_DebugFile !(Word32) | Instruction_DebugLine !(Word32) | Instruction_DecLocal !(Word32) | Instruction_DecLocal_i !(Word32) | Instruction_Decrement | Instruction_Decrement_i | Instruction_DeleteProperty !(Word32) | Instruction_DeletePropertyLate | Instruction_Divide | Instruction_Dup | Instruction_Dxns !(Word32) | Instruction_DxnsLate | Instruction_Equals | Instruction_EscXAttr | Instruction_EscXElem | Instruction_FindDef !(Word32) | Instruction_FindPropStrict !(Word32) | Instruction_FindProperty !(Word32) | Instruction_FindPropertyGlobal !(Word32) | Instruction_FindPropertyGlobalStrict !(Word32) | Instruction_GetDescendants !(Word32) | Instruction_GetGlobalScope | Instruction_GetGlobalSlot !(Word32) | Instruction_GetLex !(Word32) | Instruction_GetLocal !(Word32) | Instruction_GetLocal0 | Instruction_GetLocal1 | Instruction_GetLocal2 | Instruction_GetLocal3 | Instruction_GetOuterScope !(Word32) | Instruction_GetProperty !(Word32) | Instruction_GetScopeObject !(Word8) | Instruction_GetSlot !(Word32) | Instruction_GetSuper !(Word32) | Instruction_GreaterEquals | Instruction_GreaterThan | Instruction_HasNext | Instruction_HasNext2 !(Word32) !(Word32) | Instruction_IfEq !(Word32) | Instruction_IfFalse !(Word32) | Instruction_IfGe !(Word32) | Instruction_IfGt !(Word32) | Instruction_IfLe !(Word32) | Instruction_IfLt !(Word32) | Instruction_IfNGe !(Word32) | Instruction_IfNGt !(Word32) | Instruction_IfNLe !(Word32) | Instruction_IfNLt !(Word32) | Instruction_IfNe !(Word32) | Instruction_IfStrictEq !(Word32) | Instruction_IfStrictNe !(Word32) | Instruction_IfTrue !(Word32) | Instruction_In | Instruction_IncLocal !(Word32) | Instruction_IncLocal_i !(Word32) | Instruction_Increment | Instruction_Increment_i | Instruction_InitProperty !(Word32) | Instruction_InstanceOf | Instruction_IsType !(Word32) | Instruction_IsTypeLate | Instruction_Jump !(Word32) | Instruction_Kill !(Word32) | Instruction_Label | Instruction_LessEquals | Instruction_LessThan | Instruction_LoadFloat32 | Instruction_LoadFloat64 | Instruction_LoadIndirect16 | Instruction_LoadIndirect32 | Instruction_LoadIndirect8 | Instruction_Location !(Int) | Instruction_LookupSwitch !(Word32) !(CaseOffsets ) | Instruction_Lshift | Instruction_Modulo | Instruction_Multiply | Instruction_Multiply_i | Instruction_Negate | Instruction_Negate_i | Instruction_NewActivation | Instruction_NewArray !(Word32) | Instruction_NewCatch !(Word32) | Instruction_NewClass !(Word32) | Instruction_NewFunction !(Word32) | Instruction_NewObject !(Word32) | Instruction_NextName | Instruction_NextValue | Instruction_Nop | Instruction_Not | Instruction_Pop | Instruction_PopScope | Instruction_PushByte !(Word8) | Instruction_PushDouble !(Word32) | Instruction_PushFalse | Instruction_PushInt !(Word32) | Instruction_PushNaN | Instruction_PushNamespace !(Word32) | Instruction_PushNull | Instruction_PushScope | Instruction_PushShort !(Word32) | Instruction_PushString !(Word32) | Instruction_PushTrue | Instruction_PushUInt !(Word32) | Instruction_PushUndefined | Instruction_PushWith | Instruction_ReturnValue | Instruction_ReturnVoid | Instruction_Rshift | Instruction_SetGlobalSlot !(Word32) | Instruction_SetLocal !(Word32) | Instruction_SetLocal0 | Instruction_SetLocal1 | Instruction_SetLocal2 | Instruction_SetLocal3 | Instruction_SetProperty !(Word32) | Instruction_SetPropertyLate | Instruction_SetSlot !(Word32) | Instruction_SetSuper !(Word32) | Instruction_SignExtend1 | Instruction_SignExtend16 | Instruction_SignExtend8 | Instruction_StoreFloat32 | Instruction_StoreFloat64 | Instruction_StoreIndirect16 | Instruction_StoreIndirect32 | Instruction_StoreIndirect8 | Instruction_StrictEquals | Instruction_Substract | Instruction_Substract_i | Instruction_Swap | Instruction_Throw | Instruction_Timestamp | Instruction_TypeOf | Instruction_Urshift deriving ( Eq,Ord,Show) -- Instructions ------------------------------------------------ type Instructions = [Instruction ] -- Interfaces -------------------------------------------------- type Interfaces = [(Word32)] -- MetaInfo ---------------------------------------------------- data MetaInfo = MetaInfo_Info !(Word32) !(MetaItems ) deriving ( Eq,Ord,Show) -- MetaInfos --------------------------------------------------- type MetaInfos = [MetaInfo ] -- MetaItem ---------------------------------------------------- data MetaItem = MetaItem_Item !(Word32) !(Word32) deriving ( Eq,Ord,Show) -- MetaItems --------------------------------------------------- type MetaItems = [MetaItem ] -- MethodFlag -------------------------------------------------- data MethodFlag = MethodFlag_HasOptionals | MethodFlag_HasParamNames | MethodFlag_NeedAct | MethodFlag_NeedArgs | MethodFlag_NeedRest | MethodFlag_SetDXNS deriving ( Eq,Ord,Show) -- MethodFlags ------------------------------------------------- type MethodFlags = [MethodFlag ] -- MethodInfo -------------------------------------------------- data MethodInfo = MethodInfo_Info !(Word32) !(ParamTypes ) !(Word32) !(MethodFlags ) !(Optionals ) !(ParamNames ) deriving ( Eq,Ord,Show) -- MethodInfos ------------------------------------------------- type MethodInfos = [MethodInfo ] -- MultinameInfo ----------------------------------------------- data MultinameInfo = MultinameInfo_Generic !(Word32) !(ParamNames ) | MultinameInfo_Multiname !(Word32) !(Word32) | MultinameInfo_MultinameA !(Word32) !(Word32) | MultinameInfo_MultinameL !(Word32) | MultinameInfo_MultinameLA !(Word32) | MultinameInfo_QName !(Word32) !(Word32) | MultinameInfo_QNameA !(Word32) !(Word32) | MultinameInfo_RTQName !(Word32) | MultinameInfo_RTQNameA !(Word32) | MultinameInfo_RTQNameL | MultinameInfo_RTQNameLA deriving ( Eq,Ord,Show) -- MultinameInfos ---------------------------------------------- type MultinameInfos = [MultinameInfo ] -- MultinameKind ----------------------------------------------- data MultinameKind = MultinameKind_Generic | MultinameKind_Multiname | MultinameKind_MultinameA | MultinameKind_MultinameL | MultinameKind_MultinameLA | MultinameKind_QName | MultinameKind_QNameA | MultinameKind_RTQName | MultinameKind_RTQNameA | MultinameKind_RTQNameL | MultinameKind_RTQNameLA deriving ( Eq,Ord,Show) -- NamespaceInfo ----------------------------------------------- data NamespaceInfo = NamespaceInfo_Info !(NamespaceKind ) !(Word32) deriving ( Eq,Ord,Show) -- NamespaceInfos ---------------------------------------------- type NamespaceInfos = [NamespaceInfo ] -- NamespaceKind ----------------------------------------------- data NamespaceKind = NamespaceKind_Explicit | NamespaceKind_General | NamespaceKind_Internal | NamespaceKind_Package | NamespaceKind_Private | NamespaceKind_Protected | NamespaceKind_Static deriving ( Eq,Ord,Show) -- NamespaceNames ---------------------------------------------- type NamespaceNames = [(Word32)] -- Optional ---------------------------------------------------- data Optional = Optional_Detail !(Word32) !(ValueKind ) deriving ( Eq,Ord,Show) -- Optionals --------------------------------------------------- type Optionals = [Optional ] -- ParamNames -------------------------------------------------- type ParamNames = [(Word32)] -- ParamTypes -------------------------------------------------- type ParamTypes = [(Word32)] -- PoolDoubles ------------------------------------------------- type PoolDoubles = [(Double)] -- PoolInfo ---------------------------------------------------- data PoolInfo = PoolInfo_Info !(PoolInts ) !(PoolUInts ) !(PoolDoubles ) !(PoolStrings ) !(NamespaceInfos ) !(SetInfos ) !(MultinameInfos ) deriving ( Eq,Ord,Show) -- PoolInts ---------------------------------------------------- type PoolInts = [(Word32)] -- PoolStrings ------------------------------------------------- type PoolStrings = [(ByteString)] -- PoolUInts --------------------------------------------------- type PoolUInts = [(Word32)] -- Rect -------------------------------------------------------- data Rect = Rect_Rect !(Int) !(Word32) !(Word32) !(Word32) !(Word32) deriving ( Eq,Ord,Show) -- ScriptInfo -------------------------------------------------- data ScriptInfo = ScriptInfo_Info !(Word32) !(Traits ) deriving ( Eq,Ord,Show) -- ScriptInfos ------------------------------------------------- type ScriptInfos = [ScriptInfo ] -- SetInfo ----------------------------------------------------- data SetInfo = SetInfo_Info !(NamespaceNames ) deriving ( Eq,Ord,Show) -- SetInfos ---------------------------------------------------- type SetInfos = [SetInfo ] -- SwfFile ----------------------------------------------------- data SwfFile = SwfFile_File !(Bool) !(Word8) !(Word32) !(Rect ) !(Word16) !(Word16) !(Tags ) deriving ( Eq,Ord,Show) -- Tag --------------------------------------------------------- data Tag = Tag_Abc !(AbcFlags ) !(ByteString) !(AbcFile ) | Tag_End | Tag_FileAttributes !(Bool) !(Bool) !(Bool) !(Bool) !(Bool) | Tag_Opaque !(TagKind ) !(Word32) !(ByteString) deriving ( Eq,Ord,Show) -- TagKind ----------------------------------------------------- data TagKind = TagKind_CSMTextSettings | TagKind_DefineBinaryData | TagKind_DefineBits | TagKind_DefineBitsJPEG2 | TagKind_DefineBitsJPEG3 | TagKind_DefineBitsJPEG4 | TagKind_DefineBitsLossless | TagKind_DefineBitsLossless2 | TagKind_DefineButton | TagKind_DefineButton2 | TagKind_DefineButtonCxform | TagKind_DefineButtonSound | TagKind_DefineEditText | TagKind_DefineFont | TagKind_DefineFont2 | TagKind_DefineFont3 | TagKind_DefineFont4 | TagKind_DefineFontAlignZones | TagKind_DefineFontInfo | TagKind_DefineFontInfo2 | TagKind_DefineFontName | TagKind_DefineMorphShape | TagKind_DefineMorphShape2 | TagKind_DefineScalingGrid | TagKind_DefineSceneAndFrameLabelData | TagKind_DefineShape | TagKind_DefineShape2 | TagKind_DefineShape3 | TagKind_DefineShape4 | TagKind_DefineSound | TagKind_DefineSprite | TagKind_DefineText | TagKind_DefineText2 | TagKind_DefineVideoStream | TagKind_DoABC | TagKind_DoAction | TagKind_DoInitAction | TagKind_EnableDebugger | TagKind_EnableDebugger2 | TagKind_End | TagKind_ExportAssets | TagKind_FileAttributes | TagKind_FrameLabel | TagKind_ImportAssets | TagKind_ImportAssets2 | TagKind_JPEGTables | TagKind_Metadata | TagKind_Other !(Word16) | TagKind_PlaceObject | TagKind_PlaceObject2 | TagKind_PlaceObject3 | TagKind_Protect | TagKind_RemoveObject | TagKind_RemoveObject2 | TagKind_ScriptLimits | TagKind_SetBackgroundColor | TagKind_SetTabIndex | TagKind_ShowFrame | TagKind_SoundStreamBlock | TagKind_SoundStreamHead | TagKind_SoundStreamHead2 | TagKind_StartSound | TagKind_StartSound2 | TagKind_SymbolClass | TagKind_VideoFrame deriving ( Eq,Ord,Show) -- Tags -------------------------------------------------------- type Tags = [Tag ] -- Trait ------------------------------------------------------- data Trait = Trait_Trait !(Word32) !(TraitData ) !(TraitAttrs ) !(TraitMeta ) deriving ( Eq,Ord,Show) -- TraitAttr --------------------------------------------------- data TraitAttr = TraitAttr_Final | TraitAttr_Metadata | TraitAttr_Override deriving ( Eq,Ord,Show) -- TraitAttrs -------------------------------------------------- type TraitAttrs = [TraitAttr ] -- TraitData --------------------------------------------------- data TraitData = TraitData_Class !(Word32) !(Word32) | TraitData_Const !(Word32) !(Word32) !(Word32) !(ValueKind ) | TraitData_Function !(Word32) !(Word32) | TraitData_Getter !(Word32) !(Word32) | TraitData_Method !(Word32) !(Word32) | TraitData_Setter !(Word32) !(Word32) | TraitData_Slot !(Word32) !(Word32) !(Word32) !(ValueKind ) deriving ( Eq,Ord,Show) -- TraitKind --------------------------------------------------- data TraitKind = TraitKind_Class | TraitKind_Const | TraitKind_Function | TraitKind_Getter | TraitKind_Method | TraitKind_Setter | TraitKind_Slot deriving ( Eq,Ord,Show) -- TraitMeta --------------------------------------------------- type TraitMeta = [(Word32)] -- Traits ------------------------------------------------------ type Traits = [Trait ] -- ValueKind --------------------------------------------------- data ValueKind = ValueKind_Double | ValueKind_Explicit | ValueKind_False | ValueKind_Int | ValueKind_Internal | ValueKind_Namespace | ValueKind_Null | ValueKind_Package | ValueKind_Private | ValueKind_Protected | ValueKind_Static | ValueKind_True | ValueKind_UInt | ValueKind_Undefined | ValueKind_Utf8 deriving ( Eq,Ord,Show)