Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
simde
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
simde
Commits
2c58d6d0
Commit
2c58d6d0
authored
Oct 30, 2023
by
yyctw
Committed by
Michael R. Crusoe
Oct 31, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Reuse unoptimized implementations of vaesimcq_u8 from x86
parent
be7e377c
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
194 additions
and
190 deletions
+194
-190
arm/neon/aes.h
arm/neon/aes.h
+20
-17
simde-aes.h
simde-aes.h
+174
-0
x86/aes.h
x86/aes.h
+0
-173
No files found.
arm/neon/aes.h
View file @
2c58d6d0
...
@@ -180,28 +180,31 @@ simde_vaesimcq_u8(simde_uint8x16_t data) {
...
@@ -180,28 +180,31 @@ simde_vaesimcq_u8(simde_uint8x16_t data) {
#if defined(SIMDE_ARM_NEON_A32V8_NATIVE) && defined(__ARM_FEATURE_AES)
#if defined(SIMDE_ARM_NEON_A32V8_NATIVE) && defined(__ARM_FEATURE_AES)
return
vaesimcq_u8
(
data
);
return
vaesimcq_u8
(
data
);
#else
#else
/* ref: https://github.com/kokke/tiny-AES-c/blob/master/aes.c */
simde_uint8x16_private
simde_uint8x16_private
a_
=
simde_uint8x16_to_private
(
data
);
a_
=
simde_uint8x16_to_private
(
data
),
r_
;
/* ref: simde/simde/x86/aes.h */
#if defined(SIMDE_X86_AES_NATIVE)
#if defined(SIMDE_X86_AES_NATIVE)
a
_
.
m128i
=
_mm_aesimc_si128
(
a_
.
m128i
);
r
_
.
m128i
=
_mm_aesimc_si128
(
a_
.
m128i
);
#else
#else
int
i
;
int
Nb
=
simde_x_aes_Nb
;
uint8_t
a
,
b
,
c
,
d
;
// uint8_t k[] = {0x0e, 0x09, 0x0d, 0x0b}; // a(x) = {0e} + {09}x + {0d}x2 + {0b}x3
for
(
i
=
0
;
i
<
4
;
++
i
)
uint8_t
i
,
j
,
col
[
4
],
res
[
4
];
{
a
=
a_
.
values
[
i
*
4
+
0
];
for
(
j
=
0
;
j
<
Nb
;
j
++
)
{
b
=
a_
.
values
[
i
*
4
+
1
];
for
(
i
=
0
;
i
<
4
;
i
++
)
{
c
=
a_
.
values
[
i
*
4
+
2
];
col
[
i
]
=
a_
.
values
[
Nb
*
j
+
i
];
d
=
a_
.
values
[
i
*
4
+
3
];
}
a_
.
values
[
i
*
4
+
0
]
=
Multiply
(
a
,
0x0e
)
^
Multiply
(
b
,
0x0b
)
^
Multiply
(
c
,
0x0d
)
^
Multiply
(
d
,
0x09
);
//coef_mult(k, col, res);
a_
.
values
[
i
*
4
+
1
]
=
Multiply
(
a
,
0x09
)
^
Multiply
(
b
,
0x0e
)
^
Multiply
(
c
,
0x0b
)
^
Multiply
(
d
,
0x0d
);
simde_x_aes_coef_mult_lookup
(
4
,
col
,
res
);
a_
.
values
[
i
*
4
+
2
]
=
Multiply
(
a
,
0x0d
)
^
Multiply
(
b
,
0x09
)
^
Multiply
(
c
,
0x0e
)
^
Multiply
(
d
,
0x0b
);
a_
.
values
[
i
*
4
+
3
]
=
Multiply
(
a
,
0x0b
)
^
Multiply
(
b
,
0x0d
)
^
Multiply
(
c
,
0x09
)
^
Multiply
(
d
,
0x0e
);
for
(
i
=
0
;
i
<
4
;
i
++
)
{
r_
.
values
[
Nb
*
j
+
i
]
=
res
[
i
];
}
}
}
#endif
#endif
return
simde_uint8x16_from_private
(
a
_
);
return
simde_uint8x16_from_private
(
r
_
);
#endif
#endif
}
}
#if defined(SIMDE_ARM_NEON_A32V8_ENABLE_NATIVE_ALIASES)
#if defined(SIMDE_ARM_NEON_A32V8_ENABLE_NATIVE_ALIASES)
...
...
simde-aes.h
View file @
2c58d6d0
...
@@ -40,6 +40,154 @@ SIMDE_DISABLE_UNWANTED_DIAGNOSTICS
...
@@ -40,6 +40,154 @@ SIMDE_DISABLE_UNWANTED_DIAGNOSTICS
*/
*/
#define simde_x_aes_Nb 4
#define simde_x_aes_Nb 4
static
uint8_t
simde_x_aes_gmult_lookup_table
[
8
][
256
]
=
{
{
// gmult(0x02, b);
0x00
,
0x02
,
0x04
,
0x06
,
0x08
,
0x0a
,
0x0c
,
0x0e
,
0x10
,
0x12
,
0x14
,
0x16
,
0x18
,
0x1a
,
0x1c
,
0x1e
,
0x20
,
0x22
,
0x24
,
0x26
,
0x28
,
0x2a
,
0x2c
,
0x2e
,
0x30
,
0x32
,
0x34
,
0x36
,
0x38
,
0x3a
,
0x3c
,
0x3e
,
0x40
,
0x42
,
0x44
,
0x46
,
0x48
,
0x4a
,
0x4c
,
0x4e
,
0x50
,
0x52
,
0x54
,
0x56
,
0x58
,
0x5a
,
0x5c
,
0x5e
,
0x60
,
0x62
,
0x64
,
0x66
,
0x68
,
0x6a
,
0x6c
,
0x6e
,
0x70
,
0x72
,
0x74
,
0x76
,
0x78
,
0x7a
,
0x7c
,
0x7e
,
0x80
,
0x82
,
0x84
,
0x86
,
0x88
,
0x8a
,
0x8c
,
0x8e
,
0x90
,
0x92
,
0x94
,
0x96
,
0x98
,
0x9a
,
0x9c
,
0x9e
,
0xa0
,
0xa2
,
0xa4
,
0xa6
,
0xa8
,
0xaa
,
0xac
,
0xae
,
0xb0
,
0xb2
,
0xb4
,
0xb6
,
0xb8
,
0xba
,
0xbc
,
0xbe
,
0xc0
,
0xc2
,
0xc4
,
0xc6
,
0xc8
,
0xca
,
0xcc
,
0xce
,
0xd0
,
0xd2
,
0xd4
,
0xd6
,
0xd8
,
0xda
,
0xdc
,
0xde
,
0xe0
,
0xe2
,
0xe4
,
0xe6
,
0xe8
,
0xea
,
0xec
,
0xee
,
0xf0
,
0xf2
,
0xf4
,
0xf6
,
0xf8
,
0xfa
,
0xfc
,
0xfe
,
0x1b
,
0x19
,
0x1f
,
0x1d
,
0x13
,
0x11
,
0x17
,
0x15
,
0x0b
,
0x09
,
0x0f
,
0x0d
,
0x03
,
0x01
,
0x07
,
0x05
,
0x3b
,
0x39
,
0x3f
,
0x3d
,
0x33
,
0x31
,
0x37
,
0x35
,
0x2b
,
0x29
,
0x2f
,
0x2d
,
0x23
,
0x21
,
0x27
,
0x25
,
0x5b
,
0x59
,
0x5f
,
0x5d
,
0x53
,
0x51
,
0x57
,
0x55
,
0x4b
,
0x49
,
0x4f
,
0x4d
,
0x43
,
0x41
,
0x47
,
0x45
,
0x7b
,
0x79
,
0x7f
,
0x7d
,
0x73
,
0x71
,
0x77
,
0x75
,
0x6b
,
0x69
,
0x6f
,
0x6d
,
0x63
,
0x61
,
0x67
,
0x65
,
0x9b
,
0x99
,
0x9f
,
0x9d
,
0x93
,
0x91
,
0x97
,
0x95
,
0x8b
,
0x89
,
0x8f
,
0x8d
,
0x83
,
0x81
,
0x87
,
0x85
,
0xbb
,
0xb9
,
0xbf
,
0xbd
,
0xb3
,
0xb1
,
0xb7
,
0xb5
,
0xab
,
0xa9
,
0xaf
,
0xad
,
0xa3
,
0xa1
,
0xa7
,
0xa5
,
0xdb
,
0xd9
,
0xdf
,
0xdd
,
0xd3
,
0xd1
,
0xd7
,
0xd5
,
0xcb
,
0xc9
,
0xcf
,
0xcd
,
0xc3
,
0xc1
,
0xc7
,
0xc5
,
0xfb
,
0xf9
,
0xff
,
0xfd
,
0xf3
,
0xf1
,
0xf7
,
0xf5
,
0xeb
,
0xe9
,
0xef
,
0xed
,
0xe3
,
0xe1
,
0xe7
,
0xe5
},
{
// gmult(0x01, b);
0x00
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
,
0x09
,
0x0a
,
0x0b
,
0x0c
,
0x0d
,
0x0e
,
0x0f
,
0x10
,
0x11
,
0x12
,
0x13
,
0x14
,
0x15
,
0x16
,
0x17
,
0x18
,
0x19
,
0x1a
,
0x1b
,
0x1c
,
0x1d
,
0x1e
,
0x1f
,
0x20
,
0x21
,
0x22
,
0x23
,
0x24
,
0x25
,
0x26
,
0x27
,
0x28
,
0x29
,
0x2a
,
0x2b
,
0x2c
,
0x2d
,
0x2e
,
0x2f
,
0x30
,
0x31
,
0x32
,
0x33
,
0x34
,
0x35
,
0x36
,
0x37
,
0x38
,
0x39
,
0x3a
,
0x3b
,
0x3c
,
0x3d
,
0x3e
,
0x3f
,
0x40
,
0x41
,
0x42
,
0x43
,
0x44
,
0x45
,
0x46
,
0x47
,
0x48
,
0x49
,
0x4a
,
0x4b
,
0x4c
,
0x4d
,
0x4e
,
0x4f
,
0x50
,
0x51
,
0x52
,
0x53
,
0x54
,
0x55
,
0x56
,
0x57
,
0x58
,
0x59
,
0x5a
,
0x5b
,
0x5c
,
0x5d
,
0x5e
,
0x5f
,
0x60
,
0x61
,
0x62
,
0x63
,
0x64
,
0x65
,
0x66
,
0x67
,
0x68
,
0x69
,
0x6a
,
0x6b
,
0x6c
,
0x6d
,
0x6e
,
0x6f
,
0x70
,
0x71
,
0x72
,
0x73
,
0x74
,
0x75
,
0x76
,
0x77
,
0x78
,
0x79
,
0x7a
,
0x7b
,
0x7c
,
0x7d
,
0x7e
,
0x7f
,
0x80
,
0x81
,
0x82
,
0x83
,
0x84
,
0x85
,
0x86
,
0x87
,
0x88
,
0x89
,
0x8a
,
0x8b
,
0x8c
,
0x8d
,
0x8e
,
0x8f
,
0x90
,
0x91
,
0x92
,
0x93
,
0x94
,
0x95
,
0x96
,
0x97
,
0x98
,
0x99
,
0x9a
,
0x9b
,
0x9c
,
0x9d
,
0x9e
,
0x9f
,
0xa0
,
0xa1
,
0xa2
,
0xa3
,
0xa4
,
0xa5
,
0xa6
,
0xa7
,
0xa8
,
0xa9
,
0xaa
,
0xab
,
0xac
,
0xad
,
0xae
,
0xaf
,
0xb0
,
0xb1
,
0xb2
,
0xb3
,
0xb4
,
0xb5
,
0xb6
,
0xb7
,
0xb8
,
0xb9
,
0xba
,
0xbb
,
0xbc
,
0xbd
,
0xbe
,
0xbf
,
0xc0
,
0xc1
,
0xc2
,
0xc3
,
0xc4
,
0xc5
,
0xc6
,
0xc7
,
0xc8
,
0xc9
,
0xca
,
0xcb
,
0xcc
,
0xcd
,
0xce
,
0xcf
,
0xd0
,
0xd1
,
0xd2
,
0xd3
,
0xd4
,
0xd5
,
0xd6
,
0xd7
,
0xd8
,
0xd9
,
0xda
,
0xdb
,
0xdc
,
0xdd
,
0xde
,
0xdf
,
0xe0
,
0xe1
,
0xe2
,
0xe3
,
0xe4
,
0xe5
,
0xe6
,
0xe7
,
0xe8
,
0xe9
,
0xea
,
0xeb
,
0xec
,
0xed
,
0xee
,
0xef
,
0xf0
,
0xf1
,
0xf2
,
0xf3
,
0xf4
,
0xf5
,
0xf6
,
0xf7
,
0xf8
,
0xf9
,
0xfa
,
0xfb
,
0xfc
,
0xfd
,
0xfe
,
0xff
,
},
{
// gmult(0x01, b);
0x00
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
,
0x09
,
0x0a
,
0x0b
,
0x0c
,
0x0d
,
0x0e
,
0x0f
,
0x10
,
0x11
,
0x12
,
0x13
,
0x14
,
0x15
,
0x16
,
0x17
,
0x18
,
0x19
,
0x1a
,
0x1b
,
0x1c
,
0x1d
,
0x1e
,
0x1f
,
0x20
,
0x21
,
0x22
,
0x23
,
0x24
,
0x25
,
0x26
,
0x27
,
0x28
,
0x29
,
0x2a
,
0x2b
,
0x2c
,
0x2d
,
0x2e
,
0x2f
,
0x30
,
0x31
,
0x32
,
0x33
,
0x34
,
0x35
,
0x36
,
0x37
,
0x38
,
0x39
,
0x3a
,
0x3b
,
0x3c
,
0x3d
,
0x3e
,
0x3f
,
0x40
,
0x41
,
0x42
,
0x43
,
0x44
,
0x45
,
0x46
,
0x47
,
0x48
,
0x49
,
0x4a
,
0x4b
,
0x4c
,
0x4d
,
0x4e
,
0x4f
,
0x50
,
0x51
,
0x52
,
0x53
,
0x54
,
0x55
,
0x56
,
0x57
,
0x58
,
0x59
,
0x5a
,
0x5b
,
0x5c
,
0x5d
,
0x5e
,
0x5f
,
0x60
,
0x61
,
0x62
,
0x63
,
0x64
,
0x65
,
0x66
,
0x67
,
0x68
,
0x69
,
0x6a
,
0x6b
,
0x6c
,
0x6d
,
0x6e
,
0x6f
,
0x70
,
0x71
,
0x72
,
0x73
,
0x74
,
0x75
,
0x76
,
0x77
,
0x78
,
0x79
,
0x7a
,
0x7b
,
0x7c
,
0x7d
,
0x7e
,
0x7f
,
0x80
,
0x81
,
0x82
,
0x83
,
0x84
,
0x85
,
0x86
,
0x87
,
0x88
,
0x89
,
0x8a
,
0x8b
,
0x8c
,
0x8d
,
0x8e
,
0x8f
,
0x90
,
0x91
,
0x92
,
0x93
,
0x94
,
0x95
,
0x96
,
0x97
,
0x98
,
0x99
,
0x9a
,
0x9b
,
0x9c
,
0x9d
,
0x9e
,
0x9f
,
0xa0
,
0xa1
,
0xa2
,
0xa3
,
0xa4
,
0xa5
,
0xa6
,
0xa7
,
0xa8
,
0xa9
,
0xaa
,
0xab
,
0xac
,
0xad
,
0xae
,
0xaf
,
0xb0
,
0xb1
,
0xb2
,
0xb3
,
0xb4
,
0xb5
,
0xb6
,
0xb7
,
0xb8
,
0xb9
,
0xba
,
0xbb
,
0xbc
,
0xbd
,
0xbe
,
0xbf
,
0xc0
,
0xc1
,
0xc2
,
0xc3
,
0xc4
,
0xc5
,
0xc6
,
0xc7
,
0xc8
,
0xc9
,
0xca
,
0xcb
,
0xcc
,
0xcd
,
0xce
,
0xcf
,
0xd0
,
0xd1
,
0xd2
,
0xd3
,
0xd4
,
0xd5
,
0xd6
,
0xd7
,
0xd8
,
0xd9
,
0xda
,
0xdb
,
0xdc
,
0xdd
,
0xde
,
0xdf
,
0xe0
,
0xe1
,
0xe2
,
0xe3
,
0xe4
,
0xe5
,
0xe6
,
0xe7
,
0xe8
,
0xe9
,
0xea
,
0xeb
,
0xec
,
0xed
,
0xee
,
0xef
,
0xf0
,
0xf1
,
0xf2
,
0xf3
,
0xf4
,
0xf5
,
0xf6
,
0xf7
,
0xf8
,
0xf9
,
0xfa
,
0xfb
,
0xfc
,
0xfd
,
0xfe
,
0xff
,
},
{
// gmult(0x03, b);
0x00
,
0x03
,
0x06
,
0x05
,
0x0c
,
0x0f
,
0x0a
,
0x09
,
0x18
,
0x1b
,
0x1e
,
0x1d
,
0x14
,
0x17
,
0x12
,
0x11
,
0x30
,
0x33
,
0x36
,
0x35
,
0x3c
,
0x3f
,
0x3a
,
0x39
,
0x28
,
0x2b
,
0x2e
,
0x2d
,
0x24
,
0x27
,
0x22
,
0x21
,
0x60
,
0x63
,
0x66
,
0x65
,
0x6c
,
0x6f
,
0x6a
,
0x69
,
0x78
,
0x7b
,
0x7e
,
0x7d
,
0x74
,
0x77
,
0x72
,
0x71
,
0x50
,
0x53
,
0x56
,
0x55
,
0x5c
,
0x5f
,
0x5a
,
0x59
,
0x48
,
0x4b
,
0x4e
,
0x4d
,
0x44
,
0x47
,
0x42
,
0x41
,
0xc0
,
0xc3
,
0xc6
,
0xc5
,
0xcc
,
0xcf
,
0xca
,
0xc9
,
0xd8
,
0xdb
,
0xde
,
0xdd
,
0xd4
,
0xd7
,
0xd2
,
0xd1
,
0xf0
,
0xf3
,
0xf6
,
0xf5
,
0xfc
,
0xff
,
0xfa
,
0xf9
,
0xe8
,
0xeb
,
0xee
,
0xed
,
0xe4
,
0xe7
,
0xe2
,
0xe1
,
0xa0
,
0xa3
,
0xa6
,
0xa5
,
0xac
,
0xaf
,
0xaa
,
0xa9
,
0xb8
,
0xbb
,
0xbe
,
0xbd
,
0xb4
,
0xb7
,
0xb2
,
0xb1
,
0x90
,
0x93
,
0x96
,
0x95
,
0x9c
,
0x9f
,
0x9a
,
0x99
,
0x88
,
0x8b
,
0x8e
,
0x8d
,
0x84
,
0x87
,
0x82
,
0x81
,
0x9b
,
0x98
,
0x9d
,
0x9e
,
0x97
,
0x94
,
0x91
,
0x92
,
0x83
,
0x80
,
0x85
,
0x86
,
0x8f
,
0x8c
,
0x89
,
0x8a
,
0xab
,
0xa8
,
0xad
,
0xae
,
0xa7
,
0xa4
,
0xa1
,
0xa2
,
0xb3
,
0xb0
,
0xb5
,
0xb6
,
0xbf
,
0xbc
,
0xb9
,
0xba
,
0xfb
,
0xf8
,
0xfd
,
0xfe
,
0xf7
,
0xf4
,
0xf1
,
0xf2
,
0xe3
,
0xe0
,
0xe5
,
0xe6
,
0xef
,
0xec
,
0xe9
,
0xea
,
0xcb
,
0xc8
,
0xcd
,
0xce
,
0xc7
,
0xc4
,
0xc1
,
0xc2
,
0xd3
,
0xd0
,
0xd5
,
0xd6
,
0xdf
,
0xdc
,
0xd9
,
0xda
,
0x5b
,
0x58
,
0x5d
,
0x5e
,
0x57
,
0x54
,
0x51
,
0x52
,
0x43
,
0x40
,
0x45
,
0x46
,
0x4f
,
0x4c
,
0x49
,
0x4a
,
0x6b
,
0x68
,
0x6d
,
0x6e
,
0x67
,
0x64
,
0x61
,
0x62
,
0x73
,
0x70
,
0x75
,
0x76
,
0x7f
,
0x7c
,
0x79
,
0x7a
,
0x3b
,
0x38
,
0x3d
,
0x3e
,
0x37
,
0x34
,
0x31
,
0x32
,
0x23
,
0x20
,
0x25
,
0x26
,
0x2f
,
0x2c
,
0x29
,
0x2a
,
0x0b
,
0x08
,
0x0d
,
0x0e
,
0x07
,
0x04
,
0x01
,
0x02
,
0x13
,
0x10
,
0x15
,
0x16
,
0x1f
,
0x1c
,
0x19
,
0x1a
,
},
{
// gmult(0x0e, b);
0x00
,
0x0e
,
0x1c
,
0x12
,
0x38
,
0x36
,
0x24
,
0x2a
,
0x70
,
0x7e
,
0x6c
,
0x62
,
0x48
,
0x46
,
0x54
,
0x5a
,
0xe0
,
0xee
,
0xfc
,
0xf2
,
0xd8
,
0xd6
,
0xc4
,
0xca
,
0x90
,
0x9e
,
0x8c
,
0x82
,
0xa8
,
0xa6
,
0xb4
,
0xba
,
0xdb
,
0xd5
,
0xc7
,
0xc9
,
0xe3
,
0xed
,
0xff
,
0xf1
,
0xab
,
0xa5
,
0xb7
,
0xb9
,
0x93
,
0x9d
,
0x8f
,
0x81
,
0x3b
,
0x35
,
0x27
,
0x29
,
0x03
,
0x0d
,
0x1f
,
0x11
,
0x4b
,
0x45
,
0x57
,
0x59
,
0x73
,
0x7d
,
0x6f
,
0x61
,
0xad
,
0xa3
,
0xb1
,
0xbf
,
0x95
,
0x9b
,
0x89
,
0x87
,
0xdd
,
0xd3
,
0xc1
,
0xcf
,
0xe5
,
0xeb
,
0xf9
,
0xf7
,
0x4d
,
0x43
,
0x51
,
0x5f
,
0x75
,
0x7b
,
0x69
,
0x67
,
0x3d
,
0x33
,
0x21
,
0x2f
,
0x05
,
0x0b
,
0x19
,
0x17
,
0x76
,
0x78
,
0x6a
,
0x64
,
0x4e
,
0x40
,
0x52
,
0x5c
,
0x06
,
0x08
,
0x1a
,
0x14
,
0x3e
,
0x30
,
0x22
,
0x2c
,
0x96
,
0x98
,
0x8a
,
0x84
,
0xae
,
0xa0
,
0xb2
,
0xbc
,
0xe6
,
0xe8
,
0xfa
,
0xf4
,
0xde
,
0xd0
,
0xc2
,
0xcc
,
0x41
,
0x4f
,
0x5d
,
0x53
,
0x79
,
0x77
,
0x65
,
0x6b
,
0x31
,
0x3f
,
0x2d
,
0x23
,
0x09
,
0x07
,
0x15
,
0x1b
,
0xa1
,
0xaf
,
0xbd
,
0xb3
,
0x99
,
0x97
,
0x85
,
0x8b
,
0xd1
,
0xdf
,
0xcd
,
0xc3
,
0xe9
,
0xe7
,
0xf5
,
0xfb
,
0x9a
,
0x94
,
0x86
,
0x88
,
0xa2
,
0xac
,
0xbe
,
0xb0
,
0xea
,
0xe4
,
0xf6
,
0xf8
,
0xd2
,
0xdc
,
0xce
,
0xc0
,
0x7a
,
0x74
,
0x66
,
0x68
,
0x42
,
0x4c
,
0x5e
,
0x50
,
0x0a
,
0x04
,
0x16
,
0x18
,
0x32
,
0x3c
,
0x2e
,
0x20
,
0xec
,
0xe2
,
0xf0
,
0xfe
,
0xd4
,
0xda
,
0xc8
,
0xc6
,
0x9c
,
0x92
,
0x80
,
0x8e
,
0xa4
,
0xaa
,
0xb8
,
0xb6
,
0x0c
,
0x02
,
0x10
,
0x1e
,
0x34
,
0x3a
,
0x28
,
0x26
,
0x7c
,
0x72
,
0x60
,
0x6e
,
0x44
,
0x4a
,
0x58
,
0x56
,
0x37
,
0x39
,
0x2b
,
0x25
,
0x0f
,
0x01
,
0x13
,
0x1d
,
0x47
,
0x49
,
0x5b
,
0x55
,
0x7f
,
0x71
,
0x63
,
0x6d
,
0xd7
,
0xd9
,
0xcb
,
0xc5
,
0xef
,
0xe1
,
0xf3
,
0xfd
,
0xa7
,
0xa9
,
0xbb
,
0xb5
,
0x9f
,
0x91
,
0x83
,
0x8d
,
},
{
// gmult(0x09, b);
0x00
,
0x09
,
0x12
,
0x1b
,
0x24
,
0x2d
,
0x36
,
0x3f
,
0x48
,
0x41
,
0x5a
,
0x53
,
0x6c
,
0x65
,
0x7e
,
0x77
,
0x90
,
0x99
,
0x82
,
0x8b
,
0xb4
,
0xbd
,
0xa6
,
0xaf
,
0xd8
,
0xd1
,
0xca
,
0xc3
,
0xfc
,
0xf5
,
0xee
,
0xe7
,
0x3b
,
0x32
,
0x29
,
0x20
,
0x1f
,
0x16
,
0x0d
,
0x04
,
0x73
,
0x7a
,
0x61
,
0x68
,
0x57
,
0x5e
,
0x45
,
0x4c
,
0xab
,
0xa2
,
0xb9
,
0xb0
,
0x8f
,
0x86
,
0x9d
,
0x94
,
0xe3
,
0xea
,
0xf1
,
0xf8
,
0xc7
,
0xce
,
0xd5
,
0xdc
,
0x76
,
0x7f
,
0x64
,
0x6d
,
0x52
,
0x5b
,
0x40
,
0x49
,
0x3e
,
0x37
,
0x2c
,
0x25
,
0x1a
,
0x13
,
0x08
,
0x01
,
0xe6
,
0xef
,
0xf4
,
0xfd
,
0xc2
,
0xcb
,
0xd0
,
0xd9
,
0xae
,
0xa7
,
0xbc
,
0xb5
,
0x8a
,
0x83
,
0x98
,
0x91
,
0x4d
,
0x44
,
0x5f
,
0x56
,
0x69
,
0x60
,
0x7b
,
0x72
,
0x05
,
0x0c
,
0x17
,
0x1e
,
0x21
,
0x28
,
0x33
,
0x3a
,
0xdd
,
0xd4
,
0xcf
,
0xc6
,
0xf9
,
0xf0
,
0xeb
,
0xe2
,
0x95
,
0x9c
,
0x87
,
0x8e
,
0xb1
,
0xb8
,
0xa3
,
0xaa
,
0xec
,
0xe5
,
0xfe
,
0xf7
,
0xc8
,
0xc1
,
0xda
,
0xd3
,
0xa4
,
0xad
,
0xb6
,
0xbf
,
0x80
,
0x89
,
0x92
,
0x9b
,
0x7c
,
0x75
,
0x6e
,
0x67
,
0x58
,
0x51
,
0x4a
,
0x43
,
0x34
,
0x3d
,
0x26
,
0x2f
,
0x10
,
0x19
,
0x02
,
0x0b
,
0xd7
,
0xde
,
0xc5
,
0xcc
,
0xf3
,
0xfa
,
0xe1
,
0xe8
,
0x9f
,
0x96
,
0x8d
,
0x84
,
0xbb
,
0xb2
,
0xa9
,
0xa0
,
0x47
,
0x4e
,
0x55
,
0x5c
,
0x63
,
0x6a
,
0x71
,
0x78
,
0x0f
,
0x06
,
0x1d
,
0x14
,
0x2b
,
0x22
,
0x39
,
0x30
,
0x9a
,
0x93
,
0x88
,
0x81
,
0xbe
,
0xb7
,
0xac
,
0xa5
,
0xd2
,
0xdb
,
0xc0
,
0xc9
,
0xf6
,
0xff
,
0xe4
,
0xed
,
0x0a
,
0x03
,
0x18
,
0x11
,
0x2e
,
0x27
,
0x3c
,
0x35
,
0x42
,
0x4b
,
0x50
,
0x59
,
0x66
,
0x6f
,
0x74
,
0x7d
,
0xa1
,
0xa8
,
0xb3
,
0xba
,
0x85
,
0x8c
,
0x97
,
0x9e
,
0xe9
,
0xe0
,
0xfb
,
0xf2
,
0xcd
,
0xc4
,
0xdf
,
0xd6
,
0x31
,
0x38
,
0x23
,
0x2a
,
0x15
,
0x1c
,
0x07
,
0x0e
,
0x79
,
0x70
,
0x6b
,
0x62
,
0x5d
,
0x54
,
0x4f
,
0x46
,
},
{
// gmult(0x0d, b);
0x00
,
0x0d
,
0x1a
,
0x17
,
0x34
,
0x39
,
0x2e
,
0x23
,
0x68
,
0x65
,
0x72
,
0x7f
,
0x5c
,
0x51
,
0x46
,
0x4b
,
0xd0
,
0xdd
,
0xca
,
0xc7
,
0xe4
,
0xe9
,
0xfe
,
0xf3
,
0xb8
,
0xb5
,
0xa2
,
0xaf
,
0x8c
,
0x81
,
0x96
,
0x9b
,
0xbb
,
0xb6
,
0xa1
,
0xac
,
0x8f
,
0x82
,
0x95
,
0x98
,
0xd3
,
0xde
,
0xc9
,
0xc4
,
0xe7
,
0xea
,
0xfd
,
0xf0
,
0x6b
,
0x66
,
0x71
,
0x7c
,
0x5f
,
0x52
,
0x45
,
0x48
,
0x03
,
0x0e
,
0x19
,
0x14
,
0x37
,
0x3a
,
0x2d
,
0x20
,
0x6d
,
0x60
,
0x77
,
0x7a
,
0x59
,
0x54
,
0x43
,
0x4e
,
0x05
,
0x08
,
0x1f
,
0x12
,
0x31
,
0x3c
,
0x2b
,
0x26
,
0xbd
,
0xb0
,
0xa7
,
0xaa
,
0x89
,
0x84
,
0x93
,
0x9e
,
0xd5
,
0xd8
,
0xcf
,
0xc2
,
0xe1
,
0xec
,
0xfb
,
0xf6
,
0xd6
,
0xdb
,
0xcc
,
0xc1
,
0xe2
,
0xef
,
0xf8
,
0xf5
,
0xbe
,
0xb3
,
0xa4
,
0xa9
,
0x8a
,
0x87
,
0x90
,
0x9d
,
0x06
,
0x0b
,
0x1c
,
0x11
,
0x32
,
0x3f
,
0x28
,
0x25
,
0x6e
,
0x63
,
0x74
,
0x79
,
0x5a
,
0x57
,
0x40
,
0x4d
,
0xda
,
0xd7
,
0xc0
,
0xcd
,
0xee
,
0xe3
,
0xf4
,
0xf9
,
0xb2
,
0xbf
,
0xa8
,
0xa5
,
0x86
,
0x8b
,
0x9c
,
0x91
,
0x0a
,
0x07
,
0x10
,
0x1d
,
0x3e
,
0x33
,
0x24
,
0x29
,
0x62
,
0x6f
,
0x78
,
0x75
,
0x56
,
0x5b
,
0x4c
,
0x41
,
0x61
,
0x6c
,
0x7b
,
0x76
,
0x55
,
0x58
,
0x4f
,
0x42
,
0x09
,
0x04
,
0x13
,
0x1e
,
0x3d
,
0x30
,
0x27
,
0x2a
,
0xb1
,
0xbc
,
0xab
,
0xa6
,
0x85
,
0x88
,
0x9f
,
0x92
,
0xd9
,
0xd4
,
0xc3
,
0xce
,
0xed
,
0xe0
,
0xf7
,
0xfa
,
0xb7
,
0xba
,
0xad
,
0xa0
,
0x83
,
0x8e
,
0x99
,
0x94
,
0xdf
,
0xd2
,
0xc5
,
0xc8
,
0xeb
,
0xe6
,
0xf1
,
0xfc
,
0x67
,
0x6a
,
0x7d
,
0x70
,
0x53
,
0x5e
,
0x49
,
0x44
,
0x0f
,
0x02
,
0x15
,
0x18
,
0x3b
,
0x36
,
0x21
,
0x2c
,
0x0c
,
0x01
,
0x16
,
0x1b
,
0x38
,
0x35
,
0x22
,
0x2f
,
0x64
,
0x69
,
0x7e
,
0x73
,
0x50
,
0x5d
,
0x4a
,
0x47
,
0xdc
,
0xd1
,
0xc6
,
0xcb
,
0xe8
,
0xe5
,
0xf2
,
0xff
,
0xb4
,
0xb9
,
0xae
,
0xa3
,
0x80
,
0x8d
,
0x9a
,
0x97
,
},
{
// gmult(0x0b, b);
0x00
,
0x0b
,
0x16
,
0x1d
,
0x2c
,
0x27
,
0x3a
,
0x31
,
0x58
,
0x53
,
0x4e
,
0x45
,
0x74
,
0x7f
,
0x62
,
0x69
,
0xb0
,
0xbb
,
0xa6
,
0xad
,
0x9c
,
0x97
,
0x8a
,
0x81
,
0xe8
,
0xe3
,
0xfe
,
0xf5
,
0xc4
,
0xcf
,
0xd2
,
0xd9
,
0x7b
,
0x70
,
0x6d
,
0x66
,
0x57
,
0x5c
,
0x41
,
0x4a
,
0x23
,
0x28
,
0x35
,
0x3e
,
0x0f
,
0x04
,
0x19
,
0x12
,
0xcb
,
0xc0
,
0xdd
,
0xd6
,
0xe7
,
0xec
,
0xf1
,
0xfa
,
0x93
,
0x98
,
0x85
,
0x8e
,
0xbf
,
0xb4
,
0xa9
,
0xa2
,
0xf6
,
0xfd
,
0xe0
,
0xeb
,
0xda
,
0xd1
,
0xcc
,
0xc7
,
0xae
,
0xa5
,
0xb8
,
0xb3
,
0x82
,
0x89
,
0x94
,
0x9f
,
0x46
,
0x4d
,
0x50
,
0x5b
,
0x6a
,
0x61
,
0x7c
,
0x77
,
0x1e
,
0x15
,
0x08
,
0x03
,
0x32
,
0x39
,
0x24
,
0x2f
,
0x8d
,
0x86
,
0x9b
,
0x90
,
0xa1
,
0xaa
,
0xb7
,
0xbc
,
0xd5
,
0xde
,
0xc3
,
0xc8
,
0xf9
,
0xf2
,
0xef
,
0xe4
,
0x3d
,
0x36
,
0x2b
,
0x20
,
0x11
,
0x1a
,
0x07
,
0x0c
,
0x65
,
0x6e
,
0x73
,
0x78
,
0x49
,
0x42
,
0x5f
,
0x54
,
0xf7
,
0xfc
,
0xe1
,
0xea
,
0xdb
,
0xd0
,
0xcd
,
0xc6
,
0xaf
,
0xa4
,
0xb9
,
0xb2
,
0x83
,
0x88
,
0x95
,
0x9e
,
0x47
,
0x4c
,
0x51
,
0x5a
,
0x6b
,
0x60
,
0x7d
,
0x76
,
0x1f
,
0x14
,
0x09
,
0x02
,
0x33
,
0x38
,
0x25
,
0x2e
,
0x8c
,
0x87
,
0x9a
,
0x91
,
0xa0
,
0xab
,
0xb6
,
0xbd
,
0xd4
,
0xdf
,
0xc2
,
0xc9
,
0xf8
,
0xf3
,
0xee
,
0xe5
,
0x3c
,
0x37
,
0x2a
,
0x21
,
0x10
,
0x1b
,
0x06
,
0x0d
,
0x64
,
0x6f
,
0x72
,
0x79
,
0x48
,
0x43
,
0x5e
,
0x55
,
0x01
,
0x0a
,
0x17
,
0x1c
,
0x2d
,
0x26
,
0x3b
,
0x30
,
0x59
,
0x52
,
0x4f
,
0x44
,
0x75
,
0x7e
,
0x63
,
0x68
,
0xb1
,
0xba
,
0xa7
,
0xac
,
0x9d
,
0x96
,
0x8b
,
0x80
,
0xe9
,
0xe2
,
0xff
,
0xf4
,
0xc5
,
0xce
,
0xd3
,
0xd8
,
0x7a
,
0x71
,
0x6c
,
0x67
,
0x56
,
0x5d
,
0x40
,
0x4b
,
0x22
,
0x29
,
0x34
,
0x3f
,
0x0e
,
0x05
,
0x18
,
0x13
,
0xca
,
0xc1
,
0xdc
,
0xd7
,
0xe6
,
0xed
,
0xf0
,
0xfb
,
0x92
,
0x99
,
0x84
,
0x8f
,
0xbe
,
0xb5
,
0xa8
,
0xa3
,
}
};
/*
/*
* S-box transformation table
* S-box transformation table
*/
*/
...
@@ -84,6 +232,32 @@ static uint8_t simde_x_aes_inv_s_box[256] = {
...
@@ -84,6 +232,32 @@ static uint8_t simde_x_aes_inv_s_box[256] = {
0xa0
,
0xe0
,
0x3b
,
0x4d
,
0xae
,
0x2a
,
0xf5
,
0xb0
,
0xc8
,
0xeb
,
0xbb
,
0x3c
,
0x83
,
0x53
,
0x99
,
0x61
,
// e
0xa0
,
0xe0
,
0x3b
,
0x4d
,
0xae
,
0x2a
,
0xf5
,
0xb0
,
0xc8
,
0xeb
,
0xbb
,
0x3c
,
0x83
,
0x53
,
0x99
,
0x61
,
// e
0x17
,
0x2b
,
0x04
,
0x7e
,
0xba
,
0x77
,
0xd6
,
0x26
,
0xe1
,
0x69
,
0x14
,
0x63
,
0x55
,
0x21
,
0x0c
,
0x7d
};
// f
0x17
,
0x2b
,
0x04
,
0x7e
,
0xba
,
0x77
,
0xd6
,
0x26
,
0xe1
,
0x69
,
0x14
,
0x63
,
0x55
,
0x21
,
0x0c
,
0x7d
};
// f
/*
* Multiplication of 4 byte words
* m(x) = x4+1
SIMDE_FUNCTION_ATTRIBUTES
void coef_mult(uint8_t *a, uint8_t *b, uint8_t *d) {
d[0] = gmult(a[0],b[0])^gmult(a[3],b[1])^gmult(a[2],b[2])^gmult(a[1],b[3]);
d[1] = gmult(a[1],b[0])^gmult(a[0],b[1])^gmult(a[3],b[2])^gmult(a[2],b[3]);
d[2] = gmult(a[2],b[0])^gmult(a[1],b[1])^gmult(a[0],b[2])^gmult(a[3],b[3]);
d[3] = gmult(a[3],b[0])^gmult(a[2],b[1])^gmult(a[1],b[2])^gmult(a[0],b[3]);
}
*/
SIMDE_FUNCTION_ATTRIBUTES
void
simde_x_aes_coef_mult_lookup
(
int
lookup_table_offset
,
uint8_t
*
b
,
uint8_t
*
d
)
{
int
o
=
lookup_table_offset
;
#define gmultl(o,b) simde_x_aes_gmult_lookup_table[o][b]
d
[
0
]
=
gmultl
(
o
+
0
,
b
[
0
])
^
gmultl
(
o
+
3
,
b
[
1
])
^
gmultl
(
o
+
2
,
b
[
2
])
^
gmultl
(
o
+
1
,
b
[
3
]);
d
[
1
]
=
gmultl
(
o
+
1
,
b
[
0
])
^
gmultl
(
o
+
0
,
b
[
1
])
^
gmultl
(
o
+
3
,
b
[
2
])
^
gmultl
(
o
+
2
,
b
[
3
]);
d
[
2
]
=
gmultl
(
o
+
2
,
b
[
0
])
^
gmultl
(
o
+
1
,
b
[
1
])
^
gmultl
(
o
+
0
,
b
[
2
])
^
gmultl
(
o
+
3
,
b
[
3
]);
d
[
3
]
=
gmultl
(
o
+
3
,
b
[
0
])
^
gmultl
(
o
+
2
,
b
[
1
])
^
gmultl
(
o
+
1
,
b
[
2
])
^
gmultl
(
o
+
0
,
b
[
3
]);
#undef gmultl
}
#endif
#endif
HEDLEY_DIAGNOSTIC_POP
HEDLEY_DIAGNOSTIC_POP
...
...
x86/aes.h
View file @
2c58d6d0
...
@@ -63,179 +63,6 @@ uint8_t gmult(uint8_t a, uint8_t b) {
...
@@ -63,179 +63,6 @@ uint8_t gmult(uint8_t a, uint8_t b) {
*/
*/
#if !(defined(SIMDE_ARM_NEON_A32V7_NATIVE) && defined(SIMDE_ARCH_ARM_CRYPTO))
#if !(defined(SIMDE_ARM_NEON_A32V7_NATIVE) && defined(SIMDE_ARCH_ARM_CRYPTO))
static
uint8_t
simde_x_aes_gmult_lookup_table
[
8
][
256
]
=
{
{
// gmult(0x02, b);
0x00
,
0x02
,
0x04
,
0x06
,
0x08
,
0x0a
,
0x0c
,
0x0e
,
0x10
,
0x12
,
0x14
,
0x16
,
0x18
,
0x1a
,
0x1c
,
0x1e
,
0x20
,
0x22
,
0x24
,
0x26
,
0x28
,
0x2a
,
0x2c
,
0x2e
,
0x30
,
0x32
,
0x34
,
0x36
,
0x38
,
0x3a
,
0x3c
,
0x3e
,
0x40
,
0x42
,
0x44
,
0x46
,
0x48
,
0x4a
,
0x4c
,
0x4e
,
0x50
,
0x52
,
0x54
,
0x56
,
0x58
,
0x5a
,
0x5c
,
0x5e
,
0x60
,
0x62
,
0x64
,
0x66
,
0x68
,
0x6a
,
0x6c
,
0x6e
,
0x70
,
0x72
,
0x74
,
0x76
,
0x78
,
0x7a
,
0x7c
,
0x7e
,
0x80
,
0x82
,
0x84
,
0x86
,
0x88
,
0x8a
,
0x8c
,
0x8e
,
0x90
,
0x92
,
0x94
,
0x96
,
0x98
,
0x9a
,
0x9c
,
0x9e
,
0xa0
,
0xa2
,
0xa4
,
0xa6
,
0xa8
,
0xaa
,
0xac
,
0xae
,
0xb0
,
0xb2
,
0xb4
,
0xb6
,
0xb8
,
0xba
,
0xbc
,
0xbe
,
0xc0
,
0xc2
,
0xc4
,
0xc6
,
0xc8
,
0xca
,
0xcc
,
0xce
,
0xd0
,
0xd2
,
0xd4
,
0xd6
,
0xd8
,
0xda
,
0xdc
,
0xde
,
0xe0
,
0xe2
,
0xe4
,
0xe6
,
0xe8
,
0xea
,
0xec
,
0xee
,
0xf0
,
0xf2
,
0xf4
,
0xf6
,
0xf8
,
0xfa
,
0xfc
,
0xfe
,
0x1b
,
0x19
,
0x1f
,
0x1d
,
0x13
,
0x11
,
0x17
,
0x15
,
0x0b
,
0x09
,
0x0f
,
0x0d
,
0x03
,
0x01
,
0x07
,
0x05
,
0x3b
,
0x39
,
0x3f
,
0x3d
,
0x33
,
0x31
,
0x37
,
0x35
,
0x2b
,
0x29
,
0x2f
,
0x2d
,
0x23
,
0x21
,
0x27
,
0x25
,
0x5b
,
0x59
,
0x5f
,
0x5d
,
0x53
,
0x51
,
0x57
,
0x55
,
0x4b
,
0x49
,
0x4f
,
0x4d
,
0x43
,
0x41
,
0x47
,
0x45
,
0x7b
,
0x79
,
0x7f
,
0x7d
,
0x73
,
0x71
,
0x77
,
0x75
,
0x6b
,
0x69
,
0x6f
,
0x6d
,
0x63
,
0x61
,
0x67
,
0x65
,
0x9b
,
0x99
,
0x9f
,
0x9d
,
0x93
,
0x91
,
0x97
,
0x95
,
0x8b
,
0x89
,
0x8f
,
0x8d
,
0x83
,
0x81
,
0x87
,
0x85
,
0xbb
,
0xb9
,
0xbf
,
0xbd
,
0xb3
,
0xb1
,
0xb7
,
0xb5
,
0xab
,
0xa9
,
0xaf
,
0xad
,
0xa3
,
0xa1
,
0xa7
,
0xa5
,
0xdb
,
0xd9
,
0xdf
,
0xdd
,
0xd3
,
0xd1
,
0xd7
,
0xd5
,
0xcb
,
0xc9
,
0xcf
,
0xcd
,
0xc3
,
0xc1
,
0xc7
,
0xc5
,
0xfb
,
0xf9
,
0xff
,
0xfd
,
0xf3
,
0xf1
,
0xf7
,
0xf5
,
0xeb
,
0xe9
,
0xef
,
0xed
,
0xe3
,
0xe1
,
0xe7
,
0xe5
},
{
// gmult(0x01, b);
0x00
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
,
0x09
,
0x0a
,
0x0b
,
0x0c
,
0x0d
,
0x0e
,
0x0f
,
0x10
,
0x11
,
0x12
,
0x13
,
0x14
,
0x15
,
0x16
,
0x17
,
0x18
,
0x19
,
0x1a
,
0x1b
,
0x1c
,
0x1d
,
0x1e
,
0x1f
,
0x20
,
0x21
,
0x22
,
0x23
,
0x24
,
0x25
,
0x26
,
0x27
,
0x28
,
0x29
,
0x2a
,
0x2b
,
0x2c
,
0x2d
,
0x2e
,
0x2f
,
0x30
,
0x31
,
0x32
,
0x33
,
0x34
,
0x35
,
0x36
,
0x37
,
0x38
,
0x39
,
0x3a
,
0x3b
,
0x3c
,
0x3d
,
0x3e
,
0x3f
,
0x40
,
0x41
,
0x42
,
0x43
,
0x44
,
0x45
,
0x46
,
0x47
,
0x48
,
0x49
,
0x4a
,
0x4b
,
0x4c
,
0x4d
,
0x4e
,
0x4f
,
0x50
,
0x51
,
0x52
,
0x53
,
0x54
,
0x55
,
0x56
,
0x57
,
0x58
,
0x59
,
0x5a
,
0x5b
,
0x5c
,
0x5d
,
0x5e
,
0x5f
,
0x60
,
0x61
,
0x62
,
0x63
,
0x64
,
0x65
,
0x66
,
0x67
,
0x68
,
0x69
,
0x6a
,
0x6b
,
0x6c
,
0x6d
,
0x6e
,
0x6f
,
0x70
,
0x71
,
0x72
,
0x73
,
0x74
,
0x75
,
0x76
,
0x77
,
0x78
,
0x79
,
0x7a
,
0x7b
,
0x7c
,
0x7d
,
0x7e
,
0x7f
,
0x80
,
0x81
,
0x82
,
0x83
,
0x84
,
0x85
,
0x86
,
0x87
,
0x88
,
0x89
,
0x8a
,
0x8b
,
0x8c
,
0x8d
,
0x8e
,
0x8f
,
0x90
,
0x91
,
0x92
,
0x93
,
0x94
,
0x95
,
0x96
,
0x97
,
0x98
,
0x99
,
0x9a
,
0x9b
,
0x9c
,
0x9d
,
0x9e
,
0x9f
,
0xa0
,
0xa1
,
0xa2
,
0xa3
,
0xa4
,
0xa5
,
0xa6
,
0xa7
,
0xa8
,
0xa9
,
0xaa
,
0xab
,
0xac
,
0xad
,
0xae
,
0xaf
,
0xb0
,
0xb1
,
0xb2
,
0xb3
,
0xb4
,
0xb5
,
0xb6
,
0xb7
,
0xb8
,
0xb9
,
0xba
,
0xbb
,
0xbc
,
0xbd
,
0xbe
,
0xbf
,
0xc0
,
0xc1
,
0xc2
,
0xc3
,
0xc4
,
0xc5
,
0xc6
,
0xc7
,
0xc8
,
0xc9
,
0xca
,
0xcb
,
0xcc
,
0xcd
,
0xce
,
0xcf
,
0xd0
,
0xd1
,
0xd2
,
0xd3
,
0xd4
,
0xd5
,
0xd6
,
0xd7
,
0xd8
,
0xd9
,
0xda
,
0xdb
,
0xdc
,
0xdd
,
0xde
,
0xdf
,
0xe0
,
0xe1
,
0xe2
,
0xe3
,
0xe4
,
0xe5
,
0xe6
,
0xe7
,
0xe8
,
0xe9
,
0xea
,
0xeb
,
0xec
,
0xed
,
0xee
,
0xef
,
0xf0
,
0xf1
,
0xf2
,
0xf3
,
0xf4
,
0xf5
,
0xf6
,
0xf7
,
0xf8
,
0xf9
,
0xfa
,
0xfb
,
0xfc
,
0xfd
,
0xfe
,
0xff
,
},
{
// gmult(0x01, b);
0x00
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
,
0x09
,
0x0a
,
0x0b
,
0x0c
,
0x0d
,
0x0e
,
0x0f
,
0x10
,
0x11
,
0x12
,
0x13
,
0x14
,
0x15
,
0x16
,
0x17
,
0x18
,
0x19
,
0x1a
,
0x1b
,
0x1c
,
0x1d
,
0x1e
,
0x1f
,
0x20
,
0x21
,
0x22
,
0x23
,
0x24
,
0x25
,
0x26
,
0x27
,
0x28
,
0x29
,
0x2a
,
0x2b
,
0x2c
,
0x2d
,
0x2e
,
0x2f
,
0x30
,
0x31
,
0x32
,
0x33
,
0x34
,
0x35
,
0x36
,
0x37
,
0x38
,
0x39
,
0x3a
,
0x3b
,
0x3c
,
0x3d
,
0x3e
,
0x3f
,
0x40
,
0x41
,
0x42
,
0x43
,
0x44
,
0x45
,
0x46
,
0x47
,
0x48
,
0x49
,
0x4a
,
0x4b
,
0x4c
,
0x4d
,
0x4e
,
0x4f
,
0x50
,
0x51
,
0x52
,
0x53
,
0x54
,
0x55
,
0x56
,
0x57
,
0x58
,
0x59
,
0x5a
,
0x5b
,
0x5c
,
0x5d
,
0x5e
,
0x5f
,
0x60
,
0x61
,
0x62
,
0x63
,
0x64
,
0x65
,
0x66
,
0x67
,
0x68
,
0x69
,
0x6a
,
0x6b
,
0x6c
,
0x6d
,
0x6e
,
0x6f
,
0x70
,
0x71
,
0x72
,
0x73
,
0x74
,
0x75
,
0x76
,
0x77
,
0x78
,
0x79
,
0x7a
,
0x7b
,
0x7c
,
0x7d
,
0x7e
,
0x7f
,
0x80
,
0x81
,
0x82
,
0x83
,
0x84
,
0x85
,
0x86
,
0x87
,
0x88
,
0x89
,
0x8a
,
0x8b
,
0x8c
,
0x8d
,
0x8e
,
0x8f
,
0x90
,
0x91
,
0x92
,
0x93
,
0x94
,
0x95
,
0x96
,
0x97
,
0x98
,
0x99
,
0x9a
,
0x9b
,
0x9c
,
0x9d
,
0x9e
,
0x9f
,
0xa0
,
0xa1
,
0xa2
,
0xa3
,
0xa4
,
0xa5
,
0xa6
,
0xa7
,
0xa8
,
0xa9
,
0xaa
,
0xab
,
0xac
,
0xad
,
0xae
,
0xaf
,
0xb0
,
0xb1
,
0xb2
,
0xb3
,
0xb4
,
0xb5
,
0xb6
,
0xb7
,
0xb8
,
0xb9
,
0xba
,
0xbb
,
0xbc
,
0xbd
,
0xbe
,
0xbf
,
0xc0
,
0xc1
,
0xc2
,
0xc3
,
0xc4
,
0xc5
,
0xc6
,
0xc7
,
0xc8
,
0xc9
,
0xca
,
0xcb
,
0xcc
,
0xcd
,
0xce
,
0xcf
,
0xd0
,
0xd1
,
0xd2
,
0xd3
,
0xd4
,
0xd5
,
0xd6
,
0xd7
,
0xd8
,
0xd9
,
0xda
,
0xdb
,
0xdc
,
0xdd
,
0xde
,
0xdf
,
0xe0
,
0xe1
,
0xe2
,
0xe3
,
0xe4
,
0xe5
,
0xe6
,
0xe7
,
0xe8
,
0xe9
,
0xea
,
0xeb
,
0xec
,
0xed
,
0xee
,
0xef
,
0xf0
,
0xf1
,
0xf2
,
0xf3
,
0xf4
,
0xf5
,
0xf6
,
0xf7
,
0xf8
,
0xf9
,
0xfa
,
0xfb
,
0xfc
,
0xfd
,
0xfe
,
0xff
,
},
{
// gmult(0x03, b);
0x00
,
0x03
,
0x06
,
0x05
,
0x0c
,
0x0f
,
0x0a
,
0x09
,
0x18
,
0x1b
,
0x1e
,
0x1d
,
0x14
,
0x17
,
0x12
,
0x11
,
0x30
,
0x33
,
0x36
,
0x35
,
0x3c
,
0x3f
,
0x3a
,
0x39
,
0x28
,
0x2b
,
0x2e
,
0x2d
,
0x24
,
0x27
,
0x22
,
0x21
,
0x60
,
0x63
,
0x66
,
0x65
,
0x6c
,
0x6f
,
0x6a
,
0x69
,
0x78
,
0x7b
,
0x7e
,
0x7d
,
0x74
,
0x77
,
0x72
,
0x71
,
0x50
,
0x53
,
0x56
,
0x55
,
0x5c
,
0x5f
,
0x5a
,
0x59
,
0x48
,
0x4b
,
0x4e
,
0x4d
,
0x44
,
0x47
,
0x42
,
0x41
,
0xc0
,
0xc3
,
0xc6
,
0xc5
,
0xcc
,
0xcf
,
0xca
,
0xc9
,
0xd8
,
0xdb
,
0xde
,
0xdd
,
0xd4
,
0xd7
,
0xd2
,
0xd1
,
0xf0
,
0xf3
,
0xf6
,
0xf5
,
0xfc
,
0xff
,
0xfa
,
0xf9
,
0xe8
,
0xeb
,
0xee
,
0xed
,
0xe4
,
0xe7
,
0xe2
,
0xe1
,
0xa0
,
0xa3
,
0xa6
,
0xa5
,
0xac
,
0xaf
,
0xaa
,
0xa9
,
0xb8
,
0xbb
,
0xbe
,
0xbd
,
0xb4
,
0xb7
,
0xb2
,
0xb1
,
0x90
,
0x93
,
0x96
,
0x95
,
0x9c
,
0x9f
,
0x9a
,
0x99
,
0x88
,
0x8b
,
0x8e
,
0x8d
,
0x84
,
0x87
,
0x82
,
0x81
,
0x9b
,
0x98
,
0x9d
,
0x9e
,
0x97
,
0x94
,
0x91
,
0x92
,
0x83
,
0x80
,
0x85
,
0x86
,
0x8f
,
0x8c
,
0x89
,
0x8a
,
0xab
,
0xa8
,
0xad
,
0xae
,
0xa7
,
0xa4
,
0xa1
,
0xa2
,
0xb3
,
0xb0
,
0xb5
,
0xb6
,
0xbf
,
0xbc
,
0xb9
,
0xba
,
0xfb
,
0xf8
,
0xfd
,
0xfe
,
0xf7
,
0xf4
,
0xf1
,
0xf2
,
0xe3
,
0xe0
,
0xe5
,
0xe6
,
0xef
,
0xec
,
0xe9
,
0xea
,
0xcb
,
0xc8
,
0xcd
,
0xce
,
0xc7
,
0xc4
,
0xc1
,
0xc2
,
0xd3
,
0xd0
,
0xd5
,
0xd6
,
0xdf
,
0xdc
,
0xd9
,
0xda
,
0x5b
,
0x58
,
0x5d
,
0x5e
,
0x57
,
0x54
,
0x51
,
0x52
,
0x43
,
0x40
,
0x45
,
0x46
,
0x4f
,
0x4c
,
0x49
,
0x4a
,
0x6b
,
0x68
,
0x6d
,
0x6e
,
0x67
,
0x64
,
0x61
,
0x62
,
0x73
,
0x70
,
0x75
,
0x76
,
0x7f
,
0x7c
,
0x79
,
0x7a
,
0x3b
,
0x38
,
0x3d
,
0x3e
,
0x37
,
0x34
,
0x31
,
0x32
,
0x23
,
0x20
,
0x25
,
0x26
,
0x2f
,
0x2c
,
0x29
,
0x2a
,
0x0b
,
0x08
,
0x0d
,
0x0e
,
0x07
,
0x04
,
0x01
,
0x02
,
0x13
,
0x10
,
0x15
,
0x16
,
0x1f
,
0x1c
,
0x19
,
0x1a
,
},
{
// gmult(0x0e, b);
0x00
,
0x0e
,
0x1c
,
0x12
,
0x38
,
0x36
,
0x24
,
0x2a
,
0x70
,
0x7e
,
0x6c
,
0x62
,
0x48
,
0x46
,
0x54
,
0x5a
,
0xe0
,
0xee
,
0xfc
,
0xf2
,
0xd8
,
0xd6
,
0xc4
,
0xca
,
0x90
,
0x9e
,
0x8c
,
0x82
,
0xa8
,
0xa6
,
0xb4
,
0xba
,
0xdb
,
0xd5
,
0xc7
,
0xc9
,
0xe3
,
0xed
,
0xff
,
0xf1
,
0xab
,
0xa5
,
0xb7
,
0xb9
,
0x93
,
0x9d
,
0x8f
,
0x81
,
0x3b
,
0x35
,
0x27
,
0x29
,
0x03
,
0x0d
,
0x1f
,
0x11
,
0x4b
,
0x45
,
0x57
,
0x59
,
0x73
,
0x7d
,
0x6f
,
0x61
,
0xad
,
0xa3
,
0xb1
,
0xbf
,
0x95
,
0x9b
,
0x89
,
0x87
,
0xdd
,
0xd3
,
0xc1
,
0xcf
,
0xe5
,
0xeb
,
0xf9
,
0xf7
,
0x4d
,
0x43
,
0x51
,
0x5f
,
0x75
,
0x7b
,
0x69
,
0x67
,
0x3d
,
0x33
,
0x21
,
0x2f
,
0x05
,
0x0b
,
0x19
,
0x17
,
0x76
,
0x78
,
0x6a
,
0x64
,
0x4e
,
0x40
,
0x52
,
0x5c
,
0x06
,
0x08
,
0x1a
,
0x14
,
0x3e
,
0x30
,
0x22
,
0x2c
,
0x96
,
0x98
,
0x8a
,
0x84
,
0xae
,
0xa0
,
0xb2
,
0xbc
,
0xe6
,
0xe8
,
0xfa
,
0xf4
,
0xde
,
0xd0
,
0xc2
,
0xcc
,
0x41
,
0x4f
,
0x5d
,
0x53
,
0x79
,
0x77
,
0x65
,
0x6b
,
0x31
,
0x3f
,
0x2d
,
0x23
,
0x09
,
0x07
,
0x15
,
0x1b
,
0xa1
,
0xaf
,
0xbd
,
0xb3
,
0x99
,
0x97
,
0x85
,
0x8b
,
0xd1
,
0xdf
,
0xcd
,
0xc3
,
0xe9
,
0xe7
,
0xf5
,
0xfb
,
0x9a
,
0x94
,
0x86
,
0x88
,
0xa2
,
0xac
,
0xbe
,
0xb0
,
0xea
,
0xe4
,
0xf6
,
0xf8
,
0xd2
,
0xdc
,
0xce
,
0xc0
,
0x7a
,
0x74
,
0x66
,
0x68
,
0x42
,
0x4c
,
0x5e
,
0x50
,
0x0a
,
0x04
,
0x16
,
0x18
,
0x32
,
0x3c
,
0x2e
,
0x20
,
0xec
,
0xe2
,
0xf0
,
0xfe
,
0xd4
,
0xda
,
0xc8
,
0xc6
,
0x9c
,
0x92
,
0x80
,
0x8e
,
0xa4
,
0xaa
,
0xb8
,
0xb6
,
0x0c
,
0x02
,
0x10
,
0x1e
,
0x34
,
0x3a
,
0x28
,
0x26
,
0x7c
,
0x72
,
0x60
,
0x6e
,
0x44
,
0x4a
,
0x58
,
0x56
,
0x37
,
0x39
,
0x2b
,
0x25
,
0x0f
,
0x01
,
0x13
,
0x1d
,
0x47
,
0x49
,
0x5b
,
0x55
,
0x7f
,
0x71
,
0x63
,
0x6d
,
0xd7
,
0xd9
,
0xcb
,
0xc5
,
0xef
,
0xe1
,
0xf3
,
0xfd
,
0xa7
,
0xa9
,
0xbb
,
0xb5
,
0x9f
,
0x91
,
0x83
,
0x8d
,
},
{
// gmult(0x09, b);
0x00
,
0x09
,
0x12
,
0x1b
,
0x24
,
0x2d
,
0x36
,
0x3f
,
0x48
,
0x41
,
0x5a
,
0x53
,
0x6c
,
0x65
,
0x7e
,
0x77
,
0x90
,
0x99
,
0x82
,
0x8b
,
0xb4
,
0xbd
,
0xa6
,
0xaf
,
0xd8
,
0xd1
,
0xca
,
0xc3
,
0xfc
,
0xf5
,
0xee
,
0xe7
,
0x3b
,
0x32
,
0x29
,
0x20
,
0x1f
,
0x16
,
0x0d
,
0x04
,
0x73
,
0x7a
,
0x61
,
0x68
,
0x57
,
0x5e
,
0x45
,
0x4c
,
0xab
,
0xa2
,
0xb9
,
0xb0
,
0x8f
,
0x86
,
0x9d
,
0x94
,
0xe3
,
0xea
,
0xf1
,
0xf8
,
0xc7
,
0xce
,
0xd5
,
0xdc
,
0x76
,
0x7f
,
0x64
,
0x6d
,
0x52
,
0x5b
,
0x40
,
0x49
,
0x3e
,
0x37
,
0x2c
,
0x25
,
0x1a
,
0x13
,
0x08
,
0x01
,
0xe6
,
0xef
,
0xf4
,
0xfd
,
0xc2
,
0xcb
,
0xd0
,
0xd9
,
0xae
,
0xa7
,
0xbc
,
0xb5
,
0x8a
,
0x83
,
0x98
,
0x91
,
0x4d
,
0x44
,
0x5f
,
0x56
,
0x69
,
0x60
,
0x7b
,
0x72
,
0x05
,
0x0c
,
0x17
,
0x1e
,
0x21
,
0x28
,
0x33
,
0x3a
,
0xdd
,
0xd4
,
0xcf
,
0xc6
,
0xf9
,
0xf0
,
0xeb
,
0xe2
,
0x95
,
0x9c
,
0x87
,
0x8e
,
0xb1
,
0xb8
,
0xa3
,
0xaa
,
0xec
,
0xe5
,
0xfe
,
0xf7
,
0xc8
,
0xc1
,
0xda
,
0xd3
,
0xa4
,
0xad
,
0xb6
,
0xbf
,
0x80
,
0x89
,
0x92
,
0x9b
,
0x7c
,
0x75
,
0x6e
,
0x67
,
0x58
,
0x51
,
0x4a
,
0x43
,
0x34
,
0x3d
,
0x26
,
0x2f
,
0x10
,
0x19
,
0x02
,
0x0b
,
0xd7
,
0xde
,
0xc5
,
0xcc
,
0xf3
,
0xfa
,
0xe1
,
0xe8
,
0x9f
,
0x96
,
0x8d
,
0x84
,
0xbb
,
0xb2
,
0xa9
,
0xa0
,
0x47
,
0x4e
,
0x55
,
0x5c
,
0x63
,
0x6a
,
0x71
,
0x78
,
0x0f
,
0x06
,
0x1d
,
0x14
,
0x2b
,
0x22
,
0x39
,
0x30
,
0x9a
,
0x93
,
0x88
,
0x81
,
0xbe
,
0xb7
,
0xac
,
0xa5
,
0xd2
,
0xdb
,
0xc0
,
0xc9
,
0xf6
,
0xff
,
0xe4
,
0xed
,
0x0a
,
0x03
,
0x18
,
0x11
,
0x2e
,
0x27
,
0x3c
,
0x35
,
0x42
,
0x4b
,
0x50
,
0x59
,
0x66
,
0x6f
,
0x74
,
0x7d
,
0xa1
,
0xa8
,
0xb3
,
0xba
,
0x85
,
0x8c
,
0x97
,
0x9e
,
0xe9
,
0xe0
,
0xfb
,
0xf2
,
0xcd
,
0xc4
,
0xdf
,
0xd6
,
0x31
,
0x38
,
0x23
,
0x2a
,
0x15
,
0x1c
,
0x07
,
0x0e
,
0x79
,
0x70
,
0x6b
,
0x62
,
0x5d
,
0x54
,
0x4f
,
0x46
,
},
{
// gmult(0x0d, b);
0x00
,
0x0d
,
0x1a
,
0x17
,
0x34
,
0x39
,
0x2e
,
0x23
,
0x68
,
0x65
,
0x72
,
0x7f
,
0x5c
,
0x51
,
0x46
,
0x4b
,
0xd0
,
0xdd
,
0xca
,
0xc7
,
0xe4
,
0xe9
,
0xfe
,
0xf3
,
0xb8
,
0xb5
,
0xa2
,
0xaf
,
0x8c
,
0x81
,
0x96
,
0x9b
,
0xbb
,
0xb6
,
0xa1
,
0xac
,
0x8f
,
0x82
,
0x95
,
0x98
,
0xd3
,
0xde
,
0xc9
,
0xc4
,
0xe7
,
0xea
,
0xfd
,
0xf0
,
0x6b
,
0x66
,
0x71
,
0x7c
,
0x5f
,
0x52
,
0x45
,
0x48
,
0x03
,
0x0e
,
0x19
,
0x14
,
0x37
,
0x3a
,
0x2d
,
0x20
,
0x6d
,
0x60
,
0x77
,
0x7a
,
0x59
,
0x54
,
0x43
,
0x4e
,
0x05
,
0x08
,
0x1f
,
0x12
,
0x31
,
0x3c
,
0x2b
,
0x26
,
0xbd
,
0xb0
,
0xa7
,
0xaa
,
0x89
,
0x84
,
0x93
,
0x9e
,
0xd5
,
0xd8
,
0xcf
,
0xc2
,
0xe1
,
0xec
,
0xfb
,
0xf6
,
0xd6
,
0xdb
,
0xcc
,
0xc1
,
0xe2
,
0xef
,
0xf8
,
0xf5
,
0xbe
,
0xb3
,
0xa4
,
0xa9
,
0x8a
,
0x87
,
0x90
,
0x9d
,
0x06
,
0x0b
,
0x1c
,
0x11
,
0x32
,
0x3f
,
0x28
,
0x25
,
0x6e
,
0x63
,
0x74
,
0x79
,
0x5a
,
0x57
,
0x40
,
0x4d
,
0xda
,
0xd7
,
0xc0
,
0xcd
,
0xee
,
0xe3
,
0xf4
,
0xf9
,
0xb2
,
0xbf
,
0xa8
,
0xa5
,
0x86
,
0x8b
,
0x9c
,
0x91
,
0x0a
,
0x07
,
0x10
,
0x1d
,
0x3e
,
0x33
,
0x24
,
0x29
,
0x62
,
0x6f
,
0x78
,
0x75
,
0x56
,
0x5b
,
0x4c
,
0x41
,
0x61
,
0x6c
,
0x7b
,
0x76
,
0x55
,
0x58
,
0x4f
,
0x42
,
0x09
,
0x04
,
0x13
,
0x1e
,
0x3d
,
0x30
,
0x27
,
0x2a
,
0xb1
,
0xbc
,
0xab
,
0xa6
,
0x85
,
0x88
,
0x9f
,
0x92
,
0xd9
,
0xd4
,
0xc3
,
0xce
,
0xed
,
0xe0
,
0xf7
,
0xfa
,
0xb7
,
0xba
,
0xad
,
0xa0
,
0x83
,
0x8e
,
0x99
,
0x94
,
0xdf
,
0xd2
,
0xc5
,
0xc8
,
0xeb
,
0xe6
,
0xf1
,
0xfc
,
0x67
,
0x6a
,
0x7d
,
0x70
,
0x53
,
0x5e
,
0x49
,
0x44
,
0x0f
,
0x02
,
0x15
,
0x18
,
0x3b
,
0x36
,
0x21
,
0x2c
,
0x0c
,
0x01
,
0x16
,
0x1b
,
0x38
,
0x35
,
0x22
,
0x2f
,
0x64
,
0x69
,
0x7e
,
0x73
,
0x50
,
0x5d
,
0x4a
,
0x47
,
0xdc
,
0xd1
,
0xc6
,
0xcb
,
0xe8
,
0xe5
,
0xf2
,
0xff
,
0xb4
,
0xb9
,
0xae
,
0xa3
,
0x80
,
0x8d
,
0x9a
,
0x97
,
},
{
// gmult(0x0b, b);
0x00
,
0x0b
,
0x16
,
0x1d
,
0x2c
,
0x27
,
0x3a
,
0x31
,
0x58
,
0x53
,
0x4e
,
0x45
,
0x74
,
0x7f
,
0x62
,
0x69
,
0xb0
,
0xbb
,
0xa6
,
0xad
,
0x9c
,
0x97
,
0x8a
,
0x81
,
0xe8
,
0xe3
,
0xfe
,
0xf5
,
0xc4
,
0xcf
,
0xd2
,
0xd9
,
0x7b
,
0x70
,
0x6d
,
0x66
,
0x57
,
0x5c
,
0x41
,
0x4a
,
0x23
,
0x28
,
0x35
,
0x3e
,
0x0f
,
0x04
,
0x19
,
0x12
,
0xcb
,
0xc0
,
0xdd
,
0xd6
,
0xe7
,
0xec
,
0xf1
,
0xfa
,
0x93
,
0x98
,
0x85
,
0x8e
,
0xbf
,
0xb4
,
0xa9
,
0xa2
,
0xf6
,
0xfd
,
0xe0
,
0xeb
,
0xda
,
0xd1
,
0xcc
,
0xc7
,
0xae
,
0xa5
,
0xb8
,
0xb3
,
0x82
,
0x89
,
0x94
,
0x9f
,
0x46
,
0x4d
,
0x50
,
0x5b
,
0x6a
,
0x61
,
0x7c
,
0x77
,
0x1e
,
0x15
,
0x08
,
0x03
,
0x32
,
0x39
,
0x24
,
0x2f
,
0x8d
,
0x86
,
0x9b
,
0x90
,
0xa1
,
0xaa
,
0xb7
,
0xbc
,
0xd5
,
0xde
,
0xc3
,
0xc8
,
0xf9
,
0xf2
,
0xef
,
0xe4
,
0x3d
,
0x36
,
0x2b
,
0x20
,
0x11
,
0x1a
,
0x07
,
0x0c
,
0x65
,
0x6e
,
0x73
,
0x78
,
0x49
,
0x42
,
0x5f
,
0x54
,
0xf7
,
0xfc
,
0xe1
,
0xea
,
0xdb
,
0xd0
,
0xcd
,
0xc6
,
0xaf
,
0xa4
,
0xb9
,
0xb2
,
0x83
,
0x88
,
0x95
,
0x9e
,
0x47
,
0x4c
,
0x51
,
0x5a
,
0x6b
,
0x60
,
0x7d
,
0x76
,
0x1f
,
0x14
,
0x09
,
0x02
,
0x33
,
0x38
,
0x25
,
0x2e
,
0x8c
,
0x87
,
0x9a
,
0x91
,
0xa0
,
0xab
,
0xb6
,
0xbd
,
0xd4
,
0xdf
,
0xc2
,
0xc9
,
0xf8
,
0xf3
,
0xee
,
0xe5
,
0x3c
,
0x37
,
0x2a
,
0x21
,
0x10
,
0x1b
,
0x06
,
0x0d
,
0x64
,
0x6f
,
0x72
,
0x79
,
0x48
,
0x43
,
0x5e
,
0x55
,
0x01
,
0x0a
,
0x17
,
0x1c
,
0x2d
,
0x26
,
0x3b
,
0x30
,
0x59
,
0x52
,
0x4f
,
0x44
,
0x75
,
0x7e
,
0x63
,
0x68
,
0xb1
,
0xba
,
0xa7
,
0xac
,
0x9d
,
0x96
,
0x8b
,
0x80
,
0xe9
,
0xe2
,
0xff
,
0xf4
,
0xc5
,
0xce
,
0xd3
,
0xd8
,
0x7a
,
0x71
,
0x6c
,
0x67
,
0x56
,
0x5d
,
0x40
,
0x4b
,
0x22
,
0x29
,
0x34
,
0x3f
,
0x0e
,
0x05
,
0x18
,
0x13
,
0xca
,
0xc1
,
0xdc
,
0xd7
,
0xe6
,
0xed
,
0xf0
,
0xfb
,
0x92
,
0x99
,
0x84
,
0x8f
,
0xbe
,
0xb5
,
0xa8
,
0xa3
,
}
};
/*
* Multiplication of 4 byte words
* m(x) = x4+1
SIMDE_FUNCTION_ATTRIBUTES
void coef_mult(uint8_t *a, uint8_t *b, uint8_t *d) {
d[0] = gmult(a[0],b[0])^gmult(a[3],b[1])^gmult(a[2],b[2])^gmult(a[1],b[3]);
d[1] = gmult(a[1],b[0])^gmult(a[0],b[1])^gmult(a[3],b[2])^gmult(a[2],b[3]);
d[2] = gmult(a[2],b[0])^gmult(a[1],b[1])^gmult(a[0],b[2])^gmult(a[3],b[3]);
d[3] = gmult(a[3],b[0])^gmult(a[2],b[1])^gmult(a[1],b[2])^gmult(a[0],b[3]);
}
*/
SIMDE_FUNCTION_ATTRIBUTES
void
simde_x_aes_coef_mult_lookup
(
int
lookup_table_offset
,
uint8_t
*
b
,
uint8_t
*
d
)
{
int
o
=
lookup_table_offset
;
#define gmultl(o,b) simde_x_aes_gmult_lookup_table[o][b]
d
[
0
]
=
gmultl
(
o
+
0
,
b
[
0
])
^
gmultl
(
o
+
3
,
b
[
1
])
^
gmultl
(
o
+
2
,
b
[
2
])
^
gmultl
(
o
+
1
,
b
[
3
]);
d
[
1
]
=
gmultl
(
o
+
1
,
b
[
0
])
^
gmultl
(
o
+
0
,
b
[
1
])
^
gmultl
(
o
+
3
,
b
[
2
])
^
gmultl
(
o
+
2
,
b
[
3
]);
d
[
2
]
=
gmultl
(
o
+
2
,
b
[
0
])
^
gmultl
(
o
+
1
,
b
[
1
])
^
gmultl
(
o
+
0
,
b
[
2
])
^
gmultl
(
o
+
3
,
b
[
3
]);
d
[
3
]
=
gmultl
(
o
+
3
,
b
[
0
])
^
gmultl
(
o
+
2
,
b
[
1
])
^
gmultl
(
o
+
1
,
b
[
2
])
^
gmultl
(
o
+
0
,
b
[
3
]);
#undef gmultl
}
#include "../simde-aes.h"
#include "../simde-aes.h"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment