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