1.text 2 3.globl RC4 4.type RC4,@function 5.align 64 6RC4: 7 stm %r6,%r11,6*4(%r15) 8 llgfr %r3,%r3 9 llgc %r6,0(%r2) 10 llgc %r10,1(%r2) 11 la %r6,1(%r6) 12 nill %r6,0xff 13 srlg %r1,%r3,3 14 ltgr %r1,%r1 15 llgc %r8,2(%r6,%r2) 16 jz .Lshort 17 j .Loop8 18 19.align 64 20.Loop8: 21 la %r10,0(%r10,%r8) # 0 22 nill %r10,255 23 la %r7,1(%r6) 24 nill %r7,255 25 llgc %r11,2(%r10,%r2) 26 stc %r8,2(%r10,%r2) 27 llgc %r9,2(%r7,%r2) 28 stc %r11,2(%r6,%r2) 29 cr %r7,%r10 30 jne .Lcmov0 31 la %r9,0(%r8) 32.Lcmov0: 33 la %r11,0(%r11,%r8) 34 nill %r11,255 35 la %r10,0(%r10,%r9) # 1 36 nill %r10,255 37 la %r6,1(%r7) 38 nill %r6,255 39 llgc %r0,2(%r11,%r2) 40 llgc %r11,2(%r10,%r2) 41 stc %r9,2(%r10,%r2) 42 llgc %r8,2(%r6,%r2) 43 stc %r11,2(%r7,%r2) 44 cr %r6,%r10 45 jne .Lcmov1 46 la %r8,0(%r9) 47.Lcmov1: 48 la %r11,0(%r11,%r9) 49 nill %r11,255 50 la %r10,0(%r10,%r8) # 2 51 nill %r10,255 52 la %r7,1(%r6) 53 nill %r7,255 54 sllg %r0,%r0,8 55 ic %r0,2(%r11,%r2) 56 llgc %r11,2(%r10,%r2) 57 stc %r8,2(%r10,%r2) 58 llgc %r9,2(%r7,%r2) 59 stc %r11,2(%r6,%r2) 60 cr %r7,%r10 61 jne .Lcmov2 62 la %r9,0(%r8) 63.Lcmov2: 64 la %r11,0(%r11,%r8) 65 nill %r11,255 66 la %r10,0(%r10,%r9) # 3 67 nill %r10,255 68 la %r6,1(%r7) 69 nill %r6,255 70 sllg %r0,%r0,8 71 ic %r0,2(%r11,%r2) 72 llgc %r11,2(%r10,%r2) 73 stc %r9,2(%r10,%r2) 74 llgc %r8,2(%r6,%r2) 75 stc %r11,2(%r7,%r2) 76 cr %r6,%r10 77 jne .Lcmov3 78 la %r8,0(%r9) 79.Lcmov3: 80 la %r11,0(%r11,%r9) 81 nill %r11,255 82 la %r10,0(%r10,%r8) # 4 83 nill %r10,255 84 la %r7,1(%r6) 85 nill %r7,255 86 sllg %r0,%r0,8 87 ic %r0,2(%r11,%r2) 88 llgc %r11,2(%r10,%r2) 89 stc %r8,2(%r10,%r2) 90 llgc %r9,2(%r7,%r2) 91 stc %r11,2(%r6,%r2) 92 cr %r7,%r10 93 jne .Lcmov4 94 la %r9,0(%r8) 95.Lcmov4: 96 la %r11,0(%r11,%r8) 97 nill %r11,255 98 la %r10,0(%r10,%r9) # 5 99 nill %r10,255 100 la %r6,1(%r7) 101 nill %r6,255 102 sllg %r0,%r0,8 103 ic %r0,2(%r11,%r2) 104 llgc %r11,2(%r10,%r2) 105 stc %r9,2(%r10,%r2) 106 llgc %r8,2(%r6,%r2) 107 stc %r11,2(%r7,%r2) 108 cr %r6,%r10 109 jne .Lcmov5 110 la %r8,0(%r9) 111.Lcmov5: 112 la %r11,0(%r11,%r9) 113 nill %r11,255 114 la %r10,0(%r10,%r8) # 6 115 nill %r10,255 116 la %r7,1(%r6) 117 nill %r7,255 118 sllg %r0,%r0,8 119 ic %r0,2(%r11,%r2) 120 llgc %r11,2(%r10,%r2) 121 stc %r8,2(%r10,%r2) 122 llgc %r9,2(%r7,%r2) 123 stc %r11,2(%r6,%r2) 124 cr %r7,%r10 125 jne .Lcmov6 126 la %r9,0(%r8) 127.Lcmov6: 128 la %r11,0(%r11,%r8) 129 nill %r11,255 130 la %r10,0(%r10,%r9) # 7 131 nill %r10,255 132 la %r6,1(%r7) 133 nill %r6,255 134 sllg %r0,%r0,8 135 ic %r0,2(%r11,%r2) 136 llgc %r11,2(%r10,%r2) 137 stc %r9,2(%r10,%r2) 138 llgc %r8,2(%r6,%r2) 139 stc %r11,2(%r7,%r2) 140 cr %r6,%r10 141 jne .Lcmov7 142 la %r8,0(%r9) 143.Lcmov7: 144 la %r11,0(%r11,%r9) 145 nill %r11,255 146 lg %r9,0(%r4) 147 sllg %r0,%r0,8 148 la %r4,8(%r4) 149 ic %r0,2(%r11,%r2) 150 xgr %r0,%r9 151 stg %r0,0(%r5) 152 la %r5,8(%r5) 153 brctg %r1,.Loop8 154 155.Lshort: 156 lghi %r0,7 157 ngr %r3,%r0 158 jz .Lexit 159 j .Loop1 160 161.align 16 162.Loop1: 163 la %r10,0(%r10,%r8) 164 nill %r10,255 165 llgc %r11,2(%r10,%r2) 166 stc %r8,2(%r10,%r2) 167 stc %r11,2(%r6,%r2) 168 ar %r11,%r8 169 ahi %r6,1 170 nill %r11,255 171 nill %r6,255 172 llgc %r0,0(%r4) 173 la %r4,1(%r4) 174 llgc %r11,2(%r11,%r2) 175 llgc %r8,2(%r6,%r2) 176 xr %r0,%r11 177 stc %r0,0(%r5) 178 la %r5,1(%r5) 179 brct %r3,.Loop1 180 181.Lexit: 182 ahi %r6,-1 183 stc %r6,0(%r2) 184 stc %r10,1(%r2) 185 lm %r6,%r11,6*4(%r15) 186 br %r14 187.size RC4,.-RC4 188.string "RC4 for s390x, CRYPTOGAMS by <appro@openssl.org>" 189 190.globl RC4_set_key 191.type RC4_set_key,@function 192.align 64 193RC4_set_key: 194 stm %r6,%r8,6*4(%r15) 195 lhi %r0,256 196 la %r1,0 197 sth %r1,0(%r2) 198.align 4 199.L1stloop: 200 stc %r1,2(%r1,%r2) 201 la %r1,1(%r1) 202 brct %r0,.L1stloop 203 204 lghi %r7,-256 205 lr %r0,%r3 206 la %r8,0 207 la %r1,0 208.align 16 209.L2ndloop: 210 llgc %r5,2+256(%r7,%r2) 211 llgc %r6,0(%r8,%r4) 212 la %r1,0(%r1,%r5) 213 la %r7,1(%r7) 214 la %r1,0(%r1,%r6) 215 nill %r1,255 216 la %r8,1(%r8) 217 tml %r7,255 218 llgc %r6,2(%r1,%r2) 219 stc %r6,2+256-1(%r7,%r2) 220 stc %r5,2(%r1,%r2) 221 jz .Ldone 222 brct %r0,.L2ndloop 223 lr %r0,%r3 224 la %r8,0 225 j .L2ndloop 226.Ldone: 227 lm %r6,%r8,6*4(%r15) 228 br %r14 229.size RC4_set_key,.-RC4_set_key 230 231.globl RC4_options 232.type RC4_options,@function 233.align 16 234RC4_options: 235 larl %r2,.Loptions 236 br %r14 237.size RC4_options,.-RC4_options 238.section .rodata 239.Loptions: 240.align 8 241.string "rc4(8x,char)" 242