source: Daodan/src/beaengine/Includes/instr_set/opcodes_AES.c@ 990

Last change on this file since 990 was 984, checked in by alloc, 11 years ago

Daodan: TV code

File size: 5.8 KB
Line 
1/* Copyright 2006-2009, BeatriX
2 * File coded by BeatriX
3 *
4 * This file is part of BeaEngine.
5 *
6 * BeaEngine is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * BeaEngine is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with BeaEngine. If not, see <http://www.gnu.org/licenses/>. */
18
19/* ====================================================================
20 * 0x 0f 38 db
21 * ==================================================================== */
22void __bea_callspec__ aesimc(PDISASM pMyDisasm)
23{
24 /* ========== 0x66 */
25 if (GV.OperandSize == 16) {
26 GV.OperandSize = GV.OriginalOperandSize;
27 (*pMyDisasm).Prefix.OperandSize = MandatoryPrefix;
28 GV.MemDecoration = Arg2dqword;
29 (*pMyDisasm).Instruction.Category = AES_INSTRUCTION;
30 #ifndef BEA_LIGHT_DISASSEMBLY
31 (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "aesimc ");
32 #endif
33 GV.SSE_ = 1;
34 GxEx(pMyDisasm);
35 GV.SSE_ = 0;
36 }
37 else {
38 FailDecode(pMyDisasm);
39 }
40}
41
42/* ====================================================================
43 * 0x 0f 38 dc
44 * ==================================================================== */
45void __bea_callspec__ aesenc(PDISASM pMyDisasm)
46{
47 /* ========== 0x66 */
48 if (GV.OperandSize == 16) {
49 GV.OperandSize = GV.OriginalOperandSize;
50 (*pMyDisasm).Prefix.OperandSize = MandatoryPrefix;
51 GV.MemDecoration = Arg2dqword;
52 (*pMyDisasm).Instruction.Category = AES_INSTRUCTION;
53 #ifndef BEA_LIGHT_DISASSEMBLY
54 (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "aesenc ");
55 #endif
56 GV.SSE_ = 1;
57 GxEx(pMyDisasm);
58 GV.SSE_ = 0;
59 }
60 else {
61 FailDecode(pMyDisasm);
62 }
63}
64
65/* ====================================================================
66 * 0x 0f 38 dd
67 * ==================================================================== */
68void __bea_callspec__ aesenclast(PDISASM pMyDisasm)
69{
70 /* ========== 0x66 */
71 if (GV.OperandSize == 16) {
72 GV.OperandSize = GV.OriginalOperandSize;
73 (*pMyDisasm).Prefix.OperandSize = MandatoryPrefix;
74 GV.MemDecoration = Arg2dqword;
75 (*pMyDisasm).Instruction.Category = AES_INSTRUCTION;
76 #ifndef BEA_LIGHT_DISASSEMBLY
77 (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "aesenclast ");
78 #endif
79 GV.SSE_ = 1;
80 GxEx(pMyDisasm);
81 GV.SSE_ = 0;
82 }
83 else {
84 FailDecode(pMyDisasm);
85 }
86}
87
88/* ====================================================================
89 * 0x 0f 38 de
90 * ==================================================================== */
91void __bea_callspec__ aesdec(PDISASM pMyDisasm)
92{
93 /* ========== 0x66 */
94 if (GV.OperandSize == 16) {
95 GV.OperandSize = GV.OriginalOperandSize;
96 (*pMyDisasm).Prefix.OperandSize = MandatoryPrefix;
97 GV.MemDecoration = Arg2dqword;
98 (*pMyDisasm).Instruction.Category = AES_INSTRUCTION;
99 #ifndef BEA_LIGHT_DISASSEMBLY
100 (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "aesdec ");
101 #endif
102 GV.SSE_ = 1;
103 GxEx(pMyDisasm);
104 GV.SSE_ = 0;
105 }
106 else {
107 FailDecode(pMyDisasm);
108 }
109}
110
111/* ====================================================================
112 * 0x 0f 38 df
113 * ==================================================================== */
114void __bea_callspec__ aesdeclast(PDISASM pMyDisasm)
115{
116 /* ========== 0x66 */
117 if (GV.OperandSize == 16) {
118 GV.OperandSize = GV.OriginalOperandSize;
119 (*pMyDisasm).Prefix.OperandSize = MandatoryPrefix;
120 GV.MemDecoration = Arg2dqword;
121 (*pMyDisasm).Instruction.Category = AES_INSTRUCTION;
122 #ifndef BEA_LIGHT_DISASSEMBLY
123 (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "aesdeclast ");
124 #endif
125 GV.SSE_ = 1;
126 GxEx(pMyDisasm);
127 GV.SSE_ = 0;
128 }
129 else {
130 FailDecode(pMyDisasm);
131 }
132}
133
134/* ====================================================================
135 * 0x 0f 3a df
136 * ==================================================================== */
137void __bea_callspec__ aeskeygen(PDISASM pMyDisasm)
138{
139 /* ========== 0x66 */
140 if (GV.OperandSize == 16) {
141 GV.OperandSize = GV.OriginalOperandSize;
142 (*pMyDisasm).Prefix.OperandSize = MandatoryPrefix;
143 GV.MemDecoration = Arg2dqword;
144 (*pMyDisasm).Instruction.Category = AES_INSTRUCTION;
145 #ifndef BEA_LIGHT_DISASSEMBLY
146 (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "aeskeygenassist ");
147 #endif
148 GV.ImmediatSize = 8;
149 GV.SSE_ = 1;
150 GxEx(pMyDisasm);
151 GV.SSE_ = 0;
152 GV.EIP_++;
153 if (!Security(0, pMyDisasm)) return;
154 GV.third_arg = 1;
155 (*pMyDisasm).Instruction.Immediat = *((UInt8*)(UIntPtr) (GV.EIP_- 1));
156 #ifndef BEA_LIGHT_DISASSEMBLY
157 (void) CopyFormattedNumber(pMyDisasm, (char*) (*pMyDisasm).Argument3.ArgMnemonic, "%.2X",(Int64) *((UInt8*)(UIntPtr) (GV.EIP_- 1)));
158 #endif
159 (*pMyDisasm).Argument3.ArgType = CONSTANT_TYPE+ABSOLUTE_;
160 (*pMyDisasm).Argument3.ArgSize = 8;
161
162
163 }
164 else {
165 FailDecode(pMyDisasm);
166 }
167
168}
Note: See TracBrowser for help on using the repository browser.