1 1.1 christos #include <machine/asm.h> 2 1.1 christos .text 3 1.1 christos .globl CAST_encrypt 4 1.1 christos .type CAST_encrypt,@function 5 1.1 christos .align 16 6 1.1 christos CAST_encrypt: 7 1.1 christos .L_CAST_encrypt_begin: 8 1.1 christos 9 1.1 christos pushl %ebp 10 1.1 christos pushl %ebx 11 1.1 christos movl 12(%esp),%ebx 12 1.1 christos movl 16(%esp),%ebp 13 1.1 christos pushl %esi 14 1.1 christos pushl %edi 15 1.1 christos 16 1.1 christos movl (%ebx),%edi 17 1.1 christos movl 4(%ebx),%esi 18 1.1 christos 19 1.1 christos movl 128(%ebp),%eax 20 1.1 christos pushl %eax 21 1.1 christos xorl %eax,%eax 22 1.1 christos 23 1.1 christos movl (%ebp),%edx 24 1.1 christos movl 4(%ebp),%ecx 25 1.1 christos addl %esi,%edx 26 1.1 christos roll %cl,%edx 27 1.1 christos xorl %ecx,%ecx 28 1.1.1.2 christos movl $255,%ebx 29 1.1 christos movb %dh,%cl 30 1.1.1.2 christos andl %edx,%ebx 31 1.1 christos shrl $16,%edx 32 1.1 christos xorl %eax,%eax 33 1.1 christos movb %dh,%al 34 1.1 christos andl $255,%edx 35 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 36 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 37 1.1 christos xorl %ebx,%ecx 38 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 39 1.1 christos subl %ebx,%ecx 40 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 41 1.1 christos addl %ebx,%ecx 42 1.1 christos xorl %ecx,%edi 43 1.1 christos 44 1.1 christos movl 8(%ebp),%edx 45 1.1 christos movl 12(%ebp),%ecx 46 1.1 christos xorl %edi,%edx 47 1.1 christos roll %cl,%edx 48 1.1 christos xorl %ecx,%ecx 49 1.1.1.2 christos movl $255,%ebx 50 1.1 christos movb %dh,%cl 51 1.1.1.2 christos andl %edx,%ebx 52 1.1 christos shrl $16,%edx 53 1.1 christos xorl %eax,%eax 54 1.1 christos movb %dh,%al 55 1.1 christos andl $255,%edx 56 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 57 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 58 1.1 christos subl %ebx,%ecx 59 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 60 1.1 christos addl %ebx,%ecx 61 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 62 1.1 christos xorl %ebx,%ecx 63 1.1 christos xorl %ecx,%esi 64 1.1 christos 65 1.1 christos movl 16(%ebp),%edx 66 1.1 christos movl 20(%ebp),%ecx 67 1.1 christos subl %esi,%edx 68 1.1 christos roll %cl,%edx 69 1.1 christos xorl %ecx,%ecx 70 1.1.1.2 christos movl $255,%ebx 71 1.1 christos movb %dh,%cl 72 1.1.1.2 christos andl %edx,%ebx 73 1.1 christos shrl $16,%edx 74 1.1 christos xorl %eax,%eax 75 1.1 christos movb %dh,%al 76 1.1 christos andl $255,%edx 77 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 78 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 79 1.1 christos addl %ebx,%ecx 80 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 81 1.1 christos xorl %ebx,%ecx 82 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 83 1.1 christos subl %ebx,%ecx 84 1.1 christos xorl %ecx,%edi 85 1.1 christos 86 1.1 christos movl 24(%ebp),%edx 87 1.1 christos movl 28(%ebp),%ecx 88 1.1 christos addl %edi,%edx 89 1.1 christos roll %cl,%edx 90 1.1 christos xorl %ecx,%ecx 91 1.1.1.2 christos movl $255,%ebx 92 1.1 christos movb %dh,%cl 93 1.1.1.2 christos andl %edx,%ebx 94 1.1 christos shrl $16,%edx 95 1.1 christos xorl %eax,%eax 96 1.1 christos movb %dh,%al 97 1.1 christos andl $255,%edx 98 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 99 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 100 1.1 christos xorl %ebx,%ecx 101 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 102 1.1 christos subl %ebx,%ecx 103 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 104 1.1 christos addl %ebx,%ecx 105 1.1 christos xorl %ecx,%esi 106 1.1 christos 107 1.1 christos movl 32(%ebp),%edx 108 1.1 christos movl 36(%ebp),%ecx 109 1.1 christos xorl %esi,%edx 110 1.1 christos roll %cl,%edx 111 1.1 christos xorl %ecx,%ecx 112 1.1.1.2 christos movl $255,%ebx 113 1.1 christos movb %dh,%cl 114 1.1.1.2 christos andl %edx,%ebx 115 1.1 christos shrl $16,%edx 116 1.1 christos xorl %eax,%eax 117 1.1 christos movb %dh,%al 118 1.1 christos andl $255,%edx 119 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 120 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 121 1.1 christos subl %ebx,%ecx 122 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 123 1.1 christos addl %ebx,%ecx 124 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 125 1.1 christos xorl %ebx,%ecx 126 1.1 christos xorl %ecx,%edi 127 1.1 christos 128 1.1 christos movl 40(%ebp),%edx 129 1.1 christos movl 44(%ebp),%ecx 130 1.1 christos subl %edi,%edx 131 1.1 christos roll %cl,%edx 132 1.1 christos xorl %ecx,%ecx 133 1.1.1.2 christos movl $255,%ebx 134 1.1 christos movb %dh,%cl 135 1.1.1.2 christos andl %edx,%ebx 136 1.1 christos shrl $16,%edx 137 1.1 christos xorl %eax,%eax 138 1.1 christos movb %dh,%al 139 1.1 christos andl $255,%edx 140 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 141 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 142 1.1 christos addl %ebx,%ecx 143 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 144 1.1 christos xorl %ebx,%ecx 145 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 146 1.1 christos subl %ebx,%ecx 147 1.1 christos xorl %ecx,%esi 148 1.1 christos 149 1.1 christos movl 48(%ebp),%edx 150 1.1 christos movl 52(%ebp),%ecx 151 1.1 christos addl %esi,%edx 152 1.1 christos roll %cl,%edx 153 1.1 christos xorl %ecx,%ecx 154 1.1.1.2 christos movl $255,%ebx 155 1.1 christos movb %dh,%cl 156 1.1.1.2 christos andl %edx,%ebx 157 1.1 christos shrl $16,%edx 158 1.1 christos xorl %eax,%eax 159 1.1 christos movb %dh,%al 160 1.1 christos andl $255,%edx 161 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 162 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 163 1.1 christos xorl %ebx,%ecx 164 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 165 1.1 christos subl %ebx,%ecx 166 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 167 1.1 christos addl %ebx,%ecx 168 1.1 christos xorl %ecx,%edi 169 1.1 christos 170 1.1 christos movl 56(%ebp),%edx 171 1.1 christos movl 60(%ebp),%ecx 172 1.1 christos xorl %edi,%edx 173 1.1 christos roll %cl,%edx 174 1.1 christos xorl %ecx,%ecx 175 1.1.1.2 christos movl $255,%ebx 176 1.1 christos movb %dh,%cl 177 1.1.1.2 christos andl %edx,%ebx 178 1.1 christos shrl $16,%edx 179 1.1 christos xorl %eax,%eax 180 1.1 christos movb %dh,%al 181 1.1 christos andl $255,%edx 182 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 183 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 184 1.1 christos subl %ebx,%ecx 185 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 186 1.1 christos addl %ebx,%ecx 187 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 188 1.1 christos xorl %ebx,%ecx 189 1.1 christos xorl %ecx,%esi 190 1.1 christos 191 1.1 christos movl 64(%ebp),%edx 192 1.1 christos movl 68(%ebp),%ecx 193 1.1 christos subl %esi,%edx 194 1.1 christos roll %cl,%edx 195 1.1 christos xorl %ecx,%ecx 196 1.1.1.2 christos movl $255,%ebx 197 1.1 christos movb %dh,%cl 198 1.1.1.2 christos andl %edx,%ebx 199 1.1 christos shrl $16,%edx 200 1.1 christos xorl %eax,%eax 201 1.1 christos movb %dh,%al 202 1.1 christos andl $255,%edx 203 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 204 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 205 1.1 christos addl %ebx,%ecx 206 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 207 1.1 christos xorl %ebx,%ecx 208 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 209 1.1 christos subl %ebx,%ecx 210 1.1 christos xorl %ecx,%edi 211 1.1 christos 212 1.1 christos movl 72(%ebp),%edx 213 1.1 christos movl 76(%ebp),%ecx 214 1.1 christos addl %edi,%edx 215 1.1 christos roll %cl,%edx 216 1.1 christos xorl %ecx,%ecx 217 1.1.1.2 christos movl $255,%ebx 218 1.1 christos movb %dh,%cl 219 1.1.1.2 christos andl %edx,%ebx 220 1.1 christos shrl $16,%edx 221 1.1 christos xorl %eax,%eax 222 1.1 christos movb %dh,%al 223 1.1 christos andl $255,%edx 224 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 225 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 226 1.1 christos xorl %ebx,%ecx 227 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 228 1.1 christos subl %ebx,%ecx 229 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 230 1.1 christos addl %ebx,%ecx 231 1.1 christos xorl %ecx,%esi 232 1.1 christos 233 1.1 christos movl 80(%ebp),%edx 234 1.1 christos movl 84(%ebp),%ecx 235 1.1 christos xorl %esi,%edx 236 1.1 christos roll %cl,%edx 237 1.1 christos xorl %ecx,%ecx 238 1.1.1.2 christos movl $255,%ebx 239 1.1 christos movb %dh,%cl 240 1.1.1.2 christos andl %edx,%ebx 241 1.1 christos shrl $16,%edx 242 1.1 christos xorl %eax,%eax 243 1.1 christos movb %dh,%al 244 1.1 christos andl $255,%edx 245 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 246 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 247 1.1 christos subl %ebx,%ecx 248 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 249 1.1 christos addl %ebx,%ecx 250 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 251 1.1 christos xorl %ebx,%ecx 252 1.1 christos xorl %ecx,%edi 253 1.1 christos 254 1.1 christos movl 88(%ebp),%edx 255 1.1 christos movl 92(%ebp),%ecx 256 1.1 christos subl %edi,%edx 257 1.1 christos roll %cl,%edx 258 1.1 christos xorl %ecx,%ecx 259 1.1.1.2 christos movl $255,%ebx 260 1.1 christos movb %dh,%cl 261 1.1.1.2 christos andl %edx,%ebx 262 1.1 christos shrl $16,%edx 263 1.1 christos xorl %eax,%eax 264 1.1 christos movb %dh,%al 265 1.1 christos andl $255,%edx 266 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 267 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 268 1.1 christos addl %ebx,%ecx 269 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 270 1.1 christos xorl %ebx,%ecx 271 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 272 1.1 christos subl %ebx,%ecx 273 1.1 christos xorl %ecx,%esi 274 1.1 christos 275 1.1 christos popl %edx 276 1.1 christos orl %edx,%edx 277 1.1 christos jnz .L000cast_enc_done 278 1.1 christos 279 1.1 christos movl 96(%ebp),%edx 280 1.1 christos movl 100(%ebp),%ecx 281 1.1 christos addl %esi,%edx 282 1.1 christos roll %cl,%edx 283 1.1 christos xorl %ecx,%ecx 284 1.1.1.2 christos movl $255,%ebx 285 1.1 christos movb %dh,%cl 286 1.1.1.2 christos andl %edx,%ebx 287 1.1 christos shrl $16,%edx 288 1.1 christos xorl %eax,%eax 289 1.1 christos movb %dh,%al 290 1.1 christos andl $255,%edx 291 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 292 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 293 1.1 christos xorl %ebx,%ecx 294 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 295 1.1 christos subl %ebx,%ecx 296 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 297 1.1 christos addl %ebx,%ecx 298 1.1 christos xorl %ecx,%edi 299 1.1 christos 300 1.1 christos movl 104(%ebp),%edx 301 1.1 christos movl 108(%ebp),%ecx 302 1.1 christos xorl %edi,%edx 303 1.1 christos roll %cl,%edx 304 1.1 christos xorl %ecx,%ecx 305 1.1.1.2 christos movl $255,%ebx 306 1.1 christos movb %dh,%cl 307 1.1.1.2 christos andl %edx,%ebx 308 1.1 christos shrl $16,%edx 309 1.1 christos xorl %eax,%eax 310 1.1 christos movb %dh,%al 311 1.1 christos andl $255,%edx 312 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 313 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 314 1.1 christos subl %ebx,%ecx 315 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 316 1.1 christos addl %ebx,%ecx 317 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 318 1.1 christos xorl %ebx,%ecx 319 1.1 christos xorl %ecx,%esi 320 1.1 christos 321 1.1 christos movl 112(%ebp),%edx 322 1.1 christos movl 116(%ebp),%ecx 323 1.1 christos subl %esi,%edx 324 1.1 christos roll %cl,%edx 325 1.1 christos xorl %ecx,%ecx 326 1.1.1.2 christos movl $255,%ebx 327 1.1 christos movb %dh,%cl 328 1.1.1.2 christos andl %edx,%ebx 329 1.1 christos shrl $16,%edx 330 1.1 christos xorl %eax,%eax 331 1.1 christos movb %dh,%al 332 1.1 christos andl $255,%edx 333 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 334 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 335 1.1 christos addl %ebx,%ecx 336 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 337 1.1 christos xorl %ebx,%ecx 338 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 339 1.1 christos subl %ebx,%ecx 340 1.1 christos xorl %ecx,%edi 341 1.1 christos 342 1.1 christos movl 120(%ebp),%edx 343 1.1 christos movl 124(%ebp),%ecx 344 1.1 christos addl %edi,%edx 345 1.1 christos roll %cl,%edx 346 1.1 christos xorl %ecx,%ecx 347 1.1.1.2 christos movl $255,%ebx 348 1.1 christos movb %dh,%cl 349 1.1.1.2 christos andl %edx,%ebx 350 1.1 christos shrl $16,%edx 351 1.1 christos xorl %eax,%eax 352 1.1 christos movb %dh,%al 353 1.1 christos andl $255,%edx 354 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 355 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 356 1.1 christos xorl %ebx,%ecx 357 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 358 1.1 christos subl %ebx,%ecx 359 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 360 1.1 christos addl %ebx,%ecx 361 1.1 christos xorl %ecx,%esi 362 1.1 christos .L000cast_enc_done: 363 1.1 christos nop 364 1.1 christos movl 20(%esp),%eax 365 1.1 christos movl %edi,4(%eax) 366 1.1 christos movl %esi,(%eax) 367 1.1 christos popl %edi 368 1.1 christos popl %esi 369 1.1 christos popl %ebx 370 1.1 christos popl %ebp 371 1.1 christos ret 372 1.1 christos .size CAST_encrypt,.-.L_CAST_encrypt_begin 373 1.1 christos .globl CAST_decrypt 374 1.1 christos .type CAST_decrypt,@function 375 1.1 christos .align 16 376 1.1 christos CAST_decrypt: 377 1.1 christos .L_CAST_decrypt_begin: 378 1.1 christos 379 1.1 christos pushl %ebp 380 1.1 christos pushl %ebx 381 1.1 christos movl 12(%esp),%ebx 382 1.1 christos movl 16(%esp),%ebp 383 1.1 christos pushl %esi 384 1.1 christos pushl %edi 385 1.1 christos 386 1.1 christos movl (%ebx),%edi 387 1.1 christos movl 4(%ebx),%esi 388 1.1 christos 389 1.1 christos movl 128(%ebp),%eax 390 1.1 christos orl %eax,%eax 391 1.1 christos jnz .L001cast_dec_skip 392 1.1 christos xorl %eax,%eax 393 1.1 christos 394 1.1 christos movl 120(%ebp),%edx 395 1.1 christos movl 124(%ebp),%ecx 396 1.1 christos addl %esi,%edx 397 1.1 christos roll %cl,%edx 398 1.1 christos xorl %ecx,%ecx 399 1.1.1.2 christos movl $255,%ebx 400 1.1 christos movb %dh,%cl 401 1.1.1.2 christos andl %edx,%ebx 402 1.1 christos shrl $16,%edx 403 1.1 christos xorl %eax,%eax 404 1.1 christos movb %dh,%al 405 1.1 christos andl $255,%edx 406 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 407 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 408 1.1 christos xorl %ebx,%ecx 409 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 410 1.1 christos subl %ebx,%ecx 411 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 412 1.1 christos addl %ebx,%ecx 413 1.1 christos xorl %ecx,%edi 414 1.1 christos 415 1.1 christos movl 112(%ebp),%edx 416 1.1 christos movl 116(%ebp),%ecx 417 1.1 christos subl %edi,%edx 418 1.1 christos roll %cl,%edx 419 1.1 christos xorl %ecx,%ecx 420 1.1.1.2 christos movl $255,%ebx 421 1.1 christos movb %dh,%cl 422 1.1.1.2 christos andl %edx,%ebx 423 1.1 christos shrl $16,%edx 424 1.1 christos xorl %eax,%eax 425 1.1 christos movb %dh,%al 426 1.1 christos andl $255,%edx 427 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 428 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 429 1.1 christos addl %ebx,%ecx 430 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 431 1.1 christos xorl %ebx,%ecx 432 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 433 1.1 christos subl %ebx,%ecx 434 1.1 christos xorl %ecx,%esi 435 1.1 christos 436 1.1 christos movl 104(%ebp),%edx 437 1.1 christos movl 108(%ebp),%ecx 438 1.1 christos xorl %esi,%edx 439 1.1 christos roll %cl,%edx 440 1.1 christos xorl %ecx,%ecx 441 1.1.1.2 christos movl $255,%ebx 442 1.1 christos movb %dh,%cl 443 1.1.1.2 christos andl %edx,%ebx 444 1.1 christos shrl $16,%edx 445 1.1 christos xorl %eax,%eax 446 1.1 christos movb %dh,%al 447 1.1 christos andl $255,%edx 448 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 449 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 450 1.1 christos subl %ebx,%ecx 451 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 452 1.1 christos addl %ebx,%ecx 453 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 454 1.1 christos xorl %ebx,%ecx 455 1.1 christos xorl %ecx,%edi 456 1.1 christos 457 1.1 christos movl 96(%ebp),%edx 458 1.1 christos movl 100(%ebp),%ecx 459 1.1 christos addl %edi,%edx 460 1.1 christos roll %cl,%edx 461 1.1 christos xorl %ecx,%ecx 462 1.1.1.2 christos movl $255,%ebx 463 1.1 christos movb %dh,%cl 464 1.1.1.2 christos andl %edx,%ebx 465 1.1 christos shrl $16,%edx 466 1.1 christos xorl %eax,%eax 467 1.1 christos movb %dh,%al 468 1.1 christos andl $255,%edx 469 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 470 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 471 1.1 christos xorl %ebx,%ecx 472 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 473 1.1 christos subl %ebx,%ecx 474 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 475 1.1 christos addl %ebx,%ecx 476 1.1 christos xorl %ecx,%esi 477 1.1 christos .L001cast_dec_skip: 478 1.1 christos 479 1.1 christos movl 88(%ebp),%edx 480 1.1 christos movl 92(%ebp),%ecx 481 1.1 christos subl %esi,%edx 482 1.1 christos roll %cl,%edx 483 1.1 christos xorl %ecx,%ecx 484 1.1.1.2 christos movl $255,%ebx 485 1.1 christos movb %dh,%cl 486 1.1.1.2 christos andl %edx,%ebx 487 1.1 christos shrl $16,%edx 488 1.1 christos xorl %eax,%eax 489 1.1 christos movb %dh,%al 490 1.1 christos andl $255,%edx 491 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 492 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 493 1.1 christos addl %ebx,%ecx 494 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 495 1.1 christos xorl %ebx,%ecx 496 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 497 1.1 christos subl %ebx,%ecx 498 1.1 christos xorl %ecx,%edi 499 1.1 christos 500 1.1 christos movl 80(%ebp),%edx 501 1.1 christos movl 84(%ebp),%ecx 502 1.1 christos xorl %edi,%edx 503 1.1 christos roll %cl,%edx 504 1.1 christos xorl %ecx,%ecx 505 1.1.1.2 christos movl $255,%ebx 506 1.1 christos movb %dh,%cl 507 1.1.1.2 christos andl %edx,%ebx 508 1.1 christos shrl $16,%edx 509 1.1 christos xorl %eax,%eax 510 1.1 christos movb %dh,%al 511 1.1 christos andl $255,%edx 512 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 513 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 514 1.1 christos subl %ebx,%ecx 515 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 516 1.1 christos addl %ebx,%ecx 517 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 518 1.1 christos xorl %ebx,%ecx 519 1.1 christos xorl %ecx,%esi 520 1.1 christos 521 1.1 christos movl 72(%ebp),%edx 522 1.1 christos movl 76(%ebp),%ecx 523 1.1 christos addl %esi,%edx 524 1.1 christos roll %cl,%edx 525 1.1 christos xorl %ecx,%ecx 526 1.1.1.2 christos movl $255,%ebx 527 1.1 christos movb %dh,%cl 528 1.1.1.2 christos andl %edx,%ebx 529 1.1 christos shrl $16,%edx 530 1.1 christos xorl %eax,%eax 531 1.1 christos movb %dh,%al 532 1.1 christos andl $255,%edx 533 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 534 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 535 1.1 christos xorl %ebx,%ecx 536 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 537 1.1 christos subl %ebx,%ecx 538 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 539 1.1 christos addl %ebx,%ecx 540 1.1 christos xorl %ecx,%edi 541 1.1 christos 542 1.1 christos movl 64(%ebp),%edx 543 1.1 christos movl 68(%ebp),%ecx 544 1.1 christos subl %edi,%edx 545 1.1 christos roll %cl,%edx 546 1.1 christos xorl %ecx,%ecx 547 1.1.1.2 christos movl $255,%ebx 548 1.1 christos movb %dh,%cl 549 1.1.1.2 christos andl %edx,%ebx 550 1.1 christos shrl $16,%edx 551 1.1 christos xorl %eax,%eax 552 1.1 christos movb %dh,%al 553 1.1 christos andl $255,%edx 554 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 555 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 556 1.1 christos addl %ebx,%ecx 557 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 558 1.1 christos xorl %ebx,%ecx 559 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 560 1.1 christos subl %ebx,%ecx 561 1.1 christos xorl %ecx,%esi 562 1.1 christos 563 1.1 christos movl 56(%ebp),%edx 564 1.1 christos movl 60(%ebp),%ecx 565 1.1 christos xorl %esi,%edx 566 1.1 christos roll %cl,%edx 567 1.1 christos xorl %ecx,%ecx 568 1.1.1.2 christos movl $255,%ebx 569 1.1 christos movb %dh,%cl 570 1.1.1.2 christos andl %edx,%ebx 571 1.1 christos shrl $16,%edx 572 1.1 christos xorl %eax,%eax 573 1.1 christos movb %dh,%al 574 1.1 christos andl $255,%edx 575 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 576 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 577 1.1 christos subl %ebx,%ecx 578 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 579 1.1 christos addl %ebx,%ecx 580 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 581 1.1 christos xorl %ebx,%ecx 582 1.1 christos xorl %ecx,%edi 583 1.1 christos 584 1.1 christos movl 48(%ebp),%edx 585 1.1 christos movl 52(%ebp),%ecx 586 1.1 christos addl %edi,%edx 587 1.1 christos roll %cl,%edx 588 1.1 christos xorl %ecx,%ecx 589 1.1.1.2 christos movl $255,%ebx 590 1.1 christos movb %dh,%cl 591 1.1.1.2 christos andl %edx,%ebx 592 1.1 christos shrl $16,%edx 593 1.1 christos xorl %eax,%eax 594 1.1 christos movb %dh,%al 595 1.1 christos andl $255,%edx 596 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 597 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 598 1.1 christos xorl %ebx,%ecx 599 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 600 1.1 christos subl %ebx,%ecx 601 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 602 1.1 christos addl %ebx,%ecx 603 1.1 christos xorl %ecx,%esi 604 1.1 christos 605 1.1 christos movl 40(%ebp),%edx 606 1.1 christos movl 44(%ebp),%ecx 607 1.1 christos subl %esi,%edx 608 1.1 christos roll %cl,%edx 609 1.1 christos xorl %ecx,%ecx 610 1.1.1.2 christos movl $255,%ebx 611 1.1 christos movb %dh,%cl 612 1.1.1.2 christos andl %edx,%ebx 613 1.1 christos shrl $16,%edx 614 1.1 christos xorl %eax,%eax 615 1.1 christos movb %dh,%al 616 1.1 christos andl $255,%edx 617 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 618 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 619 1.1 christos addl %ebx,%ecx 620 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 621 1.1 christos xorl %ebx,%ecx 622 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 623 1.1 christos subl %ebx,%ecx 624 1.1 christos xorl %ecx,%edi 625 1.1 christos 626 1.1 christos movl 32(%ebp),%edx 627 1.1 christos movl 36(%ebp),%ecx 628 1.1 christos xorl %edi,%edx 629 1.1 christos roll %cl,%edx 630 1.1 christos xorl %ecx,%ecx 631 1.1.1.2 christos movl $255,%ebx 632 1.1 christos movb %dh,%cl 633 1.1.1.2 christos andl %edx,%ebx 634 1.1 christos shrl $16,%edx 635 1.1 christos xorl %eax,%eax 636 1.1 christos movb %dh,%al 637 1.1 christos andl $255,%edx 638 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 639 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 640 1.1 christos subl %ebx,%ecx 641 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 642 1.1 christos addl %ebx,%ecx 643 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 644 1.1 christos xorl %ebx,%ecx 645 1.1 christos xorl %ecx,%esi 646 1.1 christos 647 1.1 christos movl 24(%ebp),%edx 648 1.1 christos movl 28(%ebp),%ecx 649 1.1 christos addl %esi,%edx 650 1.1 christos roll %cl,%edx 651 1.1 christos xorl %ecx,%ecx 652 1.1.1.2 christos movl $255,%ebx 653 1.1 christos movb %dh,%cl 654 1.1.1.2 christos andl %edx,%ebx 655 1.1 christos shrl $16,%edx 656 1.1 christos xorl %eax,%eax 657 1.1 christos movb %dh,%al 658 1.1 christos andl $255,%edx 659 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 660 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 661 1.1 christos xorl %ebx,%ecx 662 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 663 1.1 christos subl %ebx,%ecx 664 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 665 1.1 christos addl %ebx,%ecx 666 1.1 christos xorl %ecx,%edi 667 1.1 christos 668 1.1 christos movl 16(%ebp),%edx 669 1.1 christos movl 20(%ebp),%ecx 670 1.1 christos subl %edi,%edx 671 1.1 christos roll %cl,%edx 672 1.1 christos xorl %ecx,%ecx 673 1.1.1.2 christos movl $255,%ebx 674 1.1 christos movb %dh,%cl 675 1.1.1.2 christos andl %edx,%ebx 676 1.1 christos shrl $16,%edx 677 1.1 christos xorl %eax,%eax 678 1.1 christos movb %dh,%al 679 1.1 christos andl $255,%edx 680 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 681 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 682 1.1 christos addl %ebx,%ecx 683 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 684 1.1 christos xorl %ebx,%ecx 685 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 686 1.1 christos subl %ebx,%ecx 687 1.1 christos xorl %ecx,%esi 688 1.1 christos 689 1.1 christos movl 8(%ebp),%edx 690 1.1 christos movl 12(%ebp),%ecx 691 1.1 christos xorl %esi,%edx 692 1.1 christos roll %cl,%edx 693 1.1 christos xorl %ecx,%ecx 694 1.1.1.2 christos movl $255,%ebx 695 1.1 christos movb %dh,%cl 696 1.1.1.2 christos andl %edx,%ebx 697 1.1 christos shrl $16,%edx 698 1.1 christos xorl %eax,%eax 699 1.1 christos movb %dh,%al 700 1.1 christos andl $255,%edx 701 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 702 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 703 1.1 christos subl %ebx,%ecx 704 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 705 1.1 christos addl %ebx,%ecx 706 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 707 1.1 christos xorl %ebx,%ecx 708 1.1 christos xorl %ecx,%edi 709 1.1 christos 710 1.1 christos movl (%ebp),%edx 711 1.1 christos movl 4(%ebp),%ecx 712 1.1 christos addl %edi,%edx 713 1.1 christos roll %cl,%edx 714 1.1 christos xorl %ecx,%ecx 715 1.1.1.2 christos movl $255,%ebx 716 1.1 christos movb %dh,%cl 717 1.1.1.2 christos andl %edx,%ebx 718 1.1 christos shrl $16,%edx 719 1.1 christos xorl %eax,%eax 720 1.1 christos movb %dh,%al 721 1.1 christos andl $255,%edx 722 1.1 christos movl CAST_S_table0(,%ecx,4),%ecx 723 1.1 christos movl CAST_S_table1(,%ebx,4),%ebx 724 1.1 christos xorl %ebx,%ecx 725 1.1 christos movl CAST_S_table2(,%eax,4),%ebx 726 1.1 christos subl %ebx,%ecx 727 1.1 christos movl CAST_S_table3(,%edx,4),%ebx 728 1.1 christos addl %ebx,%ecx 729 1.1 christos xorl %ecx,%esi 730 1.1 christos nop 731 1.1 christos movl 20(%esp),%eax 732 1.1 christos movl %edi,4(%eax) 733 1.1 christos movl %esi,(%eax) 734 1.1 christos popl %edi 735 1.1 christos popl %esi 736 1.1 christos popl %ebx 737 1.1 christos popl %ebp 738 1.1 christos ret 739 1.1 christos .size CAST_decrypt,.-.L_CAST_decrypt_begin 740 1.1 christos .globl CAST_cbc_encrypt 741 1.1 christos .type CAST_cbc_encrypt,@function 742 1.1 christos .align 16 743 1.1 christos CAST_cbc_encrypt: 744 1.1 christos .L_CAST_cbc_encrypt_begin: 745 1.1 christos 746 1.1 christos pushl %ebp 747 1.1 christos pushl %ebx 748 1.1 christos pushl %esi 749 1.1 christos pushl %edi 750 1.1 christos movl 28(%esp),%ebp 751 1.1 christos 752 1.1 christos movl 36(%esp),%ebx 753 1.1 christos movl (%ebx),%esi 754 1.1 christos movl 4(%ebx),%edi 755 1.1 christos pushl %edi 756 1.1 christos pushl %esi 757 1.1 christos pushl %edi 758 1.1 christos pushl %esi 759 1.1 christos movl %esp,%ebx 760 1.1 christos movl 36(%esp),%esi 761 1.1 christos movl 40(%esp),%edi 762 1.1 christos 763 1.1 christos movl 56(%esp),%ecx 764 1.1 christos 765 1.1 christos movl 48(%esp),%eax 766 1.1 christos pushl %eax 767 1.1 christos pushl %ebx 768 1.1 christos cmpl $0,%ecx 769 1.1 christos jz .L002decrypt 770 1.1 christos andl $4294967288,%ebp 771 1.1 christos movl 8(%esp),%eax 772 1.1 christos movl 12(%esp),%ebx 773 1.1 christos jz .L003encrypt_finish 774 1.1 christos .L004encrypt_loop: 775 1.1 christos movl (%esi),%ecx 776 1.1 christos movl 4(%esi),%edx 777 1.1 christos xorl %ecx,%eax 778 1.1 christos xorl %edx,%ebx 779 1.1 christos bswap %eax 780 1.1 christos bswap %ebx 781 1.1 christos movl %eax,8(%esp) 782 1.1 christos movl %ebx,12(%esp) 783 1.1 christos call .L_CAST_encrypt_begin 784 1.1 christos movl 8(%esp),%eax 785 1.1 christos movl 12(%esp),%ebx 786 1.1 christos bswap %eax 787 1.1 christos bswap %ebx 788 1.1 christos movl %eax,(%edi) 789 1.1 christos movl %ebx,4(%edi) 790 1.1 christos addl $8,%esi 791 1.1 christos addl $8,%edi 792 1.1 christos subl $8,%ebp 793 1.1 christos jnz .L004encrypt_loop 794 1.1 christos .L003encrypt_finish: 795 1.1 christos movl 52(%esp),%ebp 796 1.1 christos andl $7,%ebp 797 1.1 christos jz .L005finish 798 1.1 christos call .L006PIC_point 799 1.1 christos .L006PIC_point: 800 1.1 christos popl %edx 801 1.1 christos leal .L007cbc_enc_jmp_table-.L006PIC_point(%edx),%ecx 802 1.1 christos movl (%ecx,%ebp,4),%ebp 803 1.1 christos addl %edx,%ebp 804 1.1 christos xorl %ecx,%ecx 805 1.1 christos xorl %edx,%edx 806 1.1 christos jmp *%ebp 807 1.1 christos .L008ej7: 808 1.1 christos movb 6(%esi),%dh 809 1.1 christos shll $8,%edx 810 1.1 christos .L009ej6: 811 1.1 christos movb 5(%esi),%dh 812 1.1 christos .L010ej5: 813 1.1 christos movb 4(%esi),%dl 814 1.1 christos .L011ej4: 815 1.1 christos movl (%esi),%ecx 816 1.1 christos jmp .L012ejend 817 1.1 christos .L013ej3: 818 1.1 christos movb 2(%esi),%ch 819 1.1 christos shll $8,%ecx 820 1.1 christos .L014ej2: 821 1.1 christos movb 1(%esi),%ch 822 1.1 christos .L015ej1: 823 1.1 christos movb (%esi),%cl 824 1.1 christos .L012ejend: 825 1.1 christos xorl %ecx,%eax 826 1.1 christos xorl %edx,%ebx 827 1.1 christos bswap %eax 828 1.1 christos bswap %ebx 829 1.1 christos movl %eax,8(%esp) 830 1.1 christos movl %ebx,12(%esp) 831 1.1 christos call .L_CAST_encrypt_begin 832 1.1 christos movl 8(%esp),%eax 833 1.1 christos movl 12(%esp),%ebx 834 1.1 christos bswap %eax 835 1.1 christos bswap %ebx 836 1.1 christos movl %eax,(%edi) 837 1.1 christos movl %ebx,4(%edi) 838 1.1 christos jmp .L005finish 839 1.1 christos .L002decrypt: 840 1.1 christos andl $4294967288,%ebp 841 1.1 christos movl 16(%esp),%eax 842 1.1 christos movl 20(%esp),%ebx 843 1.1 christos jz .L016decrypt_finish 844 1.1 christos .L017decrypt_loop: 845 1.1 christos movl (%esi),%eax 846 1.1 christos movl 4(%esi),%ebx 847 1.1 christos bswap %eax 848 1.1 christos bswap %ebx 849 1.1 christos movl %eax,8(%esp) 850 1.1 christos movl %ebx,12(%esp) 851 1.1 christos call .L_CAST_decrypt_begin 852 1.1 christos movl 8(%esp),%eax 853 1.1 christos movl 12(%esp),%ebx 854 1.1 christos bswap %eax 855 1.1 christos bswap %ebx 856 1.1 christos movl 16(%esp),%ecx 857 1.1 christos movl 20(%esp),%edx 858 1.1 christos xorl %eax,%ecx 859 1.1 christos xorl %ebx,%edx 860 1.1 christos movl (%esi),%eax 861 1.1 christos movl 4(%esi),%ebx 862 1.1 christos movl %ecx,(%edi) 863 1.1 christos movl %edx,4(%edi) 864 1.1 christos movl %eax,16(%esp) 865 1.1 christos movl %ebx,20(%esp) 866 1.1 christos addl $8,%esi 867 1.1 christos addl $8,%edi 868 1.1 christos subl $8,%ebp 869 1.1 christos jnz .L017decrypt_loop 870 1.1 christos .L016decrypt_finish: 871 1.1 christos movl 52(%esp),%ebp 872 1.1 christos andl $7,%ebp 873 1.1 christos jz .L005finish 874 1.1 christos movl (%esi),%eax 875 1.1 christos movl 4(%esi),%ebx 876 1.1 christos bswap %eax 877 1.1 christos bswap %ebx 878 1.1 christos movl %eax,8(%esp) 879 1.1 christos movl %ebx,12(%esp) 880 1.1 christos call .L_CAST_decrypt_begin 881 1.1 christos movl 8(%esp),%eax 882 1.1 christos movl 12(%esp),%ebx 883 1.1 christos bswap %eax 884 1.1 christos bswap %ebx 885 1.1 christos movl 16(%esp),%ecx 886 1.1 christos movl 20(%esp),%edx 887 1.1 christos xorl %eax,%ecx 888 1.1 christos xorl %ebx,%edx 889 1.1 christos movl (%esi),%eax 890 1.1 christos movl 4(%esi),%ebx 891 1.1 christos .L018dj7: 892 1.1 christos rorl $16,%edx 893 1.1 christos movb %dl,6(%edi) 894 1.1 christos shrl $16,%edx 895 1.1 christos .L019dj6: 896 1.1 christos movb %dh,5(%edi) 897 1.1 christos .L020dj5: 898 1.1 christos movb %dl,4(%edi) 899 1.1 christos .L021dj4: 900 1.1 christos movl %ecx,(%edi) 901 1.1 christos jmp .L022djend 902 1.1 christos .L023dj3: 903 1.1 christos rorl $16,%ecx 904 1.1 christos movb %cl,2(%edi) 905 1.1 christos shll $16,%ecx 906 1.1 christos .L024dj2: 907 1.1 christos movb %ch,1(%esi) 908 1.1 christos .L025dj1: 909 1.1 christos movb %cl,(%esi) 910 1.1 christos .L022djend: 911 1.1 christos jmp .L005finish 912 1.1 christos .L005finish: 913 1.1 christos movl 60(%esp),%ecx 914 1.1 christos addl $24,%esp 915 1.1 christos movl %eax,(%ecx) 916 1.1 christos movl %ebx,4(%ecx) 917 1.1 christos popl %edi 918 1.1 christos popl %esi 919 1.1 christos popl %ebx 920 1.1 christos popl %ebp 921 1.1 christos ret 922 1.1 christos .align 64 923 1.1 christos .L007cbc_enc_jmp_table: 924 1.1 christos .long 0 925 1.1 christos .long .L015ej1-.L006PIC_point 926 1.1 christos .long .L014ej2-.L006PIC_point 927 1.1 christos .long .L013ej3-.L006PIC_point 928 1.1 christos .long .L011ej4-.L006PIC_point 929 1.1 christos .long .L010ej5-.L006PIC_point 930 1.1 christos .long .L009ej6-.L006PIC_point 931 1.1 christos .long .L008ej7-.L006PIC_point 932 1.1 christos .align 64 933 1.1 christos .size CAST_cbc_encrypt,.-.L_CAST_cbc_encrypt_begin 934