1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#include "abi.inc"
#include "defs.inc"
.text
PUBFUNC cepis_normalize_cep
test %rsi, %rsi
jz .Lnorm_usage
movb $0, (%rsi)
test %rdi, %rdi
jz .Lnorm_bad
xor %ecx, %ecx
.Lnorm_loop:
movzbl (%rdi), %eax
inc %rdi
test %al, %al
jz .Lnorm_done
cmp $'-', %al
je .Lnorm_loop
cmp $'.', %al
je .Lnorm_loop
cmp $' ', %al
je .Lnorm_loop
cmp $9, %al
jb .Lnorm_digit
cmp $13, %al
jbe .Lnorm_loop
.Lnorm_digit:
cmp $'0', %al
jb .Lnorm_bad
cmp $'9', %al
ja .Lnorm_bad
cmp $8, %rcx
jae .Lnorm_bad
mov %al, (%rsi, %rcx, 1)
inc %rcx
jmp .Lnorm_loop
.Lnorm_done:
cmp $8, %rcx
jne .Lnorm_bad
movb $0, 8(%rsi)
xor %eax, %eax
ret
.Lnorm_bad:
movb $0, (%rsi)
mov $CEPIS_ERR_INVALID_CEP, %eax
ret
.Lnorm_usage:
mov $CEPIS_ERR_USAGE, %eax
ret
ENDFUNC cepis_normalize_cep
.section .note.GNU-stack,"",@progbits
|