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