Advertisement
Guest User

Untitled

a guest
Dec 13th, 2019
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 25.43 KB | None | 0 0
  1. #AOC 2019 day 13 source code annotations
  2. #an unofficial fan decomipilation by kms70847
  3.  
  4. #determine part. This "+" operator is a "*" during part 2.
  5. 1, 380, 379, 385 # 0: IS_PART_ONE = ONE + ZERO
  6.  
  7. #crash if last memory position is corrupted
  8. 1008, 2799, 144351, 381 # 4: VAL = state[2799] == 144351
  9. 1005, 381, 12 # 8: if VAL: GOTO 12
  10. 99 # 11: exit()
  11.  
  12. #set up call stack
  13. 109, 2800 # 12: relative_base += 2800
  14.  
  15. #display initial screen state.
  16. 1102, 0, 1, 383 # 14: SCREEN_Y = 0
  17. 1101, 0, 0, 382 # 18: SCREEN_X = 0
  18. 21001, 382, 0, 1 # 22: state[relative_base + 1] = SCREEN_X
  19. 21001, 383, 0, 2 # 26: state[relative_base + 2] = SCREEN_Y
  20. 21102, 37, 1, 0 # 30: state[relative_base] = 37
  21. 1106, 0, 578 # 34: GOTO 578 -- call get_tile(x,y), then return here
  22. 4, 382 # 37: print(SCREEN_X)
  23. 4, 383 # 39: print(SCREEN_Y)
  24. 204, 1 # 41: print(state[relative_base + 1])
  25. 1001, 382, 1, 382 # 43: SCREEN_X = SCREEN_X + 1
  26. 1007, 382, 45, 381 # 47: VAL = SCREEN_X < 45
  27. 1005, 381, 22 # 51: if VAL: GOTO 22
  28. 1001, 383, 1, 383 # 54: SCREEN_Y = SCREEN_Y + 1
  29. 1007, 383, 24, 381 # 58: VAL = SCREEN_Y < 24
  30. 1005, 381, 18 # 62: if VAL: GOTO 18
  31. #end of display initial screen state
  32.  
  33. #exit if part 1
  34. 1006, 385, 69 # 65: if not IS_PART_ONE: GOTO 69
  35. 99 # 68: exit()
  36.  
  37. #initial score
  38. 104, -1 # 69: print(-1)
  39. 104, 0 # 71: print(0)
  40. 4, 386 # 73: print(SCORE)
  41.  
  42. #get and decode user input
  43. 3, 384 # 75: PADDLE_DIR_OR_RESTART_PHYSICS = input()
  44. 1007, 384, 0, 381 # 77: VAL = PADDLE_DIR_OR_RESTART_PHYSICS < 0
  45. 1005, 381, 94 # 81: if VAL: GOTO 94
  46. 107, 0, 384, 381 # 84: VAL = 0 < PADDLE_DIR_OR_RESTART_PHYSICS
  47. 1005, 381, 108 # 88: if VAL: GOTO 108
  48. 1105, 1, 161 # 91: GOTO 161
  49.  
  50. #skip moving the paddle if you try to move it left into a wall.
  51. 107, 1, 392, 381 # 94: VAL = 1 < PADDLE_POSITION_X
  52. 1006, 381, 161 # 98: if not VAL: GOTO 161
  53. 1102, 1, -1, 384 # 101: PADDLE_DIR_OR_RESTART_PHYSICS = -1
  54. 1105, 1, 119 # 105: GOTO 119
  55.  
  56. #skip moving the paddle if you try to move it right into a wall.
  57. 1007, 392, 43, 381 # 108: VAL = PADDLE_POSITION_X < 43
  58. 1006, 381, 161 # 112: if not VAL: GOTO 161
  59. 1101, 0, 1, 384 # 115: PADDLE_DIR_OR_RESTART_PHYSICS = 1
  60.  
  61. #set old paddle position to an empty cell
  62. 20102, 1, 392, 1 # 119: state[relative_base + 1] = PADDLE_POSITION_X
  63. 21102, 1, 22, 2 # 123: state[relative_base + 2] = 22
  64. 21102, 0, 1, 3 # 127: state[relative_base + 3] = 0
  65. 21101, 0, 138, 0 # 131: state[relative_base] = 138
  66. 1106, 0, 549 # 135: GOTO 549 -- call set_tile_and_print(x,y,value), then return here
  67.  
  68. #set new paddle position to a paddle cell
  69. 1, 392, 384, 392 # 138: PADDLE_POSITION_X = PADDLE_POSITION_X + PADDLE_DIR_OR_RESTART_PHYSICS
  70. 20102, 1, 392, 1 # 142: state[relative_base + 1] = PADDLE_POSITION_X
  71. 21102, 1, 22, 2 # 146: state[relative_base + 2] = 22
  72. 21102, 3, 1, 3 # 150: state[relative_base + 3] = 3
  73. 21102, 161, 1, 0 # 154: state[relative_base] = 161
  74. 1105, 1, 549 # 158: GOTO 549 -- call set_tile_and_print(x,y,value), then return here
  75.  
  76. #PHYSICS TICK PART 1 - obstacles in front of ball
  77.  
  78. #query state of cell in front of ball
  79. 1102, 1, 0, 384 # 161: PADDLE_DIR_OR_RESTART_PHYSICS = 0
  80. 20001, 388, 390, 1 # 165: state[relative_base + 1] = BALL_POSITION_X + BALL_VELOCITY_X
  81. 20102, 1, 389, 2 # 169: state[relative_base + 2] = BALL_POSITION_Y
  82. 21102, 180, 1, 0 # 173: state[relative_base] = 180
  83. 1105, 1, 578 # 177: GOTO 578 -- call get_tile(x,y), then return here
  84.  
  85. #if cell is empty: skip "destruction" and "bounce" code
  86. 1206, 1, 213 # 180: if not state[relative_base + 1]: GOTO 213
  87.  
  88. #if cell is wall or paddle, skip "destruction" code
  89. 1208, 1, 2, 381 # 183: VAL = state[relative_base + 1] == 2
  90. 1006, 381, 205 # 187: if not VAL: GOTO 205
  91.  
  92. #cell must be block. Destroy it.
  93. 20001, 388, 390, 1 # 190: state[relative_base + 1] = BALL_POSITION_X + BALL_VELOCITY_X
  94. 20101, 0, 389, 2 # 194: state[relative_base + 2] = BALL_POSITION_Y
  95. 21102, 205, 1, 0 # 198: state[relative_base] = 205
  96. 1105, 1, 393 # 202: GOTO 393 -- call destroy_block_and_maybe_quit(x,y), then return here
  97.  
  98. #walls and blocks and paddles make ball bounce, reversing its x velocity
  99. 1002, 390, -1, 390 # 205: BALL_VELOCITY_X = BALL_VELOCITY_X * -1
  100. 1101, 1, 0, 384 # 209: PADDLE_DIR_OR_RESTART_PHYSICS = 1
  101.  
  102. #END OF PHYSICS TICK PART 1
  103.  
  104. #PHYSICS TICK PART 2 - obstacles above/below ball
  105. #almost identical to part 1, so skip to 264 if you're bored.
  106.  
  107. #get value of cell above/below ball (if it's moving up/down respectively)
  108. 21002, 388, 1, 1 # 213: state[relative_base + 1] = BALL_POSITION_X
  109. 20001, 389, 391, 2 # 217: state[relative_base + 2] = BALL_POSITION_Y + BALL_VELOCITY_Y
  110. 21101, 228, 0, 0 # 221: state[relative_base] = 228
  111. 1106, 0, 578 # 225: GOTO 578 -- call get_tile(x,y), then return here
  112.  
  113. #if the cell is empty: skip "destruction" and "bounce" code
  114. 1206, 1, 261 # 228: if not state[relative_base + 1]: GOTO 261
  115.  
  116. #if the cell is a wall, skip "destruction" code
  117. 1208, 1, 2, 381 # 231: VAL = state[relative_base + 1] == 2
  118. 1006, 381, 253 # 235: if not VAL: GOTO 253
  119.  
  120. #cell must be block. Destroy it.
  121. 20101, 0, 388, 1 # 238: state[relative_base + 1] = BALL_POSITION_X
  122. 20001, 389, 391, 2 # 242: state[relative_base + 2] = BALL_POSITION_Y + BALL_VELOCITY_Y
  123. 21101, 253, 0, 0 # 246: state[relative_base] = 253
  124. 1105, 1, 393 # 250: GOTO 393 -- call destroy_block_and_maybe_quit(x,y), then return here
  125.  
  126. #walls and blocks and paddles make ball bounce, reversing its y velocity.
  127. 1002, 391, -1, 391 # 253: BALL_VELOCITY_Y = BALL_VELOCITY_Y * -1
  128. 1102, 1, 1, 384 # 257: PADDLE_DIR_OR_RESTART_PHYSICS = 1
  129.  
  130. #if the ball has changed direction this frame, return to 161 and do another physics tick
  131. 1005, 384, 161 # 261: if PADDLE_DIR_OR_RESTART_PHYSICS: GOTO 161
  132.  
  133. #END OF PHYSICS TICK PART 2
  134.  
  135. #PHYSICS TICK PART 3 - obstacles diagonal to ball
  136. #almost identical to part 2, so skip to 319 if you're bored.
  137.  
  138. #query state of the cell diagonal to the ball that the ball is moving towards
  139. 20001, 388, 390, 1 # 264: state[relative_base + 1] = BALL_POSITION_X + BALL_VELOCITY_X
  140. 20001, 389, 391, 2 # 268: state[relative_base + 2] = BALL_POSITION_Y + BALL_VELOCITY_Y
  141. 21102, 1, 279, 0 # 272: state[relative_base] = 279
  142. 1106, 0, 578 # 276: GOTO 578 -- call get_tile(x,y), then return here
  143.  
  144. #if the cell is empty, go to 316
  145. 1206, 1, 316 # 279: if not state[relative_base + 1]: GOTO 316
  146.  
  147. #if the cell is a wall, skip "destruction" code
  148. 1208, 1, 2, 381 # 282: VAL = state[relative_base + 1] == 2
  149. 1006, 381, 304 # 286: if not VAL: GOTO 304
  150.  
  151. #cell must be block. Destroy it.
  152. 20001, 388, 390, 1 # 289: state[relative_base + 1] = BALL_POSITION_X + BALL_VELOCITY_X
  153. 20001, 389, 391, 2 # 293: state[relative_base + 2] = BALL_POSITION_Y + BALL_VELOCITY_Y
  154. 21101, 304, 0, 0 # 297: state[relative_base] = 304
  155. 1106, 0, 393 # 301: GOTO 393 -- call destroy_block_and_maybe_quit(x,y), then return here
  156.  
  157. #walls and blocks and paddles make ball bounce, reversing both x and y velocity
  158. 1002, 390, -1, 390 # 304: BALL_VELOCITY_X = BALL_VELOCITY_X * -1
  159. 1002, 391, -1, 391 # 308: BALL_VELOCITY_Y = BALL_VELOCITY_Y * -1
  160. 1102, 1, 1, 384 # 312: PADDLE_DIR_OR_RESTART_PHYSICS = 1
  161.  
  162. #if the ball has changed directions again, do yet another physics tick
  163. 1005, 384, 161 # 316: if PADDLE_DIR_OR_RESTART_PHYSICS: GOTO 161
  164.  
  165. #END OF PHYSICS TICK PART 3
  166.  
  167. #set ball's previous position to "empty"
  168. 20101, 0, 388, 1 # 319: state[relative_base + 1] = BALL_POSITION_X
  169. 20101, 0, 389, 2 # 323: state[relative_base + 2] = BALL_POSITION_Y
  170. 21102, 1, 0, 3 # 327: state[relative_base + 3] = 0
  171. 21101, 0, 338, 0 # 331: state[relative_base] = 338
  172. 1106, 0, 549 # 335: GOTO 549 -- call set_tile_and_print(x,y,value), then return here
  173.  
  174. #update ball's position and set new cell to "ball"
  175. 1, 388, 390, 388 # 338: BALL_POSITION_X = BALL_POSITION_X + BALL_VELOCITY_X
  176. 1, 389, 391, 389 # 342: BALL_POSITION_Y = BALL_POSITION_Y + BALL_VELOCITY_Y
  177. 20101, 0, 388, 1 # 346: state[relative_base + 1] = BALL_POSITION_X
  178. 21002, 389, 1, 2 # 350: state[relative_base + 2] = BALL_POSITION_Y
  179. 21101, 4, 0, 3 # 354: state[relative_base + 3] = 4
  180. 21101, 365, 0, 0 # 358: state[relative_base] = 365
  181. 1105, 1, 549 # 362: GOTO 549 -- call set_tile_and_print(x,y,value), then return here
  182.  
  183. #if ball is below paddle, you die; drop score to zero and exit. Otherwise, game continues at user input step at line 75
  184. 1007, 389, 23, 381 # 365: VAL = BALL_POSITION_Y < 23
  185. 1005, 381, 75 # 369: if VAL: GOTO 75
  186. 104, -1 # 372: print(-1)
  187. 104, 0 # 374: print(0)
  188. 104, 0 # 376: print(0)
  189. 99 # 378: exit()
  190.  
  191. #GLOBAL VARIABLES
  192. 0, # 379 (data) aka ZERO
  193. 1, # 380 (data) aka ONE
  194. 0, # 381 (data) aka VAL
  195. 0, # 382 (data) aka SCREEN_X
  196. 0, # 383 (data) aka SCREEN_Y
  197. 0, # 384 (data) aka PADDLE_DIR_OR_RESTART_PHYSICS
  198. 0, # 385 (data) aka IS_PART_ONE
  199. 0, # 386 (data) aka SCORE
  200. 462, # 387 (data) aka BLOCKS_REMAINING
  201. 20, # 388 (data) aka BALL_POSITION_X
  202. 19, # 389 (data) aka BALL_POSITION_Y
  203. 1, # 390 (data) aka BALL_VELOCITY_X
  204. 1, # 391 (data) aka BALL_VELOCITY_Y
  205. 22, # 392 (data) aka PADDLE_POSITION_X
  206.  
  207. #FUNCTIONS
  208. #Functions work by using `relative base` as a call stack pointer.
  209. #the calling code pushes arguments and the return address onto the call stack, then jumps to the address of a function.
  210. #The function inspects the arguments on the call stack, does whatever work it needs, and jumps back to the return address specified by the calling code. Return values, if any, are left on the call stack, but in the "volatile" area just past the call stack pointer.
  211.  
  212. #FUNCTION: `destroy_block_and_maybe_quit(x,y)`
  213. #a brick was struck, so erase it and increment score
  214. 109, 3 # 393: relative_base += 3
  215. 21202, -2, 1, 1 # 395: state[relative_base + 1] = state[relative_base - 2]
  216. 21201, -1, 0, 2 # 399: state[relative_base + 2] = state[relative_base - 1]
  217. 21102, 0, 1, 3 # 403: state[relative_base + 3] = 0
  218. 21101, 414, 0, 0 # 407: state[relative_base] = 414
  219. 1106, 0, 549 # 411: GOTO 549 -- call set_tile_and_print(x,y,value), then return here
  220. 22102, 1, -2, 1 # 414: state[relative_base + 1] = state[relative_base - 2]
  221. 21201, -1, 0, 2 # 418: state[relative_base + 2] = state[relative_base - 1]
  222. 21102, 1, 429, 0 # 422: state[relative_base] = 429
  223. 1105, 1, 601 # 426: GOTO 601 -- call value_of_block_at(x,y), then return here
  224. 2101, 0, 1, 435 # 429: state[435] = state[relative_base + 1]
  225. 1, 386, 0, 386 # 433: SCORE = SCORE + state[0]
  226. #print score
  227. 104, -1 # 437: print(-1)
  228. 104, 0 # 439: print(0)
  229. 4, 386 # 441: print(SCORE)
  230. #if no blocks remain: exit
  231. 1001, 387, -1, 387 # 443: BLOCKS_REMAINING = BLOCKS_REMAINING - 1
  232. 1005, 387, 451 # 447: if BLOCKS_REMAINING: GOTO 451
  233. 99 # 450: exit()
  234. #return to calling code
  235. 109, -3 # 451: relative_base -= 3
  236. 2105, 1, 0 # 453: GOTO state[relative_base]
  237.  
  238. #FUNCTION: `lol_idk(a,b,c,d,e,f,g)`
  239. #Some kind of crazy mathematical scrambler. Called exclusively by function `value_of_block_at`.
  240. #Most likely this is intentionally confusing in order to obfuscate the true value of each block.
  241. 109, 8 # 456: relative_base += 8
  242. 22202, -7, -6, -3 # 458: state[relative_base - 3] = state[relative_base - 7] * state[relative_base - 6]
  243. 22201, -3, -5, -3 # 462: state[relative_base - 3] = state[relative_base - 3] + state[relative_base - 5]
  244. 21202, -4, 64, -2 # 466: state[relative_base - 2] = state[relative_base - 4] * 64
  245. 2207, -3, -2, 381 # 470: VAL = state[relative_base - 3] < state[relative_base - 2]
  246. 1005, 381, 492 # 474: if VAL: GOTO 492
  247. 21202, -2, -1, -1 # 477: state[relative_base - 1] = state[relative_base - 2] * -1
  248. 22201, -3, -1, -3 # 481: state[relative_base - 3] = state[relative_base - 3] + state[relative_base - 1]
  249. 2207, -3, -2, 381 # 485: VAL = state[relative_base - 3] < state[relative_base - 2]
  250. 1006, 381, 481 # 489: if not VAL: GOTO 481
  251. 21202, -4, 8, -2 # 492: state[relative_base - 2] = state[relative_base - 4] * 8
  252. 2207, -3, -2, 381 # 496: VAL = state[relative_base - 3] < state[relative_base - 2]
  253. 1005, 381, 518 # 500: if VAL: GOTO 518
  254. 21202, -2, -1, -1 # 503: state[relative_base - 1] = state[relative_base - 2] * -1
  255. 22201, -3, -1, -3 # 507: state[relative_base - 3] = state[relative_base - 3] + state[relative_base - 1]
  256. 2207, -3, -2, 381 # 511: VAL = state[relative_base - 3] < state[relative_base - 2]
  257. 1006, 381, 507 # 515: if not VAL: GOTO 507
  258. 2207, -3, -4, 381 # 518: VAL = state[relative_base - 3] < state[relative_base - 4]
  259. 1005, 381, 540 # 522: if VAL: GOTO 540
  260. 21202, -4, -1, -1 # 525: state[relative_base - 1] = state[relative_base - 4] * -1
  261. 22201, -3, -1, -3 # 529: state[relative_base - 3] = state[relative_base - 3] + state[relative_base - 1]
  262. 2207, -3, -4, 381 # 533: VAL = state[relative_base - 3] < state[relative_base - 4]
  263. 1006, 381, 529 # 537: if not VAL: GOTO 529
  264. 21202, -3, 1, -7 # 540: state[relative_base - 7] = state[relative_base - 3]
  265. 109, -8 # 544: relative_base -= 8
  266. 2105, 1, 0 # 546: GOTO state[relative_base]
  267.  
  268. #FUNCTION: set_tile_and_print(x,y,value)
  269. #some scary self-modifying code in here, but basically it locates the cell belonging to (x,y) in the data region starting at 639, updates its value, and prints it.
  270. 109, 4 # 549: relative_base += 4
  271. 1202, -2, 45, 566 # 551: state[566] = state[relative_base - 2] * 45
  272. 201, -3, 566, 566 # 555: state[566] = state[relative_base - 3] + state[566]
  273. 101, 639, 566, 566 # 559: state[566] = 639 + state[566]
  274. 1202, -1, 1, 0 # 563: state[0] = state[relative_base - 1]
  275. 204, -3 # 567: print(state[relative_base - 3])
  276. 204, -2 # 569: print(state[relative_base - 2])
  277. 204, -1 # 571: print(state[relative_base - 1])
  278. 109, -4 # 573: relative_base -= 4
  279. 2106, 0, 0 # 575: GOTO state[relative_base]
  280.  
  281. #FUNCTION: get_tile(x,y)
  282. #returns the value of the game field at (x,y)
  283. 109, 3 # 578: relative_base += 3
  284. 1202, -1, 45, 594 # 580: state[594] = state[relative_base - 1] * 45
  285. 201, -2, 594, 594 # 584: state[594] = state[relative_base - 2] + state[594]
  286. 101, 639, 594, 594 # 588: state[594] = 639 + state[594]
  287. 20101, 0, 0, -2 # 592: state[relative_base - 2] = state[0]
  288. 109, -3 # 596: relative_base -= 3
  289. 2105, 1, 0 # 598: GOTO state[relative_base]
  290.  
  291. #FUNCTION: value_of_block_at(x,y)
  292. #determine how many points you get for destroying the block at (x,y)
  293. 109, 3 # 601: relative_base += 3
  294. 22102, 24, -2, 1 # 603: state[relative_base + 1] = 24 * state[relative_base - 2]
  295. 22201, 1, -1, 1 # 607: state[relative_base + 1] = state[relative_base + 1] + state[relative_base - 1]
  296. 21102, 1, 547, 2 # 611: state[relative_base + 2] = 547
  297. 21102, 1, 67, 3 # 615: state[relative_base + 3] = 67
  298. 21101, 1080, 0, 4 # 619: state[relative_base + 4] = 1080
  299. 21102, 1, 630, 0 # 623: state[relative_base] = 630
  300. 1105, 1, 456 # 627: GOTO 456 -- call lol_idk(a,b,c,d,e,f,g), then return here
  301. 21201, 1, 1719, -2 # 630: state[relative_base - 2] = state[relative_base + 1] + 1719
  302. 109, -3 # 634: relative_base -= 3
  303. 2106, 0, 0 # 636: GOTO state[relative_base]
  304.  
  305.  
  306. #DATA: the initial value of each cell of the game field. Probably varies from user to user.
  307. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  308. 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
  309. 1, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 0, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 0, 0, 2, 2, 2, 0, 0, 1,
  310. 1, 0, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1,
  311. 1, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 2, 2, 0, 2, 2, 0, 1,
  312. 1, 0, 2, 2, 0, 2, 2, 0, 0, 0, 2, 0, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 2, 0, 0, 2, 2, 0, 2, 0, 2, 0, 2, 2, 2, 2, 2, 0, 1,
  313. 1, 0, 2, 0, 0, 2, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 1,
  314. 1, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 2, 0, 1,
  315. 1, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 2, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1,
  316. 1, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1,
  317. 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 1,
  318. 1, 0, 2, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 2, 0, 0, 1,
  319. 1, 0, 0, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 0, 1,
  320. 1, 0, 0, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 0, 1,
  321. 1, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1,
  322. 1, 0, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 2, 2, 0, 2, 2, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1,
  323. 1, 0, 0, 2, 2, 2, 0, 0, 2, 2, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 0, 2, 0, 0, 0, 2, 0, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 0, 1,
  324. 1, 0, 0, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 1,
  325. 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
  326. 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
  327. 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
  328. 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
  329. 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
  330. 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
  331.  
  332. #DATA: Seed values for the block score calculation algorithm, probably?
  333. 9, 39, 41, 83, 13, 97, 81, 2, 94, 70, 54, 80, 64, 53, 86, 83, 73, 14, 8, 90, 38, 79, 87, 81, 5, 14, 43, 32, 46, 39, 20, 18, 47, 85, 63, 71, 38, 16, 83, 50, 21, 69, 67, 20, 94, 57, 26, 11, 65, 31, 41, 24, 60, 79, 15, 34, 87, 60, 81, 76, 46, 90, 47, 31, 33, 98, 10, 70, 60, 94, 50, 41, 27, 24, 34, 12, 17, 91, 45, 97, 40, 89, 36, 47, 94, 47, 40, 58, 44, 50, 27, 57, 4, 86, 45, 93, 75, 55, 57, 34, 98, 58, 60, 31, 26, 62, 92, 50, 47, 71, 31, 14, 19, 31, 11, 11, 61, 60, 41, 32, 43, 3, 74, 88, 14, 60, 47, 98, 11, 71, 76, 79, 60, 14, 49, 69, 5, 1, 64, 43, 63, 23, 59, 81, 55, 96, 43, 36, 80, 1, 2, 94, 56, 79, 66, 1, 41, 27, 35, 22, 64, 89, 41, 77, 1, 98, 13, 85, 48, 55, 73, 70, 56, 13, 50, 73, 95, 19, 15, 82, 27, 74, 18, 11, 90, 44, 11, 25, 57, 76, 15, 94, 90, 85, 97, 21, 67, 21, 82, 17, 64, 40, 11, 46, 82, 73, 62, 46, 82, 80, 90, 1, 91, 4, 3, 93, 31, 3, 65, 57, 14, 66, 30, 25, 9, 66, 69, 56, 71, 25, 50, 19, 57, 44, 16, 34, 81, 61, 95, 71, 33, 97, 60, 59, 43, 75, 6, 30, 55, 90, 69, 70, 45, 37, 89, 5, 9, 81, 51, 28, 4, 84, 21, 73, 75, 53, 82, 67, 36, 26, 45, 82, 93, 16, 17, 89, 55, 20, 62, 37, 39, 38, 55, 71, 44, 80, 28, 95, 18, 83, 40, 82, 46, 70, 74, 70, 53, 8, 92, 38, 9, 29, 66, 95, 24, 75, 85, 20, 23, 88, 71, 66, 2, 39, 58, 78, 44, 15, 74, 52, 77, 87, 2, 4, 17, 18, 45, 2, 71, 2, 17, 86, 68, 24, 6, 19, 36, 12, 40, 40, 79, 58, 52, 53, 14, 79, 48, 62, 94, 9, 4, 86, 8, 33, 76, 62, 8, 80, 81, 51, 74, 49, 26, 56, 12, 40, 3, 32, 48, 51, 74, 12, 77, 73, 53, 58, 82, 92, 92, 9, 53, 53, 11, 92, 33, 73, 80, 68, 93, 85, 51, 95, 69, 83, 74, 66, 90, 90, 98, 6, 96, 83, 51, 16, 46, 41, 87, 4, 86, 90, 28, 52, 54, 70, 98, 26, 26, 1, 74, 49, 64, 56, 16, 67, 50, 60, 45, 61, 32, 66, 19, 23, 73, 20, 12, 27, 71, 29, 52, 61, 24, 24, 92, 3, 97, 84, 48, 40, 23, 64, 50, 25, 12, 76, 25, 3, 88, 31, 8, 29, 87, 24, 3, 2, 77, 95, 8, 90, 31, 71, 5, 76, 41, 54, 51, 2, 17, 85, 23, 79, 62, 80, 8, 64, 31, 31, 14, 83, 88, 90, 29, 53, 74, 80, 63, 15, 61, 68, 86, 17, 3, 83, 87, 10, 63, 9, 37, 92, 23, 16, 64, 66, 45, 28, 92, 15, 61, 34, 4, 27, 72, 10, 19, 96, 49, 29, 87, 62, 46, 97, 80, 81, 52, 31, 11, 5, 51, 10, 75, 52, 16, 97, 89, 96, 21, 26, 98, 14, 11, 92, 66, 69, 30, 60, 71, 76, 38, 70, 74, 88, 78, 42, 42, 60, 6, 69, 9, 23, 59, 92, 9, 72, 27, 90, 55, 10, 36, 56, 74, 61, 95, 28, 69, 57, 6, 96, 36, 21, 88, 22, 54, 65, 13, 13, 91, 64, 52, 43, 45, 49, 37, 80, 13, 55, 78, 57, 63, 88, 51, 46, 13, 58, 44, 23, 5, 15, 14, 84, 39, 94, 25, 63, 93, 82, 2, 90, 36, 62, 1, 68, 2, 54, 66, 79, 34, 94, 55, 44, 4, 53, 39, 65, 40, 41, 42, 40, 89, 69, 23, 43, 80, 73, 7, 5, 71, 14, 54, 38, 46, 46, 58, 89, 61, 6, 49, 56, 40, 35, 76, 8, 69, 95, 31, 34, 36, 14, 91, 83, 98, 76, 5, 7, 68, 79, 87, 85, 85, 61, 79, 44, 6, 20, 26, 4, 27, 15, 80, 62, 27, 85, 3, 76, 10, 48, 28, 12, 48, 93, 44, 36, 41, 92, 67, 36, 76, 58, 26, 80, 40, 19, 98, 68, 53, 28, 19, 96, 20, 39, 19, 13, 60, 64, 18, 12, 91, 50, 7, 11, 32, 31, 69, 92, 39, 70, 50, 42, 66, 12, 38, 92, 1, 27, 47, 52, 59, 12, 76, 2, 90, 65, 80, 50, 40, 54, 29, 97, 87, 73, 39, 80, 94, 70, 81, 97, 4, 98, 16, 51, 31, 77, 77, 34, 74, 62, 30, 41, 37, 40, 5, 62, 74, 51, 47, 58, 65, 37, 60, 77, 35, 32, 83, 35, 36, 77, 70, 17, 74, 19, 97, 16, 39, 58, 56, 75, 3, 1, 69, 4, 73, 39, 52, 65, 33, 62, 22, 70, 25, 88, 97, 76, 34, 43, 80, 29, 14, 89, 39, 81, 12, 6, 79, 90, 85, 14, 31, 59, 64, 59, 51, 89, 34, 66, 90, 95, 92, 31, 16, 37, 23, 7, 85, 83, 91, 64, 41, 89, 3, 12, 32, 72, 92, 94, 93, 66, 59, 51, 52, 69, 78, 73, 45, 38, 62, 20, 64, 8, 21, 61, 5, 62, 98, 23, 46, 77, 4, 73, 74, 43, 2, 77, 94, 75, 42, 76, 91, 67, 82, 40, 54, 58, 86, 92, 3, 51, 28, 69, 78, 39, 35, 7, 63, 14, 2, 96, 17, 53, 44, 75, 20, 66, 92, 67, 42, 44, 58, 54, 15, 40, 65, 61, 75, 85, 92, 74, 57, 74, 11, 6, 20, 33, 21, 36, 7, 20, 28, 89, 15, 28, 15, 11, 97, 9, 48, 70, 94, 7, 10, 72, 86, 64, 23, 36, 93, 55, 91, 36, 44, 35, 43, 10, 53, 4, 34, 70, 96, 41, 70, 98, 7, 28, 30, 9, 97, 36, 89, 25, 21, 77, 51, 4, 19, 26, 65, 56, 76, 51, 56, 73, 88, 56, 4, 52, 89, 6, 10, 26, 36, 73, 32, 54, 57, 92, 72, 48, 74, 76, 14, 19, 33, 56, 70, 6, 38, 20, 6, 11, 55, 61, 60, 52, 58, 61, 88, 30, 7, 86, 60, 73, 72, 46, 56, 73, 78, 50, 58, 3, 32, 45, 87, 78, 64, 86, 72, 73, 83, 36, 56, 1, 70, 98, 80, 62, 38, 45, 90, 13, 70, 9, 28, 72
  334.  
  335. #simple checksum that the program confirms is present before running
  336. 144351, #2799 (data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement