36 "movb -1(%3,%1), %%al\n\t" 39 "xorl %%eax, %%eax\n\t" 68 "adcl %%eax, (%4,%0,4)\n\t" 73 :
"r" (
value0 ),
"1" ( addend0 ),
"2" (
size )
96 "sbbl %%eax, (%4,%0,4)\n\t" 101 :
"r" (
value0 ),
"1" ( subtrahend0 ),
121 "rcll $1, (%3,%0,4)\n\t" 143 "rcrl $1, -4(%2,%0,4)\n\t" 181 unsigned int size ) {
187 "movl -4(%3, %1, 4), %k2\n\t" 188 "cmpl -4(%4, %1, 4), %k2\n\t" 194 "0" ( 0 ),
"1" (
size ) );
210 ( (
const void * )
value0 );
211 unsigned int index = (
bit / ( 8 *
sizeof (
value->element[0] ) ) );
230 "bsrl -4(%2,%1,4), %0\n\t" 234 "leal 1(%k0,%k1,8), %k0\n\t" 255 ( (
void * )
dest0 );
262 "xorl %%eax, %%eax\n\t" 284 ( (
void * )
dest0 );
292 :
"0" (
dest0 ),
"1" ( source0 ),
316 "movb -1(%3,%1), %%al\n\t" 326 unsigned int multiplicand_size,
328 unsigned int multiplier_size,
void bigint_grow_raw(const bigint_element_t *source0, unsigned int source_size, bigint_element_t *dest0, unsigned int dest_size)
static const uint32_t * reference0
static unsigned int unsigned int bit
int bigint_max_set_bit_raw(const bigint_element_t *value0, unsigned int size)
void bigint_subtract_raw(const bigint_element_t *subtrahend0, bigint_element_t *value0, unsigned int size)
void bigint_multiply_raw(const bigint_element_t *multiplicand0, unsigned int multiplicand_size, const bigint_element_t *multiplier0, unsigned int multiplier_size, bigint_element_t *result0)
Multiply big integers.
static unsigned int const void size_t len
void bigint_rol_raw(bigint_element_t *value0, unsigned int size)
static unsigned int const void * data
void bigint_add_raw(const bigint_element_t *addend0, bigint_element_t *value0, unsigned int size)
uint32_t bigint_element_t
Element of a big integer.
void bigint_init_raw(bigint_element_t *value0, unsigned int size, const void *data, size_t len)
static unsigned int uint32_t unsigned int dest_size
pseudo_bit_t value[0x00020]
static __attribute__((always_inline)) void bigint_init_raw(uint32_t *value0
Initialise big integer.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
int bigint_bit_is_set_raw(const bigint_element_t *value0, unsigned int size, unsigned int bit)
__asm__ __volatile__("\n1:\n\t" "movb -1(%3,%1), %%al\n\t" "stosb\n\t" "loop 1b\n\t" "xorl %%eax, %%eax\n\t" "mov %4, %1\n\t" "rep stosb\n\t" :"=&D"(discard_D), "=&c"(discard_c), "+m"(*value) :"r"(data), "g"(pad_len), "0"(value0), "1"(len) :"eax")
static unsigned int source_size __unused
__asm__(".section \".rodata\", \"a\", " PROGBITS "\n\t" "\nprivate_key_data:\n\t" ".size private_key_data, ( . - private_key_data )\n\t" ".equ private_key_len, ( . - private_key_data )\n\t" ".previous\n\t")
static unsigned int source_size
void bigint_shrink_raw(const bigint_element_t *source0, unsigned int source_size, bigint_element_t *dest0, unsigned int dest_size)
void bigint_done_raw(const bigint_element_t *value0, unsigned int size, void *out, size_t len)
static unsigned int size void * out
Optimised string operations.
void bigint_ror_raw(bigint_element_t *value0, unsigned int size)
int bigint_is_zero_raw(const bigint_element_t *value0, unsigned int size)
static unsigned int uint32_t * dest0
int bigint_is_geq_raw(const bigint_element_t *value0, const bigint_element_t *reference0, unsigned int size)
typedef bigint_t(X25519_SIZE) x25519_t
An X25519 unsigned big integer used in internal calculations.