Hi,
On Thu, 10 Feb 2022 09:07:05 +0100 John Paul Adrian Glaubitz
<glaub...@physik.fu-berlin.de> wrote:
> On 2/10/22 03:22, Mike Hommey wrote:
> > I thought the code built with -mcrypto -mvsx was behind runtime
> > detection?
>
> As far as I know, it's not. We had user reports about running into SIGILL
> on powerpc and ppc64 targets when running on older hardware. [1]
>
> This is why I added the possibility to turn off VSX and Crypto in NSS
upstream
> in the first place. [2][3]
I can confirm a reproducible crash in libnss3 / powerpc (32-bit) due to
illegal instruction on my PowerMac G5 (970MP). A quick way to trigger it
is to run 'ecryptfs-wrap-passphrase <file>' which calls libnss3's
'rijndael_encryptBlock128' and crashes on encountering the instruction
'lxvw4x', which was only introduced in version 2.06 of the
specification, so POWER7 and later.
All other code that I've encountered in the binary packages for the
'powerpc' architecture builds works fine so I assume that the 2.06
version of the specification isn't a new baseline for building these
packages (it wouldn't make sense on 32-bit PowerPC anyway to raise the
baseline to POWER7's instruction set).
Interestingly enough rebuilding the package on my 970MP produces
different assembly code, omitting the 'lxvw4x' instruction and this
rebuilt package works fine with my CPU, no illegal instruction. So the
host CPU's model and capabilities affects the assembly code of the built
package, which I assume is not what one should expect?
This instruction seems to be the result of auto-vectorization by gcc, so
likely there's some '-mcpu=native' condition in combination with
optimization options enabling auto-vectorization that produces the
instruction 'lxvw4x' when the file 'nss/lib/freebl/rijndael.c' is
compiled. Specifically around line 584 where it crashes:
584: COLUMN_3(state) = *((PRUint32 *)(pIn + 12)) ^ *roundkeyw++;
I'm attaching a crash log and disassembly of the function
'rijndael_encryptBlock128' from the current debian binary package in
'sid' (version 3.96-1):
libnss3_3.96-1_crash_disass_upstream.txt
...and a disassembly of ''rijndael_encryptBlock128' from a package that
I rebuilt on my own machine with no changed parameters (simple 'apt
source --compile libnss3'):
libnss3_3.96-1_disass_rebuilt.txt
Best regards,
- Erik
$ gdb --args ecryptfs-wrap-passphrase asdf
GNU gdb (Debian 13.2-1) 13.2
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "powerpc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ecryptfs-wrap-passphrase...
Reading symbols from
/usr/lib/debug/.build-id/d8/d1e871d83a1f9276b85ed0292169652b01e59a.debug...
(gdb) run
Starting program: /usr/bin/ecryptfs-wrap-passphrase asdf
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/powerpc-linux-gnu/libthread_db.so.1".
Passphrase to wrap:
Wrapping passphrase:
Program received signal SIGILL, Illegal instruction.
rijndael_encryptBlock128 (cx=cx@entry=0x444060, output=output@entry=0xfffef808
"", input=input@entry=0xfffef7b4 "asdf") at rijndael.c:584
584 rijndael.c: Filen eller katalogen finns inte.
(gdb) bt
#0 rijndael_encryptBlock128 (cx=cx@entry=0x444060,
output=output@entry=0xfffef808 "", input=input@entry=0xfffef7b4 "asdf") at
rijndael.c:584
#1 0xf7906ef0 in rijndael_encryptECB (cx=0x444060, output=0xfffef808 "",
outputLen=<optimized out>, maxOutputLen=<optimized out>, input=0xfffef7b4
"asdf", inputLen=16)
at rijndael.c:753
#2 0xf7907ba4 in AES_Encrypt (cx=<optimized out>, output=<optimized out>,
outputLen=<optimized out>, maxOutputLen=<optimized out>, input=<optimized out>,
inputLen=<optimized out>)
at rijndael.c:1174
#3 0xf7ce2158 in AES_Encrypt (cx=0x444060, output=0xfffef808 "",
outputLen=<optimized out>, maxOutputLen=<optimized out>, input=<optimized out>,
inputLen=<optimized out>)
at loader.c:498
#4 0xf7cbd304 in NSC_EncryptUpdate (hSession=<optimized out>, pPart=0xfffef7b4
"asdf", ulPartLen=16, pEncryptedPart=0xfffef808 "",
pulEncryptedPartLen=0xfffef6e0) at pkcs11c.c:1508
#5 0xf7de7f08 in PK11_CipherOp (context=0x442930, out=<optimized out>,
outlen=0xfffef740, maxout=80, in=0xfffef7b4 "asdf", inlen=16) at pk11cxt.c:913
#6 0x003b7e10 in ecryptfs_wrap_passphrase () from
/lib/powerpc-linux-gnu/libecryptfs.so.1
#7 0x00400838 in main (argc=<optimized out>, argv=<optimized out>) at
ecryptfs_wrap_passphrase.c:83
(gdb) disass
Dump of assembler code for function rijndael_encryptBlock128:
0xf7905fb0 <+0>: stwu r1,-160(r1)
0xf7905fb4 <+4>: mflr r0
0xf7905fb8 <+8>: bcl 20,4*cr7+so,0xf7905fbc
<rijndael_encryptBlock128+12>
0xf7905fbc <+12>: andi. r9,r5,3
0xf7905fc0 <+16>: stw r30,152(r1)
0xf7905fc4 <+20>: stw r0,164(r1)
0xf7905fc8 <+24>: stw r24,128(r1)
0xf7905fcc <+28>: stw r25,132(r1)
0xf7905fd0 <+32>: stw r26,136(r1)
0xf7905fd4 <+36>: stw r27,140(r1)
0xf7905fd8 <+40>: stw r28,144(r1)
0xf7905fdc <+44>: stw r29,148(r1)
0xf7905fe0 <+48>: stw r31,156(r1)
0xf7905fe4 <+52>: mflr r30
0xf7905fe8 <+56>: addis r30,r30,13
0xf7905fec <+60>: addi r30,r30,6644
0xf7905ff0 <+64>: lwz r9,-28680(r2)
0xf7905ff4 <+68>: stw r9,92(r1)
0xf7905ff8 <+72>: li r9,0
0xf7905ffc <+76>: bne 0xf7906370 <rijndael_encryptBlock128+960>
0xf7906000 <+80>: andi. r9,r4,3
0xf7906004 <+84>: mr r24,r4
0xf7906008 <+88>: beq 0xf7906010 <rijndael_encryptBlock128+96>
0xf790600c <+92>: addi r24,r1,76
=> 0xf7906010 <+96>: lxvw4x vs0,0,r3
0xf7906014 <+100>: lxvw4x vs12,0,r5
0xf7906018 <+104>: li r9,-64
0xf790601c <+108>: addi r10,r1,96
0xf7906020 <+112>: lwz r25,244(r3)
0xf7906024 <+116>: addi r26,r3,16
0xf7906028 <+120>: cmplwi cr7,r25,1
0xf790602c <+124>: xxlxor vs0,vs0,vs12
0xf7906030 <+128>: stxvw4x vs0,r10,r9
0xf7906034 <+132>: ble cr7,0xf79063d0 <rijndael_encryptBlock128+1056>
0xf7906038 <+136>: stw r16,96(r1)
0xf790603c <+140>: stw r17,100(r1)
0xf7906040 <+144>: stw r18,104(r1)
0xf7906044 <+148>: stw r19,108(r1)
0xf7906048 <+152>: stw r20,112(r1)
0xf790604c <+156>: stw r21,116(r1)
0xf7906050 <+160>: stw r22,120(r1)
--Type <RET> for more, q to quit, c to continue without paging--c
0xf7906054 <+164>: stw r23,124(r1)
0xf7906058 <+168>: addi r9,r25,-1
0xf790605c <+172>: lwz r5,-32768(r30)
0xf7906060 <+176>: lwz r6,-32764(r30)
0xf7906064 <+180>: mr r29,r26
0xf7906068 <+184>: lwz r11,-32760(r30)
0xf790606c <+188>: lwz r3,-32756(r30)
0xf7906070 <+192>: li r27,-80
0xf7906074 <+196>: li r28,-64
0xf7906078 <+200>: mtctr r9
0xf790607c <+204>: ori r2,r2,0
0xf7906080 <+208>: lbz r8,36(r1)
0xf7906084 <+212>: lbz r12,41(r1)
0xf7906088 <+216>: lbz r31,32(r1)
0xf790608c <+220>: lbz r18,37(r1)
0xf7906090 <+224>: lbz r23,40(r1)
0xf7906094 <+228>: lbz r0,44(r1)
0xf7906098 <+232>: slwi r8,r8,2
0xf790609c <+236>: slwi r12,r12,2
0xf79060a0 <+240>: lwzx r12,r6,r12
0xf79060a4 <+244>: lbz r10,45(r1)
0xf79060a8 <+248>: slwi r18,r18,2
0xf79060ac <+252>: slwi r31,r31,2
0xf79060b0 <+256>: lbz r9,33(r1)
0xf79060b4 <+260>: lbz r7,42(r1)
0xf79060b8 <+264>: slwi r23,r23,2
0xf79060bc <+268>: slwi r0,r0,2
0xf79060c0 <+272>: lwzx r8,r5,r8
0xf79060c4 <+276>: lbz r19,46(r1)
0xf79060c8 <+280>: slwi r10,r10,2
0xf79060cc <+284>: lbz r20,34(r1)
0xf79060d0 <+288>: lbz r21,38(r1)
0xf79060d4 <+292>: slwi r9,r9,2
0xf79060d8 <+296>: slwi r7,r7,2
0xf79060dc <+300>: lwzx r16,r6,r18
0xf79060e0 <+304>: lwzx r17,r5,r23
0xf79060e4 <+308>: xor r8,r8,r12
0xf79060e8 <+312>: slwi r19,r19,2
0xf79060ec <+316>: lwzx r18,r5,r0
0xf79060f0 <+320>: lbz r22,47(r1)
0xf79060f4 <+324>: slwi r20,r20,2
0xf79060f8 <+328>: slwi r21,r21,2
0xf79060fc <+332>: lwzx r31,r5,r31
0xf7906100 <+336>: lbz r23,35(r1)
0xf7906104 <+340>: lbz r12,39(r1)
0xf7906108 <+344>: lbz r0,43(r1)
0xf790610c <+348>: slwi r22,r22,2
0xf7906110 <+352>: lwzx r10,r6,r10
0xf7906114 <+356>: lwzx r9,r6,r9
0xf7906118 <+360>: xor r31,r31,r16
0xf790611c <+364>: slwi r23,r23,2
0xf7906120 <+368>: lwzx r7,r11,r7
0xf7906124 <+372>: lwzx r19,r11,r19
0xf7906128 <+376>: slwi r12,r12,2
0xf790612c <+380>: slwi r0,r0,2
0xf7906130 <+384>: lwzx r20,r11,r20
0xf7906134 <+388>: lwzx r21,r11,r21
0xf7906138 <+392>: xor r10,r17,r10
0xf790613c <+396>: xor r9,r18,r9
0xf7906140 <+400>: lwzx r22,r3,r22
0xf7906144 <+404>: lwzx r23,r3,r23
0xf7906148 <+408>: xor r7,r31,r7
0xf790614c <+412>: xor r8,r8,r19
0xf7906150 <+416>: lwzx r31,r3,r12
0xf7906154 <+420>: lwzx r0,r3,r0
0xf7906158 <+424>: xor r10,r10,r20
0xf790615c <+428>: xor r9,r9,r21
0xf7906160 <+432>: xor r7,r7,r22
0xf7906164 <+436>: xor r8,r8,r23
0xf7906168 <+440>: xor r9,r9,r0
0xf790616c <+444>: xor r10,r10,r31
0xf7906170 <+448>: stw r7,16(r1)
0xf7906174 <+452>: stw r9,28(r1)
0xf7906178 <+456>: stw r8,20(r1)
0xf790617c <+460>: stw r10,24(r1)
0xf7906180 <+464>: addi r9,r1,96
0xf7906184 <+468>: lxvw4x vs0,0,r29
0xf7906188 <+472>: lxvw4x vs12,r9,r27
0xf790618c <+476>: addi r29,r29,16
0xf7906190 <+480>: xxlxor vs0,vs12,vs0
0xf7906194 <+484>: stxvw4x vs0,r9,r28
0xf7906198 <+488>: bdnz 0xf7906080 <rijndael_encryptBlock128+208>
0xf790619c <+492>: slwi r25,r25,4
0xf79061a0 <+496>: lwz r16,96(r1)
0xf79061a4 <+500>: lwz r17,100(r1)
0xf79061a8 <+504>: addi r25,r25,-16
0xf79061ac <+508>: lwz r18,104(r1)
0xf79061b0 <+512>: lwz r19,108(r1)
0xf79061b4 <+516>: lwz r20,112(r1)
0xf79061b8 <+520>: lwz r21,116(r1)
0xf79061bc <+524>: add r26,r26,r25
0xf79061c0 <+528>: lwz r22,120(r1)
0xf79061c4 <+532>: lwz r23,124(r1)
0xf79061c8 <+536>: lbz r7,36(r1)
0xf79061cc <+540>: lbz r10,41(r1)
0xf79061d0 <+544>: lbz r8,40(r1)
0xf79061d4 <+548>: lbz r29,45(r1)
0xf79061d8 <+552>: lbz r9,34(r1)
0xf79061dc <+556>: slwi r7,r7,2
0xf79061e0 <+560>: slwi r10,r10,2
0xf79061e4 <+564>: lbz r0,46(r1)
0xf79061e8 <+568>: slwi r29,r29,2
0xf79061ec <+572>: slwi r8,r8,2
0xf79061f0 <+576>: lwzx r7,r11,r7
0xf79061f4 <+580>: lwzx r10,r3,r10
0xf79061f8 <+584>: lwzx r8,r11,r8
0xf79061fc <+588>: lwzx r28,r3,r29
0xf7906200 <+592>: slwi r9,r9,2
0xf7906204 <+596>: slwi r0,r0,2
0xf7906208 <+600>: lwzx r9,r5,r9
0xf790620c <+604>: lbz r31,35(r1)
0xf7906210 <+608>: rlwinm r10,r10,0,8,15
0xf7906214 <+612>: clrrwi r7,r7,24
0xf7906218 <+616>: rlwinm r28,r28,0,8,15
0xf790621c <+620>: clrrwi r8,r8,24
0xf7906220 <+624>: lwzx r0,r5,r0
0xf7906224 <+628>: lbz r27,33(r1)
0xf7906228 <+632>: or r7,r7,r10
0xf790622c <+636>: rlwinm r9,r9,0,16,23
0xf7906230 <+640>: lbz r10,44(r1)
0xf7906234 <+644>: lbz r29,39(r1)
0xf7906238 <+648>: or r8,r8,r28
0xf790623c <+652>: slwi r31,r31,2
0xf7906240 <+656>: lbz r28,38(r1)
0xf7906244 <+660>: lwzx r31,r6,r31
0xf7906248 <+664>: or r8,r8,r9
0xf790624c <+668>: lbz r9,32(r1)
0xf7906250 <+672>: rlwinm r0,r0,0,16,23
0xf7906254 <+676>: slwi r10,r10,2
0xf7906258 <+680>: slwi r27,r27,2
0xf790625c <+684>: lwzx r10,r11,r10
0xf7906260 <+688>: lwzx r27,r3,r27
0xf7906264 <+692>: or r7,r7,r0
0xf7906268 <+696>: clrlwi r31,r31,24
0xf790626c <+700>: slwi r29,r29,2
0xf7906270 <+704>: slwi r28,r28,2
0xf7906274 <+708>: lbz r0,43(r1)
0xf7906278 <+712>: slwi r9,r9,2
0xf790627c <+716>: lwzx r29,r6,r29
0xf7906280 <+720>: lwzx r28,r5,r28
0xf7906284 <+724>: or r7,r7,r31
0xf7906288 <+728>: lwzx r9,r11,r9
0xf790628c <+732>: lbz r31,42(r1)
0xf7906290 <+736>: rlwinm r27,r27,0,8,15
0xf7906294 <+740>: clrrwi r10,r10,24
0xf7906298 <+744>: lbz r11,37(r1)
0xf790629c <+748>: clrlwi r29,r29,24
0xf79062a0 <+752>: or r10,r10,r27
0xf79062a4 <+756>: lwz r27,4(r26)
0xf79062a8 <+760>: rlwinm r28,r28,0,16,23
0xf79062ac <+764>: slwi r0,r0,2
0xf79062b0 <+768>: slwi r11,r11,2
0xf79062b4 <+772>: slwi r31,r31,2
0xf79062b8 <+776>: lwzx r0,r6,r0
0xf79062bc <+780>: lwzx r11,r3,r11
0xf79062c0 <+784>: or r10,r10,r28
0xf79062c4 <+788>: or r8,r8,r29
0xf79062c8 <+792>: lwz r28,8(r26)
0xf79062cc <+796>: lwz r29,12(r26)
0xf79062d0 <+800>: lwzx r3,r5,r31
0xf79062d4 <+804>: clrlwi r0,r0,24
0xf79062d8 <+808>: clrrwi r9,r9,24
0xf79062dc <+812>: lbz r5,47(r1)
0xf79062e0 <+816>: or r10,r10,r0
0xf79062e4 <+820>: rlwinm r11,r11,0,8,15
0xf79062e8 <+824>: lwz r0,0(r26)
0xf79062ec <+828>: xor r10,r10,r29
0xf79062f0 <+832>: or r9,r9,r11
0xf79062f4 <+836>: slwi r5,r5,2
0xf79062f8 <+840>: rlwinm r3,r3,0,16,23
0xf79062fc <+844>: lwzx r6,r6,r5
0xf7906300 <+848>: stw r10,12(r24)
0xf7906304 <+852>: or r9,r9,r3
0xf7906308 <+856>: xor r7,r7,r27
0xf790630c <+860>: xor r8,r8,r28
0xf7906310 <+864>: clrlwi r10,r6,24
0xf7906314 <+868>: stw r7,4(r24)
0xf7906318 <+872>: or r9,r9,r10
0xf790631c <+876>: stw r8,8(r24)
0xf7906320 <+880>: xor r9,r9,r0
0xf7906324 <+884>: stw r9,0(r24)
0xf7906328 <+888>: bne 0xf79063a0 <rijndael_encryptBlock128+1008>
0xf790632c <+892>: lwz r10,92(r1)
0xf7906330 <+896>: lwz r9,-28680(r2)
0xf7906334 <+900>: xor. r10,r10,r9
0xf7906338 <+904>: li r9,0
0xf790633c <+908>: bne 0xf79063e4 <rijndael_encryptBlock128+1076>
0xf7906340 <+912>: lwz r0,164(r1)
0xf7906344 <+916>: lwz r24,128(r1)
0xf7906348 <+920>: lwz r25,132(r1)
0xf790634c <+924>: lwz r26,136(r1)
0xf7906350 <+928>: lwz r27,140(r1)
0xf7906354 <+932>: lwz r28,144(r1)
0xf7906358 <+936>: mtlr r0
0xf790635c <+940>: lwz r29,148(r1)
0xf7906360 <+944>: lwz r30,152(r1)
0xf7906364 <+948>: lwz r31,156(r1)
0xf7906368 <+952>: addi r1,r1,160
0xf790636c <+956>: blr
0xf7906370 <+960>: lwz r6,0(r5)
0xf7906374 <+964>: lwz r7,4(r5)
0xf7906378 <+968>: addi r9,r1,60
0xf790637c <+972>: lwz r8,8(r5)
0xf7906380 <+976>: lwz r10,12(r5)
0xf7906384 <+980>: mr r5,r9
0xf7906388 <+984>: stw r6,60(r1)
0xf790638c <+988>: stw r7,64(r1)
0xf7906390 <+992>: stw r8,68(r1)
0xf7906394 <+996>: stw r10,72(r1)
0xf7906398 <+1000>: b 0xf7906000 <rijndael_encryptBlock128+80>
0xf790639c <+1004>: ori r2,r2,0
0xf79063a0 <+1008>: lwz r7,76(r1)
0xf79063a4 <+1012>: lwz r8,80(r1)
0xf79063a8 <+1016>: lwz r10,84(r1)
0xf79063ac <+1020>: lwz r9,88(r1)
0xf79063b0 <+1024>: stw r7,0(r4)
0xf79063b4 <+1028>: stw r8,4(r4)
0xf79063b8 <+1032>: stw r10,8(r4)
0xf79063bc <+1036>: stw r9,12(r4)
0xf79063c0 <+1040>: b 0xf790632c <rijndael_encryptBlock128+892>
0xf79063c4 <+1044>: nop
0xf79063c8 <+1048>: nop
0xf79063cc <+1052>: ori r2,r2,0
0xf79063d0 <+1056>: lwz r5,-32768(r30)
0xf79063d4 <+1060>: lwz r6,-32764(r30)
0xf79063d8 <+1064>: lwz r11,-32760(r30)
0xf79063dc <+1068>: lwz r3,-32756(r30)
0xf79063e0 <+1072>: b 0xf79061c8 <rijndael_encryptBlock128+536>
0xf79063e4 <+1076>: stw r16,96(r1)
0xf79063e8 <+1080>: stw r17,100(r1)
0xf79063ec <+1084>: stw r18,104(r1)
0xf79063f0 <+1088>: stw r19,108(r1)
0xf79063f4 <+1092>: stw r20,112(r1)
0xf79063f8 <+1096>: stw r21,116(r1)
0xf79063fc <+1100>: stw r22,120(r1)
0xf7906400 <+1104>: stw r23,124(r1)
0xf7906404 <+1108>: bl 0xf7979820 <__stack_chk_fail_local>
End of assembler dump.
(gdb) q
A debugging session is active.
Inferior 1 [process 17849] will be killed.
Quit anyway? (y or n) y
$ gdb --args ecryptfs-wrap-passphrase asdf
GNU gdb (Debian 13.2-1) 13.2
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "powerpc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ecryptfs-wrap-passphrase...
Reading symbols from
/usr/lib/debug/.build-id/d8/d1e871d83a1f9276b85ed0292169652b01e59a.debug...
(gdb) run
Starting program: /usr/bin/ecryptfs-wrap-passphrase asdf
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/powerpc-linux-gnu/libthread_db.so.1".
Passphrase to wrap:
Wrapping passphrase:
[Inferior 1 (process 5486) exited normally]
(gdb) disass rijndael_encryptBlock128
Dump of assembler code for function rijndael_encryptBlock128:
0xf7905f90 <+0>: stwu r1,-160(r1)
0xf7905f94 <+4>: mflr r0
0xf7905f98 <+8>: bcl 20,4*cr7+so,0xf7905f9c
<rijndael_encryptBlock128+12>
0xf7905f9c <+12>: andi. r9,r5,3
0xf7905fa0 <+16>: stw r30,152(r1)
0xf7905fa4 <+20>: stw r0,164(r1)
0xf7905fa8 <+24>: stw r22,120(r1)
0xf7905fac <+28>: stw r23,124(r1)
0xf7905fb0 <+32>: stw r24,128(r1)
0xf7905fb4 <+36>: stw r28,144(r1)
0xf7905fb8 <+40>: stw r29,148(r1)
0xf7905fbc <+44>: stw r31,156(r1)
0xf7905fc0 <+48>: mflr r30
0xf7905fc4 <+52>: addis r30,r30,13
0xf7905fc8 <+56>: addi r30,r30,6676
0xf7905fcc <+60>: lwz r9,-28680(r2)
0xf7905fd0 <+64>: stw r9,92(r1)
0xf7905fd4 <+68>: li r9,0
0xf7905fd8 <+72>: bne 0xf79063a0 <rijndael_encryptBlock128+1040>
0xf7905fdc <+76>: andi. r9,r4,3
0xf7905fe0 <+80>: mr r22,r4
0xf7905fe4 <+84>: beq 0xf7905fec <rijndael_encryptBlock128+92>
0xf7905fe8 <+88>: addi r22,r1,76
0xf7905fec <+92>: neg r10,r3
0xf7905ff0 <+96>: addi r9,r3,15
0xf7905ff4 <+100>: lvx v1,0,r5
0xf7905ff8 <+104>: lvx v0,0,r3
0xf7905ffc <+108>: neg r7,r5
0xf7906000 <+112>: addi r8,r5,15
0xf7906004 <+116>: lvsr v12,0,r10
0xf7906008 <+120>: lvx v13,0,r9
0xf790600c <+124>: lvsr v10,0,r7
0xf7906010 <+128>: lvx v11,0,r8
0xf7906014 <+132>: li r9,-64
0xf7906018 <+136>: addi r10,r1,96
0xf790601c <+140>: lwz r23,244(r3)
0xf7906020 <+144>: addi r24,r3,16
0xf7906024 <+148>: vperm v0,v0,v13,v12
0xf7906028 <+152>: vperm v1,v1,v11,v10
0xf790602c <+156>: cmplwi cr7,r23,1
0xf7906030 <+160>: vxor v0,v0,v1
--Type <RET> for more, q to quit, c to continue without paging--c
0xf7906034 <+164>: stvx v0,r10,r9
0xf7906038 <+168>: ble cr7,0xf7906400 <rijndael_encryptBlock128+1136>
0xf790603c <+172>: stw r16,96(r1)
0xf7906040 <+176>: stw r17,100(r1)
0xf7906044 <+180>: stw r18,104(r1)
0xf7906048 <+184>: stw r19,108(r1)
0xf790604c <+188>: stw r20,112(r1)
0xf7906050 <+192>: stw r21,116(r1)
0xf7906054 <+196>: stw r27,140(r1)
0xf7906058 <+200>: addi r9,r23,-1
0xf790605c <+204>: lwz r3,-32768(r30)
0xf7906060 <+208>: lwz r5,-32764(r30)
0xf7906064 <+212>: lwz r12,-32760(r30)
0xf7906068 <+216>: mr r6,r24
0xf790606c <+220>: mtctr r9
0xf7906070 <+224>: lwz r11,-32756(r30)
0xf7906074 <+228>: stw r25,132(r1)
0xf7906078 <+232>: li r25,-80
0xf790607c <+236>: stw r26,136(r1)
0xf7906080 <+240>: li r26,-64
0xf7906084 <+244>: nop
0xf7906088 <+248>: nop
0xf790608c <+252>: ori r2,r2,0
0xf7906090 <+256>: lbz r28,37(r1)
0xf7906094 <+260>: lbz r29,36(r1)
0xf7906098 <+264>: neg r17,r6
0xf790609c <+268>: addi r27,r6,15
0xf79060a0 <+272>: lbz r31,41(r1)
0xf79060a4 <+276>: lbz r10,40(r1)
0xf79060a8 <+280>: lbz r0,45(r1)
0xf79060ac <+284>: lbz r9,44(r1)
0xf79060b0 <+288>: slwi r28,r28,2
0xf79060b4 <+292>: slwi r29,r29,2
0xf79060b8 <+296>: lbz r8,33(r1)
0xf79060bc <+300>: lbz r21,32(r1)
0xf79060c0 <+304>: slwi r31,r31,2
0xf79060c4 <+308>: slwi r10,r10,2
0xf79060c8 <+312>: slwi r0,r0,2
0xf79060cc <+316>: slwi r9,r9,2
0xf79060d0 <+320>: lwzx r16,r5,r28
0xf79060d4 <+324>: lbz r7,42(r1)
0xf79060d8 <+328>: slwi r8,r8,2
0xf79060dc <+332>: lwzx r28,r5,r31
0xf79060e0 <+336>: lwzx r29,r3,r29
0xf79060e4 <+340>: slwi r21,r21,2
0xf79060e8 <+344>: lwzx r31,r5,r0
0xf79060ec <+348>: lwzx r10,r3,r10
0xf79060f0 <+352>: slwi r7,r7,2
0xf79060f4 <+356>: lwzx r0,r5,r8
0xf79060f8 <+360>: lwzx r9,r3,r9
0xf79060fc <+364>: xor r29,r29,r28
0xf7906100 <+368>: lbz r18,46(r1)
0xf7906104 <+372>: lbz r19,34(r1)
0xf7906108 <+376>: xor r10,r10,r31
0xf790610c <+380>: lbz r20,38(r1)
0xf7906110 <+384>: lbz r8,47(r1)
0xf7906114 <+388>: xor r9,r9,r0
0xf7906118 <+392>: lwzx r21,r3,r21
0xf790611c <+396>: lbz r28,35(r1)
0xf7906120 <+400>: slwi r18,r18,2
0xf7906124 <+404>: slwi r19,r19,2
0xf7906128 <+408>: lbz r31,39(r1)
0xf790612c <+412>: lbz r0,43(r1)
0xf7906130 <+416>: slwi r20,r20,2
0xf7906134 <+420>: lwzx r7,r12,r7
0xf7906138 <+424>: xor r21,r21,r16
0xf790613c <+428>: lwzx r19,r12,r19
0xf7906140 <+432>: slwi r16,r8,2
0xf7906144 <+436>: lwzx r20,r12,r20
0xf7906148 <+440>: lwzx r8,r12,r18
0xf790614c <+444>: slwi r28,r28,2
0xf7906150 <+448>: slwi r31,r31,2
0xf7906154 <+452>: slwi r0,r0,2
0xf7906158 <+456>: lvsr v13,0,r17
0xf790615c <+460>: lwzx r28,r11,r28
0xf7906160 <+464>: xor r7,r21,r7
0xf7906164 <+468>: lwzx r31,r11,r31
0xf7906168 <+472>: lwzx r21,r11,r16
0xf790616c <+476>: xor r8,r29,r8
0xf7906170 <+480>: xor r10,r10,r19
0xf7906174 <+484>: lwzx r0,r11,r0
0xf7906178 <+488>: xor r9,r9,r20
0xf790617c <+492>: xor r8,r8,r28
0xf7906180 <+496>: xor r7,r7,r21
0xf7906184 <+500>: xor r10,r10,r31
0xf7906188 <+504>: xor r9,r9,r0
0xf790618c <+508>: stw r7,16(r1)
0xf7906190 <+512>: stw r9,28(r1)
0xf7906194 <+516>: stw r8,20(r1)
0xf7906198 <+520>: stw r10,24(r1)
0xf790619c <+524>: addi r9,r1,96
0xf79061a0 <+528>: lvx v0,0,r6
0xf79061a4 <+532>: lvx v1,0,r27
0xf79061a8 <+536>: addi r6,r6,16
0xf79061ac <+540>: vperm v0,v0,v1,v13
0xf79061b0 <+544>: lvx v1,r9,r25
0xf79061b4 <+548>: vxor v0,v1,v0
0xf79061b8 <+552>: stvx v0,r9,r26
0xf79061bc <+556>: bdnz 0xf7906090 <rijndael_encryptBlock128+256>
0xf79061c0 <+560>: slwi r23,r23,4
0xf79061c4 <+564>: lwz r16,96(r1)
0xf79061c8 <+568>: lwz r17,100(r1)
0xf79061cc <+572>: addi r23,r23,-16
0xf79061d0 <+576>: lwz r18,104(r1)
0xf79061d4 <+580>: lwz r19,108(r1)
0xf79061d8 <+584>: lwz r20,112(r1)
0xf79061dc <+588>: lwz r21,116(r1)
0xf79061e0 <+592>: add r24,r24,r23
0xf79061e4 <+596>: lwz r25,132(r1)
0xf79061e8 <+600>: lwz r26,136(r1)
0xf79061ec <+604>: lwz r27,140(r1)
0xf79061f0 <+608>: lbz r7,36(r1)
0xf79061f4 <+612>: lbz r10,41(r1)
0xf79061f8 <+616>: lbz r8,40(r1)
0xf79061fc <+620>: lbz r31,45(r1)
0xf7906200 <+624>: slwi r7,r7,2
0xf7906204 <+628>: slwi r10,r10,2
0xf7906208 <+632>: lbz r6,46(r1)
0xf790620c <+636>: lbz r0,35(r1)
0xf7906210 <+640>: lwzx r10,r11,r10
0xf7906214 <+644>: lwzx r7,r12,r7
0xf7906218 <+648>: slwi r31,r31,2
0xf790621c <+652>: slwi r8,r8,2
0xf7906220 <+656>: lwzx r28,r11,r31
0xf7906224 <+660>: lwzx r8,r12,r8
0xf7906228 <+664>: slwi r6,r6,2
0xf790622c <+668>: slwi r0,r0,2
0xf7906230 <+672>: rlwinm r10,r10,0,8,15
0xf7906234 <+676>: clrrwi r7,r7,24
0xf7906238 <+680>: lbz r9,34(r1)
0xf790623c <+684>: lwzx r6,r3,r6
0xf7906240 <+688>: lbz r29,33(r1)
0xf7906244 <+692>: or r7,r7,r10
0xf7906248 <+696>: lbz r10,44(r1)
0xf790624c <+700>: rlwinm r28,r28,0,8,15
0xf7906250 <+704>: clrrwi r8,r8,24
0xf7906254 <+708>: rlwinm r6,r6,0,16,23
0xf7906258 <+712>: lwzx r0,r5,r0
0xf790625c <+716>: lbz r31,39(r1)
0xf7906260 <+720>: or r8,r8,r28
0xf7906264 <+724>: slwi r9,r9,2
0xf7906268 <+728>: lbz r28,38(r1)
0xf790626c <+732>: slwi r10,r10,2
0xf7906270 <+736>: slwi r29,r29,2
0xf7906274 <+740>: lwzx r9,r3,r9
0xf7906278 <+744>: lwzx r29,r11,r29
0xf790627c <+748>: lwzx r10,r12,r10
0xf7906280 <+752>: or r7,r7,r6
0xf7906284 <+756>: slwi r28,r28,2
0xf7906288 <+760>: lbz r6,43(r1)
0xf790628c <+764>: lwzx r28,r3,r28
0xf7906290 <+768>: rlwinm r9,r9,0,16,23
0xf7906294 <+772>: clrlwi r0,r0,24
0xf7906298 <+776>: rlwinm r29,r29,0,8,15
0xf790629c <+780>: slwi r31,r31,2
0xf79062a0 <+784>: clrrwi r10,r10,24
0xf79062a4 <+788>: slwi r6,r6,2
0xf79062a8 <+792>: lwzx r31,r5,r31
0xf79062ac <+796>: lwzx r6,r5,r6
0xf79062b0 <+800>: or r8,r8,r9
0xf79062b4 <+804>: or r10,r10,r29
0xf79062b8 <+808>: lbz r9,32(r1)
0xf79062bc <+812>: lbz r29,37(r1)
0xf79062c0 <+816>: or r7,r7,r0
0xf79062c4 <+820>: lbz r0,42(r1)
0xf79062c8 <+824>: rlwinm r28,r28,0,16,23
0xf79062cc <+828>: clrlwi r31,r31,24
0xf79062d0 <+832>: clrlwi r6,r6,24
0xf79062d4 <+836>: or r10,r10,r28
0xf79062d8 <+840>: slwi r29,r29,2
0xf79062dc <+844>: lwz r28,4(r24)
0xf79062e0 <+848>: slwi r0,r0,2
0xf79062e4 <+852>: slwi r9,r9,2
0xf79062e8 <+856>: lwzx r11,r11,r29
0xf79062ec <+860>: lwz r29,8(r24)
0xf79062f0 <+864>: lwzx r9,r12,r9
0xf79062f4 <+868>: or r8,r8,r31
0xf79062f8 <+872>: or r10,r10,r6
0xf79062fc <+876>: lwz r31,12(r24)
0xf7906300 <+880>: lwzx r3,r3,r0
0xf7906304 <+884>: lbz r6,47(r1)
0xf7906308 <+888>: rlwinm r11,r11,0,8,15
0xf790630c <+892>: xor r7,r7,r28
0xf7906310 <+896>: clrrwi r9,r9,24
0xf7906314 <+900>: xor r10,r10,r31
0xf7906318 <+904>: lwz r0,0(r24)
0xf790631c <+908>: slwi r6,r6,2
0xf7906320 <+912>: or r9,r9,r11
0xf7906324 <+916>: lwzx r6,r5,r6
0xf7906328 <+920>: rlwinm r3,r3,0,16,23
0xf790632c <+924>: stw r10,12(r22)
0xf7906330 <+928>: or r9,r9,r3
0xf7906334 <+932>: xor r8,r8,r29
0xf7906338 <+936>: clrlwi r10,r6,24
0xf790633c <+940>: stw r7,4(r22)
0xf7906340 <+944>: or r9,r9,r10
0xf7906344 <+948>: stw r8,8(r22)
0xf7906348 <+952>: xor r9,r9,r0
0xf790634c <+956>: stw r9,0(r22)
0xf7906350 <+960>: bne 0xf79063d0 <rijndael_encryptBlock128+1088>
0xf7906354 <+964>: lwz r10,92(r1)
0xf7906358 <+968>: lwz r9,-28680(r2)
0xf790635c <+972>: xor. r10,r10,r9
0xf7906360 <+976>: li r9,0
0xf7906364 <+980>: bne 0xf7906414 <rijndael_encryptBlock128+1156>
0xf7906368 <+984>: lwz r0,164(r1)
0xf790636c <+988>: lwz r22,120(r1)
0xf7906370 <+992>: lwz r23,124(r1)
0xf7906374 <+996>: lwz r24,128(r1)
0xf7906378 <+1000>: lwz r28,144(r1)
0xf790637c <+1004>: lwz r29,148(r1)
0xf7906380 <+1008>: mtlr r0
0xf7906384 <+1012>: lwz r30,152(r1)
0xf7906388 <+1016>: lwz r31,156(r1)
0xf790638c <+1020>: addi r1,r1,160
0xf7906390 <+1024>: blr
0xf7906394 <+1028>: nop
0xf7906398 <+1032>: nop
0xf790639c <+1036>: ori r2,r2,0
0xf79063a0 <+1040>: lwz r6,0(r5)
0xf79063a4 <+1044>: lwz r7,4(r5)
0xf79063a8 <+1048>: addi r9,r1,60
0xf79063ac <+1052>: lwz r8,8(r5)
0xf79063b0 <+1056>: lwz r10,12(r5)
0xf79063b4 <+1060>: mr r5,r9
0xf79063b8 <+1064>: stw r6,60(r1)
0xf79063bc <+1068>: stw r7,64(r1)
0xf79063c0 <+1072>: stw r8,68(r1)
0xf79063c4 <+1076>: stw r10,72(r1)
0xf79063c8 <+1080>: b 0xf7905fdc <rijndael_encryptBlock128+76>
0xf79063cc <+1084>: ori r2,r2,0
0xf79063d0 <+1088>: lwz r7,76(r1)
0xf79063d4 <+1092>: lwz r8,80(r1)
0xf79063d8 <+1096>: lwz r10,84(r1)
0xf79063dc <+1100>: lwz r9,88(r1)
0xf79063e0 <+1104>: stw r7,0(r4)
0xf79063e4 <+1108>: stw r8,4(r4)
0xf79063e8 <+1112>: stw r10,8(r4)
0xf79063ec <+1116>: stw r9,12(r4)
0xf79063f0 <+1120>: b 0xf7906354 <rijndael_encryptBlock128+964>
0xf79063f4 <+1124>: nop
0xf79063f8 <+1128>: nop
0xf79063fc <+1132>: ori r2,r2,0
0xf7906400 <+1136>: lwz r3,-32768(r30)
0xf7906404 <+1140>: lwz r5,-32764(r30)
0xf7906408 <+1144>: lwz r12,-32760(r30)
0xf790640c <+1148>: lwz r11,-32756(r30)
0xf7906410 <+1152>: b 0xf79061f0 <rijndael_encryptBlock128+608>
0xf7906414 <+1156>: stw r16,96(r1)
0xf7906418 <+1160>: stw r17,100(r1)
0xf790641c <+1164>: stw r18,104(r1)
0xf7906420 <+1168>: stw r19,108(r1)
0xf7906424 <+1172>: stw r20,112(r1)
0xf7906428 <+1176>: stw r21,116(r1)
0xf790642c <+1180>: stw r25,132(r1)
0xf7906430 <+1184>: stw r26,136(r1)
0xf7906434 <+1188>: stw r27,140(r1)
0xf7906438 <+1192>: bl 0xf7979940 <__stack_chk_fail_local>
End of assembler dump.
(gdb)