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