clarify the purpose of this project
[nyanglibc.git] / debug / strncat_chk.shared.s
blobde11c61f2d3f140a97ebace9bf14c845929eab60
1 .text
2 #APP
3 memmove = __GI_memmove
4 memset = __GI_memset
5 memcpy = __GI_memcpy
6 #NO_APP
7 .p2align 4,,15
8 .globl __strncat_chk
9 .type __strncat_chk, @function
10 __strncat_chk:
11 leaq (%rdi,%rcx), %r11
12 movq %rdi, %r8
13 jmp .L3
14 .p2align 4,,10
15 .p2align 3
16 .L2:
17 leaq 1(%r8), %r9
18 cmpb $0, -1(%r9)
19 je .L70
20 movq %r10, %rcx
21 movq %r9, %r8
22 .L3:
23 cmpq %r8, %r11
24 leaq -1(%rcx), %r10
25 jne .L2
26 .L8:
27 subq $8, %rsp
28 call __GI___chk_fail
29 .p2align 4,,10
30 .p2align 3
31 .L70:
32 cmpq $3, %rdx
33 leaq -1(%r8), %rax
34 jbe .L4
35 movzbl (%rsi), %r9d
36 testb %r9b, %r9b
37 movb %r9b, (%r8)
38 je .L34
39 cmpq $1, %rcx
40 je .L8
41 movzbl 1(%rsi), %r9d
42 testb %r9b, %r9b
43 movb %r9b, 1(%r8)
44 je .L34
45 cmpq $2, %rcx
46 je .L8
47 movzbl 2(%rsi), %r9d
48 testb %r9b, %r9b
49 movb %r9b, 2(%r8)
50 je .L34
51 movq %rdx, %r8
52 andq $-4, %r8
53 addq %rax, %r8
54 .L11:
55 cmpq $3, %rcx
56 leaq -4(%rcx), %r10
57 je .L8
58 addq $4, %rsi
59 movzbl -1(%rsi), %r9d
60 addq $4, %rax
61 testb %r9b, %r9b
62 movb %r9b, (%rax)
63 je .L34
64 cmpq %rax, %r8
65 je .L71
66 testq %r10, %r10
67 je .L8
68 movzbl (%rsi), %ecx
69 testb %cl, %cl
70 movb %cl, 1(%rax)
71 je .L34
72 cmpq $1, %r10
73 je .L8
74 movzbl 1(%rsi), %ecx
75 testb %cl, %cl
76 movb %cl, 2(%rax)
77 je .L34
78 cmpq $2, %r10
79 je .L8
80 movzbl 2(%rsi), %r9d
81 movq %r10, %rcx
82 testb %r9b, %r9b
83 movb %r9b, 3(%rax)
84 jne .L11
85 .L34:
86 movq %rdi, %rax
87 ret
88 .p2align 4,,10
89 .p2align 3
90 .L4:
91 testq %rdx, %rdx
92 je .L34
93 .L16:
94 movzbl (%rsi), %r9d
95 leaq 1(%rsi), %rcx
96 leaq 1(%rax), %r8
97 testb %r9b, %r9b
98 movb %r9b, 1(%rax)
99 je .L34
100 addq %rdx, %rsi
101 leaq 1(%rax,%r10), %rdx
102 jmp .L14
103 .p2align 4,,10
104 .p2align 3
105 .L72:
106 addq $1, %rcx
107 movzbl -1(%rcx), %eax
108 addq $1, %r8
109 testb %al, %al
110 movb %al, (%r8)
111 je .L34
112 .L14:
113 cmpq %rsi, %rcx
114 je .L13
115 subq $1, %r10
116 cmpq %rdx, %r8
117 jne .L72
118 jmp .L8
119 .L13:
120 testq %r10, %r10
121 je .L8
122 movb $0, 1(%r8)
123 jmp .L34
124 .L71:
125 andl $3, %edx
126 je .L13
127 testq %r10, %r10
128 je .L8
129 leaq -5(%rcx), %r10
130 jmp .L16
131 .size __strncat_chk, .-__strncat_chk