diff options
Diffstat (limited to 'linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/generic/mpih-mul2.c')
-rw-r--r--[-rwxr-xr-x] | linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/generic/mpih-mul2.c | 136 |
1 files changed, 68 insertions, 68 deletions
diff --git a/linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/generic/mpih-mul2.c b/linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/generic/mpih-mul2.c index 4dbcb9a..3b75496 100755..100644 --- a/linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/generic/mpih-mul2.c +++ b/linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/generic/mpih-mul2.c | |||
@@ -1,68 +1,68 @@ | |||
1 | /* mpih-mul2.c - MPI helper functions | 1 | /* mpih-mul2.c - MPI helper functions |
2 | * Copyright (C) 1994, 1996, 1997, 1998, 2001, | 2 | * Copyright (C) 1994, 1996, 1997, 1998, 2001, |
3 | * 2002 Free Software Foundation, Inc. | 3 | * 2002 Free Software Foundation, Inc. |
4 | * | 4 | * |
5 | * This file is part of Libgcrypt. | 5 | * This file is part of Libgcrypt. |
6 | * | 6 | * |
7 | * Libgcrypt is free software; you can redistribute it and/or modify | 7 | * Libgcrypt is free software; you can redistribute it and/or modify |
8 | * it under the terms of the GNU Lesser General Public License as | 8 | * it under the terms of the GNU Lesser General Public License as |
9 | * published by the Free Software Foundation; either version 2.1 of | 9 | * published by the Free Software Foundation; either version 2.1 of |
10 | * the License, or (at your option) any later version. | 10 | * the License, or (at your option) any later version. |
11 | * | 11 | * |
12 | * Libgcrypt is distributed in the hope that it will be useful, | 12 | * Libgcrypt is distributed in the hope that it will be useful, |
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 | * GNU Lesser General Public License for more details. | 15 | * GNU Lesser General Public License for more details. |
16 | * | 16 | * |
17 | * You should have received a copy of the GNU Lesser General Public | 17 | * You should have received a copy of the GNU Lesser General Public |
18 | * License along with this program; if not, write to the Free Software | 18 | * License along with this program; if not, write to the Free Software |
19 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA | 19 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
20 | * | 20 | * |
21 | * Note: This code is heavily based on the GNU MP Library. | 21 | * Note: This code is heavily based on the GNU MP Library. |
22 | * Actually it's the same code with only minor changes in the | 22 | * Actually it's the same code with only minor changes in the |
23 | * way the data is stored; this is to support the abstraction | 23 | * way the data is stored; this is to support the abstraction |
24 | * of an optional secure memory allocation which may be used | 24 | * of an optional secure memory allocation which may be used |
25 | * to avoid revealing of sensitive data due to paging etc. | 25 | * to avoid revealing of sensitive data due to paging etc. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | #include <config.h> | 28 | #include <config.h> |
29 | #include <stdio.h> | 29 | #include <stdio.h> |
30 | #include <stdlib.h> | 30 | #include <stdlib.h> |
31 | #include "mpi-internal.h" | 31 | #include "mpi-internal.h" |
32 | #include "longlong.h" | 32 | #include "longlong.h" |
33 | 33 | ||
34 | 34 | ||
35 | mpi_limb_t | 35 | mpi_limb_t |
36 | _gcry_mpih_addmul_1( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, | 36 | _gcry_mpih_addmul_1( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, |
37 | mpi_size_t s1_size, mpi_limb_t s2_limb) | 37 | mpi_size_t s1_size, mpi_limb_t s2_limb) |
38 | { | 38 | { |
39 | mpi_limb_t cy_limb; | 39 | mpi_limb_t cy_limb; |
40 | mpi_size_t j; | 40 | mpi_size_t j; |
41 | mpi_limb_t prod_high, prod_low; | 41 | mpi_limb_t prod_high, prod_low; |
42 | mpi_limb_t x; | 42 | mpi_limb_t x; |
43 | 43 | ||
44 | /* The loop counter and index J goes from -SIZE to -1. This way | 44 | /* The loop counter and index J goes from -SIZE to -1. This way |
45 | * the loop becomes faster. */ | 45 | * the loop becomes faster. */ |
46 | j = -s1_size; | 46 | j = -s1_size; |
47 | res_ptr -= j; | 47 | res_ptr -= j; |
48 | s1_ptr -= j; | 48 | s1_ptr -= j; |
49 | 49 | ||
50 | cy_limb = 0; | 50 | cy_limb = 0; |
51 | do | 51 | do |
52 | { | 52 | { |
53 | umul_ppmm( prod_high, prod_low, s1_ptr[j], s2_limb ); | 53 | umul_ppmm( prod_high, prod_low, s1_ptr[j], s2_limb ); |
54 | 54 | ||
55 | prod_low += cy_limb; | 55 | prod_low += cy_limb; |
56 | cy_limb = (prod_low < cy_limb?1:0) + prod_high; | 56 | cy_limb = (prod_low < cy_limb?1:0) + prod_high; |
57 | 57 | ||
58 | x = res_ptr[j]; | 58 | x = res_ptr[j]; |
59 | prod_low = x + prod_low; | 59 | prod_low = x + prod_low; |
60 | cy_limb += prod_low < x?1:0; | 60 | cy_limb += prod_low < x?1:0; |
61 | res_ptr[j] = prod_low; | 61 | res_ptr[j] = prod_low; |
62 | } | 62 | } |
63 | while ( ++j ); | 63 | while ( ++j ); |
64 | 64 | ||
65 | return cy_limb; | 65 | return cy_limb; |
66 | } | 66 | } |
67 | 67 | ||
68 | 68 | ||