#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