1	.text
2	.global _start
3_start:
4	add r2,zero,zero
5	j external1
6
7        add r3,r2,r2
8	beqzt zero,external2
9
10	{ movei r2,external_8a; movei r3,external_8b }
11	{ movei r2,external_8a; movei r3,external_8b; ld zero,zero }
12	{ mtspr external_8a,zero }
13	{ mfspr zero,external_8a }
14	{ moveli r2,external_16a; moveli r3,external_16b }
15
16	{ moveli r2,hw1_last(external_32a); moveli r3,hw1_last(external_32b) }
17	{ shl16insli r2,r2,hw0(external_32a); shl16insli r3,r3,hw0(external_32b) }
18
19	{ moveli r2,hw2_last(external_48a); moveli r3,hw2_last(external_48b) }
20	{ shl16insli r2,r2,hw1(external_48a); shl16insli r3,r3,hw1(external_48b) }
21	{ shl16insli r2,r2,hw0(external_48a); shl16insli r3,r3,hw0(external_48b) }
22
23	{ moveli r2,hw3_last(external_64a); moveli r3,hw3_last(external_64b) }
24	{ shl16insli r2,r2,hw2(external_64a); shl16insli r3,r3,hw2(external_64b) }
25	{ shl16insli r2,r2,hw1(external_64a); shl16insli r3,r3,hw1(external_64b) }
26	{ shl16insli r2,r2,hw0(external_64a); shl16insli r3,r3,hw0(external_64b) }
27
28	{ ld_add r0,r0,external_8a }
29	{ st_add r0,r0,external_8a }
30	{ mm r2,r3,external_5a,external_5b }
31	{ shli r2,r3,external_5a; shli r4,r5,external_5b }
32	{ shli r2,r3,external_5a; shli r4,r5,external_5b; ld zero,zero }
33
34        { moveli r0, external1 - .; moveli r1, external1 - . }
35        { moveli r0, hw1_last(external_data1 - .)
36	  moveli r1, hw1_last(external_data1 - .) }
37        { moveli r0, hw0(external_data1 - .)
38	  moveli r1, hw0(external_data1 - .) }
39        { moveli r0, hw2_last(external_data1 - . + 0x100000000000)
40	  moveli r1, hw2_last(external_data1 - . + 0x100000000000) }
41        { moveli r0, hw1(external_data1      - . + 0x100000000000)
42	  moveli r1, hw1(external_data1      - . + 0x100000000000) }
43        { moveli r0, hw0(external_data1      - . + 0x100000000000)
44	  moveli r1, hw0(external_data1      - . + 0x100000000000) }
45        { moveli r0, hw3_last(external_data1 - . + 0x1000000000000000)
46	  moveli r1, hw3_last(external_data1 - . + 0x1000000000000000) }
47        { moveli r0, hw2(external_data1      - . + 0x1000000000000000)
48	  moveli r1, hw2(external_data1      - . + 0x1000000000000000) }
49        { moveli r0, hw1(external_data1      - . + 0x1000000000000000)
50	  moveli r1, hw1(external_data1      - . + 0x1000000000000000) }
51        { moveli r0, hw0(external_data1      - . + 0x1000000000000000)
52	  moveli r1, hw0(external_data1      - . + 0x1000000000000000) }
53
54	.data
55	.align 0x20
56	.int external1
57	.int external2
58	.short external_16a, external_16b
59	.byte external_8a, external_8b
60
61	.int (external_data1-.)
62	.short (external_data1-.)
63	.byte (external_data1-.)
64
65	.short hw0_last(external_16a)
66
67	.short hw1_last(external_32a)
68	.short hw0(external_32a)
69
70	.short hw2_last(external_48a)
71	.short hw1(external_48a)
72	.short hw0(external_48a)
73
74	.short hw3(external_64a)
75	.short hw2(external_64a)
76	.short hw1(external_64a)
77	.short hw0(external_64a)
78