1    /*
2     * Some or all of this work - Copyright (c) 2006 - 2021, Intel Corp.
3     * All rights reserved.
4     *
5     * Redistribution and use in source and binary forms, with or without modification,
6     * are permitted provided that the following conditions are met:
7     *
8     * Redistributions of source code must retain the above copyright notice,
9     * this list of conditions and the following disclaimer.
10     * Redistributions in binary form must reproduce the above copyright notice,
11     * this list of conditions and the following disclaimer in the documentation
12     * and/or other materials provided with the distribution.
13     * Neither the name of Intel Corporation nor the names of its contributors
14     * may be used to endorse or promote products derived from this software
15     * without specific prior written permission.
16     *
17     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19     * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20     * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21     * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22     * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23     * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24     * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25     * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27     */
28    /*
29     * References
30     *
31     * TEST, Package total
32     */
33    Name (Z116, 0x74)
34    /*
35     * Flags and values used by m1c3
36     */
37    Name (FL00, 0x00) /* flag of testing of exceptions */
38    Name (V000, 0x00) /* type of the Standard Data object */
39    Name (V001, 0x00) /* index of element of Package */
40    /*
41     * Read immediate image element of Package
42     *
43     * Package specified by the immediate
44     * images {Integer, String, Buffer, Package}.
45     * Perform all the ways reading element of
46     * Package passed by ArgX.
47     */
48    Method (M1C1, 0, Serialized)
49    {
50        Name (PPP0, Package (0x04)
51        {
52            0x77,
53            "qwer0000",
54            Buffer (0x04)
55            {
56                 0x01, 0x77, 0x03, 0x04                           // .w..
57            },
58
59            Package (0x03)
60            {
61                0x05,
62                0x77,
63                0x07
64            }
65        })
66        FL00 = 0x00    /* flag of testing of exceptions */
67        V000 = C009 /* type of the Standard Data object */ /* \C009 */
68        V001 = 0x00    /* index of element of Package */
69        M1C3 (PPP0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
70        V000 = C00A /* type of the Standard Data object */ /* \C00A */
71        V001 = 0x01    /* index of element of Package */
72        M1C3 (PPP0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
73        V000 = C00B /* type of the Standard Data object */ /* \C00B */
74        V001 = 0x02    /* index of element of Package */
75        M1C3 (PPP0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
76        V000 = C00C /* type of the Standard Data object */ /* \C00C */
77        V001 = 0x03    /* index of element of Package */
78        M1C3 (PPP0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
79    }
80
81    /*
82     * Read NamedX element of Package
83     * {Integer, String, Buffer, Package}.
84     */
85    Method (M1C2, 0, Serialized)
86    {
87        Name (I000, 0x77)
88        Name (S000, "qwer0000")
89        Name (B000, Buffer (0x04)
90        {
91             0x01, 0x77, 0x03, 0x04                           // .w..
92        })
93        Name (P000, Package (0x03)
94        {
95            0x05,
96            0x77,
97            0x07
98        })
99        Name (PPP0, Package (0x04)
100        {
101            I000,
102            S000,
103            B000,
104            P000
105        })
106        FL00 = 0x00    /* flag of testing of exceptions */
107        V000 = C009 /* type of the Standard Data object */ /* \C009 */
108        V001 = 0x00    /* index of element of Package */
109        M1C3 (PPP0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
110        V000 = C00A /* type of the Standard Data object */ /* \C00A */
111        V001 = 0x01    /* index of element of Package */
112        M1C3 (PPP0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
113        V000 = C00B /* type of the Standard Data object */ /* \C00B */
114        V001 = 0x02    /* index of element of Package */
115        M1C3 (PPP0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
116        V000 = C00C /* type of the Standard Data object */ /* \C00C */
117        V001 = 0x03    /* index of element of Package */
118        M1C3 (PPP0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
119        M380 (__METHOD__, I000, 0x00, __LINE__)
120        M381 (__METHOD__, S000, 0x00, __LINE__)
121        M382 (__METHOD__, B000, 0x00, __LINE__)
122        M383 (__METHOD__, P000, 0x00, __LINE__)
123    }
124
125    /* All the ways reading element of Package given by ArgX */
126    /* arg0 - Package */
127    /* arg1, */
128    /* arg2, */
129    /* arg3, */
130    /* arg4, */
131    /* arg5, */
132    /* arg6 - auxiliary, for arbitrary use */
133    Method (M1C3, 7, Serialized)
134    {
135        Name (I000, 0x00)
136        Name (I001, 0x00)
137        Name (I002, 0x00)
138        Name (I003, 0x00)
139        Name (I004, 0x00)
140        Name (I005, 0x00)
141        Name (I006, 0x00)
142        Name (P000, Package (0x02){})
143        Name (PPP0, Package (0x02){})
144        /* LocalX */
145
146        Store (Arg0 [V001], Local3)
147        M390 (DerefOf (Local3), V000, 0x00, __LINE__)
148        Local4 = DerefOf (Local3)
149        M390 (Local4, V000, 0x00, __LINE__)
150        M390 (DerefOf (Arg0 [V001]), V000, 0x00, 0x06)
151        Local3 = Local2 = Arg0 [V001] /* \V001 */
152        M390 (DerefOf (Local3), V000, 0x00, __LINE__)
153        Local4 = DerefOf (Local3)
154        M390 (Local4, V000, 0x00, __LINE__)
155        M390 (DerefOf (Local2), V000, 0x00, __LINE__)
156        Local4 = DerefOf (Local2)
157        M390 (Local4, V000, 0x00, __LINE__)
158        /* ArgX */
159
160        Store (Arg0 [V001], Arg3)
161        M390 (DerefOf (Arg3), V000, 0x00, __LINE__)
162        Arg4 = DerefOf (Arg3)
163        M390 (Arg4, V000, 0x00, __LINE__)
164        M390 (DerefOf (Arg0 [V001]), V000, 0x00, 0x0D)
165        Arg3 = Arg2 = Arg0 [V001] /* \V001 */
166        M390 (DerefOf (Arg3), V000, 0x00, __LINE__)
167        Arg4 = DerefOf (Arg3)
168        M390 (Arg4, V000, 0x00, __LINE__)
169        M390 (DerefOf (Arg2), V000, 0x00, __LINE__)
170        Arg4 = DerefOf (Arg2)
171        M390 (Arg4, V000, 0x00, __LINE__)
172        /* NamedX */
173
174        If (Y127)
175        {
176            CopyObject (PPP0 [0x00], I003) /* \M1C3.I003 */
177            Store (Arg0 [V001], I003) /* \M1C3.I003 */
178            M390 (DerefOf (I003), V000, 0x00, __LINE__)
179            I004 = DerefOf (I003)
180            M390 (I004, V000, 0x00, __LINE__)
181            M390 (DerefOf (Arg0 [V001]), V000, 0x00, 0x14)
182            I003 = I002 = Arg0 [V001] /* \V001 */
183            M390 (DerefOf (I003), V000, 0x00, __LINE__)
184            I004 = DerefOf (I003)
185            M390 (I004, V000, 0x00, __LINE__)
186            M390 (DerefOf (I002), V000, 0x00, __LINE__)
187            I004 = DerefOf (I002)
188            M390 (I004, V000, 0x00, __LINE__)
189        }
190
191        /*
192         * El_of_Package
193         *
194         * Identical to the first checking, but only
195         * store intermediately the references to element
196         * of Package arg0 Index(arg0, x) into Index(p000, y)
197         * but not into LocalX.
198         */
199        P000 [0x01] = P000 [0x00] = Arg0 [V001] /* \V001 */
200        /* DerefOf(DerefOf(Index(x,Destination))) */
201
202        M390 (DerefOf (DerefOf (P000 [0x00])), V000, 0x00, 0x19)
203        /* DerefOf(DerefOf(Index(x,Result))) */
204
205        M390 (DerefOf (DerefOf (P000 [0x01])), V000, 0x00, 0x1A)
206        /* El_of_Package, Destination, LocalX */
207        /*
208         * After Store(Index(p000, 0), Local5)
209         * Local5 below - reference to element of
210         * Package p000 containing reference to the
211         * 0-th element of Arg0-Package.
212         *
213         * Correspondingly, after Store(DerefOf(Local5), Local3)
214         * Local3 - reference to the 0-th element of Arg0-Package.
215         *
216         * Further, DerefOf(Local3) - 0-th element of Arg0-Package.
217         */
218        If (FL00)
219        {
220            Store (P000 [0x00], Local5)
221            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
222            Local6 = (Local5 + 0x01)
223            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
224            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
225            Local6 = (DerefOf (Local5) + 0x01)
226            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
227            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
228            M390 (Local5, V000, 0x00, __LINE__)
229            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
230            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
231            M390 (DerefOf (Local5), V000, 0x00, __LINE__)
232            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
233            Local5 = Local2 = P000 [0x00]
234            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
235            Local6 = (Local5 + 0x01)
236            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
237            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
238            Local6 = (DerefOf (Local5) + 0x01)
239            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
240            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
241            M390 (Local5, V000, 0x00, __LINE__)
242            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
243            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
244            M390 (DerefOf (Local5), V000, 0x00, __LINE__)
245            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
246            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
247            Local6 = (Local2 + 0x01)
248            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
249            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
250            Local6 = (DerefOf (Local2) + 0x01)
251            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
252            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
253            M390 (Local2, V000, 0x00, __LINE__)
254            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
255            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
256            M390 (DerefOf (Local2), V000, 0x00, __LINE__)
257            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
258        }
259
260        If (Q001)
261        {
262            Store (P000 [0x00], Local5)
263            Local3 = DerefOf (Local5)
264            M390 (DerefOf (Local3), V000, 0x00, __LINE__)
265            Local4 = DerefOf (Local3)
266            M390 (Local4, V000, 0x00, __LINE__)
267            Local5 = Local2 = P000 [0x00]
268            Local3 = DerefOf (Local5)
269            M390 (DerefOf (Local3), V000, 0x00, __LINE__)
270            Local4 = DerefOf (Local3)
271            M390 (Local4, V000, 0x00, __LINE__)
272            Local3 = DerefOf (Local2)
273            M390 (DerefOf (Local3), V000, 0x00, __LINE__)
274            Local4 = DerefOf (Local3)
275            M390 (Local4, V000, 0x00, __LINE__)
276        }
277
278        /* if(q001) */
279        /* El_of_Package, Result, LocalX */
280        If (FL00)
281        {
282            Store (P000 [0x01], Local5)
283            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
284            Local6 = (Local5 + 0x01)
285            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
286            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
287            Local6 = (DerefOf (Local5) + 0x01)
288            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
289            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
290            M390 (Local5, V000, 0x00, __LINE__)
291            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
292            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
293            M390 (DerefOf (Local5), V000, 0x00, __LINE__)
294            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
295            Local5 = Local2 = P000 [0x01]
296            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
297            Local6 = (Local5 + 0x01)
298            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
299            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
300            Local6 = (DerefOf (Local5) + 0x01)
301            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
302            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
303            M390 (Local5, V000, 0x00, __LINE__)
304            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
305            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
306            M390 (DerefOf (Local5), V000, 0x00, __LINE__)
307            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
308            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
309            Local6 = (Local2 + 0x01)
310            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
311            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
312            Local6 = (DerefOf (Local2) + 0x01)
313            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
314            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
315            M390 (Local2, V000, 0x00, __LINE__)
316            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
317            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
318            M390 (DerefOf (Local2), V000, 0x00, __LINE__)
319            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
320        }
321
322        If (Q001)
323        {
324            Store (P000 [0x01], Local5)
325            Local3 = DerefOf (Local5)
326            M390 (DerefOf (Local3), V000, 0x00, __LINE__)
327            Local4 = DerefOf (Local3)
328            M390 (Local4, V000, 0x00, __LINE__)
329            Local5 = Local2 = P000 [0x01]
330            Local3 = DerefOf (Local5)
331            M390 (DerefOf (Local3), V000, 0x00, __LINE__)
332            Local4 = DerefOf (Local3)
333            M390 (Local4, V000, 0x00, __LINE__)
334            Local3 = DerefOf (Local2)
335            M390 (DerefOf (Local3), V000, 0x00, __LINE__)
336            Local4 = DerefOf (Local3)
337            M390 (Local4, V000, 0x00, __LINE__)
338        }
339
340        /* if(q001) */
341        /* El_of_Package, Destination, argX */
342        If (FL00)
343        {
344            Store (P000 [0x00], Arg5)
345            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
346            Arg6 = (Arg5 + 0x01)
347            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
348            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
349            Arg6 = (DerefOf (Arg5) + 0x01)
350            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
351            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
352            M390 (Arg5, V000, 0x00, __LINE__)
353            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
354            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
355            M390 (DerefOf (Arg5), V000, 0x00, __LINE__)
356            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
357            Arg5 = Arg2 = P000 [0x00]
358            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
359            Arg6 = (Arg5 + 0x01)
360            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
361            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
362            Arg6 = (DerefOf (Arg5) + 0x01)
363            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
364            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
365            M390 (Arg5, V000, 0x00, __LINE__)
366            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
367            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
368            M390 (DerefOf (Arg5), V000, 0x00, __LINE__)
369            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
370            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
371            Arg6 = (Arg2 + 0x01)
372            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
373            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
374            Arg6 = (DerefOf (Arg2) + 0x01)
375            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
376            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
377            M390 (Arg2, V000, 0x00, __LINE__)
378            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
379            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
380            M390 (DerefOf (Arg2), V000, 0x00, __LINE__)
381            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
382        }
383
384        If (Q001)
385        {
386            Store (P000 [0x00], Arg5)
387            Arg3 = DerefOf (Arg5)
388            M390 (DerefOf (Arg3), V000, 0x00, __LINE__)
389            Arg4 = DerefOf (Arg3)
390            M390 (Arg4, V000, 0x00, __LINE__)
391            Arg5 = Arg2 = P000 [0x00]
392            Arg3 = DerefOf (Arg5)
393            M390 (DerefOf (Arg3), V000, 0x00, __LINE__)
394            Arg4 = DerefOf (Arg3)
395            M390 (Arg4, V000, 0x00, __LINE__)
396            Arg3 = DerefOf (Arg2)
397            M390 (DerefOf (Arg3), V000, 0x00, __LINE__)
398            Arg4 = DerefOf (Arg3)
399            M390 (Arg4, V000, 0x00, __LINE__)
400        }
401
402        /* if(q001) */
403        /* El_of_Package, Result, argX */
404        If (FL00)
405        {
406            Store (P000 [0x01], Arg5)
407            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
408            Arg6 = (Arg5 + 0x01)
409            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
410            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
411            Arg6 = (DerefOf (Arg5) + 0x01)
412            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
413            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
414            M390 (Arg5, V000, 0x00, __LINE__)
415            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
416            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
417            M390 (DerefOf (Arg5), V000, 0x00, __LINE__)
418            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
419            Arg5 = Arg2 = P000 [0x01]
420            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
421            Arg6 = (Arg5 + 0x01)
422            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
423            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
424            Arg6 = (DerefOf (Arg5) + 0x01)
425            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
426            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
427            M390 (Arg5, V000, 0x00, __LINE__)
428            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
429            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
430            M390 (DerefOf (Arg5), V000, 0x00, __LINE__)
431            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
432            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
433            Arg6 = (Arg2 + 0x01)
434            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
435            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
436            Arg6 = (DerefOf (Arg2) + 0x01)
437            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
438            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
439            M390 (Arg2, V000, 0x00, __LINE__)
440            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
441            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
442            M390 (DerefOf (Arg2), V000, 0x00, __LINE__)
443            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
444        }
445
446        If (Q001)
447        {
448            Store (P000 [0x01], Arg5)
449            Arg3 = DerefOf (Arg5)
450            M390 (DerefOf (Arg3), V000, 0x00, __LINE__)
451            Arg4 = DerefOf (Arg3)
452            M390 (Arg4, V000, 0x00, __LINE__)
453            Arg5 = Arg2 = P000 [0x01]
454            Arg3 = DerefOf (Arg5)
455            M390 (DerefOf (Arg3), V000, 0x00, __LINE__)
456            Arg4 = DerefOf (Arg3)
457            M390 (Arg4, V000, 0x00, __LINE__)
458            Arg3 = DerefOf (Arg2)
459            M390 (DerefOf (Arg3), V000, 0x00, __LINE__)
460            Arg4 = DerefOf (Arg3)
461            M390 (Arg4, V000, 0x00, __LINE__)
462        }
463
464        /* if(q001) */
465
466        If (Y127)
467        {
468            /* El_of_Package, Destination, NamedX */
469
470            If (FL00)
471            {
472                CopyObject (PPP0 [0x00], I005) /* \M1C3.I005 */
473                Store (P000 [0x00], I005) /* \M1C3.I005 */
474                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
475                I006 = (I005 + 0x01)
476                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
477                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
478                I006 = (DerefOf (I005) + 0x01)
479                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
480                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
481                M390 (I005, V000, 0x00, __LINE__)
482                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
483                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
484                M390 (DerefOf (I005), V000, 0x00, __LINE__)
485                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
486                I005 = I002 = P000 [0x00]
487                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
488                I006 = (I005 + 0x01)
489                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
490                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
491                I006 = (DerefOf (I005) + 0x01)
492                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
493                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
494                M390 (I005, V000, 0x00, __LINE__)
495                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
496                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
497                M390 (DerefOf (I005), V000, 0x00, __LINE__)
498                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
499                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
500                I006 = (I002 + 0x01)
501                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
502                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
503                I006 = (DerefOf (I002) + 0x01)
504                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
505                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
506                M390 (I002, V000, 0x00, __LINE__)
507                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
508                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
509                M390 (DerefOf (I002), V000, 0x00, __LINE__)
510                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
511            }
512
513            If (Q001)
514            {
515                Store (P000 [0x00], I005) /* \M1C3.I005 */
516                I003 = DerefOf (I005)
517                M390 (DerefOf (I003), V000, 0x00, __LINE__)
518                I004 = DerefOf (I003)
519                M390 (I004, V000, 0x00, __LINE__)
520                I005 = I002 = P000 [0x00]
521                I003 = DerefOf (I005)
522                M390 (DerefOf (I003), V000, 0x00, __LINE__)
523                I004 = DerefOf (I003)
524                M390 (I004, V000, 0x00, __LINE__)
525                I003 = DerefOf (I002)
526                M390 (DerefOf (I003), V000, 0x00, __LINE__)
527                I004 = DerefOf (I003)
528                M390 (I004, V000, 0x00, __LINE__)
529            }
530
531            /* if(q001) */
532            /* El_of_Package, Result, NamedX */
533            If (FL00)
534            {
535                Store (P000 [0x01], I005) /* \M1C3.I005 */
536                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
537                I006 = (I005 + 0x01)
538                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
539                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
540                I006 = (DerefOf (I005) + 0x01)
541                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
542                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
543                M390 (I005, V000, 0x00, __LINE__)
544                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
545                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
546                M390 (DerefOf (I005), V000, 0x00, __LINE__)
547                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
548                I005 = I002 = P000 [0x01]
549                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
550                I006 = (I005 + 0x01)
551                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
552                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
553                I006 = (DerefOf (I005) + 0x01)
554                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
555                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
556                M390 (I005, V000, 0x00, __LINE__)
557                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
558                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
559                M390 (DerefOf (I005), V000, 0x00, __LINE__)
560                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
561                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
562                I006 = (I002 + 0x01)
563                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
564                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
565                I006 = (DerefOf (I002) + 0x01)
566                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
567                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
568                M390 (I002, V000, 0x00, __LINE__)
569                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
570                CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
571                M390 (DerefOf (I002), V000, 0x00, __LINE__)
572                CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
573            }
574
575            If (Q001)
576            {
577                Store (P000 [0x01], I005) /* \M1C3.I005 */
578                I003 = DerefOf (I005)
579                M390 (DerefOf (I003), V000, 0x00, __LINE__)
580                I004 = DerefOf (I003)
581                M390 (I004, V000, 0x00, __LINE__)
582                I005 = I002 = P000 [0x01]
583                I003 = DerefOf (I005)
584                M390 (DerefOf (I003), V000, 0x00, __LINE__)
585                I004 = DerefOf (I003)
586                M390 (I004, V000, 0x00, __LINE__)
587                I003 = DerefOf (I002)
588                M390 (DerefOf (I003), V000, 0x00, __LINE__)
589                I004 = DerefOf (I003)
590                M390 (I004, V000, 0x00, __LINE__)
591            }
592                /* if(q001) */
593        }
594        /* if(y127) */
595    }
596
597    /* Check Uninitialized element of Package */
598
599    Method (M1C4, 0, Serialized)
600    {
601        Name (PPP0, Package (0x0A)
602        {
603            0x77,
604            "qwer0000",
605            Buffer (0x04)
606            {
607                 0x01, 0x77, 0x03, 0x04                           // .w..
608            },
609
610            Package (0x03)
611            {
612                0x05,
613                0x77,
614                0x07
615            }
616        })
617        Method (M000, 2, NotSerialized)
618        {
619            Store (Arg0 [Arg1], Local0)
620            M1A3 (Local0, C008, Z116, "m1c4", __LINE__)
621        }
622
623        M000 (PPP0, 0x04)
624        M000 (PPP0, 0x05)
625        M000 (PPP0, 0x06)
626        M000 (PPP0, 0x07)
627        M000 (PPP0, 0x08)
628        M000 (PPP0, 0x09)
629    }
630
631    /* The chain of Index_References */
632
633    Method (M1C5, 0, Serialized)
634    {
635        Name (PPP0, Package (0x04)
636        {
637            0x77,
638            "qwer0000",
639            Buffer (0x04)
640            {
641                 0x01, 0x77, 0x03, 0x04                           // .w..
642            },
643
644            Package (0x03)
645            {
646                0x05,
647                0x77,
648                0x07
649            }
650        })
651        Name (P000, Package (0x14){})
652        Store (PPP0 [0x00], P000 [0x00])
653        M390 (DerefOf (DerefOf (P000 [0x00])), C009, Z116, 0x5E)
654        If (Q002)
655        {
656            Store (P000 [0x00], P000 [0x01])
657            M390 (DerefOf (DerefOf (DerefOf (P000 [0x01]))), C009, Z116, 0x5F)
658            Store (P000 [0x01], P000 [0x02])
659            M390 (DerefOf (DerefOf (DerefOf (DerefOf (P000 [0x02])))), C009, Z116, 0x60)
660            Store (P000 [0x02], P000 [0x03])
661            M390 (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (P000 [0x03]))))), C009, Z116,
662                0x61)
663            Store (P000 [0x03], P000 [0x04])
664            M390 (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (P000 [0x04])))))), C009,
665                Z116, 0x62)
666            Store (P000 [0x04], P000 [0x05])
667            M390 (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (P000 [0x05]))))))),
668                C009, Z116, 0x63)
669            Store (P000 [0x05], P000 [0x06])
670            M390 (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (P000 [0x06]
671                )))))))), C009, Z116, 0x64)
672            Store (P000 [0x06], P000 [0x07])
673            M390 (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (P000 [
674                0x07]))))))))), C009, Z116, 0x65)
675        }
676
677        M390 (DerefOf (DerefOf (P000 [0x00])), C009, Z116, 0x66)
678        If (Q002)
679        {
680            M390 (DerefOf (DerefOf (DerefOf (P000 [0x01]))), C009, Z116, 0x67)
681            M390 (DerefOf (DerefOf (DerefOf (DerefOf (P000 [0x02])))), C009, Z116, 0x68)
682            M390 (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (P000 [0x03]))))), C009, Z116,
683                0x69)
684            M390 (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (P000 [0x04])))))), C009,
685                Z116, 0x6A)
686            M390 (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (P000 [0x05]))))))),
687                C009, Z116, 0x6B)
688            M390 (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (P000 [0x06]
689                )))))))), C009, Z116, 0x6C)
690            M390 (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (DerefOf (P000 [
691                0x07]))))))))), C009, Z116, 0x6D)
692        }
693    }
694
695    /* Access to the Method named object element of Package */
696    /* Methods without parameters */
697    Method (M1C7, 0, Serialized)
698    {
699        Name (I000, 0x77)
700        Method (M000, 0, NotSerialized)
701        {
702            I000 = 0x00
703        }
704
705        Method (M001, 0, NotSerialized)
706        {
707            I000 = 0x01
708            Return (0x12345678)
709        }
710
711        Method (M002, 0, NotSerialized)
712        {
713            I000 = 0x00
714        }
715
716        Method (M003, 0, NotSerialized)
717        {
718            I000 = 0x01
719            Return (0x12345678)
720        }
721
722        Name (P000, Package (0x0A)
723        {
724            M000,
725            M001,
726            M002,
727            M003,
728            M000,
729            M001,
730            M002,
731            M003,
732            I000,
733            I000
734        })
735        Store (P000 [0x00], Local0)
736        M1A3 (Local0, C010, Z116, __METHOD__, __LINE__)
737        Store (P000 [0x01], Local0)
738        M1A3 (Local0, C010, Z116, __METHOD__, __LINE__)
739        Store (P000 [0x02], Local0)
740        M1A3 (Local0, C010, Z116, __METHOD__, __LINE__)
741        Store (P000 [0x03], Local0)
742        M1A3 (Local0, C010, Z116, __METHOD__, __LINE__)
743        Store (P000 [0x04], Local0)
744        M1A3 (Local0, C010, Z116, __METHOD__, __LINE__)
745        Store (P000 [0x05], Local0)
746        M1A3 (Local0, C010, Z116, __METHOD__, __LINE__)
747        Store (P000 [0x06], Local0)
748        M1A3 (Local0, C010, Z116, __METHOD__, __LINE__)
749        Store (P000 [0x07], Local0)
750        M1A3 (Local0, C010, Z116, __METHOD__, __LINE__)
751        Store (P000 [0x08], Local0)
752        M1A3 (Local0, C009, Z116, __METHOD__, __LINE__)
753        Store (P000 [0x09], Local0)
754        M1A3 (Local0, C009, Z116, __METHOD__, __LINE__)
755        M380 (__METHOD__, I000, 0x00, __LINE__)
756    }
757
758    /* CURRENTLY: compiler failed, Too few arguments (M002 requires X) */
759    /* Methods with parameters */
760    Method (M1C8, 0, Serialized)
761    {
762        /*
763     Name(i000, 0x77)
764     Method(m000) {
765     Store(0, i000)
766     }
767     Method(m001) {
768     Store(1, i000)
769     return (0x12345678)
770     }
771     Method(m002, 1) {
772     Store(arg0, i000)
773     Store(0, i000)
774     }
775     Method(m003, 7) {
776     Store(arg0, i000)
777     Store(arg1, i000)
778     Store(arg2, i000)
779     Store(arg3, i000)
780     Store(arg4, i000)
781     Store(arg5, i000)
782     Store(arg6, i000)
783     Store(1, i000)
784     return (0x12345678)
785     }
786     Name(p000, Package() {m000, m001, m002, m003,
787     m000, m001, m002, m003,
788     i000, i000})
789     Store(Index(p000, 0), Local0)
790     m1a3(Local0, c010, z116, ts, `120)
791     Store(Index(p000, 1), Local0)
792     m1a3(Local0, c010, z116, ts, 121)
793     Store(Index(p000, 2), Local0)
794     m1a3(Local0, c010, z116, ts, 122)
795     Store(Index(p000, 3), Local0)
796     m1a3(Local0, c010, z116, ts, 123)
797     Store(Index(p000, 4), Local0)
798     m1a3(Local0, c010, z116, ts, 124)
799     Store(Index(p000, 5), Local0)
800     m1a3(Local0, c010, z116, ts, 125)
801     Store(Index(p000, 6), Local0)
802     m1a3(Local0, c010, z116, ts, 126)
803     Store(Index(p000, 7), Local0)
804     m1a3(Local0, c010, z116, ts, 127)
805     Store(Index(p000, 8), Local0)
806     m1a3(Local0, c009, z116, ts, 128)
807     Store(Index(p000, 9), Local0)
808     m1a3(Local0, c009, z116, ts, 129)
809     m380 (ts, i000, 0, __LINE__)
810     */
811    }
812
813    /* DerefOf of the Method named object element of Package */
814
815    Method (M1C9, 0, Serialized)
816    {
817        Name (I000, 0x77)
818        Method (M000, 0, NotSerialized)
819        {
820            I000 = 0x00
821        }
822
823        Method (M001, 0, NotSerialized)
824        {
825            I000 = 0x01
826            Return (0x12345678)
827        }
828
829        Method (M002, 0, NotSerialized)
830        {
831            I000 = 0x00
832        }
833
834        Method (M003, 0, NotSerialized)
835        {
836            I000 = 0x01
837            Return (0x12345678)
838        }
839
840        Name (P000, Package (0x0A)
841        {
842            M000,
843            M001,
844            M002,
845            M003,
846            M000,
847            M001,
848            M002,
849            M003,
850            I000,
851            I000
852        })
853        Store (P000 [0x00], Local0)
854        M1A3 (Local0, C010, Z116, __METHOD__, __LINE__)
855        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
856        Local1 = DerefOf (Local0)
857        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
858        Store (P000 [0x01], Local0)
859        M1A3 (Local0, C010, Z116, __METHOD__, __LINE__)
860        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
861        Local1 = DerefOf (Local0)
862        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
863        Store (P000 [0x02], Local0)
864        M1A3 (Local0, C010, Z116, __METHOD__, __LINE__)
865        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
866        Local1 = DerefOf (Local0)
867        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
868        Store (P000 [0x03], Local0)
869        M1A3 (Local0, C010, Z116, __METHOD__, __LINE__)
870        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
871        Local1 = DerefOf (Local0)
872        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
873        Store (P000 [0x04], Local0)
874        M1A3 (Local0, C010, Z116, __METHOD__, __LINE__)
875        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
876        Local1 = DerefOf (Local0)
877        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
878        Store (P000 [0x05], Local0)
879        M1A3 (Local0, C010, Z116, __METHOD__, __LINE__)
880        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
881        Local1 = DerefOf (Local0)
882        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
883        Store (P000 [0x06], Local0)
884        M1A3 (Local0, C010, Z116, __METHOD__, __LINE__)
885        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
886        Local1 = DerefOf (Local0)
887        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
888        Store (P000 [0x07], Local0)
889        M1A3 (Local0, C010, Z116, __METHOD__, __LINE__)
890        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
891        Local1 = DerefOf (Local0)
892        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
893        M380 (__METHOD__, I000, 0x00, __LINE__)
894    }
895
896    /* Size of Package */
897
898    Method (M1CA, 0, Serialized)
899    {
900        Method (M000, 1, Serialized)
901        {
902            Name (P000, Package (Arg0){})
903            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
904            Store (P000 [Arg0], Local0)
905            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
906        }
907
908        Method (M001, 1, Serialized)
909        {
910            Name (P000, Package (Arg0){})
911            Name (LPN0, 0x00)
912            Name (LPC0, 0x00)
913            /* Write each element of Package with its index */
914
915            LPN0 = Arg0
916            LPC0 = 0x00
917            While (LPN0)
918            {
919                P000 [LPC0] = LPC0 /* \M1CA.M001.LPC0 */
920                LPN0--
921                LPC0++
922            }
923
924            /* Verify each element of Package */
925
926            LPN0 = Arg0
927            LPC0 = 0x00
928            While (LPN0)
929            {
930                Store (P000 [LPC0], Local0)
931                Local1 = DerefOf (Local0)
932                If ((Local1 != LPC0))
933                {
934                    ERR (__METHOD__, Z116, __LINE__, Z116, 0x00, Local1, LPC0)
935                    Break
936                }
937
938                LPN0--
939                LPC0++
940            }
941        }
942
943        Method (M003, 0, Serialized)
944        {
945            Name (P000, Package (0x02){})
946            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
947            Store (P000 [0x02], Local0)
948            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
949        }
950
951        Method (M004, 0, Serialized)
952        {
953            Name (P000, Package (0xFF){})
954            CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
955            Store (P000 [0xFF], Local0)
956            CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
957        }
958
959        /* Size not greater than 255 */
960
961        M000 (0x01)
962        M000 (0x08)
963        M000 (0x7F)
964        M000 (0xFF)
965        M003 ()
966        M004 ()
967        /* VarPackage: size of Package greater than 255 */
968        /* (bug 129, not a bug) */
969        M001 (0x0100)
970    }
971
972    /* Size of Package, see comma "6,})" */
973
974    Method (M1CB, 0, Serialized)
975    {
976        Name (P000, Package (0x06)
977        {
978            0x01,
979            0x02,
980            0x03,
981            0x04,
982            0x05,
983            0x06
984        })
985        Local0 = SizeOf (P000)
986        If ((Local0 != 0x06))
987        {
988            ERR (__METHOD__, Z116, __LINE__, 0x00, 0x00, Local0, 0x06)
989        }
990    }
991
992    /* Check the read automatic dereference */
993    /* arg0 - name of Method initiating the checking */
994    /* arg1 - Oref or IRef */
995    /* arg2 - expected value */
996    /* arg3 - exception is expected */
997    Method (M1CC, 4, NotSerialized)
998    {
999        CH03 (Arg0, Z116, __LINE__, 0x00, 0x00)
1000        Local0 = Arg1
1001        Local7 = (Local0 + 0x01)
1002        If ((Local7 != Arg2))
1003        {
1004            ERR (Arg0, Z116, __LINE__, 0x00, 0x00, Local7, Arg2)
1005        }
1006
1007        CH03 (Arg0, Z116, __LINE__, 0x00, 0x00)
1008    }
1009
1010    /* Check the read automatic dereference */
1011    /* arg0 - name of Method initiating the checking */
1012    /* arg1 - Oref or IRef */
1013    /* arg2 - expected value */
1014    /* arg3 - exception is expected */
1015    Method (M1CD, 4, NotSerialized)
1016    {
1017        CH03 (Arg0, Z116, __LINE__, 0x00, 0x00)
1018        Local7 = (Arg1 + 0x01)
1019        If ((Local7 != Arg2))
1020        {
1021            ERR (Arg0, Z116, __LINE__, 0x00, 0x00, Local7, Arg2)
1022        }
1023
1024        CH03 (Arg0, Z116, __LINE__, 0x00, 0x00)
1025    }
1026
1027    /* Check the read automatic dereference */
1028    /* when accessing element of Package. */
1029    Method (M1CE, 0, Serialized)
1030    {
1031        Name (P000, Package (0x01)
1032        {
1033            0x77
1034        })
1035        M1CC (__METHOD__, Local0 = P000 [0x00], 0x78, 0x00)
1036        M1CD (__METHOD__, P000 [0x00], 0x78, 0x00)
1037    }
1038
1039    Method (M1CF, 0, Serialized)
1040    {
1041        Name (P000, Package (0x01)
1042        {
1043            0x77
1044        })
1045        Local0 = P000 [0x00]
1046        M1CC (__METHOD__, Local0, 0x78, 0x00)
1047        M1CD (__METHOD__, Local0, 0x78, 0x00)
1048        Local1 = Local0 = P000 [0x00]
1049        M1CC (__METHOD__, Local0, 0x78, 0x00)
1050        M1CD (__METHOD__, Local0, 0x78, 0x00)
1051        M1CC (__METHOD__, Local1, 0x78, 0x00)
1052        M1CD (__METHOD__, Local1, 0x78, 0x00)
1053    }
1054
1055    Method (M1D0, 0, Serialized)
1056    {
1057        Name (P000, Package (0x01)
1058        {
1059            0x77
1060        })
1061        CopyObject (Local0 = P000 [0x00], Local1)
1062        M1CC (__METHOD__, Local0, 0x78, 0x00)
1063        M1CD (__METHOD__, Local0, 0x78, 0x00)
1064        M1CC (__METHOD__, Local1, 0x78, 0x00)
1065        M1CD (__METHOD__, Local1, 0x78, 0x00)
1066    }
1067
1068    /* EXCEPTIONS */
1069    /* ref07.asl 1093: Add(Index(p000, 0, Local0), 1, Local7) */
1070    /* Error 1035 -    Invalid type ^  ([Reference] found, */
1071    /*                   Add operator requires [Integer|String|Buffer]) */
1072    /*
1073     * Method(m1d1)
1074     * {
1075     *	Name(p000, Package(1) {0x77})
1076     *	CH03(ts, z116, 170, __LINE__, 0)
1077     *	Add(Index(p000, 0, Local0), 1, Local7)
1078     *	CH04(ts, 0, 0xff, z116, __LINE__, 0, 0)
1079     * }
1080     */
1081    /* LocalX */
1082    Method (M1D1, 0, Serialized)
1083    {
1084        Name (P000, Package (0x01)
1085        {
1086            0x77
1087        })
1088        Local1 = Local0 = P000 [0x00]
1089        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
1090        Local7 = (Local0 + 0x01)
1091        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
1092        Local7 = (Local1 + 0x01)
1093        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
1094    }
1095
1096    Method (M1D2, 0, Serialized)
1097    {
1098        Name (P000, Package (0x01)
1099        {
1100            0x77
1101        })
1102        CopyObject (Local0 = P000 [0x00], Local1)
1103        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
1104        Local7 = (Local0 + 0x01)
1105        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
1106        Local7 = (Local1 + 0x01)
1107        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
1108    }
1109
1110    /* ArgX */
1111
1112    Method (M1D3, 2, Serialized)
1113    {
1114        Name (P000, Package (0x01)
1115        {
1116            0x77
1117        })
1118        Arg1 = Arg0 = P000 [0x00]
1119        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
1120        Local7 = (Arg0 + 0x01)
1121        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
1122        Local7 = (Arg1 + 0x01)
1123        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
1124    }
1125
1126    Method (M1D4, 2, Serialized)
1127    {
1128        Name (P000, Package (0x01)
1129        {
1130            0x77
1131        })
1132        CopyObject (Arg0 = P000 [0x00], Arg1)
1133        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
1134        Local7 = (Arg0 + 0x01)
1135        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
1136        /* Type of Arg1 should be IRef here, */
1137        /* so, exception is expected. */
1138        Local7 = (Arg1 + 0x01)
1139        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
1140    }
1141
1142    /* NamedX */
1143
1144    Method (M1D5, 0, Serialized)
1145    {
1146        Name (I001, 0x00)
1147        Name (P000, Package (0x02)
1148        {
1149            0x77,
1150            0x88
1151        })
1152        Name (SW00, 0x01)
1153        Name (HG00, 0x00) /* if non-zero - the test hangs */
1154        Name (HG01, 0x00) /* if non-zero - the test hangs */
1155        Name (HG02, 0x00) /* if non-zero - the test hangs */
1156        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
1157        CopyObject (Local0 = P000 [0x01], I001) /* \M1D5.I001 */
1158        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
1159        /* Type of i001 should be already IRef here, */
1160        /* so, don't expect exception. */
1161        I001 = Local0 = P000 [0x00]
1162        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
1163        Local7 = (Local0 + 0x01)
1164        If (Y248)
1165        {
1166            HG00 = 0x01
1167            HG01 = 0x01
1168            HG02 = 0x01
1169        }
1170
1171        /*
1172         * To show visually the consequences of the anomaly
1173         * run one of code below. They cause hang.
1174         */
1175        If (HG00)
1176        {
1177            /* Infinite loop of printing */
1178
1179            Local1 = 0x00
1180            Debug = Local0
1181        }
1182
1183        If (HG01)
1184        {
1185            /* Infinite loop of printing */
1186
1187            Debug = Local0
1188            Debug = Local0
1189        }
1190
1191        If (HG02)
1192        {
1193            Local1 = 0x00
1194            Debug = "============== sit 2:"
1195            Local7 = ObjectType (Local0)
1196            Debug = Local7
1197        }
1198
1199        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
1200        Local7 = (I001 + 0x01)
1201        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
1202        /*
1203         * Looks identical to b248: "Incorrect ReferenceCount on Switch operation":
1204         *
1205         * Reference count of Local0 is mistakenly zeroed there too.
1206         *
1207         * [ACPI Debug]  String: [0x0F] "<-------- 0000>"
1208         * [ACPI Debug]  Reference: [Debug]
1209         * [ACPI Debug]  String: [0x0F] "<-------- 1111>"
1210         *
1211         * [ACPI Debug]  String: [0x0F] "<-------- 0000>"
1212         * [ACPI Debug]  [ACPI Debug]  String: [0x0F] "<-------- 1111>"
1213         */
1214        Debug = "<-------- 0000>"
1215        Debug = Local0
1216        Debug = "<-------- 1111>"
1217    }
1218
1219    Method (M1D6, 0, Serialized)
1220    {
1221        Name (I001, 0x00)
1222        Name (P000, Package (0x01)
1223        {
1224            0x77
1225        })
1226        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
1227        CopyObject (Local0 = P000 [0x00], I001) /* \M1D6.I001 */
1228        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
1229        Local7 = (I001 + 0x01)
1230        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
1231    }
1232
1233    /* Out of Package */
1234
1235    Method (M1D7, 0, Serialized)
1236    {
1237        Name (P000, Package (0x01)
1238        {
1239            0x77
1240        })
1241        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
1242        Store (P000 [0x01], Local0)
1243        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
1244        Local1 = Local0 = P000 [0x01]
1245        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
1246    }
1247
1248    Method (M1D8, 0, Serialized)
1249    {
1250        Name (P000, Package (0x01)
1251        {
1252            0x77
1253        })
1254        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
1255        CopyObject (P000 [0x01], Local0)
1256        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
1257        CopyObject (Local0 = P000 [0x01], Local1)
1258        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
1259    }
1260
1261    Method (M1DB, 0, Serialized)
1262    {
1263        Name (I001, 0x00)
1264        Name (P000, Package (0x02)
1265        {
1266            0x77,
1267            0x88
1268        })
1269        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
1270        CopyObject (P000 [0x01], I001) /* \M1DB.I001 */
1271        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
1272        /* Type of i001 should be already IRef here, */
1273        /* so, don't expect exception. Writing to i001 */
1274        /* is here identical to Store into it. */
1275        I001 = P000 [0x00]
1276        CH03 (__METHOD__, Z116, __LINE__, 0x00, 0x00)
1277        Local7 = (I001 + 0x01)
1278        CH04 (__METHOD__, 0x00, 0xFF, Z116, __LINE__, 0x00, 0x00)
1279    }
1280
1281    /* WRITE */
1282
1283    Method (M1D9, 0, Serialized)
1284    {
1285        Name (P000, Package (0x03)
1286        {
1287            0x05,
1288            0x00,
1289            0x07
1290        })
1291        Method (M000, 1, NotSerialized)
1292        {
1293            Local0 = (0x76 + 0x01)
1294            Arg0 = Local0
1295        }
1296
1297        M000 (P000 [0x01])
1298        M383 ("m1d9", P000, Z116, __LINE__)
1299    }
1300
1301    Method (M1DA, 0, Serialized)
1302    {
1303        Name (P000, Package (0x03)
1304        {
1305            0x05,
1306            0x00,
1307            0x07
1308        })
1309        Method (M000, 1, NotSerialized)
1310        {
1311            Arg0 = (0x76 + 0x01)
1312        }
1313
1314        M000 (P000 [0x01])
1315        M383 ("m1da", P000, Z116, __LINE__)
1316    }
1317