clarify the purpose of this project
[nyanglibc.git] / crypt / crypt_util.shared.s
blob334749b1a51b376b7b1c74c3e8abfd2e7046f7f4
1 .text
2 #APP
3 .symver encrypt_r,encrypt_r@GLIBC_2.2.5
4 .symver encrypt,encrypt@GLIBC_2.2.5
5 .symver setkey_r,setkey_r@GLIBC_2.2.5
6 .symver setkey,setkey@GLIBC_2.2.5
7 #NO_APP
8 .p2align 4,,15
9 .globl __init_des_r
10 .type __init_des_r, @function
11 __init_des_r:
12 pushq %r15
13 pushq %r14
14 leaq 32896(%rdi), %rax
15 pushq %r13
16 pushq %r12
17 pushq %rbp
18 pushq %rbx
19 leaq 128(%rdi), %rbp
20 subq $344, %rsp
21 movq %rax, 56(%rsp)
22 leaq 65664(%rdi), %rax
23 movq %rdi, 40(%rsp)
24 movq %rbp, 48(%rsp)
25 movq %rax, 64(%rsp)
26 leaq 98432(%rdi), %rax
27 movq %rax, 72(%rsp)
28 movl small_tables_initialized.7490(%rip), %eax
29 testl %eax, %eax
30 jne .L2
31 cmpq $0, __pthread_mutex_lock@GOTPCREL(%rip)
32 je .L3
33 leaq _ufc_tables_lock(%rip), %rdi
34 call __pthread_mutex_lock@PLT
35 .L3:
36 movl small_tables_initialized.7490(%rip), %eax
37 leaq eperm32tab(%rip), %rbx
38 testl %eax, %eax
39 je .L55
40 .L4:
41 cmpq $0, __pthread_mutex_unlock@GOTPCREL(%rip)
42 je .L20
43 leaq _ufc_tables_lock(%rip), %rdi
44 call __pthread_mutex_unlock@PLT
45 .L20:
46 movl $131072, %edx
47 xorl %esi, %esi
48 movq %rbp, %rdi
49 call memset@PLT
50 leaq sbox(%rip), %r12
51 leaq 48(%rsp), %rax
52 movl $24, %r13d
53 movl $0, 28(%rsp)
54 movl $15, 24(%rsp)
55 movl %r13d, %ecx
56 movq %rax, 32(%rsp)
57 movq %r12, 16(%rsp)
58 movl $14, %eax
59 .L21:
60 movslq 28(%rsp), %rdx
61 movq 32(%rsp), %rdi
62 movl $0, 4(%rsp)
63 movq (%rdi), %r14
64 leal 1(%rdx), %r15d
65 leaq 0(,%rdx,4), %rdi
66 movslq %r15d, %r15
67 movq %rdi, 8(%rsp)
68 salq $2, %r15
69 .p2align 4,,10
70 .p2align 3
71 .L26:
72 movl 4(%rsp), %ebp
73 movl 24(%rsp), %edx
74 movslq %eax, %r11
75 salq $4, %r11
76 xorl %r9d, %r9d
77 sall $6, %ebp
78 movslq %edx, %rax
79 jmp .L23
80 .p2align 4,,10
81 .p2align 3
82 .L56:
83 movl %r9d, %eax
84 movl %r9d, %esi
85 sarl %eax
86 andl $1, %esi
87 movl %eax, %edx
88 movl %r9d, %eax
89 sarl $4, %eax
90 andl $15, %edx
91 andl $2, %eax
92 orl %esi, %eax
93 cltq
94 addq %r15, %rax
95 salq $4, %rax
96 addq %rdx, %rax
97 movslq (%r12,%rax,4), %rax
98 .L23:
99 orq %r11, %rax
100 movl %r9d, %esi
101 addl $1, %r9d
102 salq %cl, %rax
103 orl %ebp, %esi
104 movq %rax, %rdx
105 movq %rax, %r10
106 movzbl %ah, %edi
107 shrq $16, %rdx
108 shrq $20, %r10
109 movzbl %al, %eax
110 movzbl %dl, %edx
111 andl $4080, %r10d
112 movslq %esi, %rsi
113 movq %rdx, %r13
114 addq %rbx, %r10
115 addq $256, %rdx
116 salq $4, %r13
117 movq 8(%r10), %r8
118 salq $4, %rdx
119 orq 4104(%rbx,%r13), %r8
120 movq %rax, %r13
121 addq $768, %rax
122 salq $4, %r13
123 salq $4, %rax
124 orq 12296(%rbx,%r13), %r8
125 movq %rdi, %r13
126 movq (%rbx,%rax), %rax
127 salq $4, %r13
128 orq 8200(%rbx,%r13), %r8
129 salq $32, %rax
130 orq %rax, %r8
131 movq (%r10), %rax
132 salq $32, %rax
133 orq %rax, %r8
134 movq (%rbx,%rdx), %rax
135 salq $32, %rax
136 orq %rax, %r8
137 leaq 512(%rdi), %rax
138 salq $4, %rax
139 movq (%rbx,%rax), %rax
140 salq $32, %rax
141 orq %rax, %r8
142 cmpl $64, %r9d
143 movq %r8, (%r14,%rsi,8)
144 jne .L56
145 addl $1, 4(%rsp)
146 movl 4(%rsp), %eax
147 cmpl $64, %eax
148 je .L57
149 movl 4(%rsp), %edi
150 movl %edi, %eax
151 sarl %eax
152 movl %eax, %edx
153 movl %edi, %eax
154 andl $1, %edi
155 sarl $4, %eax
156 andl $15, %edx
157 andl $2, %eax
158 orl %edi, %eax
159 cltq
160 addq 8(%rsp), %rax
161 salq $4, %rax
162 addq %rdx, %rax
163 movl (%r12,%rax,4), %eax
164 jmp .L26
165 .L57:
166 subl $8, %ecx
167 addq $512, 16(%rsp)
168 addq $8, 32(%rsp)
169 movq 16(%rsp), %rax
170 addl $2, 28(%rsp)
171 cmpl $-8, %ecx
172 je .L25
173 movl 256(%rax), %edi
174 movl (%rax), %eax
175 movl %edi, 24(%rsp)
176 jmp .L21
177 .L25:
178 movq 40(%rsp), %rax
179 xorl %edx, %edx
180 movq $0, 131214(%rax)
181 movw %dx, 131222(%rax)
182 addl $1, 131228(%rax)
183 addq $344, %rsp
184 popq %rbx
185 popq %rbp
186 popq %r12
187 popq %r13
188 popq %r14
189 popq %r15
191 .L55:
192 leaq do_pc1(%rip), %rdi
193 xorl %esi, %esi
194 movl $16384, %edx
195 leaq bytemask(%rip), %r14
196 leaq longmask(%rip), %r13
197 call memset@PLT
198 leaq pc1(%rip), %r9
199 leaq do_pc1(%rip), %r8
200 xorl %esi, %esi
201 movl $613566757, %edi
202 .L8:
203 movl (%r9,%rsi,4), %r11d
204 movl %esi, %r15d
205 leal -1(%r11), %ebx
206 movl %ebx, %edx
207 sarl $31, %edx
208 shrl $29, %edx
209 leal (%rbx,%rdx), %eax
210 andl $7, %eax
211 subl %edx, %eax
212 movl %esi, %edx
213 addl $1, %eax
214 shrl $2, %edx
215 cltq
216 movzbl (%r14,%rax), %ecx
217 movl %edx, %eax
218 mull %edi
219 imull $28, %edx, %eax
220 movslq %edx, %rdx
221 subl %eax, %r15d
222 movl %r15d, %eax
223 addl $4, %eax
224 testl %ebx, %ebx
225 cltq
226 movq 0(%r13,%rax,8), %r10
227 leal 6(%r11), %eax
228 cmovns %ebx, %eax
229 sarl $3, %eax
230 cltq
231 leaq (%rdx,%rax,2), %rdx
232 xorl %eax, %eax
233 salq $10, %rdx
234 addq %r8, %rdx
235 .p2align 4,,10
236 .p2align 3
237 .L5:
238 addq $1, %rax
239 cmpq $128, %rax
240 je .L58
241 .L7:
242 testq %rax, %rcx
243 je .L5
244 orq %r10, (%rdx,%rax,8)
245 addq $1, %rax
246 cmpq $128, %rax
247 jne .L7
248 .L58:
249 addq $1, %rsi
250 cmpq $56, %rsi
251 jne .L8
252 leaq do_pc2(%rip), %r8
253 movl $1024, %ecx
254 xorl %eax, %eax
255 leaq pc2(%rip), %r10
256 leaq BITMASK(%rip), %r12
257 xorl %esi, %esi
258 movq %r8, %rdi
259 movl $-1840700269, %r9d
260 rep stosq
261 movl $-1431655765, %edi
262 .L12:
263 movl (%r10,%rsi,4), %eax
264 movl %esi, %ebx
265 leal -1(%rax), %r11d
266 movl %r11d, %eax
267 imull %r9d
268 movl %r11d, %eax
269 sarl $31, %eax
270 leal (%rdx,%r11), %ecx
271 sarl $2, %ecx
272 subl %eax, %ecx
273 leal 0(,%rcx,8), %eax
274 subl %ecx, %eax
275 subl %eax, %r11d
276 movl %r11d, %eax
277 addl $1, %eax
278 cltq
279 movzbl (%r14,%rax), %r11d
280 movl %esi, %eax
281 mull %edi
282 movl %edx, %eax
283 movslq %ecx, %rdx
284 shrl $4, %eax
285 salq $10, %rdx
286 leal (%rax,%rax,2), %eax
287 addq %r8, %rdx
288 sall $3, %eax
289 subl %eax, %ebx
290 movslq %ebx, %rax
291 movq (%r12,%rax,8), %rbx
292 xorl %eax, %eax
293 .p2align 4,,10
294 .p2align 3
295 .L9:
296 addq $1, %rax
297 cmpq $128, %rax
298 je .L59
299 .L11:
300 testq %rax, %r11
301 je .L9
302 orq %rbx, (%rdx,%rax,8)
303 addq $1, %rax
304 cmpq $128, %rax
305 jne .L11
306 .L59:
307 addq $1, %rsi
308 cmpq $48, %rsi
309 jne .L12
310 leaq eperm32tab(%rip), %rdi
311 xorl %esi, %esi
312 movl $16384, %edx
313 leaq eperm32tab(%rip), %rbx
314 call memset@PLT
315 leaq perm32(%rip), %r9
316 leaq esel(%rip), %rdi
317 xorl %esi, %esi
318 movl $-1431655765, %r8d
319 .L15:
320 movl (%rdi,%rsi,4), %eax
321 subl $1, %eax
322 cltq
323 movl (%r9,%rax,4), %r10d
324 subl $1, %r10d
325 movl %r10d, %eax
326 andl $7, %eax
327 movzbl (%r14,%rax), %ecx
328 movl %esi, %eax
329 mull %r8d
330 movl %edx, %r15d
331 shrl $4, %r15d
332 movslq %r15d, %rdx
333 movl %esi, %r15d
334 leal (%rdx,%rdx,2), %eax
335 sall $3, %eax
336 subl %eax, %r15d
337 movslq %r10d, %rax
338 shrq $3, %rax
339 movslq %r15d, %r15
340 salq $9, %rax
341 addq %rdx, %rax
342 leaq (%rbx,%rax,8), %r10
343 movl $255, %eax
344 .p2align 4,,10
345 .p2align 3
346 .L14:
347 testq %rax, %rcx
348 je .L13
349 movq %rax, %rdx
350 movq (%r12,%r15,8), %r11
351 salq $4, %rdx
352 orq %r11, (%r10,%rdx)
353 .L13:
354 subq $1, %rax
355 cmpq $-1, %rax
356 jne .L14
357 addq $1, %rsi
358 cmpq $48, %rsi
359 jne .L15
360 movl $47, %eax
361 .L16:
362 movl (%rdi,%rax,4), %edx
363 leal -1(%rdx), %ecx
364 addl $31, %edx
365 movslq %edx, %rdx
366 movslq %ecx, %rcx
367 movl %eax, 80(%rsp,%rcx,4)
368 leal 48(%rax), %ecx
369 subq $1, %rax
370 cmpq $-1, %rax
371 movl %ecx, 80(%rsp,%rdx,4)
372 jne .L16
373 leaq efp(%rip), %rdi
374 movl $16384, %edx
375 xorl %esi, %esi
376 call memset@PLT
377 leaq final_perm(%rip), %r11
378 leaq efp(%rip), %r10
379 xorl %r8d, %r8d
380 movl $715827883, %r9d
381 .L19:
382 movl (%r11,%r8,4), %eax
383 subl $1, %eax
384 cltq
385 movl 80(%rsp,%rax,4), %ecx
386 movl %ecx, %eax
387 imull %r9d
388 movl %ecx, %eax
389 sarl $31, %eax
390 subl %eax, %edx
391 movslq %edx, %rax
392 leal (%rax,%rax,2), %edx
393 salq $7, %rax
394 addl %edx, %edx
395 subl %edx, %ecx
396 movl %ecx, %edx
397 addl $26, %edx
398 movslq %edx, %rdx
399 movq 0(%r13,%rdx,8), %rsi
400 movq %r8, %rdx
401 andl $31, %edx
402 movq 0(%r13,%rdx,8), %rdi
403 movl %r8d, %edx
404 sarl $5, %edx
405 movslq %edx, %rdx
406 addq %rdx, %rax
407 leaq (%r10,%rax,8), %rcx
408 movl $63, %eax
409 .p2align 4,,10
410 .p2align 3
411 .L18:
412 testq %rax, %rsi
413 je .L17
414 movq %rax, %rdx
415 salq $4, %rdx
416 orq %rdi, (%rcx,%rdx)
417 .L17:
418 subq $1, %rax
419 cmpq $-1, %rax
420 jne .L18
421 addq $1, %r8
422 cmpq $64, %r8
423 jne .L19
424 movl $1, small_tables_initialized.7490(%rip)
425 jmp .L4
426 .L2:
427 leaq eperm32tab(%rip), %rbx
428 jmp .L20
429 .size __init_des_r, .-__init_des_r
430 .p2align 4,,15
431 .globl __init_des
432 .type __init_des, @function
433 __init_des:
434 movq _ufc_foobar@GOTPCREL(%rip), %rdi
435 jmp __init_des_r@PLT
436 .size __init_des, .-__init_des
437 .p2align 4,,15
438 .globl _ufc_setup_salt_r
439 .type _ufc_setup_salt_r, @function
440 _ufc_setup_salt_r:
441 pushq %rbx
442 movq %rdi, %rbx
443 subq $16, %rsp
444 movl 131228(%rsi), %eax
445 testl %eax, %eax
446 je .L92
447 .L62:
448 movzbl (%rbx), %edx
449 cmpb $90, %dl
450 jg .L64
451 cmpb $65, %dl
452 jge .L65
453 leal -46(%rdx), %eax
454 cmpb $11, %al
455 jbe .L65
456 .L80:
457 xorl %eax, %eax
458 .L61:
459 addq $16, %rsp
460 popq %rbx
462 .p2align 4,,10
463 .p2align 3
464 .L64:
465 leal -97(%rdx), %eax
466 cmpb $25, %al
467 ja .L80
468 .L65:
469 movzbl 1(%rbx), %ecx
470 cmpb $90, %cl
471 jg .L66
472 cmpb $65, %cl
473 jge .L67
474 leal -46(%rcx), %eax
475 cmpb $11, %al
476 ja .L80
477 .L67:
478 cmpb %dl, 131214(%rsi)
479 je .L93
480 .L68:
481 leaq BITMASK(%rip), %r9
482 movb %cl, 131215(%rsi)
483 movb %dl, 131214(%rsi)
484 xorl %edi, %edi
485 xorl %ecx, %ecx
486 .L74:
487 movsbl (%rbx), %eax
488 cmpb $96, %al
489 jle .L69
490 subl $59, %eax
491 movslq %eax, %rdx
492 .L70:
493 xorl %eax, %eax
494 .p2align 4,,10
495 .p2align 3
496 .L73:
497 btq %rax, %rdx
498 jnc .L72
499 leaq (%rax,%rdi), %r8
500 orq (%r9,%r8,8), %rcx
501 .L72:
502 addq $1, %rax
503 cmpq $6, %rax
504 jne .L73
505 addq $6, %rdi
506 addq $1, %rbx
507 cmpq $12, %rdi
508 jne .L74
509 movq 131216(%rsi), %r10
510 leaq 128(%rsi), %rax
511 leaq 32896(%rsi), %r9
512 xorq %rcx, %r10
513 .p2align 4,,10
514 .p2align 3
515 .L75:
516 movq (%rax), %r8
517 addq $8, %rax
518 movq %r8, %rdx
519 shrq $32, %rdx
520 xorq %r8, %rdx
521 andq %r10, %rdx
522 movq %rdx, %rdi
523 salq $32, %rdi
524 orq %rdi, %rdx
525 xorq %r8, %rdx
526 cmpq %r9, %rax
527 movq %rdx, -8(%rax)
528 jne .L75
529 movq 131216(%rsi), %r10
530 leaq 65664(%rsi), %r9
531 xorq %rcx, %r10
532 .p2align 4,,10
533 .p2align 3
534 .L76:
535 movq (%rax), %r8
536 addq $8, %rax
537 movq %r8, %rdx
538 shrq $32, %rdx
539 xorq %r8, %rdx
540 andq %r10, %rdx
541 movq %rdx, %rdi
542 salq $32, %rdi
543 orq %rdi, %rdx
544 xorq %r8, %rdx
545 cmpq %r9, %rax
546 movq %rdx, -8(%rax)
547 jne .L76
548 movq 131216(%rsi), %r10
549 leaq 98432(%rsi), %r9
550 xorq %rcx, %r10
551 .p2align 4,,10
552 .p2align 3
553 .L77:
554 movq (%rax), %r8
555 addq $8, %rax
556 movq %r8, %rdx
557 shrq $32, %rdx
558 xorq %r8, %rdx
559 andq %r10, %rdx
560 movq %rdx, %rdi
561 salq $32, %rdi
562 orq %rdi, %rdx
563 xorq %r8, %rdx
564 cmpq %r9, %rax
565 movq %rdx, -8(%rax)
566 jne .L77
567 movq 131216(%rsi), %r10
568 leaq 131200(%rsi), %r9
569 xorq %rcx, %r10
570 .p2align 4,,10
571 .p2align 3
572 .L78:
573 movq (%rax), %r8
574 addq $8, %rax
575 movq %r8, %rdx
576 shrq $32, %rdx
577 xorq %r8, %rdx
578 andq %r10, %rdx
579 movq %rdx, %rdi
580 salq $32, %rdi
581 orq %rdi, %rdx
582 xorq %r8, %rdx
583 cmpq %r9, %rax
584 movq %rdx, -8(%rax)
585 jne .L78
586 movq %rcx, 131216(%rsi)
587 addq $16, %rsp
588 movl $1, %eax
589 popq %rbx
591 .L66:
592 leal -97(%rcx), %eax
593 cmpb $25, %al
594 ja .L80
595 jmp .L67
596 .p2align 4,,10
597 .p2align 3
598 .L92:
599 movq %rsi, %rdi
600 movq %rsi, 8(%rsp)
601 call __init_des_r@PLT
602 movq 8(%rsp), %rsi
603 jmp .L62
604 .p2align 4,,10
605 .p2align 3
606 .L69:
607 cmpb $64, %al
608 jle .L71
609 subl $53, %eax
610 movslq %eax, %rdx
611 jmp .L70
612 .L71:
613 subl $46, %eax
614 movslq %eax, %rdx
615 jmp .L70
616 .L93:
617 cmpb %cl, 131215(%rsi)
618 movl $1, %eax
619 jne .L68
620 jmp .L61
621 .size _ufc_setup_salt_r, .-_ufc_setup_salt_r
622 .p2align 4,,15
623 .globl _ufc_mk_keytab_r
624 .type _ufc_mk_keytab_r, @function
625 _ufc_mk_keytab_r:
626 pushq %r15
627 leaq 8(%rdi), %r9
628 pushq %r14
629 leaq do_pc1(%rip), %rcx
630 pushq %r13
631 pushq %r12
632 pushq %rbp
633 pushq %rbx
634 xorl %r8d, %r8d
635 xorl %edx, %edx
636 .p2align 4,,10
637 .p2align 3
638 .L95:
639 movzbl (%rdi), %eax
640 addq $1, %rdi
641 andl $127, %eax
642 orq (%rcx,%rax,8), %rdx
643 orq 1024(%rcx,%rax,8), %r8
644 addq $2048, %rcx
645 cmpq %r9, %rdi
646 jne .L95
647 leaq 1024+do_pc2(%rip), %r15
648 xorl %edi, %edi
649 movl $1, %r9d
650 leaq -1024(%r15), %r14
651 leaq 2048(%r14), %r12
652 leaq 3072(%r14), %r13
653 leaq 2048(%r12), %rbp
654 leaq 3072(%rbp), %rbx
655 jmp .L97
656 .p2align 4,,10
657 .p2align 3
658 .L100:
659 leaq rots(%rip), %rax
660 movl (%rax,%rdi), %r9d
661 .L97:
662 movl $28, %eax
663 movl %r9d, %ecx
664 movq %rdx, %r10
665 subl %r9d, %eax
666 salq %cl, %r10
667 movq %r8, %r11
668 movl %eax, %ecx
669 shrq %cl, %rdx
670 orq %r10, %rdx
671 movq %rdx, %r10
672 movq %rdx, %rcx
673 shrq $14, %r10
674 shrq $21, %rcx
675 andl $127, %ecx
676 andl $127, %r10d
677 movq (%r15,%r10,8), %r10
678 orq (%r14,%rcx,8), %r10
679 movq %rdx, %rcx
680 andl $127, %ecx
681 orq 0(%r13,%rcx,8), %r10
682 movq %rdx, %rcx
683 shrq $7, %rcx
684 andl $127, %ecx
685 orq (%r12,%rcx,8), %r10
686 movl %r9d, %ecx
687 leaq 5120+do_pc2(%rip), %r9
688 salq %cl, %r11
689 movl %eax, %ecx
690 shrq %cl, %r8
691 orq %r11, %r8
692 movabsq $140737488388096, %r11
693 movq %r8, %rcx
694 movq %r8, %rax
695 salq $32, %r10
696 andl $127, %eax
697 shrq $21, %rcx
698 orq (%rbx,%rax,8), %r11
699 andl $127, %ecx
700 movq 0(%rbp,%rcx,8), %rax
701 movq %r8, %rcx
702 shrq $14, %rcx
703 andl $127, %ecx
704 orq %r11, %rax
705 orq (%r9,%rcx,8), %rax
706 movq %r8, %rcx
707 shrq $7, %rcx
708 leaq 1024(%r9), %r11
709 andl $127, %ecx
710 orq (%r11,%rcx,8), %rax
711 orq %r10, %rax
712 movq %rax, (%rsi,%rdi,2)
713 addq $4, %rdi
714 cmpq $64, %rdi
715 jne .L100
716 popq %rbx
717 movl $0, 131224(%rsi)
718 popq %rbp
719 popq %r12
720 popq %r13
721 popq %r14
722 popq %r15
724 .size _ufc_mk_keytab_r, .-_ufc_mk_keytab_r
725 .p2align 4,,15
726 .globl _ufc_dofinalperm_r
727 .type _ufc_dofinalperm_r, @function
728 _ufc_dofinalperm_r:
729 movq (%rdi), %rcx
730 movq 8(%rdi), %r10
731 leaq efp(%rip), %rax
732 pushq %rbx
733 movq 131216(%rsi), %rsi
734 movq 16(%rdi), %r9
735 movq 24(%rdi), %rdx
736 movq %rcx, %r8
737 xorq %r10, %r8
738 andq %rsi, %r8
739 xorq %r8, %rcx
740 xorq %r10, %r8
741 movq %r9, %r10
742 xorq %rdx, %r10
743 andq %rsi, %r10
744 xorq %r10, %r9
745 xorq %rdx, %r10
746 movq %r10, %r11
747 movq %r10, %rdx
748 shrq $3, %r11
749 shrq $9, %rdx
750 andl $63, %r11d
751 andl $63, %edx
752 leaq 960(%r11), %rsi
753 leaq 896(%rdx), %rbx
754 salq $4, %rdx
755 salq $4, %rbx
756 salq $4, %rsi
757 movq (%rax,%rsi), %rsi
758 orq (%rax,%rbx), %rsi
759 movq %r11, %rbx
760 salq $4, %rbx
761 movq %rdx, %r11
762 movq 15368(%rax,%rbx), %rdx
763 orq 14344(%rax,%r11), %rdx
764 movq %r10, %r11
765 shrq $19, %r11
766 shrq $25, %r10
767 andl $63, %r11d
768 andl $63, %r10d
769 leaq 832(%r11), %rbx
770 salq $4, %r11
771 orq 13320(%rax,%r11), %rdx
772 leaq 768(%r10), %r11
773 salq $4, %r10
774 orq 12296(%rax,%r10), %rdx
775 movq %r9, %r10
776 salq $4, %rbx
777 shrq $3, %r10
778 orq (%rax,%rbx), %rsi
779 salq $4, %r11
780 andl $63, %r10d
781 orq (%rax,%r11), %rsi
782 leaq 704(%r10), %r11
783 salq $4, %r11
784 salq $4, %r10
785 orq 11272(%rax,%r10), %rdx
786 movq %r9, %r10
787 orq (%rax,%r11), %rsi
788 shrq $9, %r10
789 andl $63, %r10d
790 leaq 640(%r10), %r11
791 salq $4, %r10
792 orq 10248(%rax,%r10), %rdx
793 movq %r9, %r10
794 shrq $25, %r9
795 shrq $19, %r10
796 salq $4, %r11
797 andl $63, %r9d
798 andl $63, %r10d
799 orq (%rax,%r11), %rsi
800 leaq 576(%r10), %r11
801 salq $4, %r10
802 orq 9224(%rax,%r10), %rdx
803 leaq 512(%r9), %r10
804 salq $4, %r9
805 orq 8200(%rax,%r9), %rdx
806 movq %r8, %r9
807 salq $4, %r11
808 shrq $3, %r9
809 orq (%rax,%r11), %rsi
810 salq $4, %r10
811 andl $63, %r9d
812 orq (%rax,%r10), %rsi
813 leaq 448(%r9), %r10
814 salq $4, %r9
815 orq 7176(%rax,%r9), %rdx
816 movq %r8, %r9
817 shrq $9, %r9
818 salq $4, %r10
819 andl $63, %r9d
820 orq (%rax,%r10), %rsi
821 leaq 384(%r9), %r10
822 salq $4, %r10
823 orq (%rax,%r10), %rsi
824 salq $4, %r9
825 orq 6152(%rax,%r9), %rdx
826 movq %r8, %r9
827 shrq $25, %r8
828 shrq $19, %r9
829 andl $63, %r8d
830 andl $63, %r9d
831 leaq 320(%r9), %r10
832 salq $4, %r9
833 orq 5128(%rax,%r9), %rdx
834 leaq 256(%r8), %r9
835 salq $4, %r8
836 orq 4104(%rax,%r8), %rdx
837 movq %rcx, %r8
838 salq $4, %r10
839 shrq $3, %r8
840 orq (%rax,%r10), %rsi
841 salq $4, %r9
842 andl $63, %r8d
843 orq (%rax,%r9), %rsi
844 leaq 192(%r8), %r9
845 salq $4, %r8
846 orq 3080(%rax,%r8), %rdx
847 movq %rcx, %r8
848 shrq $9, %r8
849 salq $4, %r9
850 andl $63, %r8d
851 orq (%rax,%r9), %rsi
852 leaq 128(%r8), %r9
853 salq $4, %r8
854 salq $4, %r9
855 orq (%rax,%r9), %rsi
856 orq 2056(%rax,%r8), %rdx
857 movq %rcx, %r8
858 shrq $19, %r8
859 andl $63, %r8d
860 leaq 64(%r8), %r9
861 salq $4, %r8
862 orq 1032(%rax,%r8), %rdx
863 salq $4, %r9
864 orq (%rax,%r9), %rsi
865 shrq $21, %rcx
866 andl $1008, %ecx
867 addq %rcx, %rax
868 orq 8(%rax), %rdx
869 orq (%rax), %rsi
870 popq %rbx
871 movq %rsi, (%rdi)
872 movq %rdx, 8(%rdi)
874 .size _ufc_dofinalperm_r, .-_ufc_dofinalperm_r
875 .p2align 4,,15
876 .globl _ufc_output_conversion_r
877 .type _ufc_output_conversion_r, @function
878 _ufc_output_conversion_r:
879 movzbl (%rdx), %eax
880 movzbl 1(%rdx), %edx
881 movq %rcx, %r8
882 testb %dl, %dl
883 movb %al, 131200(%rcx)
884 cmovne %edx, %eax
885 leaq 131202(%rcx), %rdx
886 movb %al, 131201(%rcx)
887 movl $26, %ecx
888 .L108:
889 movq %rdi, %rax
890 shrq %cl, %rax
891 andl $63, %eax
892 cmpq $37, %rax
893 jbe .L105
894 addl $59, %eax
895 .L106:
896 subl $6, %ecx
897 movb %al, (%rdx)
898 addq $1, %rdx
899 cmpl $-4, %ecx
900 jne .L108
901 leal 0(,%rsi,4), %r9d
902 movq %rsi, %rax
903 salq $30, %rdi
904 shrq $2, %rax
905 movl %edi, %esi
906 leaq 131207(%r8), %rdx
907 andl $60, %r9d
908 orq %rax, %rsi
909 movl $26, %ecx
910 .L112:
911 movq %rsi, %rax
912 shrq %cl, %rax
913 andl $63, %eax
914 cmpq $37, %rax
915 jbe .L109
916 addl $59, %eax
917 .L110:
918 subl $6, %ecx
919 movb %al, (%rdx)
920 addq $1, %rdx
921 cmpl $-4, %ecx
922 jne .L112
923 cmpl $37, %r9d
924 jg .L120
925 leal 53(%r9), %edx
926 leal 46(%r9), %eax
927 cmpl $12, %r9d
928 movb $0, 131213(%r8)
929 cmovl %eax, %edx
930 movl %edx, %r9d
931 movb %r9b, 131212(%r8)
933 .p2align 4,,10
934 .p2align 3
935 .L105:
936 leal 53(%rax), %r10d
937 leal 46(%rax), %r9d
938 cmpq $12, %rax
939 movl %r10d, %eax
940 cmovb %r9d, %eax
941 jmp .L106
942 .p2align 4,,10
943 .p2align 3
944 .L109:
945 leal 53(%rax), %r10d
946 leal 46(%rax), %edi
947 cmpq $12, %rax
948 movl %r10d, %eax
949 cmovb %edi, %eax
950 jmp .L110
951 .p2align 4,,10
952 .p2align 3
953 .L120:
954 addl $59, %r9d
955 movb $0, 131213(%r8)
956 movb %r9b, 131212(%r8)
958 .size _ufc_output_conversion_r, .-_ufc_output_conversion_r
959 .section .rodata.str1.1,"aMS",@progbits,1
960 .LC0:
961 .string ".."
962 .text
963 .p2align 4,,15
964 .globl __encrypt_r
965 .type __encrypt_r, @function
966 __encrypt_r:
967 pushq %r12
968 pushq %rbp
969 movl %esi, %r12d
970 pushq %rbx
971 movq %rdi, %rbx
972 leaq .LC0(%rip), %rdi
973 movq %rdx, %rbp
974 movq %rdx, %rsi
975 subq $32, %rsp
976 call _ufc_setup_salt_r@PLT
977 movl 131224(%rbp), %eax
978 testl %r12d, %r12d
979 sete %dl
980 testl %eax, %eax
981 sete %al
982 cmpb %al, %dl
983 je .L122
984 leaq 120(%rbp), %rax
985 leaq 56(%rbp), %rdi
986 movq %rbp, %rdx
987 .p2align 4,,10
988 .p2align 3
989 .L123:
990 movq (%rdx), %rsi
991 movq (%rax), %rcx
992 subq $8, %rax
993 addq $8, %rdx
994 movq %rsi, 8(%rax)
995 movq %rcx, -8(%rdx)
996 cmpq %rax, %rdi
997 jne .L123
998 movl %r12d, 131224(%rbp)
999 .L122:
1000 xorl %edx, %edx
1001 movl $8, %eax
1002 xorl %ecx, %ecx
1003 leaq BITMASK(%rip), %r8
1004 leaq initial_perm(%rip), %rdi
1005 leaq esel(%rip), %rsi
1006 jmp .L126
1007 .p2align 4,,10
1008 .p2align 3
1009 .L142:
1010 movl (%rsi,%rdx), %eax
1011 subl $1, %eax
1012 cltq
1013 movslq (%rdi,%rax,4), %rax
1014 .L126:
1015 cmpb $0, -1(%rbx,%rax)
1016 je .L124
1017 orq (%r8,%rdx,2), %rcx
1018 .L124:
1019 addq $4, %rdx
1020 cmpq $96, %rdx
1021 jne .L142
1022 xorl %edx, %edx
1023 movl $4, %eax
1024 xorl %esi, %esi
1025 leaq BITMASK(%rip), %r9
1026 leaq initial_perm(%rip), %r8
1027 leaq 96+esel(%rip), %rdi
1028 jmp .L125
1029 .p2align 4,,10
1030 .p2align 3
1031 .L143:
1032 movl (%rdi,%rdx), %eax
1033 subl $1, %eax
1034 cltq
1035 movslq (%r8,%rax,4), %rax
1036 .L125:
1037 cmpb $0, -1(%rbx,%rax)
1038 je .L127
1039 orq (%r9,%rdx,2), %rsi
1040 .L127:
1041 addq $4, %rdx
1042 cmpq $96, %rdx
1043 jne .L143
1044 xorl %edx, %edx
1045 movl $7, %eax
1046 xorl %edi, %edi
1047 leaq BITMASK(%rip), %r10
1048 leaq initial_perm(%rip), %r9
1049 leaq esel(%rip), %r8
1050 jmp .L128
1051 .p2align 4,,10
1052 .p2align 3
1053 .L144:
1054 movl (%r8,%rdx), %eax
1055 addl $31, %eax
1056 cltq
1057 movslq (%r9,%rax,4), %rax
1058 .L128:
1059 cmpb $0, -1(%rbx,%rax)
1060 je .L129
1061 orq (%r10,%rdx,2), %rdi
1062 .L129:
1063 addq $4, %rdx
1064 cmpq $96, %rdx
1065 jne .L144
1066 xorl %edx, %edx
1067 movl $3, %eax
1068 xorl %r8d, %r8d
1069 leaq BITMASK(%rip), %r11
1070 leaq initial_perm(%rip), %r10
1071 leaq 96+esel(%rip), %r9
1072 jmp .L130
1073 .p2align 4,,10
1074 .p2align 3
1075 .L145:
1076 movl (%r9,%rdx), %eax
1077 addl $31, %eax
1078 cltq
1079 movslq (%r10,%rax,4), %rax
1080 .L130:
1081 cmpb $0, -1(%rbx,%rax)
1082 je .L131
1083 orq (%r11,%rdx,2), %r8
1084 .L131:
1085 addq $4, %rdx
1086 cmpq $96, %rdx
1087 jne .L145
1088 movq %rsp, %r12
1089 movq %rsi, 8(%rsp)
1090 movq %rdi, 16(%rsp)
1091 movq %r12, %rdx
1092 movq %rbp, %rsi
1093 movl $1, %edi
1094 movq %rcx, (%rsp)
1095 movq %r8, 24(%rsp)
1096 call _ufc_doit_r@PLT
1097 movq %rbp, %rsi
1098 movq %r12, %rdi
1099 call _ufc_dofinalperm_r@PLT
1100 movq (%rsp), %rsi
1101 movq 8(%rsp), %rcx
1102 xorl %eax, %eax
1103 movl $2147483648, %edx
1104 leaq longmask(%rip), %rdi
1105 jmp .L134
1106 .p2align 4,,10
1107 .p2align 3
1108 .L146:
1109 movq (%rdi,%rax,8), %rdx
1110 .L134:
1111 testq %rdx, %rsi
1112 setne (%rbx,%rax)
1113 addq $1, %rax
1114 cmpq $32, %rax
1115 jne .L146
1116 xorl %eax, %eax
1117 movl $2147483648, %edx
1118 leaq longmask(%rip), %rsi
1119 jmp .L133
1120 .p2align 4,,10
1121 .p2align 3
1122 .L147:
1123 movq (%rsi,%rax,8), %rdx
1124 .L133:
1125 testq %rdx, %rcx
1126 setne 32(%rbx,%rax)
1127 addq $1, %rax
1128 cmpq $32, %rax
1129 jne .L147
1130 addq $32, %rsp
1131 popq %rbx
1132 popq %rbp
1133 popq %r12
1135 .size __encrypt_r, .-__encrypt_r
1136 .weak encrypt_r
1137 .set encrypt_r,__encrypt_r
1138 .p2align 4,,15
1139 .globl encrypt
1140 .type encrypt, @function
1141 encrypt:
1142 movq _ufc_foobar@GOTPCREL(%rip), %rdx
1143 jmp __encrypt_r@PLT
1144 .size encrypt, .-encrypt
1145 .p2align 4,,15
1146 .globl __setkey_r
1147 .type __setkey_r, @function
1148 __setkey_r:
1149 pushq %rbp
1150 pushq %rbx
1151 movq %rdi, %rbx
1152 leaq .LC0(%rip), %rdi
1153 movq %rsi, %rbp
1154 subq $24, %rsp
1155 call _ufc_setup_salt_r@PLT
1156 leaq 8(%rsp), %rdi
1157 leaq 64(%rbx), %r8
1158 movq %rdi, %rsi
1159 .p2align 4,,10
1160 .p2align 3
1161 .L150:
1162 leaq 8(%rbx), %rcx
1163 movq %rbx, %rax
1164 xorl %edx, %edx
1165 .p2align 4,,10
1166 .p2align 3
1167 .L151:
1168 addq $1, %rax
1169 addl %edx, %edx
1170 orb -1(%rax), %dl
1171 cmpq %rcx, %rax
1172 jne .L151
1173 shrb %dl
1174 addq $1, %rsi
1175 movq %rax, %rbx
1176 movb %dl, -1(%rsi)
1177 cmpq %rax, %r8
1178 jne .L150
1179 movq %rbp, %rsi
1180 call _ufc_mk_keytab_r@PLT
1181 addq $24, %rsp
1182 popq %rbx
1183 popq %rbp
1185 .size __setkey_r, .-__setkey_r
1186 .weak setkey_r
1187 .set setkey_r,__setkey_r
1188 .p2align 4,,15
1189 .globl setkey
1190 .type setkey, @function
1191 setkey:
1192 movq _ufc_foobar@GOTPCREL(%rip), %rsi
1193 jmp __setkey_r@PLT
1194 .size setkey, .-setkey
1195 .p2align 4,,15
1196 .globl __b64_from_24bit
1197 .type __b64_from_24bit, @function
1198 __b64_from_24bit:
1199 sall $16, %edx
1200 sall $8, %ecx
1201 orl %r8d, %ecx
1202 movl %edx, %r8d
1203 leal -1(%r9), %edx
1204 orl %ecx, %r8d
1205 testl %r9d, %r9d
1206 jle .L156
1207 movl (%rsi), %eax
1208 testl %eax, %eax
1209 jle .L156
1210 leaq b64t(%rip), %r9
1211 jmp .L158
1212 .p2align 4,,10
1213 .p2align 3
1214 .L163:
1215 testl %eax, %eax
1216 jle .L156
1217 .L158:
1218 movq (%rdi), %rax
1219 subl $1, %edx
1220 leaq 1(%rax), %rcx
1221 movq %rcx, (%rdi)
1222 movl %r8d, %ecx
1223 shrl $6, %r8d
1224 andl $63, %ecx
1225 movzbl (%r9,%rcx), %ecx
1226 movb %cl, (%rax)
1227 movl (%rsi), %eax
1228 subl $1, %eax
1229 cmpl $-1, %edx
1230 movl %eax, (%rsi)
1231 jne .L163
1232 .L156:
1233 rep ret
1234 .size __b64_from_24bit, .-__b64_from_24bit
1235 .local small_tables_initialized.7490
1236 .comm small_tables_initialized.7490,4,4
1237 .local _ufc_tables_lock
1238 .comm _ufc_tables_lock,40,32
1239 .comm _ufc_foobar,131232,32
1240 .section .rodata
1241 .align 32
1242 .type b64t, @object
1243 .size b64t, 64
1244 b64t:
1245 .ascii "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv"
1246 .ascii "wxyz"
1247 .local efp
1248 .comm efp,16384,32
1249 .local eperm32tab
1250 .comm eperm32tab,16384,32
1251 .local do_pc2
1252 .comm do_pc2,8192,32
1253 .local do_pc1
1254 .comm do_pc1,16384,32
1255 .align 32
1256 .type longmask, @object
1257 .size longmask, 256
1258 longmask:
1259 .quad 2147483648
1260 .quad 1073741824
1261 .quad 536870912
1262 .quad 268435456
1263 .quad 134217728
1264 .quad 67108864
1265 .quad 33554432
1266 .quad 16777216
1267 .quad 8388608
1268 .quad 4194304
1269 .quad 2097152
1270 .quad 1048576
1271 .quad 524288
1272 .quad 262144
1273 .quad 131072
1274 .quad 65536
1275 .quad 32768
1276 .quad 16384
1277 .quad 8192
1278 .quad 4096
1279 .quad 2048
1280 .quad 1024
1281 .quad 512
1282 .quad 256
1283 .quad 128
1284 .quad 64
1285 .quad 32
1286 .quad 16
1287 .quad 8
1288 .quad 4
1289 .quad 2
1290 .quad 1
1291 .section .rodata.cst8,"aM",@progbits,8
1292 .align 8
1293 .type bytemask, @object
1294 .size bytemask, 8
1295 bytemask:
1296 .byte -128
1297 .byte 64
1298 .byte 32
1299 .byte 16
1300 .byte 8
1301 .byte 4
1302 .byte 2
1303 .byte 1
1304 .section .rodata
1305 .align 32
1306 .type BITMASK, @object
1307 .size BITMASK, 192
1308 BITMASK:
1309 .quad 1073741824
1310 .quad 536870912
1311 .quad 268435456
1312 .quad 134217728
1313 .quad 67108864
1314 .quad 33554432
1315 .quad 16777216
1316 .quad 8388608
1317 .quad 4194304
1318 .quad 2097152
1319 .quad 1048576
1320 .quad 524288
1321 .quad 16384
1322 .quad 8192
1323 .quad 4096
1324 .quad 2048
1325 .quad 1024
1326 .quad 512
1327 .quad 256
1328 .quad 128
1329 .quad 64
1330 .quad 32
1331 .quad 16
1332 .quad 8
1333 .align 32
1334 .type final_perm, @object
1335 .size final_perm, 256
1336 final_perm:
1337 .long 40
1338 .long 8
1339 .long 48
1340 .long 16
1341 .long 56
1342 .long 24
1343 .long 64
1344 .long 32
1345 .long 39
1346 .long 7
1347 .long 47
1348 .long 15
1349 .long 55
1350 .long 23
1351 .long 63
1352 .long 31
1353 .long 38
1354 .long 6
1355 .long 46
1356 .long 14
1357 .long 54
1358 .long 22
1359 .long 62
1360 .long 30
1361 .long 37
1362 .long 5
1363 .long 45
1364 .long 13
1365 .long 53
1366 .long 21
1367 .long 61
1368 .long 29
1369 .long 36
1370 .long 4
1371 .long 44
1372 .long 12
1373 .long 52
1374 .long 20
1375 .long 60
1376 .long 28
1377 .long 35
1378 .long 3
1379 .long 43
1380 .long 11
1381 .long 51
1382 .long 19
1383 .long 59
1384 .long 27
1385 .long 34
1386 .long 2
1387 .long 42
1388 .long 10
1389 .long 50
1390 .long 18
1391 .long 58
1392 .long 26
1393 .long 33
1394 .long 1
1395 .long 41
1396 .long 9
1397 .long 49
1398 .long 17
1399 .long 57
1400 .long 25
1401 .align 32
1402 .type initial_perm, @object
1403 .size initial_perm, 256
1404 initial_perm:
1405 .long 58
1406 .long 50
1407 .long 42
1408 .long 34
1409 .long 26
1410 .long 18
1411 .long 10
1412 .long 2
1413 .long 60
1414 .long 52
1415 .long 44
1416 .long 36
1417 .long 28
1418 .long 20
1419 .long 12
1420 .long 4
1421 .long 62
1422 .long 54
1423 .long 46
1424 .long 38
1425 .long 30
1426 .long 22
1427 .long 14
1428 .long 6
1429 .long 64
1430 .long 56
1431 .long 48
1432 .long 40
1433 .long 32
1434 .long 24
1435 .long 16
1436 .long 8
1437 .long 57
1438 .long 49
1439 .long 41
1440 .long 33
1441 .long 25
1442 .long 17
1443 .long 9
1444 .long 1
1445 .long 59
1446 .long 51
1447 .long 43
1448 .long 35
1449 .long 27
1450 .long 19
1451 .long 11
1452 .long 3
1453 .long 61
1454 .long 53
1455 .long 45
1456 .long 37
1457 .long 29
1458 .long 21
1459 .long 13
1460 .long 5
1461 .long 63
1462 .long 55
1463 .long 47
1464 .long 39
1465 .long 31
1466 .long 23
1467 .long 15
1468 .long 7
1469 .align 32
1470 .type sbox, @object
1471 .size sbox, 2048
1472 sbox:
1473 .long 14
1474 .long 4
1475 .long 13
1476 .long 1
1477 .long 2
1478 .long 15
1479 .long 11
1480 .long 8
1481 .long 3
1482 .long 10
1483 .long 6
1484 .long 12
1485 .long 5
1486 .long 9
1487 .long 0
1488 .long 7
1489 .long 0
1490 .long 15
1491 .long 7
1492 .long 4
1493 .long 14
1494 .long 2
1495 .long 13
1496 .long 1
1497 .long 10
1498 .long 6
1499 .long 12
1500 .long 11
1501 .long 9
1502 .long 5
1503 .long 3
1504 .long 8
1505 .long 4
1506 .long 1
1507 .long 14
1508 .long 8
1509 .long 13
1510 .long 6
1511 .long 2
1512 .long 11
1513 .long 15
1514 .long 12
1515 .long 9
1516 .long 7
1517 .long 3
1518 .long 10
1519 .long 5
1520 .long 0
1521 .long 15
1522 .long 12
1523 .long 8
1524 .long 2
1525 .long 4
1526 .long 9
1527 .long 1
1528 .long 7
1529 .long 5
1530 .long 11
1531 .long 3
1532 .long 14
1533 .long 10
1534 .long 0
1535 .long 6
1536 .long 13
1537 .long 15
1538 .long 1
1539 .long 8
1540 .long 14
1541 .long 6
1542 .long 11
1543 .long 3
1544 .long 4
1545 .long 9
1546 .long 7
1547 .long 2
1548 .long 13
1549 .long 12
1550 .long 0
1551 .long 5
1552 .long 10
1553 .long 3
1554 .long 13
1555 .long 4
1556 .long 7
1557 .long 15
1558 .long 2
1559 .long 8
1560 .long 14
1561 .long 12
1562 .long 0
1563 .long 1
1564 .long 10
1565 .long 6
1566 .long 9
1567 .long 11
1568 .long 5
1569 .long 0
1570 .long 14
1571 .long 7
1572 .long 11
1573 .long 10
1574 .long 4
1575 .long 13
1576 .long 1
1577 .long 5
1578 .long 8
1579 .long 12
1580 .long 6
1581 .long 9
1582 .long 3
1583 .long 2
1584 .long 15
1585 .long 13
1586 .long 8
1587 .long 10
1588 .long 1
1589 .long 3
1590 .long 15
1591 .long 4
1592 .long 2
1593 .long 11
1594 .long 6
1595 .long 7
1596 .long 12
1597 .long 0
1598 .long 5
1599 .long 14
1600 .long 9
1601 .long 10
1602 .long 0
1603 .long 9
1604 .long 14
1605 .long 6
1606 .long 3
1607 .long 15
1608 .long 5
1609 .long 1
1610 .long 13
1611 .long 12
1612 .long 7
1613 .long 11
1614 .long 4
1615 .long 2
1616 .long 8
1617 .long 13
1618 .long 7
1619 .long 0
1620 .long 9
1621 .long 3
1622 .long 4
1623 .long 6
1624 .long 10
1625 .long 2
1626 .long 8
1627 .long 5
1628 .long 14
1629 .long 12
1630 .long 11
1631 .long 15
1632 .long 1
1633 .long 13
1634 .long 6
1635 .long 4
1636 .long 9
1637 .long 8
1638 .long 15
1639 .long 3
1640 .long 0
1641 .long 11
1642 .long 1
1643 .long 2
1644 .long 12
1645 .long 5
1646 .long 10
1647 .long 14
1648 .long 7
1649 .long 1
1650 .long 10
1651 .long 13
1652 .long 0
1653 .long 6
1654 .long 9
1655 .long 8
1656 .long 7
1657 .long 4
1658 .long 15
1659 .long 14
1660 .long 3
1661 .long 11
1662 .long 5
1663 .long 2
1664 .long 12
1665 .long 7
1666 .long 13
1667 .long 14
1668 .long 3
1669 .long 0
1670 .long 6
1671 .long 9
1672 .long 10
1673 .long 1
1674 .long 2
1675 .long 8
1676 .long 5
1677 .long 11
1678 .long 12
1679 .long 4
1680 .long 15
1681 .long 13
1682 .long 8
1683 .long 11
1684 .long 5
1685 .long 6
1686 .long 15
1687 .long 0
1688 .long 3
1689 .long 4
1690 .long 7
1691 .long 2
1692 .long 12
1693 .long 1
1694 .long 10
1695 .long 14
1696 .long 9
1697 .long 10
1698 .long 6
1699 .long 9
1700 .long 0
1701 .long 12
1702 .long 11
1703 .long 7
1704 .long 13
1705 .long 15
1706 .long 1
1707 .long 3
1708 .long 14
1709 .long 5
1710 .long 2
1711 .long 8
1712 .long 4
1713 .long 3
1714 .long 15
1715 .long 0
1716 .long 6
1717 .long 10
1718 .long 1
1719 .long 13
1720 .long 8
1721 .long 9
1722 .long 4
1723 .long 5
1724 .long 11
1725 .long 12
1726 .long 7
1727 .long 2
1728 .long 14
1729 .long 2
1730 .long 12
1731 .long 4
1732 .long 1
1733 .long 7
1734 .long 10
1735 .long 11
1736 .long 6
1737 .long 8
1738 .long 5
1739 .long 3
1740 .long 15
1741 .long 13
1742 .long 0
1743 .long 14
1744 .long 9
1745 .long 14
1746 .long 11
1747 .long 2
1748 .long 12
1749 .long 4
1750 .long 7
1751 .long 13
1752 .long 1
1753 .long 5
1754 .long 0
1755 .long 15
1756 .long 10
1757 .long 3
1758 .long 9
1759 .long 8
1760 .long 6
1761 .long 4
1762 .long 2
1763 .long 1
1764 .long 11
1765 .long 10
1766 .long 13
1767 .long 7
1768 .long 8
1769 .long 15
1770 .long 9
1771 .long 12
1772 .long 5
1773 .long 6
1774 .long 3
1775 .long 0
1776 .long 14
1777 .long 11
1778 .long 8
1779 .long 12
1780 .long 7
1781 .long 1
1782 .long 14
1783 .long 2
1784 .long 13
1785 .long 6
1786 .long 15
1787 .long 0
1788 .long 9
1789 .long 10
1790 .long 4
1791 .long 5
1792 .long 3
1793 .long 12
1794 .long 1
1795 .long 10
1796 .long 15
1797 .long 9
1798 .long 2
1799 .long 6
1800 .long 8
1801 .long 0
1802 .long 13
1803 .long 3
1804 .long 4
1805 .long 14
1806 .long 7
1807 .long 5
1808 .long 11
1809 .long 10
1810 .long 15
1811 .long 4
1812 .long 2
1813 .long 7
1814 .long 12
1815 .long 9
1816 .long 5
1817 .long 6
1818 .long 1
1819 .long 13
1820 .long 14
1821 .long 0
1822 .long 11
1823 .long 3
1824 .long 8
1825 .long 9
1826 .long 14
1827 .long 15
1828 .long 5
1829 .long 2
1830 .long 8
1831 .long 12
1832 .long 3
1833 .long 7
1834 .long 0
1835 .long 4
1836 .long 10
1837 .long 1
1838 .long 13
1839 .long 11
1840 .long 6
1841 .long 4
1842 .long 3
1843 .long 2
1844 .long 12
1845 .long 9
1846 .long 5
1847 .long 15
1848 .long 10
1849 .long 11
1850 .long 14
1851 .long 1
1852 .long 7
1853 .long 6
1854 .long 0
1855 .long 8
1856 .long 13
1857 .long 4
1858 .long 11
1859 .long 2
1860 .long 14
1861 .long 15
1862 .long 0
1863 .long 8
1864 .long 13
1865 .long 3
1866 .long 12
1867 .long 9
1868 .long 7
1869 .long 5
1870 .long 10
1871 .long 6
1872 .long 1
1873 .long 13
1874 .long 0
1875 .long 11
1876 .long 7
1877 .long 4
1878 .long 9
1879 .long 1
1880 .long 10
1881 .long 14
1882 .long 3
1883 .long 5
1884 .long 12
1885 .long 2
1886 .long 15
1887 .long 8
1888 .long 6
1889 .long 1
1890 .long 4
1891 .long 11
1892 .long 13
1893 .long 12
1894 .long 3
1895 .long 7
1896 .long 14
1897 .long 10
1898 .long 15
1899 .long 6
1900 .long 8
1901 .long 0
1902 .long 5
1903 .long 9
1904 .long 2
1905 .long 6
1906 .long 11
1907 .long 13
1908 .long 8
1909 .long 1
1910 .long 4
1911 .long 10
1912 .long 7
1913 .long 9
1914 .long 5
1915 .long 0
1916 .long 15
1917 .long 14
1918 .long 2
1919 .long 3
1920 .long 12
1921 .long 13
1922 .long 2
1923 .long 8
1924 .long 4
1925 .long 6
1926 .long 15
1927 .long 11
1928 .long 1
1929 .long 10
1930 .long 9
1931 .long 3
1932 .long 14
1933 .long 5
1934 .long 0
1935 .long 12
1936 .long 7
1937 .long 1
1938 .long 15
1939 .long 13
1940 .long 8
1941 .long 10
1942 .long 3
1943 .long 7
1944 .long 4
1945 .long 12
1946 .long 5
1947 .long 6
1948 .long 11
1949 .long 0
1950 .long 14
1951 .long 9
1952 .long 2
1953 .long 7
1954 .long 11
1955 .long 4
1956 .long 1
1957 .long 9
1958 .long 12
1959 .long 14
1960 .long 2
1961 .long 0
1962 .long 6
1963 .long 10
1964 .long 13
1965 .long 15
1966 .long 3
1967 .long 5
1968 .long 8
1969 .long 2
1970 .long 1
1971 .long 14
1972 .long 7
1973 .long 4
1974 .long 10
1975 .long 8
1976 .long 13
1977 .long 15
1978 .long 12
1979 .long 9
1980 .long 0
1981 .long 3
1982 .long 5
1983 .long 6
1984 .long 11
1985 .align 32
1986 .type perm32, @object
1987 .size perm32, 128
1988 perm32:
1989 .long 16
1990 .long 7
1991 .long 20
1992 .long 21
1993 .long 29
1994 .long 12
1995 .long 28
1996 .long 17
1997 .long 1
1998 .long 15
1999 .long 23
2000 .long 26
2001 .long 5
2002 .long 18
2003 .long 31
2004 .long 10
2005 .long 2
2006 .long 8
2007 .long 24
2008 .long 14
2009 .long 32
2010 .long 27
2011 .long 3
2012 .long 9
2013 .long 19
2014 .long 13
2015 .long 30
2016 .long 6
2017 .long 22
2018 .long 11
2019 .long 4
2020 .long 25
2021 .align 32
2022 .type esel, @object
2023 .size esel, 192
2024 esel:
2025 .long 32
2026 .long 1
2027 .long 2
2028 .long 3
2029 .long 4
2030 .long 5
2031 .long 4
2032 .long 5
2033 .long 6
2034 .long 7
2035 .long 8
2036 .long 9
2037 .long 8
2038 .long 9
2039 .long 10
2040 .long 11
2041 .long 12
2042 .long 13
2043 .long 12
2044 .long 13
2045 .long 14
2046 .long 15
2047 .long 16
2048 .long 17
2049 .long 16
2050 .long 17
2051 .long 18
2052 .long 19
2053 .long 20
2054 .long 21
2055 .long 20
2056 .long 21
2057 .long 22
2058 .long 23
2059 .long 24
2060 .long 25
2061 .long 24
2062 .long 25
2063 .long 26
2064 .long 27
2065 .long 28
2066 .long 29
2067 .long 28
2068 .long 29
2069 .long 30
2070 .long 31
2071 .long 32
2072 .long 1
2073 .align 32
2074 .type pc2, @object
2075 .size pc2, 192
2076 pc2:
2077 .long 14
2078 .long 17
2079 .long 11
2080 .long 24
2081 .long 1
2082 .long 5
2083 .long 3
2084 .long 28
2085 .long 15
2086 .long 6
2087 .long 21
2088 .long 10
2089 .long 23
2090 .long 19
2091 .long 12
2092 .long 4
2093 .long 26
2094 .long 8
2095 .long 16
2096 .long 7
2097 .long 27
2098 .long 20
2099 .long 13
2100 .long 2
2101 .long 41
2102 .long 52
2103 .long 31
2104 .long 37
2105 .long 47
2106 .long 55
2107 .long 30
2108 .long 40
2109 .long 51
2110 .long 45
2111 .long 33
2112 .long 48
2113 .long 44
2114 .long 49
2115 .long 39
2116 .long 56
2117 .long 34
2118 .long 53
2119 .long 46
2120 .long 42
2121 .long 50
2122 .long 36
2123 .long 29
2124 .long 32
2125 .align 32
2126 .type rots, @object
2127 .size rots, 64
2128 rots:
2129 .long 1
2130 .long 1
2131 .long 2
2132 .long 2
2133 .long 2
2134 .long 2
2135 .long 2
2136 .long 2
2137 .long 1
2138 .long 2
2139 .long 2
2140 .long 2
2141 .long 2
2142 .long 2
2143 .long 2
2144 .long 1
2145 .align 32
2146 .type pc1, @object
2147 .size pc1, 224
2148 pc1:
2149 .long 57
2150 .long 49
2151 .long 41
2152 .long 33
2153 .long 25
2154 .long 17
2155 .long 9
2156 .long 1
2157 .long 58
2158 .long 50
2159 .long 42
2160 .long 34
2161 .long 26
2162 .long 18
2163 .long 10
2164 .long 2
2165 .long 59
2166 .long 51
2167 .long 43
2168 .long 35
2169 .long 27
2170 .long 19
2171 .long 11
2172 .long 3
2173 .long 60
2174 .long 52
2175 .long 44
2176 .long 36
2177 .long 63
2178 .long 55
2179 .long 47
2180 .long 39
2181 .long 31
2182 .long 23
2183 .long 15
2184 .long 7
2185 .long 62
2186 .long 54
2187 .long 46
2188 .long 38
2189 .long 30
2190 .long 22
2191 .long 14
2192 .long 6
2193 .long 61
2194 .long 53
2195 .long 45
2196 .long 37
2197 .long 29
2198 .long 21
2199 .long 13
2200 .long 5
2201 .long 28
2202 .long 20
2203 .long 12
2204 .long 4
2205 .weak __pthread_mutex_unlock
2206 .weak __pthread_mutex_lock