runtime.golden 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902
  1. # runtime.golden -- full FCML disassembly of the runtime's code region.
  2. #
  3. # GENERATED by tests/check_runtime.py --bless, then READ THE DIFF and commit.
  4. # Every line is "OFFSET BYTES MNEMONIC". This file is a deliberate
  5. # tripwire: any edit to Runtime.mod invalidates it, because inserting an
  6. # instruction renumbers everything after it, so you are forced to look at the
  7. # whole new listing and confirm you meant every change. See the "Re-baselining
  8. # the golden" section of check_runtime.py.
  9. #
  10. # Region: bytes 0..codeEnd of the runtime image (see the code/data split in
  11. # EmitData). Relative targets are absolute offsets within the runtime, which
  12. # the compiler adds to the runtime's load address when it emits a CALL.
  13. 0000 8B F0 mov si,ax
  14. 0002 8B 54 04 mov dx,word ptr [si+4h]
  15. 0005 8B 4C 06 mov cx,word ptr [si+6h]
  16. 0008 39 D1 cmp cx,dx
  17. 000A 76 0D jbe 19h
  18. 000C 89 D7 mov di,dx
  19. 000E 31 C0 xor ax,ax
  20. 0010 89 05 mov word ptr [di],ax
  21. 0012 83 C7 02 add di,2h
  22. 0015 39 CF cmp di,cx
  23. 0017 72 F5 jb 0eh
  24. 0019 1E push ds
  25. 001A 07 pop es
  26. 001B C3 ret
  27. 001C 31 C0 xor ax,ax
  28. 001E B4 4C mov ah,4ch
  29. 0020 CD 21 int 21h
  30. 0022 C3 ret
  31. 0023 C3 ret
  32. 0024 55 push bp
  33. 0025 8B EC mov bp,sp
  34. 0027 8B 46 04 mov ax,word ptr [bp+4h]
  35. 002A 83 F8 00 cmp ax,0h
  36. 002D 7D 0A jnl 39h
  37. 002F 50 push ax
  38. 0030 B0 2D mov al,2dh
  39. 0032 B4 02 mov ah,2h
  40. 0034 CD 21 int 21h
  41. 0036 58 pop ax
  42. 0037 F7 D8 neg ax
  43. 0039 B9 0A 00 mov cx,0ah
  44. 003C BB 02 08 mov bx,802h
  45. 003F 89 DE mov si,bx
  46. 0041 31 D2 xor dx,dx
  47. 0043 F7 F1 div ax,cx
  48. 0045 80 C2 30 add dl,30h
  49. 0048 4E dec si
  50. 0049 88 14 mov byte ptr [si],dl
  51. 004B 83 F8 00 cmp ax,0h
  52. 004E 75 F1 jne 41h
  53. 0050 39 DE cmp si,bx
  54. 0052 74 09 je 5dh
  55. 0054 8A 04 mov al,byte ptr [si]
  56. 0056 B4 02 mov ah,2h
  57. 0058 CD 21 int 21h
  58. 005A 46 inc si
  59. 005B EB F3 jmp 50h
  60. 005D 89 EC mov sp,bp
  61. 005F 5D pop bp
  62. 0060 C3 ret
  63. 0061 55 push bp
  64. 0062 8B EC mov bp,sp
  65. 0064 BB 00 00 mov bx,0h
  66. 0067 8B 46 06 mov ax,word ptr [bp+6h]
  67. 006A 83 F8 00 cmp ax,0h
  68. 006D 7D 03 jnl 72h
  69. 006F 43 inc bx
  70. 0070 F7 D8 neg ax
  71. 0072 B9 0A 00 mov cx,0ah
  72. 0075 43 inc bx
  73. 0076 31 D2 xor dx,dx
  74. 0078 F7 F1 div ax,cx
  75. 007A 83 F8 00 cmp ax,0h
  76. 007D 75 F6 jne 75h
  77. 007F 8B 46 04 mov ax,word ptr [bp+4h]
  78. 0082 2B C3 sub ax,bx
  79. 0084 83 F8 00 cmp ax,0h
  80. 0087 7E 0A jle 93h
  81. 0089 89 C1 mov cx,ax
  82. 008B B0 20 mov al,20h
  83. 008D B4 02 mov ah,2h
  84. 008F CD 21 int 21h
  85. 0091 E2 F8 loop 8bh
  86. 0093 8B 46 06 mov ax,word ptr [bp+6h]
  87. 0096 83 F8 00 cmp ax,0h
  88. 0099 7D 0A jnl 0a5h
  89. 009B 50 push ax
  90. 009C B0 2D mov al,2dh
  91. 009E B4 02 mov ah,2h
  92. 00A0 CD 21 int 21h
  93. 00A2 58 pop ax
  94. 00A3 F7 D8 neg ax
  95. 00A5 B9 0A 00 mov cx,0ah
  96. 00A8 BB 02 08 mov bx,802h
  97. 00AB 89 DE mov si,bx
  98. 00AD 31 D2 xor dx,dx
  99. 00AF F7 F1 div ax,cx
  100. 00B1 80 C2 30 add dl,30h
  101. 00B4 4E dec si
  102. 00B5 88 14 mov byte ptr [si],dl
  103. 00B7 83 F8 00 cmp ax,0h
  104. 00BA 75 F1 jne 0adh
  105. 00BC 39 DE cmp si,bx
  106. 00BE 74 09 je 0c9h
  107. 00C0 8A 04 mov al,byte ptr [si]
  108. 00C2 B4 02 mov ah,2h
  109. 00C4 CD 21 int 21h
  110. 00C6 46 inc si
  111. 00C7 EB F3 jmp 0bch
  112. 00C9 89 EC mov sp,bp
  113. 00CB 5D pop bp
  114. 00CC C3 ret
  115. 00CD 55 push bp
  116. 00CE 8B EC mov bp,sp
  117. 00D0 8A 46 04 mov al,byte ptr [bp+4h]
  118. 00D3 89 EC mov sp,bp
  119. 00D5 5D pop bp
  120. 00D6 B4 02 mov ah,2h
  121. 00D8 CD 21 int 21h
  122. 00DA C3 ret
  123. 00DB 55 push bp
  124. 00DC 8B EC mov bp,sp
  125. 00DE 83 7E 04 00 cmp word ptr [bp+4h],0h
  126. 00E2 89 EC mov sp,bp
  127. 00E4 75 05 jne 0ebh
  128. 00E6 BA 07 08 mov dx,807h
  129. 00E9 EB 03 jmp 0eeh
  130. 00EB BA 02 08 mov dx,802h
  131. 00EE B4 09 mov ah,9h
  132. 00F0 CD 21 int 21h
  133. 00F2 5D pop bp
  134. 00F3 C3 ret
  135. 00F4 BA 10 08 mov dx,810h
  136. 00F7 B4 09 mov ah,9h
  137. 00F9 CD 21 int 21h
  138. 00FB C3 ret
  139. 00FC BA 0D 08 mov dx,80dh
  140. 00FF B4 09 mov ah,9h
  141. 0101 CD 21 int 21h
  142. 0103 C3 ret
  143. 0104 5B pop bx
  144. 0105 31 C9 xor cx,cx
  145. 0107 8A 0F mov cl,byte ptr [bx]
  146. 0109 43 inc bx
  147. 010A B4 02 mov ah,2h
  148. 010C E3 07 jcxz 115h
  149. 010E 8A 07 mov al,byte ptr [bx]
  150. 0110 CD 21 int 21h
  151. 0112 43 inc bx
  152. 0113 E2 F9 loop 10eh
  153. 0115 FF E3 jmp bx
  154. 0117 55 push bp
  155. 0118 8B EC mov bp,sp
  156. 011A 53 push bx
  157. 011B 51 push cx
  158. 011C 50 push ax
  159. 011D 8B 5E 04 mov bx,word ptr [bp+4h]
  160. 0120 31 C9 xor cx,cx
  161. 0122 8A 0F mov cl,byte ptr [bx]
  162. 0124 43 inc bx
  163. 0125 B4 02 mov ah,2h
  164. 0127 E3 07 jcxz 130h
  165. 0129 8A 07 mov al,byte ptr [bx]
  166. 012B CD 21 int 21h
  167. 012D 43 inc bx
  168. 012E E2 F9 loop 129h
  169. 0130 58 pop ax
  170. 0131 59 pop cx
  171. 0132 5B pop bx
  172. 0133 89 EC mov sp,bp
  173. 0135 5D pop bp
  174. 0136 C3 ret
  175. 0137 55 push bp
  176. 0138 8B EC mov bp,sp
  177. 013A 50 push ax
  178. 013B 53 push bx
  179. 013C 51 push cx
  180. 013D 52 push dx
  181. 013E 57 push di
  182. 013F E8 13 00 call 155h
  183. 0142 83 F9 02 cmp cx,2h
  184. 0145 74 05 je 14ch
  185. 0147 8B 7E 04 mov di,word ptr [bp+4h]
  186. 014A 89 05 mov word ptr [di],ax
  187. 014C 5F pop di
  188. 014D 5A pop dx
  189. 014E 59 pop cx
  190. 014F 5B pop bx
  191. 0150 58 pop ax
  192. 0151 89 EC mov sp,bp
  193. 0153 5D pop bp
  194. 0154 C3 ret
  195. 0155 E8 C3 00 call 21bh
  196. 0158 3C 1A cmp al,1ah
  197. 015A 74 42 je 19eh
  198. 015C 3C 20 cmp al,20h
  199. 015E 76 F5 jbe 155h
  200. 0160 31 C9 xor cx,cx
  201. 0162 3C 2D cmp al,2dh
  202. 0164 75 06 jne 16ch
  203. 0166 41 inc cx
  204. 0167 E8 B1 00 call 21bh
  205. 016A EB 07 jmp 173h
  206. 016C 3C 2B cmp al,2bh
  207. 016E 75 03 jne 173h
  208. 0170 E8 A8 00 call 21bh
  209. 0173 31 FF xor di,di
  210. 0175 3C 30 cmp al,30h
  211. 0177 72 18 jb 191h
  212. 0179 3C 39 cmp al,39h
  213. 017B 77 14 jnbe 191h
  214. 017D 2C 30 sub al,30h
  215. 017F B4 00 mov ah,0h
  216. 0181 87 C7 xchg di,ax
  217. 0183 BB 0A 00 mov bx,0ah
  218. 0186 F7 E3 mul bx
  219. 0188 03 C7 add ax,di
  220. 018A 89 C7 mov di,ax
  221. 018C E8 8C 00 call 21bh
  222. 018F EB E4 jmp 175h
  223. 0191 E8 9E 00 call 232h
  224. 0194 83 F9 00 cmp cx,0h
  225. 0197 74 02 je 19bh
  226. 0199 F7 DF neg di
  227. 019B 8B C7 mov ax,di
  228. 019D C3 ret
  229. 019E B9 02 00 mov cx,2h
  230. 01A1 C3 ret
  231. 01A2 55 push bp
  232. 01A3 8B EC mov bp,sp
  233. 01A5 50 push ax
  234. 01A6 53 push bx
  235. 01A7 51 push cx
  236. 01A8 52 push dx
  237. 01A9 57 push di
  238. 01AA E8 A8 FF call 155h
  239. 01AD 83 F9 02 cmp cx,2h
  240. 01B0 74 05 je 1b7h
  241. 01B2 8B 7E 04 mov di,word ptr [bp+4h]
  242. 01B5 88 05 mov byte ptr [di],al
  243. 01B7 5F pop di
  244. 01B8 5A pop dx
  245. 01B9 59 pop cx
  246. 01BA 5B pop bx
  247. 01BB 58 pop ax
  248. 01BC 89 EC mov sp,bp
  249. 01BE 5D pop bp
  250. 01BF C3 ret
  251. 01C0 55 push bp
  252. 01C1 8B EC mov bp,sp
  253. 01C3 50 push ax
  254. 01C4 53 push bx
  255. 01C5 57 push di
  256. 01C6 E8 52 00 call 21bh
  257. 01C9 88 C2 mov dl,al
  258. 01CB 8B 7E 04 mov di,word ptr [bp+4h]
  259. 01CE 88 15 mov byte ptr [di],dl
  260. 01D0 5F pop di
  261. 01D1 5B pop bx
  262. 01D2 58 pop ax
  263. 01D3 89 EC mov sp,bp
  264. 01D5 5D pop bp
  265. 01D6 C3 ret
  266. 01D7 55 push bp
  267. 01D8 8B EC mov bp,sp
  268. 01DA 50 push ax
  269. 01DB 53 push bx
  270. 01DC 51 push cx
  271. 01DD 57 push di
  272. 01DE E8 3A 00 call 21bh
  273. 01E1 31 C9 xor cx,cx
  274. 01E3 3C 54 cmp al,54h
  275. 01E5 74 12 je 1f9h
  276. 01E7 3C 74 cmp al,74h
  277. 01E9 74 0E je 1f9h
  278. 01EB 3C 59 cmp al,59h
  279. 01ED 74 0A je 1f9h
  280. 01EF 3C 79 cmp al,79h
  281. 01F1 74 06 je 1f9h
  282. 01F3 3C 31 cmp al,31h
  283. 01F5 74 02 je 1f9h
  284. 01F7 EB 01 jmp 1fah
  285. 01F9 41 inc cx
  286. 01FA 8B 7E 04 mov di,word ptr [bp+4h]
  287. 01FD 89 0D mov word ptr [di],cx
  288. 01FF 5F pop di
  289. 0200 59 pop cx
  290. 0201 5B pop bx
  291. 0202 58 pop ax
  292. 0203 89 EC mov sp,bp
  293. 0205 5D pop bp
  294. 0206 C3 ret
  295. 0207 50 push ax
  296. 0208 E8 10 00 call 21bh
  297. 020B 3C 0D cmp al,0dh
  298. 020D 74 0A je 219h
  299. 020F 3C 0A cmp al,0ah
  300. 0211 74 06 je 219h
  301. 0213 3C 1A cmp al,1ah
  302. 0215 74 02 je 219h
  303. 0217 EB EF jmp 208h
  304. 0219 58 pop ax
  305. 021A C3 ret
  306. 021B 8B 1E 16 08 mov bx,word ptr [816h]
  307. 021F 83 FB 00 cmp bx,0h
  308. 0222 74 09 je 22dh
  309. 0224 8A C3 mov al,bl
  310. 0226 31 DB xor bx,bx
  311. 0228 89 1E 16 08 mov word ptr [816h],bx
  312. 022C C3 ret
  313. 022D B4 08 mov ah,8h
  314. 022F CD 21 int 21h
  315. 0231 C3 ret
  316. 0232 88 C2 mov dl,al
  317. 0234 BB 01 00 mov bx,1h
  318. 0237 8A DA mov bl,dl
  319. 0239 89 1E 16 08 mov word ptr [816h],bx
  320. 023D C3 ret
  321. 023E 55 push bp
  322. 023F 8B EC mov bp,sp
  323. 0241 50 push ax
  324. 0242 53 push bx
  325. 0243 51 push cx
  326. 0244 52 push dx
  327. 0245 57 push di
  328. 0246 8B 7E 04 mov di,word ptr [bp+4h]
  329. 0249 8B 46 04 mov ax,word ptr [bp+4h]
  330. 024C 8B F0 mov si,ax
  331. 024E 46 inc si
  332. 024F 31 DB xor bx,bx
  333. 0251 53 push bx
  334. 0252 E8 C6 FF call 21bh
  335. 0255 5B pop bx
  336. 0256 3C 0D cmp al,0dh
  337. 0258 74 1D je 277h
  338. 025A 3C 0A cmp al,0ah
  339. 025C 74 19 je 277h
  340. 025E 3C 1A cmp al,1ah
  341. 0260 74 15 je 277h
  342. 0262 88 C2 mov dl,al
  343. 0264 43 inc bx
  344. 0265 88 14 mov byte ptr [si],dl
  345. 0267 46 inc si
  346. 0268 E2 E7 loop 251h
  347. 026A 8A C3 mov al,bl
  348. 026C 88 05 mov byte ptr [di],al
  349. 026E 5F pop di
  350. 026F 5A pop dx
  351. 0270 59 pop cx
  352. 0271 5B pop bx
  353. 0272 58 pop ax
  354. 0273 89 EC mov sp,bp
  355. 0275 5D pop bp
  356. 0276 C3 ret
  357. 0277 53 push bx
  358. 0278 E8 B7 FF call 232h
  359. 027B 5B pop bx
  360. 027C EB EC jmp 26ah
  361. 027E 55 push bp
  362. 027F 8B EC mov bp,sp
  363. 0281 50 push ax
  364. 0282 53 push bx
  365. 0283 51 push cx
  366. 0284 52 push dx
  367. 0285 8B 46 04 mov ax,word ptr [bp+4h]
  368. 0288 8B F0 mov si,ax
  369. 028A 8B 5E 06 mov bx,word ptr [bp+6h]
  370. 028D 31 D2 xor dx,dx
  371. 028F 8A 07 mov al,byte ptr [bx]
  372. 0291 88 C2 mov dl,al
  373. 0293 43 inc bx
  374. 0294 39 D1 cmp cx,dx
  375. 0296 72 04 jb 29ch
  376. 0298 8B CA mov cx,dx
  377. 029A EB 02 jmp 29eh
  378. 029C 8A D1 mov dl,cl
  379. 029E 88 14 mov byte ptr [si],dl
  380. 02A0 46 inc si
  381. 02A1 E3 0A jcxz 2adh
  382. 02A3 8A 07 mov al,byte ptr [bx]
  383. 02A5 88 C2 mov dl,al
  384. 02A7 88 14 mov byte ptr [si],dl
  385. 02A9 43 inc bx
  386. 02AA 46 inc si
  387. 02AB E2 F6 loop 2a3h
  388. 02AD 5A pop dx
  389. 02AE 59 pop cx
  390. 02AF 5B pop bx
  391. 02B0 58 pop ax
  392. 02B1 89 EC mov sp,bp
  393. 02B3 5D pop bp
  394. 02B4 C3 ret
  395. 02B5 55 push bp
  396. 02B6 8B EC mov bp,sp
  397. 02B8 53 push bx
  398. 02B9 51 push cx
  399. 02BA 52 push dx
  400. 02BB 31 C9 xor cx,cx
  401. 02BD 31 D2 xor dx,dx
  402. 02BF 8B 5E 06 mov bx,word ptr [bp+6h]
  403. 02C2 8A 0F mov cl,byte ptr [bx]
  404. 02C4 8B 46 04 mov ax,word ptr [bp+4h]
  405. 02C7 8B F0 mov si,ax
  406. 02C9 8A 14 mov dl,byte ptr [si]
  407. 02CB 39 D1 cmp cx,dx
  408. 02CD 76 02 jbe 2d1h
  409. 02CF 8B CA mov cx,dx
  410. 02D1 E3 0E jcxz 2e1h
  411. 02D3 43 inc bx
  412. 02D4 46 inc si
  413. 02D5 8A 07 mov al,byte ptr [bx]
  414. 02D7 8A 14 mov dl,byte ptr [si]
  415. 02D9 3A C2 cmp al,dl
  416. 02DB 75 14 jne 2f1h
  417. 02DD 43 inc bx
  418. 02DE 46 inc si
  419. 02DF E2 F4 loop 2d5h
  420. 02E1 8B 5E 06 mov bx,word ptr [bp+6h]
  421. 02E4 8A 0F mov cl,byte ptr [bx]
  422. 02E6 8B 46 04 mov ax,word ptr [bp+4h]
  423. 02E9 8B F0 mov si,ax
  424. 02EB 31 D2 xor dx,dx
  425. 02ED 8A 14 mov dl,byte ptr [si]
  426. 02EF 39 D1 cmp cx,dx
  427. 02F1 B0 00 mov al,0h
  428. 02F3 B4 00 mov ah,0h
  429. 02F5 72 06 jb 2fdh
  430. 02F7 74 08 je 301h
  431. 02F9 B0 01 mov al,1h
  432. 02FB EB 04 jmp 301h
  433. 02FD B0 FF mov al,0ffh
  434. 02FF B4 FF mov ah,0ffh
  435. 0301 5A pop dx
  436. 0302 59 pop cx
  437. 0303 5B pop bx
  438. 0304 89 EC mov sp,bp
  439. 0306 5D pop bp
  440. 0307 C3 ret
  441. 0308 55 push bp
  442. 0309 8B EC mov bp,sp
  443. 030B 50 push ax
  444. 030C 53 push bx
  445. 030D 51 push cx
  446. 030E 52 push dx
  447. 030F 56 push si
  448. 0310 57 push di
  449. 0311 8B 46 04 mov ax,word ptr [bp+4h]
  450. 0314 8B F0 mov si,ax
  451. 0316 8B 5E 06 mov bx,word ptr [bp+6h]
  452. 0319 31 D2 xor dx,dx
  453. 031B 8A 14 mov dl,byte ptr [si]
  454. 031D 31 C0 xor ax,ax
  455. 031F 8A 07 mov al,byte ptr [bx]
  456. 0321 01 C2 add dx,ax
  457. 0323 39 D1 cmp cx,dx
  458. 0325 73 06 jnb 32dh
  459. 0327 B0 10 mov al,10h
  460. 0329 B4 4C mov ah,4ch
  461. 032B CD 21 int 21h
  462. 032D 8B CA mov cx,dx
  463. 032F 88 0C mov byte ptr [si],cl
  464. 0331 29 C2 sub dx,ax
  465. 0333 8B FE mov di,si
  466. 0335 47 inc di
  467. 0336 01 D7 add di,dx
  468. 0338 43 inc bx
  469. 0339 89 C1 mov cx,ax
  470. 033B E3 08 jcxz 345h
  471. 033D 8A 07 mov al,byte ptr [bx]
  472. 033F 88 05 mov byte ptr [di],al
  473. 0341 43 inc bx
  474. 0342 47 inc di
  475. 0343 E2 F8 loop 33dh
  476. 0345 5F pop di
  477. 0346 5E pop si
  478. 0347 5A pop dx
  479. 0348 59 pop cx
  480. 0349 5B pop bx
  481. 034A 58 pop ax
  482. 034B 89 EC mov sp,bp
  483. 034D 5D pop bp
  484. 034E C3 ret
  485. 034F 55 push bp
  486. 0350 8B EC mov bp,sp
  487. 0352 53 push bx
  488. 0353 52 push dx
  489. 0354 56 push si
  490. 0355 57 push di
  491. 0356 8B 76 06 mov si,word ptr [bp+6h]
  492. 0359 8B 04 mov ax,word ptr [si]
  493. 035B 83 F8 00 cmp ax,0h
  494. 035E 75 06 jne 366h
  495. 0360 31 DB xor bx,bx
  496. 0362 31 D2 xor dx,dx
  497. 0364 EB 2C jmp 392h
  498. 0366 88 E7 mov bh,ah
  499. 0368 89 C2 mov dx,ax
  500. 036A 83 FA 00 cmp dx,0h
  501. 036D 79 02 jns 371h
  502. 036F F7 DA neg dx
  503. 0371 B8 90 00 mov ax,90h
  504. 0374 80 FE 00 cmp dh,0h
  505. 0377 75 04 jne 37dh
  506. 0379 B0 88 mov al,88h
  507. 037B 86 D6 xchg dh,dl
  508. 037D 83 FA 00 cmp dx,0h
  509. 0380 78 06 js 388h
  510. 0382 FE C8 dec al
  511. 0384 D1 E2 shl dx,1h
  512. 0386 79 FA jns 382h
  513. 0388 80 FF 00 cmp bh,0h
  514. 038B 78 03 js 390h
  515. 038D 80 E6 7F and dh,7fh
  516. 0390 31 DB xor bx,bx
  517. 0392 8B 7E 04 mov di,word ptr [bp+4h]
  518. 0395 89 05 mov word ptr [di],ax
  519. 0397 89 5D 02 mov word ptr [di+2h],bx
  520. 039A 89 55 04 mov word ptr [di+4h],dx
  521. 039D 5F pop di
  522. 039E 5E pop si
  523. 039F 5A pop dx
  524. 03A0 5B pop bx
  525. 03A1 89 EC mov sp,bp
  526. 03A3 5D pop bp
  527. 03A4 C3 ret
  528. 03A5 55 push bp
  529. 03A6 8B EC mov bp,sp
  530. 03A8 53 push bx
  531. 03A9 52 push dx
  532. 03AA 56 push si
  533. 03AB 57 push di
  534. 03AC FF 76 04 push word ptr [bp+4h]
  535. 03AF 8B 76 04 mov si,word ptr [bp+4h]
  536. 03B2 8B 04 mov ax,word ptr [si]
  537. 03B4 8B 4C 02 mov cx,word ptr [si+2h]
  538. 03B7 8B 54 04 mov dx,word ptr [si+4h]
  539. 03BA 89 CB mov bx,cx
  540. 03BC 8B FE mov di,si
  541. 03BE 8B 4D 06 mov cx,word ptr [di+6h]
  542. 03C1 8B 75 08 mov si,word ptr [di+8h]
  543. 03C4 8B 7D 0A mov di,word ptr [di+0ah]
  544. 03C7 C7 06 18 08 00 00 mov word ptr [818h],0h
  545. 03CD E8 4D 00 call 41dh
  546. 03D0 5F pop di
  547. 03D1 89 05 mov word ptr [di],ax
  548. 03D3 89 5D 02 mov word ptr [di+2h],bx
  549. 03D6 89 55 04 mov word ptr [di+4h],dx
  550. 03D9 5F pop di
  551. 03DA 5E pop si
  552. 03DB 5A pop dx
  553. 03DC 5B pop bx
  554. 03DD 89 EC mov sp,bp
  555. 03DF 5D pop bp
  556. 03E0 C3 ret
  557. 03E1 55 push bp
  558. 03E2 8B EC mov bp,sp
  559. 03E4 53 push bx
  560. 03E5 52 push dx
  561. 03E6 56 push si
  562. 03E7 57 push di
  563. 03E8 FF 76 04 push word ptr [bp+4h]
  564. 03EB 8B 76 04 mov si,word ptr [bp+4h]
  565. 03EE 8B 04 mov ax,word ptr [si]
  566. 03F0 8B 4C 02 mov cx,word ptr [si+2h]
  567. 03F3 8B 54 04 mov dx,word ptr [si+4h]
  568. 03F6 89 CB mov bx,cx
  569. 03F8 8B FE mov di,si
  570. 03FA 8B 4D 06 mov cx,word ptr [di+6h]
  571. 03FD 8B 75 08 mov si,word ptr [di+8h]
  572. 0400 8B 7D 0A mov di,word ptr [di+0ah]
  573. 0403 C7 06 18 08 00 80 mov word ptr [818h],8000h
  574. 0409 E8 11 00 call 41dh
  575. 040C 5F pop di
  576. 040D 89 05 mov word ptr [di],ax
  577. 040F 89 5D 02 mov word ptr [di+2h],bx
  578. 0412 89 55 04 mov word ptr [di+4h],dx
  579. 0415 5F pop di
  580. 0416 5E pop si
  581. 0417 5A pop dx
  582. 0418 5B pop bx
  583. 0419 89 EC mov sp,bp
  584. 041B 5D pop bp
  585. 041C C3 ret
  586. 041D 80 F9 00 cmp cl,0h
  587. 0420 74 0E je 430h
  588. 0422 33 3E 18 08 xor di,word ptr [818h]
  589. 0426 3C 00 cmp al,0h
  590. 0428 75 07 jne 431h
  591. 042A 89 C8 mov ax,cx
  592. 042C 89 F3 mov bx,si
  593. 042E 89 FA mov dx,di
  594. 0430 C3 ret
  595. 0431 38 C8 cmp al,cl
  596. 0433 76 05 jbe 43ah
  597. 0435 91 xchg ax,cx
  598. 0436 87 F3 xchg bx,si
  599. 0438 87 FA xchg dx,di
  600. 043A 88 0E 1C 08 mov byte ptr [81ch],cl
  601. 043E 28 C1 sub cl,al
  602. 0440 80 F9 28 cmp cl,28h
  603. 0443 72 06 jb 44bh
  604. 0445 8A 0E 1C 08 mov cl,byte ptr [81ch]
  605. 0449 EB DF jmp 42ah
  606. 044B 89 3E 18 08 mov word ptr [818h],di
  607. 044F 80 26 19 08 80 and byte ptr [819h],80h
  608. 0454 89 3E 1A 08 mov word ptr [81ah],di
  609. 0458 30 36 1B 08 xor byte ptr [81bh],dh
  610. 045C 81 CF 00 80 or di,8000h
  611. 0460 80 CE 80 or dh,80h
  612. 0463 80 F9 10 cmp cl,10h
  613. 0466 72 0B jb 473h
  614. 0468 88 FC mov ah,bh
  615. 046A 89 D3 mov bx,dx
  616. 046C 31 D2 xor dx,dx
  617. 046E 80 E9 10 sub cl,10h
  618. 0471 EB F0 jmp 463h
  619. 0473 80 F9 08 cmp cl,8h
  620. 0476 72 0D jb 485h
  621. 0478 88 DC mov ah,bl
  622. 047A 88 FB mov bl,bh
  623. 047C 88 D7 mov bh,dl
  624. 047E 88 F2 mov dl,dh
  625. 0480 30 F6 xor dh,dh
  626. 0482 80 E9 08 sub cl,8h
  627. 0485 80 F9 00 cmp cl,0h
  628. 0488 74 0A je 494h
  629. 048A D1 EA shr dx,1h
  630. 048C D1 DB rcr bx,1h
  631. 048E D0 DC rcr ah,1h
  632. 0490 FE C9 dec cl
  633. 0492 75 F6 jne 48ah
  634. 0494 A0 1C 08 mov al,byte ptr [81ch]
  635. 0497 F6 06 1B 08 80 test byte ptr [81bh],80h
  636. 049C 75 14 jne 4b2h
  637. 049E 00 EC add ah,ch
  638. 04A0 11 F3 adc bx,si
  639. 04A2 11 FA adc dx,di
  640. 04A4 73 5F jnb 505h
  641. 04A6 D1 DA rcr dx,1h
  642. 04A8 D1 DB rcr bx,1h
  643. 04AA D0 DC rcr ah,1h
  644. 04AC FE C0 inc al
  645. 04AE 75 55 jne 505h
  646. 04B0 F9 stc
  647. 04B1 C3 ret
  648. 04B2 86 EC xchg ah,ch
  649. 04B4 87 F3 xchg bx,si
  650. 04B6 87 FA xchg dx,di
  651. 04B8 28 EC sub ah,ch
  652. 04BA 19 F3 sbb bx,si
  653. 04BC 19 FA sbb dx,di
  654. 04BE 73 14 jnb 4d4h
  655. 04C0 80 36 19 08 80 xor byte ptr [819h],80h
  656. 04C5 F6 D4 not ah
  657. 04C7 F7 D3 not bx
  658. 04C9 F7 D2 not dx
  659. 04CB 80 C4 01 add ah,1h
  660. 04CE 83 D3 00 adc bx,0h
  661. 04D1 83 D2 00 adc dx,0h
  662. 04D4 B1 05 mov cl,5h
  663. 04D6 80 FE 00 cmp dh,0h
  664. 04D9 75 14 jne 4efh
  665. 04DB 88 D6 mov dh,dl
  666. 04DD 88 FA mov dl,bh
  667. 04DF 88 DF mov bh,bl
  668. 04E1 88 E3 mov bl,ah
  669. 04E3 30 E4 xor ah,ah
  670. 04E5 2C 08 sub al,8h
  671. 04E7 72 15 jb 4feh
  672. 04E9 FE C9 dec cl
  673. 04EB 75 E9 jne 4d6h
  674. 04ED EB 0F jmp 4feh
  675. 04EF F6 C6 80 test dh,80h
  676. 04F2 75 11 jne 505h
  677. 04F4 D0 E4 shl ah,1h
  678. 04F6 D1 D3 rcl bx,1h
  679. 04F8 D1 D2 rcl dx,1h
  680. 04FA FE C8 dec al
  681. 04FC 75 F1 jne 4efh
  682. 04FE 31 C0 xor ax,ax
  683. 0500 31 DB xor bx,bx
  684. 0502 31 D2 xor dx,dx
  685. 0504 C3 ret
  686. 0505 80 E6 7F and dh,7fh
  687. 0508 32 36 19 08 xor dh,byte ptr [819h]
  688. 050C C3 ret
  689. 050D 55 push bp
  690. 050E 8B EC mov bp,sp
  691. 0510 53 push bx
  692. 0511 52 push dx
  693. 0512 56 push si
  694. 0513 57 push di
  695. 0514 FF 76 04 push word ptr [bp+4h]
  696. 0517 8B 76 04 mov si,word ptr [bp+4h]
  697. 051A 8B 04 mov ax,word ptr [si]
  698. 051C 8B 4C 02 mov cx,word ptr [si+2h]
  699. 051F 8B 54 04 mov dx,word ptr [si+4h]
  700. 0522 89 CB mov bx,cx
  701. 0524 8B FE mov di,si
  702. 0526 8B 4D 06 mov cx,word ptr [di+6h]
  703. 0529 8B 75 08 mov si,word ptr [di+8h]
  704. 052C 8B 7D 0A mov di,word ptr [di+0ah]
  705. 052F E8 11 00 call 543h
  706. 0532 5F pop di
  707. 0533 89 05 mov word ptr [di],ax
  708. 0535 89 5D 02 mov word ptr [di+2h],bx
  709. 0538 89 55 04 mov word ptr [di+4h],dx
  710. 053B 5F pop di
  711. 053C 5E pop si
  712. 053D 5A pop dx
  713. 053E 5B pop bx
  714. 053F 89 EC mov sp,bp
  715. 0541 5D pop bp
  716. 0542 C3 ret
  717. 0543 80 F9 00 cmp cl,0h
  718. 0546 75 03 jne 54bh
  719. 0548 E9 A4 00 jmp 5efh
  720. 054B 3C 00 cmp al,0h
  721. 054D 75 03 jne 552h
  722. 054F E9 A3 00 jmp 5f5h
  723. 0552 00 C8 add al,cl
  724. 0554 72 07 jb 55dh
  725. 0556 04 80 add al,80h
  726. 0558 72 0D jb 567h
  727. 055A E9 92 00 jmp 5efh
  728. 055D 04 80 add al,80h
  729. 055F 73 06 jnb 567h
  730. 0561 B0 01 mov al,1h
  731. 0563 B4 4C mov ah,4ch
  732. 0565 CD 21 int 21h
  733. 0567 89 0E 23 08 mov word ptr [823h],cx
  734. 056B 8B CA mov cx,dx
  735. 056D 31 F9 xor cx,di
  736. 056F F6 D5 not ch
  737. 0571 80 E5 80 and ch,80h
  738. 0574 88 2E 19 08 mov byte ptr [819h],ch
  739. 0578 80 CE 80 or dh,80h
  740. 057B 81 CF 00 80 or di,8000h
  741. 057F 89 36 25 08 mov word ptr [825h],si
  742. 0583 89 3E 27 08 mov word ptr [827h],di
  743. 0587 A3 1D 08 mov word ptr [81dh],ax
  744. 058A 89 1E 1F 08 mov word ptr [81fh],bx
  745. 058E 89 16 21 08 mov word ptr [821h],dx
  746. 0592 30 E4 xor ah,ah
  747. 0594 31 DB xor bx,bx
  748. 0596 31 D2 xor dx,dx
  749. 0598 BF 23 08 mov di,823h
  750. 059B B1 05 mov cl,5h
  751. 059D 47 inc di
  752. 059E 8A 2D mov ch,byte ptr [di]
  753. 05A0 80 FD 00 cmp ch,0h
  754. 05A3 75 0C jne 5b1h
  755. 05A5 88 DC mov ah,bl
  756. 05A7 88 FB mov bl,bh
  757. 05A9 88 D7 mov bh,dl
  758. 05AB 88 F2 mov dl,dh
  759. 05AD 30 F6 xor dh,dh
  760. 05AF EB 1C jmp 5cdh
  761. 05B1 BE 08 00 mov si,8h
  762. 05B4 D0 DD rcr ch,1h
  763. 05B6 73 0C jnb 5c4h
  764. 05B8 02 26 1E 08 add ah,byte ptr [81eh]
  765. 05BC 13 1E 1F 08 adc bx,word ptr [81fh]
  766. 05C0 13 16 21 08 adc dx,word ptr [821h]
  767. 05C4 D1 DA rcr dx,1h
  768. 05C6 D1 DB rcr bx,1h
  769. 05C8 D0 DC rcr ah,1h
  770. 05CA 4E dec si
  771. 05CB 75 E7 jne 5b4h
  772. 05CD FE C9 dec cl
  773. 05CF 75 CC jne 59dh
  774. 05D1 91 xchg ax,cx
  775. 05D2 9F lahf
  776. 05D3 F6 C6 80 test dh,80h
  777. 05D6 75 0E jne 5e6h
  778. 05D8 9E sahf
  779. 05D9 D0 D5 rcl ch,1h
  780. 05DB D1 D3 rcl bx,1h
  781. 05DD D1 D2 rcl dx,1h
  782. 05DF 80 F9 00 cmp cl,0h
  783. 05E2 74 02 je 5e6h
  784. 05E4 FE C9 dec cl
  785. 05E6 91 xchg ax,cx
  786. 05E7 32 36 19 08 xor dh,byte ptr [819h]
  787. 05EB 3C 00 cmp al,0h
  788. 05ED 75 06 jne 5f5h
  789. 05EF 31 C0 xor ax,ax
  790. 05F1 31 DB xor bx,bx
  791. 05F3 31 D2 xor dx,dx
  792. 05F5 C3 ret
  793. 05F6 55 push bp
  794. 05F7 8B EC mov bp,sp
  795. 05F9 53 push bx
  796. 05FA 52 push dx
  797. 05FB 56 push si
  798. 05FC 57 push di
  799. 05FD FF 76 04 push word ptr [bp+4h]
  800. 0600 8B 76 04 mov si,word ptr [bp+4h]
  801. 0603 8B 04 mov ax,word ptr [si]
  802. 0605 8B 4C 02 mov cx,word ptr [si+2h]
  803. 0608 8B 54 04 mov dx,word ptr [si+4h]
  804. 060B 89 CB mov bx,cx
  805. 060D 8B FE mov di,si
  806. 060F 8B 4D 06 mov cx,word ptr [di+6h]
  807. 0612 8B 75 08 mov si,word ptr [di+8h]
  808. 0615 8B 7D 0A mov di,word ptr [di+0ah]
  809. 0618 E8 11 00 call 62ch
  810. 061B 5F pop di
  811. 061C 89 05 mov word ptr [di],ax
  812. 061E 89 5D 02 mov word ptr [di+2h],bx
  813. 0621 89 55 04 mov word ptr [di+4h],dx
  814. 0624 5F pop di
  815. 0625 5E pop si
  816. 0626 5A pop dx
  817. 0627 5B pop bx
  818. 0628 89 EC mov sp,bp
  819. 062A 5D pop bp
  820. 062B C3 ret
  821. 062C 3C 00 cmp al,0h
  822. 062E 75 03 jne 633h
  823. 0630 E9 C2 FF jmp 5f5h
  824. 0633 28 C8 sub al,cl
  825. 0635 F5 cmc
  826. 0636 72 07 jb 63fh
  827. 0638 04 80 add al,80h
  828. 063A 72 0D jb 649h
  829. 063C E9 B0 FF jmp 5efh
  830. 063F 04 80 add al,80h
  831. 0641 73 06 jnb 649h
  832. 0643 B0 01 mov al,1h
  833. 0645 B4 4C mov ah,4ch
  834. 0647 CD 21 int 21h
  835. 0649 89 0E 23 08 mov word ptr [823h],cx
  836. 064D 8B CA mov cx,dx
  837. 064F 31 F9 xor cx,di
  838. 0651 F6 D5 not ch
  839. 0653 80 E5 80 and ch,80h
  840. 0656 88 2E 19 08 mov byte ptr [819h],ch
  841. 065A 80 CE 80 or dh,80h
  842. 065D 81 CF 00 80 or di,8000h
  843. 0661 89 36 25 08 mov word ptr [825h],si
  844. 0665 89 3E 27 08 mov word ptr [827h],di
  845. 0669 A2 1D 08 mov byte ptr [81dh],al
  846. 066C BF 22 08 mov di,822h
  847. 066F B1 05 mov cl,5h
  848. 0671 BE 08 00 mov si,8h
  849. 0674 3B 16 27 08 cmp dx,word ptr [827h]
  850. 0678 75 0A jne 684h
  851. 067A 3B 1E 25 08 cmp bx,word ptr [825h]
  852. 067E 75 04 jne 684h
  853. 0680 3A 26 24 08 cmp ah,byte ptr [824h]
  854. 0684 72 0C jb 692h
  855. 0686 2A 26 24 08 sub ah,byte ptr [824h]
  856. 068A 1B 1E 25 08 sbb bx,word ptr [825h]
  857. 068E 1B 16 27 08 sbb dx,word ptr [827h]
  858. 0692 F5 cmc
  859. 0693 D0 D5 rcl ch,1h
  860. 0695 4E dec si
  861. 0696 75 0A jne 6a2h
  862. 0698 88 2D mov byte ptr [di],ch
  863. 069A FE C9 dec cl
  864. 069C 74 1B je 6b9h
  865. 069E 4F dec di
  866. 069F BE 08 00 mov si,8h
  867. 06A2 D0 E4 shl ah,1h
  868. 06A4 D1 D3 rcl bx,1h
  869. 06A6 D1 D2 rcl dx,1h
  870. 06A8 73 CA jnb 674h
  871. 06AA 2A 26 24 08 sub ah,byte ptr [824h]
  872. 06AE 1B 1E 25 08 sbb bx,word ptr [825h]
  873. 06B2 1B 16 27 08 sbb dx,word ptr [827h]
  874. 06B6 F8 clc
  875. 06B7 EB D9 jmp 692h
  876. 06B9 D0 E4 shl ah,1h
  877. 06BB D1 D3 rcl bx,1h
  878. 06BD D1 D2 rcl dx,1h
  879. 06BF 72 11 jb 6d2h
  880. 06C1 3B 16 27 08 cmp dx,word ptr [827h]
  881. 06C5 75 0A jne 6d1h
  882. 06C7 3B 1E 25 08 cmp bx,word ptr [825h]
  883. 06CB 75 04 jne 6d1h
  884. 06CD 3A 26 24 08 cmp ah,byte ptr [824h]
  885. 06D1 F5 cmc
  886. 06D2 8B 0E 1D 08 mov cx,word ptr [81dh]
  887. 06D6 8B 1E 1F 08 mov bx,word ptr [81fh]
  888. 06DA 8B 16 21 08 mov dx,word ptr [821h]
  889. 06DE 9F lahf
  890. 06DF F6 C6 80 test dh,80h
  891. 06E2 75 09 jne 6edh
  892. 06E4 9E sahf
  893. 06E5 D0 D5 rcl ch,1h
  894. 06E7 D1 D3 rcl bx,1h
  895. 06E9 D1 D2 rcl dx,1h
  896. 06EB EB 0A jmp 6f7h
  897. 06ED FE C1 inc cl
  898. 06EF 75 06 jne 6f7h
  899. 06F1 B0 01 mov al,1h
  900. 06F3 B4 4C mov ah,4ch
  901. 06F5 CD 21 int 21h
  902. 06F7 E9 EC FE jmp 5e6h