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