1 .text 2 .globl _DES_SPtrans 3 .align 4 4 __x86_DES_encrypt: 5 %ifdef __CET__ 6 7 .byte 243,15,30,251 8 %endif 9 10 pushl %ecx 11 # Round 0 12 movl (%ecx),%eax 13 xorl %ebx,%ebx 14 movl 4(%ecx),%edx 15 xorl %esi,%eax 16 xorl %ecx,%ecx 17 xorl %esi,%edx 18 andl $0xfcfcfcfc,%eax 19 andl $0xcfcfcfcf,%edx 20 movb %al,%bl 21 movb %ah,%cl 22 rorl $4,%edx 23 xorl (%ebp,%ebx,1),%edi 24 movb %dl,%bl 25 xorl 0x200(%ebp,%ecx,1),%edi 26 movb %dh,%cl 27 shrl $16,%eax 28 xorl 0x100(%ebp,%ebx,1),%edi 29 movb %ah,%bl 30 shrl $16,%edx 31 xorl 0x300(%ebp,%ecx,1),%edi 32 movb %dh,%cl 33 andl $0xff,%eax 34 andl $0xff,%edx 35 xorl 0x600(%ebp,%ebx,1),%edi 36 xorl 0x700(%ebp,%ecx,1),%edi 37 movl (%esp),%ecx 38 xorl 0x400(%ebp,%eax,1),%edi 39 xorl 0x500(%ebp,%edx,1),%edi 40 # Round 1 41 movl 8(%ecx),%eax 42 xorl %ebx,%ebx 43 movl 12(%ecx),%edx 44 xorl %edi,%eax 45 xorl %ecx,%ecx 46 xorl %edi,%edx 47 andl $0xfcfcfcfc,%eax 48 andl $0xcfcfcfcf,%edx 49 movb %al,%bl 50 movb %ah,%cl 51 rorl $4,%edx 52 xorl (%ebp,%ebx,1),%esi 53 movb %dl,%bl 54 xorl 0x200(%ebp,%ecx,1),%esi 55 movb %dh,%cl 56 shrl $16,%eax 57 xorl 0x100(%ebp,%ebx,1),%esi 58 movb %ah,%bl 59 shrl $16,%edx 60 xorl 0x300(%ebp,%ecx,1),%esi 61 movb %dh,%cl 62 andl $0xff,%eax 63 andl $0xff,%edx 64 xorl 0x600(%ebp,%ebx,1),%esi 65 xorl 0x700(%ebp,%ecx,1),%esi 66 movl (%esp),%ecx 67 xorl 0x400(%ebp,%eax,1),%esi 68 xorl 0x500(%ebp,%edx,1),%esi 69 # Round 2 70 movl 16(%ecx),%eax 71 xorl %ebx,%ebx 72 movl 20(%ecx),%edx 73 xorl %esi,%eax 74 xorl %ecx,%ecx 75 xorl %esi,%edx 76 andl $0xfcfcfcfc,%eax 77 andl $0xcfcfcfcf,%edx 78 movb %al,%bl 79 movb %ah,%cl 80 rorl $4,%edx 81 xorl (%ebp,%ebx,1),%edi 82 movb %dl,%bl 83 xorl 0x200(%ebp,%ecx,1),%edi 84 movb %dh,%cl 85 shrl $16,%eax 86 xorl 0x100(%ebp,%ebx,1),%edi 87 movb %ah,%bl 88 shrl $16,%edx 89 xorl 0x300(%ebp,%ecx,1),%edi 90 movb %dh,%cl 91 andl $0xff,%eax 92 andl $0xff,%edx 93 xorl 0x600(%ebp,%ebx,1),%edi 94 xorl 0x700(%ebp,%ecx,1),%edi 95 movl (%esp),%ecx 96 xorl 0x400(%ebp,%eax,1),%edi 97 xorl 0x500(%ebp,%edx,1),%edi 98 # Round 3 99 movl 24(%ecx),%eax 100 xorl %ebx,%ebx 101 movl 28(%ecx),%edx 102 xorl %edi,%eax 103 xorl %ecx,%ecx 104 xorl %edi,%edx 105 andl $0xfcfcfcfc,%eax 106 andl $0xcfcfcfcf,%edx 107 movb %al,%bl 108 movb %ah,%cl 109 rorl $4,%edx 110 xorl (%ebp,%ebx,1),%esi 111 movb %dl,%bl 112 xorl 0x200(%ebp,%ecx,1),%esi 113 movb %dh,%cl 114 shrl $16,%eax 115 xorl 0x100(%ebp,%ebx,1),%esi 116 movb %ah,%bl 117 shrl $16,%edx 118 xorl 0x300(%ebp,%ecx,1),%esi 119 movb %dh,%cl 120 andl $0xff,%eax 121 andl $0xff,%edx 122 xorl 0x600(%ebp,%ebx,1),%esi 123 xorl 0x700(%ebp,%ecx,1),%esi 124 movl (%esp),%ecx 125 xorl 0x400(%ebp,%eax,1),%esi 126 xorl 0x500(%ebp,%edx,1),%esi 127 # Round 4 128 movl 32(%ecx),%eax 129 xorl %ebx,%ebx 130 movl 36(%ecx),%edx 131 xorl %esi,%eax 132 xorl %ecx,%ecx 133 xorl %esi,%edx 134 andl $0xfcfcfcfc,%eax 135 andl $0xcfcfcfcf,%edx 136 movb %al,%bl 137 movb %ah,%cl 138 rorl $4,%edx 139 xorl (%ebp,%ebx,1),%edi 140 movb %dl,%bl 141 xorl 0x200(%ebp,%ecx,1),%edi 142 movb %dh,%cl 143 shrl $16,%eax 144 xorl 0x100(%ebp,%ebx,1),%edi 145 movb %ah,%bl 146 shrl $16,%edx 147 xorl 0x300(%ebp,%ecx,1),%edi 148 movb %dh,%cl 149 andl $0xff,%eax 150 andl $0xff,%edx 151 xorl 0x600(%ebp,%ebx,1),%edi 152 xorl 0x700(%ebp,%ecx,1),%edi 153 movl (%esp),%ecx 154 xorl 0x400(%ebp,%eax,1),%edi 155 xorl 0x500(%ebp,%edx,1),%edi 156 # Round 5 157 movl 40(%ecx),%eax 158 xorl %ebx,%ebx 159 movl 44(%ecx),%edx 160 xorl %edi,%eax 161 xorl %ecx,%ecx 162 xorl %edi,%edx 163 andl $0xfcfcfcfc,%eax 164 andl $0xcfcfcfcf,%edx 165 movb %al,%bl 166 movb %ah,%cl 167 rorl $4,%edx 168 xorl (%ebp,%ebx,1),%esi 169 movb %dl,%bl 170 xorl 0x200(%ebp,%ecx,1),%esi 171 movb %dh,%cl 172 shrl $16,%eax 173 xorl 0x100(%ebp,%ebx,1),%esi 174 movb %ah,%bl 175 shrl $16,%edx 176 xorl 0x300(%ebp,%ecx,1),%esi 177 movb %dh,%cl 178 andl $0xff,%eax 179 andl $0xff,%edx 180 xorl 0x600(%ebp,%ebx,1),%esi 181 xorl 0x700(%ebp,%ecx,1),%esi 182 movl (%esp),%ecx 183 xorl 0x400(%ebp,%eax,1),%esi 184 xorl 0x500(%ebp,%edx,1),%esi 185 # Round 6 186 movl 48(%ecx),%eax 187 xorl %ebx,%ebx 188 movl 52(%ecx),%edx 189 xorl %esi,%eax 190 xorl %ecx,%ecx 191 xorl %esi,%edx 192 andl $0xfcfcfcfc,%eax 193 andl $0xcfcfcfcf,%edx 194 movb %al,%bl 195 movb %ah,%cl 196 rorl $4,%edx 197 xorl (%ebp,%ebx,1),%edi 198 movb %dl,%bl 199 xorl 0x200(%ebp,%ecx,1),%edi 200 movb %dh,%cl 201 shrl $16,%eax 202 xorl 0x100(%ebp,%ebx,1),%edi 203 movb %ah,%bl 204 shrl $16,%edx 205 xorl 0x300(%ebp,%ecx,1),%edi 206 movb %dh,%cl 207 andl $0xff,%eax 208 andl $0xff,%edx 209 xorl 0x600(%ebp,%ebx,1),%edi 210 xorl 0x700(%ebp,%ecx,1),%edi 211 movl (%esp),%ecx 212 xorl 0x400(%ebp,%eax,1),%edi 213 xorl 0x500(%ebp,%edx,1),%edi 214 # Round 7 215 movl 56(%ecx),%eax 216 xorl %ebx,%ebx 217 movl 60(%ecx),%edx 218 xorl %edi,%eax 219 xorl %ecx,%ecx 220 xorl %edi,%edx 221 andl $0xfcfcfcfc,%eax 222 andl $0xcfcfcfcf,%edx 223 movb %al,%bl 224 movb %ah,%cl 225 rorl $4,%edx 226 xorl (%ebp,%ebx,1),%esi 227 movb %dl,%bl 228 xorl 0x200(%ebp,%ecx,1),%esi 229 movb %dh,%cl 230 shrl $16,%eax 231 xorl 0x100(%ebp,%ebx,1),%esi 232 movb %ah,%bl 233 shrl $16,%edx 234 xorl 0x300(%ebp,%ecx,1),%esi 235 movb %dh,%cl 236 andl $0xff,%eax 237 andl $0xff,%edx 238 xorl 0x600(%ebp,%ebx,1),%esi 239 xorl 0x700(%ebp,%ecx,1),%esi 240 movl (%esp),%ecx 241 xorl 0x400(%ebp,%eax,1),%esi 242 xorl 0x500(%ebp,%edx,1),%esi 243 # Round 8 244 movl 64(%ecx),%eax 245 xorl %ebx,%ebx 246 movl 68(%ecx),%edx 247 xorl %esi,%eax 248 xorl %ecx,%ecx 249 xorl %esi,%edx 250 andl $0xfcfcfcfc,%eax 251 andl $0xcfcfcfcf,%edx 252 movb %al,%bl 253 movb %ah,%cl 254 rorl $4,%edx 255 xorl (%ebp,%ebx,1),%edi 256 movb %dl,%bl 257 xorl 0x200(%ebp,%ecx,1),%edi 258 movb %dh,%cl 259 shrl $16,%eax 260 xorl 0x100(%ebp,%ebx,1),%edi 261 movb %ah,%bl 262 shrl $16,%edx 263 xorl 0x300(%ebp,%ecx,1),%edi 264 movb %dh,%cl 265 andl $0xff,%eax 266 andl $0xff,%edx 267 xorl 0x600(%ebp,%ebx,1),%edi 268 xorl 0x700(%ebp,%ecx,1),%edi 269 movl (%esp),%ecx 270 xorl 0x400(%ebp,%eax,1),%edi 271 xorl 0x500(%ebp,%edx,1),%edi 272 # Round 9 273 movl 72(%ecx),%eax 274 xorl %ebx,%ebx 275 movl 76(%ecx),%edx 276 xorl %edi,%eax 277 xorl %ecx,%ecx 278 xorl %edi,%edx 279 andl $0xfcfcfcfc,%eax 280 andl $0xcfcfcfcf,%edx 281 movb %al,%bl 282 movb %ah,%cl 283 rorl $4,%edx 284 xorl (%ebp,%ebx,1),%esi 285 movb %dl,%bl 286 xorl 0x200(%ebp,%ecx,1),%esi 287 movb %dh,%cl 288 shrl $16,%eax 289 xorl 0x100(%ebp,%ebx,1),%esi 290 movb %ah,%bl 291 shrl $16,%edx 292 xorl 0x300(%ebp,%ecx,1),%esi 293 movb %dh,%cl 294 andl $0xff,%eax 295 andl $0xff,%edx 296 xorl 0x600(%ebp,%ebx,1),%esi 297 xorl 0x700(%ebp,%ecx,1),%esi 298 movl (%esp),%ecx 299 xorl 0x400(%ebp,%eax,1),%esi 300 xorl 0x500(%ebp,%edx,1),%esi 301 # Round 10 302 movl 80(%ecx),%eax 303 xorl %ebx,%ebx 304 movl 84(%ecx),%edx 305 xorl %esi,%eax 306 xorl %ecx,%ecx 307 xorl %esi,%edx 308 andl $0xfcfcfcfc,%eax 309 andl $0xcfcfcfcf,%edx 310 movb %al,%bl 311 movb %ah,%cl 312 rorl $4,%edx 313 xorl (%ebp,%ebx,1),%edi 314 movb %dl,%bl 315 xorl 0x200(%ebp,%ecx,1),%edi 316 movb %dh,%cl 317 shrl $16,%eax 318 xorl 0x100(%ebp,%ebx,1),%edi 319 movb %ah,%bl 320 shrl $16,%edx 321 xorl 0x300(%ebp,%ecx,1),%edi 322 movb %dh,%cl 323 andl $0xff,%eax 324 andl $0xff,%edx 325 xorl 0x600(%ebp,%ebx,1),%edi 326 xorl 0x700(%ebp,%ecx,1),%edi 327 movl (%esp),%ecx 328 xorl 0x400(%ebp,%eax,1),%edi 329 xorl 0x500(%ebp,%edx,1),%edi 330 # Round 11 331 movl 88(%ecx),%eax 332 xorl %ebx,%ebx 333 movl 92(%ecx),%edx 334 xorl %edi,%eax 335 xorl %ecx,%ecx 336 xorl %edi,%edx 337 andl $0xfcfcfcfc,%eax 338 andl $0xcfcfcfcf,%edx 339 movb %al,%bl 340 movb %ah,%cl 341 rorl $4,%edx 342 xorl (%ebp,%ebx,1),%esi 343 movb %dl,%bl 344 xorl 0x200(%ebp,%ecx,1),%esi 345 movb %dh,%cl 346 shrl $16,%eax 347 xorl 0x100(%ebp,%ebx,1),%esi 348 movb %ah,%bl 349 shrl $16,%edx 350 xorl 0x300(%ebp,%ecx,1),%esi 351 movb %dh,%cl 352 andl $0xff,%eax 353 andl $0xff,%edx 354 xorl 0x600(%ebp,%ebx,1),%esi 355 xorl 0x700(%ebp,%ecx,1),%esi 356 movl (%esp),%ecx 357 xorl 0x400(%ebp,%eax,1),%esi 358 xorl 0x500(%ebp,%edx,1),%esi 359 # Round 12 360 movl 96(%ecx),%eax 361 xorl %ebx,%ebx 362 movl 100(%ecx),%edx 363 xorl %esi,%eax 364 xorl %ecx,%ecx 365 xorl %esi,%edx 366 andl $0xfcfcfcfc,%eax 367 andl $0xcfcfcfcf,%edx 368 movb %al,%bl 369 movb %ah,%cl 370 rorl $4,%edx 371 xorl (%ebp,%ebx,1),%edi 372 movb %dl,%bl 373 xorl 0x200(%ebp,%ecx,1),%edi 374 movb %dh,%cl 375 shrl $16,%eax 376 xorl 0x100(%ebp,%ebx,1),%edi 377 movb %ah,%bl 378 shrl $16,%edx 379 xorl 0x300(%ebp,%ecx,1),%edi 380 movb %dh,%cl 381 andl $0xff,%eax 382 andl $0xff,%edx 383 xorl 0x600(%ebp,%ebx,1),%edi 384 xorl 0x700(%ebp,%ecx,1),%edi 385 movl (%esp),%ecx 386 xorl 0x400(%ebp,%eax,1),%edi 387 xorl 0x500(%ebp,%edx,1),%edi 388 # Round 13 389 movl 104(%ecx),%eax 390 xorl %ebx,%ebx 391 movl 108(%ecx),%edx 392 xorl %edi,%eax 393 xorl %ecx,%ecx 394 xorl %edi,%edx 395 andl $0xfcfcfcfc,%eax 396 andl $0xcfcfcfcf,%edx 397 movb %al,%bl 398 movb %ah,%cl 399 rorl $4,%edx 400 xorl (%ebp,%ebx,1),%esi 401 movb %dl,%bl 402 xorl 0x200(%ebp,%ecx,1),%esi 403 movb %dh,%cl 404 shrl $16,%eax 405 xorl 0x100(%ebp,%ebx,1),%esi 406 movb %ah,%bl 407 shrl $16,%edx 408 xorl 0x300(%ebp,%ecx,1),%esi 409 movb %dh,%cl 410 andl $0xff,%eax 411 andl $0xff,%edx 412 xorl 0x600(%ebp,%ebx,1),%esi 413 xorl 0x700(%ebp,%ecx,1),%esi 414 movl (%esp),%ecx 415 xorl 0x400(%ebp,%eax,1),%esi 416 xorl 0x500(%ebp,%edx,1),%esi 417 # Round 14 418 movl 112(%ecx),%eax 419 xorl %ebx,%ebx 420 movl 116(%ecx),%edx 421 xorl %esi,%eax 422 xorl %ecx,%ecx 423 xorl %esi,%edx 424 andl $0xfcfcfcfc,%eax 425 andl $0xcfcfcfcf,%edx 426 movb %al,%bl 427 movb %ah,%cl 428 rorl $4,%edx 429 xorl (%ebp,%ebx,1),%edi 430 movb %dl,%bl 431 xorl 0x200(%ebp,%ecx,1),%edi 432 movb %dh,%cl 433 shrl $16,%eax 434 xorl 0x100(%ebp,%ebx,1),%edi 435 movb %ah,%bl 436 shrl $16,%edx 437 xorl 0x300(%ebp,%ecx,1),%edi 438 movb %dh,%cl 439 andl $0xff,%eax 440 andl $0xff,%edx 441 xorl 0x600(%ebp,%ebx,1),%edi 442 xorl 0x700(%ebp,%ecx,1),%edi 443 movl (%esp),%ecx 444 xorl 0x400(%ebp,%eax,1),%edi 445 xorl 0x500(%ebp,%edx,1),%edi 446 # Round 15 447 movl 120(%ecx),%eax 448 xorl %ebx,%ebx 449 movl 124(%ecx),%edx 450 xorl %edi,%eax 451 xorl %ecx,%ecx 452 xorl %edi,%edx 453 andl $0xfcfcfcfc,%eax 454 andl $0xcfcfcfcf,%edx 455 movb %al,%bl 456 movb %ah,%cl 457 rorl $4,%edx 458 xorl (%ebp,%ebx,1),%esi 459 movb %dl,%bl 460 xorl 0x200(%ebp,%ecx,1),%esi 461 movb %dh,%cl 462 shrl $16,%eax 463 xorl 0x100(%ebp,%ebx,1),%esi 464 movb %ah,%bl 465 shrl $16,%edx 466 xorl 0x300(%ebp,%ecx,1),%esi 467 movb %dh,%cl 468 andl $0xff,%eax 469 andl $0xff,%edx 470 xorl 0x600(%ebp,%ebx,1),%esi 471 xorl 0x700(%ebp,%ecx,1),%esi 472 movl (%esp),%ecx 473 xorl 0x400(%ebp,%eax,1),%esi 474 xorl 0x500(%ebp,%edx,1),%esi 475 addl $4,%esp 476 ret 477 .align 4 478 __x86_DES_decrypt: 479 %ifdef __CET__ 480 481 .byte 243,15,30,251 482 %endif 483 484 pushl %ecx 485 # Round 15 486 movl 120(%ecx),%eax 487 xorl %ebx,%ebx 488 movl 124(%ecx),%edx 489 xorl %esi,%eax 490 xorl %ecx,%ecx 491 xorl %esi,%edx 492 andl $0xfcfcfcfc,%eax 493 andl $0xcfcfcfcf,%edx 494 movb %al,%bl 495 movb %ah,%cl 496 rorl $4,%edx 497 xorl (%ebp,%ebx,1),%edi 498 movb %dl,%bl 499 xorl 0x200(%ebp,%ecx,1),%edi 500 movb %dh,%cl 501 shrl $16,%eax 502 xorl 0x100(%ebp,%ebx,1),%edi 503 movb %ah,%bl 504 shrl $16,%edx 505 xorl 0x300(%ebp,%ecx,1),%edi 506 movb %dh,%cl 507 andl $0xff,%eax 508 andl $0xff,%edx 509 xorl 0x600(%ebp,%ebx,1),%edi 510 xorl 0x700(%ebp,%ecx,1),%edi 511 movl (%esp),%ecx 512 xorl 0x400(%ebp,%eax,1),%edi 513 xorl 0x500(%ebp,%edx,1),%edi 514 # Round 14 515 movl 112(%ecx),%eax 516 xorl %ebx,%ebx 517 movl 116(%ecx),%edx 518 xorl %edi,%eax 519 xorl %ecx,%ecx 520 xorl %edi,%edx 521 andl $0xfcfcfcfc,%eax 522 andl $0xcfcfcfcf,%edx 523 movb %al,%bl 524 movb %ah,%cl 525 rorl $4,%edx 526 xorl (%ebp,%ebx,1),%esi 527 movb %dl,%bl 528 xorl 0x200(%ebp,%ecx,1),%esi 529 movb %dh,%cl 530 shrl $16,%eax 531 xorl 0x100(%ebp,%ebx,1),%esi 532 movb %ah,%bl 533 shrl $16,%edx 534 xorl 0x300(%ebp,%ecx,1),%esi 535 movb %dh,%cl 536 andl $0xff,%eax 537 andl $0xff,%edx 538 xorl 0x600(%ebp,%ebx,1),%esi 539 xorl 0x700(%ebp,%ecx,1),%esi 540 movl (%esp),%ecx 541 xorl 0x400(%ebp,%eax,1),%esi 542 xorl 0x500(%ebp,%edx,1),%esi 543 # Round 13 544 movl 104(%ecx),%eax 545 xorl %ebx,%ebx 546 movl 108(%ecx),%edx 547 xorl %esi,%eax 548 xorl %ecx,%ecx 549 xorl %esi,%edx 550 andl $0xfcfcfcfc,%eax 551 andl $0xcfcfcfcf,%edx 552 movb %al,%bl 553 movb %ah,%cl 554 rorl $4,%edx 555 xorl (%ebp,%ebx,1),%edi 556 movb %dl,%bl 557 xorl 0x200(%ebp,%ecx,1),%edi 558 movb %dh,%cl 559 shrl $16,%eax 560 xorl 0x100(%ebp,%ebx,1),%edi 561 movb %ah,%bl 562 shrl $16,%edx 563 xorl 0x300(%ebp,%ecx,1),%edi 564 movb %dh,%cl 565 andl $0xff,%eax 566 andl $0xff,%edx 567 xorl 0x600(%ebp,%ebx,1),%edi 568 xorl 0x700(%ebp,%ecx,1),%edi 569 movl (%esp),%ecx 570 xorl 0x400(%ebp,%eax,1),%edi 571 xorl 0x500(%ebp,%edx,1),%edi 572 # Round 12 573 movl 96(%ecx),%eax 574 xorl %ebx,%ebx 575 movl 100(%ecx),%edx 576 xorl %edi,%eax 577 xorl %ecx,%ecx 578 xorl %edi,%edx 579 andl $0xfcfcfcfc,%eax 580 andl $0xcfcfcfcf,%edx 581 movb %al,%bl 582 movb %ah,%cl 583 rorl $4,%edx 584 xorl (%ebp,%ebx,1),%esi 585 movb %dl,%bl 586 xorl 0x200(%ebp,%ecx,1),%esi 587 movb %dh,%cl 588 shrl $16,%eax 589 xorl 0x100(%ebp,%ebx,1),%esi 590 movb %ah,%bl 591 shrl $16,%edx 592 xorl 0x300(%ebp,%ecx,1),%esi 593 movb %dh,%cl 594 andl $0xff,%eax 595 andl $0xff,%edx 596 xorl 0x600(%ebp,%ebx,1),%esi 597 xorl 0x700(%ebp,%ecx,1),%esi 598 movl (%esp),%ecx 599 xorl 0x400(%ebp,%eax,1),%esi 600 xorl 0x500(%ebp,%edx,1),%esi 601 # Round 11 602 movl 88(%ecx),%eax 603 xorl %ebx,%ebx 604 movl 92(%ecx),%edx 605 xorl %esi,%eax 606 xorl %ecx,%ecx 607 xorl %esi,%edx 608 andl $0xfcfcfcfc,%eax 609 andl $0xcfcfcfcf,%edx 610 movb %al,%bl 611 movb %ah,%cl 612 rorl $4,%edx 613 xorl (%ebp,%ebx,1),%edi 614 movb %dl,%bl 615 xorl 0x200(%ebp,%ecx,1),%edi 616 movb %dh,%cl 617 shrl $16,%eax 618 xorl 0x100(%ebp,%ebx,1),%edi 619 movb %ah,%bl 620 shrl $16,%edx 621 xorl 0x300(%ebp,%ecx,1),%edi 622 movb %dh,%cl 623 andl $0xff,%eax 624 andl $0xff,%edx 625 xorl 0x600(%ebp,%ebx,1),%edi 626 xorl 0x700(%ebp,%ecx,1),%edi 627 movl (%esp),%ecx 628 xorl 0x400(%ebp,%eax,1),%edi 629 xorl 0x500(%ebp,%edx,1),%edi 630 # Round 10 631 movl 80(%ecx),%eax 632 xorl %ebx,%ebx 633 movl 84(%ecx),%edx 634 xorl %edi,%eax 635 xorl %ecx,%ecx 636 xorl %edi,%edx 637 andl $0xfcfcfcfc,%eax 638 andl $0xcfcfcfcf,%edx 639 movb %al,%bl 640 movb %ah,%cl 641 rorl $4,%edx 642 xorl (%ebp,%ebx,1),%esi 643 movb %dl,%bl 644 xorl 0x200(%ebp,%ecx,1),%esi 645 movb %dh,%cl 646 shrl $16,%eax 647 xorl 0x100(%ebp,%ebx,1),%esi 648 movb %ah,%bl 649 shrl $16,%edx 650 xorl 0x300(%ebp,%ecx,1),%esi 651 movb %dh,%cl 652 andl $0xff,%eax 653 andl $0xff,%edx 654 xorl 0x600(%ebp,%ebx,1),%esi 655 xorl 0x700(%ebp,%ecx,1),%esi 656 movl (%esp),%ecx 657 xorl 0x400(%ebp,%eax,1),%esi 658 xorl 0x500(%ebp,%edx,1),%esi 659 # Round 9 660 movl 72(%ecx),%eax 661 xorl %ebx,%ebx 662 movl 76(%ecx),%edx 663 xorl %esi,%eax 664 xorl %ecx,%ecx 665 xorl %esi,%edx 666 andl $0xfcfcfcfc,%eax 667 andl $0xcfcfcfcf,%edx 668 movb %al,%bl 669 movb %ah,%cl 670 rorl $4,%edx 671 xorl (%ebp,%ebx,1),%edi 672 movb %dl,%bl 673 xorl 0x200(%ebp,%ecx,1),%edi 674 movb %dh,%cl 675 shrl $16,%eax 676 xorl 0x100(%ebp,%ebx,1),%edi 677 movb %ah,%bl 678 shrl $16,%edx 679 xorl 0x300(%ebp,%ecx,1),%edi 680 movb %dh,%cl 681 andl $0xff,%eax 682 andl $0xff,%edx 683 xorl 0x600(%ebp,%ebx,1),%edi 684 xorl 0x700(%ebp,%ecx,1),%edi 685 movl (%esp),%ecx 686 xorl 0x400(%ebp,%eax,1),%edi 687 xorl 0x500(%ebp,%edx,1),%edi 688 # Round 8 689 movl 64(%ecx),%eax 690 xorl %ebx,%ebx 691 movl 68(%ecx),%edx 692 xorl %edi,%eax 693 xorl %ecx,%ecx 694 xorl %edi,%edx 695 andl $0xfcfcfcfc,%eax 696 andl $0xcfcfcfcf,%edx 697 movb %al,%bl 698 movb %ah,%cl 699 rorl $4,%edx 700 xorl (%ebp,%ebx,1),%esi 701 movb %dl,%bl 702 xorl 0x200(%ebp,%ecx,1),%esi 703 movb %dh,%cl 704 shrl $16,%eax 705 xorl 0x100(%ebp,%ebx,1),%esi 706 movb %ah,%bl 707 shrl $16,%edx 708 xorl 0x300(%ebp,%ecx,1),%esi 709 movb %dh,%cl 710 andl $0xff,%eax 711 andl $0xff,%edx 712 xorl 0x600(%ebp,%ebx,1),%esi 713 xorl 0x700(%ebp,%ecx,1),%esi 714 movl (%esp),%ecx 715 xorl 0x400(%ebp,%eax,1),%esi 716 xorl 0x500(%ebp,%edx,1),%esi 717 # Round 7 718 movl 56(%ecx),%eax 719 xorl %ebx,%ebx 720 movl 60(%ecx),%edx 721 xorl %esi,%eax 722 xorl %ecx,%ecx 723 xorl %esi,%edx 724 andl $0xfcfcfcfc,%eax 725 andl $0xcfcfcfcf,%edx 726 movb %al,%bl 727 movb %ah,%cl 728 rorl $4,%edx 729 xorl (%ebp,%ebx,1),%edi 730 movb %dl,%bl 731 xorl 0x200(%ebp,%ecx,1),%edi 732 movb %dh,%cl 733 shrl $16,%eax 734 xorl 0x100(%ebp,%ebx,1),%edi 735 movb %ah,%bl 736 shrl $16,%edx 737 xorl 0x300(%ebp,%ecx,1),%edi 738 movb %dh,%cl 739 andl $0xff,%eax 740 andl $0xff,%edx 741 xorl 0x600(%ebp,%ebx,1),%edi 742 xorl 0x700(%ebp,%ecx,1),%edi 743 movl (%esp),%ecx 744 xorl 0x400(%ebp,%eax,1),%edi 745 xorl 0x500(%ebp,%edx,1),%edi 746 # Round 6 747 movl 48(%ecx),%eax 748 xorl %ebx,%ebx 749 movl 52(%ecx),%edx 750 xorl %edi,%eax 751 xorl %ecx,%ecx 752 xorl %edi,%edx 753 andl $0xfcfcfcfc,%eax 754 andl $0xcfcfcfcf,%edx 755 movb %al,%bl 756 movb %ah,%cl 757 rorl $4,%edx 758 xorl (%ebp,%ebx,1),%esi 759 movb %dl,%bl 760 xorl 0x200(%ebp,%ecx,1),%esi 761 movb %dh,%cl 762 shrl $16,%eax 763 xorl 0x100(%ebp,%ebx,1),%esi 764 movb %ah,%bl 765 shrl $16,%edx 766 xorl 0x300(%ebp,%ecx,1),%esi 767 movb %dh,%cl 768 andl $0xff,%eax 769 andl $0xff,%edx 770 xorl 0x600(%ebp,%ebx,1),%esi 771 xorl 0x700(%ebp,%ecx,1),%esi 772 movl (%esp),%ecx 773 xorl 0x400(%ebp,%eax,1),%esi 774 xorl 0x500(%ebp,%edx,1),%esi 775 # Round 5 776 movl 40(%ecx),%eax 777 xorl %ebx,%ebx 778 movl 44(%ecx),%edx 779 xorl %esi,%eax 780 xorl %ecx,%ecx 781 xorl %esi,%edx 782 andl $0xfcfcfcfc,%eax 783 andl $0xcfcfcfcf,%edx 784 movb %al,%bl 785 movb %ah,%cl 786 rorl $4,%edx 787 xorl (%ebp,%ebx,1),%edi 788 movb %dl,%bl 789 xorl 0x200(%ebp,%ecx,1),%edi 790 movb %dh,%cl 791 shrl $16,%eax 792 xorl 0x100(%ebp,%ebx,1),%edi 793 movb %ah,%bl 794 shrl $16,%edx 795 xorl 0x300(%ebp,%ecx,1),%edi 796 movb %dh,%cl 797 andl $0xff,%eax 798 andl $0xff,%edx 799 xorl 0x600(%ebp,%ebx,1),%edi 800 xorl 0x700(%ebp,%ecx,1),%edi 801 movl (%esp),%ecx 802 xorl 0x400(%ebp,%eax,1),%edi 803 xorl 0x500(%ebp,%edx,1),%edi 804 # Round 4 805 movl 32(%ecx),%eax 806 xorl %ebx,%ebx 807 movl 36(%ecx),%edx 808 xorl %edi,%eax 809 xorl %ecx,%ecx 810 xorl %edi,%edx 811 andl $0xfcfcfcfc,%eax 812 andl $0xcfcfcfcf,%edx 813 movb %al,%bl 814 movb %ah,%cl 815 rorl $4,%edx 816 xorl (%ebp,%ebx,1),%esi 817 movb %dl,%bl 818 xorl 0x200(%ebp,%ecx,1),%esi 819 movb %dh,%cl 820 shrl $16,%eax 821 xorl 0x100(%ebp,%ebx,1),%esi 822 movb %ah,%bl 823 shrl $16,%edx 824 xorl 0x300(%ebp,%ecx,1),%esi 825 movb %dh,%cl 826 andl $0xff,%eax 827 andl $0xff,%edx 828 xorl 0x600(%ebp,%ebx,1),%esi 829 xorl 0x700(%ebp,%ecx,1),%esi 830 movl (%esp),%ecx 831 xorl 0x400(%ebp,%eax,1),%esi 832 xorl 0x500(%ebp,%edx,1),%esi 833 # Round 3 834 movl 24(%ecx),%eax 835 xorl %ebx,%ebx 836 movl 28(%ecx),%edx 837 xorl %esi,%eax 838 xorl %ecx,%ecx 839 xorl %esi,%edx 840 andl $0xfcfcfcfc,%eax 841 andl $0xcfcfcfcf,%edx 842 movb %al,%bl 843 movb %ah,%cl 844 rorl $4,%edx 845 xorl (%ebp,%ebx,1),%edi 846 movb %dl,%bl 847 xorl 0x200(%ebp,%ecx,1),%edi 848 movb %dh,%cl 849 shrl $16,%eax 850 xorl 0x100(%ebp,%ebx,1),%edi 851 movb %ah,%bl 852 shrl $16,%edx 853 xorl 0x300(%ebp,%ecx,1),%edi 854 movb %dh,%cl 855 andl $0xff,%eax 856 andl $0xff,%edx 857 xorl 0x600(%ebp,%ebx,1),%edi 858 xorl 0x700(%ebp,%ecx,1),%edi 859 movl (%esp),%ecx 860 xorl 0x400(%ebp,%eax,1),%edi 861 xorl 0x500(%ebp,%edx,1),%edi 862 # Round 2 863 movl 16(%ecx),%eax 864 xorl %ebx,%ebx 865 movl 20(%ecx),%edx 866 xorl %edi,%eax 867 xorl %ecx,%ecx 868 xorl %edi,%edx 869 andl $0xfcfcfcfc,%eax 870 andl $0xcfcfcfcf,%edx 871 movb %al,%bl 872 movb %ah,%cl 873 rorl $4,%edx 874 xorl (%ebp,%ebx,1),%esi 875 movb %dl,%bl 876 xorl 0x200(%ebp,%ecx,1),%esi 877 movb %dh,%cl 878 shrl $16,%eax 879 xorl 0x100(%ebp,%ebx,1),%esi 880 movb %ah,%bl 881 shrl $16,%edx 882 xorl 0x300(%ebp,%ecx,1),%esi 883 movb %dh,%cl 884 andl $0xff,%eax 885 andl $0xff,%edx 886 xorl 0x600(%ebp,%ebx,1),%esi 887 xorl 0x700(%ebp,%ecx,1),%esi 888 movl (%esp),%ecx 889 xorl 0x400(%ebp,%eax,1),%esi 890 xorl 0x500(%ebp,%edx,1),%esi 891 # Round 1 892 movl 8(%ecx),%eax 893 xorl %ebx,%ebx 894 movl 12(%ecx),%edx 895 xorl %esi,%eax 896 xorl %ecx,%ecx 897 xorl %esi,%edx 898 andl $0xfcfcfcfc,%eax 899 andl $0xcfcfcfcf,%edx 900 movb %al,%bl 901 movb %ah,%cl 902 rorl $4,%edx 903 xorl (%ebp,%ebx,1),%edi 904 movb %dl,%bl 905 xorl 0x200(%ebp,%ecx,1),%edi 906 movb %dh,%cl 907 shrl $16,%eax 908 xorl 0x100(%ebp,%ebx,1),%edi 909 movb %ah,%bl 910 shrl $16,%edx 911 xorl 0x300(%ebp,%ecx,1),%edi 912 movb %dh,%cl 913 andl $0xff,%eax 914 andl $0xff,%edx 915 xorl 0x600(%ebp,%ebx,1),%edi 916 xorl 0x700(%ebp,%ecx,1),%edi 917 movl (%esp),%ecx 918 xorl 0x400(%ebp,%eax,1),%edi 919 xorl 0x500(%ebp,%edx,1),%edi 920 # Round 0 921 movl (%ecx),%eax 922 xorl %ebx,%ebx 923 movl 4(%ecx),%edx 924 xorl %edi,%eax 925 xorl %ecx,%ecx 926 xorl %edi,%edx 927 andl $0xfcfcfcfc,%eax 928 andl $0xcfcfcfcf,%edx 929 movb %al,%bl 930 movb %ah,%cl 931 rorl $4,%edx 932 xorl (%ebp,%ebx,1),%esi 933 movb %dl,%bl 934 xorl 0x200(%ebp,%ecx,1),%esi 935 movb %dh,%cl 936 shrl $16,%eax 937 xorl 0x100(%ebp,%ebx,1),%esi 938 movb %ah,%bl 939 shrl $16,%edx 940 xorl 0x300(%ebp,%ecx,1),%esi 941 movb %dh,%cl 942 andl $0xff,%eax 943 andl $0xff,%edx 944 xorl 0x600(%ebp,%ebx,1),%esi 945 xorl 0x700(%ebp,%ecx,1),%esi 946 movl (%esp),%ecx 947 xorl 0x400(%ebp,%eax,1),%esi 948 xorl 0x500(%ebp,%edx,1),%esi 949 addl $4,%esp 950 ret 951 .globl _DES_encrypt1 952 .align 4 953 _DES_encrypt1: 954 L_DES_encrypt1_begin: 955 %ifdef __CET__ 956 957 .byte 243,15,30,251 958 %endif 959 960 pushl %esi 961 pushl %edi 962 963 # Load the 2 words 964 movl 12(%esp),%esi 965 xorl %ecx,%ecx 966 pushl %ebx 967 pushl %ebp 968 movl (%esi),%eax 969 movl 28(%esp),%ebx 970 movl 4(%esi),%edi 971 972 # IP 973 roll $4,%eax 974 movl %eax,%esi 975 xorl %edi,%eax 976 andl $0xf0f0f0f0,%eax 977 xorl %eax,%esi 978 xorl %eax,%edi 979 980 roll $20,%edi 981 movl %edi,%eax 982 xorl %esi,%edi 983 andl $0xfff0000f,%edi 984 xorl %edi,%eax 985 xorl %edi,%esi 986 987 roll $14,%eax 988 movl %eax,%edi 989 xorl %esi,%eax 990 andl $0x33333333,%eax 991 xorl %eax,%edi 992 xorl %eax,%esi 993 994 roll $22,%esi 995 movl %esi,%eax 996 xorl %edi,%esi 997 andl $0x03fc03fc,%esi 998 xorl %esi,%eax 999 xorl %esi,%edi 1000 1001 roll $9,%eax 1002 movl %eax,%esi 1003 xorl %edi,%eax 1004 andl $0xaaaaaaaa,%eax 1005 xorl %eax,%esi 1006 xorl %eax,%edi 1007 1008 roll $1,%edi 1009 call L000pic_point 1010 L000pic_point: 1011 popl %ebp 1012 leal Ldes_sptrans-L000pic_point(%ebp),%ebp 1013 movl 24(%esp),%ecx 1014 cmpl $0,%ebx 1015 je L001decrypt 1016 call __x86_DES_encrypt 1017 jmp L002done 1018 L001decrypt: 1019 call __x86_DES_decrypt 1020 L002done: 1021 1022 # FP 1023 movl 20(%esp),%edx 1024 rorl $1,%esi 1025 movl %edi,%eax 1026 xorl %esi,%edi 1027 andl $0xaaaaaaaa,%edi 1028 xorl %edi,%eax 1029 xorl %edi,%esi 1030 1031 roll $23,%eax 1032 movl %eax,%edi 1033 xorl %esi,%eax 1034 andl $0x03fc03fc,%eax 1035 xorl %eax,%edi 1036 xorl %eax,%esi 1037 1038 roll $10,%edi 1039 movl %edi,%eax 1040 xorl %esi,%edi 1041 andl $0x33333333,%edi 1042 xorl %edi,%eax 1043 xorl %edi,%esi 1044 1045 roll $18,%esi 1046 movl %esi,%edi 1047 xorl %eax,%esi 1048 andl $0xfff0000f,%esi 1049 xorl %esi,%edi 1050 xorl %esi,%eax 1051 1052 roll $12,%edi 1053 movl %edi,%esi 1054 xorl %eax,%edi 1055 andl $0xf0f0f0f0,%edi 1056 xorl %edi,%esi 1057 xorl %edi,%eax 1058 1059 rorl $4,%eax 1060 movl %eax,(%edx) 1061 movl %esi,4(%edx) 1062 popl %ebp 1063 popl %ebx 1064 popl %edi 1065 popl %esi 1066 ret 1067 .globl _DES_encrypt2 1068 .align 4 1069 _DES_encrypt2: 1070 L_DES_encrypt2_begin: 1071 %ifdef __CET__ 1072 1073 .byte 243,15,30,251 1074 %endif 1075 1076 pushl %esi 1077 pushl %edi 1078 1079 # Load the 2 words 1080 movl 12(%esp),%eax 1081 xorl %ecx,%ecx 1082 pushl %ebx 1083 pushl %ebp 1084 movl (%eax),%esi 1085 movl 28(%esp),%ebx 1086 roll $3,%esi 1087 movl 4(%eax),%edi 1088 roll $3,%edi 1089 call L003pic_point 1090 L003pic_point: 1091 popl %ebp 1092 leal Ldes_sptrans-L003pic_point(%ebp),%ebp 1093 movl 24(%esp),%ecx 1094 cmpl $0,%ebx 1095 je L004decrypt 1096 call __x86_DES_encrypt 1097 jmp L005done 1098 L004decrypt: 1099 call __x86_DES_decrypt 1100 L005done: 1101 1102 # Fixup 1103 rorl $3,%edi 1104 movl 20(%esp),%eax 1105 rorl $3,%esi 1106 movl %edi,(%eax) 1107 movl %esi,4(%eax) 1108 popl %ebp 1109 popl %ebx 1110 popl %edi 1111 popl %esi 1112 ret 1113 .globl _DES_encrypt3 1114 .align 4 1115 _DES_encrypt3: 1116 L_DES_encrypt3_begin: 1117 %ifdef __CET__ 1118 1119 .byte 243,15,30,251 1120 %endif 1121 1122 pushl %ebx 1123 movl 8(%esp),%ebx 1124 pushl %ebp 1125 pushl %esi 1126 pushl %edi 1127 1128 # Load the data words 1129 movl (%ebx),%edi 1130 movl 4(%ebx),%esi 1131 subl $12,%esp 1132 1133 # IP 1134 roll $4,%edi 1135 movl %edi,%edx 1136 xorl %esi,%edi 1137 andl $0xf0f0f0f0,%edi 1138 xorl %edi,%edx 1139 xorl %edi,%esi 1140 1141 roll $20,%esi 1142 movl %esi,%edi 1143 xorl %edx,%esi 1144 andl $0xfff0000f,%esi 1145 xorl %esi,%edi 1146 xorl %esi,%edx 1147 1148 roll $14,%edi 1149 movl %edi,%esi 1150 xorl %edx,%edi 1151 andl $0x33333333,%edi 1152 xorl %edi,%esi 1153 xorl %edi,%edx 1154 1155 roll $22,%edx 1156 movl %edx,%edi 1157 xorl %esi,%edx 1158 andl $0x03fc03fc,%edx 1159 xorl %edx,%edi 1160 xorl %edx,%esi 1161 1162 roll $9,%edi 1163 movl %edi,%edx 1164 xorl %esi,%edi 1165 andl $0xaaaaaaaa,%edi 1166 xorl %edi,%edx 1167 xorl %edi,%esi 1168 1169 rorl $3,%edx 1170 rorl $2,%esi 1171 movl %esi,4(%ebx) 1172 movl 36(%esp),%eax 1173 movl %edx,(%ebx) 1174 movl 40(%esp),%edi 1175 movl 44(%esp),%esi 1176 movl $1,8(%esp) 1177 movl %eax,4(%esp) 1178 movl %ebx,(%esp) 1179 call L_DES_encrypt2_begin 1180 movl $0,8(%esp) 1181 movl %edi,4(%esp) 1182 movl %ebx,(%esp) 1183 call L_DES_encrypt2_begin 1184 movl $1,8(%esp) 1185 movl %esi,4(%esp) 1186 movl %ebx,(%esp) 1187 call L_DES_encrypt2_begin 1188 addl $12,%esp 1189 movl (%ebx),%edi 1190 movl 4(%ebx),%esi 1191 1192 # FP 1193 roll $2,%esi 1194 roll $3,%edi 1195 movl %edi,%eax 1196 xorl %esi,%edi 1197 andl $0xaaaaaaaa,%edi 1198 xorl %edi,%eax 1199 xorl %edi,%esi 1200 1201 roll $23,%eax 1202 movl %eax,%edi 1203 xorl %esi,%eax 1204 andl $0x03fc03fc,%eax 1205 xorl %eax,%edi 1206 xorl %eax,%esi 1207 1208 roll $10,%edi 1209 movl %edi,%eax 1210 xorl %esi,%edi 1211 andl $0x33333333,%edi 1212 xorl %edi,%eax 1213 xorl %edi,%esi 1214 1215 roll $18,%esi 1216 movl %esi,%edi 1217 xorl %eax,%esi 1218 andl $0xfff0000f,%esi 1219 xorl %esi,%edi 1220 xorl %esi,%eax 1221 1222 roll $12,%edi 1223 movl %edi,%esi 1224 xorl %eax,%edi 1225 andl $0xf0f0f0f0,%edi 1226 xorl %edi,%esi 1227 xorl %edi,%eax 1228 1229 rorl $4,%eax 1230 movl %eax,(%ebx) 1231 movl %esi,4(%ebx) 1232 popl %edi 1233 popl %esi 1234 popl %ebp 1235 popl %ebx 1236 ret 1237 .globl _DES_decrypt3 1238 .align 4 1239 _DES_decrypt3: 1240 L_DES_decrypt3_begin: 1241 %ifdef __CET__ 1242 1243 .byte 243,15,30,251 1244 %endif 1245 1246 pushl %ebx 1247 movl 8(%esp),%ebx 1248 pushl %ebp 1249 pushl %esi 1250 pushl %edi 1251 1252 # Load the data words 1253 movl (%ebx),%edi 1254 movl 4(%ebx),%esi 1255 subl $12,%esp 1256 1257 # IP 1258 roll $4,%edi 1259 movl %edi,%edx 1260 xorl %esi,%edi 1261 andl $0xf0f0f0f0,%edi 1262 xorl %edi,%edx 1263 xorl %edi,%esi 1264 1265 roll $20,%esi 1266 movl %esi,%edi 1267 xorl %edx,%esi 1268 andl $0xfff0000f,%esi 1269 xorl %esi,%edi 1270 xorl %esi,%edx 1271 1272 roll $14,%edi 1273 movl %edi,%esi 1274 xorl %edx,%edi 1275 andl $0x33333333,%edi 1276 xorl %edi,%esi 1277 xorl %edi,%edx 1278 1279 roll $22,%edx 1280 movl %edx,%edi 1281 xorl %esi,%edx 1282 andl $0x03fc03fc,%edx 1283 xorl %edx,%edi 1284 xorl %edx,%esi 1285 1286 roll $9,%edi 1287 movl %edi,%edx 1288 xorl %esi,%edi 1289 andl $0xaaaaaaaa,%edi 1290 xorl %edi,%edx 1291 xorl %edi,%esi 1292 1293 rorl $3,%edx 1294 rorl $2,%esi 1295 movl %esi,4(%ebx) 1296 movl 36(%esp),%esi 1297 movl %edx,(%ebx) 1298 movl 40(%esp),%edi 1299 movl 44(%esp),%eax 1300 movl $0,8(%esp) 1301 movl %eax,4(%esp) 1302 movl %ebx,(%esp) 1303 call L_DES_encrypt2_begin 1304 movl $1,8(%esp) 1305 movl %edi,4(%esp) 1306 movl %ebx,(%esp) 1307 call L_DES_encrypt2_begin 1308 movl $0,8(%esp) 1309 movl %esi,4(%esp) 1310 movl %ebx,(%esp) 1311 call L_DES_encrypt2_begin 1312 addl $12,%esp 1313 movl (%ebx),%edi 1314 movl 4(%ebx),%esi 1315 1316 # FP 1317 roll $2,%esi 1318 roll $3,%edi 1319 movl %edi,%eax 1320 xorl %esi,%edi 1321 andl $0xaaaaaaaa,%edi 1322 xorl %edi,%eax 1323 xorl %edi,%esi 1324 1325 roll $23,%eax 1326 movl %eax,%edi 1327 xorl %esi,%eax 1328 andl $0x03fc03fc,%eax 1329 xorl %eax,%edi 1330 xorl %eax,%esi 1331 1332 roll $10,%edi 1333 movl %edi,%eax 1334 xorl %esi,%edi 1335 andl $0x33333333,%edi 1336 xorl %edi,%eax 1337 xorl %edi,%esi 1338 1339 roll $18,%esi 1340 movl %esi,%edi 1341 xorl %eax,%esi 1342 andl $0xfff0000f,%esi 1343 xorl %esi,%edi 1344 xorl %esi,%eax 1345 1346 roll $12,%edi 1347 movl %edi,%esi 1348 xorl %eax,%edi 1349 andl $0xf0f0f0f0,%edi 1350 xorl %edi,%esi 1351 xorl %edi,%eax 1352 1353 rorl $4,%eax 1354 movl %eax,(%ebx) 1355 movl %esi,4(%ebx) 1356 popl %edi 1357 popl %esi 1358 popl %ebp 1359 popl %ebx 1360 ret 1361 .globl _DES_ncbc_encrypt 1362 .align 4 1363 _DES_ncbc_encrypt: 1364 L_DES_ncbc_encrypt_begin: 1365 %ifdef __CET__ 1366 1367 .byte 243,15,30,251 1368 %endif 1369 1370 1371 pushl %ebp 1372 pushl %ebx 1373 pushl %esi 1374 pushl %edi 1375 movl 28(%esp),%ebp 1376 # getting iv ptr from parameter 4 1377 movl 36(%esp),%ebx 1378 movl (%ebx),%esi 1379 movl 4(%ebx),%edi 1380 pushl %edi 1381 pushl %esi 1382 pushl %edi 1383 pushl %esi 1384 movl %esp,%ebx 1385 movl 36(%esp),%esi 1386 movl 40(%esp),%edi 1387 # getting encrypt flag from parameter 5 1388 movl 56(%esp),%ecx 1389 # get and push parameter 5 1390 pushl %ecx 1391 # get and push parameter 3 1392 movl 52(%esp),%eax 1393 pushl %eax 1394 pushl %ebx 1395 cmpl $0,%ecx 1396 jz L006decrypt 1397 andl $4294967288,%ebp 1398 movl 12(%esp),%eax 1399 movl 16(%esp),%ebx 1400 jz L007encrypt_finish 1401 L008encrypt_loop: 1402 movl (%esi),%ecx 1403 movl 4(%esi),%edx 1404 xorl %ecx,%eax 1405 xorl %edx,%ebx 1406 movl %eax,12(%esp) 1407 movl %ebx,16(%esp) 1408 call L_DES_encrypt1_begin 1409 movl 12(%esp),%eax 1410 movl 16(%esp),%ebx 1411 movl %eax,(%edi) 1412 movl %ebx,4(%edi) 1413 addl $8,%esi 1414 addl $8,%edi 1415 subl $8,%ebp 1416 jnz L008encrypt_loop 1417 L007encrypt_finish: 1418 movl 56(%esp),%ebp 1419 andl $7,%ebp 1420 jz L009finish 1421 call L010PIC_point 1422 L010PIC_point: 1423 popl %edx 1424 leal L011cbc_enc_jmp_table-L010PIC_point(%edx),%ecx 1425 movl (%ecx,%ebp,4),%ebp 1426 addl %edx,%ebp 1427 xorl %ecx,%ecx 1428 xorl %edx,%edx 1429 jmp *%ebp 1430 L012ej7: 1431 %ifdef __CET__ 1432 1433 .byte 243,15,30,251 1434 %endif 1435 1436 movb 6(%esi),%dh 1437 shll $8,%edx 1438 L013ej6: 1439 %ifdef __CET__ 1440 1441 .byte 243,15,30,251 1442 %endif 1443 1444 movb 5(%esi),%dh 1445 L014ej5: 1446 %ifdef __CET__ 1447 1448 .byte 243,15,30,251 1449 %endif 1450 1451 movb 4(%esi),%dl 1452 L015ej4: 1453 %ifdef __CET__ 1454 1455 .byte 243,15,30,251 1456 %endif 1457 1458 movl (%esi),%ecx 1459 jmp L016ejend 1460 L017ej3: 1461 %ifdef __CET__ 1462 1463 .byte 243,15,30,251 1464 %endif 1465 1466 movb 2(%esi),%ch 1467 shll $8,%ecx 1468 L018ej2: 1469 %ifdef __CET__ 1470 1471 .byte 243,15,30,251 1472 %endif 1473 1474 movb 1(%esi),%ch 1475 L019ej1: 1476 %ifdef __CET__ 1477 1478 .byte 243,15,30,251 1479 %endif 1480 1481 movb (%esi),%cl 1482 L016ejend: 1483 xorl %ecx,%eax 1484 xorl %edx,%ebx 1485 movl %eax,12(%esp) 1486 movl %ebx,16(%esp) 1487 call L_DES_encrypt1_begin 1488 movl 12(%esp),%eax 1489 movl 16(%esp),%ebx 1490 movl %eax,(%edi) 1491 movl %ebx,4(%edi) 1492 jmp L009finish 1493 L006decrypt: 1494 andl $4294967288,%ebp 1495 movl 20(%esp),%eax 1496 movl 24(%esp),%ebx 1497 jz L020decrypt_finish 1498 L021decrypt_loop: 1499 movl (%esi),%eax 1500 movl 4(%esi),%ebx 1501 movl %eax,12(%esp) 1502 movl %ebx,16(%esp) 1503 call L_DES_encrypt1_begin 1504 movl 12(%esp),%eax 1505 movl 16(%esp),%ebx 1506 movl 20(%esp),%ecx 1507 movl 24(%esp),%edx 1508 xorl %eax,%ecx 1509 xorl %ebx,%edx 1510 movl (%esi),%eax 1511 movl 4(%esi),%ebx 1512 movl %ecx,(%edi) 1513 movl %edx,4(%edi) 1514 movl %eax,20(%esp) 1515 movl %ebx,24(%esp) 1516 addl $8,%esi 1517 addl $8,%edi 1518 subl $8,%ebp 1519 jnz L021decrypt_loop 1520 L020decrypt_finish: 1521 movl 56(%esp),%ebp 1522 andl $7,%ebp 1523 jz L009finish 1524 movl (%esi),%eax 1525 movl 4(%esi),%ebx 1526 movl %eax,12(%esp) 1527 movl %ebx,16(%esp) 1528 call L_DES_encrypt1_begin 1529 movl 12(%esp),%eax 1530 movl 16(%esp),%ebx 1531 movl 20(%esp),%ecx 1532 movl 24(%esp),%edx 1533 xorl %eax,%ecx 1534 xorl %ebx,%edx 1535 movl (%esi),%eax 1536 movl 4(%esi),%ebx 1537 L022dj7: 1538 rorl $16,%edx 1539 movb %dl,6(%edi) 1540 shrl $16,%edx 1541 L023dj6: 1542 movb %dh,5(%edi) 1543 L024dj5: 1544 movb %dl,4(%edi) 1545 L025dj4: 1546 movl %ecx,(%edi) 1547 jmp L026djend 1548 L027dj3: 1549 rorl $16,%ecx 1550 movb %cl,2(%edi) 1551 shll $16,%ecx 1552 L028dj2: 1553 movb %ch,1(%esi) 1554 L029dj1: 1555 movb %cl,(%esi) 1556 L026djend: 1557 jmp L009finish 1558 L009finish: 1559 movl 64(%esp),%ecx 1560 addl $28,%esp 1561 movl %eax,(%ecx) 1562 movl %ebx,4(%ecx) 1563 popl %edi 1564 popl %esi 1565 popl %ebx 1566 popl %ebp 1567 ret 1568 .align 6,0x90 1569 L011cbc_enc_jmp_table: 1570 .long 0 1571 .long L019ej1-L010PIC_point 1572 .long L018ej2-L010PIC_point 1573 .long L017ej3-L010PIC_point 1574 .long L015ej4-L010PIC_point 1575 .long L014ej5-L010PIC_point 1576 .long L013ej6-L010PIC_point 1577 .long L012ej7-L010PIC_point 1578 .align 6,0x90 1579 .globl _DES_ede3_cbc_encrypt 1580 .align 4 1581 _DES_ede3_cbc_encrypt: 1582 L_DES_ede3_cbc_encrypt_begin: 1583 %ifdef __CET__ 1584 1585 .byte 243,15,30,251 1586 %endif 1587 1588 1589 pushl %ebp 1590 pushl %ebx 1591 pushl %esi 1592 pushl %edi 1593 movl 28(%esp),%ebp 1594 # getting iv ptr from parameter 6 1595 movl 44(%esp),%ebx 1596 movl (%ebx),%esi 1597 movl 4(%ebx),%edi 1598 pushl %edi 1599 pushl %esi 1600 pushl %edi 1601 pushl %esi 1602 movl %esp,%ebx 1603 movl 36(%esp),%esi 1604 movl 40(%esp),%edi 1605 # getting encrypt flag from parameter 7 1606 movl 64(%esp),%ecx 1607 # get and push parameter 5 1608 movl 56(%esp),%eax 1609 pushl %eax 1610 # get and push parameter 4 1611 movl 56(%esp),%eax 1612 pushl %eax 1613 # get and push parameter 3 1614 movl 56(%esp),%eax 1615 pushl %eax 1616 pushl %ebx 1617 cmpl $0,%ecx 1618 jz L030decrypt 1619 andl $4294967288,%ebp 1620 movl 16(%esp),%eax 1621 movl 20(%esp),%ebx 1622 jz L031encrypt_finish 1623 L032encrypt_loop: 1624 movl (%esi),%ecx 1625 movl 4(%esi),%edx 1626 xorl %ecx,%eax 1627 xorl %edx,%ebx 1628 movl %eax,16(%esp) 1629 movl %ebx,20(%esp) 1630 call L_DES_encrypt3_begin 1631 movl 16(%esp),%eax 1632 movl 20(%esp),%ebx 1633 movl %eax,(%edi) 1634 movl %ebx,4(%edi) 1635 addl $8,%esi 1636 addl $8,%edi 1637 subl $8,%ebp 1638 jnz L032encrypt_loop 1639 L031encrypt_finish: 1640 movl 60(%esp),%ebp 1641 andl $7,%ebp 1642 jz L033finish 1643 call L034PIC_point 1644 L034PIC_point: 1645 popl %edx 1646 leal L035cbc_enc_jmp_table-L034PIC_point(%edx),%ecx 1647 movl (%ecx,%ebp,4),%ebp 1648 addl %edx,%ebp 1649 xorl %ecx,%ecx 1650 xorl %edx,%edx 1651 jmp *%ebp 1652 L036ej7: 1653 %ifdef __CET__ 1654 1655 .byte 243,15,30,251 1656 %endif 1657 1658 movb 6(%esi),%dh 1659 shll $8,%edx 1660 L037ej6: 1661 %ifdef __CET__ 1662 1663 .byte 243,15,30,251 1664 %endif 1665 1666 movb 5(%esi),%dh 1667 L038ej5: 1668 %ifdef __CET__ 1669 1670 .byte 243,15,30,251 1671 %endif 1672 1673 movb 4(%esi),%dl 1674 L039ej4: 1675 %ifdef __CET__ 1676 1677 .byte 243,15,30,251 1678 %endif 1679 1680 movl (%esi),%ecx 1681 jmp L040ejend 1682 L041ej3: 1683 %ifdef __CET__ 1684 1685 .byte 243,15,30,251 1686 %endif 1687 1688 movb 2(%esi),%ch 1689 shll $8,%ecx 1690 L042ej2: 1691 %ifdef __CET__ 1692 1693 .byte 243,15,30,251 1694 %endif 1695 1696 movb 1(%esi),%ch 1697 L043ej1: 1698 %ifdef __CET__ 1699 1700 .byte 243,15,30,251 1701 %endif 1702 1703 movb (%esi),%cl 1704 L040ejend: 1705 xorl %ecx,%eax 1706 xorl %edx,%ebx 1707 movl %eax,16(%esp) 1708 movl %ebx,20(%esp) 1709 call L_DES_encrypt3_begin 1710 movl 16(%esp),%eax 1711 movl 20(%esp),%ebx 1712 movl %eax,(%edi) 1713 movl %ebx,4(%edi) 1714 jmp L033finish 1715 L030decrypt: 1716 andl $4294967288,%ebp 1717 movl 24(%esp),%eax 1718 movl 28(%esp),%ebx 1719 jz L044decrypt_finish 1720 L045decrypt_loop: 1721 movl (%esi),%eax 1722 movl 4(%esi),%ebx 1723 movl %eax,16(%esp) 1724 movl %ebx,20(%esp) 1725 call L_DES_decrypt3_begin 1726 movl 16(%esp),%eax 1727 movl 20(%esp),%ebx 1728 movl 24(%esp),%ecx 1729 movl 28(%esp),%edx 1730 xorl %eax,%ecx 1731 xorl %ebx,%edx 1732 movl (%esi),%eax 1733 movl 4(%esi),%ebx 1734 movl %ecx,(%edi) 1735 movl %edx,4(%edi) 1736 movl %eax,24(%esp) 1737 movl %ebx,28(%esp) 1738 addl $8,%esi 1739 addl $8,%edi 1740 subl $8,%ebp 1741 jnz L045decrypt_loop 1742 L044decrypt_finish: 1743 movl 60(%esp),%ebp 1744 andl $7,%ebp 1745 jz L033finish 1746 movl (%esi),%eax 1747 movl 4(%esi),%ebx 1748 movl %eax,16(%esp) 1749 movl %ebx,20(%esp) 1750 call L_DES_decrypt3_begin 1751 movl 16(%esp),%eax 1752 movl 20(%esp),%ebx 1753 movl 24(%esp),%ecx 1754 movl 28(%esp),%edx 1755 xorl %eax,%ecx 1756 xorl %ebx,%edx 1757 movl (%esi),%eax 1758 movl 4(%esi),%ebx 1759 L046dj7: 1760 rorl $16,%edx 1761 movb %dl,6(%edi) 1762 shrl $16,%edx 1763 L047dj6: 1764 movb %dh,5(%edi) 1765 L048dj5: 1766 movb %dl,4(%edi) 1767 L049dj4: 1768 movl %ecx,(%edi) 1769 jmp L050djend 1770 L051dj3: 1771 rorl $16,%ecx 1772 movb %cl,2(%edi) 1773 shll $16,%ecx 1774 L052dj2: 1775 movb %ch,1(%esi) 1776 L053dj1: 1777 movb %cl,(%esi) 1778 L050djend: 1779 jmp L033finish 1780 L033finish: 1781 movl 76(%esp),%ecx 1782 addl $32,%esp 1783 movl %eax,(%ecx) 1784 movl %ebx,4(%ecx) 1785 popl %edi 1786 popl %esi 1787 popl %ebx 1788 popl %ebp 1789 ret 1790 .align 6,0x90 1791 L035cbc_enc_jmp_table: 1792 .long 0 1793 .long L043ej1-L034PIC_point 1794 .long L042ej2-L034PIC_point 1795 .long L041ej3-L034PIC_point 1796 .long L039ej4-L034PIC_point 1797 .long L038ej5-L034PIC_point 1798 .long L037ej6-L034PIC_point 1799 .long L036ej7-L034PIC_point 1800 .align 6,0x90 1801 .align 6,0x90 1802 _DES_SPtrans: 1803 Ldes_sptrans: 1804 .long 34080768,524288,33554434,34080770 1805 .long 33554432,526338,524290,33554434 1806 .long 526338,34080768,34078720,2050 1807 .long 33556482,33554432,0,524290 1808 .long 524288,2,33556480,526336 1809 .long 34080770,34078720,2050,33556480 1810 .long 2,2048,526336,34078722 1811 .long 2048,33556482,34078722,0 1812 .long 0,34080770,33556480,524290 1813 .long 34080768,524288,2050,33556480 1814 .long 34078722,2048,526336,33554434 1815 .long 526338,2,33554434,34078720 1816 .long 34080770,526336,34078720,33556482 1817 .long 33554432,2050,524290,0 1818 .long 524288,33554432,33556482,34080768 1819 .long 2,34078722,2048,526338 1820 .long 1074823184,0,1081344,1074790400 1821 .long 1073741840,32784,1073774592,1081344 1822 .long 32768,1074790416,16,1073774592 1823 .long 1048592,1074823168,1074790400,16 1824 .long 1048576,1073774608,1074790416,32768 1825 .long 1081360,1073741824,0,1048592 1826 .long 1073774608,1081360,1074823168,1073741840 1827 .long 1073741824,1048576,32784,1074823184 1828 .long 1048592,1074823168,1073774592,1081360 1829 .long 1074823184,1048592,1073741840,0 1830 .long 1073741824,32784,1048576,1074790416 1831 .long 32768,1073741824,1081360,1073774608 1832 .long 1074823168,32768,0,1073741840 1833 .long 16,1074823184,1081344,1074790400 1834 .long 1074790416,1048576,32784,1073774592 1835 .long 1073774608,16,1074790400,1081344 1836 .long 67108865,67371264,256,67109121 1837 .long 262145,67108864,67109121,262400 1838 .long 67109120,262144,67371008,1 1839 .long 67371265,257,1,67371009 1840 .long 0,262145,67371264,256 1841 .long 257,67371265,262144,67108865 1842 .long 67371009,67109120,262401,67371008 1843 .long 262400,0,67108864,262401 1844 .long 67371264,256,1,262144 1845 .long 257,262145,67371008,67109121 1846 .long 0,67371264,262400,67371009 1847 .long 262145,67108864,67371265,1 1848 .long 262401,67108865,67108864,67371265 1849 .long 262144,67109120,67109121,262400 1850 .long 67109120,0,67371009,257 1851 .long 67108865,262401,256,67371008 1852 .long 4198408,268439552,8,272633864 1853 .long 0,272629760,268439560,4194312 1854 .long 272633856,268435464,268435456,4104 1855 .long 268435464,4198408,4194304,268435456 1856 .long 272629768,4198400,4096,8 1857 .long 4198400,268439560,272629760,4096 1858 .long 4104,0,4194312,272633856 1859 .long 268439552,272629768,272633864,4194304 1860 .long 272629768,4104,4194304,268435464 1861 .long 4198400,268439552,8,272629760 1862 .long 268439560,0,4096,4194312 1863 .long 0,272629768,272633856,4096 1864 .long 268435456,272633864,4198408,4194304 1865 .long 272633864,8,268439552,4198408 1866 .long 4194312,4198400,272629760,268439560 1867 .long 4104,268435456,268435464,272633856 1868 .long 134217728,65536,1024,134284320 1869 .long 134283296,134218752,66592,134283264 1870 .long 65536,32,134217760,66560 1871 .long 134218784,134283296,134284288,0 1872 .long 66560,134217728,65568,1056 1873 .long 134218752,66592,0,134217760 1874 .long 32,134218784,134284320,65568 1875 .long 134283264,1024,1056,134284288 1876 .long 134284288,134218784,65568,134283264 1877 .long 65536,32,134217760,134218752 1878 .long 134217728,66560,134284320,0 1879 .long 66592,134217728,1024,65568 1880 .long 134218784,1024,0,134284320 1881 .long 134283296,134284288,1056,65536 1882 .long 66560,134283296,134218752,1056 1883 .long 32,66592,134283264,134217760 1884 .long 2147483712,2097216,0,2149588992 1885 .long 2097216,8192,2147491904,2097152 1886 .long 8256,2149589056,2105344,2147483648 1887 .long 2147491840,2147483712,2149580800,2105408 1888 .long 2097152,2147491904,2149580864,0 1889 .long 8192,64,2149588992,2149580864 1890 .long 2149589056,2149580800,2147483648,8256 1891 .long 64,2105344,2105408,2147491840 1892 .long 8256,2147483648,2147491840,2105408 1893 .long 2149588992,2097216,0,2147491840 1894 .long 2147483648,8192,2149580864,2097152 1895 .long 2097216,2149589056,2105344,64 1896 .long 2149589056,2105344,2097152,2147491904 1897 .long 2147483712,2149580800,2105408,0 1898 .long 8192,2147483712,2147491904,2149588992 1899 .long 2149580800,8256,64,2149580864 1900 .long 16384,512,16777728,16777220 1901 .long 16794116,16388,16896,0 1902 .long 16777216,16777732,516,16793600 1903 .long 4,16794112,16793600,516 1904 .long 16777732,16384,16388,16794116 1905 .long 0,16777728,16777220,16896 1906 .long 16793604,16900,16794112,4 1907 .long 16900,16793604,512,16777216 1908 .long 16900,16793600,16793604,516 1909 .long 16384,512,16777216,16793604 1910 .long 16777732,16900,16896,0 1911 .long 512,16777220,4,16777728 1912 .long 0,16777732,16777728,16896 1913 .long 516,16384,16794116,16777216 1914 .long 16794112,4,16388,16794116 1915 .long 16777220,16794112,16793600,16388 1916 .long 545259648,545390592,131200,0 1917 .long 537001984,8388736,545259520,545390720 1918 .long 128,536870912,8519680,131200 1919 .long 8519808,537002112,536871040,545259520 1920 .long 131072,8519808,8388736,537001984 1921 .long 545390720,536871040,0,8519680 1922 .long 536870912,8388608,537002112,545259648 1923 .long 8388608,131072,545390592,128 1924 .long 8388608,131072,536871040,545390720 1925 .long 131200,536870912,0,8519680 1926 .long 545259648,537002112,537001984,8388736 1927 .long 545390592,128,8388736,537001984 1928 .long 545390720,8388608,545259520,536871040 1929 .long 8519680,131200,537002112,545259520 1930 .long 128,545390592,8519808,0 1931 .long 536870912,545259648,131072,8519808 1932