Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1499 lines
94 KiB

  1. /*++
  2. Copyright (c) 1994 Microsoft Corporation
  3. Module Name:
  4. x86test.c
  5. Abstract:
  6. This module implements a series of tests for the x86 ROM Bios emulator.
  7. Author:
  8. David N. Cutler (davec) 13-Sep-1994
  9. Environment:
  10. Kernel mode only.
  11. Revision History:
  12. --*/
  13. #include "nthal.h"
  14. #include "stdio.h"
  15. #include "string.h"
  16. #include "memory.h"
  17. #include "emulate.h"
  18. //
  19. // Define global instruction execution data.
  20. //
  21. UCHAR CodeStream[] = {0xeb, 0x07, // jmp .+7
  22. 0xc3, // ret (near)
  23. 0xcb, // ret (far)
  24. 0x66, 0xc3, // ret (near)
  25. 0x66, 0xcb, // ret (far)
  26. 0xcf, // iret
  27. 0xe9, 0x00, 0x00, // jmp .+1
  28. 0x66, 0xe9, 0x00, 0x00, 0x00, 0x00, // jmp .+1
  29. 0xea, 0x17, 0x00, 0x00, 0x20, // jmp 0x0017:0x2000
  30. 0x66, 0xea, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x20, // jmp 0x0000001f:0x2000
  31. 0x66, 0xb8, 0x2e, 0x00, 0x00, 0x20, // mov eax, 0x2000002e
  32. 0x66, 0x89, 0x06, 0x04, 0x00, // mov ds:0x0004, eax
  33. 0xff, 0x26, 0x04, 0x00, // jmp ds:0x0004
  34. 0x66, 0xb8, 0x3d, 0x00, 0x00, 0x20, // mov eax, 0x2000003d
  35. 0x66, 0x89, 0x06, 0x04, 0x00, // mov ds:0x0004, eax
  36. 0xff, 0x2e, 0x04, 0x00, // jmp ds:0x0004
  37. 0x9b, // wait (nop)
  38. /* 0x00, 0xc0, // add al, al
  39. 0x00, 0xc9, // add cl, cl
  40. 0x00, 0xd2, // add dl, dl
  41. 0x00, 0xdb, // add bl, bl
  42. 0x00, 0xe4, // add ah, ah
  43. 0x00, 0xed, // add ch, ch
  44. 0x00, 0xf6, // add dh, dh
  45. 0x00, 0xff, // add bh, bh
  46. 0x01, 0xc0, // add ax, ax
  47. 0x01, 0xc9, // add cx, cx
  48. 0x01, 0xd2, // add dx, dx
  49. 0x01, 0xdb, // add bx, bx
  50. 0x01, 0xed, // add bp, bp
  51. 0x01, 0xf6, // add si, si
  52. 0x01, 0xff, // add di, di
  53. 0x66, 0x01, 0xc0, // add eax, eax
  54. 0x66, 0x01, 0xc9, // add ecx, ecx
  55. 0x66, 0x01, 0xd2, // add edx, edx
  56. 0x66, 0x01, 0xdb, // add ebx, ebx
  57. 0x66, 0x01, 0xed, // add ebp, ebp
  58. 0x66, 0x01, 0xf6, // add esi, esi
  59. 0x66, 0x01, 0xff, // add edi, edi
  60. 0x66, 0x31, 0xc0, // xor eax, eax
  61. 0x66, 0x31, 0xc9, // xor ecx, ecx
  62. 0x66, 0x31, 0xd2, // xor edx, edx
  63. 0x66, 0x31, 0xdb, // xor ebx, ebx
  64. 0x66, 0x31, 0xed, // xor ebp, ebp
  65. 0x66, 0x31, 0xf6, // xor esi, esi
  66. 0x66, 0x31, 0xff, // xor edi, edi
  67. 0x04, 0xf0, // add al, 0xf0
  68. 0x41, // inc CX
  69. 0x41, // inc CX
  70. 0xc0, 0xc0, 0x05, // rol al, 0x05
  71. 0xd0, 0xc0, // rol al, 1
  72. 0xd2, 0xc0, // rol al, CL
  73. 0x05, 0x0f, 0x00, // add ax, 0x000f
  74. 0xc1, 0xc0, 0x0d, // rol ax, 0x0d
  75. 0xd1, 0xc0, // rol ax, 1
  76. 0xd3, 0xc0, // rol ax, CL
  77. 0x05, 0x00, 0xff, // add ax, 0xff00
  78. 0x66, 0xc1, 0xc0, 0x1d, // rol eax, 0x1d
  79. 0x66, 0xd1, 0xc0, // rol eax, 1
  80. 0x66, 0xd3, 0xc0, // rol eax, CL
  81. 0xf8, // clc
  82. 0xf9, // stc
  83. 0xf8, // clc
  84. 0xf5, // cmc
  85. 0xf5, // cmc
  86. 0xfa, // cli
  87. 0xfb, // sti
  88. 0xfc, // cld
  89. 0xfd, // std
  90. 0xfc, // cld
  91. 0x66, 0x31, 0xc0, // xor eax, eax
  92. 0x66, 0x31, 0xc9, // xor ecx, ecx
  93. 0x66, 0x31, 0xd2, // xor edx, edx
  94. 0x66, 0x31, 0xdb, // xor ebx, ebx
  95. 0x66, 0x31, 0xed, // xor ebp, ebp
  96. 0x66, 0x31, 0xf6, // xor esi, esi
  97. 0x66, 0x31, 0xff, // xor edi, edi
  98. 0x66, 0x05, 0xf0, 0x3c, 0x0f, 0x0f, // add eax, 0x0f0f3cf0
  99. 0x66, 0x89, 0xc2, // mov edx,eax
  100. 0x31, 0xd2, // xor dx, dx
  101. 0x88, 0xc3, // mov bl, al
  102. 0x88, 0xe7, // mov bh, ah
  103. 0x89, 0xda, // mov dx, bx
  104. 0x66, 0x89, 0xc6, // mov esi, eax
  105. 0x66, 0x31, 0xc0, // xor eax, eax
  106. 0x66, 0x8b, 0xc6, // mov eax, esi
  107. 0x66, 0x31, 0xc0, // xor eax, eax
  108. 0x66, 0x31, 0xc9, // xor ecx, ecx
  109. 0x66, 0x31, 0xd2, // xor edx, edx
  110. 0x66, 0x31, 0xdb, // xor ebx, ebx
  111. 0x66, 0x31, 0xed, // xor ebp, ebp
  112. 0x66, 0x31, 0xf6, // xor esi, esi
  113. 0x66, 0x31, 0xff, // xor edi, edi
  114. 0x66, 0xb8, 0x11, 0x11, 0x11, 0x11, // mov EAX, 0x11111111
  115. 0x66, 0xb9, 0x22, 0x22, 0x22, 0x22, // mov ECX, 0x22222222
  116. 0x66, 0xba, 0x33, 0x33, 0x33, 0x33, // mov EDX, 0x33333333
  117. 0x66, 0xbb, 0x44, 0x44, 0x44, 0x44, // mov EBX, 0x44444444
  118. 0x66, 0xbd, 0x66, 0x66, 0x66, 0x66, // mov EBP, 0x66666666
  119. 0x66, 0xbe, 0x77, 0x77, 0x77, 0x77, // mov ESI, 0x77777777
  120. 0x66, 0xbf, 0x88, 0x88, 0x88, 0x88, // mov EDI, 0x88888888
  121. 0xb8, 0x08, 0x01, // mov AX, 0x0108
  122. 0xb9, 0x09, 0x02, // mov CX, 0x0209
  123. 0xba, 0x0a, 0x03, // mov DX, 0x030a
  124. 0xbb, 0x0b, 0x04, // mov BX, 0x040b
  125. 0xbd, 0x0d, 0x06, // mov BP, 0x060d
  126. 0xbe, 0x0e, 0x07, // mov SI, 0x070e
  127. 0xbf, 0x0f, 0x08, // mov DI, 0x080f
  128. 0xb0, 0x01, // mov al, 0x01
  129. 0xb1, 0x02, // mov cl, 0x02
  130. 0xb2, 0x03, // mov dl, 0x03
  131. 0xb3, 0x04, // mov bl, 0x04
  132. 0xb4, 0x05, // mov ah, 0x05
  133. 0xb5, 0x06, // mov ch, 0x06
  134. 0xb6, 0x07, // mov dh, 0x07
  135. 0xb7, 0x08, // mov bh, 0x08
  136. 0x91, // xchg cx, ax
  137. 0x92, // xchg dx, ax
  138. 0x93, // xchg bx, ax
  139. 0x95, // xchg bp, ax
  140. 0x96, // xchg si, ax
  141. 0x97, // xchg di, ax
  142. 0x66, 0x91, // xchg ecx, eax
  143. 0x66, 0x92, // xchg edx, eax
  144. 0x66, 0x93, // xchg ebx, eax
  145. 0x66, 0x95, // xchg ebp, eax
  146. 0x66, 0x96, // xchg esi, eax
  147. 0x66, 0x97, // xchg edi, eax
  148. 0x86, 0xd9, // xchg bl, cl
  149. 0x87, 0xd9, // xchg bx, cx
  150. 0x66, 0x87, 0xd9, // xchg ebx, ecx
  151. 0xb0, 0x7f, // mov al, 0x7f
  152. 0x98, // cbw
  153. 0xb0, 0x83, // mov al, 0x83
  154. 0x98, // cbw
  155. 0xb8, 0x01, 0x08, // mov AX, 0x0801
  156. 0x99, // cwd
  157. 0xb8, 0x01, 0x80, // mov AX, 0x8001
  158. 0x99, // cwd
  159. 0xb4, 0xfd, // mov ah, 0xfd
  160. 0x9e, // sahf
  161. 0xb4, 0x77, // mov ah, 0x77
  162. 0x9f, // lahf
  163. 0xc6, 0xc0, 0xed, // mov al, 0xed
  164. 0xc6, 0xc4, 0xde, // mov ah, 0xde
  165. 0xc7, 0xc0, 0xcc, 0xdd, // mov ax, 0xddcc
  166. 0x66, 0xc7, 0xc0, 0xdd, 0xcc, 0xbb, 0xaa, // mov eax, 0xaabbccdd
  167. 0xb0, 0x83, // mov al, 0x83
  168. 0x0f, 0x90, 0xc0, // seto al
  169. 0xb0, 0x83, // mov al, 0x83
  170. 0x0f, 0x91, 0xc0, // setno al
  171. 0xb0, 0x83, // mov al, 0x83
  172. 0x0f, 0x92, 0xc0, // setb al
  173. 0xb0, 0x83, // mov al, 0x83
  174. 0x0f, 0x93, 0xc0, // setnb al
  175. 0xb0, 0x83, // mov al, 0x83
  176. 0x0f, 0x94, 0xc0, // setz al
  177. 0xb0, 0x83, // mov al, 0x83
  178. 0x0f, 0x95, 0xc0, // setnz al
  179. 0xb0, 0x83, // mov al, 0x83
  180. 0x0f, 0x96, 0xc0, // setbe al
  181. 0xb0, 0x83, // mov al, 0x83
  182. 0x0f, 0x97, 0xc0, // setnbe al
  183. 0xb0, 0x83, // mov al, 0x83
  184. 0x0f, 0x98, 0xc0, // sets al
  185. 0xb0, 0x83, // mov al, 0x83
  186. 0x0f, 0x99, 0xc0, // setns al
  187. 0xb0, 0x83, // mov al, 0x83
  188. 0x0f, 0x9a, 0xc0, // setp al
  189. 0xb0, 0x83, // mov al, 0x83
  190. 0x0f, 0x9b, 0xc0, // setnp al
  191. 0xb0, 0x83, // mov al, 0x83
  192. 0x0f, 0x9c, 0xc0, // setl al
  193. 0xb0, 0x83, // mov al, 0x83
  194. 0x0f, 0x9d, 0xc0, // setnl al
  195. 0xb0, 0x83, // mov al, 0x83
  196. 0x0f, 0x9e, 0xc0, // setle al
  197. 0xb0, 0x83, // mov al, 0x83
  198. 0x0f, 0x9f, 0xc0, // setnle al
  199. 0x66, 0xb8, 0xfe, 0xff, 0x01, 0x00, // mov eax, 0x0001fffe
  200. 0x40, // inc ax
  201. 0x66, 0x40, // inc eax
  202. 0x66, 0x48, // dec eax
  203. 0x48, // dec ax
  204. 0x66, 0xb9, 0xfe, 0xff, 0x01, 0x00, // mov ecx, 0x0001fffe
  205. 0x41, // inc cx
  206. 0x66, 0x41, // inc ecx
  207. 0x66, 0x49, // dec ecxx
  208. 0x49, // dec cx
  209. 0x66, 0xba, 0xfe, 0xff, 0x01, 0x00, // mov edx, 0x0001fffe
  210. 0x42, // inc dx
  211. 0x66, 0x42, // inc edx
  212. 0x66, 0x4a, // dec edx
  213. 0x4a, // dec dx
  214. 0x66, 0xbb, 0xfe, 0xff, 0x01, 0x00, // mov ebx, 0x0001fffe
  215. 0x43, // inc bx
  216. 0x66, 0x43, // inc ebx
  217. 0x66, 0x4b, // dec ebx
  218. 0x4b, // dec bx
  219. 0x66, 0xbd, 0xfe, 0xff, 0x01, 0x00, // mov ebp, 0x0001fffe
  220. 0x45, // inc bp
  221. 0x66, 0x45, // inc ebp
  222. 0x66, 0x4d, // dec ebp
  223. 0x4d, // dec bp
  224. 0x66, 0xbe, 0xfe, 0xff, 0x01, 0x00, // mov esi, 0x0001fffe
  225. 0x46, // inc si
  226. 0x66, 0x46, // inc esi
  227. 0x66, 0x4e, // dec esix
  228. 0x4e, // dec si
  229. 0x66, 0xbf, 0xfe, 0xff, 0x01, 0x00, // mov edi, 0x0001fffe
  230. 0x47, // inc di
  231. 0x66, 0x47, // inc edi
  232. 0x66, 0x4f, // dec edix
  233. 0x4f, // dec di
  234. 0x26, 0x90, // ES: nop
  235. 0x2e, 0x90, // CS: nop
  236. 0x36, 0x90, // SS: nop
  237. 0x3e, 0x90, // DS: nop
  238. 0x64, 0x90, // FS: nop
  239. 0x65, 0x90, // GS: nop
  240. 0xb8, 0xb8, 0xb8, // mov ax, 0xb8b8
  241. 0xb9, 0xb9, 0xb9, // mov cx, 0xb9b9
  242. 0xba, 0xba, 0xba, // mov dx, 0xbaba
  243. 0xbb, 0xbb, 0xbb, // mov bx, 0xbbbb
  244. 0xbd, 0xbd, 0xbd, // mov bp, 0xbdbd
  245. 0xbe, 0xbe, 0xbe, // mov si, 0xbebe
  246. 0xbf, 0xbf, 0xbf, // mov di, 0xbfbf
  247. 0x66, 0x50, // push eax
  248. 0x66, 0x51, // push ecx
  249. 0x66, 0x52, // push edx
  250. 0x66, 0x53, // push ebx
  251. 0x66, 0x54, // push esp
  252. 0x66, 0x55, // push ebp
  253. 0x66, 0x56, // push esi
  254. 0x66, 0x57, // push edi
  255. 0x50, // push ax
  256. 0x51, // push cx
  257. 0x52, // push dx
  258. 0x53, // push bx
  259. 0x54, // push sp
  260. 0x55, // push bp
  261. 0x56, // push si
  262. 0x57, // push di
  263. 0xb8, 0x00, 0x00, // mov ax, 0x0000
  264. 0xb9, 0x00, 0x00, // mov cx, 0x0000
  265. 0xba, 0x00, 0x00, // mov dx, 0x0000
  266. 0xbb, 0x00, 0x00, // mov bx, 0x0000
  267. 0xbd, 0x00, 0x00, // mov bp, 0x0000
  268. 0xbe, 0x00, 0x00, // mov si, 0x0000
  269. 0xbf, 0x00, 0x00, // mov di, 0x0000
  270. 0x5f, // pop di
  271. 0x5e, // pop si
  272. 0x5d, // pop bp
  273. 0x5c, // pop sp
  274. 0x5b, // pop bx
  275. 0x5a, // pop dx
  276. 0x59, // pop cx
  277. 0x58, // pop ax
  278. 0xb8, 0x00, 0x00, // mov ax, 0x0000
  279. 0xb9, 0x00, 0x00, // mov cx, 0x0000
  280. 0xba, 0x00, 0x00, // mov dx, 0x0000
  281. 0xbb, 0x00, 0x00, // mov bx, 0x0000
  282. 0xbd, 0x00, 0x00, // mov bp, 0x0000
  283. 0xbe, 0x00, 0x00, // mov si, 0x0000
  284. 0xbf, 0x00, 0x00, // mov di, 0x0000
  285. 0x66, 0x5f, // pop edi
  286. 0x66, 0x5e, // pop esi
  287. 0x66, 0x5d, // pop ebp
  288. 0x66, 0x5c, // pop esp
  289. 0x66, 0x5b, // pop ebx
  290. 0x66, 0x5a, // pop edx
  291. 0x66, 0x59, // pop ecx
  292. 0x66, 0x58, // pop eax
  293. 0x06, // push ES
  294. 0x0e, // push CS
  295. 0x16, // push SS
  296. 0x1e, // push DS
  297. 0x0f, 0xa0, // push FS
  298. 0x0f, 0xa8, // push GS
  299. 0x0f, 0xa9, // pop GS
  300. 0x0f, 0xa1, // pop FS
  301. 0x1f, // pop DS
  302. 0x17, // pop SS
  303. 0x58, // pop ax
  304. 0x07, // pop ES
  305. 0x90, // nop
  306. 0xb0, 0x81, // mov al, 0x81
  307. 0xb1, 0xff, // mov cl, 0xff
  308. 0x20, 0xc1, // and cl, al
  309. 0xb0, 0x55, // mov al, 0x55
  310. 0xb1, 0xff, // mov cl, 0xff
  311. 0x20, 0xc1, // and cl, al
  312. 0xb0, 0x81, // mov al, 0x81
  313. 0xb1, 0x7e, // mov cl, 0x7e
  314. 0x20, 0xc1, // and cl, al
  315. 0xb8, 0x81, 0x81, // mov ax, 0x8181
  316. 0xb9, 0xff, 0xff, // mov cx, 0xffff
  317. 0x21, 0xc1, // and cx, ax
  318. 0xb8, 0x55, 0x55, // mov ax, 0x5555
  319. 0xb9, 0xff, 0xff, // mov cx, 0xffff
  320. 0x21, 0xc1, // and cx, ax
  321. 0xb8, 0x81, 0x81, // mov ax, 0x8181
  322. 0xb9, 0x7e, 0x7e, // mov cx, 0x7e7e
  323. 0x21, 0xc1, // and cx, ax
  324. 0x66, 0xb8, 0x80, 0x81, 0x81, 0x81, // mov eax, 0x81818181
  325. 0x66, 0xb9, 0xff, 0xff, 0xff, 0xff, // mov ecx, 0xffffffff
  326. 0x66, 0x21, 0xc1, // and ecx, eax
  327. 0x66, 0xb8, 0x55, 0x55, 0x55, 0x55, // mov eax, 0x55555555
  328. 0x66, 0xb9, 0xff, 0xff, 0xff, 0xff, // mov ecx, 0xffffffff
  329. 0x66, 0x21, 0xc1, // and ecx, eax
  330. 0x66, 0xb8, 0x81, 0x81, 0x81, 0x81, // mov eax, 0x81818181
  331. 0x66, 0xb9, 0x7e, 0x7e, 0x7e, 0x7e, // mov ecx, 0x7e7e7e7e
  332. 0x66, 0x21, 0xc1, // and ecx, eax
  333. 0xb1, 0x80, // mov cl, 0x80
  334. 0x80, 0xe1, 0xff, // and cl, 0xff
  335. 0xb9, 0x55, 0x55, // mov cx, 0x5555
  336. 0x81, 0xe1, 0xff, 0xff, // and cx, 0xffff
  337. 0x66, 0xb9, 0x80, 0x81, 0x81, 0x81, // mov ecx, 0x81818181
  338. 0x66, 0x81, 0xe1, 0xff, 0xff, 0xff, 0xff, // and ecx, 0xffffffff
  339. 0xb9, 0x55, 0x55, // mov cx, 0x5555
  340. 0x83, 0xe1, 0x7f, // and cx, (sign)0xff
  341. 0x66, 0xb9, 0x80, 0x81, 0x81, 0x81, // mov ecx, 0x81818181
  342. 0x66, 0x83, 0xe1, 0x7f, // and ecx, (sign)0xff
  343. 0xb9, 0x55, 0x55, // mov cx, 0x5555
  344. 0x83, 0xe1, 0xf7, // and cx, (sign)0xff
  345. 0x66, 0xb9, 0x80, 0x81, 0x81, 0x81, // mov ecx, 0x81818181
  346. 0x66, 0x83, 0xe1, 0xf7, // and ecx, (sign)0xff
  347. 0xb0, 0x81, // mov al, 0x81
  348. 0xb1, 0xff, // mov cl, 0xff
  349. 0x08, 0xc1, // or cl, al
  350. 0xb0, 0x55, // mov al, 0x55
  351. 0xb1, 0xff, // mov cl, 0xff
  352. 0x08, 0xc1, // or cl, al
  353. 0xb0, 0x81, // mov al, 0x81
  354. 0xb1, 0x7e, // mov cl, 0x7e
  355. 0x08, 0xc1, // or cl, al
  356. 0xb8, 0x81, 0x81, // mov ax, 0x8181
  357. 0xb9, 0xff, 0xff, // mov cx, 0xffff
  358. 0x09, 0xc1, // or cx, ax
  359. 0xb8, 0x55, 0x55, // mov ax, 0x5555
  360. 0xb9, 0xff, 0xff, // mov cx, 0xffff
  361. 0x09, 0xc1, // or cx, ax
  362. 0xb8, 0x81, 0x81, // mov ax, 0x8181
  363. 0xb9, 0x7e, 0x7e, // mov cx, 0x7e7e
  364. 0x09, 0xc1, // or cx, ax
  365. 0x66, 0xb8, 0x80, 0x81, 0x81, 0x81, // mov eax, 0x81818181
  366. 0x66, 0xb9, 0xff, 0xff, 0xff, 0xff, // mov ecx, 0xffffffff
  367. 0x66, 0x09, 0xc1, // or ecx, eax
  368. 0x66, 0xb8, 0x55, 0x55, 0x55, 0x55, // mov eax, 0x55555555
  369. 0x66, 0xb9, 0xff, 0xff, 0xff, 0xff, // mov ecx, 0xffffffff
  370. 0x66, 0x09, 0xc1, // or ecx, eax
  371. 0x66, 0xb8, 0x81, 0x81, 0x81, 0x81, // mov eax, 0x81818181
  372. 0x66, 0xb9, 0x7e, 0x7e, 0x7e, 0x7e, // mov ecx, 0x7e7e7e7e
  373. 0x66, 0x09, 0xc1, // or ecx, eax
  374. 0xb1, 0x80, // mov cl, 0x80
  375. 0x80, 0xc9, 0xff, // or cl, 0xff
  376. 0xb9, 0x55, 0x55, // mov cx, 0x5555
  377. 0x81, 0xc9, 0xff, 0xff, // or cx, 0xffff
  378. 0x66, 0xb9, 0x80, 0x81, 0x81, 0x81, // mov ecx, 0x81818181
  379. 0x66, 0x81, 0xc9, 0xff, 0xff, 0xff, 0xff, // or ecx, 0xffffffff
  380. 0xb9, 0x55, 0x55, // mov cx, 0x5555
  381. 0x83, 0xc9, 0x7f, // or cx, (sign)0xff
  382. 0x66, 0xb9, 0x80, 0x81, 0x81, 0x81, // mov ecx, 0x81818181
  383. 0x66, 0x83, 0xc9, 0x7f, // or ecx, (sign)0xff
  384. 0xb9, 0x55, 0x55, // mov cx, 0x5555
  385. 0x83, 0xc9, 0xf7, // or cx, (sign)0xff
  386. 0x66, 0xb9, 0x80, 0x81, 0x81, 0x81, // mov ecx, 0x81818181
  387. 0x66, 0x83, 0xc9, 0xf7, // or ecx, (sign)0xff
  388. 0xb0, 0x81, // mov al, 0x81
  389. 0xb1, 0xff, // mov cl, 0xff
  390. 0x30, 0xc1, // xor cl, al
  391. 0xb0, 0x55, // mov al, 0x55
  392. 0xb1, 0xff, // mov cl, 0xff
  393. 0x30, 0xc1, // xor cl, al
  394. 0xb0, 0x81, // mov al, 0x81
  395. 0xb1, 0x7e, // mov cl, 0x7e
  396. 0x30, 0xc1, // xor cl, al
  397. 0xb8, 0x81, 0x81, // mov ax, 0x8181
  398. 0xb9, 0xff, 0xff, // mov cx, 0xffff
  399. 0x31, 0xc1, // xor cx, ax
  400. 0xb8, 0x55, 0x55, // mov ax, 0x5555
  401. 0xb9, 0xff, 0xff, // mov cx, 0xffff
  402. 0x31, 0xc1, // xor cx, ax
  403. 0xb8, 0x81, 0x81, // mov ax, 0x8181
  404. 0xb9, 0x7e, 0x7e, // mov cx, 0x7e7e
  405. 0x31, 0xc1, // xor cx, ax
  406. 0x66, 0xb8, 0x80, 0x81, 0x81, 0x81, // mov eax, 0x81818181
  407. 0x66, 0xb9, 0xff, 0xff, 0xff, 0xff, // mov ecx, 0xffffffff
  408. 0x66, 0x31, 0xc1, // xor ecx, eax
  409. 0x66, 0xb8, 0x55, 0x55, 0x55, 0x55, // mov eax, 0x55555555
  410. 0x66, 0xb9, 0xff, 0xff, 0xff, 0xff, // mov ecx, 0xffffffff
  411. 0x66, 0x31, 0xc1, // xor ecx, eax
  412. 0x66, 0xb8, 0x81, 0x81, 0x81, 0x81, // mov eax, 0x81818181
  413. 0x66, 0xb9, 0x7e, 0x7e, 0x7e, 0x7e, // mov ecx, 0x7e7e7e7e
  414. 0x66, 0x31, 0xc1, // xor ecx, eax
  415. 0xb1, 0x80, // mov cl, 0x80
  416. 0x80, 0xf1, 0xff, // xor cl, 0xff
  417. 0xb9, 0x55, 0x55, // mov cx, 0x5555
  418. 0x81, 0xf1, 0xff, 0xff, // xor cx, 0xffff
  419. 0x66, 0xb9, 0x80, 0x81, 0x81, 0x81, // mov ecx, 0x81818181
  420. 0x66, 0x81, 0xf1, 0xff, 0xff, 0xff, 0xff, // xor ecx, 0xffffffff
  421. 0xb9, 0x55, 0x55, // mov cx, 0x5555
  422. 0x83, 0xf1, 0x7f, // xor cx, (sign)0xff
  423. 0x66, 0xb9, 0x80, 0x81, 0x81, 0x81, // mov ecx, 0x81818181
  424. 0x66, 0x83, 0xf1, 0x7f, // xor ecx, (sign)0xff
  425. 0xb9, 0x55, 0x55, // mov cx, 0x5555
  426. 0x83, 0xf1, 0xf7, // xor cx, (sign)0xff
  427. 0x66, 0xb9, 0x80, 0x81, 0x81, 0x81, // mov ecx, 0x81818181
  428. 0x66, 0x83, 0xf1, 0xf7, // xor ecx, (sign)0xff
  429. 0xb0, 0x81, // mov al, 0x81
  430. 0xa8, 0xff, // test al, 0xff
  431. 0xb0, 0x55, // mov al, 0x55
  432. 0xa8, 0xff, // test al, 0xff
  433. 0xb0, 0x81, // mov al, 0x81
  434. 0xa8, 0x7e, // test al, 0x7e
  435. 0xb8, 0x81, 0x81, // mov ax, 0x8181
  436. 0xa9, 0xff, 0xff, // test ax, 0xffff
  437. 0xb8, 0x55, 0x55, // mov ax, 0x5555
  438. 0xa9, 0xff, 0xff, // test ax, 0xffff
  439. 0xb8, 0x81, 0x81, // mov ax, 0x8181
  440. 0xa9, 0x7e, 0x7e, // test ax, 0x7e7e
  441. 0x66, 0xb8, 0x80, 0x81, 0x81, 0x81, // mov eax, 0x81818181
  442. 0x66, 0xa9, 0xff, 0xff, 0xff, 0xff, // test ecx, 0xffffffff
  443. 0x66, 0xb8, 0x55, 0x55, 0x55, 0x55, // mov eax, 0x55555555
  444. 0x66, 0xa9, 0xff, 0xff, 0xff, 0xff, // test eax, 0xffffffff
  445. 0x66, 0xb8, 0x81, 0x81, 0x81, 0x81, // mov eax, 0x81818181
  446. 0x66, 0xa9, 0x7e, 0x7e, 0x7e, 0x7e, // test eax, 0x7e7e7e7e
  447. 0xb2, 0x81, // mov dl, 0x81
  448. 0xf6, 0xd2, // not dl
  449. 0xba, 0x7e, 0x7e, // mov dx, 0xfe7e
  450. 0xf7, 0xd2, // not dx
  451. 0x66, 0xba, 0x5a, 0xa5, 0x5a, 0xa5, // mov edx, 0xa55aa55a
  452. 0x66, 0xf7, 0xd2, // not edx
  453. 0xb1, 0x81, // mov cl, 0x81
  454. 0xf6, 0xc1, 0xff, // test cl, 0xff
  455. 0xb1, 0x55, // mov cl, 0x55
  456. 0xf6, 0xc1, 0xff, // test cl, 0xff
  457. 0xb1, 0x81, // mov cl, 0x81
  458. 0xf6, 0xc1, 0x7e, // test cl, 0x7e
  459. 0xb9, 0x81, 0x81, // mov cx, 0x8181
  460. 0xf7, 0xc1, 0xff, 0xff, // test cx, 0xffff
  461. 0xb9, 0x55, 0x55, // mov cx, 0x5555
  462. 0xf7, 0xc1, 0xff, 0xff, // test cx, 0xffff
  463. 0xb9, 0x81, 0x81, // mov cx, 0x8181
  464. 0xf7, 0xc1, 0x7e, 0x7e, // test cx, 0x7e7e
  465. 0x66, 0xb9, 0x81, 0x81, 0x81, 0x81, // mov ecx, 0x81818181
  466. 0x66, 0xf7, 0xc1, 0xff, 0xff, 0xff, 0xff, // test ecx, 0xffffffff
  467. 0x66, 0xb9, 0x55, 0x55, 0x55, 0x55, // mov ecx, 0x55555555
  468. 0x66, 0xf7, 0xc1, 0xff, 0xff, 0xff, 0xff, // test ecx, 0xffffffff
  469. 0x66, 0xb9, 0x81, 0x81, 0x81, 0x81, // mov ecx, 0x81818181
  470. 0x66, 0xf7, 0xc1, 0x7e, 0x7e, 0x7e, 0x7e, // test ecx, 0x7e7e7e7e
  471. 0xb2, 0x81, // mov dl, 0x81
  472. 0xf6, 0xda, // neg dl
  473. 0xba, 0x7e, 0xfe, // mov dx, 0xfe7e
  474. 0xf7, 0xda, // neg dx
  475. 0x66, 0xba, 0x5a, 0xa5, 0x5a, 0xa5, // mov edx, 0xa55aa55a
  476. 0x66, 0xf7, 0xda, // neg edx
  477. 0xb2, 0x7f, // mov dl, 0x7f
  478. 0xf6, 0xda, // neg dl
  479. 0xba, 0x7e, 0x7e, // mov dx, 0x7e7e
  480. 0xf7, 0xda, // neg dx
  481. 0x66, 0xba, 0xa5, 0x5a, 0xa5, 0x5a, // mov edx, 0x5aa55aa5
  482. 0x66, 0xf7, 0xda, // neg edx
  483. 0xb0, 0x7f, // mov al, 0x7f
  484. 0x98, // cbw
  485. 0xb0, 0x83, // mov al, 0x83
  486. 0x98, // cbw
  487. 0xb8, 0x01, 0x08, // mov ax, 0x0801
  488. 0x99, // cwd
  489. 0xb8, 0x01, 0x80, // mov ax, 0x8001
  490. 0x99, // cwd
  491. 0xb8, 0x7f, 0x7f, // mov ax, 0x7f7f
  492. 0x66, 0x98, // cwde
  493. 0xb8, 0x83, 0x83, // mov ax, 0x8383
  494. 0x66, 0x98, // cwde
  495. 0x66, 0xb8, 0x01, 0x08, 0x01, 0x08, // mov eax, 0x08010801
  496. 0x66, 0x99, // cdq
  497. 0x66, 0xb8, 0x01, 0x80, 0x01, 0x80, // mov eax, 0x80018001
  498. 0x66, 0x99, // cdq
  499. 0x66, 0x9c, // pushaf
  500. 0x9c, // pushf
  501. 0x66, 0xb8, 0xd7, 0x0c, 0x06, 0x00, // mov eax, 0x00060cd7
  502. 0x66, 0x50, // push eax
  503. 0x50, // push ax
  504. 0x9d, // popf
  505. 0x66, 0x9d, // popaf
  506. 0x9d, // popf
  507. 0x66, 0x9d, // popaf
  508. 0x68, 0xef, 0xfe, // push 0xfeef
  509. 0x68, 0x11, 0x11, // push 0x1111
  510. 0x66, 0x68, 0xef, 0xfe, 0xef, 0xfe, // push 0xfeeffeef
  511. 0x6a, 0xfe, // push 0xfe -> 0xfffe
  512. 0x6a, 0x7f, // push 0x7f -> 0x007f
  513. 0x66, 0x6a, 0xfe, // push 0xfe -> 0xfffffffe
  514. 0x66, 0x6a, 0x7f, // push 0x7f -> 0x0000007f
  515. 0x66, 0x9d, // popaf
  516. 0x66, 0x9d, // popaf
  517. 0x9d, // popf
  518. 0x9d, // popf
  519. 0x66, 0x9d, // popaf
  520. 0x9d, // popf
  521. 0x9d, // popf
  522. 0x60, // pusha
  523. 0x66, 0x60, // pushad
  524. 0x66, 0x31, 0xc0, // xor eax, eax
  525. 0x66, 0x31, 0xc9, // xor ecx, ecx
  526. 0x66, 0x31, 0xd2, // xor edx, edx
  527. 0x66, 0x31, 0xdb, // xor ebx, ebx
  528. 0x66, 0x31, 0xed, // xor ebp, ebp
  529. 0x66, 0x31, 0xf6, // xor esi, esi
  530. 0x66, 0x31, 0xff, // xor edi, edi
  531. 0x66, 0x61, // popad
  532. 0x66, 0x31, 0xc0, // xor eax, eax
  533. 0x66, 0x31, 0xc9, // xor ecx, ecx
  534. 0x66, 0x31, 0xd2, // xor edx, edx
  535. 0x66, 0x31, 0xdb, // xor ebx, ebx
  536. 0x66, 0x31, 0xed, // xor ebp, ebp
  537. 0x66, 0x31, 0xf6, // xor esi, esi
  538. 0x66, 0x31, 0xff, // xor edi, edi
  539. 0x61, // popa
  540. 0xb4, 0x40, // mov ah, 0x40 (ZF)
  541. 0x9e, // sahf
  542. 0x74, 0x00, // jz Ib .+1
  543. 0x75, 0x00, // jnz Ib .+1
  544. 0x0f, 0x84, 0x00, 0x00, // jz Iv .+1
  545. 0x0f, 0x85, 0x00, 0x00, // jnz Iv .+1
  546. 0x66, 0x0f, 0x84, 0x00, 0x00, 0x00, 0x00, // jz Iv .+1
  547. 0x66, 0x0f, 0x85, 0x00, 0x00, 0x00, 0x00, // jnz Iv .+1
  548. 0xb4, 0x01, // mov ah, 0x01 (CF)
  549. 0x9e, // sahf
  550. 0x72, 0x00, // jb Ib .+1
  551. 0x73, 0x00, // jnb Ib .+1
  552. 0x0f, 0x82, 0x00, 0x00, // jb Iv .+1
  553. 0x0f, 0x83, 0x00, 0x00, // jnb Iv .+1
  554. 0x66, 0x0f, 0x82, 0x00, 0x00, 0x00, 0x00, // jb Iv .+1
  555. 0x66, 0x0f, 0x83, 0x00, 0x00, 0x00, 0x00, // jnb Iv .+1
  556. 0xb4, 0x41, // mov ah, 0x41 (ZF-CF)
  557. 0x9e, // sahf
  558. 0x76, 0x00, // jbe Ib .+1
  559. 0x77, 0x00, // jnbe Ib .+1
  560. 0x0f, 0x86, 0x00, 0x00, // jbe Iv .+1
  561. 0x0f, 0x87, 0x00, 0x00, // jnbe Iv .+1
  562. 0x66, 0x0f, 0x86, 0x00, 0x00, 0x00, 0x00, // jbe Iv .+1
  563. 0x66, 0x0f, 0x87, 0x00, 0x00, 0x00, 0x00, // jnbe Iv .+1
  564. 0xb4, 0x80, // mov ah, 0x80 (SF)
  565. 0x9e, // sahf
  566. 0x78, 0x00, // js Ib .+1
  567. 0x79, 0x00, // jns Ib .+1
  568. 0x0f, 0x88, 0x00, 0x00, // js Iv .+1
  569. 0x0f, 0x89, 0x00, 0x00, // jns Iv .+1
  570. 0x66, 0x0f, 0x88, 0x00, 0x00, 0x00, 0x00, // js Iv .+1
  571. 0x66, 0x0f, 0x89, 0x00, 0x00, 0x00, 0x00, // jns Iv .+1
  572. 0xb4, 0x04, // mov ah, 0x04 (PF)
  573. 0x9e, // sahf
  574. 0x7a, 0x00, // jp Ib .+1
  575. 0x7b, 0x00, // jnp Ib .+1
  576. 0x0f, 0x8a, 0x00, 0x00, // jp Iv .+1
  577. 0x0f, 0x8b, 0x00, 0x00, // jnp Iv .+1
  578. 0x66, 0x0f, 0x8a, 0x00, 0x00, 0x00, 0x00, // jp Iv .+1
  579. 0x66, 0x0f, 0x8b, 0x00, 0x00, 0x00, 0x00, // jnp Iv .+1
  580. 0xb4, 0x80, // mov ah, 0x80 (SF)
  581. 0x9e, // sahf
  582. 0x7c, 0x00, // jl Ib .+1
  583. 0x7d, 0x00, // jnl Ib .+1
  584. 0x0f, 0x8c, 0x00, 0x00, // jl Iv .+1
  585. 0x0f, 0x8d, 0x00, 0x00, // jnl Iv .+1
  586. 0x66, 0x0f, 0x8c, 0x00, 0x00, 0x00, 0x00, // jl Iv .+1
  587. 0x66, 0x0f, 0x8d, 0x00, 0x00, 0x00, 0x00, // jnl Iv .+1
  588. 0xb4, 0xc0, // mov ah, 0xc0 (SF-ZF)
  589. 0x9e, // sahf
  590. 0x7e, 0x00, // jle Ib .+1
  591. 0x7f, 0x00, // jnle Ib .+1
  592. 0x0f, 0x8e, 0x00, 0x00, // jle Iv .+1
  593. 0x0f, 0x8f, 0x00, 0x00, // jnle Iv .+1
  594. 0x66, 0x0f, 0x8e, 0x00, 0x00, 0x00, 0x00, // jle Iv .+1
  595. 0x66, 0x0f, 0x8f, 0x00, 0x00, 0x00, 0x00, // jnle Iv .+1
  596. 0xb0, 0x80, // mov al, 0x80
  597. 0xd0, 0xc0, // rol al, 1
  598. 0x70, 0x00, // jo Ib .+1
  599. 0x71, 0x00, // jno Ib .+1
  600. 0x0f, 0x80, 0x00, 0x00, // jo Iv .+1
  601. 0x0f, 0x81, 0x00, 0x00, // jno Iv .+1
  602. 0x66, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, // jo Iv .+1
  603. 0x66, 0x0f, 0x81, 0x00, 0x00, 0x00, 0x00, // jno Iv .+1
  604. 0xb8, 0x00, 0x00, // mov ax, 0x0000
  605. 0xb9, 0x02, 0x00, // mov cx, 0x0002
  606. 0x40, // inc ax
  607. 0xe2, 0xfd, // loop .-3
  608. 0x66, 0xb8, 0x00, 0x00, 0x00, 0x00, // mov eax, 0x00000000
  609. 0x66, 0xb9, 0x02, 0x00, 0x00, 0x00, // mov ecx, 0x00000001
  610. 0x66, 0x40, // inc eax
  611. 0x67, 0xe2, 0xfb, // loop .-5
  612. 0xb8, 0x00, 0x00, // mov ax, 0x0000
  613. 0xb9, 0x02, 0x00, // mov cx, 0x0002
  614. 0x40, // inc ax
  615. 0xe1, 0xfd, // loopz .-3
  616. 0xb8, 0x00, 0x00, // mov ax, 0x0000
  617. 0xb9, 0x02, 0x00, // mov cx, 0x0002
  618. 0x40, // inc ax
  619. 0xe0, 0xfd, // loopnz .-3
  620. 0x31, 0xc0, // xor ax, ax
  621. 0xb9, 0x02, 0x00, // mov cx, 0x0002
  622. 0x40, // inc ax
  623. 0xe0, 0xfd, // loopnz .-3
  624. 0x31, 0xc0, // xor ax, ax
  625. 0xb9, 0x02, 0x00, // mov cx, 0x0002
  626. 0x90, // nop
  627. 0xe1, 0xfd, // loopz .-3
  628. 0xeb, 0x00, // jmp .+1
  629. 0xe9, 0x00, 0x00, // jmp .+1
  630. 0x66, 0xe9, 0x00, 0x00, 0x00, 0x00, // jmp .+1
  631. 0xb0, 0x7f, // mov al, 0x7f
  632. 0x0f, 0xb6, 0xc8, // movzb cx,al
  633. 0x0f, 0xbe, 0xc8, // movsb cx,al
  634. 0xb0, 0x8f, // mov al, 0x8f
  635. 0x0f, 0xb6, 0xc8, // movzb cx,al
  636. 0x0f, 0xbe, 0xc8, // movsb cx,al
  637. 0xb0, 0x7f, // mov al, 0x7f
  638. 0x66, 0x0f, 0xb6, 0xc8, // movzb ecx,al
  639. 0x66, 0x0f, 0xbe, 0xc8, // movsb ecx,al
  640. 0xb0, 0x8f, // mov al, 0x8f
  641. 0x66, 0x0f, 0xb6, 0xc8, // movzb ecx,al
  642. 0x66, 0x0f, 0xbe, 0xc8, // movsb ecx,al
  643. 0xb8, 0x00, 0x7f, // mov ax, 0x7f00
  644. 0x0f, 0xb7, 0xc8, // movzw cx,ax
  645. 0x0f, 0xbf, 0xc8, // movsw cx,ax
  646. 0xb8, 0x00, 0x8f, // mov ax, 0x8f00
  647. 0x66, 0x0f, 0xb7, 0xc8, // movzw ecx,ax
  648. 0x66, 0x0f, 0xbf, 0xc8, // movsw ecx,ax
  649. 0xb8, 0x55, 0xaa, // mov ax, 0xaa55
  650. 0x8e, 0xe0, // mov fs, ax
  651. 0x8c, 0xe1, // mov cx, fs
  652. 0x8e, 0xe9, // mov gs, cx
  653. 0x68, 0xef, 0xfe, // push 0xfeef
  654. 0x68, 0x11, 0x11, // push 0x1111
  655. 0x66, 0x68, 0xef, 0xfe, 0xef, 0xfe, // push 0xfeeffeef
  656. 0x66, 0x8f, 0xc1, // pop ecx
  657. 0x8f, 0xc1, // pop cx
  658. 0x8f, 0xc2, // pop dx
  659. 0xb0, 0x03, // mov al, 0x03
  660. 0xb1, 0x05, // mov cl, 0x05
  661. 0xf6, 0xe1, // mul al, cl
  662. 0xb0, 0xff, // mov al, 0xff
  663. 0xb1, 0x10, // mov cl, 0x10
  664. 0xf6, 0xe1, // mul al, cl
  665. 0xb8, 0x03, 0x00, // mov ax, 0x03
  666. 0xb9, 0x05, 0x00, // mov cx, 0x05
  667. 0xf7, 0xe1, // mul ax, cx
  668. 0xb8, 0x00, 0xff, // mov ax, 0xff00
  669. 0xb9, 0x10, 0x00, // mov cx, 0x0010
  670. 0xf7, 0xe1, // mul ax, cx
  671. 0x66, 0xb8, 0x03, 0x00, 0x00, 0x00, // mov eax, 0x00000003
  672. 0x66, 0xb9, 0x05, 0x00, 0x00, 0x00, // mov ecx, 0x00000005
  673. 0x66, 0xf7, 0xe1, // mul eax, ecx
  674. 0x66, 0xb8, 0x00, 0x00, 0x00, 0xff, // mov eax, 0xff000000
  675. 0x66, 0xb9, 0x10, 0x00, 0x00, 0x00, // mov ecx, 0x00000010
  676. 0x66, 0xf7, 0xe1, // mul eax, ecx
  677. 0xb0, 0x03, // mov al, 0x03
  678. 0xb1, 0x05, // mov cl, 0x05
  679. 0xf6, 0xe9, // imul al, cl
  680. 0xb0, 0xff, // mov al, 0xff
  681. 0xb1, 0x10, // mov cl, 0x10
  682. 0xf6, 0xe9, // imul al, cl
  683. 0xb8, 0x03, 0x00, // mov ax, 0x03
  684. 0xb9, 0x05, 0x00, // mov cx, 0x05
  685. 0xf7, 0xe9, // imul ax, cx
  686. 0xb8, 0xff, 0xff, // mov ax, 0xffff
  687. 0xb9, 0x10, 0x00, // mov cx, 0x0010
  688. 0xf7, 0xe9, // imul ax, cx
  689. 0xb8, 0x00, 0xf0, // mov ax, 0xf000
  690. 0xb9, 0x10, 0x00, // mov cx, 0x0010
  691. 0xf7, 0xe9, // imul ax, cx
  692. 0x66, 0xb8, 0x03, 0x00, 0x00, 0x00, // mov eax, 0x00000003
  693. 0x66, 0xb9, 0x05, 0x00, 0x00, 0x00, // mov ecx, 0x00000005
  694. 0x66, 0xf7, 0xe9, // imul eax, ecx
  695. 0x66, 0xb8, 0x00, 0x00, 0x00, 0xf0, // mov eax, 0xf0000000
  696. 0x66, 0xb9, 0x10, 0x00, 0x00, 0x00, // mov ecx, 0x00000010
  697. 0x66, 0xf7, 0xe9, // imul eax, ecx
  698. 0xb8, 0x03, 0x00, // mov ax, 0x0003
  699. 0x6b, 0xc8, 0x05, // imul cx, ax, 0x05
  700. 0xb8, 0x00, 0xff, // mov ax, 0xff00
  701. 0x6b, 0xc8, 0x10, // imul cx, ax, 0x10
  702. 0xb8, 0x00, 0xf0, // mov ax, 0xf000
  703. 0x6b, 0xc8, 0x10, // imul cx, ax, 0x10
  704. 0xb8, 0x00, 0x10, // mov ax, 0x1000
  705. 0x6b, 0xc8, 0xf0, // imul cx, ax, 0xf0
  706. 0x66, 0xb8, 0x03, 0x00, 0x00, 0x00, // mov eax, 0x00000003
  707. 0x66, 0x6b, 0xc8, 0x05, // imul ecx, eax, 0x05
  708. 0x66, 0xb8, 0x00, 0x00, 0x00, 0xff, // mov eax, 0xff000000
  709. 0x66, 0x6b, 0xc8, 0x10, // imul ecx, eax, 0x10
  710. 0x66, 0xb8, 0x00, 0x00, 0x00, 0xf0, // mov eax, 0xf0000000
  711. 0x66, 0x6b, 0xc8, 0x10, // imul ecx, eax, 0x10
  712. 0x66, 0xb8, 0x00, 0x00, 0x00, 0x10, // mov eax, 0x1000
  713. 0x66, 0x6b, 0xc8, 0xf0, // imul ecx, eax, 0xf0
  714. 0xb8, 0x03, 0x00, // mov ax, 0x0003
  715. 0x69, 0xc8, 0x05, 0x00, // imul cx, ax, 0x0005
  716. 0xb8, 0x00, 0xff, // mov ax, 0xff00
  717. 0x69, 0xc8, 0x10, 0x00, // imul cx, ax, 0x0010
  718. 0xb8, 0x00, 0xf0, // mov ax, 0xf000
  719. 0x69, 0xc8, 0x10, 0x00, // imul cx, ax, 0x0010
  720. 0xb8, 0x00, 0x10, // mov ax, 0x1000
  721. 0x69, 0xc8, 0x00, 0xf0, // imul cx, ax, 0xf000
  722. 0x66, 0xb8, 0x03, 0x00, 0x00, 0x00, // mov eax, 0x00000003
  723. 0x66, 0x69, 0xc8, 0x05, 0x00, 0x00, 0x00, // imul ecx, eax, 0x00000005
  724. 0x66, 0xb8, 0x00, 0x00, 0x00, 0xff, // mov eax, 0xff000000
  725. 0x66, 0x69, 0xc8, 0x10, 0x00, 0x00, 0x00, // imul ecx, eax, 0x00000010
  726. 0x66, 0xb8, 0x00, 0x00, 0x00, 0xf0, // mov eax, 0xf0000000
  727. 0x66, 0x69, 0xc8, 0x10, 0x00, 0x00, 0x00, // imul ecx, eax, 0x00000010
  728. 0x66, 0xb8, 0x00, 0x00, 0x00, 0x10, // mov eax, 0x10000000
  729. 0x66, 0x69, 0xc8, 0xf0, 0xff, 0xff, 0xff, // imul ecx, eax, 0xfffffff0
  730. 0xb8, 0x03, 0x00, // mov ax, 0x0003
  731. 0xb9, 0x05, 0x00, // mov cx, 0x0005
  732. 0x0f, 0xaf, 0xc8, // imul cx, ax
  733. 0xb8, 0x00, 0xff, // mov ax, 0xff00
  734. 0xb9, 0x10, 0x00, // mov cx, 0x0010
  735. 0x0f, 0xaf, 0xc8, // imul cx,ax
  736. 0xb8, 0x00, 0xf0, // mov ax, 0xf000
  737. 0xb9, 0x10, 0x00, // mov cx, 0x0010
  738. 0x0f, 0xaf, 0xc8, // imul cx,ax
  739. 0xb8, 0x00, 0x10, // mov ax, 0x1000
  740. 0xb9, 0x00, 0xf0, // mov cx, 0xf000
  741. 0x0f, 0xaf, 0xc8, // imul cx,ax
  742. 0x66, 0xb8, 0x03, 0x00, 0x00, 0x00, // mov eax, 0x00000003
  743. 0x66, 0xb9, 0x05, 0x00, 0x00, 0x00, // mov ecx, 0x00000005
  744. 0x66, 0x0f, 0xaf, 0xc8, // imul ecx, eax
  745. 0x66, 0xb8, 0x00, 0x00, 0x00, 0xff, // mov eax, 0xff000000
  746. 0x66, 0xb9, 0x10, 0x00, 0x00, 0x00, // mov ecx, 0x00000010
  747. 0x66, 0x0f, 0xaf, 0xc8, // imul ecx, eax
  748. 0x66, 0xb8, 0x00, 0x00, 0x00, 0xf0, // mov eax, 0xf0000000
  749. 0x66, 0xb9, 0x10, 0x00, 0x00, 0x00, // mov ecx, 0x00000010
  750. 0x66, 0x0f, 0xaf, 0xc8, // imul ecx, eax
  751. 0x66, 0xb8, 0x00, 0x00, 0x00, 0x10, // mov eax, 0x10000000
  752. 0x66, 0xb9, 0xf0, 0xff, 0xff, 0xff, // mov ecx, 0xfffffff0
  753. 0x66, 0x0f, 0xaf, 0xc8, // imul ecx, eax
  754. 0xb1, 0xfe, // mov cl, 0xfe
  755. 0xfe, 0xc1, // inc cl
  756. 0xfe, 0xc1, // inc cl
  757. 0xfe, 0xc9, // dec cl
  758. 0xfe, 0xc9, // dec cl
  759. 0xb9, 0xfe, 0xff, // mov cx, 0xfffe
  760. 0xff, 0xc1, // inc cx
  761. 0xff, 0xc1, // inc cx
  762. 0xff, 0xc9, // dec cx
  763. 0xff, 0xc9, // dec cx
  764. 0x66, 0xb9, 0xfe, 0xff, 0xff, 0xff, // mov ecx, 0xfffffffe
  765. 0x66, 0xff, 0xc1, // inc ecx
  766. 0x66, 0xff, 0xc1, // inc ecx
  767. 0x66, 0xff, 0xc9, // dec ecx
  768. 0x66, 0xff, 0xc9, // dec ecx
  769. 0xff, 0xf2, // push dx
  770. 0x8f, 0xc3, // pop bx
  771. 0x66, 0xff, 0xf5, // push ebp
  772. 0x66, 0x8f, 0xc6, // pop esi
  773. 0xb8, 0x7f, 0x00, // mov ax, 0x007f
  774. 0xb1, 0x04, // mov cl, 0x04
  775. 0xf6, 0xf1, // div ah:al, cl
  776. 0xb8, 0x80, 0x00, // mov ax, 0x0080
  777. 0xb1, 0x10, // mov cl, 0x10
  778. 0xf6, 0xf1, // div ah:al, cl
  779. 0xb8, 0x0f, 0x7f, // mov ax, 0x7f0f
  780. 0xba, 0x00, 0x00, // mov dx, 0x0000
  781. 0xb9, 0x04, 0x00, // mov cx, 0x04
  782. 0xf7, 0xf1, // div dx:ax, cx
  783. 0xb8, 0x00, 0x80, // mov ax, 0x8000
  784. 0xba, 0x00, 0x00, // mov dx, 0x0000
  785. 0xb9, 0x10, 0x00, // mov cx, 0x10
  786. 0xf7, 0xf1, // div dx:ax, cx
  787. 0x66, 0xb8, 0x0f, 0x00, 0x00, 0x7f, // mov eax, 0x7f00000f
  788. 0x66, 0xba, 0x00, 0x00, 0x00, 0x00, // mov edx, 0x00000000
  789. 0x66, 0xb9, 0x04, 0x00, 0x00, 0x00, // mov ecx, 0x00000004
  790. 0x66, 0xf7, 0xf1, // div edx:eax, ecx
  791. 0x66, 0xb8, 0x00, 0x00, 0x00, 0x80, // mov eax, 0x80000000
  792. 0x66, 0xba, 0x00, 0x00, 0x00, 0x00, // mov edx, 0x00000000
  793. 0x66, 0xb9, 0x10, 0x00, 0x00, 0x00, // mov ecx, 0x00000010
  794. 0x66, 0xf7, 0xf1, // div edx:eax, ecx
  795. 0xb8, 0x7f, 0x00, // mov ax, 0x007f
  796. 0xb1, 0x04, // mov cl, 0x04
  797. 0xf6, 0xf9, // idiv ah:al, cl
  798. 0xb8, 0x81, 0xff, // mov ax, 0xff81
  799. 0xb1, 0x10, // mov cl, 0x10
  800. 0xf6, 0xf9, // idiv ah:al, cl
  801. 0xb8, 0x0f, 0x7f, // mov ax, 0x7f0f
  802. 0xba, 0x00, 0x00, // mov dx, 0x0000
  803. 0xb9, 0x04, 0x00, // mov cx, 0x04
  804. 0xf7, 0xf9, // idiv dx:ax, cx
  805. 0xb8, 0x01, 0x80, // mov ax, 0x8001
  806. 0xba, 0xff, 0xff, // mov dx, 0xffff
  807. 0xb9, 0x10, 0x00, // mov cx, 0x10
  808. 0xf7, 0xf9, // idiv dx:ax, cx
  809. 0x66, 0xb8, 0x0f, 0x00, 0x00, 0x7f, // mov eax, 0x7f00000f
  810. 0x66, 0xba, 0x00, 0x00, 0x00, 0x00, // mov edx, 0x00000000
  811. 0x66, 0xb9, 0x04, 0x00, 0x00, 0x00, // mov ecx, 0x00000004
  812. 0x66, 0xf7, 0xf9, // idiv edx:eax, ecx
  813. 0x66, 0xb8, 0x01, 0x00, 0x00, 0x80, // mov eax, 0x80000001
  814. 0x66, 0xba, 0xff, 0xff, 0xff, 0xff, // mov edx, 0xffffffff
  815. 0x66, 0xb9, 0x10, 0x00, 0x00, 0x00, // mov ecx, 0x00000010
  816. 0x66, 0xf7, 0xf9, // idiv edx:eax, ecx
  817. 0x66, 0xb8, 0x05, 0x50, 0x0a, 0xa0, // mov eax, 0xa00a5005
  818. 0xa2, 0x00, 0x00, // mov 0x0000, al
  819. 0x67, 0xa2, 0x04, 0x00, 0x00, 0x00, // mov 0x00000004, al
  820. 0xa3, 0x08, 0x00, // mov 0x0008, ax
  821. 0x67, 0xa3, 0x0c, 0x00, 0x00, 0x00, // mov 0x0000000c, ax
  822. 0x66, 0xa3, 0x10, 0x00, // mov 0x0010, eax
  823. 0x66, 0x67, 0xa3, 0x14, 0x00, 0x00, 0x00, // mov 0x00000014, eax
  824. 0x66, 0xb8, 0x00, 0x00, 0x00, 0x00, // mov eax, 0x00000000
  825. 0xa0, 0x00, 0x00, // mov al, ds:0x0000
  826. 0xb0, 0x00, // mov al, 0x00
  827. 0x67, 0xa0, 0x04, 0x00, 0x00, 0x00, // al, mov ds:0x00000004
  828. 0xb0, 0x00, // mov al, 0x00
  829. 0xa1, 0x08, 0x00, // mov ax, ds:0x0008
  830. 0xb8, 0x00, 0x00, // mov ax, 0x0000
  831. 0x67, 0xa1, 0x0c, 0x00, 0x00, 0x00, // mov ax, ds:0x0000000c
  832. 0xb8, 0x00, 0x00, // mov ax, 0x0000
  833. 0x66, 0xa1, 0x10, 0x00, // mov eax, ds:0x0010
  834. 0x66, 0xb8, 0x00, 0x00, 0x00, 0x00, // mov eax, 0x00000000
  835. 0x66, 0x67, 0xa1, 0x14, 0x00, 0x00, 0x00, // eax, ds:mov 0x00000014
  836. 0x66, 0xb9, 0x00, 0x00, 0x10, 0x10, // mov ecx, 0x10100000
  837. 0xe3, 0x00, // jcxz .+1
  838. 0xb9, 0x01, 0x01, // mov cx, 0x0101
  839. 0xe3, 0x00, // jcxz .+1
  840. 0x66, 0xe3, 0x00, // jecxz .+1
  841. 0x66, 0xb9, 0x00, 0x00, 0x00, 0x00, // mov ecx, 0x00000000
  842. 0x66, 0xe3, 0x00, // jecxz .+1
  843. 0xb8, 0x01, 0x00, // mov ax, 0x0001
  844. 0xb9, 0x02, 0x00, // mov cx, 0x0002
  845. 0xba, 0x03, 0x00, // mov dx, 0x0003
  846. 0xbb, 0x04, 0x00, // mov bx, 0x0004
  847. 0xbd, 0x06, 0x00, // mov bp, 0x0006
  848. 0xbe, 0x07, 0x00, // mov si, 0x0007
  849. 0xbf, 0x08, 0x00, // mov di, 0x0008
  850. 0x66, 0x8d, 0x80, 0x10, 0x10, // lea eax,[bx + si + 0x1010]
  851. 0x66, 0x8d, 0x81, 0x10, 0x10, // lea eax,[bx + di + 0x1010]
  852. 0x66, 0x8d, 0x82, 0x10, 0x10, // lea eax,[bp + si + 0x1010]
  853. 0x66, 0x8d, 0x83, 0x10, 0x10, // lea eax,[bp + di + 0x1010]
  854. 0x66, 0x8d, 0x84, 0x10, 0x10, // lea eax,[si + 0x1010]
  855. 0x66, 0x8d, 0x85, 0x10, 0x10, // lea eax,[di + 0x1010]
  856. 0x66, 0x8d, 0x86, 0x10, 0x10, // lea eax,[bp + 0x1010]
  857. 0x66, 0x8d, 0x87, 0x10, 0x10, // lea eax,[bx + 0x1010]
  858. 0x66, 0x8d, 0x40, 0x10, // lea eax,[bx + si + 0x10]
  859. 0x66, 0x8d, 0x41, 0x10, // lea eax,[bx + di + 0x10]
  860. 0x66, 0x8d, 0x42, 0x10, // lea eax,[bp + si + 0x10]
  861. 0x66, 0x8d, 0x43, 0x10, // lea eax,[bp + di + 0x10]
  862. 0x66, 0x8d, 0x44, 0x10, // lea eax,[si + 0x10]
  863. 0x66, 0x8d, 0x45, 0x10, // lea eax,[di + 0x10]
  864. 0x66, 0x8d, 0x46, 0x10, // lea eax,[bp + 0x10]
  865. 0x66, 0x8d, 0x47, 0x10, // lea eax,[bx + 0x10]
  866. 0x66, 0x8d, 0x00, // lea eax,[bx + si]
  867. 0x66, 0x8d, 0x01, // lea eax,[bx + di]
  868. 0x66, 0x8d, 0x02, // lea eax,[bp + si]
  869. 0x66, 0x8d, 0x03, // lea eax,[bp + di]
  870. 0x66, 0x8d, 0x04, // lea eax,[si]
  871. 0x66, 0x8d, 0x05, // lea eax,[di]
  872. 0x66, 0x8d, 0x06, 0xff, 0xee, // lea eax,[0xffee]
  873. 0x66, 0x8d, 0x07, // lea eax,[bx]
  874. 0x8d, 0x80, 0x10, 0x10, // lea ax,[bx + si + 0x1010]
  875. 0x8d, 0x81, 0x10, 0x10, // lea ax,[bx + di + 0x1010]
  876. 0x8d, 0x82, 0x10, 0x10, // lea ax,[bp + si + 0x1010]
  877. 0x8d, 0x83, 0x10, 0x10, // lea ax,[bp + di + 0x1010]
  878. 0x8d, 0x84, 0x10, 0x10, // lea ax,[si + 0x1010]
  879. 0x8d, 0x85, 0x10, 0x10, // lea ax,[di + 0x1010]
  880. 0x8d, 0x86, 0x10, 0x10, // lea ax,[bp + 0x1010]
  881. 0x8d, 0x87, 0x10, 0x10, // lea ax,[bx + 0x1010]
  882. 0x8d, 0x40, 0x10, // lea ax,[bx + si + 0x10]
  883. 0x8d, 0x41, 0x10, // lea ax,[bx + di + 0x10]
  884. 0x8d, 0x42, 0x10, // lea ax,[bp + si + 0x10]
  885. 0x8d, 0x43, 0x10, // lea ax,[bp + di + 0x10]
  886. 0x8d, 0x44, 0x10, // lea ax,[si + 0x10]
  887. 0x8d, 0x45, 0x10, // lea ax,[di + 0x10]
  888. 0x8d, 0x46, 0x10, // lea ax,[bp + 0x10]
  889. 0x8d, 0x47, 0x10, // lea ax,[bx + 0x10]
  890. 0x8d, 0x00, // lea ax,[bx + si]
  891. 0x8d, 0x01, // lea ax,[bx + di]
  892. 0x8d, 0x02, // lea ax,[bp + si]
  893. 0x8d, 0x03, // lea ax,[bp + di]
  894. 0x8d, 0x04, // lea ax,[si]
  895. 0x8d, 0x05, // lea ax,[di]
  896. 0x8d, 0x06, 0xff, 0xee, // lea ax,[0xffee]
  897. 0x8d, 0x07, // lea ax,[bx]
  898. 0xb8, 0x01, 0x00, // mov ax, 0x0001
  899. 0xb9, 0x02, 0x00, // mov cx, 0x0002
  900. 0xba, 0x03, 0x00, // mov dx, 0x0003
  901. 0xbb, 0x04, 0x00, // mov bx, 0x0004
  902. 0xbd, 0x06, 0x00, // mov bp, 0x0006
  903. 0xbe, 0x07, 0x00, // mov si, 0x0007
  904. 0xbf, 0x08, 0x00, // mov di, 0x0008
  905. 0x67, 0x8d, 0x00, // lea ax,[eax]
  906. 0x67, 0x8d, 0x01, // lea ax,[ecx]
  907. 0x67, 0x8d, 0x02, // lea ax,[edx]
  908. 0x67, 0x8d, 0x03, // lea ax,[ebx]
  909. 0x67, 0x8d, 0x05, 0xff, 0xee, 0xdd, 0xcc, // lea ax,[0xccddeeff]
  910. 0x67, 0x8d, 0x06, // lea ax,[esi]
  911. 0x67, 0x8d, 0x07, // lea ax,[edi]
  912. 0x67, 0x8d, 0x40, 0x10, // lea ax,[eax + 0x10]
  913. 0x67, 0x8d, 0x41, 0x10, // lea ax,[ecx + 0x10]
  914. 0x67, 0x8d, 0x42, 0x10, // lea ax,[edx + 0x10]
  915. 0x67, 0x8d, 0x43, 0x10, // lea ax,[ebx + 0x10]
  916. 0x67, 0x8d, 0x45, 0x10, // lea ax,[ebp + 0x10]
  917. 0x67, 0x8d, 0x46, 0x10, // lea ax,[esi + 0x10]
  918. 0x67, 0x8d, 0x47, 0x10, // lea ax,[edi + 0x10]
  919. 0x67, 0x8d, 0x80, 0x10, 0x10, 0x10, 0x10, // lea ax,[eax + 0x10101010]
  920. 0x67, 0x8d, 0x81, 0x10, 0x10, 0x10, 0x10, // lea ax,[ecx + 0x10101010]
  921. 0x67, 0x8d, 0x82, 0x10, 0x10, 0x10, 0x10, // lea ax,[edx + 0x10101010]
  922. 0x67, 0x8d, 0x83, 0x10, 0x10, 0x10, 0x10, // lea ax,[ebx + 0x10101010]
  923. 0x67, 0x8d, 0x85, 0x10, 0x10, 0x10, 0x10, // lea ax,[ebp + 0x10101010]
  924. 0x67, 0x8d, 0x86, 0x10, 0x10, 0x10, 0x10, // lea ax,[esi + 0x10101010]
  925. 0x67, 0x8d, 0x87, 0x10, 0x10, 0x10, 0x10, // lea ax,[edi + 0x10101010]
  926. 0x66, 0x67, 0x8d, 0x00, // lea eax,[eax]
  927. 0x66, 0x67, 0x8d, 0x01, // lea eax,[ecx]
  928. 0x66, 0x67, 0x8d, 0x02, // lea eax,[edx]
  929. 0x66, 0x67, 0x8d, 0x03, // lea eax,[ebx]
  930. 0x66, 0x67, 0x8d, 0x05, 0x10, 0x10, 0x10, 0x10, // lea eax,[0x10101010]
  931. 0x66, 0x67, 0x8d, 0x06, // lea eax,[esi]
  932. 0x66, 0x67, 0x8d, 0x07, // lea eax,[edi]
  933. 0x66, 0x67, 0x8d, 0x40, 0x10, // lea eax,[eax + 0x10]
  934. 0x66, 0x67, 0x8d, 0x41, 0x10, // lea eax,[ecx + 0x10]
  935. 0x66, 0x67, 0x8d, 0x42, 0x10, // lea eax,[edx + 0x10]
  936. 0x66, 0x67, 0x8d, 0x43, 0x10, // lea eax,[ebx + 0x10]
  937. 0x66, 0x67, 0x8d, 0x45, 0x10, // lea eax,[ebp + 0x10]
  938. 0x66, 0x67, 0x8d, 0x46, 0x10, // lea eax,[esi + 0x10]
  939. 0x66, 0x67, 0x8d, 0x47, 0x10, // lea eax,[edi + 0x10]
  940. 0x66, 0x67, 0x8d, 0x80, 0x10, 0x10, 0x10, 0x10, // lea eax,[eax + 0x10101010]
  941. 0x66, 0x67, 0x8d, 0x81, 0x10, 0x10, 0x10, 0x10, // lea eax,[ecx + 0x10101010]
  942. 0x66, 0x67, 0x8d, 0x82, 0x10, 0x10, 0x10, 0x10, // lea eax,[edx + 0x10101010]
  943. 0x66, 0x67, 0x8d, 0x83, 0x10, 0x10, 0x10, 0x10, // lea eax,[ebx + 0x10101010]
  944. 0x66, 0x67, 0x8d, 0x85, 0x10, 0x10, 0x10, 0x10, // lea eax,[ebp + 0x10101010]
  945. 0x66, 0x67, 0x8d, 0x86, 0x10, 0x10, 0x10, 0x10, // lea eax,[esi + 0x10101010]
  946. 0x66, 0x67, 0x8d, 0x87, 0x10, 0x10, 0x10, 0x10, // lea eax,[edi + 0x10101010]
  947. 0x66, 0xb8, 0x02, 0x00, 0xff, 0x00, // mov eax, 0x00ff0002
  948. 0x67, 0x8d, 0x04, 0x80, // lea ax,[eax + eax * 2]
  949. 0x66, 0xb8, 0x02, 0x00, 0xff, 0x00, // mov eax, 0x00ff0002
  950. 0x67, 0x8d, 0x04, 0x81, // lea ax,[ecx + eax * 2]
  951. 0x66, 0xb8, 0x02, 0x00, 0xff, 0x00, // mov eax, 0x00ff0002
  952. 0x67, 0x8d, 0x04, 0x82, // lea ax,[edx + eax * 2]
  953. 0x66, 0xb8, 0x02, 0x00, 0xff, 0x00, // mov eax, 0x00ff0002
  954. 0x67, 0x8d, 0x04, 0x83, // lea ax,[ebx + eax * 2]
  955. 0x66, 0xb8, 0x02, 0x00, 0xff, 0x00, // mov eax, 0x00ff0002
  956. 0x67, 0x8d, 0x04, 0x84, // lea ax,[esp + eax * 2]
  957. 0x66, 0xb8, 0x02, 0x00, 0xff, 0x00, // mov eax, 0x00ff0002
  958. 0x67, 0x8d, 0x04, 0x85, 0x10, 0x10, 0x10, 0x10, // lea ax,[0x10101010 + eax * 2]
  959. 0x66, 0xb8, 0x02, 0x00, 0xff, 0x00, // mov eax, 0x00ff0002
  960. 0x67, 0x8d, 0x04, 0x86, // lea ax,[esi + eax * 2]
  961. 0x66, 0xb8, 0x02, 0x00, 0xff, 0x00, // mov eax, 0x00ff0002
  962. 0x67, 0x8d, 0x04, 0x87, // lea ax,[edi + eax * 2]
  963. 0x66, 0xb8, 0x02, 0x00, 0xff, 0x00, // mov eax, 0x00ff0002
  964. 0x67, 0x66, 0x8d, 0x04, 0x80, // lea eax,[eax + eax * 2]
  965. 0x66, 0xb8, 0x02, 0x00, 0xff, 0x00, // mov eax, 0x00ff0002
  966. 0x67, 0x66, 0x8d, 0x04, 0x81, // lea eax,[ecx + eax * 2]
  967. 0x66, 0xb8, 0x02, 0x00, 0xff, 0x00, // mov eax, 0x00ff0002
  968. 0x67, 0x66, 0x8d, 0x04, 0x82, // lea eax,[edx + eax * 2]
  969. 0x66, 0xb8, 0x02, 0x00, 0xff, 0x00, // mov eax, 0x00ff0002
  970. 0x67, 0x66, 0x8d, 0x04, 0x83, // lea eax,[ebx + eax * 2]
  971. 0x66, 0xb8, 0x02, 0x00, 0xff, 0x00, // mov eax, 0x00ff0002
  972. 0x67, 0x66, 0x8d, 0x04, 0x84, // lea eax,[esp + eax * 2]
  973. 0x66, 0xb8, 0x02, 0x00, 0xff, 0x00, // mov eax, 0x00ff0002
  974. 0x67, 0x66, 0x8d, 0x04, 0x85, 0x10, 0x10, 0x10, 0x10, // lea eax,[0x10101010 + eax * 2]
  975. 0x66, 0xb8, 0x02, 0x00, 0xff, 0x00, // mov eax, 0x00ff0002
  976. 0x67, 0x66, 0x8d, 0x04, 0x86, // lea eax,[esi + eax * 2]
  977. 0x66, 0xb8, 0x02, 0x00, 0xff, 0x00, // mov eax, 0x00ff0002
  978. 0x67, 0x66, 0x8d, 0x04, 0x87, // lea eax,[edi + eax * 2]
  979. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x00, // mov eax, 0x00000002
  980. 0x66, 0x67, 0x8d, 0x44, 0x80, 0x10, // lea eax,[eax + eax * 2 + 0x10]
  981. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x00, // mov eax, 0x00000002
  982. 0x66, 0x67, 0x8d, 0x44, 0x81, 0x10, // lea eax,[ecx + eax * 2 + 0x10]
  983. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x00, // mov eax, 0x00000002
  984. 0x66, 0x67, 0x8d, 0x44, 0x82, 0x10, // lea eax,[edx + eax * 2 + 0x10]
  985. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x00, // mov eax, 0x00000002
  986. 0x66, 0x67, 0x8d, 0x44, 0x83, 0x10, // lea eax,[ebx + eax * 2 + 0x10]
  987. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x00, // mov eax, 0x00000002
  988. 0x66, 0x67, 0x8d, 0x44, 0x84, 0x10, // lea eax,[esp + eax * 2 + 0x10]
  989. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x00, // mov eax, 0x00000002
  990. 0x66, 0x67, 0x8d, 0x44, 0x85, 0x10, // lea eax,[ebp + eax * 2 + 0x10]
  991. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x00, // mov eax, 0x00000002
  992. 0x66, 0x67, 0x8d, 0x44, 0x86, 0x10, // lea eax,[esi + eax * 2 + 0x10]
  993. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x00, // mov eax, 0x00000002
  994. 0x66, 0x67, 0x8d, 0x44, 0x87, 0x10, // lea eax,[edi + eax * 2 + 0x10]
  995. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x00, // mov eax, 0x00000002
  996. 0x66, 0x67, 0x8d, 0x84, 0x80, 0x10, 0x00, 0x00, 0x10, // lea eax,[eax + eax * 2 + 0x10000010]
  997. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x00, // mov eax, 0x00000002
  998. 0x66, 0x67, 0x8d, 0x84, 0x81, 0x10, 0x00, 0x00, 0x10, // lea eax,[ecx + eax * 2 + 0x10000010]
  999. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x00, // mov eax, 0x00000002
  1000. 0x66, 0x67, 0x8d, 0x84, 0x82, 0x10, 0x00, 0x00, 0x10, // lea eax,[edx + eax * 2 + 0x10000010]
  1001. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x00, // mov eax, 0x00000002
  1002. 0x66, 0x67, 0x8d, 0x84, 0x83, 0x10, 0x00, 0x00, 0x10, // lea eax,[ebx + eax * 2 + 0x10000010]
  1003. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x00, // mov eax, 0x00000002
  1004. 0x66, 0x67, 0x8d, 0x84, 0x84, 0x10, 0x00, 0x00, 0x10, // lea eax,[esp + eax * 2 + 0x10000010]
  1005. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x00, // mov eax, 0x00000002
  1006. 0x66, 0x67, 0x8d, 0x84, 0x85, 0x10, 0x00, 0x00, 0x10, // lea eax,[ebp + eax * 2 + 0x10000010]
  1007. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x00, // mov eax, 0x00000002
  1008. 0x66, 0x67, 0x8d, 0x84, 0x86, 0x10, 0x00, 0x00, 0x10, // lea eax,[esi + eax * 2 + 0x10000010]
  1009. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x00, // mov eax, 0x00000002
  1010. 0x66, 0x67, 0x8d, 0x84, 0x87, 0x10, 0x00, 0x00, 0x10, // lea eax,[edi + eax * 2 + 0x10000010]
  1011. 0x90, // nop
  1012. 0xfc, // cld
  1013. 0xbe, 0x00, 0x00, // mov si, 0x0000
  1014. 0xbf, 0x02, 0x00, // mov di, 0x0002
  1015. 0xa4, // movsb
  1016. 0x66, 0xb8, 0xaa, 0x55, 0xf0, 0x0f, // mov eax, 0x0ff055aa
  1017. 0xbf, 0x00, 0x00, // mov di, 0x0000
  1018. 0xaa, // stosb
  1019. 0xaa, // stosb
  1020. 0xab, // stosw
  1021. 0x66, 0xab, // stosd
  1022. 0xb9, 0x04, 0x00, // mov cx, 0x0004
  1023. 0xf3, 0x66, 0xab, // rep stosd
  1024. 0x66, 0xb8, 0x5a, 0xa5, 0x00, 0xff, // mov eax, 0x0ff055aa
  1025. 0xb9, 0x06, 0x00, // mov cx, 0x0006
  1026. 0xbf, 0x2c, 0x00, // mov di, 0x002c
  1027. 0xfd, // std
  1028. 0xf3, 0x66, 0xab, // rep stosd
  1029. 0xc8, 0x00, 0x02, 0x00, // enter 0x0200, 0x00
  1030. 0xc9, // leave
  1031. 0xc8, 0x00, 0x02, 0x01, // enter 0x0200, 0x01
  1032. 0xc9, // leave
  1033. 0x66, 0xc8, 0x00, 0x02, 0x00, // enter 0x0200, 0x00
  1034. 0x66, 0xc9, // leave
  1035. 0x66, 0xc8, 0x00, 0x02, 0x01, // enter 0x0200, 0x01
  1036. 0x66, 0xc9, // leave
  1037. 0x66, 0xb8, 0x02, 0x00, 0xfe, 0xfe, // mov eax, 0xfefe0002
  1038. 0x66, 0x89, 0x06, 0x04, 0x00, // mov ds:0x0004, eax
  1039. 0x66, 0x89, 0x06, 0x08, 0x00, // mov ds:0x0008, eax
  1040. 0xc4, 0x06, 0x04, 0x00, // les ax,d:0x0004
  1041. 0x0f, 0xb4, 0x0e, 0x04, 0x00, // lfs cx,d:0x0004
  1042. 0x0f, 0xb5, 0x16, 0x04, 0x00, // lgs dx,d:0x0004
  1043. 0x66, 0xc4, 0x1e, 0x04, 0x00, // les ebx,d:0x0004
  1044. 0x66, 0x0f, 0xb4, 0x36, 0x04, 0x00, // lfs esi,d:0x0004
  1045. 0x66, 0x0f, 0xb5, 0x3e, 0x04, 0x00, // lgs edi,d:0x0004
  1046. 0xb8, 0x03, 0x00, // mov ax, 0x0003
  1047. 0x68, 0x10, 0x00, // push 0x0010
  1048. 0x9d, // popf
  1049. 0x37, // aaa
  1050. 0xd5, 0x0a, // aad
  1051. 0xd4, 0x0a, // aam
  1052. 0x27, // daa
  1053. 0x2f, // das
  1054. 0xb8, 0x03, 0x00, // mov ax, 0x0003
  1055. 0x68, 0x01, 0x00, // push 0x0001
  1056. 0x9d, // popf
  1057. 0x37, // aaa
  1058. 0xb8, 0x03, 0x00, // mov ax, 0x0003
  1059. 0x68, 0x10, 0x00, // push 0x0010
  1060. 0x9d, // popf
  1061. 0x3f, // aas
  1062. 0xd5, 0x0a, // aad
  1063. 0xd4, 0x0a, // aam
  1064. 0xb8, 0x03, 0x00, // mov ax, 0x0003
  1065. 0x68, 0x01, 0x00, // push 0x0001
  1066. 0x9d, // popf
  1067. 0x3f, // aas
  1068. 0xb8, 0x05, 0x00, // mov ax, 0x0005
  1069. 0xb9, 0x20, 0x00, // mov cx, 0x0020
  1070. 0xf8, // clc
  1071. 0x0f, 0xa3, 0xc1, // bt cx, ax
  1072. 0xf8, // clc
  1073. 0x0f, 0xb3, 0xc1, // btr cx, ax
  1074. 0xf9, // stc
  1075. 0x0f, 0xab, 0xc1, // bts cx, ax
  1076. 0xf8, // clc
  1077. 0x0f, 0xbb, 0xc1, // btc cx, ax
  1078. 0x66, 0xb8, 0x15, 0x00, 0x00, 0x00, // mov eax, 0x00000015
  1079. 0x66, 0xb9, 0x00, 0x00, 0x20, 0x00, // mov ecx, 0x00200000
  1080. 0xf8, // clc
  1081. 0x66, 0x0f, 0xa3, 0xc1, // bt ecx, eax
  1082. 0xf8, // clc
  1083. 0x66, 0x0f, 0xb3, 0xc1, // btr ecx, eax
  1084. 0xf9, // stc
  1085. 0x66, 0x0f, 0xab, 0xc1, // bts ecx, eax
  1086. 0xf8, // clc
  1087. 0x66, 0x0f, 0xbb, 0xc1, // btc ecx, eax
  1088. 0xb9, 0x20, 0x00, // mov cx, 0x0020
  1089. 0xf8, // clc
  1090. 0x0f, 0xba, 0xe1, 0x05, // bt cx, 0x05
  1091. 0xf8, // clc
  1092. 0x0f, 0xba, 0xf1, 0x05, // btr cx, 0x05
  1093. 0xf9, // stc
  1094. 0x0f, 0xba, 0xe9, 0x05, // bts cx, 0x05
  1095. 0xf8, // clc
  1096. 0x0f, 0xba, 0xf9, 0x05, // btc cx, 0x05
  1097. 0x66, 0xb9, 0x00, 0x00, 0x20, 0x00, // mov ecx, 0x00200000
  1098. 0xf8, // clc
  1099. 0x66, 0x0f, 0xba, 0xe1, 0x15, // bt ecx, 0x15
  1100. 0xf8, // clc
  1101. 0x66, 0x0f, 0xba, 0xf1, 0x15, // btr ecx, 0x15
  1102. 0xf9, // stc
  1103. 0x66, 0x0f, 0xba, 0xe9, 0x15, // bts ecx, 0x15
  1104. 0xf8, // clc
  1105. 0x66, 0x0f, 0xba, 0xf9, 0x15, // btc ecx, 0x15
  1106. 0x66, 0xb8, 0x20, 0x00, 0x00, 0x00, // mov eax, 0x00000020
  1107. 0x66, 0x89, 0x06, 0x08, 0x00, // mov ds:0x0008, eax
  1108. 0xb8, 0x45, 0x00, // mov ax, 0x0045
  1109. 0xf8, // clc
  1110. 0x0f, 0xa3, 0x06, 0x00, 0x00, // bt ds:0x0000, ax
  1111. 0xf8, // clc
  1112. 0x0f, 0xb3, 0x06, 0x00, 0x00, // btr ds:0x0000, ax
  1113. 0xf9, // stc
  1114. 0x0f, 0xab, 0x06, 0x00, 0x00, // bts ds:0x0000, ax
  1115. 0xf8, // clc
  1116. 0x0f, 0xbb, 0x06, 0x00, 0x00, // btc ds:0x0000, ax
  1117. 0x66, 0xb8, 0x00, 0x00, 0x20, 0x00, // mov eax, 0x00200000
  1118. 0x66, 0x89, 0x06, 0x08, 0x00, // mov ds:0x0008, eax
  1119. 0x66, 0xb8, 0x55, 0x00, 0x00, 0x00, // mov eax, 0x00000055
  1120. 0xf8, // clc
  1121. 0x66, 0x0f, 0xa3, 0x06, 0x00, 0x00, // bt ds:0x0000, eax
  1122. 0xf8, // clc
  1123. 0x66, 0x0f, 0xb3, 0x06, 0x00, 0x00, // btr ds:0x0000, eax
  1124. 0xf9, // stc
  1125. 0x66, 0x0f, 0xab, 0x06, 0x00, 0x00, // bts ds:0x0000, eax
  1126. 0xf8, // clc
  1127. 0x66, 0x0f, 0xbb, 0x06, 0x00, 0x00, // btc ds:0x0000, eax
  1128. 0xb8, 0xab, 0xab, // mov ax, 0xabab
  1129. 0xb9, 0x08, 0x00, // mov cx, 0x0008
  1130. 0xba, 0xfe, 0xfe, // mov dx, 0xfefe
  1131. 0x0f, 0xa4, 0xc2, 0x04, // shld dx, ax, 0x04
  1132. 0x0f, 0xa5, 0xc2, // shld dx, ax, cl
  1133. 0x66, 0xb8, 0xab, 0xab, 0xa5, 0x5a, // mov eax, 0x5aa5abab
  1134. 0xb9, 0x08, 0x00, // mov cx, 0x0008
  1135. 0x66, 0xba, 0xfe, 0xfe, 0x12, 0x21, // mov edx, 0x2112fefe
  1136. 0x66, 0x0f, 0xa4, 0xc2, 0x04, // shld edx, eax, 0x04
  1137. 0x66, 0x0f, 0xa5, 0xc2, // shld edx, eax, cl
  1138. 0xb8, 0xab, 0xab, // mov ax, 0xabab
  1139. 0xb9, 0x08, 0x00, // mov cx, 0x0008
  1140. 0xba, 0xfe, 0xfe, // mov dx, 0xfefe
  1141. 0x0f, 0xac, 0xd0, 0x04, // shld ax, dx, 0x04
  1142. 0x0f, 0xad, 0xd0, // shld ax, dx, cl
  1143. 0x66, 0xb8, 0xab, 0xab, 0xa5, 0x5a, // mov eax, 0x5aa5abab
  1144. 0xb9, 0x08, 0x00, // mov cx, 0x0008
  1145. 0x66, 0xba, 0xfe, 0xfe, 0x12, 0x21, // mov edx, 0x2112fefe
  1146. 0x66, 0x0f, 0xac, 0xd0, 0x04, // shld eax, edx, 0x04
  1147. 0x66, 0x0f, 0xad, 0xd0, // shld eax, edx, cl
  1148. 0xb0, 0xaa, // mov al, 0xaa
  1149. 0xc0, 0xe0, 0x02, // shl al, 0x02
  1150. 0xb0, 0xaa, // mov al, 0xaa
  1151. 0xc0, 0xe8, 0x03, // shl al, 0x03
  1152. 0xb0, 0xaa, // mov al, 0xaa
  1153. 0xc0, 0xf8, 0x04, // shl al, 0x04
  1154. // 0xe8, 0x02, 0x00, // call 0x0002
  1155. 0x9a, 0x03, 0x00, 0x00, 0x20, // call 0x0003:0x2000
  1156. // 0x66, 0xe8, 0x04, 0x00, 0x00, 0x00, // call 0x00000004
  1157. 0x66, 0x9a, 0x06, 0x00, 0x00, 0x00, 0x00, 0x20, // call 0x00000006:0x2000
  1158. 0x66, 0xb8, 0x02, 0x00, 0x00, 0x20, // mov eax, 0x20000002
  1159. 0x66, 0x89, 0x06, 0x04, 0x00, // mov ds:0x0004, eax
  1160. 0xff, 0x16, 0x04, 0x00, // call ds:0x0004
  1161. 0x66, 0xb8, 0x03, 0x00, 0x00, 0x20, // mov eax, 0x20000003
  1162. 0x66, 0x89, 0x06, 0x04, 0x00, // mov ds:0x0004, eax
  1163. 0xff, 0x1e, 0x04, 0x00, // call ds:0x0004
  1164. 0xb8, 0xaa, 0xaa, // mov ax, 0xaaaa
  1165. 0xc1, 0xe0, 0x02, // shl ax, 0x02
  1166. 0xb8, 0xaa, 0xaa, // mov ax, 0xaaaa
  1167. 0xc1, 0xe8, 0x03, // shl ax, 0x03
  1168. 0xb8, 0xaa, 0xaa, // mov ax, 0xaaaa
  1169. 0xc1, 0xf8, 0x04, // shl ax, 0x04
  1170. 0x66, 0xb8, 0xaa, 0xaa, 0xaa, 0xaa, // mov eax, 0xaaaaaaaa
  1171. 0x66, 0xc1, 0xe0, 0x02, // shl eax, 0x02
  1172. 0x66, 0xb8, 0xaa, 0xaa, 0xaa, 0xaa, // mov eax, 0xaaaaaaaa
  1173. 0x66, 0xc1, 0xe8, 0x03, // shl eax, 0x03
  1174. 0x66, 0xb8, 0xaa, 0xaa, 0xaa, 0xaa, // mov eax, 0xaaaaaaaa
  1175. 0x66, 0xc1, 0xf8, 0x04, // shl eax, 0x04
  1176. 0xf0, 0x90, // lock nop
  1177. 0x66, 0xb8, 0x12, 0x34, 0x56, 0x78, // mov eax, 0x78563412
  1178. 0xe6, 0x04, // outb 0x04, al
  1179. 0xe7, 0x08, // outw 0x09, ax
  1180. 0x66, 0xe7, 0x0c, // outd 0x0c, eax
  1181. 0xba, 0x40, 0x00, // mov dx, 0x0040
  1182. 0xee, // outb dx, al
  1183. 0x42, // inc dx
  1184. 0x42, // inc dx
  1185. 0xef, // outw dx, ax
  1186. 0x42, // inc dx
  1187. 0x42, // inc dx
  1188. 0x66, 0xef, // outd dx, eax
  1189. 0x66, 0xb8, 0x00, 0x00, 0x00, 0x00, // mov eax, 0x00000000
  1190. 0xe4, 0x04, // inb al, 0x04
  1191. 0xe5, 0x08, // inw ax, 0x08
  1192. 0x66, 0xe5, 0x0c, // ind eax, 0x0c
  1193. 0x66, 0xb8, 0x00, 0x00, 0x00, 0x00, // mov eax, 0x00000000
  1194. 0xba, 0x40, 0x00, // mov dx, 0x0040
  1195. 0xec, // inb al, dx
  1196. 0x42, // inc dx
  1197. 0x42, // inc dx
  1198. 0xed, // inw ax, dx
  1199. 0x42, // inc dx
  1200. 0x42, // inc dx
  1201. 0x66, 0xed, // ind eax, dx
  1202. // 0xf4, // hlt (nop)
  1203. 0xb8, 0x00, 0x00, // mov ax, 0x0000
  1204. 0x0f,0xbc, 0xc8, // bsf cx, ax
  1205. 0xb8, 0x00, 0x10, // mov ax, 0x1000
  1206. 0x0f,0xbc, 0xc8, // bsf cx, ax
  1207. 0xb8, 0x00, 0x00, // mov ax, 0x0000
  1208. 0x0f,0xbd, 0xc8, // bsr cx, ax
  1209. 0xb8, 0x10, 0x10, // mov ax, 0x1010
  1210. 0x0f,0xbd, 0xc8, // bsr cx, ax
  1211. 0x66, 0xb8, 0x00, 0x00, 0x00, 0x00, // mov eax, 0x00000000
  1212. 0x66, 0x0f,0xbc, 0xc8, // bsf ecx, eax
  1213. 0x66, 0xb8, 0x00, 0x10, 0x00, 0x00, // mov eax, 0x00001000
  1214. 0x66, 0x0f,0xbc, 0xc8, // bsf ecx, eax
  1215. 0x66, 0xb8, 0x00, 0x00, 0x00, 0x00, // mov eax, 0x00000000
  1216. 0x66, 0x0f,0xbd, 0xc8, // bsr ecx, eax
  1217. 0x66, 0xb8, 0x10, 0x10, 0x00, 0x00, // mov eax, 0x00001010
  1218. 0x66, 0x0f,0xbd, 0xc8, // bsr ecx, eax
  1219. 0xcc, // int 3
  1220. 0xcd, 0x04, // int 0x04
  1221. 0xcd, 0x05, // int 0x05
  1222. */ 0x90, // nop
  1223. 0x66, 0xb8, 0x11, 0x22, 0x33, 0x44, // mov eax, 0x44332211
  1224. 0x66, 0x89, 0x06, 0x04, 0x00, // mov ds:0x0004, eax
  1225. 0xb0, 0x01, // mov al, 0x01
  1226. 0xbb, 0x03, 0x00, // mov bx, 0x0003
  1227. 0xd7, // xlat
  1228. 0xb0, 0x02, // mov al, 0x01
  1229. 0x66, 0xbb, 0x04, 0x00, 0x00, 0x00, // mov ebx, 0x00000004
  1230. 0x67, 0xd7, // xlat
  1231. 0x66, 0xb8, 0x04, 0x00, 0x08, 0x00, // mov eax, 0x00080004
  1232. 0x66, 0x89, 0x06, 0x04, 0x00, // mov ds:0x0004, eax
  1233. 0x66, 0xb8, 0x04, 0x00, 0x08, 0x01, // mov eax, 0x01080004
  1234. 0x66, 0x89, 0x06, 0x08, 0x00, // mov ds:0x0008, eax
  1235. 0xb9, 0x04, 0x00, // mov cx, 0x0004
  1236. 0x62, 0x0e, 0x04, 0x00, // bound cx, ds:0x0004
  1237. 0x66, 0xb9, 0x04, 0x00, 0x08, 0x01, // mov ecx, 0x01080004
  1238. 0x66, 0x62, 0x0e, 0x04, 0x00, // bound ecx, ds:0x0004
  1239. 0x66, 0xb8, 0x11, 0x22, 0x33, 0x44, // mov eax, 0x44332211
  1240. 0x0f, 0xc8, 0xc0, // bswap ax
  1241. 0x66, 0xb8, 0x11, 0x22, 0x33, 0x44, // mov eax, 0x44332211
  1242. 0x66, 0x0f, 0xc8, 0xc0, // bswap eax
  1243. 0xb0, 0x01, // mov al, 0x01
  1244. 0xb1, 0x01, // mov cl, 0x01
  1245. 0xb2, 0xff, // mov dl, 0xff
  1246. 0x0f, 0xb0, 0xd1, // cmpxchg cl,dl
  1247. 0xb0, 0x01, // mov al, 0x01
  1248. 0xb1, 0x02, // mov cl, 0x02
  1249. 0xb2, 0xff, // mov dl, 0xff
  1250. 0x0f, 0xb0, 0xd1, // cmpxchg cl,dl
  1251. 0xb8, 0x01, 0x00, // mov ax, 0x01
  1252. 0xb9, 0x01, 0x00, // mov cx, 0x01
  1253. 0xba, 0xff, 0x00, // mov dx, 0xff
  1254. 0x0f, 0xb1, 0xd1, // cmpxchg cx,dx
  1255. 0xb8, 0x01, 0x00, // mov ax, 0x01
  1256. 0xb9, 0x02, 0x00, // mov cx, 0x02
  1257. 0xba, 0xff, 0x00, // mov dx, 0xff
  1258. 0x0f, 0xb1, 0xd1, // cmpxchg cx,dx
  1259. 0x66, 0xb8, 0x01, 0x00, 0x00, 0x00, // mov eax, 0x00000001
  1260. 0x66, 0xb9, 0x01, 0x00, 0x00, 0x00, // mov ecx, 0x00000001
  1261. 0x66, 0xba, 0xff, 0x00, 0x00, 0x00, // mov edx, 0x000000ff
  1262. 0x66, 0x0f, 0xb1, 0xd1, // cmpxchg ecx,edx
  1263. 0x66, 0xb8, 0x01, 0x00, 0x00, 0x00, // mov eax, 0x00000001
  1264. 0x66, 0xb9, 0x02, 0x00, 0x00, 0x00, // mov ecx, 0x00000002
  1265. 0x66, 0xba, 0xff, 0x00, 0x00, 0x00, // mov edx, 0x000000ff
  1266. 0x66, 0x0f, 0xb1, 0xd1, // cmpxchg ecx,edx
  1267. 0xb0, 0x01, // mov al, 0x01
  1268. 0xb1, 0x02, // mov cl, 0x02
  1269. 0x0f, 0xc0, 0xc8, // xadd al,cl
  1270. 0xb8, 0x01, 0x01, // mov ax, 0x0101
  1271. 0xb9, 0x02, 0x02, // mov cx, 0x0202
  1272. 0x0f, 0xc1, 0xc8, // xadd ax,cx
  1273. 0x66, 0xb8, 0x01, 0x01, 0x01, 0x01, // mov eax, 0x01010101
  1274. 0x66, 0xb9, 0x02, 0x02, 0x02, 0x02, // mov ecx, 0x02020202
  1275. 0x66, 0x0f, 0xc1, 0xc8, // xadd eax,ecx
  1276. 0xb8, 0x03, 0x00, // mov ax, 0x0003
  1277. 0x68, 0x10, 0x00, // push 0x0010
  1278. 0x9d, // popf
  1279. 0x37, // aaa
  1280. 0xd5, 0x0a, // aad
  1281. 0xd4, 0x0a, // aam
  1282. 0x27, // daa
  1283. 0x2f, // das
  1284. 0xb8, 0x03, 0x00, // mov ax, 0x0003
  1285. 0x68, 0x01, 0x00, // push 0x0001
  1286. 0x9d, // popf
  1287. 0x37, // aaa
  1288. 0xb8, 0x03, 0x00, // mov ax, 0x0003
  1289. 0x68, 0x10, 0x00, // push 0x0010
  1290. 0x9d, // popf
  1291. 0x3f, // aas
  1292. 0xd5, 0x0a, // aad
  1293. 0xd4, 0x0a, // aam
  1294. 0xb8, 0x03, 0x00, // mov ax, 0x0003
  1295. 0x68, 0x01, 0x00, // push 0x0001
  1296. 0x9d, // popf
  1297. 0x3f, // aas
  1298. 0xb0, 0x83, // mov al, 0x83
  1299. 0x0f, 0x90, 0xc0, // seto al
  1300. 0xb0, 0x83, // mov al, 0x83
  1301. 0x0f, 0x91, 0xc0, // setno al
  1302. 0x66, 0xb8, 0x00, 0x00, 0x00, 0x80, // mov eax, 0x80000000
  1303. 0x66, 0xb9, 0x00, 0x00, 0x00, 0x80, // mov ecx, 0x80000000
  1304. 0x66, 0x01, 0xc1, // add ecx, eax
  1305. 0x66, 0xb8, 0x00, 0x00, 0x00, 0x80, // mov eax, 0x80000000
  1306. 0x66, 0xb9, 0x00, 0x00, 0x00, 0x80, // mov ecx, 0x80000000
  1307. 0x66, 0x29, 0xc1, // sub ecx, eax
  1308. 0x66, 0xb8, 0x00, 0x00, 0x00, 0xb0, // mov eax, 0xb0000000
  1309. 0x66, 0xb9, 0x00, 0x00, 0x00, 0x50, // mov ecx, 0x50000000
  1310. 0x66, 0x01, 0xc1, // add ecx, eax
  1311. 0x66, 0xb8, 0xac, 0x08, 0x02, 0x08, // mov eax, 0x080208ac
  1312. 0x66, 0xb9, 0x9b, 0x2a, 0xa4, 0xc8, // mov ecx, 0xc8a42a9b
  1313. 0xf9, // stc
  1314. 0x66, 0x1b, 0xc1, // sbb eax, ecx
  1315. 0x66, 0xb8, 0xcf, 0x33, 0xeb, 0xaf, // mov eax, 0xafeb33cf
  1316. 0x66, 0xb9, 0x85, 0xed, 0xa5, 0xd0, // mov ecx, 0xd0a5ed85
  1317. 0x66, 0x09, 0xc1, // or ecx, eax
  1318. 0xb4, 0xb3, // mov ah, 0xb3
  1319. 0xb5, 0x0e, // mov ch, 0x0e
  1320. 0x28, 0xe5, // sub ch, ah
  1321. 0x66, 0xbf, 0x64, 0x4b, 0x7d, 0xdc, // mov edi, 0xdc7d4b64
  1322. 0x66, 0xd1, 0xc7, // rol edi, 1
  1323. 0x66, 0xbe, 0xe7, 0x8b, 0x26, 0x34, // mov esi, 0x34268be7
  1324. 0x66, 0xb9, 0x88, 0x00, 0x00, 0x00, // mov ecx, 0x00000088
  1325. 0x66, 0xbf, 0x64, 0x4b, 0x7d, 0x8c, // mov edi, 0x8c7d4b64
  1326. 0x66, 0xd1, 0xc7, // rol edi, 1
  1327. 0x66, 0x0f, 0xa4, 0xce, 0x1b, // shld esi, ecx, 0x1b
  1328. 0x66, 0xbe, 0x98, 0x07, 0xe1, 0xeb, // mov esi, 0xebe10798
  1329. 0x66, 0xb9, 0xa6, 0x50, 0x9b, 0xee, // mov ecx, 0xee9b50a6
  1330. 0x66, 0xbf, 0x64, 0x4b, 0x7d, 0xdc, // mov edi, 0xdc7d4b64
  1331. 0x66, 0xd1, 0xc7, // rol edi, 1
  1332. 0x66, 0x0f, 0xac, 0xce, 0x17, // shrd esi, ecx, 0x17
  1333. 0xb0, 0x01, // mov al, 0x01
  1334. 0xb7, 0x04, // mov bh, 0x04
  1335. 0x0f, 0xb0, 0xc7, // cmpxchg bh, al
  1336. 0xcf, // iret
  1337. 0xff};
  1338. //
  1339. // Define stack storage space.
  1340. //
  1341. ULONG StackSpace[4096 / 4];
  1342. ULONG DataSpace[4096 / 4];
  1343. ULONG IoSpace[4096 / 4];
  1344. //
  1345. // Define read and write I/O space functions.
  1346. //
  1347. ULONG
  1348. ReadIoSpace (
  1349. IN XM_OPERATION_DATATYPE DataType,
  1350. IN USHORT PortNumber
  1351. )
  1352. {
  1353. if (DataType == BYTE_DATA) {
  1354. return *((UCHAR UNALIGNED *)((PUCHAR)(&IoSpace) + PortNumber));
  1355. } else if (DataType == LONG_DATA) {
  1356. return *((ULONG UNALIGNED *)((PUCHAR)(&IoSpace) + PortNumber));
  1357. } else {
  1358. return *((USHORT UNALIGNED *)((PUCHAR)(&IoSpace) + PortNumber));
  1359. }
  1360. }
  1361. VOID
  1362. WriteIoSpace (
  1363. IN XM_OPERATION_DATATYPE DataType,
  1364. IN USHORT PortNumber,
  1365. IN ULONG Value
  1366. )
  1367. {
  1368. if (DataType == BYTE_DATA) {
  1369. *((UCHAR UNALIGNED *)((PUCHAR)(&IoSpace) + PortNumber)) = (UCHAR)Value;
  1370. } else if (DataType == LONG_DATA) {
  1371. *((ULONG UNALIGNED *)((PUCHAR)(&IoSpace) + PortNumber)) = Value;
  1372. } else {
  1373. *((USHORT UNALIGNED *)((PUCHAR)(&IoSpace) + PortNumber)) = (USHORT)Value;
  1374. }
  1375. return;
  1376. }
  1377. //
  1378. // Define address translation routine.
  1379. //
  1380. PVOID
  1381. TranslateAddress (
  1382. IN USHORT Segment,
  1383. IN USHORT Offset
  1384. )
  1385. {
  1386. ULONG Value;
  1387. //
  1388. // Case on high hex digit of segment.
  1389. //
  1390. Value = Offset + (Segment << 4);
  1391. Offset = (USHORT)Value;
  1392. Value &= 0xf0000;
  1393. switch ((Value >> 16) & 0xf) {
  1394. //
  1395. // Interrupt vector/stack space.
  1396. //
  1397. case 0x0:
  1398. return (PVOID)((PUCHAR)&StackSpace + Offset);
  1399. //
  1400. // Data space.
  1401. //
  1402. case 0x1:
  1403. return (PVOID)((PUCHAR)&DataSpace + Offset);
  1404. //
  1405. // Code space.
  1406. //
  1407. case 0x2:
  1408. return (PVOID)((PUCHAR)&CodeStream + Offset);
  1409. //
  1410. // No valid translation.
  1411. //
  1412. default:
  1413. return NULL;
  1414. }
  1415. }
  1416. VOID
  1417. __cdecl
  1418. main(
  1419. int argc,
  1420. char *argv[]
  1421. )
  1422. {
  1423. XM86_CONTEXT Context;
  1424. PULONG Vector = &StackSpace[0];
  1425. //
  1426. // Initialize the emulator.
  1427. //
  1428. XmInitializeEmulator(0,
  1429. 0x1000,
  1430. ReadIoSpace,
  1431. WriteIoSpace,
  1432. TranslateAddress);
  1433. //
  1434. // Initialize vector 255 and emulate an interrupt through that
  1435. // vector.
  1436. //
  1437. Vector[3] = (0x2000 << 16) | 0x0008;
  1438. Vector[4] = (0x2000 << 16) | 0x0008;
  1439. Vector[5] = (0x2000 << 16) | 0x0008;
  1440. Vector[255] = (0x2000 << 16) | 0x0000;
  1441. Context.Eax = 0;
  1442. Context.Ecx = 0;
  1443. Context.Edx = 0;
  1444. Context.Ebx = 0;
  1445. Context.Ebp = 0;
  1446. Context.Esi = 0;
  1447. Context.Edi = 0;
  1448. XmContext.SegmentRegister[DS] = 0x1000;
  1449. XmEmulateInterrupt(255, &Context);
  1450. return;
  1451. }