#define mul32x32_64(a,b) (((uint64_t)(a))*(b)) #include <stdlib.h> #include <string.h> #include <stdint.h> #define DONNA_INLINE #undef ALIGN #define ALIGN(x) __attribute__((aligned(x))) static inline void U32TO8_LE(unsigned char *p, const uint32_t v) { p[0] = (unsigned char)(v ); p[1] = (unsigned char)(v >> 8); p[2] = (unsigned char)(v >> 16); p[3] = (unsigned char)(v >> 24); } static inline uint32_t U8TO32_LE(const unsigned char *p) { return (((uint32_t)(p[0]) ) | ((uint32_t)(p[1]) << 8) | ((uint32_t)(p[2]) << 16) | ((uint32_t)(p[3]) << 24)); }