BENCHLNG.EXE.a1 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. main PROC NEAR
  2. 000 0002FA 55 PUSH bp
  3. 001 0002FB 8BEC MOV bp, sp
  4. 002 0002FD 83EC14 SUB sp, 14h
  5. 003 000300 8D46FC LEA ax, [bp-4]
  6. 004 000303 50 PUSH ax
  7. 005 000304 B89401 MOV ax, 194h
  8. 006 000307 50 PUSH ax
  9. 007 000308 E85D15 CALL near ptr scanf
  10. 008 00030B 59 POP cx
  11. 009 00030C 59 POP cx
  12. 010 00030D FF76FE PUSH word ptr [bp-2]
  13. 011 000310 FF76FC PUSH word ptr [bp-4]
  14. 012 000313 B89801 MOV ax, 198h
  15. 013 000316 50 PUSH ax
  16. 014 000317 E8C50C CALL near ptr printf
  17. 015 00031A 83C406 ADD sp, 6
  18. 016 00031D 8D46EC LEA ax, [bp-14h]
  19. 017 000320 50 PUSH ax
  20. 018 000321 B8B201 MOV ax, 1B2h
  21. 019 000324 50 PUSH ax
  22. 020 000325 E84015 CALL near ptr scanf
  23. 021 000328 59 POP cx
  24. 022 000329 59 POP cx
  25. 023 00032A 8D46F0 LEA ax, [bp-10h]
  26. 024 00032D 50 PUSH ax
  27. 025 00032E B8B601 MOV ax, 1B6h
  28. 026 000331 50 PUSH ax
  29. 027 000332 E83315 CALL near ptr scanf
  30. 028 000335 59 POP cx
  31. 029 000336 59 POP cx
  32. 030 000337 C746FA0000 MOV word ptr [bp-6], 0
  33. 031 00033C C746F80100 MOV word ptr [bp-8], 1
  34. 032 000341 E9E900 JMP L1
  35. 033 00042D 8B56FA L1: MOV dx, [bp-6]
  36. 034 000430 8B46F8 MOV ax, [bp-8]
  37. 035 000433 3B56FE CMP dx, [bp-2]
  38. 036 000436 7D03 JGE L2
  39. 037 000438 E909FF JMP L3
  40. 038 000344 C746F60000 L3: MOV word ptr [bp-0Ah], 0
  41. 039 000349 C746F40100 MOV word ptr [bp-0Ch], 1
  42. 040 00034E E9C000 JMP L4
  43. 041 000411 837EF600 L4: CMP word ptr [bp-0Ah], 0
  44. 042 000415 7D03 JGE L5
  45. 043 000417 E937FF JMP L6
  46. 044 000351 8B56EE L6: MOV dx, [bp-12h]
  47. 045 000354 8B46EC MOV ax, [bp-14h]
  48. 046 000357 0346F0 ADD ax, [bp-10h]
  49. 047 00035A 1356F2 ADC dx, [bp-0Eh]
  50. 048 00035D 0346F4 ADD ax, [bp-0Ch]
  51. 049 000360 1356F6 ADC dx, [bp-0Ah]
  52. 050 000363 8956EE MOV [bp-12h], dx
  53. 051 000366 8946EC MOV [bp-14h], ax
  54. 052 000369 8B56EE MOV dx, [bp-12h]
  55. 053 00036C 8B46EC MOV ax, [bp-14h]
  56. 054 00036F D1FA SAR dx, 1
  57. 055 000371 D1D8 RCR ax, 1
  58. 056 000373 8956F2 MOV [bp-0Eh], dx
  59. 057 000376 8946F0 MOV [bp-10h], ax
  60. 058 000379 33D2 XOR dx, dx
  61. 059 00037B B80A00 MOV ax, 0Ah
  62. 060 00037E 52 PUSH dx
  63. 061 00037F 50 PUSH ax
  64. 062 000380 FF76F2 PUSH word ptr [bp-0Eh]
  65. 063 000383 FF76F0 PUSH word ptr [bp-10h]
  66. 064 000386 9AEB1D1000 CALL far ptr LMOD@
  67. 065 00038B 8956EE MOV [bp-12h], dx
  68. 066 00038E 8946EC MOV [bp-14h], ax
  69. 067 000391 8B56F2 MOV dx, [bp-0Eh]
  70. 068 000394 8B46F0 MOV ax, [bp-10h]
  71. 069 000397 3B56F6 CMP dx, [bp-0Ah]
  72. 070 00039A 750A JNE L7
  73. 071 00039C 3B46F4 CMP ax, [bp-0Ch]
  74. 072 00039F 7505 JNE L7
  75. 073 0003A1 B80100 MOV ax, 1
  76. 074 0003A4 EB02 JMP L8
  77. 075 0003A8 99 L8: CWD
  78. 076 0003A9 8956EE MOV [bp-12h], dx
  79. 077 0003AC 8946EC MOV [bp-14h], ax
  80. 078 0003AF 8B56EE MOV dx, [bp-12h]
  81. 079 0003B2 8B46EC MOV ax, [bp-14h]
  82. 080 0003B5 0B46F4 OR ax, [bp-0Ch]
  83. 081 0003B8 0B56F6 OR dx, [bp-0Ah]
  84. 082 0003BB 8956F2 MOV [bp-0Eh], dx
  85. 083 0003BE 8946F0 MOV [bp-10h], ax
  86. 084 0003C1 8B46F0 MOV ax, [bp-10h]
  87. 085 0003C4 0B46F2 OR ax, [bp-0Eh]
  88. 086 0003C7 7505 JNE L9
  89. 087 0003C9 B80100 MOV ax, 1
  90. 088 0003CC EB02 JMP L10
  91. 089 0003D0 99 L10: CWD
  92. 090 0003D1 8956EE MOV [bp-12h], dx
  93. 091 0003D4 8946EC MOV [bp-14h], ax
  94. 092 0003D7 8B56EE MOV dx, [bp-12h]
  95. 093 0003DA 8B46EC MOV ax, [bp-14h]
  96. 094 0003DD 0346F4 ADD ax, [bp-0Ch]
  97. 095 0003E0 1356F6 ADC dx, [bp-0Ah]
  98. 096 0003E3 8956F2 MOV [bp-0Eh], dx
  99. 097 0003E6 8946F0 MOV [bp-10h], ax
  100. 098 0003E9 8B56F2 MOV dx, [bp-0Eh]
  101. 099 0003EC 8B46F0 MOV ax, [bp-10h]
  102. 100 0003EF 3B56F6 CMP dx, [bp-0Ah]
  103. 101 0003F2 7C0C JL L11
  104. 102 0003F4 7F05 JG L12
  105. 103 0003F6 3B46F4 CMP ax, [bp-0Ch]
  106. 104 0003F9 7605 JBE L11
  107. 105 0003FB B80100 L12: MOV ax, 1
  108. 106 0003FE EB02 JMP L13
  109. 107 000402 99 L13: CWD
  110. 108 000403 8956EE MOV [bp-12h], dx
  111. 109 000406 8946EC MOV [bp-14h], ax
  112. 110 000409 8346F401 ADD word ptr [bp-0Ch], 1
  113. 111 00040D 8356F600 ADC word ptr [bp-0Ah], 0
  114. 112 JMP L4 ;Synthetic inst
  115. 113 000400 33C0 L11: XOR ax, ax
  116. 114 JMP L13 ;Synthetic inst
  117. 115 0003CE 33C0 L9: XOR ax, ax
  118. 116 JMP L10 ;Synthetic inst
  119. 117 0003A6 33C0 L7: XOR ax, ax
  120. 118 JMP L8 ;Synthetic inst
  121. 119 00041A 7F09 L5: JG L14
  122. 120 00041C 837EF428 CMP word ptr [bp-0Ch], 28h
  123. 121 000420 7703 JA L14
  124. 122 000422 E92CFF JMP L6
  125. 123 000425 8346F801 L14: ADD word ptr [bp-8], 1
  126. 124 000429 8356FA00 ADC word ptr [bp-6], 0
  127. 125 JMP L1 ;Synthetic inst
  128. 126 00043B 7F08 L2: JG L15
  129. 127 00043D 3B46FC CMP ax, [bp-4]
  130. 128 000440 7703 JA L15
  131. 129 000442 E9FFFE JMP L3
  132. 130 000445 FF76EE L15: PUSH word ptr [bp-12h]
  133. 131 000448 FF76EC PUSH word ptr [bp-14h]
  134. 132 00044B B8BA01 MOV ax, 1BAh
  135. 133 00044E 50 PUSH ax
  136. 134 00044F E88D0B CALL near ptr printf
  137. 135 000452 83C406 ADD sp, 6
  138. 136 000455 8BE5 MOV sp, bp
  139. 137 000457 5D POP bp
  140. 138 000458 C3 RET
  141. main ENDP
  142. LMOD@ PROC FAR
  143. 000 001EEB B90200 MOV cx, 2
  144. 001 001EEE EB03 JMP L16
  145. 002 001EF3 55 L16: PUSH bp
  146. 003 001EF4 56 PUSH si
  147. 004 001EF5 57 PUSH di
  148. 005 001EF6 8BEC MOV bp, sp
  149. 006 001EF8 8BF9 MOV di, cx
  150. 007 001EFA 8B460A MOV ax, [bp+0Ah]
  151. 008 001EFD 8B560C MOV dx, [bp+0Ch]
  152. 009 001F00 8B5E0E MOV bx, [bp+0Eh]
  153. 010 001F03 8B4E10 MOV cx, [bp+10h]
  154. 011 001F06 0BC9 OR cx, cx
  155. 012 001F08 7508 JNE L17
  156. 013 001F0A 0BD2 OR dx, dx
  157. 014 001F0C 7469 JE L18
  158. 015 001F0E 0BDB OR bx, bx
  159. 016 001F10 7465 JE L18
  160. 017 001F12 F7C70100 L17: TEST di, 1
  161. 018 001F16 751C JNE L19
  162. 019 001F18 0BD2 OR dx, dx
  163. 020 001F1A 790A JNS L20
  164. 021 001F1C F7DA NEG dx
  165. 022 001F1E F7D8 NEG ax
  166. 023 001F20 83DA00 SBB dx, 0
  167. 024 001F23 83CF0C OR di, 0Ch
  168. 025 001F26 0BC9 L20: OR cx, cx
  169. 026 001F28 790A JNS L19
  170. 027 001F2A F7D9 NEG cx
  171. 028 001F2C F7DB NEG bx
  172. 029 001F2E 83D900 SBB cx, 0
  173. 030 001F31 83F704 XOR di, 4
  174. 031 001F34 8BE9 L19: MOV bp, cx
  175. 032 001F36 B92000 MOV cx, 20h
  176. 033 001F39 57 PUSH di
  177. 034 001F3A 33FF XOR di, di
  178. 035 001F3C 33F6 XOR si, si
  179. 036 001F3E D1E0 L21: SHL ax, 1
  180. 037 001F40 D1D2 RCL dx, 1
  181. 038 001F42 D1D6 RCL si, 1
  182. 039 001F44 D1D7 RCL di, 1
  183. 040 001F46 3BFD CMP di, bp
  184. 041 001F48 720B JB L22
  185. 042 001F4A 7704 JA L23
  186. 043 001F4C 3BF3 CMP si, bx
  187. 044 001F4E 7205 JB L22
  188. 045 001F50 2BF3 L23: SUB si, bx
  189. 046 001F52 1BFD SBB di, bp
  190. 047 001F54 40 INC ax
  191. 048 001F55 E2E7 L22: LOOP L21
  192. 049 001F57 5B POP bx
  193. 050 001F58 F7C30200 TEST bx, 2
  194. 051 001F5C 7406 JE L24
  195. 052 001F5E 8BC6 MOV ax, si
  196. 053 001F60 8BD7 MOV dx, di
  197. 054 001F62 D1EB SHR bx, 1
  198. 055 001F64 F7C30400 L24: TEST bx, 4
  199. 056 001F68 7407 JE L25
  200. 057 001F6A F7DA NEG dx
  201. 058 001F6C F7D8 NEG ax
  202. 059 001F6E 83DA00 SBB dx, 0
  203. 060 001F71 5F L25: POP di
  204. 061 001F72 5E POP si
  205. 062 001F73 5D POP bp
  206. 063 001F74 CA0800 RETF 8
  207. 065 001F77 F7F3 DIV bx
  208. 067 001F79 F7C70200 TEST di, 2
  209. 068 001F7D 7402 JE L26
  210. 069 001F7F 8BC2 MOV ax, dx
  211. 070 001F81 33D2 L26: XOR dx, dx
  212. 071 001F83 EBEC JMP L25
  213. LMOD@ ENDP