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     * The tests differ those from ns1.asl by that the parent object is
30     * passed to methods as argument (Arg) but not directly by name.
31     */
32    Name (Z157, 0x9D)
33    Method (M300, 0, Serialized)
34    {
35        Name (P000, Package (0x03)
36        {
37            0xABCD0000,
38            0xABCD0001,
39            0xABCD0002
40        })
41        Method (M000, 1, NotSerialized)
42        {
43            Method (M001, 2, NotSerialized)
44            {
45                Arg0 [0x00] = 0x11112222
46            }
47
48            M001 (Arg0, RefOf (Arg0))
49            Local0 = DerefOf (Arg0 [0x00])
50            If ((Local0 != 0x11112222))
51            {
52                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x11112222)
53            }
54        }
55
56        M000 (P000)
57        Local0 = DerefOf (P000 [0x00])
58        If ((Local0 != 0x11112222))
59        {
60            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x11112222)
61        }
62
63        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
64    }
65
66    Method (M301, 0, Serialized)
67    {
68        Name (B000, Buffer (0x03)
69        {
70             0x10, 0x11, 0x12                                 // ...
71        })
72        Method (M000, 1, NotSerialized)
73        {
74            Method (M001, 2, NotSerialized)
75            {
76                Arg0 [0x00] = 0x67
77            }
78
79            M001 (Arg0, RefOf (Arg0))
80            Local0 = DerefOf (Arg0 [0x00])
81            If ((Local0 != 0x67))
82            {
83                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x67)
84            }
85        }
86
87        M000 (B000)
88        Local0 = DerefOf (B000 [0x00])
89        If ((Local0 != 0x67))
90        {
91            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x67)
92        }
93
94        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
95    }
96
97    Method (M302, 0, Serialized)
98    {
99        Name (S000, "qqqqqqqqqqqqqq")
100        Method (M000, 1, NotSerialized)
101        {
102            Method (M001, 2, NotSerialized)
103            {
104                Arg0 [0x00] = 0x38
105            }
106
107            M001 (Arg0, RefOf (Arg0))
108            Local0 = DerefOf (Arg0 [0x00])
109            If ((Local0 != 0x38))
110            {
111                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x38)
112            }
113        }
114
115        M000 (S000)
116        Local0 = DerefOf (S000 [0x00])
117        If ((Local0 != 0x38))
118        {
119            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x38)
120        }
121
122        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
123    }
124
125    /*
126     * Element of Package instead of i000 (in m001)
127     */
128    Method (M303, 1, Serialized)
129    {
130        Name (PP00, Package (0x03)
131        {
132            0x11111111,
133            0x01,
134            0x22223333
135        })
136        Method (M000, 2, Serialized)
137        {
138            Name (I001, 0x00)
139            Name (P000, Package (0x04)
140            {
141                0x01,
142                0x02,
143                0x03,
144                0x04
145            })
146            CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
147            I001 = Arg1
148            Method (M001, 1, NotSerialized)
149            {
150                Method (M002, 1, NotSerialized)
151                {
152                    Method (M003, 1, NotSerialized)
153                    {
154                        Method (M004, 1, NotSerialized)
155                        {
156                            Method (M005, 1, NotSerialized)
157                            {
158                                Method (M006, 1, NotSerialized)
159                                {
160                                    Method (M007, 1, NotSerialized)
161                                    {
162                                        Method (M008, 1, NotSerialized)
163                                        {
164                                            If (I001)
165                                            {
166                                                Arg0 [0x01] = P000 /* \M303.M000.P000 */
167                                            }
168
169                                            Return (0x00)
170                                        }
171
172                                        Arg0 [0x01] = 0x80000000
173                                        Return ((DerefOf (Arg0 [0x01]) + M008 (Arg0)))
174                                    }
175
176                                    Arg0 [0x01] = 0x07000000
177                                    Return ((DerefOf (Arg0 [0x01]) + M007 (Arg0)))
178                                }
179
180                                Arg0 [0x01] = 0x00600000
181                                Return ((DerefOf (Arg0 [0x01]) + M006 (Arg0)))
182                            }
183
184                            Arg0 [0x01] = 0x00050000
185                            Return ((DerefOf (Arg0 [0x01]) + M005 (Arg0)))
186                        }
187
188                        Arg0 [0x01] = 0x4000
189                        Return ((DerefOf (Arg0 [0x01]) + M004 (Arg0)))
190                    }
191
192                    Arg0 [0x01] = 0x0300
193                    Return ((DerefOf (Arg0 [0x01]) + M003 (Arg0)))
194                }
195
196                Arg0 [0x01] = 0x20
197                Return ((DerefOf (Arg0 [0x01]) + M002 (Arg0)))
198            }
199
200            Store ((DerefOf (Arg0 [0x01]) + M001 (Arg0)), Local0)
201            If ((Local0 != 0x87654321))
202            {
203                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x87654321)
204            }
205
206            Local1 = DerefOf (Arg0 [0x01])
207            If ((Local1 != 0x80000000))
208            {
209                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local1, 0x80000000)
210            }
211
212            CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
213            Return (Local0)
214        }
215
216        Local0 = M000 (PP00, Arg0)
217        If ((Local0 != 0x87654321))
218        {
219            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x87654321)
220        }
221
222        Local0 = DerefOf (PP00 [0x01])
223        If ((Local0 != 0x80000000))
224        {
225            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x80000000)
226        }
227
228        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
229    }
230
231    /*
232     * Element of Package instead of i000 (in m002)
233     */
234    Method (M304, 0, Serialized)
235    {
236        Name (I001, 0x00)
237        Name (PP00, Package (0x03)
238        {
239            0x11111111,
240            0x00100000,
241            0x22223333
242        })
243        Method (M000, 1, NotSerialized)
244        {
245            Method (M001, 1, NotSerialized)
246            {
247                If ((I001 < 0x64))
248                {
249                    Local0 = DerefOf (Arg0 [0x01])
250                    Local0++
251                    Arg0 [0x01] = Local0
252                    I001++
253                    Local0 = (DerefOf (Arg0 [0x01]) + M001 (Arg0))
254                    Return (Local0)
255                }
256
257                Return (0x00)
258            }
259
260            Store ((DerefOf (Arg0 [0x01]) + M001 (Arg0)), Local0)
261            If ((Local0 != 0x065013BA))
262            {
263                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x065013BA)
264            }
265
266            Local1 = DerefOf (Arg0 [0x01])
267            If ((Local1 != 0x00100064))
268            {
269                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local1, 0x00100064)
270            }
271
272            Return (Local0)
273        }
274
275        Local0 = M000 (PP00)
276        If ((Local0 != 0x065013BA))
277        {
278            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x065013BA)
279        }
280
281        Local1 = DerefOf (PP00 [0x01])
282        If ((Local1 != 0x00100064))
283        {
284            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local1, 0x00100064)
285        }
286
287        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
288    }
289
290    /*
291     * Buffer Field instead of i000 (in m001)
292     */
293    Method (M305, 0, Serialized)
294    {
295        Name (B000, Buffer (0x10){})
296        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
297        CreateField (B000, 0x05, 0x20, BF00)
298        BF00 = 0xABCDEF70
299        Method (M000, 1, NotSerialized)
300        {
301            Method (M001, 0, NotSerialized)
302            {
303                Method (M002, 0, NotSerialized)
304                {
305                    Method (M003, 0, NotSerialized)
306                    {
307                        Method (M004, 0, NotSerialized)
308                        {
309                            Method (M005, 0, NotSerialized)
310                            {
311                                Method (M006, 0, NotSerialized)
312                                {
313                                    Method (M007, 0, NotSerialized)
314                                    {
315                                        Method (M008, 0, NotSerialized)
316                                        {
317                                            Return (0x00)
318                                        }
319
320                                        Arg0 = 0x80000000
321                                        Return ((Arg0 + M008 ()))
322                                    }
323
324                                    Arg0 = 0x07000000
325                                    Return ((Arg0 + M007 ()))
326                                }
327
328                                Arg0 = 0x00600000
329                                Return ((Arg0 + M006 ()))
330                            }
331
332                            Arg0 = 0x00050000
333                            Return ((Arg0 + M005 ()))
334                        }
335
336                        Arg0 = 0x4000
337                        Return ((Arg0 + M004 ()))
338                    }
339
340                    Arg0 = 0x0300
341                    Return ((Arg0 + M003 ()))
342                }
343
344                Arg0 = 0x20
345                Return ((Arg0 + M002 ()))
346            }
347
348            Arg0 = 0x01
349            Store ((Arg0 + M001 ()), Local0)
350            If ((Local0 != 0x87654321))
351            {
352                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x87654321)
353            }
354
355            Local1 = 0x01
356            If ((Arg0 != Local1))
357            {
358                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Arg0, Local1)
359            }
360
361            CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
362            Return (Local0)
363        }
364
365        Local0 = M000 (BF00)
366        If ((Local0 != 0x87654321))
367        {
368            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x87654321)
369        }
370
371        Local1 = Buffer () {0x70, 0xEF, 0xCD, 0xAB}
372        If ((BF00 != Local1))
373        {
374            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, BF00, Local1)
375        }
376
377        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
378    }
379
380    /*
381     * Field instead of i000 (in m001)
382     */
383    Method (M306, 0, Serialized)
384    {
385        Name (I001, 0x00)
386        OperationRegion (R000, SystemMemory, 0x0100, 0x0100)
387        Field (R000, ByteAcc, NoLock, Preserve)
388        {
389            F000,   32,
390            F001,   32
391        }
392
393        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
394        F000 = 0xABCDEF70
395        Method (M000, 1, NotSerialized)
396        {
397            Method (M001, 0, NotSerialized)
398            {
399                Method (M002, 0, NotSerialized)
400                {
401                    Method (M003, 0, NotSerialized)
402                    {
403                        Method (M004, 0, NotSerialized)
404                        {
405                            Method (M005, 0, NotSerialized)
406                            {
407                                Method (M006, 0, NotSerialized)
408                                {
409                                    Method (M007, 0, NotSerialized)
410                                    {
411                                        Method (M008, 0, NotSerialized)
412                                        {
413                                            Return (0x00)
414                                        }
415
416                                        Arg0 = 0x80000000
417                                        Return ((Arg0 + M008 ()))
418                                    }
419
420                                    Arg0 = 0x07000000
421                                    Return ((Arg0 + M007 ()))
422                                }
423
424                                Arg0 = 0x00600000
425                                Return ((Arg0 + M006 ()))
426                            }
427
428                            Arg0 = 0x00050000
429                            Return ((Arg0 + M005 ()))
430                        }
431
432                        Arg0 = 0x4000
433                        Return ((Arg0 + M004 ()))
434                    }
435
436                    Arg0 = 0x0300
437                    Return ((Arg0 + M003 ()))
438                }
439
440                Arg0 = 0x20
441                Return ((Arg0 + M002 ()))
442            }
443
444            Arg0 = 0x01
445            Store ((Arg0 + M001 ()), Local0)
446            If ((Local0 != 0x87654321))
447            {
448                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x87654321)
449            }
450
451            Local1 = 0x01
452            If ((Arg0 != Local1))
453            {
454                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Arg0, Local1)
455            }
456
457            CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
458            Return (Local0)
459        }
460
461        Local0 = M000 (F000)
462        If ((Local0 != 0x87654321))
463        {
464            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x87654321)
465        }
466
467        Local1 = 0xABCDEF70
468        If ((F000 != Local1))
469        {
470            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, F000, Local1)
471        }
472
473        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
474    }
475
476    /*
477     * Bank Field instead of i000 (in m001)
478     */
479    Method (M307, 0, Serialized)
480    {
481        Name (I001, 0x00)
482        OperationRegion (R000, SystemMemory, 0x0100, 0x0100)
483        Field (R000, ByteAcc, NoLock, Preserve)
484        {
485            F000,   32,
486            F001,   32
487        }
488
489        BankField (R000, F001, 0x00, ByteAcc, NoLock, Preserve)
490        {
491            BNK0,   32
492        }
493
494        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
495        BNK0 = 0xABCDEF70
496        Method (M000, 1, NotSerialized)
497        {
498            Method (M001, 0, NotSerialized)
499            {
500                Method (M002, 0, NotSerialized)
501                {
502                    Method (M003, 0, NotSerialized)
503                    {
504                        Method (M004, 0, NotSerialized)
505                        {
506                            Method (M005, 0, NotSerialized)
507                            {
508                                Method (M006, 0, NotSerialized)
509                                {
510                                    Method (M007, 0, NotSerialized)
511                                    {
512                                        Method (M008, 0, NotSerialized)
513                                        {
514                                            Return (0x00)
515                                        }
516
517                                        Arg0 = 0x80000000
518                                        Return ((Arg0 + M008 ()))
519                                    }
520
521                                    Arg0 = 0x07000000
522                                    Return ((Arg0 + M007 ()))
523                                }
524
525                                Arg0 = 0x00600000
526                                Return ((Arg0 + M006 ()))
527                            }
528
529                            Arg0 = 0x00050000
530                            Return ((Arg0 + M005 ()))
531                        }
532
533                        Arg0 = 0x4000
534                        Return ((Arg0 + M004 ()))
535                    }
536
537                    Arg0 = 0x0300
538                    Return ((Arg0 + M003 ()))
539                }
540
541                Arg0 = 0x20
542                Return ((Arg0 + M002 ()))
543            }
544
545            Arg0 = 0x01
546            Store ((Arg0 + M001 ()), Local0)
547            If ((Local0 != 0x87654321))
548            {
549                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x87654321)
550            }
551
552            Local1 = 0x01
553            If ((Arg0 != Local1))
554            {
555                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Arg0, Local1)
556            }
557
558            CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
559            Return (Local0)
560        }
561
562        Local0 = M000 (BNK0)
563        If ((Local0 != 0x87654321))
564        {
565            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x87654321)
566        }
567
568        Local1 = 0xABCDEF70
569        If ((BNK0 != Local1))
570        {
571            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, BNK0, Local1)
572        }
573
574        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
575    }
576
577    /*
578     * Index Field instead of i000 (in m001)
579     */
580    Method (M308, 0, Serialized)
581    {
582        Name (I001, 0x00)
583        OperationRegion (R000, SystemMemory, 0x0100, 0x0100)
584        Field (R000, ByteAcc, NoLock, Preserve)
585        {
586            F000,   32,
587            F001,   32
588        }
589
590        IndexField (F000, F001, ByteAcc, NoLock, Preserve)
591        {
592            IF00,   32
593        }
594
595        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
596        IF00 = 0xABCDEF70
597        Method (M000, 1, NotSerialized)
598        {
599            Method (M001, 0, NotSerialized)
600            {
601                Method (M002, 0, NotSerialized)
602                {
603                    Method (M003, 0, NotSerialized)
604                    {
605                        Method (M004, 0, NotSerialized)
606                        {
607                            Method (M005, 0, NotSerialized)
608                            {
609                                Method (M006, 0, NotSerialized)
610                                {
611                                    Method (M007, 0, NotSerialized)
612                                    {
613                                        Method (M008, 0, NotSerialized)
614                                        {
615                                            Return (0x00)
616                                        }
617
618                                        Arg0 = 0x80000000
619                                        Return ((Arg0 + M008 ()))
620                                    }
621
622                                    Arg0 = 0x07000000
623                                    Return ((Arg0 + M007 ()))
624                                }
625
626                                Arg0 = 0x00600000
627                                Return ((Arg0 + M006 ()))
628                            }
629
630                            Arg0 = 0x00050000
631                            Return ((Arg0 + M005 ()))
632                        }
633
634                        Arg0 = 0x4000
635                        Return ((Arg0 + M004 ()))
636                    }
637
638                    Arg0 = 0x0300
639                    Return ((Arg0 + M003 ()))
640                }
641
642                Arg0 = 0x20
643                Return ((Arg0 + M002 ()))
644            }
645
646            Arg0 = 0x01
647            Store ((Arg0 + M001 ()), Local0)
648            If ((Local0 != 0x87654321))
649            {
650                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x87654321)
651            }
652
653            Local1 = 0x01
654            If ((Arg0 != Local1))
655            {
656                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Arg0, Local1)
657            }
658
659            CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
660            Return (Local0)
661        }
662
663        Local0 = M000 (IF00)
664        If ((Local0 != 0x87654321))
665        {
666            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x87654321)
667        }
668
669        Local1 = 0xABCDEF70
670        If ((IF00 != Local1))
671        {
672            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, IF00, Local1)
673        }
674
675        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
676    }
677
678    /*
679     * Element of Buffer instead of i000 (in m001)
680     */
681    Method (M309, 1, Serialized)
682    {
683        Name (I001, 0x00)
684        Name (B000, Buffer (0x03)
685        {
686             0x11, 0x01, 0x22                                 // .."
687        })
688        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
689        I001 = Arg0
690        Method (M000, 2, NotSerialized)
691        {
692            Method (M001, 1, NotSerialized)
693            {
694                Method (M002, 1, NotSerialized)
695                {
696                    Method (M003, 1, NotSerialized)
697                    {
698                        Method (M004, 1, NotSerialized)
699                        {
700                            Method (M005, 1, NotSerialized)
701                            {
702                                Method (M006, 1, NotSerialized)
703                                {
704                                    Method (M007, 1, NotSerialized)
705                                    {
706                                        Method (M008, 1, NotSerialized)
707                                        {
708                                            If (I001)
709                                            {
710                                                Arg0 [0x01] = 0xFF
711                                            }
712
713                                            Return (0x00)
714                                        }
715
716                                        Arg0 [0x01] = 0x08
717                                        Return ((DerefOf (Arg0 [0x01]) + M008 (Arg0)))
718                                    }
719
720                                    Arg0 [0x01] = 0x07
721                                    Return ((DerefOf (Arg0 [0x01]) + M007 (Arg0)))
722                                }
723
724                                Arg0 [0x01] = 0x06
725                                Return ((DerefOf (Arg0 [0x01]) + M006 (Arg0)))
726                            }
727
728                            Arg0 [0x01] = 0x05
729                            Return ((DerefOf (Arg0 [0x01]) + M005 (Arg0)))
730                        }
731
732                        Arg0 [0x01] = 0x04
733                        Return ((DerefOf (Arg0 [0x01]) + M004 (Arg0)))
734                    }
735
736                    Arg0 [0x01] = 0x03
737                    Return ((DerefOf (Arg0 [0x01]) + M003 (Arg0)))
738                }
739
740                Arg0 [0x01] = 0x02
741                Return ((DerefOf (Arg0 [0x01]) + M002 (Arg0)))
742            }
743
744            Store ((DerefOf (Arg0 [0x01]) + M001 (Arg0)), Local0)
745            If ((Local0 != 0x24))
746            {
747                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x24)
748            }
749
750            Local1 = DerefOf (Arg0 [0x01])
751            If (Arg1)
752            {
753                Local2 = 0xFF
754            }
755            Else
756            {
757                Local2 = 0x08
758            }
759
760            If ((Local1 != Local2))
761            {
762                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local1, Local2)
763            }
764
765            CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
766            Return (Local0)
767        }
768
769        Local0 = M000 (B000, Arg0)
770        If ((Local0 != 0x24))
771        {
772            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x24)
773        }
774
775        Local1 = DerefOf (B000 [0x01])
776        If (Arg0)
777        {
778            Local2 = 0xFF
779        }
780        Else
781        {
782            Local2 = 0x08
783        }
784
785        If ((Local1 != Local2))
786        {
787            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local1, Local2)
788        }
789
790        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
791    }
792
793    /*
794     * Element of String instead of i000 (in m001)
795     */
796    Method (M30A, 1, Serialized)
797    {
798        Name (I001, 0x00)
799        Name (S000, "q\x01ertyuiop")
800        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
801        I001 = Arg0
802        Method (M000, 2, NotSerialized)
803        {
804            Method (M001, 1, NotSerialized)
805            {
806                Method (M002, 1, NotSerialized)
807                {
808                    Method (M003, 1, NotSerialized)
809                    {
810                        Method (M004, 1, NotSerialized)
811                        {
812                            Method (M005, 1, NotSerialized)
813                            {
814                                Method (M006, 1, NotSerialized)
815                                {
816                                    Method (M007, 1, NotSerialized)
817                                    {
818                                        Method (M008, 1, NotSerialized)
819                                        {
820                                            If (I001)
821                                            {
822                                                Arg0 [0x01] = 0xFF
823                                            }
824
825                                            Return (0x00)
826                                        }
827
828                                        Arg0 [0x01] = 0x08
829                                        Return ((DerefOf (Arg0 [0x01]) + M008 (Arg0)))
830                                    }
831
832                                    Arg0 [0x01] = 0x07
833                                    Return ((DerefOf (Arg0 [0x01]) + M007 (Arg0)))
834                                }
835
836                                Arg0 [0x01] = 0x06
837                                Return ((DerefOf (Arg0 [0x01]) + M006 (Arg0)))
838                            }
839
840                            Arg0 [0x01] = 0x05
841                            Return ((DerefOf (Arg0 [0x01]) + M005 (Arg0)))
842                        }
843
844                        Arg0 [0x01] = 0x04
845                        Return ((DerefOf (Arg0 [0x01]) + M004 (Arg0)))
846                    }
847
848                    Arg0 [0x01] = 0x03
849                    Return ((DerefOf (Arg0 [0x01]) + M003 (Arg0)))
850                }
851
852                Arg0 [0x01] = 0x02
853                Return ((DerefOf (Arg0 [0x01]) + M002 (Arg0)))
854            }
855
856            Store ((DerefOf (Arg0 [0x01]) + M001 (Arg0)), Local0)
857            If ((Local0 != 0x24))
858            {
859                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x24)
860            }
861
862            Local1 = DerefOf (Arg0 [0x01])
863            If (Arg1)
864            {
865                Local2 = 0xFF
866            }
867            Else
868            {
869                Local2 = 0x08
870            }
871
872            If ((Local1 != Local2))
873            {
874                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local1, Local2)
875            }
876
877            CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
878            Return (Local0)
879        }
880
881        Local0 = M000 (S000, Arg0)
882        If ((Local0 != 0x24))
883        {
884            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x24)
885        }
886
887        Local1 = DerefOf (S000 [0x01])
888        If (Arg0)
889        {
890            Local2 = 0xFF
891        }
892        Else
893        {
894            Local2 = 0x08
895        }
896
897        If ((Local1 != Local2))
898        {
899            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local1, Local2)
900        }
901
902        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
903    }
904
905    /*
906     * Buffer Field instead of i000 (in m001)
907     *
908     * CreateField deeper than parent
909     */
910    Method (M30B, 1, Serialized)
911    {
912        Name (I001, 0x00)
913        Name (B000, Buffer (0x10){})
914        I001 = Arg0
915        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
916        Method (M000, 2, NotSerialized)
917        {
918            CreateField (B000, 0x05, 0x20, BF00)
919            Method (M001, 0, NotSerialized)
920            {
921                Method (M002, 0, NotSerialized)
922                {
923                    Method (M003, 0, NotSerialized)
924                    {
925                        Method (M004, 0, NotSerialized)
926                        {
927                            Method (M005, 0, NotSerialized)
928                            {
929                                Method (M006, 0, NotSerialized)
930                                {
931                                    Method (M007, 0, NotSerialized)
932                                    {
933                                        Method (M008, 0, NotSerialized)
934                                        {
935                                            If (I001)
936                                            {
937                                                BF00 = 0x11223344
938                                            }
939
940                                            Return (0x00)
941                                        }
942
943                                        BF00 = 0x80000000
944                                        Return ((BF00 + M008 ()))
945                                    }
946
947                                    BF00 = 0x07000000
948                                    Return ((BF00 + M007 ()))
949                                }
950
951                                BF00 = 0x00600000
952                                Return ((BF00 + M006 ()))
953                            }
954
955                            BF00 = 0x00050000
956                            Return ((BF00 + M005 ()))
957                        }
958
959                        BF00 = 0x4000
960                        Return ((BF00 + M004 ()))
961                    }
962
963                    BF00 = 0x0300
964                    Return ((BF00 + M003 ()))
965                }
966
967                BF00 = 0x20
968                Return ((BF00 + M002 ()))
969            }
970
971            BF00 = 0x01
972            Store ((BF00 + M001 ()), Local0)
973            If ((Local0 != 0x87654321))
974            {
975                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x87654321)
976            }
977
978            If (Arg1)
979            {
980                Local1 = Buffer() {0x44, 0x33, 0x22, 0x11}
981            }
982            Else
983            {
984                Local1 = Buffer() {0x00, 0x00, 0x00, 0x80}
985            }
986
987            If ((BF00 != Local1))
988            {
989                ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, BF00, Local1)
990            }
991
992            CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
993            Return (Local0)
994        }
995
996        Local0 = M000 (0x00, Arg0)
997        If ((Local0 != 0x87654321))
998        {
999            ERR (__METHOD__, Z157, __LINE__, 0x00, 0x00, Local0, 0x87654321)
1000        }
1001
1002        CH03 (__METHOD__, Z157, __LINE__, 0x00, 0x00)
1003    }
1004
1005    Method (N003, 0, NotSerialized)
1006    {
1007        If (0x01)
1008        {
1009            SRMT ("m300")
1010            M300 ()
1011            SRMT ("m301")
1012            M301 ()
1013            SRMT ("m302")
1014            M302 ()
1015            SRMT ("m303-0")
1016            M303 (0x00)
1017            SRMT ("m303-1")
1018            If (Y200)
1019            {
1020                M303 (0x01)
1021            }
1022            Else
1023            {
1024                BLCK ()
1025            }
1026
1027            SRMT ("m304")
1028            M304 ()
1029            SRMT ("m305")
1030            M305 ()
1031            SRMT ("m306")
1032            M306 ()
1033            SRMT ("m307")
1034            M307 ()
1035            SRMT ("m308")
1036            M308 ()
1037            SRMT ("m309-0")
1038            M309 (0x00)
1039            SRMT ("m309-1")
1040            M309 (0x01)
1041            SRMT ("m30a-0")
1042            M30A (0x00)
1043            SRMT ("m30a-1")
1044            M30A (0x01)
1045            SRMT ("m30b-0")
1046            M30B (0x00)
1047            SRMT ("m30b-1")
1048            M30B (0x01)
1049        }
1050        Else
1051        {
1052            SRMT ("m300")
1053            M300 ()
1054        }
1055    }
1056