Blob Blame History Raw
    /*
     * Some or all of this work - Copyright (c) 2006 - 2018, Intel Corp.
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without modification,
     * are permitted provided that the following conditions are met:
     *
     * Redistributions of source code must retain the above copyright notice,
     * this list of conditions and the following disclaimer.
     * Redistributions in binary form must reproduce the above copyright notice,
     * this list of conditions and the following disclaimer in the documentation
     * and/or other materials provided with the distribution.
     * Neither the name of Intel Corporation nor the names of its contributors
     * may be used to endorse or promote products derived from this software
     * without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
     * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
     * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     */
    /*
     * Check Result Object proccessing on optional storing
     * in the explicit conversion operators
     */
    Name (Z126, 0x7E)
    /* m693(<store op>, <exc. conditions>, */
    /*      <Target scale>, <Result scale>, <kind of Source-Target pair>) */
    Method (M693, 5, Serialized)
    {
        Name (TS, "m693")
        /*
         - choose a type of the Object to store into:
         = Uninitialized
         = Integer
         = String
         = Buffer
         = Package
         ...
         - choose a value of the Object to store into
         - choose kind of the Object to store into:
         = Named Object
         = Method LocalX Object
         - determine the destination Object to store into: it should exist
         and be initialized with the chosen value (Dst0)
         - choose a way to obtain some result object (Expr ~ Result Object
         returned by any Explicit conversion Operator (Op)):
         = ToInteger
         = ToBCD
         = FromBCD
         = ToString
         = ToHexString
         = ToDecimalString
         = ToBuffer
         - choose storing expression:
         = Store(Op(Src0, ...), Dst0)
         = CopyObject(Op(Src0, ...), Dst0)
         = Op(Src0, ..., Dst0)
         - the type of the result Object depend on the Operator
         - choose specific source objects to obtain the result Object of
         the specified type: it should exist and be initialized (Src0, ...)
         - choose a benchmark value according to a storing expression,
         chosen source objects, the value of the target object and
         relevant result conversion rule (if any) - Bval
         - check that the destination Object Dst0 is properly initialized
         - perform storing expression:
         Store(Expr(Src0, ...), Dst0)
         CopyObject(Expr(Src0, ...), Dst0)
         Op(Expr(Src0, ...), Dst0)
         - check that the benchmark value Bval is equal to the updated
         destination Object Dst0:
         - check that the source objects are not updated:
         - update the destination Object again and check that the source
         objects are not updated
         */
        /* Object-initializers are used either with Source or Target */
        /* (names ended by 0 and 1 respectively) */
        /* Integer */
        Name (INT0, 0xFEDCBA9876543210)
        Name (INT1, 0xFEDCBA9876543211)
        /* String */

        Name (STR0, "source string")
        Name (STR1, "target string")
        /* Buffer */

        Name (BUF0, Buffer (0x09)
        {
            /* 0000 */  0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02,  // ........
            /* 0008 */  0x01                                             // .
        })
        Name (BUF1, Buffer (0x11)
        {
             0xC3                                             // .
        })
        /* Base of Buffer Fields */

        Name (BUFZ, Buffer (0x14){})
        Name (PAC1, Package (0x01)
        {
            "target package"
        })
        /* Device */

        Device (DEV1)
        {
            Name (S000, "DEV1")
        }

        /* Event */

        Event (EVE1)
        /* Method */

        Name (MM01, "ff1Y")  /* Value, returned from MMMY */
        Name (MMM1, 0x00)   /* Method as Target Object */
        Method (MMMY, 0, NotSerialized)
        {
            Return (MM01) /* \M693.MM01 */
        }

        /* Mutex */

        Mutex (MTX1, 0x00)
        If (Y361)
        {
            /* Operation Region */

            OperationRegion (OPR0, SystemMemory, 0x00, 0x14)
            OperationRegion (OPR1, SystemMemory, 0x00, 0x14)
        }

        /* Power Resource */

        PowerResource (PWR1, 0x00, 0x0000)
        {
            Name (S000, "PWR1")
        }

        /* Processor */

        Processor (CPU1, 0x00, 0xFFFFFFFF, 0x00)
        {
            Name (S000, "CPU1")
        }

        /* Thermal Zone */

        ThermalZone (TZN1)
        {
            Name (S000, "TZN1")
        }

        /* Reference */

        Name (REF0, Package (0x01){})
        Name (REF1, Package (0x01){})
        /* Data to gather statistics */

        Name (STCS, 0x00)
        Name (INDM, 0xFF)
        Name (PAC2, Package (0x01){})
        Name (IND2, 0x00)
        Name (PAC3, Package (0x01){})
        Name (IND3, 0x00)
        Name (PAC4, Package (0x03)
        {
            "Store",
            "Copyobject",
            "Optional"
        })
        Name (TERR, "-test error")
        /* Update statistics */
        /* m000(<type>, <shift>, <low>, <up>) */
        Method (M000, 4, NotSerialized)
        {
            If ((Arg0 == 0x02))
            {
                If ((IND2 < INDM))
                {
                    Store (((Arg3 * Arg1) + Arg2), PAC2 [IND2])
                    IND2++
                }
            }
            ElseIf ((Arg0 == 0x03))
            {
                If ((IND3 < INDM))
                {
                    Store (((Arg3 * Arg1) + Arg2), PAC3 [IND3])
                    IND3++
                }
            }
        }

        /* Initialize statistics */

        Method (M001, 0, NotSerialized)
        {
            If (STCS)
            {
                PAC2 = Package (0xFF){}
                IND2 = 0x00
                PAC3 = Package (0xFF){}
                IND3 = 0x00
            }
        }

        /* Output statistics */

        Method (M002, 1, Serialized)
        {
            Name (LPN0, 0x00)
            Name (LPC0, 0x00)
            If (STCS)
            {
                Debug = Arg0
                If (IND2)
                {
                    Debug = "Run-time exceptions:"
                    Debug = IND2 /* \M693.IND2 */
                    Debug = "Types:"
                    LPN0 = IND2 /* \M693.IND2 */
                    LPC0 = 0x00
                    While (LPN0)
                    {
                        Debug = DerefOf (PAC2 [LPC0])
                        LPN0--
                        LPC0++
                    }
                }

                If (IND3)
                {
                    Debug = "Type mismatch:"
                    Debug = IND3 /* \M693.IND3 */
                    LPN0 = IND3 /* \M693.IND3 */
                    LPC0 = 0x00
                    While (LPN0)
                    {
                        Debug = DerefOf (PAC3 [LPC0])
                        LPN0--
                        LPC0++
                    }
                }
            }
        }

        /* Prepare Target of specified type */

        Method (M003, 4, Serialized)
        {
            Switch (ToInteger (Arg1))
            {
                Case (0x00)
                {
                                /* Only check */
                }
                Case (0x01)
                {
                    CopyObject (DerefOf (Arg3), INT1) /* \M693.INT1 */
                    CopyObject (INT1, Arg2)
                }
                Case (0x02)
                {
                    CopyObject (DerefOf (Arg3), STR1) /* \M693.STR1 */
                    CopyObject (STR1, Arg2)
                }
                Case (0x03)
                {
                    CopyObject (DerefOf (Arg3), BUF1) /* \M693.BUF1 */
                    Local0 = SizeOf (BUF1)
                    If ((Local0 != 0x11))
                    {
                        ERR (Concatenate (Arg0, TERR), Z126, __LINE__, 0x00, 0x00, Local0, 0x11)
                        Return (0x01)
                    }

                    CopyObject (BUF1, Arg2)
                }
                Case (0x04)
                {
                    CopyObject (DerefOf (Arg3), PAC1) /* \M693.PAC1 */
                    CopyObject (PAC1, Arg2)
                }
                Case (0x05)
                {
                                /* Check only */
                }
                Case (0x06)
                {
                    CopyObject (DEV1, Arg2)
                }
                Case (0x07)
                {
                    CopyObject (EVE1, Arg2)
                }
                Case (0x08)
                {
                    CopyObject (DerefOf (RefOf (MMMY)), MMM1) /* \M693.MMM1 */
                    CopyObject (DerefOf (RefOf (MMM1)), Arg2)
                }
                Case (0x09)
                {
                    CopyObject (MTX1, Arg2)
                }
                Case (0x0A)
                {
                    CopyObject (OPR1, Arg2)
                }
                Case (0x0B)
                {
                    CopyObject (PWR1, Arg2)
                }
                Case (0x0C)
                {
                    CopyObject (CPU1, Arg2)
                }
                Case (0x0D)
                {
                    CopyObject (TZN1, Arg2)
                }
                Case (0x0E)
                {
                                /* Check only */
                }
                Case (0x11)
                {
                    CopyObject (RefOf (REF0), REF1) /* \M693.REF1 */
                    /*if (y522) { */

                    CopyObject (REF1, Arg2)
                                /*} else { */
                /*	CopyObject(DeRefof(REF1), arg2) */
                /*} */
                }
                /* Unexpected Target Type */

                Default
                {
                    ERR (Concatenate (Arg0, TERR), Z126, __LINE__, 0x00, 0x00, Arg1, 0x00)
                    Return (0x01)
                }

            }

            If (CH03 (Arg0, Z126, __LINE__, 0x00, 0x00))
            {
                /*Exception during preparing of Target Object */

                Return (0x01)
            }

            Local0 = ObjectType (Arg2)
            If ((Local0 != Arg1))
            {
                /* ObjectType of Target can not be set up */

                ERR (Arg0, Z126, __LINE__, 0x00, 0x00, Local0, Arg1)
                Return (0x01)
            }

            Return (0x00)
        }

        /* Prepare Source of specified type */

        Method (M004, 4, Serialized)
        {
            Switch (ToInteger (Arg1))
            {
                Case (0x01)
                {
                    CopyObject (DerefOf (Arg3), INT0) /* \M693.INT0 */
                    CopyObject (INT0, Arg2)
                }
                Case (0x02)
                {
                    CopyObject (DerefOf (Arg3), STR0) /* \M693.STR0 */
                    CopyObject (STR0, Arg2)
                }
                Case (0x03)
                {
                    If (Y136)
                    {
                        CopyObject (DerefOf (Arg3), BUF0) /* \M693.BUF0 */
                    }
                    Else
                    {
                        M687 (DerefOf (Arg3), RefOf (BUF0))
                    }

                    CopyObject (BUF0, Arg2)
                }
                /* Unexpected Source Type */

                Default
                {
                    ERR (Concatenate (Arg0, TERR), Z126, __LINE__, 0x00, 0x00, Arg1, 0x00)
                    Return (0x01)
                }

            }

            If (CH03 (Arg0, Z126, __LINE__, 0x00, 0x00))
            {
                /* Exception during preparing of Source Object */

                Return (0x01)
            }

            Local0 = ObjectType (Arg2)
            If ((Local0 != Arg1))
            {
                /* ObjectType of Source can not be set up */

                ERR (Arg0, Z126, __LINE__, 0x00, 0x00, Local0, Arg1)
                Return (0x01)
            }

            Return (0x00)
        }

        /* Check Source Object type is not corrupted after storing, */
        /* for the computational data types verify its value against */
        /* the Object-initializer value */
        Method (M005, 4, Serialized)
        {
            Local0 = ObjectType (Arg2)
            If ((Local0 != Arg1))
            {
                /* ObjectType of Source object is corrupted */

                ERR (Arg0, Z126, __LINE__, 0x00, 0x00, Local0, Arg1)
                Return (0x01)
            }

            Switch (ToInteger (Arg1))
            {
                Case (0x01)
                {
                    Local0 = ObjectType (INT0)
                }
                Case (0x02)
                {
                    Local0 = ObjectType (STR0)
                }
                Case (0x03)
                {
                    Local0 = ObjectType (BUF0)
                }
                /* Unexpected Result Type */

                Default
                {
                    ERR (Arg0, Z126, __LINE__, 0x00, 0x00, Arg1, 0x00)
                    Return (0x01)
                }

            }

            If ((Local0 != Arg1))
            {
                /* Mismatch of Source Type against specified one */

                ERR (Arg0, Z126, __LINE__, 0x00, 0x00, Local0, Arg1)
                If (STCS)
                {
                    M000 (0x03, 0x01000000, Local0, Arg0)
                }

                Return (0x01)
            }
            Else
            {
                /* Check equality of the Source value to the Object-initializer one */

                Switch (ToInteger (Arg1))
                {
                    Case (0x01)
                    {
                        If ((INT0 != DerefOf (Arg3)))
                        {
                            ERR (Arg0, Z126, __LINE__, 0x00, 0x00, INT0, DerefOf (Arg3))
                            Return (0x01)
                        }

                        If ((DerefOf (Arg2) != INT0))
                        {
                            ERR (Arg0, Z126, __LINE__, 0x00, 0x00, DerefOf (Arg2), INT0)
                            Return (0x01)
                        }
                    }
                    Case (0x02)
                    {
                        If ((STR0 != DerefOf (Arg3)))
                        {
                            ERR (Arg0, Z126, __LINE__, 0x00, 0x00, STR0, DerefOf (Arg3))
                            Return (0x01)
                        }

                        If ((DerefOf (Arg2) != STR0))
                        {
                            ERR (Arg0, Z126, __LINE__, 0x00, 0x00, DerefOf (Arg2), STR0)
                            Return (0x01)
                        }
                    }
                    Case (0x03)
                    {
                        If ((BUF0 != DerefOf (Arg3)))
                        {
                            ERR (Arg0, Z126, __LINE__, 0x00, 0x00, BUF0, DerefOf (Arg3))
                            Return (0x01)
                        }

                        If ((DerefOf (Arg2) != BUF0))
                        {
                            ERR (Arg0, Z126, __LINE__, 0x00, 0x00, DerefOf (Arg2), BUF0)
                            Return (0x01)
                        }
                    }

                }
            }

            Return (0x00)
        }

        /* Check Target Object to have the expected type and value */
        /* m006(<msg>, <ref to target>, <target type>, <source type>, */
        /*      <op>, <target save type>, <test data package>) */
        Method (M006, 7, Serialized)
        {
            Name (MMM2, 0x00) /* The auxiliary Object to invoke Method */
            Local2 = ObjectType (Arg1)
            If ((Local2 != Arg2))
            {
                If (STCS)
                {
                    M000 (0x03, 0x00010000, Arg2, Local2)
                }
            }

            If (M686 (Arg5, Arg2, Arg3))
            {
                /* Target must save type */

                If ((Local2 != Arg2))
                {
                    /* Types mismatch Target/Target on storing */

                    If ((Arg2 == C016))
                    {
                        If (X170)
                        {
                            ERR (Arg0, Z126, __LINE__, 0x00, 0x00, Local2, Arg2)
                        }
                    }
                    Else
                    {
                        ERR (Arg0, Z126, __LINE__, 0x00, 0x00, Local2, Arg2)
                    }

                    If (STCS)
                    {
                        M000 (0x03, 0x0100, Arg2, Local2)
                    }

                    Return (0x01)
                }
            }
            ElseIf            /* Target must accept type of the Result Object */

 ((Local2 != Arg3))
            {
                If ((M684 (Arg3) != 0x01))
                {
                    /* Types mismatch Result/Target on storing */

                    ERR (Arg0, Z126, __LINE__, 0x00, 0x00, Local2, Arg3)
                    Return (0x01)
                }
                ElseIf ((Local2 != 0x03))
                {
                    /* Types mismatch Result/Target on storing */
                    /* Test fixed type Objects are converted to Buffer */
                    ERR (Arg0, Z126, __LINE__, 0x00, 0x00, Local2, 0x03)
                    Return (0x01)
                }

                If (STCS)
                {
                    M000 (0x03, 0x0100, Arg3, Local2)
                }
            }

            /* Retrieve the benchmark value */

            If (M686 (Arg5, Arg2, Arg3))
            {
                /* Save type of Target */
                /* Retrieve the benchmark value */
                Local7 = DerefOf (DerefOf (Arg6 [0x04]) [Arg2])
            }
            Else
            {
                Local7 = DerefOf (Arg6 [0x03])
            }

            If ((DerefOf (Arg1) != Local7))
            {
                If (((Arg2 == C00B) && (Arg3 == C00B)))
                {
                    If (X194)
                    {
                        ERR (Arg0, Z126, __LINE__, 0x00, 0x00, DerefOf (Arg1), Local7)
                    }
                }
                Else
                {
                    ERR (Arg0, Z126, __LINE__, 0x00, 0x00, DerefOf (Arg1), Local7)
                }

                Return (0x01)
            }

            Return (0x00)
        }

        /* Check processing of an Source Named Object of the specified type */
        /* on immediate storing to a Target Named Object of the specified type */
        /* m008(<msg>, <aux>, <target type>, <source type>, */
        /*      <op>, <exc. condition>, <test data package>) */
        Method (M008, 7, Serialized)
        {
            /* Source Named Object */

            Name (SRC0, 0x00)
            /* Target Named Object */

            Name (DST0, 0x00)
            /* Retrieve index of the verified Explicit conversion Operator */

            Local6 = DerefOf (Arg6 [0x00])
            Concatenate (Arg0, "-", Arg0)
            Concatenate (Arg0, Concatenate (Mid (Local6, 0x00, 0x02), Concatenate (Mid (Arg4, 0x00,
                0x02), Concatenate (Mid (Arg2, 0x00, 0x02), Mid (Arg3, 0x00, 0x02)
                ))), Arg0)
            If (STCS)
            {
                Debug = Arg0
            }

            /* Prepare Source of specified type and value */

            Store (Arg6 [0x01], Local7)
            If (M004 (Concatenate (Arg0, "-m004"), Arg3, RefOf (SRC0), Local7))
            {
                /* Source Object can not be prepared */

                ERR (Concatenate (Arg0, TERR), Z126, __LINE__, 0x00, 0x00, Arg3, 0x00)
                Return (0x01)
            }

            /* Prepare Target of specified type */

            Store (DerefOf (Arg6 [0x02]) [Arg2], Local7)
            If ((Arg2 == 0x05))
            {
                /* Field Unit Target */

                Field (OPR0, ByteAcc, NoLock, Preserve)
                {
                    FLUX,   69,
                    FLU1,   69
                }

                Local1 = RefOf (FLU1)
            }
            ElseIf ((Arg2 == 0x0E))
            {
                /* Buffer Field Target */

                CreateField (BUFZ, 0x50, 0x45, BFL1)
                Local1 = RefOf (BFL1)
            }
            Else
            {
                Local1 = RefOf (DST0)
            }

            If (M003 (Concatenate (Arg0, "-m003"), Arg2, Local1, Local7))
            {
                /* Target Object can not be prepared */

                ERR (Concatenate (Arg0, TERR), Z126, __LINE__, 0x00, 0x00, Arg2, 0x00)
                Return (0x01)
            }

            /* Use a Source Object to immediately store into the Target */

            If ((Arg2 == 0x05))
            {
                /* Field Unit Target */

                If ((Arg4 == 0x00))
                {
                    /* Store */

                    Switch (ToInteger (Local6))
                    {
                        Case (0x00)
                        {
                            FLU1 = ToInteger (SRC0)
                        }
                        Case (0x01)
                        {
                            FLU1 = ToBCD (SRC0)
                        }
                        Case (0x02)
                        {
                            FLU1 = FromBCD (SRC0)
                        }
                        Case (0x03)
                        {
                            FLU1 = ToString (SRC0, Ones)
                        }
                        Case (0x04)
                        {
                            FLU1 = ToHexString (SRC0)
                        }
                        Case (0x05)
                        {
                            FLU1 = ToDecimalString (SRC0)
                        }
                        Case (0x06)
                        {
                            FLU1 = ToBuffer (SRC0)
                        }

                    }
                }
                ElseIf ((Arg4 == 0x01))
                {
                    /* CopyObject */

                    Switch (ToInteger (Local6))
                    {
                        Case (0x00)
                        {
                            CopyObject (ToInteger (SRC0), FLU1) /* \M693.M008.FLU1 */
                        }
                        Case (0x01)
                        {
                            CopyObject (ToBCD (SRC0), FLU1) /* \M693.M008.FLU1 */
                        }
                        Case (0x02)
                        {
                            CopyObject (FromBCD (SRC0), FLU1) /* \M693.M008.FLU1 */
                        }
                        Case (0x03)
                        {
                            CopyObject (ToString (SRC0, Ones), FLU1) /* \M693.M008.FLU1 */
                        }
                        Case (0x04)
                        {
                            CopyObject (ToHexString (SRC0), FLU1) /* \M693.M008.FLU1 */
                        }
                        Case (0x05)
                        {
                            CopyObject (ToDecimalString (SRC0), FLU1) /* \M693.M008.FLU1 */
                        }
                        Case (0x06)
                        {
                            CopyObject (ToBuffer (SRC0), FLU1) /* \M693.M008.FLU1 */
                        }

                    }
                }
                ElseIf ((Arg4 == 0x02))
                {
                    /* Optional storing */

                    Switch (ToInteger (Local6))
                    {
                        Case (0x00)
                        {
                            ToInteger (SRC0, FLU1) /* \M693.M008.FLU1 */
                        }
                        Case (0x01)
                        {
                            ToBCD (SRC0, FLU1) /* \M693.M008.FLU1 */
                        }
                        Case (0x02)
                        {
                            FromBCD (SRC0, FLU1) /* \M693.M008.FLU1 */
                        }
                        Case (0x03)
                        {
                            ToString (SRC0, Ones, FLU1) /* \M693.M008.FLU1 */
                        }
                        Case (0x04)
                        {
                            ToHexString (SRC0, FLU1) /* \M693.M008.FLU1 */
                        }
                        Case (0x05)
                        {
                            ToDecimalString (SRC0, FLU1) /* \M693.M008.FLU1 */
                        }
                        Case (0x06)
                        {
                            ToBuffer (SRC0, FLU1) /* \M693.M008.FLU1 */
                        }

                    }
                }
                Else
                {
                    /* Unexpected Kind of Op (0 - Store, ...) */

                    ERR (Concatenate (Arg0, TERR), Z126, __LINE__, 0x00, 0x00, Arg4, 0x00)
                    Return (0x01)
                }
            }
            ElseIf ((Arg2 == 0x0E))
            {
                /* Buffer Field Target */

                If ((Arg4 == 0x00))
                {
                    /* Store */

                    Switch (ToInteger (Local6))
                    {
                        Case (0x00)
                        {
                            BFL1 = ToInteger (SRC0)
                        }
                        Case (0x01)
                        {
                            BFL1 = ToBCD (SRC0)
                        }
                        Case (0x02)
                        {
                            BFL1 = FromBCD (SRC0)
                        }
                        Case (0x03)
                        {
                            BFL1 = ToString (SRC0, Ones)
                        }
                        Case (0x04)
                        {
                            BFL1 = ToHexString (SRC0)
                        }
                        Case (0x05)
                        {
                            BFL1 = ToDecimalString (SRC0)
                        }
                        Case (0x06)
                        {
                            BFL1 = ToBuffer (SRC0)
                        }

                    }
                }
                ElseIf ((Arg4 == 0x01))
                {
                    /* CopyObject */

                    Switch (ToInteger (Local6))
                    {
                        Case (0x00)
                        {
                            CopyObject (ToInteger (SRC0), BFL1) /* \M693.M008.BFL1 */
                        }
                        Case (0x01)
                        {
                            CopyObject (ToBCD (SRC0), BFL1) /* \M693.M008.BFL1 */
                        }
                        Case (0x02)
                        {
                            CopyObject (FromBCD (SRC0), BFL1) /* \M693.M008.BFL1 */
                        }
                        Case (0x03)
                        {
                            CopyObject (ToString (SRC0, Ones), BFL1) /* \M693.M008.BFL1 */
                        }
                        Case (0x04)
                        {
                            CopyObject (ToHexString (SRC0), BFL1) /* \M693.M008.BFL1 */
                        }
                        Case (0x05)
                        {
                            CopyObject (ToDecimalString (SRC0), BFL1) /* \M693.M008.BFL1 */
                        }
                        Case (0x06)
                        {
                            CopyObject (ToBuffer (SRC0), BFL1) /* \M693.M008.BFL1 */
                        }

                    }
                }
                ElseIf ((Arg4 == 0x02))
                {
                    /* Optional storing */

                    Switch (ToInteger (Local6))
                    {
                        Case (0x00)
                        {
                            ToInteger (SRC0, BFL1) /* \M693.M008.BFL1 */
                        }
                        Case (0x01)
                        {
                            ToBCD (SRC0, BFL1) /* \M693.M008.BFL1 */
                        }
                        Case (0x02)
                        {
                            FromBCD (SRC0, BFL1) /* \M693.M008.BFL1 */
                        }
                        Case (0x03)
                        {
                            ToString (SRC0, Ones, BFL1) /* \M693.M008.BFL1 */
                        }
                        Case (0x04)
                        {
                            ToHexString (SRC0, BFL1) /* \M693.M008.BFL1 */
                        }
                        Case (0x05)
                        {
                            ToDecimalString (SRC0, BFL1) /* \M693.M008.BFL1 */
                        }
                        Case (0x06)
                        {
                            ToBuffer (SRC0, BFL1) /* \M693.M008.BFL1 */
                        }

                    }
                }
                Else
                {
                    /* Unexpected Kind of Op (0 - Store, ...) */

                    ERR (Concatenate (Arg0, TERR), Z126, __LINE__, 0x00, 0x00, Arg4, 0x00)
                    Return (0x01)
                }
            }
            ElseIf ((Arg4 == 0x00))
            {
                /* Store */

                Switch (ToInteger (Local6))
                {
                    Case (0x00)
                    {
                        DST0 = ToInteger (SRC0)
                    }
                    Case (0x01)
                    {
                        DST0 = ToBCD (SRC0)
                    }
                    Case (0x02)
                    {
                        DST0 = FromBCD (SRC0)
                    }
                    Case (0x03)
                    {
                        DST0 = ToString (SRC0, Ones)
                    }
                    Case (0x04)
                    {
                        DST0 = ToHexString (SRC0)
                    }
                    Case (0x05)
                    {
                        DST0 = ToDecimalString (SRC0)
                    }
                    Case (0x06)
                    {
                        DST0 = ToBuffer (SRC0)
                    }

                }
            }
            ElseIf ((Arg4 == 0x01))
            {
                /* CopyObject */

                Switch (ToInteger (Local6))
                {
                    Case (0x00)
                    {
                        CopyObject (ToInteger (SRC0), DST0) /* \M693.M008.DST0 */
                    }
                    Case (0x01)
                    {
                        CopyObject (ToBCD (SRC0), DST0) /* \M693.M008.DST0 */
                    }
                    Case (0x02)
                    {
                        CopyObject (FromBCD (SRC0), DST0) /* \M693.M008.DST0 */
                    }
                    Case (0x03)
                    {
                        CopyObject (ToString (SRC0, Ones), DST0) /* \M693.M008.DST0 */
                    }
                    Case (0x04)
                    {
                        CopyObject (ToHexString (SRC0), DST0) /* \M693.M008.DST0 */
                    }
                    Case (0x05)
                    {
                        CopyObject (ToDecimalString (SRC0), DST0) /* \M693.M008.DST0 */
                    }
                    Case (0x06)
                    {
                        CopyObject (ToBuffer (SRC0), DST0) /* \M693.M008.DST0 */
                    }

                }
            }
            ElseIf ((Arg4 == 0x02))
            {
                /* Optional storing */

                Switch (ToInteger (Local6))
                {
                    Case (0x00)
                    {
                        ToInteger (SRC0, DST0) /* \M693.M008.DST0 */
                    }
                    Case (0x01)
                    {
                        ToBCD (SRC0, DST0) /* \M693.M008.DST0 */
                    }
                    Case (0x02)
                    {
                        FromBCD (SRC0, DST0) /* \M693.M008.DST0 */
                    }
                    Case (0x03)
                    {
                        ToString (SRC0, Ones, DST0) /* \M693.M008.DST0 */
                    }
                    Case (0x04)
                    {
                        ToHexString (SRC0, DST0) /* \M693.M008.DST0 */
                    }
                    Case (0x05)
                    {
                        ToDecimalString (SRC0, DST0) /* \M693.M008.DST0 */
                    }
                    Case (0x06)
                    {
                        ToBuffer (SRC0, DST0) /* \M693.M008.DST0 */
                    }

                }
            }
            Else
            {
                /* Unexpected Kind of Op (0 - Store, ...) */

                ERR (Concatenate (Arg0, TERR), Z126, __LINE__, 0x00, 0x00, Arg4, 0x00)
                Return (0x01)
            }

            If (Arg5)
            {
                /* Exception is expected */

                If (!CH06 (Arg0, 0x1A, 0xFF))
                {
                    If (STCS)
                    {
                        M000 (0x02, 0x0100, Arg2, Arg3)
                    }
                }
            }
            ElseIf (CH03 (Arg0, Z126, __LINE__, 0x00, Arg2))
            {
                /* Storing caused unexpected exception */

                If (STCS)
                {
                    M000 (0x02, 0x0100, Arg2, Arg3)
                }
            }
            Else
            {
                /* Check Target Object to have the expected type and value */
                /* Target accept type on storing to Named of Store operator is 0 */
                If ((Arg4 == 0x00))
                {
                    Local0 = 0x00
                }
                Else
                {
                    Local0 = 0x02
                }

                M006 (Concatenate (Arg0, "-m006"), Local1, Arg2, Arg3, Arg4, Local0, Arg6)
            }

            /* Check Source Object type is not corrupted after storing */

            Store (Arg6 [0x01], Local7)
            If (M005 (Concatenate (Arg0, "-m005"), Arg3, RefOf (SRC0), Local7))
            {
                If (STCS)
                {
                    Debug = "m008, Source Object has been corrupted during storing"
                }
            }

            Return (0x00)
        }

        /* Check processing of an Source Named Object of the specified type */
        /* on immediate storing to a Target LocalX Object of the specified type */
        /* m009(<msg>, <aux>, <target type>, <source type>, */
        /*      <op>, <exc. condition>, <test data package>) */
        Method (M009, 7, Serialized)
        {
            /* Source Named Object */

            Name (SRC0, 0x00)
            /* Target Named Object: Local4 */
            /* Retrieve index of the verified Explicit conversion Operator */
            Local6 = DerefOf (Arg6 [0x00])
            Concatenate (Arg0, "-", Arg0)
            Concatenate (Arg0, Concatenate (Mid (Local6, 0x00, 0x02), Concatenate (Mid (Arg4, 0x00,
                0x02), Concatenate (Mid (Arg2, 0x00, 0x02), Mid (Arg3, 0x00, 0x02)
                ))), Arg0)
            If (STCS)
            {
                Debug = Arg0
            }

            /* Prepare Source of specified type and value */

            Store (Arg6 [0x01], Local7)
            If (M004 (Concatenate (Arg0, "-m004"), Arg3, RefOf (SRC0), Local7))
            {
                /* Source Object can not be prepared */

                ERR (Concatenate (Arg0, TERR), Z126, __LINE__, 0x00, 0x00, Arg3, 0x00)
                Return (0x01)
            }

            /* Prepare Target of specified type */

            Store (DerefOf (Arg6 [0x02]) [Arg2], Local7)
            If (M003 (Concatenate (Arg0, "-m003"), Arg2, RefOf (Local4), Local7))
            {
                /* Target Object can not be prepared */

                ERR (Concatenate (Arg0, TERR), Z126, __LINE__, 0x00, 0x00, Arg2, 0x00)
                Return (0x01)
            }

            /* Use a Source Object to immediately store into the Target */

            If ((Arg4 == 0x00))
            {
                /* Store */

                Switch (ToInteger (Local6))
                {
                    Case (0x00)
                    {
                        Local4 = ToInteger (SRC0)
                    }
                    Case (0x01)
                    {
                        Local4 = ToBCD (SRC0)
                    }
                    Case (0x02)
                    {
                        Local4 = FromBCD (SRC0)
                    }
                    Case (0x03)
                    {
                        Local4 = ToString (SRC0, Ones)
                    }
                    Case (0x04)
                    {
                        Local4 = ToHexString (SRC0)
                    }
                    Case (0x05)
                    {
                        Local4 = ToDecimalString (SRC0)
                    }
                    Case (0x06)
                    {
                        Local4 = ToBuffer (SRC0)
                    }

                }
            }
            ElseIf ((Arg4 == 0x01))
            {
                /* CopyObject */

                Switch (ToInteger (Local6))
                {
                    Case (0x00)
                    {
                        CopyObject (ToInteger (SRC0), Local4)
                    }
                    Case (0x01)
                    {
                        CopyObject (ToBCD (SRC0), Local4)
                    }
                    Case (0x02)
                    {
                        CopyObject (FromBCD (SRC0), Local4)
                    }
                    Case (0x03)
                    {
                        CopyObject (ToString (SRC0, Ones), Local4)
                    }
                    Case (0x04)
                    {
                        CopyObject (ToHexString (SRC0), Local4)
                    }
                    Case (0x05)
                    {
                        CopyObject (ToDecimalString (SRC0), Local4)
                    }
                    Case (0x06)
                    {
                        CopyObject (ToBuffer (SRC0), Local4)
                    }

                }
            }
            ElseIf ((Arg4 == 0x02))
            {
                /* Optional storing */

                Switch (ToInteger (Local6))
                {
                    Case (0x00)
                    {
                        ToInteger (SRC0, Local4)
                    }
                    Case (0x01)
                    {
                        ToBCD (SRC0, Local4)
                    }
                    Case (0x02)
                    {
                        FromBCD (SRC0, Local4)
                    }
                    Case (0x03)
                    {
                        ToString (SRC0, Ones, Local4)
                    }
                    Case (0x04)
                    {
                        ToHexString (SRC0, Local4)
                    }
                    Case (0x05)
                    {
                        ToDecimalString (SRC0, Local4)
                    }
                    Case (0x06)
                    {
                        ToBuffer (SRC0, Local4)
                    }

                }
            }
            Else
            {
                /* Unexpected Kind of Op (0 - Store, ...) */

                ERR (Concatenate (Arg0, TERR), Z126, __LINE__, 0x00, 0x00, Arg4, 0x00)
                Return (0x01)
            }

            If (Arg5)
            {
                /* Exception is expected */

                If (!CH06 (Arg0, 0x1F, 0xFF))
                {
                    If (STCS)
                    {
                        M000 (0x02, 0x0100, Arg2, Arg3)
                    }
                }
            }
            ElseIf (CH03 (Arg0, Z126, __LINE__, 0x00, Arg2))
            {
                /* Storing caused unexpected exception */

                If (STCS)
                {
                    M000 (0x02, 0x0100, Arg2, Arg3)
                }
            }
            Else
            {
                /* Check Target Object to have the expected type and value */
                /* Target accept type on storing to LocalX is 1 */
                Local0 = 0x01
                M006 (Concatenate (Arg0, "-m006"), RefOf (Local4), Arg2, Arg3, Arg4, Local0, Arg6)
            }

            /* Check Source Object type is not corrupted after storing */

            Store (Arg6 [0x01], Local7)
            If (M005 (Concatenate (Arg0, "-m005"), Arg3, RefOf (SRC0), Local7))
            {
                If (STCS)
                {
                    Debug = "m009, Source Object has been corrupted during storing"
                }
            }

            Return (0x00)
        }

        /* Test data packages */
        /* ToInteger */
        Name (P032, Package (0x11)
        {
            /* index of the Operator */

            0x00,
            /* SRC0 initial value */

            0xFEDCBA9876543210,
            /* Target Objects initial values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543211,
                "target string",
                Buffer (0x11)
                {
                     0xC3                                             // .
                },

                Package (0x01)
                {
                    "target package"
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00
            },

            /* Benchmark Result object value */

            0xFEDCBA9876543210,
            /* Benchmark Result object converted to Target type values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543210,
                "76543210",
                Buffer (0x11)
                {
                     0x10, 0x32, 0x54, 0x76                           // .2Tv
                },

                0x00,
                Buffer (0x09)
                {
                     0x10, 0x32, 0x54, 0x76                           // .2Tv
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                Buffer (0x09)
                {
                     0x10, 0x32, 0x54, 0x76                           // .2Tv
                },

                0x00,
                0x00
            }
        })
        Name (P064, Package (0x11)
        {
            /* index of the Operator */

            0x00,
            /* SRC0 initial value */

            0xFEDCBA9876543210,
            /* Target Objects initial values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543211,
                "target string",
                Buffer (0x11)
                {
                     0xC3                                             // .
                },

                Package (0x01)
                {
                    "target package"
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00
            },

            /* Benchmark Result object value */

            0xFEDCBA9876543210,
            /* Benchmark Result object converted to Target type values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543210,
                "FEDCBA9876543210",
                Buffer (0x11)
                {
                     0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE   // .2Tv....
                },

                0x00,
                Buffer (0x09)
                {
                     0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE   // .2Tv....
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                Buffer (0x09)
                {
                     0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE   // .2Tv....
                },

                0x00,
                0x00
            }
        })
        /* ToBCD */

        Name (P132, Package (0x11)
        {
            /* index of the Operator */

            0x01,
            /* SRC0 initial value */

            0x055F2CC0,
            /* Target Objects initial values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543211,
                "target string",
                Buffer (0x11)
                {
                     0xC3                                             // .
                },

                Package (0x01)
                {
                    "target package"
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00
            },

            /* Benchmark Result object value */

            0x90123456,
            /* Benchmark Result object converted to Target type values */

            Package (0x11)
            {
                0x00,
                0x90123456,
                "90123456",
                Buffer (0x11)
                {
                     0x56, 0x34, 0x12, 0x90                           // V4..
                },

                0x00,
                Buffer (0x09)
                {
                     0x56, 0x34, 0x12, 0x90                           // V4..
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                Buffer (0x09)
                {
                     0x56, 0x34, 0x12, 0x90                           // V4..
                },

                0x00,
                0x00
            }
        })
        Name (P164, Package (0x11)
        {
            /* index of the Operator */

            0x01,
            /* SRC0 initial value */

            0x000D76162EE9EC35,
            /* Target Objects initial values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543211,
                "target string",
                Buffer (0x11)
                {
                     0xC3                                             // .
                },

                Package (0x01)
                {
                    "target package"
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00
            },

            /* Benchmark Result object value */

            0x3789012345678901,
            /* Benchmark Result object converted to Target type values */

            Package (0x11)
            {
                0x00,
                0x3789012345678901,
                "3789012345678901",
                Buffer (0x11)
                {
                     0x01, 0x89, 0x67, 0x45, 0x23, 0x01, 0x89, 0x37   // ..gE#..7
                },

                0x00,
                Buffer (0x09)
                {
                     0x01, 0x89, 0x67, 0x45, 0x23, 0x01, 0x89, 0x37   // ..gE#..7
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                Buffer (0x09)
                {
                     0x01, 0x89, 0x67, 0x45, 0x23, 0x01, 0x89, 0x37   // ..gE#..7
                },

                0x00,
                0x00
            }
        })
        /* FromBCD */

        Name (P232, Package (0x11)
        {
            /* index of the Operator */

            0x02,
            /* SRC0 initial value */

            0x90123456,
            /* Target Objects initial values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543211,
                "target string",
                Buffer (0x11)
                {
                     0xC3                                             // .
                },

                Package (0x01)
                {
                    "target package"
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00
            },

            /* Benchmark Result object value */

            0x055F2CC0,
            /* Benchmark Result object converted to Target type values */

            Package (0x11)
            {
                0x00,
                0x055F2CC0,
                "055F2CC0",
                Buffer (0x11)
                {
                     0xC0, 0x2C, 0x5F, 0x05                           // .,_.
                },

                0x00,
                Buffer (0x09)
                {
                     0xC0, 0x2C, 0x5F, 0x05                           // .,_.
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                Buffer (0x09)
                {
                     0xC0, 0x2C, 0x5F, 0x05                           // .,_.
                },

                0x00,
                0x00
            }
        })
        Name (P264, Package (0x11)
        {
            /* index of the Operator */

            0x02,
            /* SRC0 initial value */

            0x3789012345678901,
            /* Target Objects initial values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543211,
                "target string",
                Buffer (0x11)
                {
                     0xC3                                             // .
                },

                Package (0x01)
                {
                    "target package"
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00
            },

            /* Benchmark Result object value */

            0x000D76162EE9EC35,
            /* Benchmark Result object converted to Target type values */

            Package (0x11)
            {
                0x00,
                0x000D76162EE9EC35,
                "000D76162EE9EC35",
                Buffer (0x11)
                {
                     0x35, 0xEC, 0xE9, 0x2E, 0x16, 0x76, 0x0D         // 5....v.
                },

                0x00,
                Buffer (0x09)
                {
                     0x35, 0xEC, 0xE9, 0x2E, 0x16, 0x76, 0x0D         // 5....v.
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                Buffer (0x09)
                {
                     0x35, 0xEC, 0xE9, 0x2E, 0x16, 0x76, 0x0D         // 5....v.
                },

                0x00,
                0x00
            }
        })
        /* ToString */

        Name (P332, Package (0x11)
        {
            /* index of the Operator */

            0x03,
            /* SRC0 initial value */

            "fedcba98 string",
            /* Target Objects initial values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543211,
                "target string",
                Buffer (0x11)
                {
                     0xC3                                             // .
                },

                Package (0x01)
                {
                    "target package"
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00
            },

            /* Benchmark Result object value */

            "fedcba98 string",
            /* Benchmark Result object converted to Target type values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA98,
                "fedcba98 string",
                Buffer (0x11)
                {
                    /* 0000 */  0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38,  // fedcba98
                    /* 0008 */  0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67         //  string
                },

                0x00,
                Buffer (0x09)
                {
                     0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38   // fedcba98
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                Buffer (0x09)
                {
                     0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38   // fedcba98
                },

                0x00,
                0x00
            }
        })
        Name (P364, Package (0x11)
        {
            /* index of the Operator */

            0x03,
            /* SRC0 initial value */

            "fedcba9876543210 string",
            /* Target Objects initial values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543211,
                "target string",
                Buffer (0x11)
                {
                     0xC3                                             // .
                },

                Package (0x01)
                {
                    "target package"
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00
            },

            /* Benchmark Result object value */

            "fedcba9876543210 string",
            /* Benchmark Result object converted to Target type values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543210,
                "fedcba9876543210 string",
                Buffer (0x11)
                {
                    /* 0000 */  0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38,  // fedcba98
                    /* 0008 */  0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30,  // 76543210
                    /* 0010 */  0x20                                             //
                },

                0x00,
                Buffer (0x09)
                {
                    /* 0000 */  0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38,  // fedcba98
                    /* 0008 */  0x17                                             // .
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                Buffer (0x09)
                {
                    /* 0000 */  0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38,  // fedcba98
                    /* 0008 */  0x17                                             // .
                },

                0x00,
                0x00
            }
        })
        /* ToHexString */

        Name (P432, Package (0x11)
        {
            /* index of the Operator */

            0x04,
            /* SRC0 initial value */

            "fedcba98 string",
            /* Target Objects initial values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543211,
                "target string",
                Buffer (0x11)
                {
                     0xC3                                             // .
                },

                Package (0x01)
                {
                    "target package"
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00
            },

            /* Benchmark Result object value */

            "fedcba98 string",
            /* Benchmark Result object converted to Target type values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA98,
                "fedcba98 string",
                Buffer (0x11)
                {
                    /* 0000 */  0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38,  // fedcba98
                    /* 0008 */  0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67         //  string
                },

                0x00,
                Buffer (0x09)
                {
                     0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38   // fedcba98
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                Buffer (0x09)
                {
                     0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38   // fedcba98
                },

                0x00,
                0x00
            }
        })
        Name (P464, Package (0x11)
        {
            /* index of the Operator */

            0x04,
            /* SRC0 initial value */

            "fedcba9876543210 string",
            /* Target Objects initial values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543211,
                "target string",
                Buffer (0x11)
                {
                     0xC3                                             // .
                },

                Package (0x01)
                {
                    "target package"
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00
            },

            /* Benchmark Result object value */

            "fedcba9876543210 string",
            /* Benchmark Result object converted to Target type values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543210,
                "fedcba9876543210 string",
                Buffer (0x11)
                {
                    /* 0000 */  0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38,  // fedcba98
                    /* 0008 */  0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30,  // 76543210
                    /* 0010 */  0x20                                             //
                },

                0x00,
                Buffer (0x09)
                {
                    /* 0000 */  0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38,  // fedcba98
                    /* 0008 */  0x17                                             // .
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                Buffer (0x09)
                {
                    /* 0000 */  0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38,  // fedcba98
                    /* 0008 */  0x17                                             // .
                },

                0x00,
                0x00
            }
        })
        /* ToDecimalString */

        Name (P532, Package (0x11)
        {
            /* index of the Operator */

            0x05,
            /* SRC0 initial value */

            "fedcba98 string",
            /* Target Objects initial values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543211,
                "target string",
                Buffer (0x11)
                {
                     0xC3                                             // .
                },

                Package (0x01)
                {
                    "target package"
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00
            },

            /* Benchmark Result object value */

            "fedcba98 string",
            /* Benchmark Result object converted to Target type values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA98,
                "fedcba98 string",
                Buffer (0x11)
                {
                    /* 0000 */  0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38,  // fedcba98
                    /* 0008 */  0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67         //  string
                },

                0x00,
                Buffer (0x09)
                {
                     0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38   // fedcba98
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                Buffer (0x09)
                {
                     0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38   // fedcba98
                },

                0x00,
                0x00
            }
        })
        Name (P564, Package (0x11)
        {
            /* index of the Operator */

            0x05,
            /* SRC0 initial value */

            "fedcba9876543210 string",
            /* Target Objects initial values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543211,
                "target string",
                Buffer (0x11)
                {
                     0xC3                                             // .
                },

                Package (0x01)
                {
                    "target package"
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00
            },

            /* Benchmark Result object value */

            "fedcba9876543210 string",
            /* Benchmark Result object converted to Target type values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543210,
                "fedcba9876543210 string",
                Buffer (0x11)
                {
                    /* 0000 */  0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38,  // fedcba98
                    /* 0008 */  0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30,  // 76543210
                    /* 0010 */  0x20                                             //
                },

                0x00,
                Buffer (0x09)
                {
                    /* 0000 */  0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38,  // fedcba98
                    /* 0008 */  0x17                                             // .
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                Buffer (0x09)
                {
                    /* 0000 */  0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x39, 0x38,  // fedcba98
                    /* 0008 */  0x17                                             // .
                },

                0x00,
                0x00
            }
        })
        /* ToBuffer */

        Name (P632, Package (0x11)
        {
            /* index of the Operator */

            0x06,
            /* SRC0 initial value */

            Buffer (0x07)
            {
                 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01         // .......
            },

            /* Target Objects initial values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543211,
                "target string",
                Buffer (0x11)
                {
                     0xC3                                             // .
                },

                Package (0x01)
                {
                    "target package"
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00
            },

            /* Benchmark Result object value */

            Buffer (0x07)
            {
                 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01         // .......
            },

            /* Benchmark Result object converted to Target type values */

            Package (0x11)
            {
                0x00,
                0x04050607,
                "07 06 05 04 03 02 01",
                Buffer (0x11)
                {
                     0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01         // .......
                },

                0x00,
                Buffer (0x09)
                {
                     0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01         // .......
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                Buffer (0x09)
                {
                     0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01         // .......
                },

                0x00,
                0x00
            }
        })
        Name (P664, Package (0x11)
        {
            /* index of the Operator */

            0x06,
            /* SRC0 initial value */

            Buffer (0x07)
            {
                 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01         // .......
            },

            /* Target Objects initial values */

            Package (0x11)
            {
                0x00,
                0xFEDCBA9876543211,
                "target string",
                Buffer (0x11)
                {
                     0xC3                                             // .
                },

                Package (0x01)
                {
                    "target package"
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00
            },

            /* Benchmark Result object value */

            Buffer (0x07)
            {
                 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01         // .......
            },

            /* Benchmark Result object converted to Target type values */

            Package (0x11)
            {
                0x00,
                0x0001020304050607,
                "07 06 05 04 03 02 01",
                Buffer (0x11)
                {
                     0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01         // .......
                },

                0x00,
                Buffer (0x09)
                {
                     0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01         // .......
                },

                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                0x00,
                Buffer (0x09)
                {
                     0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01         // .......
                },

                0x00,
                0x00
            }
        })
        Name (P320, Package (0x07)
        {
            P032,
            P132,
            P232,
            P332,
            P432,
            P532,
            P632
        })
        Name (P640, Package (0x07)
        {
            P064,
            P164,
            P264,
            P364,
            P464,
            P564,
            P664
        })
        Name (SCL0, Buffer (0x07)
        {
             0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03         // .......
        })
        Name (LPN0, 0x11)
        Name (LPC0, 0x00)
        Name (LPN1, 0x00)
        Name (LPC1, 0x00)
        If ((Arg0 == 0x00))
        {
            Concatenate (TS, "-S", TS) /* \M693.TS__ */
        }
        ElseIf ((Arg0 == 0x01))
        {
            Concatenate (TS, "-C", TS) /* \M693.TS__ */
        }
        ElseIf ((Arg0 == 0x02))
        {
            Concatenate (TS, "-O", TS) /* \M693.TS__ */
        }

        If ((Arg4 == 0x00))
        {
            Concatenate (TS, "-N", TS) /* \M693.TS__ */
        }
        Else
        {
            Concatenate (TS, "-L", TS) /* \M693.TS__ */
        }

        If (Arg1)
        {
            Concatenate (TS, "-Exc", TS) /* \M693.TS__ */
        }

        SRMT (TS)
        /* Initialize statistics */

        M001 ()
        If ((Arg0 > 0x02))
        {
            /* Unexpected Kind of Op (0 - Store, ...) */

            ERR (Concatenate (TS, TERR), Z126, __LINE__, 0x00, 0x00, Arg0, 0x00)
            Return (0x01)
        }

        If ((Arg4 > 0x01))
        {
            /* Unexpected Kind of Source-Target pair */

            ERR (Concatenate (TS, TERR), Z126, __LINE__, 0x00, 0x00, Arg4, 0x00)
            Return (0x01)
        }

        /* Flags of Store from and to Named to check */
        /* exceptional conditions on storing */
        If ((Arg0 != 0x00))
        {
            Local0 = 0x00
            Local1 = 0x00
        }
        Else
        {
            Local0 = 0x01
            Local1 = (Arg4 == 0x00)
        }

        /* Enumerate Target types */

        While (LPN0)
        {
            If ((DerefOf (B670 [LPC0]) && DerefOf (Arg2 [LPC0])))
            {
                /* Not invalid type of the Target Object to store in */

                LPN1 = 0x07
                LPC1 = 0x00
                /* Enumerate the Explicit conversion operators */
                /* which determine expected Result types */
                While (LPN1)
                {
                    /* Choose expected Result type */

                    If (Y900)
                    {
                        Local2 = DerefOf (Index (Buffer (0x07)
                                    {
                                         0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03         // .......
                                    }, LPC1))
                    }
                    Else
                    {
                        Local2 = DerefOf (SCL0 [LPC1])
                    }

                    If ((DerefOf (B671 [Local2]) && DerefOf (Arg3 [Local2])))
                    {
                        /* Not invalid type of the result Object to be stored */

                        If (F64)
                        {
                            Local3 = DerefOf (P640 [LPC1])
                        }
                        Else
                        {
                            Local3 = DerefOf (P320 [LPC1])
                        }

                        If (Arg1)
                        {
                            /* Skip cases without exceptional conditions */

                            If (!M685 ((Arg0 != 0x00), LPC0, Local2, Local0, Local1))
                            {
                                LPN1--
                                LPC1++
                                Continue
                            }
                        }
                        ElseIf                        /* Skip cases with exceptional conditions */

 (M685 ((Arg0 != 0x00), LPC0, Local2, Local0, Local1))
                        {
                            LPN1--
                            LPC1++
                            Continue
                        }

                        If ((Arg4 == 0x00))
                        {
                            /* Named Source and Target */

                            M008 (Concatenate (TS, "-m008"), 0x00, LPC0, Local2, Arg0, Arg1, Local3)
                        }
                        ElseIf ((Arg4 == 0x01))
                        {
                            /* LocalX Target */

                            M009 (Concatenate (TS, "-m009"), 0x00, LPC0, Local2, Arg0, Arg1, Local3)
                        }
                    }

                    LPN1--
                    LPC1++
                }
            }

            LPN0--
            LPC0++
        }

        /* Output statistics */

        M002 (Concatenate ("Storing of the result of Explicit conversion to Named Object with ", DerefOf (PAC4 [Arg0])))
        Return (0x00)
    }

    /* Run-method */

    Method (RES3, 0, NotSerialized)
    {
        Debug = "TEST: RES3, Result Object optional storing in the explicit conversion operators"
        /* Named Source and Target */
        /* Store the result of the explicit conversion operators */
        M693 (0x00, 0x00, B676, B676, 0x00)
        /* CopyObject the result of the explicit conversion operators */

        M693 (0x01, 0x00, B676, B676, 0x00)
        /* Optional storing of the result of the explicit conversion operators */

        M693 (0x02, 0x00, B676, B676, 0x00)
        /* LocalX Target */
        /* Store the result of the explicit conversion operators */
        M693 (0x00, 0x00, B677, B676, 0x01)
        /* CopyObject the result of the explicit conversion operators */

        M693 (0x01, 0x00, B677, B676, 0x01)
        /* Optional storing of the result of the explicit conversion operators */

        M693 (0x02, 0x00, B677, B676, 0x01)
    }