#include <string.h>
#include <stdint.h>
#include <limits.h>
#include "libc.h"

#define ALIGN (sizeof(size_t))
#define ONES ((size_t)-1 / UCHAR_MAX)
#define HIGHS (ONES * (UCHAR_MAX / 2 + 1))
#define HASZERO(x) ((x)-ONES & ~(x)&HIGHS)

char* __strchrnul(const char* s, int c) {
  size_t *w, k;

  c = (unsigned char)c;
  if (!c)
    return (char*)s + strlen(s);

  for (; (uintptr_t)s % ALIGN; s++)
    if (!*s || *(unsigned char*)s == c)
      return (char*)s;
  k = ONES * c;
  for (w = (void*)s; !HASZERO(*w) && !HASZERO(*w ^ k); w++)
    ;
  for (s = (void*)w; *s && *(unsigned char*)s != c; s++)
    ;
  return (char*)s;
}

weak_alias(__strchrnul, strchrnul);
