diff doc/disas_examples/ppc.sysv.disas @ 473:ead041d93e36

- ppc doc and disas examples related to aggregates
author Tassilo Philipp
date Wed, 16 Feb 2022 16:44:11 +0100
parents 06c9adae114d
children cb19b2fe2422
line wrap: on
line diff
--- a/doc/disas_examples/ppc.sysv.disas	Thu Feb 10 17:32:05 2022 +0100
+++ b/doc/disas_examples/ppc.sysv.disas	Wed Feb 16 16:44:11 2022 +0100
@@ -610,5 +610,509 @@
  4e4:   7d 61 5b 78     mr      r1,r11          ; |
  4e8:   4e 80 00 20     blr                     ; |
 
+
+
+; ---------- structs by value ---------->
+;
+; struct A { int i, j; long long l; };
+;
+; void leaf_call(int b, int c, int d, int e, struct A f, int g, int h)
+; {
+; }
+;
+; void nonleaf_call(int a, int b, int c, int d, int e, struct A f, int g, int h)
+; {
+;     /* use some local data */
+;     char l[100] = { 'L' };
+;     leaf_call(b, c, d, e, f, g, h);
+; }
+;
+; int main()
+; {
+;     nonleaf_call(0, 1, 2, 3, 4, (struct A){5, 6, 7ll}, 8, 9);
+;     return 0;
+; }
+
+
+
+; output from debian-4.1.1-21-ppc w/ gcc 4.1.2
+
+00000000 <leaf_call>:
+   0:   94 21 ff d0     stwu    r1,-48(r1)
+   4:   93 e1 00 2c     stw     r31,44(r1)
+   8:   7c 3f 0b 78     mr      r31,r1
+   c:   90 7f 00 08     stw     r3,8(r31)
+  10:   90 9f 00 0c     stw     r4,12(r31)
+  14:   90 bf 00 10     stw     r5,16(r31)
+  18:   90 df 00 14     stw     r6,20(r31)
+  1c:   91 1f 00 18     stw     r8,24(r31)
+  20:   91 3f 00 1c     stw     r9,28(r31)
+  24:   81 61 00 00     lwz     r11,0(r1)
+  28:   83 eb ff fc     lwz     r31,-4(r11)
+  2c:   7d 61 5b 78     mr      r1,r11
+  30:   4e 80 00 20     blr
+
+00000034 <nonleaf_call>:
+  34:   94 21 ff 40     stwu    r1,-192(r1)
+  38:   7c 08 02 a6     mflr    r0
+  3c:   93 a1 00 b4     stw     r29,180(r1)
+  40:   93 e1 00 bc     stw     r31,188(r1)
+  44:   90 01 00 c4     stw     r0,196(r1)
+  48:   7c 3f 0b 78     mr      r31,r1
+  4c:   90 7f 00 78     stw     r3,120(r31)
+  50:   90 9f 00 7c     stw     r4,124(r31)
+  54:   90 bf 00 80     stw     r5,128(r31)
+  58:   90 df 00 84     stw     r6,132(r31)
+  5c:   90 ff 00 88     stw     r7,136(r31)
+  60:   7d 1d 43 78     mr      r29,r8
+  64:   91 3f 00 8c     stw     r9,140(r31)
+  68:   91 5f 00 90     stw     r10,144(r31)
+  6c:   38 1f 00 08     addi    r0,r31,8
+  70:   39 20 00 64     li      r9,100
+  74:   7c 03 03 78     mr      r3,r0
+  78:   38 80 00 00     li      r4,0
+  7c:   7d 25 4b 78     mr      r5,r9
+  80:   48 00 00 01     bl      80 <nonleaf_call+0x4c>
+  84:   38 00 00 4c     li      r0,76
+  88:   98 1f 00 08     stb     r0,8(r31)
+  8c:   80 1d 00 00     lwz     r0,0(r29)
+  90:   81 3d 00 04     lwz     r9,4(r29)
+  94:   81 7d 00 08     lwz     r11,8(r29)
+  98:   81 5d 00 0c     lwz     r10,12(r29)
+  9c:   90 1f 00 a0     stw     r0,160(r31)
+  a0:   91 3f 00 a4     stw     r9,164(r31)
+  a4:   91 7f 00 a8     stw     r11,168(r31)
+  a8:   91 5f 00 ac     stw     r10,172(r31)
+  ac:   38 1f 00 a0     addi    r0,r31,160
+  b0:   80 7f 00 7c     lwz     r3,124(r31)
+  b4:   80 9f 00 80     lwz     r4,128(r31)
+  b8:   80 bf 00 84     lwz     r5,132(r31)
+  bc:   80 df 00 88     lwz     r6,136(r31)
+  c0:   7c 07 03 78     mr      r7,r0
+  c4:   81 1f 00 8c     lwz     r8,140(r31)
+  c8:   81 3f 00 90     lwz     r9,144(r31)
+  cc:   48 00 00 01     bl      cc <nonleaf_call+0x98>
+  d0:   81 61 00 00     lwz     r11,0(r1)
+  d4:   80 0b 00 04     lwz     r0,4(r11)
+  d8:   7c 08 03 a6     mtlr    r0
+  dc:   83 ab ff f4     lwz     r29,-12(r11)
+  e0:   83 eb ff fc     lwz     r31,-4(r11)
+  e4:   7d 61 5b 78     mr      r1,r11
+  e8:   4e 80 00 20     blr
+
+000000ec <main>:
+  ec:   94 21 ff c0     stwu    r1,-64(r1)      ;
+  f0:   7c 08 02 a6     mflr    r0              ;
+  f4:   93 e1 00 3c     stw     r31,60(r1)      ;
+  f8:   90 01 00 44     stw     r0,68(r1)       ;
+  fc:   7c 3f 0b 78     mr      r31,r1          ;
+ 100:   3d 20 00 00     lis     r9,0            ;
+ 104:   39 29 00 00     addi    r9,r9,0         ;
+ 108:   80 09 00 00     lwz     r0,0(r9)        ;
+ 10c:   81 69 00 04     lwz     r11,4(r9)       ;
+ 110:   81 49 00 08     lwz     r10,8(r9)       ;
+ 114:   81 29 00 0c     lwz     r9,12(r9)       ;
+ 118:   90 1f 00 08     stw     r0,8(r31)       ;
+ 11c:   91 7f 00 0c     stw     r11,12(r31)     ;
+ 120:   91 5f 00 10     stw     r10,16(r31)     ;
+ 124:   91 3f 00 14     stw     r9,20(r31)      ;
+ 128:   80 1f 00 08     lwz     r0,8(r31)       ;
+ 12c:   81 3f 00 0c     lwz     r9,12(r31)      ;
+ 130:   81 7f 00 10     lwz     r11,16(r31)     ;
+ 134:   81 5f 00 14     lwz     r10,20(r31)     ;
+ 138:   90 1f 00 20     stw     r0,32(r31)      ;
+ 13c:   91 3f 00 24     stw     r9,36(r31)      ;
+ 140:   91 7f 00 28     stw     r11,40(r31)     ;
+ 144:   91 5f 00 2c     stw     r10,44(r31)     ;
+ 148:   38 1f 00 20     addi    r0,r31,32       ;
+ 14c:   38 60 00 00     li      r3,0            ; arg 0
+ 150:   38 80 00 01     li      r4,1            ; arg 1
+ 154:   38 a0 00 02     li      r5,2            ; arg 2
+ 158:   38 c0 00 03     li      r6,3            ; arg 3
+ 15c:   38 e0 00 04     li      r7,4            ; arg 4
+ 160:   7c 08 03 78     mr      r8,r0           ; arg 5 (struct, passed as pointer to local copy)
+ 164:   39 20 00 08     li      r9,8            ; arg 6
+ 168:   39 40 00 09     li      r10,9           ; arg 7
+ 16c:   48 00 00 01     bl      16c <main+0x80> ;
+ 170:   38 00 00 00     li      r0,0            ;
+ 174:   7c 03 03 78     mr      r3,r0           ;
+ 178:   81 61 00 00     lwz     r11,0(r1)       ;
+ 17c:   80 0b 00 04     lwz     r0,4(r11)       ;
+ 180:   7c 08 03 a6     mtlr    r0              ;
+ 184:   83 eb ff fc     lwz     r31,-4(r11)     ;
+ 188:   7d 61 5b 78     mr      r1,r11          ;
+ 18c:   4e 80 00 20     blr                     ;
+
+
+
+; ---------- structs by value, complex example (multiple structs) ---------->
+;
+; struct A { int i, j; float f; };
+; struct B { double d; long long l; };
+;
+; void leaf_call(int b, struct A c, struct B d, int e, int f, struct A g, struct B h, int i, int j)
+; {
+; }
+;
+; void nonleaf_call(int a, int b, struct A c, struct B d, int e, int f, struct A g, struct B h, int i, int j)
+; {
+;     /* use some local data */
+;     char l[100] = { 'L' };
+;     leaf_call(b, c, d, e, f, g, h, i, j);
+; }
+;
+; int main()
+; {
+;     nonleaf_call(0, 1, (struct A){2, 3, 4.f}, (struct B){5., 6ll}, 7, 8, (struct A){9, 10, 11.f}, (struct B){12., 13ll}, 14, 15);
+;     return 0;
+; }
+
+
+
+; output from debian-4.1.1-21-ppc w/ gcc 4.1.2
+
+00000000 <leaf_call>:
+   0:   94 21 ff e0     stwu    r1,-32(r1)
+   4:   93 e1 00 1c     stw     r31,28(r1)
+   8:   7c 3f 0b 78     mr      r31,r1
+   c:   90 7f 00 08     stw     r3,8(r31)
+  10:   90 df 00 0c     stw     r6,12(r31)
+  14:   90 ff 00 10     stw     r7,16(r31)
+  18:   91 5f 00 14     stw     r10,20(r31)
+  1c:   81 61 00 00     lwz     r11,0(r1)
+  20:   83 eb ff fc     lwz     r31,-4(r11)
+  24:   7d 61 5b 78     mr      r1,r11
+  28:   4e 80 00 20     blr
+
+0000002c <nonleaf_call>:
+  2c:   94 21 ff 00     stwu    r1,-256(r1)
+  30:   7c 08 02 a6     mflr    r0
+  34:   93 41 00 e8     stw     r26,232(r1)
+  38:   93 61 00 ec     stw     r27,236(r1)
+  3c:   93 81 00 f0     stw     r28,240(r1)
+  40:   93 a1 00 f4     stw     r29,244(r1)
+  44:   93 e1 00 fc     stw     r31,252(r1)
+  48:   90 01 01 04     stw     r0,260(r1)
+  4c:   7c 3f 0b 78     mr      r31,r1
+  50:   90 7f 00 80     stw     r3,128(r31)
+  54:   90 9f 00 84     stw     r4,132(r31)
+  58:   7c bd 2b 78     mr      r29,r5
+  5c:   7c dc 33 78     mr      r28,r6
+  60:   90 ff 00 88     stw     r7,136(r31)
+  64:   91 1f 00 8c     stw     r8,140(r31)
+  68:   7d 3b 4b 78     mr      r27,r9
+  6c:   7d 5a 53 78     mr      r26,r10
+  70:   38 1f 00 10     addi    r0,r31,16
+  74:   39 20 00 64     li      r9,100
+  78:   7c 03 03 78     mr      r3,r0
+  7c:   38 80 00 00     li      r4,0
+  80:   7d 25 4b 78     mr      r5,r9
+  84:   48 00 00 01     bl      84 <nonleaf_call+0x58>
+  88:   38 00 00 4c     li      r0,76
+  8c:   98 1f 00 10     stb     r0,16(r31)
+  90:   80 1d 00 00     lwz     r0,0(r29)
+  94:   81 3d 00 04     lwz     r9,4(r29)
+  98:   81 7d 00 08     lwz     r11,8(r29)
+  9c:   90 1f 00 98     stw     r0,152(r31)
+  a0:   91 3f 00 9c     stw     r9,156(r31)
+  a4:   91 7f 00 a0     stw     r11,160(r31)
+  a8:   80 1c 00 00     lwz     r0,0(r28)
+  ac:   81 3c 00 04     lwz     r9,4(r28)
+  b0:   81 7c 00 08     lwz     r11,8(r28)
+  b4:   81 5c 00 0c     lwz     r10,12(r28)
+  b8:   90 1f 00 a8     stw     r0,168(r31)
+  bc:   91 3f 00 ac     stw     r9,172(r31)
+  c0:   91 7f 00 b0     stw     r11,176(r31)
+  c4:   91 5f 00 b4     stw     r10,180(r31)
+  c8:   80 1b 00 00     lwz     r0,0(r27)
+  cc:   81 3b 00 04     lwz     r9,4(r27)
+  d0:   81 7b 00 08     lwz     r11,8(r27)
+  d4:   90 1f 00 b8     stw     r0,184(r31)
+  d8:   91 3f 00 bc     stw     r9,188(r31)
+  dc:   91 7f 00 c0     stw     r11,192(r31)
+  e0:   80 1a 00 00     lwz     r0,0(r26)
+  e4:   81 3a 00 04     lwz     r9,4(r26)
+  e8:   81 7a 00 08     lwz     r11,8(r26)
+  ec:   81 5a 00 0c     lwz     r10,12(r26)
+  f0:   90 1f 00 c8     stw     r0,200(r31)
+  f4:   91 3f 00 cc     stw     r9,204(r31)
+  f8:   91 7f 00 d0     stw     r11,208(r31)
+  fc:   91 5f 00 d4     stw     r10,212(r31)
+ 100:   39 3f 00 98     addi    r9,r31,152
+ 104:   39 7f 00 a8     addi    r11,r31,168
+ 108:   39 5f 00 b8     addi    r10,r31,184
+ 10c:   3b bf 00 c8     addi    r29,r31,200
+ 110:   80 1f 01 0c     lwz     r0,268(r31)
+ 114:   90 01 00 08     stw     r0,8(r1)
+ 118:   80 7f 00 84     lwz     r3,132(r31)
+ 11c:   7d 24 4b 78     mr      r4,r9
+ 120:   7d 65 5b 78     mr      r5,r11
+ 124:   80 df 00 88     lwz     r6,136(r31)
+ 128:   80 ff 00 8c     lwz     r7,140(r31)
+ 12c:   7d 48 53 78     mr      r8,r10
+ 130:   7f a9 eb 78     mr      r9,r29
+ 134:   81 5f 01 08     lwz     r10,264(r31)
+ 138:   48 00 00 01     bl      138 <nonleaf_call+0x10c>
+ 13c:   81 61 00 00     lwz     r11,0(r1)
+ 140:   80 0b 00 04     lwz     r0,4(r11)
+ 144:   7c 08 03 a6     mtlr    r0
+ 148:   83 4b ff e8     lwz     r26,-24(r11)
+ 14c:   83 6b ff ec     lwz     r27,-20(r11)
+ 150:   83 8b ff f0     lwz     r28,-16(r11)
+ 154:   83 ab ff f4     lwz     r29,-12(r11)
+ 158:   83 eb ff fc     lwz     r31,-4(r11)
+ 15c:   7d 61 5b 78     mr      r1,r11
+ 160:   4e 80 00 20     blr
+
+00000164 <main>:
+ 164:   94 21 ff 50     stwu    r1,-176(r1)
+ 168:   7c 08 02 a6     mflr    r0
+ 16c:   93 a1 00 a4     stw     r29,164(r1)
+ 170:   93 e1 00 ac     stw     r31,172(r1)
+ 174:   90 01 00 b4     stw     r0,180(r1)
+ 178:   7c 3f 0b 78     mr      r31,r1
+ 17c:   3d 20 00 00     lis     r9,0
+ 180:   39 29 00 30     addi    r9,r9,48
+ 184:   80 09 00 00     lwz     r0,0(r9)
+ 188:   81 69 00 04     lwz     r11,4(r9)
+ 18c:   81 29 00 08     lwz     r9,8(r9)
+ 190:   90 1f 00 40     stw     r0,64(r31)
+ 194:   91 7f 00 44     stw     r11,68(r31)
+ 198:   91 3f 00 48     stw     r9,72(r31)
+ 19c:   3d 20 00 00     lis     r9,0
+ 1a0:   39 29 00 20     addi    r9,r9,32
+ 1a4:   80 09 00 00     lwz     r0,0(r9)
+ 1a8:   81 69 00 04     lwz     r11,4(r9)
+ 1ac:   81 49 00 08     lwz     r10,8(r9)
+ 1b0:   81 29 00 0c     lwz     r9,12(r9)
+ 1b4:   90 1f 00 30     stw     r0,48(r31)
+ 1b8:   91 7f 00 34     stw     r11,52(r31)
+ 1bc:   91 5f 00 38     stw     r10,56(r31)
+ 1c0:   91 3f 00 3c     stw     r9,60(r31)
+ 1c4:   3d 20 00 00     lis     r9,0
+ 1c8:   39 29 00 10     addi    r9,r9,16
+ 1cc:   80 09 00 00     lwz     r0,0(r9)
+ 1d0:   81 69 00 04     lwz     r11,4(r9)
+ 1d4:   81 29 00 08     lwz     r9,8(r9)
+ 1d8:   90 1f 00 20     stw     r0,32(r31)
+ 1dc:   91 7f 00 24     stw     r11,36(r31)
+ 1e0:   91 3f 00 28     stw     r9,40(r31)
+ 1e4:   3d 20 00 00     lis     r9,0
+ 1e8:   39 29 00 00     addi    r9,r9,0
+ 1ec:   80 09 00 00     lwz     r0,0(r9)
+ 1f0:   81 69 00 04     lwz     r11,4(r9)
+ 1f4:   81 49 00 08     lwz     r10,8(r9)
+ 1f8:   81 29 00 0c     lwz     r9,12(r9)
+ 1fc:   90 1f 00 10     stw     r0,16(r31)
+ 200:   91 7f 00 14     stw     r11,20(r31)
+ 204:   91 5f 00 18     stw     r10,24(r31)
+ 208:   91 3f 00 1c     stw     r9,28(r31)
+ 20c:   80 1f 00 40     lwz     r0,64(r31)
+ 210:   81 3f 00 44     lwz     r9,68(r31)
+ 214:   81 7f 00 48     lwz     r11,72(r31)
+ 218:   90 1f 00 58     stw     r0,88(r31)
+ 21c:   91 3f 00 5c     stw     r9,92(r31)
+ 220:   91 7f 00 60     stw     r11,96(r31)
+ 224:   80 1f 00 30     lwz     r0,48(r31)
+ 228:   81 3f 00 34     lwz     r9,52(r31)
+ 22c:   81 7f 00 38     lwz     r11,56(r31)
+ 230:   81 5f 00 3c     lwz     r10,60(r31)
+ 234:   90 1f 00 68     stw     r0,104(r31)
+ 238:   91 3f 00 6c     stw     r9,108(r31)
+ 23c:   91 7f 00 70     stw     r11,112(r31)
+ 240:   91 5f 00 74     stw     r10,116(r31)
+ 244:   80 1f 00 20     lwz     r0,32(r31)
+ 248:   81 3f 00 24     lwz     r9,36(r31)
+ 24c:   81 7f 00 28     lwz     r11,40(r31)
+ 250:   90 1f 00 78     stw     r0,120(r31)
+ 254:   91 3f 00 7c     stw     r9,124(r31)
+ 258:   91 7f 00 80     stw     r11,128(r31)
+ 25c:   80 1f 00 10     lwz     r0,16(r31)
+ 260:   81 3f 00 14     lwz     r9,20(r31)
+ 264:   81 7f 00 18     lwz     r11,24(r31)
+ 268:   81 5f 00 1c     lwz     r10,28(r31)
+ 26c:   90 1f 00 88     stw     r0,136(r31)
+ 270:   91 3f 00 8c     stw     r9,140(r31)
+ 274:   91 7f 00 90     stw     r11,144(r31)
+ 278:   91 5f 00 94     stw     r10,148(r31)
+ 27c:   39 3f 00 58     addi    r9,r31,88
+ 280:   39 7f 00 68     addi    r11,r31,104
+ 284:   39 5f 00 78     addi    r10,r31,120
+ 288:   3b bf 00 88     addi    r29,r31,136
+ 28c:   38 00 00 0e     li      r0,14
+ 290:   90 01 00 08     stw     r0,8(r1)
+ 294:   38 00 00 0f     li      r0,15
+ 298:   90 01 00 0c     stw     r0,12(r1)
+ 29c:   38 60 00 00     li      r3,0
+ 2a0:   38 80 00 01     li      r4,1
+ 2a4:   7d 25 4b 78     mr      r5,r9
+ 2a8:   7d 66 5b 78     mr      r6,r11
+ 2ac:   38 e0 00 07     li      r7,7
+ 2b0:   39 00 00 08     li      r8,8
+ 2b4:   7d 49 53 78     mr      r9,r10
+ 2b8:   7f aa eb 78     mr      r10,r29
+ 2bc:   48 00 00 01     bl      2bc <main+0x158>
+ 2c0:   38 00 00 00     li      r0,0
+ 2c4:   7c 03 03 78     mr      r3,r0
+ 2c8:   81 61 00 00     lwz     r11,0(r1)
+ 2cc:   80 0b 00 04     lwz     r0,4(r11)
+ 2d0:   7c 08 03 a6     mtlr    r0
+ 2d4:   83 ab ff f4     lwz     r29,-12(r11)
+ 2d8:   83 eb ff fc     lwz     r31,-4(r11)
+ 2dc:   7d 61 5b 78     mr      r1,r11
+ 2e0:   4e 80 00 20     blr
+
+
+
+; ---------- returning qwords ---------->
+;
+; long long f()
+; {
+;     return 7171LL;
+; }
+;
+; int main()
+; {
+;     return (int)f();
+; }
+
+
+
+; output from debian-4.1.1-21-ppc w/ gcc 4.1.2
+
+00000000 <f>:
+   0:   94 21 ff f0     stwu    r1,-16(r1)
+   4:   93 e1 00 0c     stw     r31,12(r1)
+   8:   7c 3f 0b 78     mr      r31,r1
+   c:   39 20 00 00     li      r9,0
+  10:   39 40 1c 03     li      r10,7171
+  14:   7d 23 4b 78     mr      r3,r9
+  18:   7d 44 53 78     mr      r4,r10
+  1c:   81 61 00 00     lwz     r11,0(r1)
+  20:   83 eb ff fc     lwz     r31,-4(r11)
+  24:   7d 61 5b 78     mr      r1,r11
+  28:   4e 80 00 20     blr
+
+0000002c <main>:
+  2c:   94 21 ff f0     stwu    r1,-16(r1)
+  30:   7c 08 02 a6     mflr    r0
+  34:   93 e1 00 0c     stw     r31,12(r1)
+  38:   90 01 00 14     stw     r0,20(r1)
+  3c:   7c 3f 0b 78     mr      r31,r1
+  40:   48 00 00 01     bl      40 <main+0x14>
+  44:   7c 8a 23 78     mr      r10,r4
+  48:   7c 69 1b 78     mr      r9,r3
+  4c:   7d 40 53 78     mr      r0,r10
+  50:   7c 03 03 78     mr      r3,r0
+  54:   81 61 00 00     lwz     r11,0(r1)
+  58:   80 0b 00 04     lwz     r0,4(r11)
+  5c:   7c 08 03 a6     mtlr    r0
+  60:   83 eb ff fc     lwz     r31,-4(r11)
+  64:   7d 61 5b 78     mr      r1,r11
+  68:   4e 80 00 20     blr
+
+
+; ---------- returning structs by value ---------->
+;
+; struct Small { char x; };
+; struct Big { long long i; long j; };
+;
+; struct Small f0()
+; {
+;     struct Small s = { 132 };
+;     return s;
+; }
+;
+; struct Big f1()
+; {
+;     struct Big b = { 7171LL, 232 };
+;     return b;
+; }
+;
+; int main()
+; {
+;     struct Small s = f0();
+;     struct Big b = f1();
+;     return b.j + s.x;
+; }
+
+
+
+; output from debian-4.1.1-21-ppc w/ gcc 4.1.2
+
+00000000 <f0>:
+   0:   94 21 ff e0     stwu    r1,-32(r1)
+   4:   93 e1 00 1c     stw     r31,28(r1)
+   8:   7c 3f 0b 78     mr      r31,r1
+   c:   7c 69 1b 78     mr      r9,r3
+  10:   38 00 ff 84     li      r0,-124
+  14:   98 1f 00 08     stb     r0,8(r31)
+  18:   88 1f 00 08     lbz     r0,8(r31)
+  1c:   98 09 00 00     stb     r0,0(r9)
+  20:   7d 23 4b 78     mr      r3,r9
+  24:   81 61 00 00     lwz     r11,0(r1)
+  28:   83 eb ff fc     lwz     r31,-4(r11)
+  2c:   7d 61 5b 78     mr      r1,r11
+  30:   4e 80 00 20     blr
+
+00000034 <f1>:
+  34:   94 21 ff e0     stwu    r1,-32(r1)
+  38:   93 e1 00 1c     stw     r31,28(r1)
+  3c:   7c 3f 0b 78     mr      r31,r1
+  40:   7c 6b 1b 78     mr      r11,r3
+  44:   3d 20 00 00     lis     r9,0
+  48:   39 29 00 00     addi    r9,r9,0
+  4c:   80 09 00 00     lwz     r0,0(r9)
+  50:   81 49 00 04     lwz     r10,4(r9)
+  54:   81 09 00 08     lwz     r8,8(r9)
+  58:   81 29 00 0c     lwz     r9,12(r9)
+  5c:   90 1f 00 08     stw     r0,8(r31)
+  60:   91 5f 00 0c     stw     r10,12(r31)
+  64:   91 1f 00 10     stw     r8,16(r31)
+  68:   91 3f 00 14     stw     r9,20(r31)
+  6c:   80 1f 00 08     lwz     r0,8(r31)
+  70:   81 3f 00 0c     lwz     r9,12(r31)
+  74:   81 5f 00 10     lwz     r10,16(r31)
+  78:   81 1f 00 14     lwz     r8,20(r31)
+  7c:   90 0b 00 00     stw     r0,0(r11)
+  80:   91 2b 00 04     stw     r9,4(r11)
+  84:   91 4b 00 08     stw     r10,8(r11)
+  88:   91 0b 00 0c     stw     r8,12(r11)
+  8c:   7d 63 5b 78     mr      r3,r11
+  90:   81 61 00 00     lwz     r11,0(r1)
+  94:   83 eb ff fc     lwz     r31,-4(r11)
+  98:   7d 61 5b 78     mr      r1,r11
+  9c:   4e 80 00 20     blr
+
+000000a0 <main>:
+  a0:   94 21 ff c0     stwu    r1,-64(r1)
+  a4:   7c 08 02 a6     mflr    r0
+  a8:   93 e1 00 3c     stw     r31,60(r1)
+  ac:   90 01 00 44     stw     r0,68(r1)
+  b0:   7c 3f 0b 78     mr      r31,r1
+  b4:   38 1f 00 28     addi    r0,r31,40
+  b8:   7c 03 03 78     mr      r3,r0
+  bc:   4c c6 31 82     crclr   4*cr1+eq
+  c0:   48 00 00 01     bl      c0 <main+0x20>
+  c4:   88 1f 00 28     lbz     r0,40(r31)
+  c8:   98 1f 00 08     stb     r0,8(r31)
+  cc:   38 1f 00 10     addi    r0,r31,16
+  d0:   7c 03 03 78     mr      r3,r0
+  d4:   4c c6 31 82     crclr   4*cr1+eq
+  d8:   48 00 00 01     bl      d8 <main+0x38>
+  dc:   81 3f 00 18     lwz     r9,24(r31)
+  e0:   88 1f 00 08     lbz     r0,8(r31)
+  e4:   54 00 06 3e     clrlwi  r0,r0,24
+  e8:   7c 09 02 14     add     r0,r9,r0
+  ec:   7c 03 03 78     mr      r3,r0
+  f0:   81 61 00 00     lwz     r11,0(r1)
+  f4:   80 0b 00 04     lwz     r0,4(r11)
+  f8:   7c 08 03 a6     mtlr    r0
+  fc:   83 eb ff fc     lwz     r31,-4(r11)
+ 100:   7d 61 5b 78     mr      r1,r11
+ 104:   4e 80 00 20     blr
+
+
+
 ; vim: ft=asm68k