clarify the purpose of this project
[nyanglibc.git] / intl / localealias.shared.s.in
blob40103ffdb37c17ac6738f7678a3a7660a893b5c2
1 .text
2 #APP
3 memmove = __GI_memmove
4 memset = __GI_memset
5 memcpy = __GI_memcpy
6 .section __libc_freeres_ptrs, "aw", %nobits
7 .previous
8 .section __libc_freeres_ptrs, "aw", %nobits
9 .previous
10 #NO_APP
11 .p2align 4,,15
12 .type alias_compare, @function
13 alias_compare:
14 movq (%rsi), %rsi
15 movq (%rdi), %rdi
16 leaq _nl_C_locobj(%rip), %rdx
17 jmp __GI___strcasecmp_l
18 .size alias_compare, .-alias_compare
19 .section .rodata.str1.1,"aMS",@progbits,1
20 .LC0:
21 .string "rce"
22 .text
23 .p2align 4,,15
24 .type read_alias_file, @function
25 read_alias_file:
26 pushq %rbp
27 movslq %esi, %rdx
28 movq %rdi, %rsi
29 leaq 44(%rdx), %rax
30 movq %rsp, %rbp
31 pushq %r15
32 pushq %r14
33 pushq %r13
34 pushq %r12
35 andq $-16, %rax
36 pushq %rbx
37 subq $488, %rsp
38 subq %rax, %rsp
39 leaq 15(%rsp), %rbx
40 andq $-16, %rbx
41 movq %rbx, %rdi
42 call __GI_mempcpy@PLT
43 movabsq $3343197463928335407, %rdi
44 movl $115, %edx
45 leaq .LC0(%rip), %rsi
46 movq %rdi, (%rax)
47 movl $1634298977, 8(%rax)
48 movq %rbx, %rdi
49 movw %dx, 12(%rax)
50 call _IO_new_fopen@PLT
51 testq %rax, %rax
52 movq $0, -456(%rbp)
53 je .L3
54 movq %rax, %r12
55 movl (%rax), %eax
56 leaq -448(%rbp), %r15
57 movl %eax, %edx
58 orb $-128, %dh
59 testb $16, %al
60 movl %edx, (%r12)
61 jne .L94
62 .p2align 4,,10
63 .p2align 3
64 .L5:
65 movq %r12, %rdx
66 movl $400, %esi
67 movq %r15, %rdi
68 call __GI___fgets_unlocked
69 testq %rax, %rax
70 je .L28
71 movl $10, %esi
72 movq %r15, %rdi
73 movq %r15, %rbx
74 call __GI_strchr
75 movq %rax, %r14
76 movq __libc_tsd_CTYPE_B@gottpoff(%rip), %rax
77 movzbl -448(%rbp), %ecx
78 movq %fs:(%rax), %rdx
79 movq %rcx, %rax
80 testb $32, 1(%rdx,%rcx,2)
81 je .L7
82 .p2align 4,,10
83 .p2align 3
84 .L8:
85 addq $1, %rbx
86 movzbl (%rbx), %ecx
87 testb $32, 1(%rdx,%rcx,2)
88 movq %rcx, %rax
89 jne .L8
90 .L7:
91 testb %al, %al
92 je .L9
93 cmpb $35, %al
94 je .L9
95 leaq 1(%rbx), %rsi
96 movzbl 1(%rbx), %eax
97 jmp .L93
98 .p2align 4,,10
99 .p2align 3
100 .L10:
101 testw %ax, %ax
102 jne .L12
103 addq $1, %rsi
104 movzbl (%rsi), %eax
105 .L93:
106 movq %rax, %rcx
107 movzwl (%rdx,%rax,2), %eax
108 andw $8192, %ax
109 testb %cl, %cl
110 jne .L10
111 testw %ax, %ax
112 movq %rsi, %r13
113 je .L9
114 .p2align 4,,10
115 .p2align 3
116 .L15:
117 addq $1, %r13
118 movzbl 0(%r13), %ecx
119 testb $32, 1(%rdx,%rcx,2)
120 movq %rcx, %rax
121 jne .L15
122 testb %al, %al
123 jne .L95
124 .p2align 4,,10
125 .p2align 3
126 .L9:
127 testq %r14, %r14
128 je .L27
129 .L26:
130 testb $16, (%r12)
131 je .L5
132 .L28:
133 movq %r12, %rdi
134 call _IO_new_fclose@PLT
135 cmpq $0, -456(%rbp)
136 jne .L96
137 .L3:
138 movq -456(%rbp), %rax
139 leaq -40(%rbp), %rsp
140 popq %rbx
141 popq %r12
142 popq %r13
143 popq %r14
144 popq %r15
145 popq %rbp
147 .p2align 4,,10
148 .p2align 3
149 .L97:
150 movl $10, %esi
151 movq %r15, %rdi
152 call __GI_strchr
153 testq %rax, %rax
154 jne .L26
155 .L27:
156 movq %r12, %rdx
157 movl $400, %esi
158 movq %r15, %rdi
159 call __GI___fgets_unlocked
160 testq %rax, %rax
161 jne .L97
162 jmp .L26
163 .p2align 4,,10
164 .p2align 3
165 .L12:
166 movb $0, (%rsi)
167 leaq 1(%rsi), %r13
168 movzbl 1(%rsi), %esi
169 testb $32, 1(%rdx,%rsi,2)
170 movq %rsi, %rax
171 jne .L15
172 testb %al, %al
173 je .L9
174 .p2align 4,,10
175 .p2align 3
176 .L95:
177 movzbl 1(%r13), %eax
178 leaq 1(%r13), %rsi
179 testb %al, %al
180 je .L16
181 movzbl %al, %edi
182 testb $32, 1(%rdx,%rdi,2)
183 je .L18
184 jmp .L17
185 .p2align 4,,10
186 .p2align 3
187 .L98:
188 movzbl %al, %ecx
189 testb $32, 1(%rdx,%rcx,2)
190 jne .L17
191 .L18:
192 addq $1, %rsi
193 movzbl (%rsi), %eax
194 testb %al, %al
195 jne .L98
196 .L16:
197 movq nmap(%rip), %rax
198 movq maxmap(%rip), %rsi
199 cmpq %rsi, %rax
200 movq %rax, -464(%rbp)
201 jnb .L99
202 .L19:
203 movq %rbx, %rdi
204 call __GI_strlen
205 leaq 1(%rax), %rdx
206 movq %r13, %rdi
207 movq %rdx, -472(%rbp)
208 call __GI_strlen
209 movq -472(%rbp), %rdx
210 movq string_space_act(%rip), %r11
211 leaq 1(%rax), %r10
212 movq string_space(%rip), %r9
213 movq map(%rip), %rcx
214 leaq (%r11,%rdx), %rax
215 movq %rax, -472(%rbp)
216 addq %r10, %rax
217 movq %rax, %rdi
218 movq %rax, -480(%rbp)
219 movq string_space_max(%rip), %rax
220 cmpq %rax, %rdi
221 jbe .L23
222 leaq (%rdx,%r10), %rsi
223 movl $1024, %edi
224 movq %r11, -520(%rbp)
225 movq %r10, -512(%rbp)
226 movq %rdx, -504(%rbp)
227 cmpq $1024, %rsi
228 movq %r9, -488(%rbp)
229 cmovb %rdi, %rsi
230 movq %r9, %rdi
231 leaq (%rsi,%rax), %r8
232 movq %r8, %rsi
233 movq %r8, -496(%rbp)
234 call realloc@PLT
235 testq %rax, %rax
236 je .L28
237 movq -488(%rbp), %r9
238 movq map(%rip), %rcx
239 movq -496(%rbp), %r8
240 movq -504(%rbp), %rdx
241 movq -512(%rbp), %r10
242 movq -520(%rbp), %r11
243 cmpq %r9, %rax
244 jne .L100
245 .L24:
246 movq %rax, string_space(%rip)
247 movq %r8, string_space_max(%rip)
248 movq %rax, %r9
249 .L23:
250 movq -464(%rbp), %rax
251 movq %rbx, %rsi
252 movq %r10, -504(%rbp)
253 movq %r9, -496(%rbp)
254 salq $4, %rax
255 leaq (%rcx,%rax), %rdi
256 movq %rdi, -488(%rbp)
257 leaq (%r9,%r11), %rdi
258 call __GI_memcpy@PLT
259 movq -488(%rbp), %rbx
260 movq -472(%rbp), %rdi
261 movq %r13, %rsi
262 movq -496(%rbp), %r9
263 movq -504(%rbp), %r10
264 movq %rax, (%rbx)
265 addq %r9, %rdi
266 movq %r10, %rdx
267 call __GI_memcpy@PLT
268 movq -464(%rbp), %r13
269 movq -480(%rbp), %rdi
270 movq %rax, 8(%rbx)
271 addq $1, -456(%rbp)
272 addq $1, %r13
273 movq %rdi, string_space_act(%rip)
274 movq %r13, nmap(%rip)
275 jmp .L9
276 .L96:
277 movq nmap(%rip), %rsi
278 movq map(%rip), %rdi
279 leaq alias_compare(%rip), %rcx
280 movl $16, %edx
281 call __GI_qsort
282 jmp .L3
283 .L17:
284 cmpb $10, %al
285 jne .L101
286 movl $2560, %eax
287 movw %ax, (%rsi)
288 jmp .L16
289 .L99:
290 testq %rsi, %rsi
291 jne .L102
292 movl $1600, %esi
293 movq $100, -472(%rbp)
294 .L20:
295 movq map(%rip), %rdi
296 call realloc@PLT
297 testq %rax, %rax
298 je .L28
299 movq %rax, map(%rip)
300 movq -472(%rbp), %rax
301 movq %rax, maxmap(%rip)
302 jmp .L19
303 .L101:
304 movb $0, (%rsi)
305 jmp .L16
306 .L102:
307 leaq (%rsi,%rsi), %rax
308 salq $5, %rsi
309 movq %rax, -472(%rbp)
310 jmp .L20
311 .L100:
312 movq -464(%rbp), %rdi
313 testq %rdi, %rdi
314 je .L24
315 movq %rax, %rsi
316 salq $4, %rdi
317 subq %r9, %rsi
318 addq %rcx, %rdi
319 movq %rsi, %r9
320 movq %rcx, %rsi
321 .L25:
322 addq %r9, (%rsi)
323 addq %r9, 8(%rsi)
324 addq $16, %rsi
325 cmpq %rsi, %rdi
326 jne .L25
327 jmp .L24
328 .L94:
329 movq %r12, %rdi
330 call _IO_new_fclose@PLT
331 jmp .L3
332 .size read_alias_file, .-read_alias_file
333 .section .rodata.str1.8,"aMS",@progbits,1
334 .align 8
335 .LC1:
336 .string "CONF_PREFIX/share/locale"
337 .text
338 .p2align 4,,15
339 .globl _nl_expand_alias
340 .type _nl_expand_alias, @function
341 _nl_expand_alias:
342 pushq %r15
343 pushq %r14
344 pushq %r13
345 pushq %r12
346 pushq %rbp
347 pushq %rbx
348 movq %rdi, %rbp
349 subq $8, %rsp
350 #APP
351 # 156 "localealias.c" 1
352 movl %fs:24,%eax
353 # 0 "" 2
354 #NO_APP
355 testl %eax, %eax
356 jne .L104
357 movl $1, %edx
358 #APP
359 # 47 "../sysdeps/unix/sysv/linux/x86/lowlevellock.h" 1
360 cmpxchgl %edx, lock(%rip)
361 # 0 "" 2
362 #NO_APP
363 .L105:
364 cmpq $0, locale_alias_path.9596(%rip)
365 je .L147
366 .L116:
367 movq nmap(%rip), %r15
368 testq %r15, %r15
369 jne .L148
370 .L115:
371 movq locale_alias_path.9596(%rip), %rdi
372 xorl %edx, %edx
373 movzbl (%rdi), %eax
374 testb %al, %al
375 je .L118
376 .p2align 4,,10
377 .p2align 3
378 .L151:
379 cmpb $58, %al
380 jne .L119
381 .p2align 4,,10
382 .p2align 3
383 .L111:
384 addq $1, %rdi
385 movzbl (%rdi), %eax
386 cmpb $58, %al
387 je .L111
388 testb %al, %al
389 je .L125
390 .L119:
391 leaq 1(%rdi), %rsi
392 jmp .L113
393 .p2align 4,,10
394 .p2align 3
395 .L149:
396 cmpb $58, %al
397 je .L127
398 movq %rdx, %rsi
399 .L113:
400 movzbl (%rsi), %eax
401 movq %rsi, %rcx
402 leaq 1(%rsi), %rdx
403 testb %al, %al
404 jne .L149
405 .L127:
406 cmpq %rdi, %rsi
407 ja .L150
408 .L112:
409 movq %rcx, %rdi
410 movl $1, %edx
411 movzbl (%rdi), %eax
412 testb %al, %al
413 jne .L151
414 .L118:
415 testb %dl, %dl
416 jne .L152
417 .L120:
418 xorl %r8d, %r8d
419 .L123:
420 #APP
421 # 203 "localealias.c" 1
422 movl %fs:24,%eax
423 # 0 "" 2
424 #NO_APP
425 testl %eax, %eax
426 jne .L121
427 subl $1, lock(%rip)
428 .L103:
429 addq $8, %rsp
430 movq %r8, %rax
431 popq %rbx
432 popq %rbp
433 popq %r12
434 popq %r13
435 popq %r14
436 popq %r15
438 .p2align 4,,10
439 .p2align 3
440 .L125:
441 movq %rdi, %rcx
442 jmp .L112
443 .L150:
444 movq %rsi, locale_alias_path.9596(%rip)
445 subq %rdi, %rsi
446 call read_alias_file
447 testq %rax, %rax
448 je .L115
449 movq nmap(%rip), %r15
450 testq %r15, %r15
451 je .L115
452 .L148:
453 movq map(%rip), %r14
454 xorl %ebx, %ebx
455 jmp .L110
456 .p2align 4,,10
457 .p2align 3
458 .L153:
459 je .L109
460 leaq 1(%r12), %rbx
461 .L108:
462 cmpq %rbx, %r15
463 jbe .L115
464 .L110:
465 leaq (%r15,%rbx), %r12
466 leaq _nl_C_locobj(%rip), %rdx
467 movq %rbp, %rdi
468 shrq %r12
469 movq %r12, %r13
470 salq $4, %r13
471 addq %r14, %r13
472 movq 0(%r13), %rsi
473 call __GI___strcasecmp_l
474 testl %eax, %eax
475 jns .L153
476 movq %r12, %r15
477 jmp .L108
478 .L109:
479 movq 8(%r13), %r8
480 jmp .L123
481 .L147:
482 leaq .LC1(%rip), %rax
483 movq %rax, locale_alias_path.9596(%rip)
484 jmp .L116
485 .L104:
486 xorl %eax, %eax
487 movl $1, %edx
488 lock cmpxchgl %edx, lock(%rip)
489 je .L105
490 leaq lock(%rip), %rdi
491 call __lll_lock_wait_private
492 jmp .L105
493 .p2align 4,,10
494 .p2align 3
495 .L121:
496 xorl %eax, %eax
497 #APP
498 # 203 "localealias.c" 1
499 xchgl %eax, lock(%rip)
500 # 0 "" 2
501 #NO_APP
502 cmpl $1, %eax
503 jle .L103
504 xorl %r10d, %r10d
505 movl $1, %edx
506 movl $129, %esi
507 leaq lock(%rip), %rdi
508 movl $202, %eax
509 #APP
510 # 203 "localealias.c" 1
511 syscall
513 # 0 "" 2
514 #NO_APP
515 jmp .L103
516 .L152:
517 movq %rdi, locale_alias_path.9596(%rip)
518 jmp .L120
519 .size _nl_expand_alias, .-_nl_expand_alias
520 .local locale_alias_path.9596
521 .comm locale_alias_path.9596,8,8
522 .local maxmap
523 .comm maxmap,8,8
524 .local nmap
525 .comm nmap,8,8
526 .section __libc_freeres_ptrs
527 #,"aw",@progbits
528 .align 8
529 .type map, @object
530 .size map, 8
531 map:
532 .zero 8
533 .local string_space_max
534 .comm string_space_max,8,8
535 .local string_space_act
536 .comm string_space_act,8,8
537 .align 8
538 .type string_space, @object
539 .size string_space, 8
540 string_space:
541 .zero 8
542 .local lock
543 .comm lock,4,4
544 .hidden __lll_lock_wait_private
545 .hidden _nl_C_locobj