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/*
30 * Test of Impllicit Return
31 *
32 * The last operation of Methods is Store.
33 */
34
35Name(z138, 138)
36
37Method(mf6c,, Serialized)
38{
39	Name(fl00, 0)
40	Name(i000, 0xabcd0000)
41	Name(i001, 0xabcd0001)
42
43	Method(m000)
44	{
45		Store(0xabcd0002, i001)
46		if (fl00) {
47			Store(0xdddd0000, i001)
48			Return (0)
49		}
50	}
51
52	Method(m001)
53	{
54		if (fl00) {
55			Store(0xdddd0001, i001)
56			Return (0)
57		}
58		Store(0xabcd0003, i001)
59	}
60
61	Method(m002, 1)
62	{
63		if (fl00) {
64			Store(0xdddd0002, i001)
65			Return (0)
66		}
67		if (fl00) {
68			Return (0)
69		}
70		if (arg0) {
71			Store(0xabcd0004, i001)
72		}
73	}
74
75	Method(m003, 1)
76	{
77		if (fl00) {
78			Store(0xdddd0003, i001)
79			Return (0)
80		}
81		if (fl00) {
82			Return (0)
83		}
84		if (arg0) {
85			Store(0xabcd0005, i001)
86		} else {
87			Store(0xabcd0006, i001)
88		}
89	}
90
91	Method(m004, 1)
92	{
93		if (fl00) {
94			Return (0)
95		}
96
97		switch (arg0) {
98			case (0) {
99				Store(0xabcd0007, i001)
100			}
101			case (0x12345678) {
102				Store(0xabcd0008, i001)
103			}
104			default {
105				Store(0xabcd0009, i001)
106			}
107		}
108	}
109
110	Method(m005)
111	{
112		if (fl00) {
113			Return (0)
114		}
115
116		While (1) {
117			Store(0xabcd000a, i001)
118			Break
119		}
120	}
121
122	Method(m006)
123	{
124		if (fl00) {
125			Return (0)
126		}
127
128		Store(0xabcd000b, i001)
129		While (1) {
130			Break
131		}
132	}
133
134	Method(m007,, Serialized)
135	{
136		Name(i000, 0)
137		Name(num, 0)
138		Name(lpN0, 0)
139		Name(lpC0, 0)
140
141		Store(10, num)
142
143		Store(num, lpN0)
144		Store(0, lpC0)
145
146		if (fl00) {
147			Return (0)
148		}
149
150		While (lpN0) {
151			if (i000) {
152				Break
153			}
154			Decrement(lpN0)
155			Increment(lpC0)
156			Store(1, i000)
157			Store(0xabcd000c, i001)
158			Continue
159		}
160	}
161
162	Method(m008)
163	{
164		Method(m000)
165		{
166			Store(0xabcd000d, i001)
167		}
168
169		if (fl00) {
170			Return (0)
171		}
172
173		m000()
174	}
175
176
177	// m000
178
179	Store(0xabcd9000, i000)
180
181	CH03("", z138, 0x000, __LINE__, 0)
182
183	Store(m000(), i000)
184
185	if (SLCK) {
186		CH03("", z138, 0x001, __LINE__, 0)
187		if (y901) {
188			Store(0, Local0)
189		} else {
190			Store(0xabcd0002, Local0)
191		}
192		if (LNotEqual(i000, Local0)) {
193			err("", z138, __LINE__, 0, 0, i000, Local0)
194		}
195	} else {
196		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
197	}
198
199	// m001
200
201	Store(0xabcd9001, i000)
202
203	CH03("", z138, 0x004, __LINE__, 0)
204
205	Store(m001(), i000)
206
207	if (SLCK) {
208		CH03("", z138, 0x005, __LINE__, 0)
209		if (LNotEqual(i000, 0xabcd0003)) {
210			err("", z138, __LINE__, 0, 0, i000, 0xabcd0003)
211		}
212	} else {
213		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
214	}
215
216	// m002
217
218	Store(0xabcd9002, i000)
219
220	CH03("", z138, 0x008, __LINE__, 0)
221
222	Store(m002(1), i000)
223
224	if (SLCK) {
225		CH03("", z138, 0x009, __LINE__, 0)
226		if (LNotEqual(i000, 0xabcd0004)) {
227			err("", z138, __LINE__, 0, 0, i000, 0xabcd0004)
228		}
229	} else {
230		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
231	}
232
233	// m003
234
235	Store(0xabcd9003, i000)
236
237	CH03("", z138, 0x00c, __LINE__, 0)
238
239	Store(m003(0), i000)
240
241	if (SLCK) {
242		CH03("", z138, 0x00d, __LINE__, 0)
243		if (LNotEqual(i000, 0xabcd0006)) {
244			err("", z138, __LINE__, 0, 0, i000, 0xabcd0006)
245		}
246	} else {
247		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
248	}
249
250	// m004(0)
251
252	Store(0xabcd9004, i000)
253
254	CH03("", z138, 0x010, __LINE__, 0)
255
256	Store(m004(0), i000)
257
258	if (SLCK) {
259		CH03("", z138, 0x011, __LINE__, 0)
260		if (LNotEqual(i000, 0xabcd0007)) {
261			err("", z138, __LINE__, 0, 0, i000, 0xabcd0007)
262		}
263	} else {
264		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
265	}
266
267	// m004(0x12345678)
268
269	Store(0xabcd9005, i000)
270
271	CH03("", z138, 0x014, __LINE__, 0)
272
273	Store(m004(0x12345678), i000)
274
275	if (SLCK) {
276		CH03("", z138, 0x015, __LINE__, 0)
277		if (LNotEqual(i000, 0xabcd0008)) {
278			err("", z138, __LINE__, 0, 0, i000, 0xabcd0008)
279		}
280	} else {
281		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
282	}
283
284	// m004(Default)
285
286	Store(0xabcd9006, i000)
287
288	CH03("", z138, 0x018, __LINE__, 0)
289
290	Store(m004(1111), i000)
291
292	if (SLCK) {
293		CH03("", z138, 0x019, __LINE__, 0)
294		if (LNotEqual(i000, 0xabcd0009)) {
295			err("", z138, __LINE__, 0, 0, i000, 0xabcd0009)
296		}
297	} else {
298		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
299	}
300
301	// m005
302
303	Store(0xabcd9007, i000)
304
305	CH03("", z138, 0x01c, __LINE__, 0)
306
307	Store(m005(), i000)
308
309	if (SLCK) {
310		CH03("", z138, 0x01d, __LINE__, 0)
311		if (LNotEqual(i000, 0xabcd000a)) {
312			err("", z138, __LINE__, 0, 0, i000, 0xabcd000a)
313		}
314	} else {
315		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
316	}
317
318	// m006
319
320	Store(0xabcd9008, i000)
321
322	CH03("", z138, 0x020, __LINE__, 0)
323
324	Store(m006(), i000)
325
326	if (SLCK) {
327		CH03("", z138, 0x021, __LINE__, 0)
328		if (y901) {
329			Store(1, Local0)
330		} else {
331			Store(0xabcd000b, Local0)
332		}
333		if (LNotEqual(i000, Local0)) {
334			err("", z138, __LINE__, 0, 0, i000, Local0)
335		}
336	} else {
337		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
338	}
339
340	// m007
341
342	Store(0xabcd9009, i000)
343
344	CH03("", z138, 0x024, __LINE__, 0)
345
346	Store(m007(), i000)
347
348	if (SLCK) {
349		CH03("", z138, 0x025, __LINE__, 0)
350		if (y901) {
351			Store(1, Local0)
352		} else {
353			Store(0xabcd000c, Local0)
354		}
355		if (LNotEqual(i000, Local0)) {
356			err("", z138, __LINE__, 0, 0, i000, Local0)
357		}
358	} else {
359		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
360	}
361
362	// m008
363
364	Store(0xabcd900a, i000)
365
366	CH03("", z138, 0x028, __LINE__, 0)
367
368	Store(m008(), i000)
369
370	if (SLCK) {
371		CH03("", z138, 0x029, __LINE__, 0)
372		if (LNotEqual(i000, 0xabcd000d)) {
373			err("", z138, __LINE__, 0, 0, i000, 0xabcd000d)
374		}
375	} else {
376		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
377	}
378}
379
380Method(mf6e,, Serialized)
381{
382	Name(fl00, 0)
383	Name(i000, 0xaaaa0000)
384	Name(i001, 0xaaaa0001)
385	Name(i002, 0xaaaa0002)
386	Name(i003, 0xaaaa0003)
387
388	Method(m000)
389	{
390		if (fl00) {
391			Return (0)
392		}
393		Increment(i002)
394		Store(Add(0xaaaa0003, 0), Local1)
395		Store(Subtract(0xaaaa0004, 0), Local1)
396		Store(Multiply(0xaaaa0005, 1), Local1)
397		Store(0xaaaa0006, i001)
398	}
399
400	Method(m001)
401	{
402		if (fl00) {
403			Return (0)
404		}
405		if (Store(0xaaaa0007, i001)) {
406			Increment(i002)
407			Store(Add(0xaaaa0008, 0), Local1)
408			Store(Subtract(0xaaaa0009, 0), Local1)
409			Store(Multiply(0xaaaa000a, 1), Local1)
410			Store(0xaaaa000d, i001)
411			Decrement(i001)
412		}
413	}
414
415	Method(m002)
416	{
417		if (fl00) {
418			Return (0)
419		}
420		if (Add(0xaaaa000d, 0)) {
421		if (0xaaaa000e) {
422			Increment(i002)
423			Store(Add(0xaaaa000f, 0), Local1)
424			Store(Subtract(0xaaaa0010, 0), Local1)
425			Store(Multiply(0xaaaa0011, 1), Local1)
426			Store(0xaaaa0012, i001)
427			Increment(i001)
428		}}
429	}
430
431	Method(m003)
432	{
433		if (fl00) {
434			Return (0)
435		}
436		while (Subtract(0xaaaa0014, 0)) {
437			Increment(i002)
438			Store(Add(0xaaaa0015, 0), Local1)
439			Store(Subtract(0xaaaa0016, 0), Local1)
440			Store(Multiply(0xaaaa0017, 1), Local1)
441			Store(0xaaaa0018, i001)
442			Store(Multiply(0xaaaa0019, 1), Local1)
443			Break
444		}
445	}
446
447	Method(m004)
448	{
449		if (fl00) {
450			Return (0)
451		}
452		switch (Multiply(0xaaaa001a, 1)) {
453			case (0) {
454				Store(0xaaaa001b, i001)
455			}
456			case (0xaaaa001a) {
457				Store(0xaaaa001c, i001)
458			}
459			default {
460				Store(0xaaaa001d, i001)
461			}
462		}
463	}
464
465	// Predicates of If
466
467
468	Method(m006)
469	{
470		if (fl00) {
471			return (0xabcd0000)
472		}
473	}
474
475	Method(m007)
476	{
477		if (0) {
478			return (0xabcd0000)
479		}
480	}
481
482	Method(m008)
483	{
484		if (0) {
485			return (0xabcd0001)
486		}
487		if (0xabcd0000) {
488		}
489	}
490
491	Method(m009,, Serialized)
492	{
493		Name(i000, 0xabcd0000)
494
495		if (0) {
496			return (0xabcd0001)
497		}
498		if (i000) {
499		}
500	}
501
502	Name(i004, 0xabcd0008)
503
504	Method(m00a)
505	{
506		if (0) {
507			return (0xabcd0001)
508		}
509		if (i004) {
510		}
511	}
512
513	Method(m00b)
514	{
515		if (0) {
516			return (0xabcd0005)
517		}
518		if (LEqual(0xabcd0008, i004)) {
519		}
520	}
521
522	Method(m00c)
523	{
524		if (0) {
525			return (0xabcd0005)
526		}
527		if (LEqual(0xabcd0009, i004)) {
528		}
529	}
530
531	// Predicates of While
532
533	Method(m00d)
534	{
535		if (0) {
536			return (0xabcd0005)
537		}
538		While (0xabcd0009) {
539			Break
540		}
541	}
542
543	Method(m00e)
544	{
545		if (0) {
546			return (0xabcd0005)
547		}
548		While (LEqual(0xabcd0008, i004)) {
549			Break
550		}
551	}
552
553	Method(m00f)
554	{
555		if (0) {
556			return (0xabcd0005)
557		}
558		While (LEqual(0xabcd0009, i004)) {
559			Break
560		}
561	}
562
563	Method(m010)
564	{
565		if (0) {
566			return (0xabcd0005)
567		}
568		While (i004) {
569			Break
570		}
571	}
572
573	// Predicates of Switch
574
575	Method(m011)
576	{
577		if (0) {
578			return (0xabcd0005)
579		}
580		Switch (0xabcd0009) {
581			Case (0xabcd0007) {
582			}
583			Case (0xabcd0008) {
584			}
585		}
586	}
587
588	Method(m012)
589	{
590		if (0) {
591			return (0xabcd0005)
592		}
593		Switch (0xabcd0009) {
594			Case (0xabcd0007) {
595			}
596			Case (0xabcd0009) {
597			}
598			Case (0xabcd0008) {
599			}
600		}
601	}
602
603	Name(i006, 0x11220000)
604	Name(i007, 0x33440000)
605
606	Method(m005, 1, Serialized)
607	{
608          Name(r001, 1)
609          Name(r002, 1)
610          Name(r003, 1)
611          Name(brk0, 0)
612          Name(tmp0, 0)
613
614          if (LEqual(arg0, 1)) {
615              Store(0, r001)
616          }
617          if (LEqual(arg0, 2)) {
618              Store(0, r002)
619              Store(i006, brk0)
620          }
621          if (LEqual(arg0, 3)) {
622              Store(0, r003)
623              Store(i007, brk0)
624          }
625
626          Store(0xdddd0000, i000)
627          CH03("", z138, 0x02c, __LINE__, 0)
628          Store(m000(), i000)
629          if (SLCK) {
630              CH03("", z138, 0x02d, __LINE__, 0)
631              Store(0xaaaa0006, Local0)
632              if (LNotEqual(i000, Local0)) {
633                  err("", z138, __LINE__, 0, 0, i000, Local0)
634              }
635          } else {
636              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
637          }
638
639          Store(0xdddd0000, i000)
640          CH03("", z138, 0x030, __LINE__, 0)
641          Store(m001(), i000)
642          if (SLCK) {
643              CH03("", z138, 0x031, __LINE__, 0)
644              Store(0xaaaa000c, Local0)
645              if (LNotEqual(i000, Local0)) {
646                  err("", z138, __LINE__, 0, 0, i000, Local0)
647              }
648          } else {
649              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
650          }
651
652          Store(0xdddd0000, i000)
653          CH03("", z138, 0x034, __LINE__, 0)
654          Store(m002(), i000)
655          if (SLCK) {
656              CH03("", z138, 0x035, __LINE__, 0)
657              Store(0xaaaa0013, Local0)
658              if (LNotEqual(i000, Local0)) {
659                  err("", z138, __LINE__, 0, 0, i000, Local0)
660              }
661          } else {
662              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
663          }
664
665          Store(0xdddd0000, i000)
666          CH03("", z138, 0x038, __LINE__, 0)
667          Store(m003(), i000)
668          if (SLCK) {
669              CH03("", z138, 0x039, __LINE__, 0)
670              Store(0xaaaa0019, Local0)
671              if (LNotEqual(i000, Local0)) {
672                  err("", z138, __LINE__, 0, 0, i000, Local0)
673              }
674          } else {
675              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
676          }
677
678
679		// Predicates
680
681
682          Store(0xdddd0000, i000)
683          CH03("", z138, 0x03c, __LINE__, 0)
684          Store(m006(), i000)
685          if (LAnd(SLCK, y901)) {
686              CH03("", z138, 0x03d, __LINE__, 0)
687              Store(0, Local0)
688              if (LNotEqual(i000, Local0)) {
689                  err("", z138, __LINE__, 0, 0, i000, Local0)
690              }
691          } else {
692              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
693          }
694
695          Store(0xdddd0000, i000)
696          CH03("", z138, 0x040, __LINE__, 0)
697          Store(m007(), i000)
698          if (LAnd(SLCK, y901)) {
699              CH03("", z138, 0x041, __LINE__, 0)
700              Store(0, Local0)
701              if (LNotEqual(i000, Local0)) {
702                  err("", z138, __LINE__, 0, 0, i000, Local0)
703              }
704          } else {
705              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
706          }
707
708          Store(0xdddd0000, i000)
709          CH03("", z138, 0x044, __LINE__, 0)
710          Store(m008(), i000)
711          if (LAnd(SLCK, y901)) {
712              CH03("", z138, 0x045, __LINE__, 0)
713              Store(0xabcd0000, Local0)
714              if (LNotEqual(i000, Local0)) {
715                  err("", z138, __LINE__, 0, 0, i000, Local0)
716              }
717          } else {
718              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
719          }
720
721          Store(0xdddd0000, i000)
722          CH03("", z138, 0x048, __LINE__, 0)
723          Store(m009(), i000)
724          if (LAnd(SLCK, y901)) {
725              CH03("", z138, 0x049, __LINE__, 0)
726              Store(0xabcd0000, Local0)
727              if (LNotEqual(i000, Local0)) {
728                  err("", z138, __LINE__, 0, 0, i000, Local0)
729              }
730          } else {
731              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
732          }
733
734          Store(0xdddd0000, i000)
735          CH03("", z138, 0x04c, __LINE__, 0)
736          Store(m00a(), i000)
737          if (LAnd(SLCK, y901)) {
738              CH03("", z138, 0x04d, __LINE__, 0)
739              Store(0xabcd0008, Local0)
740              if (LNotEqual(i000, Local0)) {
741                  err("", z138, __LINE__, 0, 0, i000, Local0)
742              }
743          } else {
744              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
745          }
746
747          Store(0, tmp0)
748          if (LAnd(SLCK, LOr(y901, y263))) {
749              Store(1, tmp0)
750          }
751          Store(0xdddd0000, i000)
752          CH03("", z138, 0x050, __LINE__, 0)
753          Store(m00b(), i000)
754          if (tmp0) {
755              CH03("", z138, 0x051, __LINE__, 0)
756              // Oct 2013, David Box
757              // Implicit return for logical operations (LNot, LEqual, ...)
758              // returns logical value of the operation
759              Store(Ones, Local0)
760              if (LNotEqual(i000, Local0)) {
761                  err("", z138, __LINE__, 0, 0, i000, Local0)
762              }
763          } else {
764              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
765          }
766
767          Store(0, tmp0)
768          if (LAnd(SLCK, LOr(y901, y263))) {
769              Store(1, tmp0)
770          }
771          Store(0xdddd0000, i000)
772          CH03("", z138, 0x054, __LINE__, 0)
773          Store(m00c(), i000)
774          if (tmp0) {
775              CH03("", z138, 0x055, __LINE__, 0)
776              // Oct 2013, David Box
777              // Implicit return for logical operations (LNot, LEqual, ...)
778              // returns logical value of the operation
779              Store(Zero, Local0)
780              if (LNotEqual(i000, Local0)) {
781                  err("", z138, __LINE__, 0, 0, i000, Local0)
782              }
783          } else {
784              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
785          }
786
787          Store(0xdddd0000, i000)
788          CH03("", z138, 0x058, __LINE__, 0)
789          Store(m00d(), i000)
790          if (LAnd(SLCK, y901)) {
791              CH03("", z138, 0x059, __LINE__, 0)
792              Store(0xabcd0009, Local0)
793              if (LNotEqual(i000, Local0)) {
794                  err("", z138, __LINE__, 0, 0, i000, Local0)
795              }
796          } else {
797              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
798          }
799
800          Store(0, tmp0)
801          if (LAnd(SLCK, LOr(y901, y263))) {
802              Store(1, tmp0)
803          }
804          Store(0xdddd0000, i000)
805          CH03("", z138, 0x05c, __LINE__, 0)
806          Store(m00e(), i000)
807          if (tmp0) {
808              CH03("", z138, 0x05d, __LINE__, 0)
809              // Oct 2013, David Box
810              // Implicit return for logical operations (LNot, LEqual, ...)
811              // returns logical value of the operation
812              Store(Ones, Local0)
813              if (LNotEqual(i000, Local0)) {
814                  err("", z138, __LINE__, 0, 0, i000, Local0)
815              }
816          } else {
817              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
818          }
819
820          Store(0, tmp0)
821          if (LAnd(SLCK, LOr(y901, y263))) {
822              Store(1, tmp0)
823          }
824          Store(0xdddd0000, i000)
825          CH03("", z138, 0x060, __LINE__, 0)
826          Store(m00f(), i000)
827          if (tmp0) {
828              CH03("", z138, 0x061, __LINE__, 0)
829              // Oct 2013, David Box
830              // Implicit return for logical operations (LNot, LEqual, ...)
831              // returns logical value of the operation
832              Store(Zero, Local0)
833              if (LNotEqual(i000, Local0)) {
834                  err("", z138, __LINE__, 0, 0, i000, Local0)
835              }
836          } else {
837              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
838          }
839
840          Store(0xdddd0000, i000)
841          CH03("", z138, 0x064, __LINE__, 0)
842          Store(m010(), i000)
843          if (LAnd(SLCK, y901)) {
844              CH03("", z138, 0x065, __LINE__, 0)
845              Store(0xabcd0008, Local0)
846              if (LNotEqual(i000, Local0)) {
847                  err("", z138, __LINE__, 0, 0, i000, Local0)
848              }
849          } else {
850              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
851          }
852
853          if (y901) {
854
855          Store(0xdddd0000, i000)
856          CH03("", z138, 0x068, __LINE__, 0)
857          Store(m011(), i000)
858          if (LAnd(SLCK, y901)) {
859              CH03("", z138, 0x069, __LINE__, 0)
860              Store(Zero, Local0)
861              if (LNotEqual(i000, Local0)) {
862                  err("", z138, __LINE__, 0, 0, i000, Local0)
863              }
864          } else {
865              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
866          }
867
868          Store(0xdddd0000, i000)
869          CH03("", z138, 0x06c, __LINE__, 0)
870          Store(m012(), i000)
871          if (LAnd(SLCK, y901)) {
872              CH03("", z138, 0x06d, __LINE__, 0)
873              Store(Ones, Local0)
874              if (LNotEqual(i000, Local0)) {
875                  err("", z138, __LINE__, 0, 0, i000, Local0)
876              }
877          } else {
878              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
879          }
880          } /* if (y901) */
881
882		// Should be the last
883
884          Store(0xdddd0000, i000)
885          CH03("", z138, 0x070, __LINE__, 0)
886          Store(m004(), i000)
887          if (SLCK) {
888              CH03("", z138, 0x071, __LINE__, 0)
889              Store(0xaaaa001c, Local0)
890              if (LNotEqual(i000, Local0)) {
891                  err("", z138, __LINE__, 0, 0, i000, Local0)
892              }
893          } else {
894              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
895          }
896
897
898          if (r001) {
899
900          while (0xabcd0000) {
901            m000()
902            m001()
903            m002()
904            m003()
905            m004()
906            if (0xabcd0001) {
907              while (0xabcd0002) {
908                if (0xabcd0003) {
909                  while (0xabcd0004) {
910                    if (0xabcd0005) {
911                      while (0xabcd0006) {
912                        if (0xabcd0007) {
913
914                          Store(0xdddd0000, i000)
915                          CH03("", z138, 0x040, __LINE__, 0)
916                          Store(m000(), i000)
917
918                          if (r002) {
919
920                          if (SLCK) {
921                              CH03("", z138, 0x041, __LINE__, 0)
922                              if (LNotEqual(i000, 0xaaaa0006)) {
923                                  err("", z138, __LINE__, 0, 0, i000, 0xaaaa0006)
924                              }
925                          } else {
926                              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
927                          }
928
929                          Store(0xdddd0000, i000)
930                          CH03("", z138, 0x044, __LINE__, 0)
931                          Store(m001(), i000)
932                          if (SLCK) {
933                              CH03("", z138, 0x045, __LINE__, 0)
934                              if (LNotEqual(i000, 0xaaaa000c)) {
935                                  err("", z138, __LINE__, 0, 0, i000, 0xaaaa000c)
936                              }
937                          } else {
938                              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
939                          }
940
941                          Store(0xdddd0123, i000)
942
943                          if (r003) {
944
945                          CH03("", z138, 0x048, __LINE__, 0)
946                          Store(m002(), i000)
947                          if (SLCK) {
948                              CH03("", z138, 0x049, __LINE__, 0)
949                              if (LNotEqual(i000, 0xaaaa0013)) {
950                                  err("", z138, __LINE__, 0, 0, i000, 0xaaaa0013)
951                              }
952                          } else {
953                              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
954                          }
955
956                          Store(0xdddd0000, i000)
957                          CH03("", z138, 0x04c, __LINE__, 0)
958                          Store(m003(), i000)
959                          if (SLCK) {
960                              CH03("", z138, 0x04d, __LINE__, 0)
961                              if (LNotEqual(i000, 0xaaaa0019)) {
962                                  err("", z138, __LINE__, 0, 0, i000, 0xaaaa0019)
963                              }
964                          } else {
965                              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
966                          }
967
968                          Store(0xdddd0000, i000)
969                          CH03("", z138, 0x050, __LINE__, 0)
970                          Store(m004(), i000)
971                          if (SLCK) {
972                              CH03("", z138, 0x051, __LINE__, 0)
973                              if (LNotEqual(i000, 0xaaaa001c)) {
974                                  err("", z138, __LINE__, 0, 0, i000, 0xaaaa001c)
975                              }
976                          } else {
977                              CH04("", 0, 0xff, z138, __LINE__, 0, 0)
978                          }
979
980                          while (0xabcd0008) {
981                            if (0xabcd0009) {
982                              while (0xabcd000a) {
983                                if (0xabcd000b) {
984                                  while (0xabcd000c) {
985                                    if (0xabcd000d) {
986                                      while (0xabcd000e) {
987                                        if (0xabcd000f) {
988
989                                            if (0) {
990                                              Store("Impossible 0", Debug)
991                                            } else {
992                                              if (0xabcd0010) {
993                                                  return (0xabcd0030)
994                                              }
995                                            }
996                     }}}}
997                     m000()
998                     m001()
999                     m002()
1000                     m003()
1001                     m004()
1002              }}}}
1003              m000()
1004              m001()
1005              m002()
1006              m003()
1007              m004()
1008              } else {
1009                  Break
1010              } /* r003 */
1011              } else {
1012                  Break
1013              } /* r002 */
1014            }
1015            if (brk0) {
1016                  Break
1017            }
1018            }}
1019            if (brk0) {
1020                  Break
1021            }
1022            }}
1023            if (brk0) {
1024                  Break
1025            }
1026            }}
1027            if (brk0) {
1028                  Break
1029            }
1030            }
1031          } /* if (r001) */
1032	}
1033
1034	// 0000
1035
1036	Store(0xdddd0000, i003)
1037	CH03("", z138, 0x054, __LINE__, 0)
1038	Store(m005(0), i003)
1039	if (SLCK) {
1040		CH03("", z138, 0x055, __LINE__, 0)
1041		if (LNotEqual(i003, 0xabcd0030)) {
1042			err("", z138, __LINE__, 0, 0, i003, 0xabcd0030)
1043		}
1044	} else {
1045		CH03("", z138, 0x057, __LINE__, 0)
1046	}
1047
1048	// r001
1049
1050	Store(0xdddd0000, i003)
1051	CH03("", z138, 0x058, __LINE__, 0)
1052	Store(m005(1), i003)
1053	if (SLCK) {
1054		CH03("", z138, 0x059, __LINE__, 0)
1055		if (y901) {
1056			Store(0, Local0)
1057		} else {
1058			Store(Ones, Local0)
1059		}
1060		if (LNotEqual(i003, Local0)) {
1061			err("", z138, __LINE__, 0, 0, i003, Local0)
1062		}
1063	} else {
1064		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
1065	}
1066
1067	// r002
1068
1069	Store(0xdddd0000, i003)
1070	CH03("", z138, 0x05c, __LINE__, 0)
1071	Store(m005(2), i003)
1072	if (SLCK) {
1073		CH03("", z138, 0x05d, __LINE__, 0)
1074		if (y901) {
1075			Store(i006, Local0)
1076		} else {
1077			Store(0xaaaa0006, Local0)
1078		}
1079		if (LNotEqual(i003, Local0)) {
1080			err("", z138, __LINE__, 0, 0, i003, Local0)
1081		}
1082	} else {
1083		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
1084	}
1085
1086	// r003
1087
1088	Store(0xdddd0000, i003)
1089	CH03("", z138, 0x060, __LINE__, 0)
1090	Store(m005(3), i003)
1091	if (SLCK) {
1092		CH03("", z138, 0x061, __LINE__, 0)
1093		if (y901) {
1094			Store(i007, Local0)
1095		} else {
1096			Store(0xdddd0123, Local0)
1097		}
1098		if (LNotEqual(i003, Local0)) {
1099			err("", z138, __LINE__, 0, 0, i003, Local0)
1100		}
1101	} else {
1102		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
1103	}
1104}
1105
1106// Reproduces specific implicit return conditions
1107Method(mff1,, Serialized)
1108{
1109	Name(fl00, 0)
1110	Name(i000, 0)
1111	Name(i001, 0)
1112	Name(i002, 0)
1113	Name(i003, 0)
1114	Name(i004, 0)
1115	Name(i005, 0)
1116	Name(i006, 0)
1117	Name(i007, 0)
1118	Name(i008, 0)
1119
1120    Method (m000, 1)
1121    {
1122		if (fl00) {
1123			Return ("m000")
1124		}
1125        Store (Arg0, i000)
1126		m001 (Arg0)
1127    }
1128
1129    Method (m001, 1)
1130    {
1131        Store (Arg0, i001)
1132    }
1133
1134	Method(m002)
1135	{
1136		if (fl00) {
1137			Return ("m002")
1138		}
1139		Or (0xf2, 0x01, Local0)
1140		m000 (Local0)
1141	}
1142
1143	// Case to call AcpiDsDoImplicitReturn with AddReference == 1 and
1144	// WalkState->ImplicitReturnObj == NULL
1145
1146    Method (m003)
1147    {
1148		Store(0xfabec, Local0)
1149    }
1150
1151	Method(m004)
1152	{
1153		if (fl00) {
1154			Return ("m004")
1155		}
1156		m003()
1157	}
1158
1159	// Case to call AcpiDsDoImplicitReturn with AddReference == 1 and
1160	// WalkState->ImplicitReturnObj == NULL, then check which a case of
1161	// AcpiDsClearImplicitReturn will be called when a new result appears.
1162
1163    Method (m005)
1164    {
1165		Store(0xfabec, Local0)
1166    }
1167
1168	Method(m006)
1169	{
1170		if (fl00) {
1171			Return ("m006")
1172		}
1173
1174		m005()
1175
1176		Store(0xcedab, Local0)
1177	}
1178
1179	// Case to call AcpiDsDoImplicitReturn with AddReference == 1 and
1180	// ReturnDesc != NULL && (WalkState->ImplicitReturnObj == ReturnDesc)
1181	// Case when Result is used
1182
1183    Method (m007)
1184    {
1185		Store(Store(Store(0xabcd, i002), i003), i004)
1186    }
1187
1188
1189	Method(m008)
1190	{
1191		if (fl00) {
1192			Return ("m008")
1193		}
1194		m007()
1195	}
1196
1197	// Case to call AcpiDsDoImplicitReturn with AddReference == 1 and
1198	// ReturnDesc != NULL && (WalkState->ImplicitReturnObj == ReturnDesc)
1199	// Case when Result is not used
1200
1201    Method (m009, 1)
1202    {
1203		if (arg0) {
1204			Store(Store(0x1234, i005), i006)
1205		} else {
1206			Store(Store(0x5678, i007), i008)
1207		}
1208    }
1209
1210	Method(m00a)
1211	{
1212		if (fl00) {
1213			Return ("m00a")
1214		}
1215		m009(0)
1216		m009(1)
1217	}
1218
1219	Method(m00b)
1220	{
1221		if (fl00) {
1222			Return ("m00b")
1223		}
1224		m009(1)
1225		m009(0)
1226	}
1227
1228	// m002
1229
1230	Store(0, Local0)
1231	CH03("", z138, 0x064, __LINE__, 0)
1232	Store(m002(), Local0)
1233	if (SLCK) {
1234		CH03("", z138, 0x065, __LINE__, 0)
1235		if (LNotEqual(Local0, 0xf3)) {
1236			err("", z138, __LINE__, 0, 0, Local0, 0xf3)
1237		}
1238	} else {
1239		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
1240	}
1241
1242	// m004
1243
1244	Store(0, Local0)
1245	CH03("", z138, 0x068, __LINE__, 0)
1246	Store(m004(), Local0)
1247	if (SLCK) {
1248		CH03("", z138, 0x069, __LINE__, 0)
1249		if (LNotEqual(Local0, 0xfabec)) {
1250			err("", z138, __LINE__, 0, 0, Local0, 0xfabec)
1251		}
1252	} else {
1253		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
1254	}
1255
1256	// m006
1257
1258	Store(0, Local0)
1259	CH03("", z138, 0x06e, __LINE__, 0)
1260	Store(m006(), Local0)
1261	if (SLCK) {
1262		CH03("", z138, 0x06f, __LINE__, 0)
1263		if (LNotEqual(Local0, 0xcedab)) {
1264			err("", z138, __LINE__, 0, 0, Local0, 0xcedab)
1265		}
1266	} else {
1267		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
1268	}
1269
1270	// m008
1271
1272	Store(0, Local0)
1273	CH03("", z138, 0x072, __LINE__, 0)
1274	Store(m008(), Local0)
1275	if (SLCK) {
1276		CH03("", z138, 0x073, __LINE__, 0)
1277		if (LNotEqual(Local0, 0xabcd)) {
1278			err("", z138, __LINE__, 0, 0, Local0, 0xabcd)
1279		}
1280	} else {
1281		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
1282	}
1283
1284	// m00a
1285
1286	Store(0, Local0)
1287	CH03("", z138, 0x076, __LINE__, 0)
1288	Store(m00a(), Local0)
1289	if (SLCK) {
1290		CH03("", z138, 0x077, __LINE__, 0)
1291		if (LNotEqual(Local0, 0x1234)) {
1292			err("", z138, __LINE__, 0, 0, Local0, 0x1234)
1293		}
1294	} else {
1295		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
1296	}
1297
1298	// m00b
1299
1300	Store(0, Local0)
1301	CH03("", z138, 0x080, __LINE__, 0)
1302	Store(m00b(), Local0)
1303	if (SLCK) {
1304		CH03("", z138, 0x081, __LINE__, 0)
1305		if (LNotEqual(Local0, 0x5678)) {
1306			err("", z138, __LINE__, 0, 0, Local0, 0x5678)
1307		}
1308	} else {
1309		CH04("", 0, 0xff, z138, __LINE__, 0, 0)
1310	}
1311
1312	if (LNotEqual(i000, 0xf3)) {
1313		err("", z138, __LINE__, 0, 0, i000, 0xf3)
1314	}
1315	if (LNotEqual(i001, 0xf3)) {
1316		err("", z138, __LINE__, 0, 0, i001, 0xf3)
1317	}
1318	if (LNotEqual(i002, 0xabcd)) {
1319		err("", z138, __LINE__, 0, 0, i002, 0xabcd)
1320	}
1321	if (LNotEqual(i003, 0xabcd)) {
1322		err("", z138, __LINE__, 0, 0, i003, 0xabcd)
1323	}
1324	if (LNotEqual(i004, 0xabcd)) {
1325		err("", z138, __LINE__, 0, 0, i004, 0xabcd)
1326	}
1327	if (LNotEqual(i005, 0x1234)) {
1328		err("", z138, __LINE__, 0, 0, i005, 0x1234)
1329	}
1330	if (LNotEqual(i006, 0x1234)) {
1331		err("", z138, __LINE__, 0, 0, i006, 0x1234)
1332	}
1333	if (LNotEqual(i007, 0x5678)) {
1334		err("", z138, __LINE__, 0, 0, i007, 0x5678)
1335	}
1336	if (LNotEqual(i008, 0x5678)) {
1337		err("", z138, __LINE__, 0, 0, i008, 0x5678)
1338	}
1339}
1340