init.sbk 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. .486
  2. .model flat
  3. extrn __fltused:near
  4. extrn __ftol:near
  5. _DATA segment
  6. public _words
  7. align 4
  8. _words label byte
  9. dd 1
  10. dd 2
  11. dd 3
  12. db 105
  13. db 102
  14. db 0
  15. db 3 dup (0)
  16. db 2 dup (0)
  17. dd 4
  18. dd 5
  19. db 4 dup (0)
  20. db 102
  21. db 111
  22. db 114
  23. db 3 dup (0)
  24. db 2 dup (0)
  25. dd 6
  26. dd 7
  27. dd 8
  28. db 101
  29. db 108
  30. db 115
  31. db 101
  32. db 0
  33. db 1 dup (0)
  34. db 2 dup (0)
  35. dd 9
  36. dd 10
  37. dd 11
  38. db 119
  39. db 104
  40. db 105
  41. db 108
  42. db 101
  43. db 1 dup (0)
  44. db 2 dup (0)
  45. dd 0
  46. db 8 dup (0)
  47. db 8 dup (0)
  48. public _wordlist
  49. align 4
  50. _wordlist label byte
  51. dd _words
  52. public _x
  53. align 4
  54. _x label byte
  55. dd 1
  56. dd 2
  57. dd 3
  58. dd 4
  59. dd 0
  60. dd 5
  61. dd 6
  62. db 12 dup (0)
  63. dd 7
  64. db 16 dup (0)
  65. public _y
  66. align 4
  67. _y label byte
  68. dd _x
  69. dd _x+20
  70. dd _x+40
  71. dd 00H
  72. public _main
  73. _DATA ends
  74. _TEXT segment
  75. _main:
  76. push ebx
  77. push esi
  78. push edi
  79. push ebp
  80. mov ebp,esp
  81. sub esp,8
  82. mov dword ptr (-8)[ebp],0
  83. jmp L8
  84. L5:
  85. mov dword ptr (-4)[ebp],0
  86. jmp L12
  87. L9:
  88. mov edi,dword ptr (-4)[ebp]
  89. mov esi,dword ptr (-8)[ebp]
  90. mov esi,dword ptr (_y)[esi*4]
  91. mov edi,dword ptr [esi][edi*4]
  92. push edi
  93. lea edi,(L13)
  94. push edi
  95. call _printf
  96. add esp,8
  97. L10:
  98. inc dword ptr (-4)[ebp]
  99. L12:
  100. mov edi,dword ptr (-4)[ebp]
  101. mov esi,dword ptr (-8)[ebp]
  102. mov esi,dword ptr (_y)[esi*4]
  103. cmp dword ptr [esi][edi*4],0
  104. jne L9
  105. lea edi,(L14)
  106. push edi
  107. call _printf
  108. add esp,4
  109. L6:
  110. inc dword ptr (-8)[ebp]
  111. L8:
  112. mov edi,dword ptr (-8)[ebp]
  113. mov edi,dword ptr (_y)[edi*4]
  114. cmp edi,0
  115. jne L5
  116. call _f
  117. add esp,0
  118. mov edi,dword ptr (_wordlist)
  119. push edi
  120. call _g
  121. add esp,4
  122. mov eax,0
  123. L4:
  124. mov esp,ebp
  125. pop ebp
  126. pop edi
  127. pop esi
  128. pop ebx
  129. ret
  130. _TEXT ends
  131. _DATA segment
  132. align 4
  133. L16 label byte
  134. dd L17
  135. dd L18
  136. dd L19
  137. dd L20
  138. dd 00H
  139. public _f
  140. _DATA ends
  141. _TEXT segment
  142. _f:
  143. push ebx
  144. push esi
  145. push edi
  146. push ebp
  147. mov ebp,esp
  148. sub esp,4
  149. lea edi,(L16)
  150. mov dword ptr (-4)[ebp],edi
  151. jmp L24
  152. L21:
  153. mov edi,dword ptr (-4)[ebp]
  154. mov edi,dword ptr [edi]
  155. push edi
  156. lea edi,(L25)
  157. push edi
  158. call _printf
  159. add esp,8
  160. L22:
  161. mov edi,dword ptr (-4)[ebp]
  162. lea edi,(4)[edi]
  163. mov dword ptr (-4)[ebp],edi
  164. L24:
  165. mov edi,dword ptr (-4)[ebp]
  166. mov edi,dword ptr [edi]
  167. cmp edi,0
  168. jne L21
  169. mov eax,0
  170. L15:
  171. mov esp,ebp
  172. pop ebp
  173. pop edi
  174. pop esi
  175. pop ebx
  176. ret
  177. public _g
  178. _g:
  179. push ebx
  180. push esi
  181. push edi
  182. push ebp
  183. mov ebp,esp
  184. sub esp,4
  185. jmp L30
  186. L27:
  187. mov dword ptr (-4)[ebp],0
  188. jmp L34
  189. L31:
  190. mov edi,dword ptr (-4)[ebp]
  191. mov esi,dword ptr (20)[ebp]
  192. mov edi,dword ptr [esi][edi*4]
  193. push edi
  194. lea edi,(L35)
  195. push edi
  196. call _printf
  197. add esp,8
  198. L32:
  199. inc dword ptr (-4)[ebp]
  200. L34:
  201. mov edi,dword ptr (-4)[ebp]
  202. cmp edi,3
  203. jb L31
  204. mov edi,dword ptr (20)[ebp]
  205. lea edi,(12)[edi]
  206. push edi
  207. lea edi,(L25)
  208. push edi
  209. call _printf
  210. add esp,8
  211. L28:
  212. mov edi,dword ptr (20)[ebp]
  213. lea edi,(20)[edi]
  214. mov dword ptr (20)[ebp],edi
  215. L30:
  216. mov edi,dword ptr (20)[ebp]
  217. cmp dword ptr [edi],0
  218. jne L27
  219. call _h
  220. add esp,0
  221. mov eax,0
  222. L26:
  223. mov esp,ebp
  224. pop ebp
  225. pop edi
  226. pop esi
  227. pop ebx
  228. ret
  229. public _h
  230. _h:
  231. push ebx
  232. push esi
  233. push edi
  234. push ebp
  235. mov ebp,esp
  236. sub esp,4
  237. mov dword ptr (-4)[ebp],0
  238. jmp L40
  239. L37:
  240. imul edi,dword ptr (-4)[ebp],20
  241. lea esi,(_words+12)[edi]
  242. push esi
  243. mov esi,dword ptr (_words+8)[edi]
  244. push esi
  245. mov esi,dword ptr (_words+4)[edi]
  246. push esi
  247. mov edi,dword ptr (_words)[edi]
  248. push edi
  249. lea edi,(L41)
  250. push edi
  251. call _printf
  252. add esp,20
  253. L38:
  254. inc dword ptr (-4)[ebp]
  255. L40:
  256. mov edi,dword ptr (-4)[ebp]
  257. cmp edi,5
  258. jb L37
  259. mov eax,0
  260. L36:
  261. mov esp,ebp
  262. pop ebp
  263. pop edi
  264. pop esi
  265. pop ebx
  266. ret
  267. _TEXT ends
  268. extrn _printf:near
  269. _TEXT segment
  270. _TEXT ends
  271. _TEXT segment
  272. align 1
  273. L41 label byte
  274. db 37
  275. db 100
  276. db 32
  277. db 37
  278. db 100
  279. db 32
  280. db 37
  281. db 100
  282. db 32
  283. db 37
  284. db 115
  285. db 10
  286. db 0
  287. align 1
  288. L35 label byte
  289. db 37
  290. db 100
  291. db 32
  292. db 0
  293. align 1
  294. L25 label byte
  295. db 37
  296. db 115
  297. db 10
  298. db 0
  299. align 1
  300. L20 label byte
  301. db 119
  302. db 104
  303. db 105
  304. db 108
  305. db 101
  306. db 0
  307. align 1
  308. L19 label byte
  309. db 101
  310. db 108
  311. db 115
  312. db 101
  313. db 0
  314. align 1
  315. L18 label byte
  316. db 102
  317. db 111
  318. db 114
  319. db 0
  320. align 1
  321. L17 label byte
  322. db 105
  323. db 102
  324. db 0
  325. align 1
  326. L14 label byte
  327. db 10
  328. db 0
  329. align 1
  330. L13 label byte
  331. db 32
  332. db 37
  333. db 100
  334. db 0
  335. _TEXT ends
  336. end