ofs | hex dump | ascii |
---|
0000 | 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 02 00 03 00 01 00 00 00 17 68 00 09 34 00 00 00 | .ELF.....................h..4... |
0020 | 00 00 00 00 00 00 00 00 34 00 20 00 02 00 00 00 00 00 00 00 01 00 00 00 74 00 00 00 74 00 00 09 | ........4...............t...t... |
0040 | 74 00 00 09 94 8f 00 00 94 8f 00 00 05 00 00 00 00 10 00 00 01 00 00 00 08 90 00 00 08 00 00 0a | t............................... |
0060 | 08 00 00 0a 3b 58 00 00 3b 58 00 00 06 00 00 00 00 10 00 00 b8 01 00 00 00 cd 80 b8 03 00 00 00 | ....;X..;X...................... |
0080 | cd 80 c3 b8 04 00 00 00 cd 80 c3 b8 05 00 00 00 cd 80 c3 b8 06 00 00 00 cd 80 c3 b8 13 00 00 00 | ................................ |
00a0 | cd 80 c3 b8 08 00 00 00 cd 80 c3 b8 0a 00 00 00 cd 80 c3 b8 26 00 00 00 cd 80 c3 b8 5a 00 00 00 | ....................&.......Z... |
00c0 | cd 80 c3 b8 36 00 00 00 cd 80 c3 b8 a2 00 00 00 cd 80 c3 b8 09 01 00 00 cd 80 c3 bb 00 00 00 00 | ....6........................... |
00e0 | e8 8f ff ff ff 55 89 e5 50 51 52 53 8b 5d 08 8b 4d 0c 81 c1 04 00 00 00 8b 55 0c 8b 12 e8 81 ff | .....U..PQRS.]..M........U...... |
0100 | ff ff 3d 00 00 00 00 0f 8c 08 00 00 00 5b 5a 59 58 89 ec 5d c3 bb ff 00 00 00 e8 55 ff ff ff 68 | ..=..........[ZYX..].......U...h |
0120 | c0 0e 00 0a 68 34 00 00 00 68 34 00 00 00 e8 10 00 00 00 81 c4 0c 00 00 00 bb 00 00 00 00 e8 31 | ....h4...h4....................1 |
0140 | ff ff ff 55 89 e5 50 51 53 8b 45 08 8b 5d 0c 39 d8 75 17 68 dd 0e 00 0a 68 02 00 00 00 e8 83 ff | ...U..PQS.E..].9.u.h....h....... |
0160 | ff ff 81 c4 08 00 00 00 eb 2f 8b 4d 10 51 68 02 00 00 00 e8 6d ff ff ff 81 c4 08 00 00 00 68 08 | ........./.M.Qh.....m.........h. |
0180 | 00 00 0a 68 02 00 00 00 e8 58 ff ff ff 81 c4 08 00 00 00 ff 05 0d 00 00 0a 5b 59 58 89 ec 5d c3 | ...h.....X...............[YX..]. |
01a0 | e8 da 89 00 00 8b 1d 0d 00 00 0a e8 c4 fe ff ff 55 89 e5 51 52 53 56 57 8b 7d 08 8b 55 0c 8b 12 | ................U..QRSVW.}..U... |
01c0 | 8b 75 0c 81 c6 04 00 00 00 b9 00 00 00 00 b8 00 00 00 00 bb 00 00 00 00 39 d1 7d 14 8a 07 8a 1e | .u......................9.}..... |
01e0 | 3d 00 00 00 00 74 19 39 d8 75 15 41 47 46 eb e8 8a 07 3d 00 00 00 00 75 07 b8 01 00 00 00 eb 05 | =....t.9.u.AGF....=....u........ |
0200 | b8 00 00 00 00 5f 5e 5b 5a 59 89 ec 5d c3 68 e2 0e 00 0a 68 1b 00 00 0a e8 93 ff ff ff 81 c4 08 | ....._^[ZY..].h....h............ |
0220 | 00 00 00 68 e6 0e 00 0a 68 01 00 00 00 50 e8 10 ff ff ff 81 c4 0c 00 00 00 c3 68 1e 0f 00 0a 68 | ...h....h....P............h....h |
0240 | 1b 00 00 0a e8 67 ff ff ff 81 c4 08 00 00 00 68 25 0f 00 0a 68 00 00 00 00 50 e8 e4 fe ff ff 81 | .....g.........h%...h....P...... |
0260 | c4 0c 00 00 00 c3 68 61 0f 00 0a 68 1c 00 00 0a e8 3b ff ff ff 81 c4 08 00 00 00 68 68 0f 00 0a | ......ha...h.....;.........hh... |
0280 | 68 01 00 00 00 50 e8 b8 fe ff ff 81 c4 0c 00 00 00 c3 68 9b 0f 00 0a 68 1c 00 00 0a e8 0f ff ff | h....P............h....h........ |
02a0 | ff 81 c4 08 00 00 00 68 a2 0f 00 0a 68 00 00 00 00 50 e8 8c fe ff ff 81 c4 0c 00 00 00 c3 68 d5 | .......h....h....P............h. |
02c0 | 0f 00 0a 68 1c 00 00 0a e8 e3 fe ff ff 81 c4 08 00 00 00 68 d9 0f 00 0a 68 00 00 00 00 50 e8 60 | ...h...............h....h....P.` |
02e0 | fe ff ff 81 c4 0c 00 00 00 c3 68 0c 10 00 0a 68 1c 00 00 0a e8 b7 fe ff ff 81 c4 08 00 00 00 68 | ..........h....h...............h |
0300 | 12 10 00 0a 68 00 00 00 00 50 e8 34 fe ff ff 81 c4 0c 00 00 00 c3 68 47 10 00 0a 68 1c 00 00 0a | ....h....P.4..........hG...h.... |
0320 | e8 8b fe ff ff 81 c4 08 00 00 00 68 4f 10 00 0a 68 00 00 00 00 50 e8 08 fe ff ff 81 c4 0c 00 00 | ...........hO...h....P.......... |
0340 | 00 c3 68 00 00 00 00 68 00 00 00 00 89 e1 51 68 00 10 00 00 e8 15 00 00 00 81 c4 08 00 00 00 8b | ..h....h......Qh................ |
0360 | 01 c7 00 34 00 00 00 89 c3 e8 06 fd ff ff 55 89 e5 50 53 8b 45 08 89 05 24 00 00 0a bb 20 00 00 | ...4..........U..PS.E...$....... |
0380 | 0a e8 35 fd ff ff 8b 5d 0c 89 03 03 45 08 89 43 04 5b 58 89 ec 5d c3 e8 e3 87 00 00 8b 1d 0d 00 | ..5....]....E..C.[X..].......... |
03a0 | 00 0a e8 cd fc ff ff 55 89 e5 51 56 57 8b 75 08 8b 7d 0c 8b 0e 39 0f b8 00 00 00 00 75 11 ff 75 | .......U..QVW.u..}...9......u..u |
03c0 | 0c ff 75 08 e8 0d 00 00 00 81 c4 08 00 00 00 5f 5e 59 89 ec 5d c3 55 89 e5 51 52 56 57 8b 75 08 | ..u............_^Y..].U..QRVW.u. |
03e0 | 8b 7d 0c 8b 0f 39 0e 7c 29 81 c6 04 00 00 00 81 c7 04 00 00 00 01 f9 31 c0 31 d2 39 cf 73 0c 8a | .}...9.|)..............1.1.9.s.. |
0400 | 06 8a 17 39 d0 75 0b 46 47 eb f0 b8 01 00 00 00 eb 05 b8 00 00 00 00 5f 5e 5a 59 89 ec 5d c3 68 | ...9.u.FG.............._^ZY..].h |
0420 | 83 10 00 0a 68 87 10 00 0a e8 79 ff ff ff 81 c4 08 00 00 00 68 8b 10 00 0a 68 01 00 00 00 50 e8 | ....h.....y.........h....h....P. |
0440 | ff fc ff ff 81 c4 0c 00 00 00 c3 68 b7 10 00 0a 68 be 10 00 0a e8 4d ff ff ff 81 c4 08 00 00 00 | ...........h....h.....M......... |
0460 | 68 c2 10 00 0a 68 00 00 00 00 50 e8 d3 fc ff ff 81 c4 0c 00 00 00 c3 68 f2 10 00 0a 68 f9 10 00 | h....h....P............h....h... |
0480 | 0a e8 21 ff ff ff 81 c4 08 00 00 00 68 00 11 00 0a 68 01 00 00 00 50 e8 a7 fc ff ff 81 c4 0c 00 | ..!.........h....h....P......... |
04a0 | 00 00 c3 68 22 11 00 0a 68 29 11 00 0a e8 f5 fe ff ff 81 c4 08 00 00 00 68 30 11 00 0a 68 00 00 | ...h"...h)..............h0...h.. |
04c0 | 00 00 50 e8 7b fc ff ff 81 c4 0c 00 00 00 c3 55 89 e5 50 ff 75 0c ff 75 08 e8 c9 fe ff ff 81 c4 | ..P.{..........U..P.u..u........ |
04e0 | 08 00 00 00 ff 75 10 68 01 00 00 00 50 e8 51 fc ff ff 81 c4 0c 00 00 00 58 89 ec 5d c3 68 60 11 | .....u.h....P.Q.........X..].h`. |
0500 | 00 0a 68 67 11 00 0a e8 c3 ff ff ff 81 c4 08 00 00 00 c3 55 89 e5 50 51 8b 45 08 8b 48 08 8d 4c | ..hg...............U..PQ.E..H..L |
0520 | 08 0c c7 00 00 00 00 00 c7 40 04 00 00 00 00 81 c0 0c 00 00 00 39 c8 73 06 c6 00 00 40 eb f6 59 | .........@...........9.s....@..Y |
0540 | 58 89 ec 5d c3 55 89 e5 50 8b 45 08 c7 40 04 00 00 00 00 58 89 ec 5d c3 55 89 e5 50 51 8b 4d 08 | X..].U..P.E..@.....X..].U..PQ.M. |
0560 | 68 3c 00 00 0a 51 e8 03 fe ff ff 81 c4 08 00 00 00 8b 05 3c 00 00 0a 89 05 38 00 00 0a 81 e9 0c | h<...Q.............<.....8...... |
0580 | 00 00 00 89 48 08 59 58 89 ec 5d c3 55 89 e5 50 51 52 53 56 57 8b 3d 38 00 00 0a 8b 75 08 8b 0f | ....H.YX..].U..PQRSVW.=8....u... |
05a0 | 8b 57 08 56 8d 5c 17 0c 53 8d 5c 0f 0c 53 e8 2d 05 00 00 81 c4 0c 00 00 00 3d 00 00 00 00 74 20 | .W.V.\..S.\..S.-.........=....t. |
05c0 | 01 07 8b 0f 68 08 00 00 0a 8d 5c 17 0c 53 8d 5c 0f 0c 53 e8 08 05 00 00 81 c4 0c 00 00 00 01 07 | ....h.....\..S.\..S............. |
05e0 | 5f 5e 5b 5a 59 58 89 ec 5d c3 ff 35 38 00 00 0a b8 44 00 00 0a 89 05 38 00 00 0a e8 c8 04 00 00 | _^[ZYX..]..58....D.....8........ |
0600 | 68 6e 11 00 0a e8 82 ff ff ff 81 c4 04 00 00 00 68 74 11 00 0a 68 41 62 0a 00 b8 44 00 00 0a ff | hn..............ht...hAb...D.... |
0620 | 70 0c e8 1c fb ff ff 81 c4 0c 00 00 00 8f 05 38 00 00 0a c3 ff 35 38 00 00 0a b8 44 00 00 0a 89 | p..............8.....58....D.... |
0640 | 05 38 00 00 0a e8 7e 04 00 00 68 8d 11 00 0a e8 38 ff ff ff 81 c4 04 00 00 00 68 92 11 00 0a e8 | .8....~...h.....8.........h..... |
0660 | 28 ff ff ff 81 c4 04 00 00 00 68 97 11 00 0a 68 43 0a 44 0a b8 44 00 00 0a ff 70 0c e8 c2 fa ff | (.........h....hC.D..D....p..... |
0680 | ff 81 c4 0c 00 00 00 8f 05 38 00 00 0a c3 ff 35 38 00 00 0a b8 44 00 00 0a 89 05 38 00 00 0a e8 | .........8.....58....D.....8.... |
06a0 | 24 04 00 00 68 b1 11 00 0a e8 de fe ff ff 81 c4 04 00 00 00 68 b5 11 00 0a 68 00 00 00 00 b8 44 | $...h...............h....h.....D |
06c0 | 00 00 0a ff 70 0c e8 78 fa ff ff 81 c4 0c 00 00 00 8f 05 38 00 00 0a c3 55 89 e5 ff 35 38 00 00 | ....p..x...........8....U...58.. |
06e0 | 0a e8 5f fe ff ff 81 c4 04 00 00 00 ff 75 0c ff 75 08 e8 0a 00 00 00 81 c4 08 00 00 00 89 ec 5d | .._..........u..u..............] |
0700 | c3 55 89 e5 50 ff 75 08 e8 1f 00 00 00 81 c4 04 00 00 00 ff 75 0c 68 01 00 00 00 50 e8 22 fa ff | .U..P.u.............u.h....P.".. |
0720 | ff 81 c4 0c 00 00 00 58 89 ec 5d c3 55 89 e5 51 56 8b 35 38 00 00 0a 8b 0e ff 76 04 39 4e 04 7d | .......X..].U..QV.58......v.9N.} |
0740 | 3d ff 75 08 56 e8 d1 01 00 00 81 c4 08 00 00 00 3d 00 00 00 00 74 19 56 e8 d2 02 00 00 81 c4 04 | =.u.V...........=....t.V........ |
0760 | 00 00 00 81 c4 04 00 00 00 b8 01 00 00 00 eb 16 56 e8 b9 02 00 00 81 c4 04 00 00 00 eb be 8f 46 | ................V..............F |
0780 | 04 b8 00 00 00 00 59 89 ec 5d c3 ff 35 38 00 00 0a b8 44 00 00 0a 89 05 38 00 00 0a e8 27 03 00 | ......Y..]..58....D.....8....'.. |
07a0 | 00 68 d2 11 00 0a e8 e1 fd ff ff 81 c4 04 00 00 00 68 d8 11 00 0a e8 71 ff ff ff 81 c4 04 00 00 | .h...............h.....q........ |
07c0 | 00 68 de 11 00 0a 68 01 00 00 00 50 e8 72 f9 ff ff 81 c4 0c 00 00 00 8f 05 38 00 00 0a c3 ff 35 | .h....h....P.r...........8.....5 |
07e0 | 38 00 00 0a b8 44 00 00 0a 89 05 38 00 00 0a e8 d4 02 00 00 68 fb 11 00 0a e8 8e fd ff ff 81 c4 | 8....D.....8........h........... |
0800 | 04 00 00 00 68 01 12 00 0a e8 7e fd ff ff 81 c4 04 00 00 00 68 07 12 00 0a e8 0e ff ff ff 81 c4 | ....h.....~.........h........... |
0820 | 04 00 00 00 68 0d 12 00 0a 68 01 00 00 00 50 e8 0f f9 ff ff 81 c4 0c 00 00 00 8f 05 38 00 00 0a | ....h....h....P.............8... |
0840 | c3 ff 35 38 00 00 0a b8 44 00 00 0a 89 05 38 00 00 0a e8 71 02 00 00 68 3c 12 00 0a e8 2b fd ff | ..58....D.....8....q...h<....+.. |
0860 | ff 81 c4 04 00 00 00 68 42 12 00 0a e8 bb fe ff ff 81 c4 04 00 00 00 68 48 12 00 0a e8 ab fe ff | .......hB..............hH....... |
0880 | ff 81 c4 04 00 00 00 68 4e 12 00 0a 68 00 00 00 00 50 e8 ac f8 ff ff 81 c4 0c 00 00 00 8f 05 38 | .......hN...h....P.............8 |
08a0 | 00 00 0a c3 ff 35 38 00 00 0a b8 44 00 00 0a 89 05 38 00 00 0a e8 0e 02 00 00 68 88 12 00 0a e8 | .....58....D.....8........h..... |
08c0 | c8 fc ff ff 81 c4 04 00 00 00 68 8e 12 00 0a 68 00 00 00 00 b8 44 00 00 0a ff 70 04 e8 62 f8 ff | ..........h....h.....D....p..b.. |
08e0 | ff 81 c4 0c 00 00 00 68 dd 12 00 0a e8 3b fe ff ff 81 c4 04 00 00 00 68 e3 12 00 0a 68 00 00 00 | .......h.....;.........h....h... |
0900 | 00 b8 44 00 00 0a ff 70 04 e8 35 f8 ff ff 81 c4 0c 00 00 00 8f 05 38 00 00 0a c3 55 89 e5 51 52 | ..D....p..5...........8....U..QR |
0920 | 53 56 57 8b 55 0c 8d 72 04 8b 02 8d 0c 06 8b 7d 08 8d 5f 0c 8b 07 8d 14 03 8b 47 04 8d 3c 03 39 | SVW.U..r.......}.._.......G..<.9 |
0940 | ce 73 1e b8 00 00 00 00 39 d7 73 2a 31 c0 31 db 8a 07 8a 1e 39 d8 b8 00 00 00 00 75 19 47 46 eb | .s......9.s*1.1.....9......u.GF. |
0960 | de 31 c0 8a 07 3d 0a 00 00 00 b8 01 00 00 00 74 05 b8 00 00 00 00 5f 5e 5b 5a 59 89 ec 5d c3 68 | .1...=.........t......_^[ZY..].h |
0980 | 1d 13 00 0a 68 58 00 00 0a e8 8d ff ff ff 81 c4 08 00 00 00 68 2a 13 00 0a 68 00 00 00 00 50 e8 | ....hX..............h*...h....P. |
09a0 | 9f f7 ff ff 81 c4 0c 00 00 00 c3 68 54 13 00 0a 68 58 00 00 0a e8 61 ff ff ff 81 c4 08 00 00 00 | ...........hT...hX....a......... |
09c0 | 68 58 13 00 0a 68 00 00 00 00 50 e8 73 f7 ff ff 81 c4 0c 00 00 00 c3 68 82 13 00 0a 68 58 00 00 | hX...h....P.s..........h....hX.. |
09e0 | 0a e8 35 ff ff ff 81 c4 08 00 00 00 68 88 13 00 0a 68 00 00 00 00 50 e8 47 f7 ff ff 81 c4 0c 00 | ..5.........h....h....P.G....... |
0a00 | 00 00 c3 68 b2 13 00 0a 68 58 00 00 0a e8 09 ff ff ff 81 c4 08 00 00 00 68 bb 13 00 0a 68 01 00 | ...h....hX..............h....h.. |
0a20 | 00 00 50 e8 1b f7 ff ff 81 c4 0c 00 00 00 c3 55 89 e5 50 51 52 53 8b 4d 08 8d 51 0c 8b 01 8d 1c | ..P............U..PQRS.M..Q..... |
0a40 | 02 8b 41 04 8d 0c 02 89 c2 39 d9 73 0f 42 31 c0 8a 01 3d 0a 00 00 00 74 03 41 eb ed 8b 4d 08 89 | ..A......9.s.B1...=....t.A...M.. |
0a60 | 51 04 5b 5a 59 58 89 ec 5d c3 68 6c 00 00 0a e8 bb ff ff ff 81 c4 04 00 00 00 68 e0 13 00 0a 68 | Q.[ZYX..].hl..............h....h |
0a80 | 00 00 00 00 b8 6c 00 00 0a 8b 40 04 50 e8 b1 f6 ff ff 81 c4 0c 00 00 00 c3 68 80 00 00 0a e8 8c | .....l....@.P............h...... |
0aa0 | ff ff ff 81 c4 04 00 00 00 68 01 14 00 0a 68 05 00 00 00 b8 80 00 00 0a 8b 40 04 50 e8 82 f6 ff | .........h....h..........@.P.... |
0ac0 | ff 81 c4 0c 00 00 00 c3 55 89 e5 ff 35 38 00 00 0a e8 3d fa ff ff 81 c4 04 00 00 00 89 ec 5d c3 | ........U...58....=...........]. |
0ae0 | 55 89 e5 51 8b 45 10 8b 08 8d 4c 08 04 51 8d 48 04 51 ff 75 0c ff 75 08 e8 0b 00 00 00 81 c4 10 | U..Q.E....L..Q.H.Q.u..u......... |
0b00 | 00 00 00 59 89 ec 5d c3 55 89 e5 51 52 53 56 57 b8 00 00 00 00 8b 7d 08 8b 55 0c 8b 75 10 8b 4d | ...Y..].U..QRSVW......}..U..u..M |
0b20 | 14 39 ce 73 0d 39 d7 73 12 8a 1e 88 1f 40 46 47 eb ef 5f 5e 5b 5a 59 89 ec 5d c3 68 23 14 00 0a | .9.s.9.s.....@FG.._^[ZY..].h#... |
0b40 | 68 02 00 00 00 e8 9b f5 ff ff 81 c4 08 00 00 00 bb 01 00 00 00 e8 1a f5 ff ff 55 89 e5 81 7d 0c | h.........................U...}. |
0b60 | 00 00 00 00 74 46 81 7d 08 00 00 00 08 73 13 ff 75 0c ff 75 08 e8 6b f5 ff ff 81 c4 08 00 00 00 | ....tF.}.....s..u..u..k......... |
0b80 | eb 2a 50 51 52 53 8b 4d 08 8b 11 8b 59 08 ff 75 0c 8d 5c 19 0c 53 8d 5c 11 0c 53 e8 40 ff ff ff | .*PQRS.M....Y..u..\..S.\..S.@... |
0ba0 | 81 c4 0c 00 00 00 01 01 5b 5a 59 58 89 ec 5d c3 68 94 00 00 0a e8 59 f9 ff ff 81 c4 04 00 00 00 | ........[ZYX..].h.....Y......... |
0bc0 | 68 37 14 00 0a 68 94 00 00 0a e8 8b ff ff ff 81 c4 08 00 00 00 68 3d 14 00 0a 68 41 62 00 00 b8 | h7...h...............h=...hAb... |
0be0 | 94 00 00 0a ff 70 0c e8 57 f5 ff ff 81 c4 0c 00 00 00 c3 68 94 00 00 0a e8 16 f9 ff ff 81 c4 04 | .....p..W..........h............ |
0c00 | 00 00 00 68 56 14 00 0a 68 94 00 00 0a e8 48 ff ff ff 81 c4 08 00 00 00 68 5b 14 00 0a 68 94 00 | ...hV...h.....H.........h[...h.. |
0c20 | 00 0a e8 33 ff ff ff 81 c4 08 00 00 00 68 60 14 00 0a 68 43 44 00 00 b8 94 00 00 0a ff 70 0c e8 | ...3.........h`...hCD........p.. |
0c40 | ff f4 ff ff 81 c4 0c 00 00 00 c3 55 89 e5 51 52 56 57 8b 75 08 8b 06 8d 54 06 0c 81 c6 0c 00 00 | ...........U..QRVW.u....T....... |
0c60 | 00 8b 7d 0c 39 07 75 1a 81 c7 04 00 00 00 31 c0 31 c9 39 d6 73 13 8a 06 8a 0f 39 c8 75 04 46 47 | ..}.9.u.......1.1.9.s.....9.u.FG |
0c80 | eb f0 b8 00 00 00 00 eb 05 b8 01 00 00 00 5f 5e 5a 59 89 ec 5d c3 55 89 e5 68 94 00 00 0a e8 70 | .............._^ZY..].U..h.....p |
0ca0 | f8 ff ff 81 c4 04 00 00 00 68 7a 14 00 0a 68 94 00 00 0a e8 a2 fe ff ff 81 c4 08 00 00 00 68 81 | .........hz...h...............h. |
0cc0 | 14 00 0a 68 94 00 00 0a e8 7e ff ff ff 81 c4 08 00 00 00 68 88 14 00 0a 68 01 00 00 00 50 e8 60 | ...h.....~.........h....h....P.` |
0ce0 | f4 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 94 00 00 0a e8 19 f8 ff ff 81 c4 04 00 00 00 | ...........].U..h............... |
0d00 | 68 a6 14 00 0a 68 94 00 00 0a e8 4b fe ff ff 81 c4 08 00 00 00 68 ad 14 00 0a 68 94 00 00 0a e8 | h....h.....K.........h....h..... |
0d20 | 27 ff ff ff 81 c4 08 00 00 00 68 b4 14 00 0a 68 00 00 00 00 50 e8 09 f4 ff ff 81 c4 0c 00 00 00 | '.........h....h....P........... |
0d40 | 89 ec 5d c3 55 89 e5 68 94 00 00 0a e8 c2 f7 ff ff 81 c4 04 00 00 00 68 d4 14 00 0a 68 94 00 00 | ..].U..h...............h....h... |
0d60 | 0a e8 f4 fd ff ff 81 c4 08 00 00 00 68 db 14 00 0a 68 94 00 00 0a e8 d0 fe ff ff 81 c4 08 00 00 | ............h....h.............. |
0d80 | 00 68 e3 14 00 0a 68 00 00 00 00 50 e8 b2 f3 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 50 ff | .h....h....P.............].U..P. |
0da0 | 75 0c ff 75 08 e8 a1 fe ff ff 81 c4 08 00 00 00 ff 75 10 68 01 00 00 00 50 e8 85 f3 ff ff 81 c4 | u..u.............u.h....P....... |
0dc0 | 0c 00 00 00 58 89 ec 5d c3 55 89 e5 51 52 56 57 8b 75 08 8b 4e 04 8b 7d 0c 31 d2 31 c0 31 db 3b | ....X..].U..QRVW.u..N..}.1.1.1.; |
0de0 | 0e 7d 1b 8a 44 0e 0c 3d 0a 00 00 00 74 10 3b 17 7d 1b 8a 5c 17 04 39 d8 75 13 41 42 eb e1 41 3b | .}..D..=....t.;.}..\..9.u.AB..A; |
0e00 | 17 7c 0a b8 01 00 00 00 89 4e 04 eb 05 b8 00 00 00 00 5f 5e 5a 59 89 ec 5d c3 55 89 e5 68 94 00 | .|.......N........_^ZY..].U..h.. |
0e20 | 00 0a e8 ec f6 ff ff 81 c4 04 00 00 00 68 0c 15 00 0a 68 94 00 00 0a e8 1e fd ff ff 81 c4 08 00 | .............h....h............. |
0e40 | 00 00 68 17 15 00 0a 68 94 00 00 0a e8 78 ff ff ff 81 c4 08 00 00 00 68 1e 15 00 0a 68 01 00 00 | ..h....h.....x.........h....h... |
0e60 | 00 50 e8 dc f2 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 94 00 00 0a e8 95 f6 ff ff 81 c4 | .P.............].U..h........... |
0e80 | 04 00 00 00 68 52 15 00 0a 68 94 00 00 0a e8 c7 fc ff ff 81 c4 08 00 00 00 68 5d 15 00 0a 68 94 | ....hR...h...............h]...h. |
0ea0 | 00 00 0a e8 21 ff ff ff 81 c4 08 00 00 00 68 64 15 00 0a 68 00 00 00 00 50 e8 85 f2 ff ff 81 c4 | ....!.........hd...h....P....... |
0ec0 | 0c 00 00 00 89 ec 5d c3 55 89 e5 68 94 00 00 0a e8 3e f6 ff ff 81 c4 04 00 00 00 68 9a 15 00 0a | ......].U..h.....>.........h.... |
0ee0 | 68 94 00 00 0a e8 70 fc ff ff 81 c4 08 00 00 00 68 a6 15 00 0a 68 94 00 00 0a e8 ca fe ff ff 81 | h.....p.........h....h.......... |
0f00 | c4 08 00 00 00 68 ad 15 00 0a 68 94 00 00 0a e8 b5 fe ff ff 81 c4 08 00 00 00 68 b4 15 00 0a 68 | .....h....h...............h....h |
0f20 | 01 00 00 00 50 e8 19 f2 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 94 00 00 0a e8 d2 f5 ff | ....P.............].U..h........ |
0f40 | ff 81 c4 04 00 00 00 68 e5 15 00 0a 68 94 00 00 0a e8 04 fc ff ff 81 c4 08 00 00 00 68 f0 15 00 | .......h....h...............h... |
0f60 | 0a 68 94 00 00 0a e8 5e fe ff ff 81 c4 08 00 00 00 68 f7 15 00 0a 68 94 00 00 0a e8 49 fe ff ff | .h.....^.........h....h.....I... |
0f80 | 81 c4 08 00 00 00 68 fe 15 00 0a 68 01 00 00 00 50 e8 ad f1 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 | ......h....h....P.............]. |
0fa0 | 55 89 e5 68 94 00 00 0a e8 66 f5 ff ff 81 c4 04 00 00 00 68 2f 16 00 0a 68 94 00 00 0a e8 07 fe | U..h.....f.........h/...h....... |
0fc0 | ff ff 81 c4 08 00 00 00 68 33 16 00 0a 68 01 00 00 00 50 e8 6b f1 ff ff 81 c4 0c 00 00 00 68 6d | ........h3...h....P.k.........hm |
0fe0 | 16 00 0a 68 94 00 00 0a e8 dc fd ff ff 81 c4 08 00 00 00 68 71 16 00 0a 68 01 00 00 00 50 e8 40 | ...h...............hq...h....P.@ |
1000 | f1 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 50 ff 75 0c ff 75 08 e8 ad fd ff ff 81 c4 08 00 | ...........].U..P.u..u.......... |
1020 | 00 00 ff 75 10 68 01 00 00 00 50 e8 13 f1 ff ff 81 c4 0c 00 00 00 58 89 ec 5d c3 55 89 e5 50 51 | ...u.h....P...........X..].U..PQ |
1040 | 8b 45 0c f7 d8 8d 44 05 0c 8b 4d 08 89 01 c7 41 04 00 00 00 00 59 58 89 ec 5d c3 8b 44 24 04 3d | .E....D...M....A.....YX..]..D$.= |
1060 | 00 00 00 00 74 13 81 38 00 00 00 00 74 0b 8b 4c 24 08 41 89 48 04 8b 20 c3 8b 5c 24 08 e8 f2 ef | ....t..8....t..L$.A.H.....\$.... |
1080 | ff ff c3 55 89 e5 68 00 00 00 00 68 00 00 00 00 89 e0 68 04 00 00 00 50 e8 9e ff ff ff 81 c4 08 | ...U..h....h......h....P........ |
10a0 | 00 00 00 50 e8 21 00 00 00 58 68 ad 16 00 0a 68 02 00 00 00 ff 70 04 e8 87 f0 ff ff 81 c4 0c 00 | ...P.!...Xh....h.....p.......... |
10c0 | 00 00 81 c4 08 00 00 00 5d c3 55 89 e5 ff 75 08 e8 24 00 00 00 81 c4 04 00 00 00 68 d4 16 00 0a | ........].U...u..$.........h.... |
10e0 | 68 00 00 00 00 68 01 00 00 00 e8 54 f0 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 01 00 00 | h....h.....T...........].U..h... |
1100 | 00 ff 75 08 e8 52 ff ff ff 89 ec 5d c3 55 89 e5 81 7d 08 00 00 00 08 73 13 ff 75 0c ff 75 08 e8 | ..u..R.....].U...}.....s..u..u.. |
1120 | 9f 00 00 00 81 c4 08 00 00 00 eb 38 56 57 8b 75 08 8b 7d 0c 8b 06 8d 44 06 0c 50 8b 46 04 8d 44 | ...........8VW.u..}....D..P.F..D |
1140 | 06 0c 50 8b 47 08 8d 44 07 0c 50 8b 07 8d 44 07 0c 50 e8 39 00 00 00 81 c4 10 00 00 00 01 07 01 | ..P.G..D..P...D..P.9............ |
1160 | 46 04 5f 5e 89 ec 5d c3 55 89 e5 51 8b 45 10 8b 08 8d 4c 08 04 51 8d 48 04 51 ff 75 0c ff 75 08 | F._^..].U..Q.E....L..Q.H.Q.u..u. |
1180 | e8 0b 00 00 00 81 c4 10 00 00 00 59 89 ec 5d c3 55 89 e5 51 52 53 56 57 b8 00 00 00 00 8b 7d 08 | ...........Y..].U..QRSVW......}. |
11a0 | 8b 55 0c 8b 75 10 8b 4d 14 39 ce 73 0d 39 d7 73 09 8a 1e 88 1f 40 46 47 eb ef 5f 5e 5b 5a 59 89 | .U..u..M.9.s.9.s.....@FG.._^[ZY. |
11c0 | ec 5d c3 55 89 e5 51 52 53 56 8b 75 0c 8b 06 8b 56 08 8b 5d 08 8d 4c 06 0c 29 c2 e8 9b ee ff ff | .].U..QRSV.u....V..]..L..)...... |
11e0 | 01 06 5e 5b 5a 59 89 ec 5d c3 68 94 00 00 0a e8 1f f3 ff ff 81 c4 04 00 00 00 68 b0 00 00 0a e8 | ..^[ZY..].h...............h..... |
1200 | 0f f3 ff ff 81 c4 04 00 00 00 68 fb 16 00 0a 68 94 00 00 0a e8 41 f9 ff ff 81 c4 08 00 00 00 68 | ..........h....h.....A.........h |
1220 | b0 00 00 0a 68 94 00 00 0a e8 df fe ff ff 81 c4 08 00 00 00 68 01 17 00 0a 68 02 00 00 00 50 e8 | ....h...............h....h....P. |
1240 | ff ee ff ff 81 c4 0c 00 00 00 68 27 17 00 0a 68 3f 17 00 0a 68 b0 00 00 0a e8 3d fb ff ff 81 c4 | ..........h'...h?...h.....=..... |
1260 | 0c 00 00 00 c3 68 94 00 00 0a e8 a4 f2 ff ff 81 c4 04 00 00 00 68 b0 00 00 0a e8 94 f2 ff ff 81 | .....h...............h.......... |
1280 | c4 04 00 00 00 68 45 17 00 0a 68 94 00 00 0a e8 c6 f8 ff ff 81 c4 08 00 00 00 68 b0 00 00 0a 68 | .....hE...h...............h....h |
12a0 | 94 00 00 0a e8 64 fe ff ff 81 c4 08 00 00 00 68 4a 17 00 0a 68 94 00 00 0a e8 9c f8 ff ff 81 c4 | .....d.........hJ...h........... |
12c0 | 08 00 00 00 68 b0 00 00 0a 68 94 00 00 0a e8 3a fe ff ff 81 c4 08 00 00 00 68 4f 17 00 0a 68 6c | ....h....h.....:.........hO...hl |
12e0 | 17 00 0a 68 b0 00 00 0a e8 ae fa ff ff 81 c4 0c 00 00 00 c3 68 94 00 00 0a e8 15 f2 ff ff 81 c4 | ...h................h........... |
1300 | 04 00 00 00 68 b0 00 00 0a e8 05 f2 ff ff 81 c4 04 00 00 00 68 72 17 00 0a 68 94 00 00 0a e8 37 | ....h...............hr...h.....7 |
1320 | f8 ff ff 81 c4 08 00 00 00 68 b0 00 00 0a 68 94 00 00 0a e8 d5 fd ff ff 81 c4 08 00 00 00 68 b0 | .........h....h...............h. |
1340 | 00 00 0a 68 94 00 00 0a e8 c0 fd ff ff 81 c4 08 00 00 00 68 78 17 00 0a 68 00 00 00 00 50 e8 e0 | ...h...............hx...h....P.. |
1360 | ed ff ff 81 c4 0c 00 00 00 c3 55 89 e5 51 56 8b 75 08 8b 4e 08 3b 4e 04 7c 2d 8d 46 04 50 e8 90 | ..........U..QV.u..N.;N.|-.F.P.. |
1380 | f1 ff ff 81 c4 04 00 00 00 31 c9 50 ff 36 e8 7a fd ff ff 81 c4 08 00 00 00 3d 00 00 00 00 75 07 | .........1.P.6.z.........=....u. |
13a0 | b8 ff ff ff ff eb 09 31 c0 8a 44 0e 10 ff 46 08 5e 59 89 ec 5d c3 68 94 00 00 0a e8 53 f1 ff ff | .......1..D...F.^Y..].h.....S... |
13c0 | 81 c4 04 00 00 00 68 e0 00 00 0a e8 43 f1 ff ff 81 c4 04 00 00 00 68 a2 17 00 0a 68 94 00 00 0a | ......h.....C.........h....h.... |
13e0 | e8 75 f7 ff ff 81 c4 08 00 00 00 68 dc 00 00 0a e8 75 ff ff ff 81 c4 04 00 00 00 68 a8 17 00 0a | .u.........h.....u.........h.... |
1400 | 68 41 00 00 00 50 e8 38 ed ff ff 81 c4 0c 00 00 00 c3 68 94 00 00 0a e8 f7 f0 ff ff 81 c4 04 00 | hA...P.8..........h............. |
1420 | 00 00 68 e0 00 00 0a e8 e7 f0 ff ff 81 c4 04 00 00 00 68 ce 17 00 0a 68 94 00 00 0a e8 19 f7 ff | ..h...............h....h........ |
1440 | ff 81 c4 08 00 00 00 68 dc 00 00 0a e8 19 ff ff ff 81 c4 04 00 00 00 68 dc 00 00 0a e8 09 ff ff | .......h...............h........ |
1460 | ff 81 c4 04 00 00 00 68 d4 17 00 0a 68 62 00 00 00 50 e8 cc ec ff ff 81 c4 0c 00 00 00 c3 68 94 | .......h....hb...P............h. |
1480 | 00 00 0a e8 8b f0 ff ff 81 c4 04 00 00 00 68 e0 00 00 0a e8 7b f0 ff ff 81 c4 04 00 00 00 68 dc | ..............h.....{.........h. |
14a0 | 00 00 0a e8 c2 fe ff ff 81 c4 04 00 00 00 68 fc 17 00 0a 68 ff ff ff ff 50 e8 85 ec ff ff 81 c4 | ..............h....h....P....... |
14c0 | 0c 00 00 00 c3 68 94 00 00 0a e8 44 f0 ff ff 81 c4 04 00 00 00 68 e0 00 00 0a e8 34 f0 ff ff 81 | .....h.....D.........h.....4.... |
14e0 | c4 04 00 00 00 68 27 18 00 0a 68 94 00 00 0a e8 66 f6 ff ff 81 c4 08 00 00 00 b8 dc 00 00 0a c7 | .....h'...h.....f............... |
1500 | 40 08 06 00 00 00 68 dc 00 00 0a e8 5a fe ff ff 81 c4 04 00 00 00 68 33 18 00 0a 68 41 00 00 00 | @.....h.....Z.........h3...hA... |
1520 | 50 e8 1d ec ff ff 81 c4 0c 00 00 00 c3 55 89 e5 51 56 8b 75 08 8b 4e 04 3b 0e 0f 8d 0f 00 00 00 | P............U..QV.u..N.;....... |
1540 | 31 c0 8a 44 0e 0c ff 46 04 5e 59 89 ec 5d c3 68 61 18 00 0a 68 02 00 00 00 e8 87 eb ff ff 81 c4 | 1..D...F.^Y..].ha...h........... |
1560 | 08 00 00 00 bb 01 00 00 00 e8 06 eb ff ff 55 89 e5 81 7d 08 00 00 00 08 73 13 ff 75 0c ff 75 08 | ..............U...}.....s..u..u. |
1580 | e8 46 00 00 00 81 c4 08 00 00 00 eb 3a 50 56 57 8b 7d 08 8b 75 0c 8b 06 8d 44 06 0c 50 8b 46 04 | .F..........:PVW.}..u....D..P.F. |
15a0 | 8d 44 06 0c 50 8b 47 08 8d 44 07 0c 50 8b 07 8d 44 07 0c 50 e8 4f f5 ff ff 81 c4 10 00 00 00 01 | .D..P.G..D..P...D..P.O.......... |
15c0 | 07 01 46 04 5f 5e 58 89 ec 5d c3 55 89 e5 50 51 52 53 56 57 8b 75 0c 8b 7e 04 8b 16 8b 5d 08 8d | ..F._^X..].U..PQRSVW.u..~....].. |
15e0 | 4c 3e 0c 29 fa e8 99 ea ff ff 3d 00 00 00 00 0f 8c 0d 00 00 00 01 46 04 5f 5e 5b 5a 59 58 89 ec | L>.)......=...........F._^[ZYX.. |
1600 | 5d c3 68 7d 18 00 0a 68 02 00 00 00 e8 d4 ea ff ff 81 c4 08 00 00 00 bb 01 00 00 00 e8 53 ea ff | ].h}...h.....................S.. |
1620 | ff 68 94 00 00 0a e8 e8 ee ff ff 81 c4 04 00 00 00 68 14 05 00 0a e8 d8 ee ff ff 81 c4 04 00 00 | .h...............h.............. |
1640 | 00 68 a8 18 00 0a 68 14 05 00 0a e8 0a f5 ff ff 81 c4 08 00 00 00 68 14 05 00 0a 68 94 00 00 0a | .h....h...............h....h.... |
1660 | e8 09 ff ff ff 81 c4 08 00 00 00 68 ae 18 00 0a 68 ce 18 00 0a 68 94 00 00 0a e8 1c f7 ff ff 81 | ...........h....h....h.......... |
1680 | c4 0c 00 00 00 c3 68 94 00 00 0a e8 83 ee ff ff 81 c4 04 00 00 00 68 14 05 00 0a e8 73 ee ff ff | ......h...............h.....s... |
16a0 | 81 c4 04 00 00 00 68 d4 18 00 0a 68 14 05 00 0a e8 a5 f4 ff ff 81 c4 08 00 00 00 68 14 05 00 0a | ......h....h...............h.... |
16c0 | 68 94 00 00 0a e8 a4 fe ff ff 81 c4 08 00 00 00 68 d9 18 00 0a 68 14 05 00 0a e8 7b f4 ff ff 81 | h...............h....h.....{.... |
16e0 | c4 08 00 00 00 68 14 05 00 0a 68 94 00 00 0a e8 7a fe ff ff 81 c4 08 00 00 00 68 de 18 00 0a 68 | .....h....h.....z.........h....h |
1700 | ff 18 00 0a 68 94 00 00 0a e8 8d f6 ff ff 81 c4 0c 00 00 00 c3 55 89 e5 68 05 19 00 0a ff 75 0c | ....h................U..h.....u. |
1720 | e8 35 f4 ff ff 81 c4 08 00 00 00 ff 75 10 ff 75 0c e8 24 f4 ff ff 81 c4 08 00 00 00 68 08 00 00 | .5..........u..u..$.........h... |
1740 | 0a ff 75 0c e8 11 f4 ff ff 81 c4 08 00 00 00 68 01 00 00 00 ff 75 08 e8 ff f8 ff ff 89 ec 5d c3 | ..u............h.....u........]. |
1760 | 55 89 e5 51 57 8b 7d 08 8b 4f 04 3b 4f 0c 7c 1d 57 e8 29 00 00 00 81 c4 04 00 00 00 8d 47 04 50 | U..QW.}..O.;O.|.W.)..........G.P |
1780 | e8 8e ed ff ff 81 c4 04 00 00 00 31 c9 31 c0 8a 45 0c 88 44 0f 10 ff 47 04 5f 59 89 ec 5d c3 55 | ...........1.1..E..D...G._Y..].U |
17a0 | 89 e5 50 51 8b 45 08 8d 48 04 51 ff 30 e8 bc fd ff ff 81 c4 08 00 00 00 59 58 89 ec 5d c3 68 94 | ..PQ.E..H.Q.0...........YX..].h. |
17c0 | 00 00 0a e8 4b ed ff ff 81 c4 04 00 00 00 68 e0 00 00 0a e8 3b ed ff ff 81 c4 04 00 00 00 68 41 | ....K.........h.....;.........hA |
17e0 | 00 00 00 68 dc 00 00 0a e8 73 ff ff ff 81 c4 08 00 00 00 68 dc 00 00 0a e8 a2 ff ff ff 81 c4 04 | ...h.....s.........h............ |
1800 | 00 00 00 68 10 19 00 0a 68 37 19 00 0a 68 94 00 00 0a e8 84 f5 ff ff 81 c4 0c 00 00 00 c3 68 94 | ...h....h7...h................h. |
1820 | 00 00 0a e8 eb ec ff ff 81 c4 04 00 00 00 68 e0 00 00 0a e8 db ec ff ff 81 c4 04 00 00 00 68 3c | ..............h...............h< |
1840 | 19 00 0a 68 e0 00 00 0a e8 0d f3 ff ff 81 c4 08 00 00 00 68 67 00 00 00 68 dc 00 00 0a e8 fe fe | ...h...............hg...h....... |
1860 | ff ff 81 c4 08 00 00 00 68 dc 00 00 0a e8 2d ff ff ff 81 c4 04 00 00 00 68 46 19 00 0a 68 77 19 | ........h.....-.........hF...hw. |
1880 | 00 0a 68 94 00 00 0a e8 0f f5 ff ff 81 c4 0c 00 00 00 c3 55 89 e5 51 57 8b 7d 08 8b 0f 3b 4f 08 | ..h................U..QW.}...;O. |
18a0 | 7d 11 31 c0 8a 45 0c 88 44 0f 0c ff 07 5f 59 89 ec 5d c3 68 82 19 00 0a 68 02 00 00 00 e8 23 e8 | }.1..E..D...._Y..].h....h.....#. |
18c0 | ff ff 81 c4 08 00 00 00 bb 01 00 00 00 e8 a2 e7 ff ff 68 94 00 00 0a e8 37 ec ff ff 81 c4 04 00 | ..................h.....7....... |
18e0 | 00 00 68 41 00 00 00 68 94 00 00 0a e8 a2 ff ff ff 81 c4 08 00 00 00 68 a0 19 00 0a 68 bf 19 00 | ..hA...h...............h....h... |
1900 | 0a 68 94 00 00 0a e8 90 f4 ff ff 81 c4 0c 00 00 00 c3 55 89 e5 50 51 52 53 56 57 8b 45 0c 8d 70 | .h................U..PQRSVW.E..p |
1920 | 04 8b 08 8d 0c 0e 8b 7d 08 8b 57 0c 8b 5f 04 39 ce 73 30 39 d3 7c 20 89 5f 04 57 e8 5f fe ff ff | .......}..W.._.9.s09.|.._.W._... |
1940 | 81 c4 04 00 00 00 8d 47 04 50 e8 c4 eb ff ff 81 c4 04 00 00 00 31 db 31 c0 8a 06 88 44 1f 10 43 | .......G.P...........1.1....D..C |
1960 | 46 eb cc 89 5f 04 5f 5e 5b 5a 59 58 89 ec 5d c3 68 94 00 00 0a e8 99 eb ff ff 81 c4 04 00 00 00 | F..._._^[ZYX..].h............... |
1980 | 68 e0 00 00 0a e8 89 eb ff ff 81 c4 04 00 00 00 68 c4 19 00 0a 68 dc 00 00 0a e8 73 ff ff ff 81 | h...............h....h.....s.... |
19a0 | c4 08 00 00 00 68 dc 00 00 0a e8 f0 fd ff ff 81 c4 04 00 00 00 68 cb 19 00 0a 68 ed 19 00 0a 68 | .....h...............h....h....h |
19c0 | 94 00 00 0a e8 d2 f3 ff ff 81 c4 0c 00 00 00 c3 68 94 00 00 0a e8 39 eb ff ff 81 c4 04 00 00 00 | ................h.....9......... |
19e0 | 68 e0 00 00 0a e8 29 eb ff ff 81 c4 04 00 00 00 68 f4 19 00 0a 68 dc 00 00 0a e8 13 ff ff ff 81 | h.....).........h....h.......... |
1a00 | c4 08 00 00 00 68 ff 19 00 0a 68 06 00 00 00 b8 94 00 00 0a ff 30 e8 28 e7 ff ff 81 c4 0c 00 00 | .....h....h..........0.(........ |
1a20 | 00 68 40 1a 00 0a 68 01 00 00 00 b8 dc 00 00 0a ff 70 04 e8 0b e7 ff ff 81 c4 0c 00 00 00 c3 3d | .h@...h..........p.............= |
1a40 | 09 00 00 00 7f 06 05 30 00 00 00 c3 05 57 00 00 00 c3 55 89 e5 50 8b 45 0c c1 e8 04 25 0f 00 00 | .......0.....W....U..P.E....%... |
1a60 | 00 e8 d9 ff ff ff 50 ff 75 08 e8 24 fe ff ff 81 c4 08 00 00 00 8b 45 0c 25 0f 00 00 00 e8 bd ff | ......P.u..$..........E.%....... |
1a80 | ff ff 50 ff 75 08 e8 08 fe ff ff 81 c4 08 00 00 00 58 89 ec 5d c3 68 94 00 00 0a e8 73 ea ff ff | ..P.u............X..].h.....s... |
1aa0 | 81 c4 04 00 00 00 68 0a 00 00 00 68 94 00 00 0a e8 9d ff ff ff 81 c4 08 00 00 00 68 84 1a 00 0a | ......h....h...............h.... |
1ac0 | 68 a0 1a 00 0a 68 94 00 00 0a e8 cc f2 ff ff 81 c4 0c 00 00 00 c3 55 89 e5 50 8b 45 0c c1 e8 04 | h....h................U..P.E.... |
1ae0 | 25 0f 00 00 00 e8 55 ff ff ff 50 ff 75 08 e8 6d fc ff ff 81 c4 08 00 00 00 8b 45 0c 25 0f 00 00 | %.....U...P.u..m..........E.%... |
1b00 | 00 e8 39 ff ff ff 50 ff 75 08 e8 51 fc ff ff 81 c4 08 00 00 00 58 89 ec 5d c3 68 94 00 00 0a e8 | ..9...P.u..Q.........X..].h..... |
1b20 | ef e9 ff ff 81 c4 04 00 00 00 68 e0 00 00 0a e8 df e9 ff ff 81 c4 04 00 00 00 68 0a 00 00 00 68 | ..........h...............h....h |
1b40 | dc 00 00 0a e8 8d ff ff ff 81 c4 08 00 00 00 68 dc 00 00 0a e8 46 fc ff ff 81 c4 04 00 00 00 68 | ...............h.....F.........h |
1b60 | a6 1a 00 0a 68 ca 1a 00 0a 68 94 00 00 0a e8 28 f2 ff ff 81 c4 0c 00 00 00 c3 55 89 e5 68 d0 1a | ....h....h.....(..........U..h.. |
1b80 | 00 0a ff 75 08 e8 d0 ef ff ff 81 c4 08 00 00 00 68 20 00 00 00 ff 75 0c ff 75 08 e8 0a 00 00 00 | ...u............h.....u..u...... |
1ba0 | 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 50 51 8b 4d 10 81 e9 04 00 00 00 81 f9 00 00 00 00 7c 26 | ........].U..PQ.M.............|& |
1bc0 | 8b 45 0c d3 e8 25 0f 00 00 00 e8 70 fe ff ff 50 ff 75 08 e8 bb fc ff ff 81 c4 08 00 00 00 81 e9 | .E...%.....p...P.u.............. |
1be0 | 04 00 00 00 eb d2 59 58 89 ec 5d c3 68 94 00 00 0a e8 1d e9 ff ff 81 c4 04 00 00 00 68 aa 99 88 | ......YX..].h...............h... |
1c00 | 00 68 94 00 00 0a e8 6f ff ff ff 81 c4 08 00 00 00 68 d6 1a 00 0a 68 f2 1a 00 0a 68 94 00 00 0a | .h.....o.........h....h....h.... |
1c20 | e8 76 f1 ff ff 81 c4 0c 00 00 00 c3 55 89 e5 68 00 1b 00 0a ff 75 08 e8 d6 fc ff ff 81 c4 08 00 | .v..........U..h.....u.......... |
1c40 | 00 00 68 20 00 00 00 ff 75 0c ff 75 08 e8 0a 00 00 00 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 50 | ..h.....u..u..............].U..P |
1c60 | 51 8b 4d 10 81 e9 04 00 00 00 81 f9 00 00 00 00 7c 26 8b 45 0c d3 e8 25 0f 00 00 00 e8 be fd ff | Q.M.............|&.E...%........ |
1c80 | ff 50 ff 75 08 e8 d6 fa ff ff 81 c4 08 00 00 00 81 e9 04 00 00 00 eb d2 59 58 89 ec 5d c3 68 94 | .P.u....................YX..].h. |
1ca0 | 00 00 0a e8 6b e8 ff ff 81 c4 04 00 00 00 68 e0 00 00 0a e8 5b e8 ff ff 81 c4 04 00 00 00 68 aa | ....k.........h.....[.........h. |
1cc0 | 99 88 00 68 dc 00 00 0a e8 5f ff ff ff 81 c4 08 00 00 00 68 dc 00 00 0a e8 c2 fa ff ff 81 c4 04 | ...h....._.........h............ |
1ce0 | 00 00 00 68 06 1b 00 0a 68 2b 1b 00 0a 68 94 00 00 0a e8 a4 f0 ff ff 81 c4 0c 00 00 00 c3 55 89 | ...h....h+...h................U. |
1d00 | e5 51 52 53 8b 4d 08 8b 51 04 8b 09 b8 00 00 00 00 39 d1 73 4c 31 db 8a 19 81 fb 2d 00 00 00 75 | .QRS.M..Q........9.sL1.....-...u |
1d20 | 01 41 31 db 8a 19 81 fb 30 00 00 00 75 12 41 39 d1 73 29 31 db 8a 19 81 fb 78 00 00 00 75 01 41 | .A1.....0...u.A9.s)1.....x...u.A |
1d40 | 39 d1 73 18 8a 01 50 e8 11 04 00 00 81 c4 04 00 00 00 3d 00 00 00 00 74 08 41 eb e4 b8 01 00 00 | 9.s...P...........=....t.A...... |
1d60 | 00 5b 5a 59 89 ec 5d c3 55 89 e5 b8 39 1b 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 51 | .[ZY..].U...9......L.......QP..Q |
1d80 | e8 79 ff ff ff 81 c4 04 00 00 00 68 3f 1b 00 0a 68 01 00 00 00 50 e8 a8 e3 ff ff 81 c4 0c 00 00 | .y.........h?...h....P.......... |
1da0 | 00 89 ec 5d c3 55 89 e5 b8 56 1b 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 51 e8 3c ff | ...].U...V......L.......QP..Q.<. |
1dc0 | ff ff 81 c4 04 00 00 00 68 5d 1b 00 0a 68 01 00 00 00 50 e8 6b e3 ff ff 81 c4 0c 00 00 00 89 ec | ........h]...h....P.k........... |
1de0 | 5d c3 55 89 e5 b8 84 1b 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 51 e8 ff fe ff ff 81 | ].U..........L.......QP..Q...... |
1e00 | c4 04 00 00 00 68 8b 1b 00 0a 68 00 00 00 00 50 e8 2e e3 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 | .....h....h....P.............].U |
1e20 | 89 e5 b8 b5 1b 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 51 e8 c2 fe ff ff 81 c4 04 00 | ..........L.......QP..Q......... |
1e40 | 00 00 68 bc 1b 00 0a 68 00 00 00 00 50 e8 f1 e2 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 | ..h....h....P.............].U..h |
1e60 | 00 00 00 00 68 00 00 00 00 89 e1 51 e8 8d fe ff ff 81 c4 04 00 00 00 68 e5 1b 00 0a 68 00 00 00 | ....h......Q...........h....h... |
1e80 | 00 50 e8 bc e2 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 02 1c 00 0a 8b 08 8d 4c 08 04 05 | .P.............].U..........L... |
1ea0 | 04 00 00 00 51 50 89 e1 51 e8 50 fe ff ff 81 c4 04 00 00 00 68 0a 1c 00 0a 68 01 00 00 00 50 e8 | ....QP..Q.P.........h....h....P. |
1ec0 | 7f e2 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 33 1c 00 0a 8b 08 8d 4c 08 04 05 04 00 00 | ............].U...3......L...... |
1ee0 | 00 51 50 89 e1 51 e8 13 fe ff ff 81 c4 04 00 00 00 68 3b 1c 00 0a 68 01 00 00 00 50 e8 42 e2 ff | .QP..Q...........h;...h....P.B.. |
1f00 | ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 63 1c 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 | .........].U...c......L.......QP |
1f20 | 89 e1 51 e8 d6 fd ff ff 81 c4 04 00 00 00 68 6c 1c 00 0a 68 01 00 00 00 50 e8 05 e2 ff ff 81 c4 | ..Q...........hl...h....P....... |
1f40 | 0c 00 00 00 89 ec 5d c3 55 89 e5 51 52 8b 45 08 8d 48 04 8b 10 8d 54 10 04 52 51 e8 2c 00 00 00 | ......].U..QR.E..H....T..RQ.,... |
1f60 | 81 c4 08 00 00 00 5a 59 89 ec 5d c3 55 89 e5 51 52 8b 4d 08 8b 51 04 8b 09 52 51 e8 0c 00 00 00 | ......ZY..].U..QR.M..Q...RQ..... |
1f80 | 81 c4 08 00 00 00 5a 59 89 ec 5d c3 55 89 e5 51 52 53 56 8b 4d 08 8b 55 0c 31 db 31 f6 31 c0 8a | ......ZY..].U..QRSV.M..U.1.1.1.. |
1fa0 | 01 3d 2d 00 00 00 75 06 41 be 01 00 00 00 8a 01 3d 30 00 00 00 75 11 41 39 d1 73 29 31 c0 8a 01 | .=-...u.A.......=0...u.A9.s)1... |
1fc0 | 3d 78 00 00 00 75 01 41 39 d1 73 0f 8a 01 e8 d6 02 00 00 c1 e3 04 01 c3 41 eb ed 81 fe 00 00 00 | =x...u.A9.s.............A....... |
1fe0 | 00 74 02 f7 db 89 d8 5e 5b 5a 59 89 ec 5d c3 55 89 e5 b8 9e 1c 00 0a 8b 08 8d 4c 08 04 05 04 00 | .t.....^[ZY..].U..........L..... |
2000 | 00 00 51 50 89 e1 51 e8 60 ff ff ff 81 c4 04 00 00 00 68 a3 1c 00 0a 68 0a 00 00 00 50 e8 21 e1 | ..QP..Q.`.........h....h....P.!. |
2020 | ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 d5 1c 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 | ..........].U..........L.......Q |
2040 | 50 89 e1 51 e8 23 ff ff ff 81 c4 04 00 00 00 68 dc 1c 00 0a 68 4a 03 00 00 50 e8 e4 e0 ff ff 81 | P..Q.#.........h....hJ...P...... |
2060 | c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 0d 1d 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 | .......].U..........L.......QP.. |
2080 | 51 e8 e6 fe ff ff 81 c4 04 00 00 00 68 15 1d 00 0a 68 34 00 00 00 50 e8 a7 e0 ff ff 81 c4 0c 00 | Q...........h....h4...P......... |
20a0 | 00 00 89 ec 5d c3 55 89 e5 b8 44 1d 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 51 e8 a9 | ....].U...D......L.......QP..Q.. |
20c0 | fe ff ff 81 c4 04 00 00 00 68 49 1d 00 0a 68 00 00 00 00 50 e8 6a e0 ff ff 81 c4 0c 00 00 00 89 | .........hI...h....P.j.......... |
20e0 | ec 5d c3 55 89 e5 b8 73 1d 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 51 e8 6c fe ff ff | .].U...s......L.......QP..Q.l... |
2100 | 81 c4 04 00 00 00 68 79 1d 00 0a 68 03 00 00 00 50 e8 2d e0 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 | ......hy...h....P.-...........]. |
2120 | 55 89 e5 b8 a7 1d 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 51 e8 2f fe ff ff 81 c4 04 | U..........L.......QP..Q./...... |
2140 | 00 00 00 68 ae 1d 00 0a 68 fd ff ff ff 50 e8 f0 df ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 | ...h....h....P.............].U.. |
2160 | 51 8b 4d 08 81 f9 30 00 00 00 7c 1d 81 f9 39 00 00 00 7e 1c 25 5f 00 00 00 81 f9 66 00 00 00 7f | Q.M...0...|...9...~.%_.....f.... |
2180 | 08 81 f9 61 00 00 00 7d 07 b8 00 00 00 00 eb 05 b8 01 00 00 00 59 89 ec 5d c3 68 2f 00 00 00 e8 | ...a...}.............Y..].h/.... |
21a0 | b9 ff ff ff 81 c4 04 00 00 00 68 dc 1d 00 0a 68 00 00 00 00 50 e8 89 df ff ff 81 c4 0c 00 00 00 | ..........h....h....P........... |
21c0 | c3 68 30 00 00 00 e8 92 ff ff ff 81 c4 04 00 00 00 68 f4 1d 00 0a 68 01 00 00 00 50 e8 62 df ff | .h0..............h....h....P.b.. |
21e0 | ff 81 c4 0c 00 00 00 68 39 00 00 00 e8 6c ff ff ff 81 c4 04 00 00 00 68 09 1e 00 0a 68 01 00 00 | .......h9....l.........h....h... |
2200 | 00 50 e8 3c df ff ff 81 c4 0c 00 00 00 c3 68 3a 00 00 00 e8 45 ff ff ff 81 c4 04 00 00 00 68 1e | .P.<..........h:....E.........h. |
2220 | 1e 00 0a 68 00 00 00 00 50 e8 15 df ff ff 81 c4 0c 00 00 00 c3 68 61 00 00 00 e8 1e ff ff ff 81 | ...h....P............ha......... |
2240 | c4 04 00 00 00 68 3b 1e 00 0a 68 01 00 00 00 50 e8 ee de ff ff 81 c4 0c 00 00 00 68 66 00 00 00 | .....h;...h....P...........hf... |
2260 | e8 f8 fe ff ff 81 c4 04 00 00 00 68 50 1e 00 0a 68 01 00 00 00 50 e8 c8 de ff ff 81 c4 0c 00 00 | ...........hP...h....P.......... |
2280 | 00 c3 68 67 00 00 00 e8 d1 fe ff ff 81 c4 04 00 00 00 68 65 1e 00 0a 68 00 00 00 00 50 e8 a1 de | ..hg..............he...h....P... |
22a0 | ff ff 81 c4 0c 00 00 00 c3 3d 30 00 00 00 7c 21 3d 66 00 00 00 7f 1a 3d 39 00 00 00 7f 06 2d 30 | .........=0...|!=f.....=9.....-0 |
22c0 | 00 00 00 c3 3d 61 00 00 00 7c 06 2d 57 00 00 00 c3 68 7d 1e 00 0a 68 02 00 00 00 e8 05 de ff ff | ....=a...|.-W....h}...h......... |
22e0 | 81 c4 08 00 00 00 50 68 88 0e 00 0a e8 22 e2 ff ff 81 c4 04 00 00 00 58 50 68 84 0e 00 0a e8 29 | ......Ph.....".........XPh.....) |
2300 | f9 ff ff 81 c4 08 00 00 00 68 84 0e 00 0a e8 8c f4 ff ff 81 c4 04 00 00 00 68 08 00 00 0a 68 02 | .........h...............h....h. |
2320 | 00 00 00 e8 bd dd ff ff 81 c4 08 00 00 00 bb 01 00 00 00 e8 3c dd ff ff 55 89 e5 68 93 1e 00 0a | ....................<...U..h.... |
2340 | ff 75 0c e8 ca f5 ff ff 81 c4 08 00 00 00 ff 75 10 ff 75 0c e8 b9 f5 ff ff 81 c4 08 00 00 00 68 | .u.............u..u............h |
2360 | 9e 1e 00 0a ff 75 0c e8 a6 f5 ff ff 81 c4 08 00 00 00 ff 75 14 ff 75 0c e8 59 f7 ff ff 81 c4 08 | .....u.............u..u..Y...... |
2380 | 00 00 00 68 08 00 00 0a ff 75 0c e8 82 f5 ff ff 81 c4 08 00 00 00 ff 75 0c e8 01 f4 ff ff 81 c4 | ...h.....u.............u........ |
23a0 | 04 00 00 00 68 01 00 00 00 ff 75 08 e8 aa ec ff ff 89 ec 5d c3 68 a0 0e 00 0a ff 35 a8 0e 00 0a | ....h.....u........].h.....5.... |
23c0 | e8 a9 df ff ff 81 c4 08 00 00 00 e8 af 67 00 00 8b 1d 0d 00 00 0a e8 99 dc ff ff 55 89 e5 50 ff | .............g.............U..P. |
23e0 | 75 10 ff 75 0c ff 75 08 e8 25 00 00 00 81 c4 0c 00 00 00 8b 45 10 8b 40 04 05 04 00 00 00 ff 75 | u..u..u..%..........E..@.......u |
2400 | 0c 50 e8 cf 05 00 00 81 c4 08 00 00 00 58 89 ec 5d c3 55 89 e5 50 51 52 53 56 57 8b 4d 08 8b 55 | .P...........X..].U..PQRSVW.M..U |
2420 | 10 8b 5d 0c 8b 05 ac 0e 00 0a 89 02 8b 01 89 42 04 8b 7a 04 8b 35 ac 0e 00 0a 89 37 ff 05 ac 0e | ..]............B..z..5.....7.... |
2440 | 00 0a 8d 44 18 04 3b 41 04 73 0c 89 01 5f 5e 5b 5a 59 58 89 ec 5d c3 68 a4 1e 00 0a 68 02 00 00 | ...D..;A.s..._^[ZYX..].h....h... |
2460 | 00 e8 7f dc ff ff 81 c4 08 00 00 00 bb 01 00 00 00 e8 fe db ff ff 55 89 e5 68 00 00 00 00 68 00 | ......................U..h....h. |
2480 | 00 00 00 89 e1 51 68 00 02 00 00 e8 de de ff ff 81 c4 08 00 00 00 8b 19 68 00 00 00 00 68 00 00 | .....Qh.................h....h.. |
24a0 | 00 00 89 e2 c7 05 ac 0e 00 0a 34 00 00 00 52 68 03 00 00 00 51 e8 58 ff ff ff 81 c4 0c 00 00 00 | ..........4...Rh....Q.X......... |
24c0 | 68 b9 1e 00 0a 68 34 00 00 00 ff 32 e8 72 dc ff ff 81 c4 0c 00 00 00 68 f3 1e 00 0a 53 ff 72 04 | h....h4....2.r.........h....S.r. |
24e0 | e8 5e dc ff ff 81 c4 0c 00 00 00 68 2c 1f 00 0a 68 34 00 00 00 ff 33 e8 47 dc ff ff 81 c4 0c 00 | .^.........h,...h4....3.G....... |
2500 | 00 00 68 67 1f 00 0a 68 35 00 00 00 ff 35 ac 0e 00 0a e8 2c dc ff ff 81 c4 0c 00 00 00 68 a2 1f | ..hg...h5....5.....,.........h.. |
2520 | 00 0a 68 07 00 00 00 8b 01 29 d8 50 e8 12 dc ff ff 81 c4 0c 00 00 00 c7 05 ac 0e 00 0a 00 01 00 | ..h......).P.................... |
2540 | 00 89 ec 5d c3 55 89 e5 51 31 c0 8b 4d 08 81 f9 00 00 00 00 74 0c 8b 45 0c 39 08 75 0a 05 04 00 | ...].U..Q1..M.......t..E.9.u.... |
2560 | 00 00 59 89 ec 5d c3 68 e2 1f 00 0a 68 02 00 00 00 e8 6f db ff ff 81 c4 08 00 00 00 bb 01 00 00 | ..Y..].h....h.....o............. |
2580 | 00 e8 ee da ff ff 55 89 e5 68 00 00 00 00 68 00 00 00 00 89 e3 53 68 00 02 00 00 e8 ce dd ff ff | ......U..h....h......Sh......... |
25a0 | 81 c4 08 00 00 00 68 00 00 00 00 68 00 00 00 00 89 e1 8b 13 51 68 02 00 00 00 53 e8 52 fe ff ff | ......h....h........Qh....S.R... |
25c0 | 81 c4 0c 00 00 00 ff 71 04 ff 31 e8 75 ff ff ff 81 c4 08 00 00 00 68 f4 1f 00 0a 81 c2 04 00 00 | .......q..1.u.........h......... |
25e0 | 00 52 50 e8 5b db ff ff 81 c4 0c 00 00 00 c7 05 ac 0e 00 0a 00 01 00 00 89 ec 5d c3 55 89 e5 68 | .RP.[.....................].U..h |
2600 | 00 00 00 00 68 00 00 00 00 89 e1 ff 71 04 ff 31 e8 30 ff ff ff 81 c4 08 00 00 00 68 0f 20 00 0a | ....h.......q..1.0.........h.... |
2620 | 68 00 00 00 00 50 e8 18 db ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 00 00 00 00 68 00 00 | h....P.............].U..h....h.. |
2640 | 00 00 89 e6 56 68 00 02 00 00 e8 1f dd ff ff 81 c4 08 00 00 00 68 00 00 00 00 68 00 00 00 00 89 | ....Vh...............h....h..... |
2660 | e1 8b 1e 51 68 02 00 00 00 56 e8 6c fd ff ff 81 c4 0c 00 00 00 89 1e 68 00 00 00 00 68 00 00 00 | ...Qh....V.l...........h....h... |
2680 | 00 89 e2 52 68 02 00 00 00 56 e8 4c fd ff ff 81 c4 0c 00 00 00 68 34 20 00 0a ff 72 04 ff 71 04 | ...Rh....V.L.........h4....r..q. |
26a0 | e8 9e da ff ff 81 c4 0c 00 00 00 ff 71 04 ff 31 e8 90 fe ff ff 81 c4 08 00 00 00 c7 05 ac 0e 00 | ............q..1................ |
26c0 | 0a 00 01 00 00 89 ec 5d c3 55 89 e5 51 b8 00 00 00 00 8b 4d 08 39 4d 10 75 0d 8b 4d 0c 39 4d 14 | .......].U..Q......M.9M.u..M.9M. |
26e0 | 75 05 b8 01 00 00 00 59 89 ec 5d c3 55 89 e5 50 51 8b 4d 10 8b 45 08 89 01 8b 45 0c 89 41 04 59 | u......Y..].U..PQ.M..E....E..A.Y |
2700 | 58 89 ec 5d c3 55 89 e5 50 51 ff 75 10 ff 75 0c ff 75 08 e8 c3 fc ff ff 81 c4 0c 00 00 00 8b 45 | X..].U..PQ.u..u..u.............E |
2720 | 10 8b 40 04 05 04 00 00 00 3d 00 00 00 00 74 18 89 c1 81 c1 08 00 00 00 89 08 89 c1 03 4d 0c 89 | ..@......=....t..............M.. |
2740 | 48 04 59 58 89 ec 5d c3 68 4f 20 00 0a 68 02 00 00 00 e8 8e d9 ff ff 81 c4 08 00 00 00 bb 01 00 | H.YX..].hO...h.................. |
2760 | 00 00 e8 0d d9 ff ff 55 89 e5 50 51 52 8b 4d 0c 8d 51 04 ff 75 10 52 ff 75 08 e8 5c fc ff ff 81 | .......U..PQR.M..Q..u.R.u..\.... |
2780 | c4 0c 00 00 00 8b 45 10 8b 40 04 05 04 00 00 00 89 08 5a 59 58 89 ec 5d c3 55 89 e5 68 00 00 00 | ......E..@........ZYX..].U..h... |
27a0 | 00 68 00 00 00 00 89 e1 51 68 00 02 00 00 e8 bb db ff ff 81 c4 08 00 00 00 8b 19 68 00 00 00 00 | .h......Qh.................h.... |
27c0 | 68 00 00 00 00 89 e2 c7 05 ac 0e 00 0a 34 00 00 00 52 68 03 00 00 00 51 e8 8a ff ff ff 81 c4 0c | h............4...Rh....Q........ |
27e0 | 00 00 00 68 77 20 00 0a 68 34 00 00 00 ff 32 e8 4f d9 ff ff 81 c4 0c 00 00 00 68 ab 20 00 0a 53 | ...hw...h4....2.O.........h....S |
2800 | ff 72 04 e8 3b d9 ff ff 81 c4 0c 00 00 00 68 de 20 00 0a 68 34 00 00 00 ff 33 e8 24 d9 ff ff 81 | .r..;.........h....h4....3.$.... |
2820 | c4 0c 00 00 00 68 13 21 00 0a 68 03 00 00 00 ff 73 04 e8 0c d9 ff ff 81 c4 0c 00 00 00 68 4a 21 | .....h.!..h.....s............hJ! |
2840 | 00 0a 68 35 00 00 00 ff 35 ac 0e 00 0a e8 f1 d8 ff ff 81 c4 0c 00 00 00 68 7f 21 00 0a 68 0b 00 | ..h5....5...............h.!..h.. |
2860 | 00 00 8b 01 29 d8 50 e8 d7 d8 ff ff 81 c4 0c 00 00 00 c7 05 ac 0e 00 0a 01 00 00 00 89 ec 5d c3 | ....).P.......................]. |
2880 | 55 89 e5 50 51 52 56 8b 75 0c 8b 0e 81 c1 04 00 00 00 ff 75 10 51 ff 75 08 e8 3d fb ff ff 81 c4 | U..PQRV.u..........u.Q.u..=..... |
28a0 | 0c 00 00 00 8b 45 10 8b 40 04 05 04 00 00 00 01 c1 8b 16 8d 54 16 04 52 56 51 50 e8 48 e2 ff ff | .....E..@...........T..RVQP.H... |
28c0 | 81 c4 10 00 00 00 5e 5a 59 58 89 ec 5d c3 55 89 e5 68 05 00 00 00 68 04 00 00 00 68 03 00 00 00 | ......^ZYX..].U..h....h....h.... |
28e0 | 68 0c 00 00 00 89 e6 68 00 00 00 00 68 00 00 00 00 89 e1 51 68 00 02 00 00 e8 70 da ff ff 81 c4 | h......h....h......Qh.....p..... |
2900 | 08 00 00 00 8b 19 68 00 00 00 00 68 00 00 00 00 89 e2 c7 05 ac 0e 00 0a 34 00 00 00 52 56 51 e8 | ......h....h............4...RVQ. |
2920 | 5c ff ff ff 81 c4 0c 00 00 00 68 b9 21 00 0a 68 34 00 00 00 ff 32 e8 08 d8 ff ff 81 c4 0c 00 00 | \.........h.!..h4....2.......... |
2940 | 00 68 e9 21 00 0a 53 ff 72 04 e8 f4 d7 ff ff 81 c4 0c 00 00 00 68 18 22 00 0a 68 34 00 00 00 ff | .h.!..S.r............h."..h4.... |
2960 | 32 e8 dd d7 ff ff 81 c4 0c 00 00 00 ff 72 04 ff 32 e8 cf fb ff ff 81 c4 08 00 00 00 68 49 22 00 | 2............r..2...........hI". |
2980 | 0a 68 0c 00 00 00 ff 30 e8 b6 d7 ff ff 81 c4 0c 00 00 00 68 7c 22 00 0a 68 35 00 00 00 ff 35 ac | .h.....0...........h|"..h5....5. |
29a0 | 0e 00 0a e8 9b d7 ff ff 81 c4 0c 00 00 00 68 ad 22 00 0a 68 14 00 00 00 8b 01 29 d8 50 e8 81 d7 | ..............h."..h......).P... |
29c0 | ff ff 81 c4 0c 00 00 00 c7 05 ac 0e 00 0a 01 00 00 00 89 ec 5d c3 55 89 e5 50 51 52 56 8b 75 08 | ....................].U..PQRV.u. |
29e0 | 31 c9 8b 55 0c 39 d1 7d 07 c6 06 00 46 41 eb f5 5e 5a 59 58 89 ec 5d c3 55 89 e5 68 34 35 36 37 | 1..U.9.}....FA..^ZYX..].U..h4567 |
2a00 | 89 e1 68 03 00 00 00 51 e8 c9 ff ff ff 81 c4 08 00 00 00 68 e3 22 00 0a 68 00 00 00 37 ff 31 e8 | ..h....Q...........h."..h...7.1. |
2a20 | 1f d7 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 50 52 8b 45 10 31 d2 f7 65 0c 81 fa 00 00 00 | ............].U..PR.E.1..e...... |
2a40 | 00 75 39 89 c2 05 0c 00 00 00 ff 75 14 50 ff 75 08 e8 85 f9 ff ff 81 c4 0c 00 00 00 8b 45 14 8b | .u9........u.P.u.............E.. |
2a60 | 40 04 05 04 00 00 00 89 50 08 50 e8 a3 da ff ff 81 c4 04 00 00 00 5a 58 89 ec 5d c3 68 f8 22 00 | @.......P.P...........ZX..].h.". |
2a80 | 0a 68 02 00 00 00 e8 5a d6 ff ff 81 c4 08 00 00 00 bb 01 00 00 00 e8 d9 d5 ff ff 55 89 e5 68 00 | .h.....Z...................U..h. |
2aa0 | 00 00 00 68 00 00 00 00 89 e1 51 68 00 02 00 00 e8 b9 d8 ff ff 81 c4 08 00 00 00 8b 11 68 00 00 | ...h......Qh.................h.. |
2ac0 | 00 00 68 00 00 00 00 89 e3 53 68 02 00 00 00 68 03 00 00 00 51 e8 54 ff ff ff 81 c4 10 00 00 00 | ..h......Sh....h....Q.T......... |
2ae0 | 8b 43 04 68 17 23 00 0a 52 50 e8 54 d6 ff ff 81 c4 0c 00 00 00 05 04 00 00 00 68 60 23 00 0a 68 | .C.h.#..RP.T..............h`#..h |
2b00 | 06 00 00 00 ff 70 08 e8 37 d6 ff ff 81 c4 0c 00 00 00 81 c4 10 00 00 00 89 ec 5d c3 55 89 e5 50 | .....p..7.................].U..P |
2b20 | 51 52 56 57 8b 75 08 8b 4e 08 8b 7d 0c 8b 17 3b 57 08 7d 4c 3b 4e 04 7c 26 8d 46 04 50 e8 d1 d9 | QRVW.u..N..}...;W.}L;N.|&.F.P... |
2b40 | ff ff 81 c4 04 00 00 00 31 c9 50 ff 36 e8 bb e5 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 74 13 31 | ........1.P.6...........=....t.1 |
2b60 | c0 8a 44 0e 10 88 44 17 0c 41 42 3d 0a 00 00 00 75 bd 89 4e 08 89 17 5f 5e 5a 59 58 89 ec 5d c3 | ..D...D..AB=....u..N..._^ZYX..]. |
2b80 | 68 8c 23 00 0a 68 02 00 00 00 e8 56 d5 ff ff 81 c4 08 00 00 00 bb 01 00 00 00 e8 d5 d4 ff ff 68 | h.#..h.....V...................h |
2ba0 | 94 00 00 0a e8 6a d9 ff ff 81 c4 04 00 00 00 68 e0 00 00 0a e8 5a d9 ff ff 81 c4 04 00 00 00 68 | .....j.........h.....Z.........h |
2bc0 | b0 00 00 0a e8 4a d9 ff ff 81 c4 04 00 00 00 68 b2 23 00 0a 68 94 00 00 0a e8 7c df ff ff 81 c4 | .....J.........h.#..h.....|..... |
2be0 | 08 00 00 00 68 b0 00 00 0a 68 dc 00 00 0a e8 29 ff ff ff 81 c4 08 00 00 00 68 bb 23 00 0a 68 da | ....h....h.....).........h.#..h. |
2c00 | 23 00 0a 68 b0 00 00 0a e8 00 e4 ff ff 81 c4 0c 00 00 00 c3 68 94 00 00 0a e8 f5 d8 ff ff 81 c4 | #..h................h........... |
2c20 | 04 00 00 00 68 e0 00 00 0a e8 e5 d8 ff ff 81 c4 04 00 00 00 68 b0 00 00 0a e8 d5 d8 ff ff 81 c4 | ....h...............h........... |
2c40 | 04 00 00 00 68 e0 23 00 0a 68 94 00 00 0a e8 07 df ff ff 81 c4 08 00 00 00 68 b0 00 00 0a 68 dc | ....h.#..h...............h....h. |
2c60 | 00 00 0a e8 b4 fe ff ff 81 c4 08 00 00 00 68 e6 23 00 0a 68 20 24 00 0a 68 b0 00 00 0a e8 19 e1 | ..............h.#..h.$..h....... |
2c80 | ff ff 81 c4 0c 00 00 00 c3 55 89 e5 50 51 52 56 57 8b 75 08 8b 4e 04 8b 7d 0c 8b 17 3b 57 08 0f | .........U..PQRVW.u..N..}...;W.. |
2ca0 | 8d 29 00 00 00 3b 0e 7d 17 31 c0 8a 44 0e 0c 88 44 17 0c 41 42 3d 0a 00 00 00 0f 85 dc ff ff ff | .)...;.}.1..D...D..AB=.......... |
2cc0 | 89 4e 04 89 17 5f 5e 5a 59 58 89 ec 5d c3 68 26 24 00 0a 68 02 00 00 00 e8 08 d4 ff ff 81 c4 08 | .N..._^ZYX..].h&$..h............ |
2ce0 | 00 00 00 bb 01 00 00 00 e8 87 d3 ff ff 68 94 00 00 0a e8 1c d8 ff ff 81 c4 04 00 00 00 68 b0 00 | .............h...............h.. |
2d00 | 00 0a e8 0c d8 ff ff 81 c4 04 00 00 00 68 43 24 00 0a 68 94 00 00 0a e8 3e de ff ff 81 c4 08 00 | .............hC$..h.....>....... |
2d20 | 00 00 68 b0 00 00 0a 68 94 00 00 0a e8 58 ff ff ff 81 c4 08 00 00 00 68 4c 24 00 0a 68 62 24 00 | ..h....h.....X.........hL$..hb$. |
2d40 | 0a 68 b0 00 00 0a e8 c2 e2 ff ff 81 c4 0c 00 00 00 c3 68 94 00 00 0a e8 b7 d7 ff ff 81 c4 04 00 | .h................h............. |
2d60 | 00 00 68 b0 00 00 0a e8 a7 d7 ff ff 81 c4 04 00 00 00 68 68 24 00 0a 68 94 00 00 0a e8 d9 dd ff | ..h...............hh$..h........ |
2d80 | ff 81 c4 08 00 00 00 68 b0 00 00 0a 68 94 00 00 0a e8 f3 fe ff ff 81 c4 08 00 00 00 68 6e 24 00 | .......h....h...............hn$. |
2da0 | 0a 68 9f 24 00 0a 68 b0 00 00 0a e8 eb df ff ff 81 c4 0c 00 00 00 c3 55 89 e5 51 8b 4d 08 8b 01 | .h.$..h................U..Q.M... |
2dc0 | 3b 41 04 b8 01 00 00 00 73 05 b8 00 00 00 00 59 89 ec 5d c3 55 89 e5 68 34 00 00 00 68 34 00 00 | ;A......s......Y..].U..h4...h4.. |
2de0 | 00 89 e1 51 e8 ce ff ff ff 81 c4 04 00 00 00 68 a5 24 00 0a 68 01 00 00 00 50 e8 44 d3 ff ff 81 | ...Q...........h.$..h....P.D.... |
2e00 | c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 34 00 00 00 68 32 00 00 00 89 e1 51 e8 99 ff ff ff 81 c4 | .......].U..h4...h2.....Q....... |
2e20 | 04 00 00 00 68 c2 24 00 0a 68 00 00 00 00 50 e8 0f d3 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 | ....h.$..h....P.............].U. |
2e40 | e5 68 32 00 00 00 68 34 00 00 00 89 e1 51 e8 64 ff ff ff 81 c4 04 00 00 00 68 e0 24 00 0a 68 01 | .h2...h4.....Q.d.........h.$..h. |
2e60 | 00 00 00 50 e8 da d2 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 51 52 53 56 8b 75 08 8b 16 8b | ...P.............].U..QRSV.u.... |
2e80 | 76 04 89 f0 29 d0 8b 5d 0c 81 fb 00 00 00 00 75 09 3d 00 00 00 00 74 27 eb 1e 39 03 75 1a 81 c3 | v...)..].......u.=....t'..9.u... |
2ea0 | 04 00 00 00 31 c0 31 c9 39 f2 73 13 8a 03 8a 0a 39 c8 75 04 43 42 eb f0 b8 00 00 00 00 eb 05 b8 | ....1.1.9.s.....9.u.CB.......... |
2ec0 | 01 00 00 00 5e 5b 5a 59 89 ec 5d c3 55 89 e5 b8 12 25 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 | ....^[ZY..].U....%.....L.......Q |
2ee0 | 50 89 e1 68 19 25 00 0a 51 e8 85 ff ff ff 81 c4 08 00 00 00 68 20 25 00 0a 68 01 00 00 00 50 e8 | P..h.%..Q...........h.%..h....P. |
2f00 | 3f d2 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 38 25 00 0a 8b 08 8d 4c 08 04 05 04 00 00 | ?...........].U...8%.....L...... |
2f20 | 00 51 50 89 e1 68 3f 25 00 0a 51 e8 43 ff ff ff 81 c4 08 00 00 00 68 46 25 00 0a 68 00 00 00 00 | .QP..h?%..Q.C.........hF%..h.... |
2f40 | 50 e8 fd d1 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 64 25 00 0a 8b 08 8d 4c 08 04 05 04 | P.............].U...d%.....L.... |
2f60 | 00 00 00 51 50 89 e1 68 6c 25 00 0a 51 e8 01 ff ff ff 81 c4 08 00 00 00 68 73 25 00 0a 68 00 00 | ...QP..hl%..Q...........hs%..h.. |
2f80 | 00 00 50 e8 bb d1 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 94 25 00 0a 8b 08 8d 4c 08 04 | ..P.............].U....%.....L.. |
2fa0 | 05 04 00 00 00 51 50 89 e1 68 99 25 00 0a 51 e8 bf fe ff ff 81 c4 08 00 00 00 68 a0 25 00 0a 68 | .....QP..h.%..Q...........h.%..h |
2fc0 | 00 00 00 00 50 e8 79 d1 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 00 00 00 00 68 00 00 00 | ....P.y...........].U..h....h... |
2fe0 | 00 89 e1 68 c2 25 00 0a 51 e8 85 fe ff ff 81 c4 08 00 00 00 68 c9 25 00 0a 68 00 00 00 00 50 e8 | ...h.%..Q...........h.%..h....P. |
3000 | 3f d1 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 e7 25 00 0a 8b 08 8d 4c 08 04 05 04 00 00 | ?...........].U....%.....L...... |
3020 | 00 51 50 89 e1 68 ed 25 00 0a 51 e8 43 fe ff ff 81 c4 08 00 00 00 68 f1 25 00 0a 68 00 00 00 00 | .QP..h.%..Q.C.........h.%..h.... |
3040 | 50 e8 fd d0 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 00 00 00 00 68 00 00 00 00 89 e1 68 | P.............].U..h....h......h |
3060 | 14 26 00 0a 51 e8 09 fe ff ff 81 c4 08 00 00 00 68 18 26 00 0a 68 01 00 00 00 50 e8 c3 d0 ff ff | .&..Q...........h.&..h....P..... |
3080 | 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 41 26 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 | ........].U...A&.....L.......QP. |
30a0 | e1 68 00 00 00 00 51 e8 c7 fd ff ff 81 c4 08 00 00 00 68 47 26 00 0a 68 00 00 00 00 50 e8 81 d0 | .h....Q...........hG&..h....P... |
30c0 | ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 51 52 53 56 57 8b 75 08 8b 4e 04 2b 0e 8b 7d 0c 8b | ..........].U..QRSVW.u..N.+..}.. |
30e0 | 17 39 ca 7f 26 8b 36 81 c7 04 00 00 00 31 c9 31 c0 31 db 39 d1 7d 0d 8a 06 8a 1f 39 d8 75 0c 41 | .9..&.6......1.1.1.9.}.....9.u.A |
3100 | 46 47 eb ef b8 01 00 00 00 eb 05 b8 00 00 00 00 5f 5e 5b 5a 59 89 ec 5d c3 55 89 e5 b8 69 26 00 | FG.............._^[ZY..].U...i&. |
3120 | 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 68 70 26 00 0a 51 e8 91 ff ff ff 81 c4 08 00 00 | ....L.......QP..hp&..Q.......... |
3140 | 00 68 75 26 00 0a 68 01 00 00 00 50 e8 f2 cf ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 a4 | .hu&..h....P.............].U.... |
3160 | 26 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 68 ab 26 00 0a 51 e8 4f ff ff ff 81 c4 08 | &.....L.......QP..h.&..Q.O...... |
3180 | 00 00 00 68 af 26 00 0a 68 01 00 00 00 50 e8 b0 cf ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 | ...h.&..h....P.............].U.. |
31a0 | b8 da 26 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 68 e1 26 00 0a 51 e8 0d ff ff ff 81 | ..&.....L.......QP..h.&..Q...... |
31c0 | c4 08 00 00 00 68 e7 26 00 0a 68 01 00 00 00 50 e8 6e cf ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 | .....h.&..h....P.n...........].U |
31e0 | 89 e5 b8 19 27 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 68 20 27 00 0a 51 e8 cb fe ff | ....'.....L.......QP..h.'..Q.... |
3200 | ff 81 c4 08 00 00 00 68 27 27 00 0a 68 01 00 00 00 50 e8 2c cf ff ff 81 c4 0c 00 00 00 89 ec 5d | .......h''..h....P.,...........] |
3220 | c3 55 89 e5 b8 53 27 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 68 5a 27 00 0a 51 e8 89 | .U...S'.....L.......QP..hZ'..Q.. |
3240 | fe ff ff 81 c4 08 00 00 00 68 61 27 00 0a 68 00 00 00 00 50 e8 ea ce ff ff 81 c4 0c 00 00 00 89 | .........ha'..h....P............ |
3260 | ec 5d c3 55 89 e5 b8 85 27 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 68 8c 27 00 0a 51 | .].U....'.....L.......QP..h.'..Q |
3280 | e8 47 fe ff ff 81 c4 08 00 00 00 68 92 27 00 0a 68 00 00 00 00 50 e8 a8 ce ff ff 81 c4 0c 00 00 | .G.........h.'..h....P.......... |
32a0 | 00 89 ec 5d c3 55 89 e5 50 51 52 53 56 57 8b 75 0c 8b 0e 8b 76 04 8b 7d 08 8b 57 08 8b 1f 39 f1 | ...].U..PQRSVW.u....v..}..W...9. |
32c0 | 73 10 39 d3 7d 18 31 c0 8a 01 88 44 1f 0c 43 41 eb ec 89 1f 5f 5e 5b 5a 59 58 89 ec 5d c3 68 b8 | s.9.}.1....D..CA...._^[ZYX..].h. |
32e0 | 27 00 0a 68 02 00 00 00 e8 f8 cd ff ff 81 c4 08 00 00 00 bb 01 00 00 00 e8 77 cd ff ff 55 89 e5 | '..h.....................w...U.. |
3300 | 68 94 00 00 0a e8 09 d2 ff ff 81 c4 04 00 00 00 b8 d5 27 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 | h.................'.....L....... |
3320 | 51 50 89 e1 51 68 94 00 00 0a e8 76 ff ff ff 81 c4 08 00 00 00 68 dc 27 00 0a 68 f4 27 00 0a 68 | QP..Qh.....v.........h.'..h.'..h |
3340 | 94 00 00 0a e8 52 da ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 50 51 52 53 56 57 8b 75 0c 8b | .....R...........].U..PQRSVW.u.. |
3360 | 0e 8b 76 04 8b 7d 08 8b 57 0c 8b 5f 04 39 f1 73 30 39 d3 7c 20 89 5f 04 57 e8 21 e4 ff ff 81 c4 | ..v..}..W.._.9.s09.|.._.W.!..... |
3380 | 04 00 00 00 8d 47 04 50 e8 86 d1 ff ff 81 c4 04 00 00 00 31 db 31 c0 8a 01 88 44 1f 10 43 41 eb | .....G.P...........1.1....D..CA. |
33a0 | cc 89 5f 04 5f 5e 5b 5a 59 58 89 ec 5d c3 55 89 e5 68 94 00 00 0a e8 58 d1 ff ff 81 c4 04 00 00 | .._._^[ZYX..].U..h.....X........ |
33c0 | 00 68 e0 00 00 0a e8 48 d1 ff ff 81 c4 04 00 00 00 b8 fb 27 00 0a 8b 08 8d 4c 08 04 05 04 00 00 | .h.....H...........'.....L...... |
33e0 | 00 51 50 89 e1 51 68 dc 00 00 0a e8 63 ff ff ff 81 c4 08 00 00 00 68 dc 00 00 0a e8 9f e3 ff ff | .QP..Qh.....c.........h......... |
3400 | 81 c4 04 00 00 00 68 02 28 00 0a 68 23 28 00 0a 68 94 00 00 0a e8 81 d9 ff ff 81 c4 0c 00 00 00 | ......h.(..h#(..h............... |
3420 | 89 ec 5d c3 55 89 e5 50 51 52 53 56 8b 75 0c 8b 16 8b 5e 04 89 d9 29 d1 81 c1 04 00 00 00 ff 75 | ..].U..PQRSV.u....^...)........u |
3440 | 10 51 ff 75 08 e8 91 ef ff ff 81 c4 0c 00 00 00 8b 45 10 8b 40 04 05 04 00 00 00 3d 00 00 00 00 | .Q.u.............E..@......=.... |
3460 | 74 2a 89 08 81 28 04 00 00 00 50 53 52 01 c1 51 81 c0 04 00 00 00 50 e8 8c d6 ff ff 81 c4 10 00 | t*...(....PSR..Q......P......... |
3480 | 00 00 58 5e 5b 5a 59 58 89 ec 5d c3 68 2a 28 00 0a 68 02 00 00 00 e8 4a cc ff ff 81 c4 08 00 00 | ..X^[ZYX..].h*(..h.....J........ |
34a0 | 00 bb 01 00 00 00 e8 c9 cb ff ff 55 89 e5 68 00 00 00 00 68 00 00 00 00 89 e2 52 68 00 02 00 00 | ...........U..h....h......Rh.... |
34c0 | e8 a9 ce ff ff 81 c4 08 00 00 00 b8 4c 28 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 68 | ............L(.....L.......QP..h |
34e0 | 00 00 00 00 68 00 00 00 00 89 e3 53 51 52 e8 31 ff ff ff 81 c4 0c 00 00 00 8b 43 04 05 04 00 00 | ....h......SQR.1..........C..... |
3500 | 00 68 53 28 00 0a 50 e8 9b ce ff ff 81 c4 08 00 00 00 68 5a 28 00 0a 68 01 00 00 00 50 e8 21 cc | .hS(..P...........hZ(..h....P.!. |
3520 | ff ff 81 c4 0c 00 00 00 81 c4 18 00 00 00 89 ec 5d c3 55 89 e5 50 51 56 57 8b 75 08 8b 7d 10 ff | ................].U..PQVW.u..}.. |
3540 | 75 0c 56 e8 49 02 00 00 81 c4 08 00 00 00 8b 4e 04 8d 44 0e 0c 89 07 ff 75 0c 56 e8 a7 03 00 00 | u.V.I..........N..D.....u.V..... |
3560 | 81 c4 08 00 00 00 8b 4e 04 8d 44 0e 0c 89 47 04 5f 5e 59 58 89 ec 5d c3 55 89 e5 68 94 00 00 0a | .......N..D...G._^YX..].U..h.... |
3580 | e8 8e cf ff ff 81 c4 04 00 00 00 68 00 00 00 00 68 00 00 00 00 89 e1 68 76 28 00 0a 68 94 00 00 | ...........h....h......hv(..h... |
35a0 | 0a e8 b4 d5 ff ff 81 c4 08 00 00 00 51 68 20 00 00 00 68 94 00 00 0a e8 76 ff ff ff 81 c4 0c 00 | ............Qh....h.....v....... |
35c0 | 00 00 68 7e 28 00 0a 68 0e 00 00 00 8b 01 81 e8 94 00 00 0a 50 e8 69 cb ff ff 81 c4 0c 00 00 00 | ..h~(..h............P.i......... |
35e0 | 68 9c 28 00 0a 68 10 00 00 00 8b 41 04 81 e8 94 00 00 0a 50 e8 4a cb ff ff 81 c4 0c 00 00 00 89 | h.(..h.....A.......P.J.......... |
3600 | ec 5d c3 55 89 e5 68 94 00 00 0a e8 03 cf ff ff 81 c4 04 00 00 00 68 00 00 00 00 68 00 00 00 00 | .].U..h...............h....h.... |
3620 | 89 e1 51 68 20 00 00 00 68 94 00 00 0a e8 00 ff ff ff 81 c4 0c 00 00 00 68 b8 28 00 0a ff 71 04 | ..Qh....h...............h.(...q. |
3640 | ff 31 e8 fc ca ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 50 51 52 57 8b 4d 0c 8b 55 10 8b 7d | .1.............].U..PQRW.M..U..} |
3660 | 14 52 51 ff 75 08 e8 6a 04 00 00 81 c4 0c 00 00 00 89 07 52 51 50 e8 6b 05 00 00 81 c4 0c 00 00 | .RQ.u..j...........RQP.k........ |
3680 | 00 89 47 04 5f 5a 59 58 89 ec 5d c3 55 89 e5 b8 d3 28 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 68 | ..G._ZYX..].U....(.....L.......h |
36a0 | 00 00 00 00 68 00 00 00 00 89 e7 57 68 20 00 00 00 51 50 e8 99 ff ff ff 81 c4 10 00 00 00 68 db | ....h......Wh....QP...........h. |
36c0 | 28 00 0a 68 02 00 00 00 8b 0f 2b c8 51 e8 71 ca ff ff 81 c4 0c 00 00 00 68 04 29 00 0a 68 04 00 | (..h......+.Q.q.........h.)..h.. |
36e0 | 00 00 8b 4f 04 2b c8 51 e8 56 ca ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 00 00 00 00 68 | ...O.+.Q.V...........].U..h....h |
3700 | 00 00 00 00 89 e7 57 68 20 00 00 00 68 00 00 00 00 68 00 00 00 00 e8 36 ff ff ff 81 c4 10 00 00 | ......Wh....h....h.....6........ |
3720 | 00 68 2b 29 00 0a 68 00 00 00 00 8b 4f 04 2b 0f 51 e8 0d ca ff ff 81 c4 0c 00 00 00 89 ec 5d c3 | .h+)..h.....O.+.Q.............]. |
3740 | 55 89 e5 b8 51 29 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 68 00 00 00 00 68 00 00 00 00 89 e7 57 | U...Q).....L.......h....h......W |
3760 | 68 20 00 00 00 51 50 e8 e5 fe ff ff 81 c4 10 00 00 00 68 59 29 00 0a 68 00 00 00 00 8b 4f 04 2b | h....QP...........hY)..h.....O.+ |
3780 | 0f 51 e8 bc c9 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 50 51 52 53 56 8b 75 08 8b 4e 04 8b | .Q.............].U..PQRSV.u..N.. |
37a0 | 1e 8b 55 0c 39 d9 7d 0d 31 c0 8a 44 0e 0c 39 d0 75 03 41 eb ef 89 4e 04 5e 5b 5a 59 58 89 ec 5d | ..U.9.}.1..D..9.u.A...N.^[ZYX..] |
37c0 | c3 68 94 00 00 0a e8 48 cd ff ff 81 c4 04 00 00 00 68 7f 29 00 0a 68 94 00 00 0a e8 7a d3 ff ff | .h.....H.........h.)..h.....z... |
37e0 | 81 c4 08 00 00 00 68 20 00 00 00 68 94 00 00 0a e8 9c ff ff ff 81 c4 08 00 00 00 68 87 29 00 0a | ......h....h...............h.).. |
3800 | 68 02 00 00 00 b8 94 00 00 0a ff 70 04 e8 31 c9 ff ff 81 c4 0c 00 00 00 c3 68 94 00 00 0a e8 f0 | h..........p..1..........h...... |
3820 | cc ff ff 81 c4 04 00 00 00 68 a7 29 00 0a 68 94 00 00 0a e8 22 d3 ff ff 81 c4 08 00 00 00 68 20 | .........h.)..h.....".........h. |
3840 | 00 00 00 68 94 00 00 0a e8 44 ff ff ff 81 c4 08 00 00 00 68 ad 29 00 0a 68 00 00 00 00 b8 94 00 | ...h.....D.........h.)..h....... |
3860 | 00 0a ff 70 04 e8 d9 c8 ff ff 81 c4 0c 00 00 00 c3 55 89 e5 50 51 53 56 8b 75 08 8b 4e 04 8b 1e | ...p.............U..PQSV.u..N... |
3880 | 39 d9 7d 25 31 c0 8a 44 0e 0c 3d 20 00 00 00 74 15 3d 0a 00 00 00 74 0e 3d 09 00 00 00 74 07 3d | 9.}%1..D..=....t.=....t.=....t.= |
38a0 | 0d 00 00 00 75 03 41 eb d7 89 4e 04 5e 5b 59 58 89 ec 5d c3 68 94 00 00 0a e8 55 cc ff ff 81 c4 | ....u.A...N.^[YX..].h.....U..... |
38c0 | 04 00 00 00 68 d2 29 00 0a 68 94 00 00 0a e8 87 d2 ff ff 81 c4 08 00 00 00 68 94 00 00 0a e8 8e | ....h.)..h...............h...... |
38e0 | ff ff ff 81 c4 04 00 00 00 68 da 29 00 0a 68 02 00 00 00 b8 94 00 00 0a ff 70 04 e8 43 c8 ff ff | .........h.)..h..........p..C... |
3900 | 81 c4 0c 00 00 00 c3 55 89 e5 50 51 52 53 56 8b 75 08 8b 4e 04 8b 1e 8b 55 0c 39 d9 7d 0d 31 c0 | .......U..PQRSV.u..N....U.9.}.1. |
3920 | 8a 44 0e 0c 39 d0 74 03 41 eb ef 89 4e 04 5e 5b 5a 59 58 89 ec 5d c3 68 94 00 00 0a e8 d2 cb ff | .D..9.t.A...N.^[ZYX..].h........ |
3940 | ff 81 c4 04 00 00 00 68 05 2a 00 0a 68 94 00 00 0a e8 04 d2 ff ff 81 c4 08 00 00 00 68 20 00 00 | .......h.*..h...............h... |
3960 | 00 68 94 00 00 0a e8 9c ff ff ff 81 c4 08 00 00 00 68 0c 2a 00 0a 68 02 00 00 00 b8 94 00 00 0a | .h...............h.*..h......... |
3980 | ff 70 04 e8 bb c7 ff ff 81 c4 0c 00 00 00 c3 68 94 00 00 0a e8 7a cb ff ff 81 c4 04 00 00 00 68 | .p.............h.....z.........h |
39a0 | 30 2a 00 0a 68 94 00 00 0a e8 ac d1 ff ff 81 c4 08 00 00 00 68 20 00 00 00 68 94 00 00 0a e8 44 | 0*..h...............h....h.....D |
39c0 | ff ff ff 81 c4 08 00 00 00 68 37 2a 00 0a 68 00 00 00 00 b8 94 00 00 0a ff 70 04 e8 63 c7 ff ff | .........h7*..h..........p..c... |
39e0 | 81 c4 0c 00 00 00 c3 68 94 00 00 0a e8 22 cb ff ff 81 c4 04 00 00 00 68 60 2a 00 0a 68 94 00 00 | .......h.....".........h`*..h... |
3a00 | 0a e8 54 d1 ff ff 81 c4 08 00 00 00 68 20 00 00 00 68 94 00 00 0a e8 ec fe ff ff 81 c4 08 00 00 | ..T.........h....h.............. |
3a20 | 00 68 66 2a 00 0a 68 02 00 00 00 b8 94 00 00 0a ff 70 04 e8 0b c7 ff ff 81 c4 0c 00 00 00 c3 55 | .hf*..h..........p.............U |
3a40 | 89 e5 50 51 53 56 8b 75 08 8b 4e 04 8b 1e 39 d9 7d 25 31 c0 8a 44 0e 0c 3d 20 00 00 00 74 18 3d | ..PQSV.u..N...9.}%1..D..=....t.= |
3a60 | 0a 00 00 00 74 11 3d 09 00 00 00 74 0a 3d 0d 00 00 00 74 03 41 eb d7 89 4e 04 5e 5b 59 58 89 ec | ....t.=....t.=....t.A...N.^[YX.. |
3a80 | 5d c3 68 94 00 00 0a e8 87 ca ff ff 81 c4 04 00 00 00 68 8e 2a 00 0a 68 94 00 00 0a e8 b9 d0 ff | ].h...............h.*..h........ |
3aa0 | ff 81 c4 08 00 00 00 68 94 00 00 0a e8 8e ff ff ff 81 c4 04 00 00 00 68 95 2a 00 0a 68 02 00 00 | .......h...............h.*..h... |
3ac0 | 00 b8 94 00 00 0a ff 70 04 e8 75 c6 ff ff 81 c4 0c 00 00 00 c3 55 89 e5 51 52 53 8b 45 08 8b 4d | .......p..u..........U..QRS.E..M |
3ae0 | 0c 8b 55 10 31 db 39 c8 73 09 8a 18 39 d3 75 03 40 eb f3 5b 5a 59 89 ec 5d c3 b8 c4 2a 00 0a 8b | ..U.1.9.s...9.u.@..[ZY..]...*... |
3b00 | 08 8d 4c 08 04 05 04 00 00 00 68 20 00 00 00 51 50 e8 bf ff ff ff 81 c4 0c 00 00 00 68 cc 2a 00 | ..L.......h....QP...........h.*. |
3b20 | 0a 68 02 00 00 00 29 c1 51 e8 15 c6 ff ff 81 c4 0c 00 00 00 c3 b8 f5 2a 00 0a 8b 08 8d 4c 08 04 | .h....).Q..............*.....L.. |
3b40 | 05 04 00 00 00 68 20 00 00 00 51 50 e8 84 ff ff ff 81 c4 0c 00 00 00 68 fb 2a 00 0a 68 02 00 00 | .....h....QP...........h.*..h... |
3b60 | 00 29 c1 51 e8 da c5 ff ff 81 c4 0c 00 00 00 c3 55 89 e5 51 53 8b 45 08 8b 4d 0c 31 db 39 c8 0f | .).Q............U..QS.E..M.1.9.. |
3b80 | 83 6e ff ff ff 8a 18 81 fb 20 00 00 00 74 18 81 fb 0a 00 00 00 74 10 81 fb 09 00 00 00 74 08 81 | .n...........t.......t.......t.. |
3ba0 | fb 0d 00 00 00 75 03 40 eb d3 5b 59 89 ec 5d c3 b8 29 2b 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 | .....u.@..[Y..]..)+.....L....... |
3bc0 | 51 50 e8 a9 ff ff ff 81 c4 08 00 00 00 68 31 2b 00 0a 68 02 00 00 00 29 c1 51 e8 64 c5 ff ff 81 | QP...........h1+..h....).Q.d.... |
3be0 | c4 0c 00 00 00 c3 55 89 e5 51 52 53 8b 45 08 8b 4d 0c 8b 55 10 31 db 39 c8 73 09 8a 18 39 d3 74 | ......U..QRS.E..M..U.1.9.s...9.t |
3c00 | 03 40 eb f3 5b 5a 59 89 ec 5d c3 b8 65 2b 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 68 20 00 00 00 | .@..[ZY..]..e+.....L.......h.... |
3c20 | 51 50 e8 bf ff ff ff 81 c4 0c 00 00 00 68 6c 2b 00 0a 68 01 00 00 00 29 c1 51 e8 04 c5 ff ff 81 | QP...........hl+..h....).Q...... |
3c40 | c4 0c 00 00 00 c3 b8 99 2b 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 68 20 00 00 00 51 50 e8 84 ff | ........+.....L.......h....QP... |
3c60 | ff ff 81 c4 0c 00 00 00 68 a0 2b 00 0a 68 03 00 00 00 29 c1 51 e8 c9 c4 ff ff 81 c4 0c 00 00 00 | ........h.+..h....).Q........... |
3c80 | c3 b8 d2 2b 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 68 20 00 00 00 51 50 e8 49 ff ff ff 81 c4 0c | ...+.....L.......h....QP.I...... |
3ca0 | 00 00 00 68 d8 2b 00 0a 68 00 00 00 00 29 c1 51 e8 8e c4 ff ff 81 c4 0c 00 00 00 c3 55 89 e5 51 | ...h.+..h....).Q............U..Q |
3cc0 | 53 8b 45 08 8b 4d 0c 31 db 39 c8 0f 83 33 ff ff ff 8a 18 81 fb 20 00 00 00 74 1b 81 fb 0a 00 00 | S.E..M.1.9...3...........t...... |
3ce0 | 00 74 13 81 fb 09 00 00 00 74 0b 81 fb 0d 00 00 00 74 03 40 eb d3 5b 59 89 ec 5d c3 b8 09 2c 00 | .t.......t.......t.@..[Y..]...,. |
3d00 | 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 e8 a9 ff ff ff 81 c4 08 00 00 00 68 10 2c 00 0a 68 01 | ....L.......QP...........h.,..h. |
3d20 | 00 00 00 29 c1 51 e8 18 c4 ff ff 81 c4 0c 00 00 00 c3 55 89 e5 50 51 52 8b 4d 08 8b 51 08 8d 54 | ...).Q............U..PQR.M..Q..T |
3d40 | 11 0c 52 8b 51 04 8d 54 11 0c 52 e8 de 01 00 00 81 c4 08 00 00 00 29 c8 2d 0c 00 00 00 89 41 04 | ..R.Q..T..R...........).-.....A. |
3d60 | 5a 59 58 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 9f c7 ff ff 81 c4 04 00 00 00 68 48 2c 00 0a 68 | ZYX..].U..h...............hH,..h |
3d80 | f2 00 00 0a e8 d1 cd ff ff 81 c4 08 00 00 00 68 55 2c 00 0a 68 00 00 00 00 b8 f2 00 00 0a ff 70 | ...............hU,..h..........p |
3da0 | 04 e8 9d c3 ff ff 81 c4 0c 00 00 00 68 f2 00 00 0a e8 7c ff ff ff 81 c4 04 00 00 00 68 7a 2c 00 | ............h.....|.........hz,. |
3dc0 | 0a 68 05 00 00 00 b8 f2 00 00 0a ff 70 04 e8 70 c3 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 | .h..........p..p...........].U.. |
3de0 | 68 f2 00 00 0a e8 29 c7 ff ff 81 c4 04 00 00 00 68 92 2c 00 0a 68 f2 00 00 0a e8 5b cd ff ff 81 | h.....).........h.,..h.....[.... |
3e00 | c4 08 00 00 00 68 9e 2c 00 0a 68 00 00 00 00 b8 f2 00 00 0a ff 70 04 e8 27 c3 ff ff 81 c4 0c 00 | .....h.,..h..........p..'....... |
3e20 | 00 00 68 f2 00 00 0a e8 06 ff ff ff 81 c4 04 00 00 00 68 d2 2c 00 0a 68 05 00 00 00 b8 f2 00 00 | ..h...............h.,..h........ |
3e40 | 0a ff 70 04 e8 fa c2 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 b3 c6 ff ff | ..p..............].U..h......... |
3e60 | 81 c4 04 00 00 00 68 f9 2c 00 0a 68 f2 00 00 0a e8 e5 cc ff ff 81 c4 08 00 00 00 68 06 2d 00 0a | ......h.,..h...............h.-.. |
3e80 | 68 00 00 00 00 b8 f2 00 00 0a ff 70 04 e8 b1 c2 ff ff 81 c4 0c 00 00 00 68 f2 00 00 0a e8 90 fe | h..........p............h....... |
3ea0 | ff ff 81 c4 04 00 00 00 68 3b 2d 00 0a 68 06 00 00 00 b8 f2 00 00 0a ff 70 04 e8 84 c2 ff ff 81 | ........h;-..h..........p....... |
3ec0 | c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 3d c6 ff ff 81 c4 04 00 00 00 68 63 2d 00 | .......].U..h.....=.........hc-. |
3ee0 | 0a 68 f2 00 00 0a e8 6f cc ff ff 81 c4 08 00 00 00 b8 f2 00 00 0a c7 40 04 02 00 00 00 68 f2 00 | .h.....o...............@.....h.. |
3f00 | 00 0a e8 2b fe ff ff 81 c4 04 00 00 00 68 72 2d 00 0a 68 08 00 00 00 b8 f2 00 00 0a ff 70 04 e8 | ...+.........hr-..h..........p.. |
3f20 | 1f c2 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 51 52 53 8b 4d 08 8b 55 0c 31 c0 41 39 d1 73 | ............].U..QRS.M..U.1.A9.s |
3f40 | 15 8a 01 3d 22 00 00 00 74 0b 3d 5c 00 00 00 75 01 41 41 eb e8 41 89 c8 5b 5a 59 89 ec 5d c3 55 | ...="...t.=\...u.AA..A..[ZY..].U |
3f60 | 89 e5 b8 a0 2d 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 e8 b5 ff ff ff 81 c4 08 00 00 00 68 | ....-.....L.......QP...........h |
3f80 | ad 2d 00 0a 68 04 00 00 00 29 c1 51 e8 b2 c1 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 ce | .-..h....).Q.............].U.... |
3fa0 | 2d 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 e8 79 ff ff ff 81 c4 08 00 00 00 68 da 2d 00 0a | -.....L.......QP.y.........h.-.. |
3fc0 | 68 03 00 00 00 29 c1 51 e8 76 c1 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 0a 2e 00 0a 8b | h....).Q.v...........].U........ |
3fe0 | 08 8d 4c 08 04 05 04 00 00 00 51 50 e8 3d ff ff ff 81 c4 08 00 00 00 68 17 2e 00 0a 68 03 00 00 | ..L.......QP.=.........h....h... |
4000 | 00 29 c1 51 e8 3a c1 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 48 2e 00 0a 8b 08 8d 4c 08 | .).Q.:...........].U...H......L. |
4020 | 04 05 04 00 00 00 51 50 e8 01 ff ff ff 81 c4 08 00 00 00 68 50 2e 00 0a 68 00 00 00 00 29 c1 51 | ......QP...........hP...h....).Q |
4040 | e8 fe c0 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 50 51 52 8b 4d 08 8b 51 08 8d 54 11 0c 52 | .............].U..PQR.M..Q..T..R |
4060 | 8b 51 04 8d 54 11 0c 52 e8 68 01 00 00 81 c4 08 00 00 00 29 c8 2d 0c 00 00 00 89 41 04 5a 59 58 | .Q..T..R.h.........).-.....A.ZYX |
4080 | 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 82 c4 ff ff 81 c4 04 00 00 00 68 7e 2e 00 0a 68 f2 00 00 | ..].U..h...............h~...h... |
40a0 | 0a e8 b4 ca ff ff 81 c4 08 00 00 00 68 8c 2e 00 0a 68 00 00 00 00 b8 f2 00 00 0a ff 70 04 e8 80 | ............h....h..........p... |
40c0 | c0 ff ff 81 c4 0c 00 00 00 68 f2 00 00 0a e8 7c ff ff ff 81 c4 04 00 00 00 68 bc 2e 00 0a 68 05 | .........h.....|.........h....h. |
40e0 | 00 00 00 b8 f2 00 00 0a ff 70 04 e8 53 c0 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 | .........p..S...........].U..h.. |
4100 | 00 0a e8 0c c4 ff ff 81 c4 04 00 00 00 68 df 2e 00 0a 68 f2 00 00 0a e8 3e ca ff ff 81 c4 08 00 | .............h....h.....>....... |
4120 | 00 00 68 ec 2e 00 0a 68 00 00 00 00 b8 f2 00 00 0a ff 70 04 e8 0a c0 ff ff 81 c4 0c 00 00 00 68 | ..h....h..........p............h |
4140 | f2 00 00 0a e8 06 ff ff ff 81 c4 04 00 00 00 68 2b 2f 00 0a 68 05 00 00 00 b8 f2 00 00 0a ff 70 | ...............h+/..h..........p |
4160 | 04 e8 dd bf ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 96 c3 ff ff 81 c4 04 | ..............].U..h............ |
4180 | 00 00 00 68 5d 2f 00 0a 68 f2 00 00 0a e8 c8 c9 ff ff 81 c4 08 00 00 00 b8 f2 00 00 0a c7 40 04 | ...h]/..h.....................@. |
41a0 | 02 00 00 00 68 f2 00 00 0a e8 a1 fe ff ff 81 c4 04 00 00 00 68 6c 2f 00 0a 68 07 00 00 00 b8 f2 | ....h...............hl/..h...... |
41c0 | 00 00 0a ff 70 04 e8 78 bf ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 51 52 8b 4d 08 8b 55 0c | ....p..x...........].U..QR.M..U. |
41e0 | 31 c0 41 39 d1 73 0c 8a 01 3d 29 00 00 00 74 03 41 eb f0 89 c8 5a 59 89 ec 5d c3 55 89 e5 b8 a5 | 1.A9.s...=)...t.A....ZY..].U.... |
4200 | 2f 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 e8 c0 ff ff ff 81 c4 08 00 00 00 68 b3 2f 00 0a | /.....L.......QP...........h./.. |
4220 | 68 05 00 00 00 29 c1 51 e8 16 bf ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 df 2f 00 0a 8b | h....).Q.............].U..../... |
4240 | 08 8d 4c 08 04 05 04 00 00 00 51 50 e8 84 ff ff ff 81 c4 08 00 00 00 68 ec 2f 00 0a 68 04 00 00 | ..L.......QP...........h./..h... |
4260 | 00 29 c1 51 e8 da be ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 27 30 00 0a 8b 08 8d 4c 08 | .).Q.............].U...'0.....L. |
4280 | 04 05 04 00 00 00 51 50 e8 48 ff ff ff 81 c4 08 00 00 00 68 30 30 00 0a 68 00 00 00 00 29 c1 51 | ......QP.H.........h00..h....).Q |
42a0 | e8 9e be ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 50 51 56 8b 75 0c 8b 06 8d 44 06 0c 50 8d | .............].U..PQV.u....D..P. |
42c0 | 46 0c 50 89 e1 51 ff 75 08 e8 85 f0 ff ff 81 c4 08 00 00 00 81 c4 08 00 00 00 5e 59 58 89 ec 5d | F.P..Q.u..................^YX..] |
42e0 | c3 55 89 e5 68 40 05 00 0a e8 25 c2 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 15 c2 ff ff 81 c4 | .U..h@....%.........hP.......... |
4300 | 04 00 00 00 68 f2 00 00 0a e8 05 c2 ff ff 81 c4 04 00 00 00 68 69 30 00 0a 68 f2 00 00 0a e8 37 | ....h...............hi0..h.....7 |
4320 | c8 ff ff 81 c4 08 00 00 00 68 f2 00 00 0a 68 4c 0d 00 0a e8 77 ff ff ff 81 c4 08 00 00 00 68 4c | .........h....hL....w.........hL |
4340 | 0d 00 0a e8 57 d4 ff ff 81 c4 04 00 00 00 68 71 30 00 0a 68 8f 30 00 0a 68 40 05 00 0a e8 39 ca | ....W.........hq0..h.0..h@....9. |
4360 | ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 50 51 52 53 57 b9 0a 00 00 00 68 00 00 00 00 8b 45 | ..........].U..PQRSW.....h.....E |
4380 | 0c 3d 00 00 00 00 7d 02 f7 d8 99 f7 f9 81 c2 30 00 00 00 52 3d 00 00 00 00 7f ef 81 7d 0c 00 00 | .=....}........0...R=.......}... |
43a0 | 00 00 7d 05 68 2d 00 00 00 8b 7d 08 8b 17 8d 4c 17 0c 8b 5f 08 8d 5c 1f 0c 58 3d 00 00 00 00 74 | ..}.h-....}....L..._..\..X=....t |
43c0 | 0a 39 d9 73 11 88 01 41 42 eb ee 89 17 5f 5b 5a 59 58 89 ec 5d c3 68 97 30 00 0a 68 02 00 00 00 | .9.s...AB...._[ZYX..].h.0..h.... |
43e0 | e8 00 bd ff ff 81 c4 08 00 00 00 bb 01 00 00 00 e8 7f bc ff ff 68 94 00 00 0a e8 14 c1 ff ff 81 | .....................h.......... |
4400 | c4 04 00 00 00 68 09 00 00 00 68 94 00 00 0a e8 58 ff ff ff 81 c4 08 00 00 00 68 bd 30 00 0a 68 | .....h....h.....X.........h.0..h |
4420 | dd 30 00 0a 68 94 00 00 0a e8 6d c9 ff ff 81 c4 0c 00 00 00 c3 68 94 00 00 0a e8 d4 c0 ff ff 81 | .0..h.....m..........h.......... |
4440 | c4 04 00 00 00 68 00 00 00 00 68 94 00 00 0a e8 18 ff ff ff 81 c4 08 00 00 00 68 e2 30 00 0a 68 | .....h....h...............h.0..h |
4460 | 07 31 00 0a 68 94 00 00 0a e8 2d c9 ff ff 81 c4 0c 00 00 00 c3 68 94 00 00 0a e8 94 c0 ff ff 81 | .1..h.....-..........h.......... |
4480 | c4 04 00 00 00 68 0a 00 00 00 68 94 00 00 0a e8 d8 fe ff ff 81 c4 08 00 00 00 68 0c 31 00 0a 68 | .....h....h...............h.1..h |
44a0 | 3c 31 00 0a 68 94 00 00 0a e8 ed c8 ff ff 81 c4 0c 00 00 00 c3 68 94 00 00 0a e8 54 c0 ff ff 81 | <1..h................h.....T.... |
44c0 | c4 04 00 00 00 68 f7 ff ff ff 68 94 00 00 0a e8 98 fe ff ff 81 c4 08 00 00 00 68 42 31 00 0a 68 | .....h....h...............hB1..h |
44e0 | 6b 31 00 0a 68 94 00 00 0a e8 ad c8 ff ff 81 c4 0c 00 00 00 c3 68 94 00 00 0a e8 14 c0 ff ff 81 | k1..h................h.......... |
4500 | c4 04 00 00 00 68 f6 ff ff ff 68 94 00 00 0a e8 58 fe ff ff 81 c4 08 00 00 00 68 71 31 00 0a 68 | .....h....h.....X.........hq1..h |
4520 | aa 31 00 0a 68 94 00 00 0a e8 6d c8 ff ff 81 c4 0c 00 00 00 c3 55 89 e5 51 8b 4d 08 b8 00 00 00 | .1..h.....m..........U..Q.M..... |
4540 | 00 81 f9 30 00 00 00 7c 0d 81 f9 39 00 00 00 7f 05 b8 01 00 00 00 59 89 ec 5d c3 68 2f 00 00 00 | ...0...|...9..........Y..].h/... |
4560 | e8 d0 ff ff ff 81 c4 04 00 00 00 68 b1 31 00 0a 68 00 00 00 00 50 e8 c8 bb ff ff 81 c4 0c 00 00 | ...........h.1..h....P.......... |
4580 | 00 c3 68 30 00 00 00 e8 a9 ff ff ff 81 c4 04 00 00 00 68 d6 31 00 0a 68 01 00 00 00 50 e8 a1 bb | ..h0..............h.1..h....P... |
45a0 | ff ff 81 c4 0c 00 00 00 68 39 00 00 00 e8 83 ff ff ff 81 c4 04 00 00 00 68 f8 31 00 0a 68 01 00 | ........h9..............h.1..h.. |
45c0 | 00 00 50 e8 7b bb ff ff 81 c4 0c 00 00 00 c3 68 3a 00 00 00 e8 5c ff ff ff 81 c4 04 00 00 00 68 | ..P.{..........h:....\.........h |
45e0 | 1a 32 00 0a 68 00 00 00 00 50 e8 54 bb ff ff 81 c4 0c 00 00 00 c3 55 89 e5 8b 45 08 3d 30 00 00 | .2..h....P.T..........U...E.=0.. |
4600 | 00 7c 10 3d 39 00 00 00 7f 09 2d 30 00 00 00 89 ec 5d c3 68 3f 32 00 0a 68 84 0e 00 0a e8 f0 d2 | .|.=9.....-0.....].h?2..h....... |
4620 | ff ff 81 c4 08 00 00 00 50 68 84 0e 00 0a e8 f9 d5 ff ff 81 c4 08 00 00 00 68 08 00 00 0a 68 84 | ........Ph...............h....h. |
4640 | 0e 00 0a e8 ca d2 ff ff 81 c4 08 00 00 00 68 84 0e 00 0a e8 47 d1 ff ff 81 c4 04 00 00 00 bb 01 | ..............h.....G........... |
4660 | 00 00 00 e8 0c ba ff ff 55 89 e5 50 51 56 57 8b 75 08 8b 7d 0c ff 75 08 e8 f4 f1 ff ff 81 c4 04 | ........U..PQVW.u..}..u......... |
4680 | 00 00 00 8b 46 04 3b 06 7c 0f c7 07 00 00 00 00 c7 47 04 00 00 00 00 eb 3e 8b 4e 04 8d 44 0e 0c | ....F.;.|........G......>.N..D.. |
46a0 | 89 07 31 c0 8a 44 0e 0c 3d 23 00 00 00 75 10 8b 06 8d 44 06 0c 89 47 04 8b 06 89 46 04 eb 18 ff | ..1..D..=#...u....D...G....F.... |
46c0 | 75 08 e8 78 f3 ff ff 81 c4 04 00 00 00 8b 4e 04 8d 44 0e 0c 89 47 04 5f 5e 59 58 89 ec 5d c3 55 | u..x..........N..D...G._^YX..].U |
46e0 | 89 e5 68 94 00 00 0a e8 27 be ff ff 81 c4 04 00 00 00 68 00 00 00 00 68 00 00 00 00 89 e1 68 6c | ..h.....'.........h....h......hl |
4700 | 32 00 0a 68 94 00 00 0a e8 4d c4 ff ff 81 c4 08 00 00 00 51 68 94 00 00 0a e8 4a ff ff ff 81 c4 | 2..h.....M.........Qh.....J..... |
4720 | 08 00 00 00 68 74 32 00 0a 68 0e 00 00 00 8b 01 81 e8 94 00 00 0a 50 e8 07 ba ff ff 81 c4 0c 00 | ....ht2..h............P......... |
4740 | 00 00 68 91 32 00 0a 68 10 00 00 00 8b 41 04 81 e8 94 00 00 0a 50 e8 e8 b9 ff ff 81 c4 0c 00 00 | ..h.2..h.....A.......P.......... |
4760 | 00 89 ec 5d c3 55 89 e5 68 94 00 00 0a e8 a1 bd ff ff 81 c4 04 00 00 00 68 00 00 00 00 68 00 00 | ...].U..h...............h....h.. |
4780 | 00 00 89 e1 68 ac 32 00 0a 68 94 00 00 0a e8 c7 c3 ff ff 81 c4 08 00 00 00 51 68 94 00 00 0a e8 | ....h.2..h...............Qh..... |
47a0 | c4 fe ff ff 81 c4 08 00 00 00 68 b5 32 00 0a 68 0e 00 00 00 8b 01 81 e8 94 00 00 0a 50 e8 81 b9 | ..........h.2..h............P... |
47c0 | ff ff 81 c4 0c 00 00 00 68 e8 32 00 0a 68 11 00 00 00 8b 41 04 81 e8 94 00 00 0a 50 e8 62 b9 ff | ........h.2..h.....A.......P.b.. |
47e0 | ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 94 00 00 0a e8 1b bd ff ff 81 c4 04 00 00 00 68 00 | .........].U..h...............h. |
4800 | 00 00 00 68 00 00 00 00 89 e1 51 68 94 00 00 0a e8 53 fe ff ff 81 c4 08 00 00 00 68 19 33 00 0a | ...h......Qh.....S.........h.3.. |
4820 | 68 00 00 00 00 8b 41 04 2b 01 50 e8 13 b9 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 94 00 | h.....A.+.P.............].U..h.. |
4840 | 00 0a e8 cc bc ff ff 81 c4 04 00 00 00 68 00 00 00 00 68 00 00 00 00 89 e1 68 4b 33 00 0a 68 94 | .............h....h......hK3..h. |
4860 | 00 00 0a e8 f2 c2 ff ff 81 c4 08 00 00 00 51 68 94 00 00 0a e8 ef fd ff ff 81 c4 08 00 00 00 68 | ..............Qh...............h |
4880 | 52 33 00 0a 68 00 00 00 00 8b 41 04 2b 01 50 e8 af b8 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 | R3..h.....A.+.P.............].U. |
48a0 | e5 50 51 56 57 8b 75 08 8b 7d 0c ff 75 08 e8 be ef ff ff 81 c4 04 00 00 00 8b 46 04 3b 06 7c 0f | .PQVW.u..}..u.............F.;.|. |
48c0 | c7 07 00 00 00 00 c7 47 04 00 00 00 00 eb 21 8b 4e 04 8d 44 0e 0c 89 07 ff 75 08 e8 5f f1 ff ff | .......G......!.N..D.....u.._... |
48e0 | 81 c4 04 00 00 00 8b 4e 04 8d 44 0e 0c 89 47 04 5f 5e 59 58 89 ec 5d c3 55 89 e5 51 52 56 57 8b | .......N..D...G._^YX..].U..QRVW. |
4900 | 75 08 8b 56 04 68 00 00 00 00 68 00 00 00 00 89 e7 57 68 2f 00 00 00 52 ff 36 e8 32 ed ff ff 81 | u..V.h....h......Wh/...R.6.2.... |
4920 | c4 10 00 00 00 57 68 2f 00 00 00 52 ff 77 04 e8 1d ed ff ff 81 c4 10 00 00 00 57 e8 77 e4 ff ff | .....Wh/...R.w............W.w... |
4940 | 81 c4 04 00 00 00 3d 00 00 00 00 75 18 ff 75 0c 57 e8 1d e5 ff ff 81 c4 08 00 00 00 3d 00 00 00 | ......=....u..u.W...........=... |
4960 | 00 75 07 eb c0 b8 00 00 00 00 81 c4 08 00 00 00 5f 5e 5a 59 89 ec 5d c3 55 89 e5 b8 88 33 00 0a | .u.............._^ZY..].U....3.. |
4980 | 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e6 68 94 33 00 0a 56 e8 5e ff ff ff 81 c4 08 00 00 00 | ...L.......QP..h.3..V.^......... |
49a0 | 68 9d 33 00 0a 68 01 00 00 00 50 e8 93 b7 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 bb 33 | h.3..h....P.............].U....3 |
49c0 | 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e6 68 c3 33 00 0a 56 e8 1c ff ff ff 81 c4 08 00 | .....L.......QP..h.3..V......... |
49e0 | 00 00 68 c8 33 00 0a 68 00 00 00 00 50 e8 51 b7 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 | ..h.3..h....P.Q...........].U... |
4a00 | e7 33 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e6 68 ee 33 00 0a 56 e8 da fe ff ff 81 c4 | .3.....L.......QP..h.3..V....... |
4a20 | 08 00 00 00 68 f3 33 00 0a 68 00 00 00 00 50 e8 0f b7 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 | ....h.3..h....P.............].U. |
4a40 | e5 b8 18 34 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e6 68 21 34 00 0a 56 e8 98 fe ff ff | ...4.....L.......QP..h!4..V..... |
4a60 | 81 c4 08 00 00 00 68 26 34 00 0a 68 01 00 00 00 50 e8 cd b6 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 | ......h&4..h....P.............]. |
4a80 | 55 89 e5 b8 4d 34 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e6 68 56 34 00 0a 56 e8 56 fe | U...M4.....L.......QP..hV4..V.V. |
4aa0 | ff ff 81 c4 08 00 00 00 68 5b 34 00 0a 68 00 00 00 00 50 e8 8b b6 ff ff 81 c4 0c 00 00 00 89 ec | ........h[4..h....P............. |
4ac0 | 5d c3 55 89 e5 51 56 8b 75 08 8b 0e 3b 4e 04 73 25 8b 46 04 29 c8 3d 02 00 00 00 74 19 31 c0 8a | ].U..QV.u...;N.s%.F.).=....t.1.. |
4ae0 | 01 3d 2d 00 00 00 74 0e 3d 30 00 00 00 7c 0e 3d 39 00 00 00 7f 07 b8 00 00 00 00 eb 05 b8 01 00 | .=-...t.=0...|.=9............... |
4b00 | 00 00 5e 59 89 ec 5d c3 55 89 e5 b8 83 34 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 51 | ..^Y..].U....4.....L.......QP..Q |
4b20 | e8 9d ff ff ff 81 c4 04 00 00 00 68 89 34 00 0a 68 00 00 00 00 50 e8 08 b6 ff ff 81 c4 0c 00 00 | ...........h.4..h....P.......... |
4b40 | 00 89 ec 5d c3 55 89 e5 b8 b0 34 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 51 e8 60 ff | ...].U....4.....L.......QP..Q.`. |
4b60 | ff ff 81 c4 04 00 00 00 68 b9 34 00 0a 68 00 00 00 00 50 e8 cb b5 ff ff 81 c4 0c 00 00 00 89 ec | ........h.4..h....P............. |
4b80 | 5d c3 55 89 e5 b8 e3 34 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 51 e8 23 ff ff ff 81 | ].U....4.....L.......QP..Q.#.... |
4ba0 | c4 04 00 00 00 68 eb 34 00 0a 68 00 00 00 00 50 e8 8e b5 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 | .....h.4..h....P.............].U |
4bc0 | 89 e5 b8 0f 35 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 51 e8 e6 fe ff ff 81 c4 04 00 | ....5.....L.......QP..Q......... |
4be0 | 00 00 68 16 35 00 0a 68 01 00 00 00 50 e8 51 b5 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 | ..h.5..h....P.Q...........].U... |
4c00 | 46 35 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 51 e8 a9 fe ff ff 81 c4 04 00 00 00 68 | F5.....L.......QP..Q...........h |
4c20 | 4d 35 00 0a 68 01 00 00 00 50 e8 14 b5 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 b8 7e 35 00 | M5..h....P.............].U...~5. |
4c40 | 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 51 e8 6c fe ff ff 81 c4 04 00 00 00 68 86 35 00 | ....L.......QP..Q.l.........h.5. |
4c60 | 0a 68 00 00 00 00 50 e8 d7 b4 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 51 8b 4d 08 8b 49 04 | .h....P.............].U..Q.M..I. |
4c80 | 31 c0 8a 41 ff 3d 3a 00 00 00 b8 01 00 00 00 74 05 b8 00 00 00 00 59 89 ec 5d c3 55 89 e5 b8 b2 | 1..A.=:........t......Y..].U.... |
4ca0 | 35 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 51 e8 be ff ff ff 81 c4 04 00 00 00 68 ba | 5.....L.......QP..Q...........h. |
4cc0 | 35 00 0a 68 01 00 00 00 50 e8 75 b4 ff ff 81 c4 0c 00 00 00 b8 d5 35 00 0a 8b 08 8d 4c 08 04 05 | 5..h....P.u...........5.....L... |
4ce0 | 04 00 00 00 51 50 89 e1 51 e8 88 ff ff ff 81 c4 04 00 00 00 68 dc 35 00 0a 68 00 00 00 00 50 e8 | ....QP..Q...........h.5..h....P. |
4d00 | 3f b4 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 50 51 52 53 57 8b 7d 08 8b 5d 0c 8b 55 10 31 | ?...........].U..PQRSW.}..]..U.1 |
4d20 | c9 39 d1 7d 24 53 57 e8 aa cd ff ff 81 c4 08 00 00 00 68 20 00 00 00 57 e8 23 ca ff ff 81 c4 08 | .9.}$SW...........h....W.#...... |
4d40 | 00 00 00 c1 eb 08 41 eb d8 5f 5b 5a 59 58 89 ec 5d c3 68 40 05 00 0a e8 b7 b7 ff ff 81 c4 04 00 | ......A.._[ZYX..].h@............ |
4d60 | 00 00 68 50 0d 00 0a e8 a7 b7 ff ff 81 c4 04 00 00 00 68 01 00 00 00 68 ab 00 00 00 68 4c 0d 00 | ..hP..............h....h....hL.. |
4d80 | 0a e8 88 ff ff ff 81 c4 0c 00 00 00 68 4c 0d 00 0a e8 09 ca ff ff 81 c4 04 00 00 00 68 f8 35 00 | ............hL..............h.5. |
4da0 | 0a 68 61 62 20 00 b8 40 05 00 0a ff 70 0c e8 90 b3 ff ff 81 c4 0c 00 00 00 c3 68 40 05 00 0a e8 | .hab...@....p.............h@.... |
4dc0 | 4f b7 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 3f b7 ff ff 81 c4 04 00 00 00 68 02 00 00 00 68 | O.........hP....?.........h....h |
4de0 | 34 12 00 00 68 4c 0d 00 0a e8 20 ff ff ff 81 c4 0c 00 00 00 68 4c 0d 00 0a e8 a1 c9 ff ff 81 c4 | 4...hL..............hL.......... |
4e00 | 04 00 00 00 68 19 36 00 0a 68 3e 36 00 0a 68 40 05 00 0a e8 83 bf ff ff 81 c4 0c 00 00 00 c3 68 | ....h.6..h>6..h@...............h |
4e20 | 40 05 00 0a e8 ea b6 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 da b6 ff ff 81 c4 04 00 00 00 68 | @..............hP..............h |
4e40 | 02 00 00 00 68 ab 00 00 00 68 4c 0d 00 0a e8 bb fe ff ff 81 c4 0c 00 00 00 68 4c 0d 00 0a e8 3c | ....h....hL..............hL....< |
4e60 | c9 ff ff 81 c4 04 00 00 00 68 48 36 00 0a 68 68 36 00 0a 68 40 05 00 0a e8 1e bf ff ff 81 c4 0c | .........hH6..hh6..h@........... |
4e80 | 00 00 00 c3 68 40 05 00 0a e8 85 b6 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 75 b6 ff ff 81 c4 | ....h@..............hP....u..... |
4ea0 | 04 00 00 00 68 02 00 00 00 68 ff ff ff ff 68 4c 0d 00 0a e8 56 fe ff ff 81 c4 0c 00 00 00 68 4c | ....h....h....hL....V.........hL |
4ec0 | 0d 00 0a e8 d7 c8 ff ff 81 c4 04 00 00 00 68 72 36 00 0a 68 92 36 00 0a 68 40 05 00 0a e8 b9 be | ..............hr6..h.6..h@...... |
4ee0 | ff ff 81 c4 0c 00 00 00 c3 55 89 e5 50 56 57 8b 75 0c 68 00 00 00 00 68 00 00 00 00 89 e7 57 68 | .........U..PVW.u.h....h......Wh |
4f00 | 2f 00 00 00 ff 76 04 ff 36 e8 43 e7 ff ff 81 c4 10 00 00 00 57 e8 a8 fb ff ff 81 c4 04 00 00 00 | /....v..6.C.........W........... |
4f20 | 3d 00 00 00 00 74 24 56 ff 75 08 e8 23 e4 ff ff 81 c4 08 00 00 00 68 11 00 00 0a ff 75 08 e8 cf | =....t$V.u..#.........h.....u... |
4f40 | c9 ff ff 81 c4 08 00 00 00 eb 1e 57 e8 1b d0 ff ff 81 c4 04 00 00 00 ff 75 10 50 ff 75 08 e8 ab | ...........W............u.P.u... |
4f60 | fd ff ff 81 c4 0c 00 00 00 81 c4 08 00 00 00 5f 5e 58 89 ec 5d c3 55 89 e5 68 40 05 00 0a e8 90 | ..............._^X..].U..h@..... |
4f80 | b5 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 80 b5 ff ff 81 c4 04 00 00 00 b8 9c 36 00 0a 8b 08 | .........hP................6.... |
4fa0 | 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 68 01 00 00 00 51 68 4c 0d 00 0a e8 2c ff ff ff 81 c4 0c | .L.......QP..h....QhL....,...... |
4fc0 | 00 00 00 68 4c 0d 00 0a e8 d2 c7 ff ff 81 c4 04 00 00 00 68 a2 36 00 0a 68 bc 36 00 0a 68 40 05 | ...hL..............h.6..h.6..h@. |
4fe0 | 00 0a e8 b4 bd ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 40 05 00 0a e8 15 b5 ff ff 81 c4 | ...............].U..h@.......... |
5000 | 04 00 00 00 68 50 0d 00 0a e8 05 b5 ff ff 81 c4 04 00 00 00 b8 c3 36 00 0a 8b 08 8d 4c 08 04 05 | ....hP................6.....L... |
5020 | 04 00 00 00 51 50 89 e1 68 02 00 00 00 51 68 4c 0d 00 0a e8 b1 fe ff ff 81 c4 0c 00 00 00 68 4c | ....QP..h....QhL..............hL |
5040 | 0d 00 0a e8 57 c7 ff ff 81 c4 04 00 00 00 68 c9 36 00 0a 68 e3 36 00 0a 68 40 05 00 0a e8 39 bd | ....W.........h.6..h.6..h@....9. |
5060 | ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 40 05 00 0a e8 9a b4 ff ff 81 c4 04 00 00 00 68 | ..........].U..h@..............h |
5080 | 50 0d 00 0a e8 8a b4 ff ff 81 c4 04 00 00 00 b8 ed 36 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 | P................6.....L.......Q |
50a0 | 50 89 e1 68 02 00 00 00 51 68 4c 0d 00 0a e8 36 fe ff ff 81 c4 0c 00 00 00 68 4c 0d 00 0a e8 dc | P..h....QhL....6.........hL..... |
50c0 | c6 ff ff 81 c4 04 00 00 00 68 f7 36 00 0a 68 1d 37 00 0a 68 40 05 00 0a e8 be bc ff ff 81 c4 0c | .........h.6..h.7..h@........... |
50e0 | 00 00 00 89 ec 5d c3 55 89 e5 68 40 05 00 0a e8 1f b4 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 | .....].U..h@..............hP.... |
5100 | 0f b4 ff ff 81 c4 04 00 00 00 b8 27 37 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 68 02 | ...........'7.....L.......QP..h. |
5120 | 00 00 00 51 68 4c 0d 00 0a e8 bb fd ff ff 81 c4 0c 00 00 00 68 4c 0d 00 0a e8 61 c6 ff ff 81 c4 | ...QhL..............hL....a..... |
5140 | 04 00 00 00 68 2e 37 00 0a 68 4a 37 00 0a 68 40 05 00 0a e8 43 bc ff ff 81 c4 0c 00 00 00 89 ec | ....h.7..hJ7..h@....C........... |
5160 | 5d c3 55 89 e5 68 40 05 00 0a e8 a4 b3 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 94 b3 ff ff 81 | ].U..h@..............hP......... |
5180 | c4 04 00 00 00 b8 52 37 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 68 02 00 00 00 51 68 | ......R7.....L.......QP..h....Qh |
51a0 | 4c 0d 00 0a e8 40 fd ff ff 81 c4 0c 00 00 00 68 4c 0d 00 0a e8 e6 c5 ff ff 81 c4 04 00 00 00 68 | L....@.........hL..............h |
51c0 | 5a 37 00 0a 68 84 37 00 0a 68 40 05 00 0a e8 c8 bb ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 | Z7..h.7..h@................].U.. |
51e0 | 68 40 05 00 0a e8 29 b3 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 19 b3 ff ff 81 c4 04 00 00 00 | h@....).........hP.............. |
5200 | b8 8d 37 00 0a 8b 08 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 68 02 00 00 00 51 68 4c 0d 00 0a e8 | ..7.....L.......QP..h....QhL.... |
5220 | c5 fc ff ff 81 c4 0c 00 00 00 68 4c 0d 00 0a e8 6b c5 ff ff 81 c4 04 00 00 00 68 99 37 00 0a 68 | ..........hL....k.........h.7..h |
5240 | c9 37 00 0a 68 40 05 00 0a e8 4d bb ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 51 52 56 8b 75 | .7..h@....M...........].U..QRV.u |
5260 | 08 8d 4e 0c 8b 16 8d 14 11 39 d1 73 37 ff 71 04 ff 31 e8 ce d2 ff ff 81 c4 08 00 00 00 50 ff 75 | ..N......9.s7.q..1...........P.u |
5280 | 0c e8 21 b1 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 74 05 8d 41 08 eb 05 03 4d 10 eb cc 5e 5a 59 | ..!.........=....t..A....M...^ZY |
52a0 | 89 ec 5d c3 ff 75 14 68 02 00 00 00 e8 34 ae ff ff 81 c4 08 00 00 00 68 d6 37 00 0a 68 02 00 00 | ..]..u.h.....4.........h.7..h... |
52c0 | 00 e8 1f ae ff ff 81 c4 08 00 00 00 ff 75 0c 68 02 00 00 00 e8 0c ae ff ff 81 c4 08 00 00 00 68 | .............u.h...............h |
52e0 | 08 00 00 0a 68 02 00 00 00 e8 f7 ad ff ff 81 c4 08 00 00 00 bb 01 00 00 00 e8 76 ad ff ff 55 89 | ....h.....................v...U. |
5300 | e5 81 ec 18 00 00 00 68 18 00 00 00 68 00 00 00 00 68 00 00 00 00 89 e1 68 a0 0e 00 0a 68 0c 00 | .......h....h....h......h....h.. |
5320 | 00 00 68 f0 37 00 0a 51 e8 07 02 00 00 81 c4 10 00 00 00 68 a0 0e 00 0a 68 0c 00 00 00 68 f8 37 | ..h.7..Q...........h....h....h.7 |
5340 | 00 0a 51 e8 ec 01 00 00 81 c4 10 00 00 00 68 0c 00 00 00 68 00 38 00 0a 51 e8 fa fe ff ff 81 c4 | ..Q...........h....h.8..Q....... |
5360 | 0c 00 00 00 68 08 38 00 0a 68 14 00 00 00 29 c8 50 e8 cd ad ff ff 81 c4 0c 00 00 00 68 0c 00 00 | ....h.8..h....).P...........h... |
5380 | 00 68 1a 38 00 0a 51 e8 cc fe ff ff 81 c4 0c 00 00 00 68 22 38 00 0a 68 20 00 00 00 29 c8 50 e8 | .h.8..Q...........h"8..h....).P. |
53a0 | 9f ad ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 51 52 56 8b 75 08 8d 4e 0c 8b 16 8d 14 11 39 | ............].U..QRV.u..N......9 |
53c0 | d1 73 37 ff 71 04 ff 31 e8 78 d1 ff ff 81 c4 08 00 00 00 50 ff 75 0c e8 97 da ff ff 81 c4 08 00 | .s7.q..1.x.........P.u.......... |
53e0 | 00 00 3d 00 00 00 00 74 05 8d 41 08 eb 05 03 4d 10 eb cc 5e 5a 59 89 ec 5d c3 ff 75 14 68 02 00 | ..=....t..A....M...^ZY..]..u.h.. |
5400 | 00 00 e8 de ac ff ff 81 c4 08 00 00 00 68 34 38 00 0a 68 02 00 00 00 e8 c9 ac ff ff 81 c4 08 00 | .............h48..h............. |
5420 | 00 00 ff 75 0c 68 84 0e 00 0a e8 24 df ff ff 81 c4 08 00 00 00 68 84 0e 00 0a e8 60 c3 ff ff 81 | ...u.h.....$.........h.....`.... |
5440 | c4 04 00 00 00 68 08 00 00 0a 68 02 00 00 00 e8 91 ac ff ff 81 c4 08 00 00 00 bb 01 00 00 00 e8 | .....h....h..................... |
5460 | 10 ac ff ff 55 89 e5 81 ec 18 00 00 00 68 18 00 00 00 68 00 00 00 00 68 00 00 00 00 89 e1 68 a0 | ....U........h....h....h......h. |
5480 | 0e 00 0a 68 0c 00 00 00 68 54 38 00 0a 51 e8 a1 00 00 00 81 c4 10 00 00 00 68 a0 0e 00 0a 68 0c | ...h....hT8..Q...........h....h. |
54a0 | 00 00 00 68 5c 38 00 0a 51 e8 86 00 00 00 81 c4 10 00 00 00 b8 64 38 00 0a 8b 10 8d 54 10 04 05 | ...h\8..Q............d8.....T... |
54c0 | 04 00 00 00 52 50 89 e2 68 0c 00 00 00 52 51 e8 da fe ff ff 81 c4 0c 00 00 00 68 6c 38 00 0a 68 | ....RP..h....RQ...........hl8..h |
54e0 | 14 00 00 00 29 c8 50 e8 57 ac ff ff 81 c4 0c 00 00 00 b8 84 38 00 0a 8b 10 8d 54 10 04 05 04 00 | ....).P.W...........8.....T..... |
5500 | 00 00 52 50 89 e2 68 0c 00 00 00 52 51 e8 9c fe ff ff 81 c4 0c 00 00 00 68 8c 38 00 0a 68 20 00 | ..RP..h....RQ...........h.8..h.. |
5520 | 00 00 29 c8 50 e8 19 ac ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 51 52 56 8b 75 08 8d 4e 0c | ..).P.............].U..QRV.u..N. |
5540 | 8b 16 8d 14 11 39 d1 73 30 ff 71 04 ff 31 e8 f2 cf ff ff 81 c4 08 00 00 00 50 ff 75 0c e8 45 ae | .....9.s0.q..1...........P.u..E. |
5560 | ff ff 81 c4 08 00 00 00 3d 00 00 00 00 74 05 8d 41 08 eb 39 03 4d 10 eb cc 8b 0e 3b 4e 08 73 34 | ........=....t..A..9.M.....;N.s4 |
5580 | ff 75 10 52 e8 4d d4 ff ff 81 c4 08 00 00 00 52 ff 75 0c ff 75 14 e8 e5 d2 ff ff 81 c4 0c 00 00 | .u.R.M.........R.u..u........... |
55a0 | 00 8b 45 10 01 06 89 d0 05 08 00 00 00 5e 5a 59 89 ec 5d c3 68 a4 38 00 0a 68 02 00 00 00 e8 22 | ..E..........^ZY..].h.8..h....." |
55c0 | ab ff ff 81 c4 08 00 00 00 bb 01 00 00 00 e8 a1 aa ff ff 55 89 e5 81 ec 18 00 00 00 68 18 00 00 | ...................U........h... |
55e0 | 00 68 00 00 00 00 68 00 00 00 00 89 e1 68 a0 0e 00 0a 68 0c 00 00 00 68 c5 38 00 0a 51 e8 32 ff | .h....h......h....h....h.8..Q.2. |
5600 | ff ff 81 c4 10 00 00 00 68 cd 38 00 0a 68 14 00 00 00 29 c8 50 e8 29 ab ff ff 81 c4 0c 00 00 00 | ........h.8..h....).P.)......... |
5620 | 68 e9 38 00 0a 68 0c 00 00 00 ff 31 e8 12 ab ff ff 81 c4 0c 00 00 00 ff 71 10 ff 71 0c e8 03 cf | h.8..h.....1............q..q.... |
5640 | ff ff 81 c4 08 00 00 00 68 05 39 00 0a 68 21 39 00 0a 50 e8 77 ae ff ff 81 c4 0c 00 00 00 68 a0 | ........h.9..h!9..P.w.........h. |
5660 | 0e 00 0a 68 0c 00 00 00 68 29 39 00 0a 51 e8 c1 fe ff ff 81 c4 10 00 00 00 68 31 39 00 0a 68 14 | ...h....h)9..Q...........h19..h. |
5680 | 00 00 00 29 c8 50 e8 b8 aa ff ff 81 c4 0c 00 00 00 68 4d 39 00 0a 68 0c 00 00 00 ff 31 e8 a1 aa | ...).P...........hM9..h.....1... |
56a0 | ff ff 81 c4 0c 00 00 00 ff 71 10 ff 71 0c e8 92 ce ff ff 81 c4 08 00 00 00 68 69 39 00 0a 68 85 | .........q..q............hi9..h. |
56c0 | 39 00 0a 50 e8 06 ae ff ff 81 c4 0c 00 00 00 68 a0 0e 00 0a 68 0c 00 00 00 68 8d 39 00 0a 51 e8 | 9..P...........h....h....h.9..Q. |
56e0 | 50 fe ff ff 81 c4 10 00 00 00 68 95 39 00 0a 68 20 00 00 00 29 c8 50 e8 47 aa ff ff 81 c4 0c 00 | P.........h.9..h....).P.G....... |
5700 | 00 00 68 b1 39 00 0a 68 18 00 00 00 ff 31 e8 30 aa ff ff 81 c4 0c 00 00 00 ff 71 1c ff 71 18 e8 | ..h.9..h.....1.0..........q..q.. |
5720 | 21 ce ff ff 81 c4 08 00 00 00 68 cd 39 00 0a 68 e9 39 00 0a 50 e8 95 ad ff ff 81 c4 0c 00 00 00 | !.........h.9..h.9..P........... |
5740 | 89 ec 5d c3 55 89 e5 51 52 53 56 8b 75 08 ff 75 10 ff 75 0c e8 ec cd ff ff 81 c4 08 00 00 00 89 | ..].U..QRSV.u..u..u............. |
5760 | c3 8d 4e 0c 8b 16 8d 14 11 39 d1 73 2e ff 71 04 ff 31 e8 ce cd ff ff 81 c4 08 00 00 00 50 53 e8 | ..N......9.s..q..1...........PS. |
5780 | 23 ac ff ff 81 c4 08 00 00 00 3d 00 00 00 00 74 05 8d 41 08 eb 23 03 4d 14 eb ce 8b 0e 3b 4e 08 | #.........=....t..A..#.M.....;N. |
57a0 | 73 1f 8b 45 14 01 06 8b 45 0c 89 02 8b 45 10 89 42 04 89 d0 05 08 00 00 00 5e 5b 5a 59 89 ec 5d | s..E....E....E..B........^[ZY..] |
57c0 | c3 68 f1 39 00 0a 68 02 00 00 00 e8 15 a9 ff ff 81 c4 08 00 00 00 bb 01 00 00 00 e8 94 a8 ff ff | .h.9..h......................... |
57e0 | 55 89 e5 81 ec 18 00 00 00 68 18 00 00 00 68 00 00 00 00 68 00 00 00 00 89 e1 68 00 00 00 00 68 | U........h....h....h......h....h |
5800 | 00 00 00 00 89 e2 52 68 19 3a 00 0a 68 a0 0e 00 0a e8 6a d0 ff ff 81 c4 0c 00 00 00 68 0c 00 00 | ......Rh.:..h.....j.........h... |
5820 | 00 ff 72 04 ff 32 51 e8 18 ff ff ff 81 c4 10 00 00 00 68 21 3a 00 0a 68 14 00 00 00 29 c8 50 e8 | ..r..2Q...........h!:..h....).P. |
5840 | ff a8 ff ff 81 c4 0c 00 00 00 68 44 3a 00 0a 68 0c 00 00 00 ff 31 e8 e8 a8 ff ff 81 c4 0c 00 00 | ..........hD:..h.....1.......... |
5860 | 00 ff 71 10 ff 71 0c e8 d9 cc ff ff 81 c4 08 00 00 00 68 67 3a 00 0a 68 8a 3a 00 0a 50 e8 4d ac | ..q..q............hg:..h.:..P.M. |
5880 | ff ff 81 c4 0c 00 00 00 52 68 92 3a 00 0a 68 a0 0e 00 0a e8 e8 cf ff ff 81 c4 0c 00 00 00 68 0c | ........Rh.:..h...............h. |
58a0 | 00 00 00 ff 72 04 ff 32 51 e8 96 fe ff ff 81 c4 10 00 00 00 68 9a 3a 00 0a 68 14 00 00 00 29 c8 | ....r..2Q...........h.:..h....). |
58c0 | 50 e8 7d a8 ff ff 81 c4 0c 00 00 00 68 bd 3a 00 0a 68 0c 00 00 00 ff 31 e8 66 a8 ff ff 81 c4 0c | P.}.........h.:..h.....1.f...... |
58e0 | 00 00 00 ff 71 10 ff 71 0c e8 57 cc ff ff 81 c4 08 00 00 00 68 e0 3a 00 0a 68 03 3b 00 0a 50 e8 | ....q..q..W.........h.:..h.;..P. |
5900 | cb ab ff ff 81 c4 0c 00 00 00 52 68 0b 3b 00 0a 68 a0 0e 00 0a e8 66 cf ff ff 81 c4 0c 00 00 00 | ..........Rh.;..h.....f......... |
5920 | 68 0c 00 00 00 ff 72 04 ff 32 51 e8 14 fe ff ff 81 c4 10 00 00 00 68 13 3b 00 0a 68 20 00 00 00 | h.....r..2Q...........h.;..h.... |
5940 | 29 c8 50 e8 fb a7 ff ff 81 c4 0c 00 00 00 68 36 3b 00 0a 68 18 00 00 00 ff 31 e8 e4 a7 ff ff 81 | ).P...........h6;..h.....1...... |
5960 | c4 0c 00 00 00 ff 71 1c ff 71 18 e8 d5 cb ff ff 81 c4 08 00 00 00 68 59 3b 00 0a 68 7c 3b 00 0a | ......q..q............hY;..h|;.. |
5980 | 50 e8 49 ab ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 51 52 56 8b 75 08 8d 4e 0c 8b 16 8d 14 | P.I...........].U..QRV.u..N..... |
59a0 | 11 39 d1 73 30 ff 71 04 ff 31 e8 96 cb ff ff 81 c4 08 00 00 00 50 ff 75 0c e8 b5 d4 ff ff 81 c4 | .9.s0.q..1...........P.u........ |
59c0 | 08 00 00 00 3d 00 00 00 00 74 05 8d 41 08 eb 3b 03 4d 10 eb cc 31 c0 8b 0e 3b 4e 08 7d 34 ff 75 | ....=....t..A..;.M...1...;N.}4.u |
59e0 | 10 52 e8 ef cf ff ff 81 c4 08 00 00 00 52 ff 75 0c ff 75 14 e8 2b da ff ff 81 c4 0c 00 00 00 8b | .R...........R.u..u..+.......... |
5a00 | 45 10 01 06 89 d0 05 08 00 00 00 5e 5a 59 89 ec 5d c3 68 84 3b 00 0a 68 02 00 00 00 e8 c4 a6 ff | E..........^ZY..].h.;..h........ |
5a20 | ff 81 c4 08 00 00 00 bb 01 00 00 00 e8 43 a6 ff ff 55 89 e5 81 ec 18 00 00 00 68 18 00 00 00 68 | .............C...U........h....h |
5a40 | 00 00 00 00 68 00 00 00 00 89 e1 b8 ab 3b 00 0a 8b 10 8d 54 10 04 05 04 00 00 00 52 50 89 e2 68 | ....h........;.....T.......RP..h |
5a60 | a0 0e 00 0a 68 0c 00 00 00 52 51 e8 20 ff ff ff 81 c4 10 00 00 00 68 b3 3b 00 0a 68 14 00 00 00 | ....h....RQ...........h.;..h.... |
5a80 | 29 c8 50 e8 bb a6 ff ff 81 c4 0c 00 00 00 68 d5 3b 00 0a 68 0c 00 00 00 ff 31 e8 a4 a6 ff ff 81 | ).P...........h.;..h.....1...... |
5aa0 | c4 0c 00 00 00 ff 71 10 ff 71 0c e8 95 ca ff ff 81 c4 08 00 00 00 68 f7 3b 00 0a 68 19 3c 00 0a | ......q..q............h.;..h.<.. |
5ac0 | 50 e8 09 aa ff ff 81 c4 0c 00 00 00 68 a0 0e 00 0a 68 0c 00 00 00 52 51 e8 b3 fe ff ff 81 c4 10 | P...........h....h....RQ........ |
5ae0 | 00 00 00 68 21 3c 00 0a 68 14 00 00 00 29 c8 50 e8 4e a6 ff ff 81 c4 0c 00 00 00 68 43 3c 00 0a | ...h!<..h....).P.N.........hC<.. |
5b00 | 68 0c 00 00 00 ff 31 e8 37 a6 ff ff 81 c4 0c 00 00 00 ff 71 10 ff 71 0c e8 28 ca ff ff 81 c4 08 | h.....1.7..........q..q..(...... |
5b20 | 00 00 00 68 65 3c 00 0a 68 87 3c 00 0a 50 e8 9c a9 ff ff 81 c4 0c 00 00 00 b8 8f 3c 00 0a 8b 10 | ...he<..h.<..P.............<.... |
5b40 | 8d 54 10 04 05 04 00 00 00 52 50 89 e2 68 a0 0e 00 0a 68 0c 00 00 00 52 51 e8 32 fe ff ff 81 c4 | .T.......RP..h....h....RQ.2..... |
5b60 | 10 00 00 00 68 97 3c 00 0a 68 20 00 00 00 29 c8 50 e8 cd a5 ff ff 81 c4 0c 00 00 00 68 b9 3c 00 | ....h.<..h....).P...........h.<. |
5b80 | 0a 68 18 00 00 00 ff 31 e8 b6 a5 ff ff 81 c4 0c 00 00 00 ff 71 1c ff 71 18 e8 a7 c9 ff ff 81 c4 | .h.....1............q..q........ |
5ba0 | 08 00 00 00 68 db 3c 00 0a 68 fd 3c 00 0a 50 e8 1b a9 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 | ....h.<..h.<..P.............].U. |
5bc0 | e5 51 52 56 8b 75 08 8d 4e 0c 8b 16 8d 14 11 39 d1 73 37 ff 71 04 ff 31 e8 68 c9 ff ff 81 c4 08 | .QRV.u..N......9.s7.q..1.h...... |
5be0 | 00 00 00 50 ff 75 0c e8 bb a7 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 74 05 8d 41 08 eb 05 03 4d | ...P.u............=....t..A....M |
5c00 | 10 eb cc 5e 5a 59 89 ec 5d c3 ff 75 14 ff 75 18 e8 fd bc ff ff 81 c4 08 00 00 00 68 05 3d 00 0a | ...^ZY..]..u..u............h.=.. |
5c20 | ff 75 18 e8 ea bc ff ff 81 c4 08 00 00 00 ff 75 0c ff 75 18 e8 d9 bc ff ff 81 c4 08 00 00 00 68 | .u.............u..u............h |
5c40 | 08 00 00 0a ff 75 18 e8 c6 bc ff ff 81 c4 08 00 00 00 68 01 00 00 00 ff 75 1c e8 fc b3 ff ff 81 | .....u............h.....u....... |
5c60 | c4 08 00 00 00 bb 01 00 00 00 e8 05 a4 ff ff 55 89 e5 68 62 0d 00 0a e8 97 a8 ff ff 81 c4 04 00 | ...............U..hb............ |
5c80 | 00 00 68 72 0e 00 0a e8 87 a8 ff ff 81 c4 04 00 00 00 81 ec 18 00 00 00 68 18 00 00 00 68 00 00 | ..hr....................h....h.. |
5ca0 | 00 00 68 00 00 00 00 89 e1 68 00 00 00 00 68 00 00 00 00 89 e2 68 18 00 00 00 52 e8 7b b3 ff ff | ..h......h....h......h....R.{... |
5cc0 | 81 c4 08 00 00 00 68 a0 0e 00 0a 68 0c 00 00 00 68 27 3d 00 0a 51 e8 59 f8 ff ff 81 c4 10 00 00 | ......h....h....h'=..Q.Y........ |
5ce0 | 00 52 68 6e 0e 00 0a 68 2f 3d 00 0a 68 0c 00 00 00 68 36 3d 00 0a 51 e8 c2 fe ff ff 81 c4 18 00 | .Rhn...h/=..h....h6=..Q......... |
5d00 | 00 00 68 3e 3d 00 0a 68 14 00 00 00 29 c8 50 e8 2f a4 ff ff 81 c4 0c 00 00 00 52 68 6e 0e 00 0a | ..h>=..h....).P./.........Rhn... |
5d20 | 68 58 3d 00 0a 68 0c 00 00 00 68 5f 3d 00 0a 51 e8 89 fe ff ff 59 81 c4 10 00 00 00 5a 68 67 3d | hX=..h....h_=..Q.....Y......Zhg= |
5d40 | 00 0a 68 02 00 00 00 ff 72 04 e8 f4 a3 ff ff 81 c4 0c 00 00 00 81 c4 2c 00 00 00 5d c3 55 89 e5 | ..h.....r..............,...].U.. |
5d60 | 51 52 56 8b 75 08 8d 4e 0c 8b 16 8d 14 11 39 d1 73 37 ff 71 04 ff 31 e8 c9 c7 ff ff 81 c4 08 00 | QRV.u..N......9.s7.q..1......... |
5d80 | 00 00 50 ff 75 0c e8 e8 d0 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 74 05 8d 41 08 eb 05 03 4d 10 | ..P.u............=....t..A....M. |
5da0 | eb cc 5e 5a 59 89 ec 5d c3 ff 75 14 ff 75 18 e8 5e bb ff ff 81 c4 08 00 00 00 68 81 3d 00 0a ff | ..^ZY..]..u..u..^.........h.=... |
5dc0 | 75 18 e8 4b bb ff ff 81 c4 08 00 00 00 ff 75 0c ff 75 18 e8 7b d5 ff ff 81 c4 08 00 00 00 68 08 | u..K..........u..u..{.........h. |
5de0 | 00 00 0a ff 75 18 e8 27 bb ff ff 81 c4 08 00 00 00 68 01 00 00 00 ff 75 1c e8 5d b2 ff ff 81 c4 | ....u..'.........h.....u..]..... |
5e00 | 08 00 00 00 bb 01 00 00 00 e8 66 a2 ff ff 55 89 e5 68 62 0d 00 0a e8 f8 a6 ff ff 81 c4 04 00 00 | ..........f...U..hb............. |
5e20 | 00 68 72 0e 00 0a e8 e8 a6 ff ff 81 c4 04 00 00 00 81 ec 18 00 00 00 68 18 00 00 00 68 00 00 00 | .hr....................h....h... |
5e40 | 00 68 00 00 00 00 89 e1 68 00 00 00 00 68 00 00 00 00 89 e2 b8 a9 3d 00 0a 8b 18 8d 5c 18 04 05 | .h......h....h........=.....\... |
5e60 | 04 00 00 00 53 50 89 e3 68 18 00 00 00 52 e8 c8 b1 ff ff 81 c4 08 00 00 00 68 a0 0e 00 0a 68 0c | ....SP..h....R...........h....h. |
5e80 | 00 00 00 68 b1 3d 00 0a 51 e8 a6 f6 ff ff 81 c4 10 00 00 00 52 68 6e 0e 00 0a 68 b9 3d 00 0a 68 | ...h.=..Q...........Rhn...h.=..h |
5ea0 | 0c 00 00 00 53 51 e8 b2 fe ff ff 59 5b 81 c4 0c 00 00 00 5a 68 c0 3d 00 0a 68 14 00 00 00 29 c8 | ....SQ.....Y[......Zh.=..h....). |
5ec0 | 50 e8 7d a2 ff ff 81 c4 0c 00 00 00 b8 e0 3d 00 0a 05 04 00 00 00 89 03 05 08 00 00 00 89 43 04 | P.}...........=...............C. |
5ee0 | 52 68 6e 0e 00 0a 68 ec 3d 00 0a 68 0c 00 00 00 53 51 e8 66 fe ff ff 59 5b 81 c4 0c 00 00 00 5a | Rhn...h.=..h....SQ.f...Y[......Z |
5f00 | 68 f3 3d 00 0a 68 02 00 00 00 ff 72 04 e8 31 a2 ff ff 81 c4 0c 00 00 00 81 c4 34 00 00 00 5d c3 | h.=..h.....r..1...........4...]. |
5f20 | 55 89 e5 51 52 56 8b 75 08 8d 4e 0c 8b 16 8d 14 11 39 d1 73 30 ff 71 04 ff 31 e8 06 c6 ff ff 81 | U..QRV.u..N......9.s0.q..1...... |
5f40 | c4 08 00 00 00 50 ff 75 0c e8 59 a4 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 74 05 8d 41 08 eb 0a | .....P.u..Y.........=....t..A... |
5f60 | 03 4d 10 eb cc b8 00 00 00 00 5e 5a 59 89 ec 5d c3 55 89 e5 81 ec 18 00 00 00 68 18 00 00 00 68 | .M........^ZY..].U........h....h |
5f80 | 00 00 00 00 68 00 00 00 00 89 e1 68 a0 0e 00 0a 68 0c 00 00 00 68 0d 3e 00 0a 51 e8 94 f5 ff ff | ....h......h....h....h.>..Q..... |
5fa0 | 81 c4 10 00 00 00 68 0c 00 00 00 68 15 3e 00 0a 51 e8 6a ff ff ff 81 c4 0c 00 00 00 68 1d 3e 00 | ......h....h.>..Q.j.........h.>. |
5fc0 | 0a 68 14 00 00 00 29 c8 50 e8 75 a1 ff ff 81 c4 0c 00 00 00 68 35 3e 00 0a 68 0c 00 00 00 ff 31 | .h....).P.u.........h5>..h.....1 |
5fe0 | e8 5e a1 ff ff 81 c4 0c 00 00 00 ff 71 10 ff 71 0c e8 4f c5 ff ff 81 c4 08 00 00 00 68 4d 3e 00 | .^..........q..q..O.........hM>. |
6000 | 0a 68 65 3e 00 0a 50 e8 c3 a4 ff ff 81 c4 0c 00 00 00 68 0c 00 00 00 68 6d 3e 00 0a 51 e8 fe fe | .he>..P...........h....hm>..Q... |
6020 | ff ff 81 c4 0c 00 00 00 68 75 3e 00 0a 68 00 00 00 00 50 e8 0b a1 ff ff 81 c4 0c 00 00 00 89 ec | ........hu>..h....P............. |
6040 | 5d c3 55 89 e5 51 52 56 8b 75 08 8d 4e 0c 8b 16 8d 14 11 39 d1 73 30 ff 71 04 ff 31 e8 e4 c4 ff | ].U..QRV.u..N......9.s0.q..1.... |
6060 | ff 81 c4 08 00 00 00 50 ff 75 0c e8 03 ce ff ff 81 c4 08 00 00 00 3d 00 00 00 00 74 05 8d 41 08 | .......P.u............=....t..A. |
6080 | eb 0a 03 4d 10 eb cc b8 00 00 00 00 5e 5a 59 89 ec 5d c3 55 89 e5 81 ec 18 00 00 00 68 18 00 00 | ...M........^ZY..].U........h... |
60a0 | 00 68 00 00 00 00 68 00 00 00 00 89 e1 68 a0 0e 00 0a 68 0c 00 00 00 68 8d 3e 00 0a 51 e8 72 f4 | .h....h......h....h....h.>..Q.r. |
60c0 | ff ff 81 c4 10 00 00 00 b8 95 3e 00 0a 8b 10 8d 54 10 04 05 04 00 00 00 52 50 89 e2 68 0c 00 00 | ..........>.....T.......RP..h... |
60e0 | 00 52 51 e8 5a ff ff ff 81 c4 0c 00 00 00 68 9d 3e 00 0a 68 14 00 00 00 29 c8 50 e8 43 a0 ff ff | .RQ.Z.........h.>..h....).P.C... |
6100 | 81 c4 0c 00 00 00 68 bb 3e 00 0a 68 0c 00 00 00 ff 31 e8 2c a0 ff ff 81 c4 0c 00 00 00 ff 71 10 | ......h.>..h.....1.,..........q. |
6120 | ff 71 0c e8 1d c4 ff ff 81 c4 08 00 00 00 68 d9 3e 00 0a 68 f7 3e 00 0a 50 e8 91 a3 ff ff 81 c4 | .q............h.>..h.>..P....... |
6140 | 0c 00 00 00 b8 ff 3e 00 0a 8b 10 8d 54 10 04 05 04 00 00 00 52 50 89 e2 68 0c 00 00 00 52 51 e8 | ......>.....T.......RP..h....RQ. |
6160 | de fe ff ff 81 c4 0c 00 00 00 68 07 3f 00 0a 68 00 00 00 00 50 e8 c9 9f ff ff 81 c4 0c 00 00 00 | ..........h.?..h....P........... |
6180 | 89 ec 5d c3 55 89 e5 50 51 52 56 57 8b 75 08 8b 4e 08 8b 7d 0c 8b 17 3b 57 08 7d 47 3b 4e 04 7c | ..].U..PQRVW.u..N..}...;W.}G;N.| |
61a0 | 26 8d 46 04 50 e8 69 a3 ff ff 81 c4 04 00 00 00 31 c9 50 ff 36 e8 53 af ff ff 81 c4 08 00 00 00 | &.F.P.i.........1.P.6.S......... |
61c0 | 3d 00 00 00 00 74 0e 31 c0 8a 44 0e 10 88 44 17 0c 41 42 eb c2 89 4e 08 89 17 5f 5e 5a 59 58 89 | =....t.1..D...D..AB...N..._^ZYX. |
61e0 | ec 5d c3 68 25 3f 00 0a 68 02 00 00 00 e8 f3 9e ff ff 81 c4 08 00 00 00 bb 01 00 00 00 e8 72 9e | .].h%?..h.....................r. |
6200 | ff ff 68 94 00 00 0a e8 07 a3 ff ff 81 c4 04 00 00 00 68 e0 00 00 0a e8 f7 a2 ff ff 81 c4 04 00 | ..h...............h............. |
6220 | 00 00 68 b0 00 00 0a e8 e7 a2 ff ff 81 c4 04 00 00 00 68 46 3f 00 0a 68 94 00 00 0a e8 19 a9 ff | ..h...............hF?..h........ |
6240 | ff 81 c4 08 00 00 00 68 b0 00 00 0a 68 dc 00 00 0a e8 2e ff ff ff 81 c4 08 00 00 00 68 4f 3f 00 | .......h....h...............hO?. |
6260 | 0a 68 61 3f 00 0a 68 b0 00 00 0a e8 2b ab ff ff 81 c4 0c 00 00 00 c3 55 89 e5 51 8b 45 08 8b 08 | .ha?..h.....+..........U..Q.E... |
6280 | 8d 4c 08 04 05 04 00 00 00 51 50 89 e1 51 e8 11 00 00 00 81 c4 04 00 00 00 81 c4 08 00 00 00 59 | .L.......QP..Q.................Y |
62a0 | 89 ec 5d c3 55 89 e5 51 8b 4d 08 68 6a 3f 00 0a 51 e8 42 e6 ff ff 81 c4 08 00 00 00 3d 00 00 00 | ..].U..Q.M.hj?..Q.B.........=... |
62c0 | 00 b8 04 00 00 00 75 5c 68 73 3f 00 0a 51 e8 25 e6 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 b8 04 | ......u\hs?..Q.%.........=...... |
62e0 | 00 00 00 75 3f 68 7d 3f 00 0a 51 e8 08 e6 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 b8 02 00 00 00 | ...u?h}?..Q...........=......... |
6300 | 75 22 68 86 3f 00 0a 51 e8 eb e5 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 b8 02 00 00 00 75 05 b8 | u"h.?..Q...........=.........u.. |
6320 | 01 00 00 00 59 89 ec 5d c3 55 89 e5 68 90 3f 00 0a e8 41 ff ff ff 81 c4 04 00 00 00 68 9c 3f 00 | ....Y..].U..h.?...A.........h.?. |
6340 | 0a 50 68 01 00 00 00 e8 f7 9d ff ff 81 c4 0c 00 00 00 68 c0 3f 00 0a e8 1b ff ff ff 81 c4 04 00 | .Ph...............h.?........... |
6360 | 00 00 68 cb 3f 00 0a 50 68 02 00 00 00 e8 d1 9d ff ff 81 c4 0c 00 00 00 68 ee 3f 00 0a e8 f5 fe | ..h.?..Ph...............h.?..... |
6380 | ff ff 81 c4 04 00 00 00 68 f9 3f 00 0a 50 68 04 00 00 00 e8 ab 9d ff ff 81 c4 0c 00 00 00 68 1c | ........h.?..Ph...............h. |
63a0 | 40 00 0a e8 cf fe ff ff 81 c4 04 00 00 00 68 29 40 00 0a 50 68 01 00 00 00 e8 85 9d ff ff 81 c4 | @.............h)@..Ph........... |
63c0 | 0c 00 00 00 68 4e 40 00 0a e8 a9 fe ff ff 81 c4 04 00 00 00 68 5c 40 00 0a 50 68 02 00 00 00 e8 | ....hN@.............h\@..Ph..... |
63e0 | 5f 9d ff ff 81 c4 0c 00 00 00 68 82 40 00 0a e8 83 fe ff ff 81 c4 04 00 00 00 68 90 40 00 0a 50 | _.........h.@.............h.@..P |
6400 | 68 04 00 00 00 e8 39 9d ff ff 81 c4 0c 00 00 00 68 b6 40 00 0a e8 5d fe ff ff 81 c4 04 00 00 00 | h.....9.........h.@...]......... |
6420 | 68 bc 40 00 0a 50 68 01 00 00 00 e8 13 9d ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 50 51 52 | h.@..Ph.................].U..PQR |
6440 | 57 8b 7d 08 8b 55 0c 8d 4a 04 8b 12 01 ca 31 c0 39 d1 73 17 68 01 00 00 00 8a 01 50 57 e8 ac e8 | W.}..U..J.....1.9.s.h......PW... |
6460 | ff ff 81 c4 0c 00 00 00 41 eb e5 5f 5a 59 58 89 ec 5d c3 55 89 e5 68 40 05 00 0a e8 93 a0 ff ff | ........A.._ZYX..].U..h@........ |
6480 | 81 c4 04 00 00 00 68 50 0d 00 0a e8 83 a0 ff ff 81 c4 04 00 00 00 68 01 02 03 00 68 03 00 00 00 | ......hP..............h....h.... |
64a0 | 89 e1 51 68 4c 0d 00 0a e8 8d ff ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 e2 b2 ff ff 81 c4 04 | ..QhL..............hL........... |
64c0 | 00 00 00 68 e8 40 00 0a 68 03 41 00 0a 68 40 05 00 0a e8 36 ab ff ff 81 c4 0c 00 00 00 89 ec 5d | ...h.@..h.A..h@....6...........] |
64e0 | c3 55 89 e5 50 51 56 57 8b 75 08 8b 7d 0c 68 20 00 00 00 ff 75 08 e8 96 d2 ff ff 81 c4 08 00 00 | .U..PQVW.u..}.h.....u........... |
6500 | 00 8b 46 04 3b 06 7c 0f c7 07 00 00 00 00 c7 47 04 00 00 00 00 eb 57 8b 4e 04 8d 44 0e 0c 89 07 | ..F.;.|........G......W.N..D.... |
6520 | 31 c0 8a 44 0e 0c 3d 23 00 00 00 75 10 8b 06 8d 44 06 0c 89 47 04 8b 06 89 46 04 eb 31 31 c0 8a | 1..D..=#...u....D...G....F..11.. |
6540 | 44 0e 0c 3d 22 00 00 00 75 0c 56 e8 e2 d7 ff ff 81 c4 04 00 00 00 ff 75 08 e8 e1 d4 ff ff 81 c4 | D..="...u.V............u........ |
6560 | 04 00 00 00 8b 4e 04 8d 44 0e 0c 89 47 04 5f 5e 59 58 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 90 | .....N..D...G._^YX..].U..h...... |
6580 | 9f ff ff 81 c4 04 00 00 00 68 00 00 00 00 68 00 00 00 00 89 e1 68 10 41 00 0a 68 f2 00 00 0a e8 | .........h....h......h.A..h..... |
65a0 | b6 a5 ff ff 81 c4 08 00 00 00 51 68 f2 00 00 0a e8 2c ff ff ff 81 c4 08 00 00 00 68 18 41 00 0a | ..........Qh.....,.........h.A.. |
65c0 | 68 04 00 00 00 b8 f2 00 00 0a ff 70 04 e8 71 9b ff ff 81 c4 0c 00 00 00 68 56 41 00 0a 68 0e 00 | h..........p..q.........hVA..h.. |
65e0 | 00 00 8b 01 81 e8 f2 00 00 0a 50 e8 53 9b ff ff 81 c4 0c 00 00 00 68 7d 41 00 0a 68 10 00 00 00 | ..........P.S.........h}A..h.... |
6600 | 8b 41 04 81 e8 f2 00 00 0a 50 e8 34 9b ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 | .A.......P.4...........].U..h... |
6620 | 0a e8 ed 9e ff ff 81 c4 04 00 00 00 68 00 00 00 00 68 00 00 00 00 89 e1 68 a2 41 00 0a 68 f2 00 | ............h....h......h.A..h.. |
6640 | 00 0a e8 13 a5 ff ff 81 c4 08 00 00 00 51 68 f2 00 00 0a e8 89 fe ff ff 81 c4 08 00 00 00 68 ab | .............Qh...............h. |
6660 | 41 00 0a 68 05 00 00 00 b8 f2 00 00 0a ff 70 04 e8 ce 9a ff ff 81 c4 0c 00 00 00 68 ff 41 00 0a | A..h..........p............h.A.. |
6680 | 68 0e 00 00 00 8b 01 81 e8 f2 00 00 0a 50 e8 b0 9a ff ff 81 c4 0c 00 00 00 68 3c 42 00 0a 68 11 | h............P...........h<B..h. |
66a0 | 00 00 00 8b 41 04 81 e8 f2 00 00 0a 50 e8 91 9a ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 | ....A.......P.............].U..h |
66c0 | f2 00 00 0a e8 4a 9e ff ff 81 c4 04 00 00 00 68 00 00 00 00 68 00 00 00 00 89 e1 51 68 f2 00 00 | .....J.........h....h......Qh... |
66e0 | 0a e8 fb fd ff ff 81 c4 08 00 00 00 68 77 42 00 0a 68 00 00 00 00 8b 41 04 2b 01 50 e8 42 9a ff | ............hwB..h.....A.+.P.B.. |
6700 | ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 fb 9d ff ff 81 c4 04 00 00 00 68 00 | .........].U..h...............h. |
6720 | 00 00 00 68 00 00 00 00 89 e1 68 b3 42 00 0a 68 f2 00 00 0a e8 21 a4 ff ff 81 c4 08 00 00 00 51 | ...h......h.B..h.....!.........Q |
6740 | 68 f2 00 00 0a e8 97 fd ff ff 81 c4 08 00 00 00 68 c4 42 00 0a 68 0d 00 00 00 8b 01 81 e8 f2 00 | h...............h.B..h.......... |
6760 | 00 0a 50 e8 db 99 ff ff 81 c4 0c 00 00 00 68 02 43 00 0a 68 18 00 00 00 8b 41 04 81 e8 f2 00 00 | ..P...........h.C..h.....A...... |
6780 | 0a 50 e8 bc 99 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 75 9d ff ff 81 c4 | .P.............].U..h.....u..... |
67a0 | 04 00 00 00 68 00 00 00 00 68 00 00 00 00 89 e1 68 3e 43 00 0a 68 f2 00 00 0a e8 9b a3 ff ff 81 | ....h....h......h>C..h.......... |
67c0 | c4 08 00 00 00 51 68 f2 00 00 0a e8 11 fd ff ff 81 c4 08 00 00 00 68 4b 43 00 0a 68 0d 00 00 00 | .....Qh...............hKC..h.... |
67e0 | 8b 01 81 e8 f2 00 00 0a 50 e8 55 99 ff ff 81 c4 0c 00 00 00 68 8e 43 00 0a 68 15 00 00 00 8b 41 | ........P.U.........h.C..h.....A |
6800 | 04 81 e8 f2 00 00 0a 50 e8 36 99 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 89 e5 68 a0 0e 00 0a ff 35 | .......P.6...........]...h.....5 |
6820 | a8 0e 00 0a e8 45 9b ff ff 81 c4 08 00 00 00 81 7d 00 01 00 00 00 7e 27 68 cf 43 00 0a ff 75 08 | .....E..........}.....~'h.C...u. |
6840 | e8 6b 99 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 74 0d e8 28 23 00 00 8b 1d 0d 00 00 0a eb 1a 68 | .k.........=....t..(#..........h |
6860 | 28 05 00 0a 68 c4 00 00 0a e8 10 00 00 00 81 c4 08 00 00 00 bb 00 00 00 00 e8 f6 97 ff ff 55 89 | (...h.........................U. |
6880 | e5 50 51 52 53 81 ec 00 02 00 00 68 00 02 00 00 68 00 00 00 00 68 00 00 00 00 89 e1 68 00 00 00 | .PQRS......h....h....h......h... |
68a0 | 00 68 00 00 00 00 89 e2 31 db 51 e8 63 9c ff ff 81 c4 04 00 00 00 51 ff 75 08 e8 5d c2 ff ff 81 | .h......1.Q.c.........Q.u..].... |
68c0 | c4 08 00 00 00 81 39 00 00 00 00 0f 84 b2 00 00 00 52 51 e8 90 dd ff ff 81 c4 08 00 00 00 52 e8 | ......9..........RQ...........R. |
68e0 | d3 c4 ff ff 81 c4 04 00 00 00 3d 00 00 00 00 0f 85 7a 00 00 00 68 d7 43 00 0a 52 e8 73 c5 ff ff | ..........=......z...h.C..R.s... |
6900 | 81 c4 08 00 00 00 3d 00 00 00 00 0f 84 22 00 00 00 52 51 e8 50 dd ff ff 81 c4 08 00 00 00 68 dd | ......=......"...RQ.P.........h. |
6920 | 43 00 0a 52 e8 4a c5 ff ff 81 c4 08 00 00 00 89 c3 eb 3c 51 e8 0c 9c ff ff 81 c4 04 00 00 00 81 | C..R.J............<Q............ |
6940 | fb 00 00 00 00 74 14 ff 75 0c 51 e8 24 0a 00 00 81 c4 08 00 00 00 e9 4f ff ff ff ff 75 0c 51 e8 | .....t..u.Q.$..........O....u.Q. |
6960 | 47 04 00 00 81 c4 08 00 00 00 e9 3b ff ff ff 51 ff 75 0c e8 37 d9 ff ff 81 c4 08 00 00 00 e9 27 | G..........;...Q.u..7..........' |
6980 | ff ff ff ff 75 0c e8 14 ae ff ff 81 c4 04 00 00 00 81 c4 14 02 00 00 5b 5a 59 58 89 ec 5d c3 55 | ....u..................[ZYX..].U |
69a0 | 89 e5 68 f2 00 00 0a e8 67 9b ff ff 81 c4 04 00 00 00 68 02 05 00 0a e8 57 9b ff ff 81 c4 04 00 | ..h.....g.........h.....W....... |
69c0 | 00 00 68 40 05 00 0a e8 47 9b ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 37 9b ff ff 81 c4 04 00 | ..h@....G.........hP....7....... |
69e0 | 00 00 68 4c 0d 00 0a 68 fe 04 00 0a e8 8d fe ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 9e ad ff | ..hL...h...............hL....... |
6a00 | ff 81 c4 04 00 00 00 68 e5 43 00 0a 68 16 44 00 0a 68 40 05 00 0a e8 80 a3 ff ff 81 c4 0c 00 00 | .......h.C..h.D..h@............. |
6a20 | 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 e1 9a ff ff 81 c4 04 00 00 00 68 02 05 00 0a e8 d1 9a | ...].U..h...............h....... |
6a40 | ff ff 81 c4 04 00 00 00 68 40 05 00 0a e8 c1 9a ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 b1 9a | ........h@..............hP...... |
6a60 | ff ff 81 c4 04 00 00 00 68 1a 44 00 0a 68 f2 00 00 0a e8 e3 a0 ff ff 81 c4 08 00 00 00 68 4c 0d | ........h.D..h...............hL. |
6a80 | 00 0a 68 fe 04 00 0a e8 f2 fd ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 03 ad ff ff 81 c4 04 00 | ..h...............hL............ |
6aa0 | 00 00 68 22 44 00 0a 68 5c 44 00 0a 68 40 05 00 0a e8 57 a5 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 | ..h"D..h\D..h@....W...........]. |
6ac0 | 55 89 e5 68 f2 00 00 0a e8 46 9a ff ff 81 c4 04 00 00 00 68 02 05 00 0a e8 36 9a ff ff 81 c4 04 | U..h.....F.........h.....6...... |
6ae0 | 00 00 00 68 40 05 00 0a e8 26 9a ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 16 9a ff ff 81 c4 04 | ...h@....&.........hP........... |
6b00 | 00 00 00 68 64 44 00 0a 68 f2 00 00 0a e8 48 a0 ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a 68 fe 04 | ...hdD..h.....H.........hL...h.. |
6b20 | 00 0a e8 57 fd ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 68 ac ff ff 81 c4 04 00 00 00 68 73 44 | ...W.........hL....h.........hsD |
6b40 | 00 0a 68 a8 44 00 0a 68 40 05 00 0a e8 4a a2 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 | ..h.D..h@....J...........].U..h. |
6b60 | 00 00 0a e8 ab 99 ff ff 81 c4 04 00 00 00 68 02 05 00 0a e8 9b 99 ff ff 81 c4 04 00 00 00 68 40 | ..............h...............h@ |
6b80 | 05 00 0a e8 8b 99 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 7b 99 ff ff 81 c4 04 00 00 00 68 b7 | ..............hP....{.........h. |
6ba0 | 44 00 0a 68 f2 00 00 0a e8 ad 9f ff ff 81 c4 08 00 00 00 68 c7 44 00 0a 68 f2 00 00 0a e8 98 9f | D..h...............h.D..h....... |
6bc0 | ff ff 81 c4 08 00 00 00 68 d7 44 00 0a 68 f2 00 00 0a e8 83 9f ff ff 81 c4 08 00 00 00 68 4c 0d | ........h.D..h...............hL. |
6be0 | 00 0a 68 fe 04 00 0a e8 92 fc ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 a3 ab ff ff 81 c4 04 00 | ..h...............hL............ |
6c00 | 00 00 68 e5 44 00 0a 68 0d 45 00 0a 68 40 05 00 0a e8 f7 a3 ff ff 81 c4 0c 00 00 00 68 1c 45 00 | ..h.D..h.E..h@..............h.E. |
6c20 | 0a 68 44 45 00 0a 68 40 05 00 0a e8 dd a3 ff ff 81 c4 0c 00 00 00 68 53 45 00 0a 68 7b 45 00 0a | .hDE..h@..............hSE..h{E.. |
6c40 | 68 40 05 00 0a e8 c3 a3 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 b2 98 ff | h@................].U..h........ |
6c60 | ff 81 c4 04 00 00 00 68 02 05 00 0a e8 a2 98 ff ff 81 c4 04 00 00 00 68 40 05 00 0a e8 92 98 ff | .......h...............h@....... |
6c80 | ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 82 98 ff ff 81 c4 04 00 00 00 68 8e 45 00 0a 68 f2 00 00 | .......hP..............h.E..h... |
6ca0 | 0a e8 b4 9e ff ff 81 c4 08 00 00 00 68 9e 45 00 0a 68 f2 00 00 0a e8 9f 9e ff ff 81 c4 08 00 00 | ............h.E..h.............. |
6cc0 | 00 68 b4 45 00 0a 68 f2 00 00 0a e8 8a 9e ff ff 81 c4 08 00 00 00 68 ca 45 00 0a 68 f2 00 00 0a | .h.E..h...............h.E..h.... |
6ce0 | e8 75 9e ff ff 81 c4 08 00 00 00 68 da 45 00 0a 68 f2 00 00 0a e8 60 9e ff ff 81 c4 08 00 00 00 | .u.........h.E..h.....`......... |
6d00 | 68 4c 0d 00 0a 68 fe 04 00 0a e8 6f fb ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 80 aa ff ff 81 | hL...h.....o.........hL......... |
6d20 | c4 04 00 00 00 68 e8 45 00 0a 68 17 46 00 0a 68 40 05 00 0a e8 d4 a2 ff ff 81 c4 0c 00 00 00 68 | .....h.E..h.F..h@..............h |
6d40 | 26 46 00 0a 68 55 46 00 0a 68 40 05 00 0a e8 ba a2 ff ff 81 c4 0c 00 00 00 68 7c 46 00 0a 68 ab | &F..hUF..h@..............h|F..h. |
6d60 | 46 00 0a 68 40 05 00 0a e8 a0 a2 ff ff 81 c4 0c 00 00 00 68 c9 46 00 0a 68 f8 46 00 0a 68 40 05 | F..h@..............h.F..h.F..h@. |
6d80 | 00 0a e8 86 a2 ff ff 81 c4 0c 00 00 00 68 07 47 00 0a 68 36 47 00 0a 68 40 05 00 0a e8 6c a2 ff | .............h.G..h6G..h@....l.. |
6da0 | ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 50 51 52 68 00 00 00 00 68 00 00 00 00 89 e1 51 ff 75 | .........].U..PQRh....h......Q.u |
6dc0 | 08 e8 a2 d8 ff ff 81 c4 08 00 00 00 51 e8 e5 bf ff ff 81 c4 04 00 00 00 3d 00 00 00 00 0f 85 8e | ............Q...........=....... |
6de0 | 00 00 00 8b 11 31 c0 8a 02 3d 23 00 00 00 75 15 51 ff 75 0c e8 5a c5 ff ff 81 c4 08 00 00 00 0f | .....1...=#...u.Q.u..Z.......... |
6e00 | 85 7f 00 00 00 8b 51 04 31 c0 8a 42 ff 3d 3a 00 00 00 75 13 ff 75 08 ff 75 0c e8 90 d4 ff ff 81 | ......Q.1..B.=:...u..u..u....... |
6e20 | c4 08 00 00 00 75 5d 68 49 47 00 0a 51 e8 c6 da ff ff 81 c4 08 00 00 00 3d 00 00 00 00 74 19 68 | .....u]hIG..Q...........=....t.h |
6e40 | 04 00 00 00 51 ff 75 0c e8 9c e0 ff ff 81 c4 0c 00 00 00 e9 65 ff ff ff 68 01 00 00 00 51 ff 75 | ....Q.u.............e...h....Q.u |
6e60 | 0c e8 83 e0 ff ff 81 c4 0c 00 00 00 e9 4c ff ff ff 68 08 00 00 0a ff 75 0c e8 94 aa ff ff 81 c4 | .............L...h.....u........ |
6e80 | 08 00 00 00 81 c4 08 00 00 00 5a 59 58 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 75 96 ff ff 81 c4 | ..........ZYX..].U..h.....u..... |
6ea0 | 04 00 00 00 68 40 05 00 0a e8 65 96 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 55 96 ff ff 81 c4 | ....h@....e.........hP....U..... |
6ec0 | 04 00 00 00 68 52 47 00 0a 68 f2 00 00 0a e8 87 9c ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a 68 f2 | ....hRG..h...............hL...h. |
6ee0 | 00 00 0a e8 c3 fe ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 a7 a8 ff ff 81 c4 04 00 00 00 68 5c | ..............hL..............h\ |
6f00 | 47 00 0a 68 8d 47 00 0a 68 40 05 00 0a e8 89 9e ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 | G..h.G..h@................].U..h |
6f20 | f2 00 00 0a e8 ea 95 ff ff 81 c4 04 00 00 00 68 40 05 00 0a e8 da 95 ff ff 81 c4 04 00 00 00 68 | ...............h@..............h |
6f40 | 50 0d 00 0a e8 ca 95 ff ff 81 c4 04 00 00 00 68 97 47 00 0a 68 f2 00 00 0a e8 fc 9b ff ff 81 c4 | P..............h.G..h........... |
6f60 | 08 00 00 00 68 4c 0d 00 0a 68 f2 00 00 0a e8 38 fe ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 1c | ....hL...h.....8.........hL..... |
6f80 | a8 ff ff 81 c4 04 00 00 00 68 a3 47 00 0a 68 d2 47 00 0a 68 40 05 00 0a e8 fe 9d ff ff 81 c4 0c | .........h.G..h.G..h@........... |
6fa0 | 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 5f 95 ff ff 81 c4 04 00 00 00 68 40 05 00 0a e8 | .....].U..h....._.........h@.... |
6fc0 | 4f 95 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 3f 95 ff ff 81 c4 04 00 00 00 68 de 47 00 0a 68 | O.........hP....?.........h.G..h |
6fe0 | f2 00 00 0a e8 71 9b ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a 68 f2 00 00 0a e8 ad fd ff ff 81 c4 | .....q.........hL...h........... |
7000 | 08 00 00 00 68 4c 0d 00 0a e8 91 a7 ff ff 81 c4 04 00 00 00 68 ec 47 00 0a 68 1a 48 00 0a 68 40 | ....hL..............h.G..h.H..h@ |
7020 | 05 00 0a e8 73 9d ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 d4 94 ff ff 81 | ....s...........].U..h.......... |
7040 | c4 04 00 00 00 68 40 05 00 0a e8 c4 94 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 b4 94 ff ff 81 | .....h@..............hP......... |
7060 | c4 04 00 00 00 68 2a 48 00 0a 68 f2 00 00 0a e8 e6 9a ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a 68 | .....h*H..h...............hL...h |
7080 | f2 00 00 0a e8 22 fd ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 06 a7 ff ff 81 c4 04 00 00 00 68 | .....".........hL..............h |
70a0 | 36 48 00 0a 68 5d 48 00 0a 68 40 05 00 0a e8 e8 9c ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 | 6H..h]H..h@................].U.. |
70c0 | 68 f2 00 00 0a e8 49 94 ff ff 81 c4 04 00 00 00 68 40 05 00 0a e8 39 94 ff ff 81 c4 04 00 00 00 | h.....I.........h@....9......... |
70e0 | 68 50 0d 00 0a e8 29 94 ff ff 81 c4 04 00 00 00 68 6e 48 00 0a 68 f2 00 00 0a e8 5b 9a ff ff 81 | hP....).........hnH..h.....[.... |
7100 | c4 08 00 00 00 68 4c 0d 00 0a 68 f2 00 00 0a e8 97 fc ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 | .....hL...h...............hL.... |
7120 | 7b a6 ff ff 81 c4 04 00 00 00 68 7a 48 00 0a 68 a7 48 00 0a 68 40 05 00 0a e8 5d 9c ff ff 81 c4 | {.........hzH..h.H..h@....]..... |
7140 | 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 be 93 ff ff 81 c4 04 00 00 00 68 40 05 00 0a | ......].U..h...............h@... |
7160 | e8 ae 93 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 9e 93 ff ff 81 c4 04 00 00 00 68 af 48 00 0a | ...........hP..............h.H.. |
7180 | 68 f2 00 00 0a e8 d0 99 ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a 68 f2 00 00 0a e8 0c fc ff ff 81 | h...............hL...h.......... |
71a0 | c4 08 00 00 00 68 4c 0d 00 0a e8 f0 a5 ff ff 81 c4 04 00 00 00 68 b6 48 00 0a 68 de 48 00 0a 68 | .....hL..............h.H..h.H..h |
71c0 | 40 05 00 0a e8 d2 9b ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 33 93 ff ff | @................].U..h.....3... |
71e0 | 81 c4 04 00 00 00 68 40 05 00 0a e8 23 93 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 13 93 ff ff | ......h@....#.........hP........ |
7200 | 81 c4 04 00 00 00 68 e9 48 00 0a 68 f2 00 00 0a e8 45 99 ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a | ......h.H..h.....E.........hL... |
7220 | 68 f2 00 00 0a e8 81 fb ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 65 a5 ff ff 81 c4 04 00 00 00 | h...............hL....e......... |
7240 | 68 f6 48 00 0a 68 1e 49 00 0a 68 40 05 00 0a e8 47 9b ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 | h.H..h.I..h@....G...........].U. |
7260 | e5 68 f2 00 00 0a e8 a8 92 ff ff 81 c4 04 00 00 00 68 40 05 00 0a e8 98 92 ff ff 81 c4 04 00 00 | .h...............h@............. |
7280 | 00 68 50 0d 00 0a e8 88 92 ff ff 81 c4 04 00 00 00 68 2d 49 00 0a 68 f2 00 00 0a e8 ba 98 ff ff | .hP..............h-I..h......... |
72a0 | 81 c4 08 00 00 00 68 4c 0d 00 0a 68 f2 00 00 0a e8 f6 fa ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a | ......hL...h...............hL... |
72c0 | e8 da a4 ff ff 81 c4 04 00 00 00 68 45 49 00 0a 68 6d 49 00 0a 68 40 05 00 0a e8 bc 9a ff ff 81 | ...........hEI..hmI..h@......... |
72e0 | c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 1d 92 ff ff 81 c4 04 00 00 00 68 40 05 00 | .......].U..h...............h@.. |
7300 | 0a e8 0d 92 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 fd 91 ff ff 81 c4 04 00 00 00 68 88 49 00 | ............hP..............h.I. |
7320 | 0a 68 f2 00 00 0a e8 2f 98 ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a 68 f2 00 00 0a e8 6b fa ff ff | .h...../.........hL...h.....k... |
7340 | 81 c4 08 00 00 00 68 4c 0d 00 0a e8 4f a4 ff ff 81 c4 04 00 00 00 68 9e 49 00 0a 68 c8 49 00 0a | ......hL....O.........h.I..h.I.. |
7360 | 68 40 05 00 0a e8 31 9a ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 50 51 52 68 00 00 00 00 68 | h@....1...........].U..PQRh....h |
7380 | 00 00 00 00 89 e1 51 ff 75 08 e8 d9 d2 ff ff 81 c4 08 00 00 00 51 e8 1c ba ff ff 81 c4 04 00 00 | ......Q.u............Q.......... |
73a0 | 00 3d 00 00 00 00 75 1c 8b 11 31 c0 8a 02 3d 23 00 00 00 74 0f 8b 51 04 31 c0 8a 42 ff 3d 3a 00 | .=....u...1...=#...t..Q.1..B.=:. |
73c0 | 00 00 75 13 ff 75 08 ff 75 0c e8 e0 ce ff ff 81 c4 08 00 00 00 eb 66 ff 75 0c ff 75 08 e8 68 00 | ..u..u..u.............f.u..u..h. |
73e0 | 00 00 81 c4 08 00 00 00 ff 75 0c ff 75 08 e8 64 02 00 00 81 c4 08 00 00 00 ff 75 0c ff 75 08 e8 | .........u..u..d..........u..u.. |
7400 | 23 04 00 00 81 c4 08 00 00 00 ff 75 0c ff 75 08 e8 52 05 00 00 81 c4 08 00 00 00 ff 75 0c ff 75 | #..........u..u..R..........u..u |
7420 | 08 e8 37 06 00 00 81 c4 08 00 00 00 ff 75 0c ff 75 08 e8 1c 07 00 00 81 c4 08 00 00 00 81 c4 08 | ..7..........u..u............... |
7440 | 00 00 00 5a 59 58 89 ec 5d c3 55 89 e5 50 51 52 53 68 00 00 00 00 68 00 00 00 00 89 e1 68 00 00 | ...ZYX..].U..PQRSh....h......h.. |
7460 | 00 00 68 00 00 00 00 89 e2 ff 75 08 e8 d4 90 ff ff 81 c4 04 00 00 00 51 ff 75 08 e8 e8 d1 ff ff | ..h.......u............Q.u...... |
7480 | 81 c4 08 00 00 00 51 e8 2b b9 ff ff 81 c4 04 00 00 00 3d 00 00 00 00 0f 85 ac 01 00 00 8b 19 31 | ......Q.+.........=............1 |
74a0 | c0 8a 03 3d 23 00 00 00 0f 84 9b 01 00 00 51 68 2f 00 00 00 ff 71 04 ff 31 e8 93 c1 ff ff 81 c4 | ...=#.........Qh/....q..1....... |
74c0 | 10 00 00 00 51 ff 75 0c e8 86 be ff ff 81 c4 08 00 00 00 68 11 00 00 0a ff 75 0c e8 32 a4 ff ff | ....Q.u............h.....u..2... |
74e0 | 81 c4 08 00 00 00 68 e1 49 00 0a 51 e8 82 b9 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 75 35 68 e7 | ......h.I..Q...........=....u5h. |
7500 | 49 00 0a 51 e8 6a b9 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 75 1d 68 ed 49 00 0a 51 e8 52 b9 ff | I..Q.j.........=....u.h.I..Q.R.. |
7520 | ff 81 c4 08 00 00 00 3d 00 00 00 00 75 05 e9 16 01 00 00 52 ff 75 08 e8 2c d1 ff ff 81 c4 08 00 | .......=....u......R.u..,....... |
7540 | 00 00 52 e8 6f b8 ff ff 81 c4 04 00 00 00 3d 00 00 00 00 0f 85 f0 00 00 00 8b 1a 31 c0 8a 03 3d | ..R.o.........=............1...= |
7560 | 23 00 00 00 0f 84 df 00 00 00 52 68 2f 00 00 00 ff 72 04 ff 32 e8 d7 c0 ff ff 81 c4 10 00 00 00 | #.........Rh/....r..2........... |
7580 | 52 ff 75 0c e8 ca bd ff ff 81 c4 08 00 00 00 68 11 00 00 0a ff 75 0c e8 76 a3 ff ff 81 c4 08 00 | R.u............h.....u..v....... |
75a0 | 00 00 68 f3 49 00 0a 51 e8 c6 b8 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 0f 85 8b 00 00 00 68 f9 | ..h.I..Q...........=..........h. |
75c0 | 49 00 0a 52 e8 aa b8 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 0f 84 6f 00 00 00 52 ff 75 08 e8 85 | I..R...........=......o...R.u... |
75e0 | d0 ff ff 81 c4 08 00 00 00 52 e8 c8 b7 ff ff 81 c4 04 00 00 00 3d 00 00 00 00 0f 85 49 00 00 00 | .........R...........=......I... |
7600 | 8b 1a 31 c0 8a 03 3d 23 00 00 00 0f 84 38 00 00 00 52 68 2f 00 00 00 ff 72 04 ff 32 e8 30 c0 ff | ..1...=#.....8...Rh/....r..2.0.. |
7620 | ff 81 c4 10 00 00 00 52 ff 75 0c e8 23 bd ff ff 81 c4 08 00 00 00 68 11 00 00 0a ff 75 0c e8 cf | .......R.u..#.........h.....u... |
7640 | a2 ff ff 81 c4 08 00 00 00 81 c4 10 00 00 00 5b 5a 59 58 89 ec 5d c3 55 89 e5 50 51 52 53 56 57 | ...............[ZYX..].U..PQRSVW |
7660 | 68 00 00 00 00 68 00 00 00 00 89 e1 31 d2 31 db 31 f6 31 ff ff 75 08 e8 c9 8e ff ff 81 c4 04 00 | h....h......1.1.1.1..u.......... |
7680 | 00 00 51 ff 75 08 e8 dd cf ff ff 81 c4 08 00 00 00 51 e8 20 b7 ff ff 81 c4 04 00 00 00 3d 00 00 | ..Q.u............Q...........=.. |
76a0 | 00 00 0f 85 37 01 00 00 52 8b 11 31 c0 8a 02 5a 3d 23 00 00 00 0f 84 24 01 00 00 68 ff 49 00 0a | ....7...R..1...Z=#.....$...h.I.. |
76c0 | 51 e8 32 d2 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 74 18 51 e8 64 14 00 00 81 c4 04 00 00 00 89 | Q.2.........=....t.Q.d.......... |
76e0 | c3 ba 01 00 00 00 e9 97 ff ff ff 68 06 4a 00 0a 51 e8 02 d2 ff ff 81 c4 08 00 00 00 3d 00 00 00 | ...........h.J..Q...........=... |
7700 | 00 74 18 51 e8 34 14 00 00 81 c4 04 00 00 00 89 c6 ba 01 00 00 00 e9 67 ff ff ff 68 0e 4a 00 0a | .t.Q.4.................g...h.J.. |
7720 | 51 e8 d2 d1 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 74 18 51 e8 04 14 00 00 81 c4 04 00 00 00 89 | Q...........=....t.Q............ |
7740 | c6 ba 01 00 00 00 e9 37 ff ff ff 68 16 4a 00 0a 51 e8 a2 d1 ff ff 81 c4 08 00 00 00 3d 00 00 00 | .......7...h.J..Q...........=... |
7760 | 00 74 18 51 e8 d4 13 00 00 81 c4 04 00 00 00 89 c7 ba 01 00 00 00 e9 07 ff ff ff 68 1d 4a 00 0a | .t.Q.......................h.J.. |
7780 | 51 e8 72 d1 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 74 18 51 e8 a4 13 00 00 81 c4 04 00 00 00 89 | Q.r.........=....t.Q............ |
77a0 | c7 ba 01 00 00 00 e9 d7 fe ff ff 68 24 4a 00 0a 51 e8 42 d1 ff ff 81 c4 08 00 00 00 3d 00 00 00 | ...........h$J..Q.B.........=... |
77c0 | 00 0f 84 bb fe ff ff 51 e8 70 13 00 00 81 c4 04 00 00 00 89 c7 ba 01 00 00 00 e9 a3 fe ff ff 81 | .......Q.p...................... |
77e0 | fa 00 00 00 00 74 30 81 e3 03 00 00 00 c1 e3 03 81 e7 07 00 00 00 09 fb c1 e3 03 81 e6 07 00 00 | .....t0......................... |
7800 | 00 09 f3 68 01 00 00 00 53 ff 75 0c e8 fd d4 ff ff 81 c4 0c 00 00 00 81 c4 08 00 00 00 5f 5e 5b | ...h....S.u.................._^[ |
7820 | 5a 59 58 89 ec 5d c3 55 89 e5 50 51 52 53 56 57 68 00 00 00 00 68 00 00 00 00 89 e1 31 d2 31 db | ZYX..].U..PQRSVWh....h......1.1. |
7840 | 31 f6 31 ff ff 75 08 e8 f9 8c ff ff 81 c4 04 00 00 00 51 ff 75 08 e8 0d ce ff ff 81 c4 08 00 00 | 1.1..u............Q.u........... |
7860 | 00 51 e8 50 b5 ff ff 81 c4 04 00 00 00 3d 00 00 00 00 0f 85 a7 00 00 00 52 8b 11 31 c0 8a 02 5a | .Q.P.........=..........R..1...Z |
7880 | 3d 23 00 00 00 0f 84 94 00 00 00 68 2d 4a 00 0a 51 e8 62 d0 ff ff 81 c4 08 00 00 00 3d 00 00 00 | =#.........h-J..Q.b.........=... |
78a0 | 00 74 18 51 e8 94 12 00 00 81 c4 04 00 00 00 89 c3 ba 01 00 00 00 e9 97 ff ff ff 68 36 4a 00 0a | .t.Q.......................h6J.. |
78c0 | 51 e8 32 d0 ff ff 81 c4 08 00 00 00 3d 00 00 00 00 74 18 51 e8 64 12 00 00 81 c4 04 00 00 00 89 | Q.2.........=....t.Q.d.......... |
78e0 | c6 ba 01 00 00 00 e9 67 ff ff ff 68 3e 4a 00 0a 51 e8 02 d0 ff ff 81 c4 08 00 00 00 3d 00 00 00 | .......g...h>J..Q...........=... |
7900 | 00 0f 84 4b ff ff ff 51 e8 30 12 00 00 81 c4 04 00 00 00 89 c7 ba 01 00 00 00 e9 33 ff ff ff 81 | ...K...Q.0.................3.... |
7920 | fa 00 00 00 00 74 30 81 e3 03 00 00 00 c1 e3 03 81 e7 07 00 00 00 09 fb c1 e3 03 81 e6 07 00 00 | .....t0......................... |
7940 | 00 09 f3 68 01 00 00 00 53 ff 75 0c e8 bd d3 ff ff 81 c4 0c 00 00 00 81 c4 08 00 00 00 5f 5e 5b | ...h....S.u.................._^[ |
7960 | 5a 59 58 89 ec 5d c3 55 89 e5 50 51 52 68 00 00 00 00 68 00 00 00 00 89 e1 ff 75 08 e8 c4 8b ff | ZYX..].U..PQRh....h.......u..... |
7980 | ff 81 c4 04 00 00 00 51 ff 75 08 e8 d8 cc ff ff 81 c4 08 00 00 00 51 e8 1b b4 ff ff 81 c4 04 00 | .......Q.u............Q......... |
79a0 | 00 00 3d 00 00 00 00 0f 85 a3 00 00 00 8b 11 31 c0 8a 02 3d 23 00 00 00 0f 84 92 00 00 00 68 47 | ..=............1...=#.........hG |
79c0 | 4a 00 0a 51 e8 2f cf ff ff 81 c4 08 00 00 00 3d 00 00 00 00 74 19 68 04 00 00 00 51 ff 75 0c e8 | J..Q./.........=....t.h....Q.u.. |
79e0 | 05 d5 ff ff 81 c4 0c 00 00 00 e9 61 00 00 00 68 51 4a 00 0a 51 e8 fe ce ff ff 81 c4 08 00 00 00 | ...........a...hQJ..Q........... |
7a00 | 3d 00 00 00 00 74 19 68 02 00 00 00 51 ff 75 0c e8 d4 d4 ff ff 81 c4 0c 00 00 00 e9 30 00 00 00 | =....t.h....Q.u.............0... |
7a20 | 68 5b 4a 00 0a 51 e8 cd ce ff ff 81 c4 08 00 00 00 3d 00 00 00 00 0f 84 4b ff ff ff 68 01 00 00 | h[J..Q...........=......K...h... |
7a40 | 00 51 ff 75 0c e8 9f d4 ff ff 81 c4 0c 00 00 00 81 c4 08 00 00 00 5a 59 58 89 ec 5d c3 55 89 e5 | .Q.u..................ZYX..].U.. |
7a60 | 50 51 52 68 00 00 00 00 68 00 00 00 00 89 e1 ff 75 08 e8 ce 8a ff ff 81 c4 04 00 00 00 51 ff 75 | PQRh....h.......u............Q.u |
7a80 | 08 e8 e2 cb ff ff 81 c4 08 00 00 00 51 e8 25 b3 ff ff 81 c4 04 00 00 00 3d 00 00 00 00 0f 85 a3 | ............Q.%.........=....... |
7aa0 | 00 00 00 8b 11 31 c0 8a 02 3d 23 00 00 00 0f 84 92 00 00 00 68 64 4a 00 0a 51 e8 39 ce ff ff 81 | .....1...=#.........hdJ..Q.9.... |
7ac0 | c4 08 00 00 00 3d 00 00 00 00 74 19 68 04 00 00 00 51 ff 75 0c e8 0f d4 ff ff 81 c4 0c 00 00 00 | .....=....t.h....Q.u............ |
7ae0 | e9 61 00 00 00 68 6d 4a 00 0a 51 e8 08 ce ff ff 81 c4 08 00 00 00 3d 00 00 00 00 74 19 68 02 00 | .a...hmJ..Q...........=....t.h.. |
7b00 | 00 00 51 ff 75 0c e8 de d3 ff ff 81 c4 0c 00 00 00 e9 30 00 00 00 68 76 4a 00 0a 51 e8 d7 cd ff | ..Q.u.............0...hvJ..Q.... |
7b20 | ff 81 c4 08 00 00 00 3d 00 00 00 00 0f 84 4b ff ff ff 68 01 00 00 00 51 ff 75 0c e8 a9 d3 ff ff | .......=......K...h....Q.u...... |
7b40 | 81 c4 0c 00 00 00 81 c4 08 00 00 00 5a 59 58 89 ec 5d c3 55 89 e5 68 7e 4a 00 0a ff 75 0c e8 af | ............ZYX..].U..h~J...u... |
7b60 | 9d ff ff 81 c4 08 00 00 00 ff 75 08 ff 75 0c e8 3b c7 ff ff 81 c4 08 00 00 00 89 ec 5d c3 55 89 | ..........u..u..;...........].U. |
7b80 | e5 68 f2 00 00 0a e8 88 89 ff ff 81 c4 04 00 00 00 68 40 05 00 0a e8 78 89 ff ff 81 c4 04 00 00 | .h...............h@....x........ |
7ba0 | 00 68 50 0d 00 0a e8 68 89 ff ff 81 c4 04 00 00 00 68 85 4a 00 0a 68 f2 00 00 0a e8 9a 8f ff ff | .hP....h.........h.J..h......... |
7bc0 | 81 c4 08 00 00 00 68 4c 0d 00 0a 68 f2 00 00 0a e8 9f f7 ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a | ......hL...h...............hL... |
7be0 | e8 ba 9b ff ff 81 c4 04 00 00 00 68 8f 4a 00 0a 68 c7 4a 00 0a 68 40 05 00 0a e8 9c 91 ff ff 81 | ...........h.J..h.J..h@......... |
7c00 | c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 fd 88 ff ff 81 c4 04 00 00 00 68 40 05 00 | .......].U..h...............h@.. |
7c20 | 0a e8 ed 88 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 dd 88 ff ff 81 c4 04 00 00 00 68 d1 4a 00 | ............hP..............h.J. |
7c40 | 0a 68 f2 00 00 0a e8 0f 8f ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a 68 f2 00 00 0a e8 14 f7 ff ff | .h...............hL...h......... |
7c60 | 81 c4 08 00 00 00 68 4c 0d 00 0a e8 2f 9b ff ff 81 c4 04 00 00 00 68 dd 4a 00 0a 68 13 4b 00 0a | ......hL..../.........h.J..h.K.. |
7c80 | 68 40 05 00 0a e8 11 91 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 72 88 ff | h@................].U..h.....r.. |
7ca0 | ff 81 c4 04 00 00 00 68 40 05 00 0a e8 62 88 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 52 88 ff | .......h@....b.........hP....R.. |
7cc0 | ff 81 c4 04 00 00 00 68 1f 4b 00 0a 68 f2 00 00 0a e8 84 8e ff ff 81 c4 08 00 00 00 68 4c 0d 00 | .......h.K..h...............hL.. |
7ce0 | 0a 68 f2 00 00 0a e8 89 f6 ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 a4 9a ff ff 81 c4 04 00 00 | .h...............hL............. |
7d00 | 00 68 32 4b 00 0a 68 68 4b 00 0a 68 40 05 00 0a e8 86 90 ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 | .h2K..hhK..h@................].U |
7d20 | 89 e5 68 f2 00 00 0a e8 e7 87 ff ff 81 c4 04 00 00 00 68 40 05 00 0a e8 d7 87 ff ff 81 c4 04 00 | ..h...............h@............ |
7d40 | 00 00 68 50 0d 00 0a e8 c7 87 ff ff 81 c4 04 00 00 00 68 81 4b 00 0a 68 f2 00 00 0a e8 f9 8d ff | ..hP..............h.K..h........ |
7d60 | ff 81 c4 08 00 00 00 68 4c 0d 00 0a 68 f2 00 00 0a e8 fe f5 ff ff 81 c4 08 00 00 00 68 4c 0d 00 | .......hL...h...............hL.. |
7d80 | 0a e8 19 9a ff ff 81 c4 04 00 00 00 68 9a 4b 00 0a 68 cc 4b 00 0a 68 40 05 00 0a e8 fb 8f ff ff | ............h.K..h.K..h@........ |
7da0 | 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 5c 87 ff ff 81 c4 04 00 00 00 68 40 05 | ........].U..h.....\.........h@. |
7dc0 | 00 0a e8 4c 87 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 3c 87 ff ff 81 c4 04 00 00 00 68 ee 4b | ...L.........hP....<.........h.K |
7de0 | 00 0a 68 f2 00 00 0a e8 6e 8d ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a 68 f2 00 00 0a e8 73 f5 ff | ..h.....n.........hL...h.....s.. |
7e00 | ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 8e 99 ff ff 81 c4 04 00 00 00 68 07 4c 00 0a 68 39 4c 00 | .......hL..............h.L..h9L. |
7e20 | 0a 68 40 05 00 0a e8 70 8f ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 d1 86 | .h@....p...........].U..h....... |
7e40 | ff ff 81 c4 04 00 00 00 68 40 05 00 0a e8 c1 86 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 b1 86 | ........h@..............hP...... |
7e60 | ff ff 81 c4 04 00 00 00 68 5b 4c 00 0a 68 f2 00 00 0a e8 e3 8c ff ff 81 c4 08 00 00 00 68 4c 0d | ........h[L..h...............hL. |
7e80 | 00 0a 68 f2 00 00 0a e8 e8 f4 ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 03 99 ff ff 81 c4 04 00 | ..h...............hL............ |
7ea0 | 00 00 68 74 4c 00 0a 68 a6 4c 00 0a 68 40 05 00 0a e8 e5 8e ff ff 81 c4 0c 00 00 00 89 ec 5d c3 | ..htL..h.L..h@................]. |
7ec0 | 55 89 e5 68 f2 00 00 0a e8 46 86 ff ff 81 c4 04 00 00 00 68 40 05 00 0a e8 36 86 ff ff 81 c4 04 | U..h.....F.........h@....6...... |
7ee0 | 00 00 00 68 50 0d 00 0a e8 26 86 ff ff 81 c4 04 00 00 00 68 c8 4c 00 0a 68 f2 00 00 0a e8 58 8c | ...hP....&.........h.L..h.....X. |
7f00 | ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a 68 f2 00 00 0a e8 5d f4 ff ff 81 c4 08 00 00 00 68 4c 0d | ........hL...h.....].........hL. |
7f20 | 00 0a e8 78 98 ff ff 81 c4 04 00 00 00 68 e7 4c 00 0a 68 1c 4d 00 0a 68 40 05 00 0a e8 5a 8e ff | ...x.........h.L..h.M..h@....Z.. |
7f40 | ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 bb 85 ff ff 81 c4 04 00 00 00 68 40 | .........].U..h...............h@ |
7f60 | 05 00 0a e8 ab 85 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 9b 85 ff ff 81 c4 04 00 00 00 68 47 | ..............hP..............hG |
7f80 | 4d 00 0a 68 f2 00 00 0a e8 cd 8b ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a 68 f2 00 00 0a e8 d2 f3 | M..h...............hL...h....... |
7fa0 | ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 ed 97 ff ff 81 c4 04 00 00 00 68 66 4d 00 0a 68 9b 4d | ........hL..............hfM..h.M |
7fc0 | 00 0a 68 40 05 00 0a e8 cf 8d ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 30 | ..h@................].U..h.....0 |
7fe0 | 85 ff ff 81 c4 04 00 00 00 68 40 05 00 0a e8 20 85 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 10 | .........h@..............hP..... |
8000 | 85 ff ff 81 c4 04 00 00 00 68 c6 4d 00 0a 68 f2 00 00 0a e8 42 8b ff ff 81 c4 08 00 00 00 68 4c | .........h.M..h.....B.........hL |
8020 | 0d 00 0a 68 f2 00 00 0a e8 47 f3 ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 62 97 ff ff 81 c4 04 | ...h.....G.........hL....b...... |
8040 | 00 00 00 68 df 4d 00 0a 68 16 4e 00 0a 68 40 05 00 0a e8 44 8d ff ff 81 c4 0c 00 00 00 89 ec 5d | ...h.M..h.N..h@....D...........] |
8060 | c3 55 89 e5 68 f2 00 00 0a e8 a5 84 ff ff 81 c4 04 00 00 00 68 40 05 00 0a e8 95 84 ff ff 81 c4 | .U..h...............h@.......... |
8080 | 04 00 00 00 68 50 0d 00 0a e8 85 84 ff ff 81 c4 04 00 00 00 68 35 4e 00 0a 68 f2 00 00 0a e8 b7 | ....hP..............h5N..h...... |
80a0 | 8a ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a 68 f2 00 00 0a e8 bc f2 ff ff 81 c4 08 00 00 00 68 4c | .........hL...h...............hL |
80c0 | 0d 00 0a e8 d7 96 ff ff 81 c4 04 00 00 00 68 54 4e 00 0a 68 92 4e 00 0a 68 40 05 00 0a e8 b9 8c | ..............hTN..h.N..h@...... |
80e0 | ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 1a 84 ff ff 81 c4 04 00 00 00 68 | ..........].U..h...............h |
8100 | 40 05 00 0a e8 0a 84 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 fa 83 ff ff 81 c4 04 00 00 00 68 | @..............hP..............h |
8120 | ba 4e 00 0a 68 f2 00 00 0a e8 2c 8a ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a 68 f2 00 00 0a e8 31 | .N..h.....,.........hL...h.....1 |
8140 | f2 ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 4c 96 ff ff 81 c4 04 00 00 00 68 d9 4e 00 0a 68 17 | .........hL....L.........h.N..h. |
8160 | 4f 00 0a 68 40 05 00 0a e8 2e 8c ff ff 81 c4 0c 00 00 00 89 ec 5d c3 55 89 e5 68 f2 00 00 0a e8 | O..h@................].U..h..... |
8180 | 8f 83 ff ff 81 c4 04 00 00 00 68 40 05 00 0a e8 7f 83 ff ff 81 c4 04 00 00 00 68 50 0d 00 0a e8 | ..........h@..............hP.... |
81a0 | 6f 83 ff ff 81 c4 04 00 00 00 68 3f 4f 00 0a 68 f2 00 00 0a e8 a1 89 ff ff 81 c4 08 00 00 00 68 | o.........h?O..h...............h |
81c0 | 4c 0d 00 0a 68 f2 00 00 0a e8 a6 f1 ff ff 81 c4 08 00 00 00 68 4c 0d 00 0a e8 c1 95 ff ff 81 c4 | L...h...............hL.......... |
81e0 | 04 00 00 00 68 5d 4f 00 0a 68 8e 4f 00 0a 68 40 05 00 0a e8 a3 8b ff ff 81 c4 0c 00 00 00 8# Read a text file of SubX instructions from stdin, and convert it into a list
# of whitespace-separated ascii hex bytes on stdout. Label definitions and
# uses are left untouched.
#
# To run:
# $ ./bootstrap translate init.linux 0*.subx apps/subx-params.subx apps/pack.subx -o apps/pack
# $ echo '05/add-to-eax 0x20/imm32' |./bootstrap run apps/pack
# Expected output:
# 05 20 00 00 00 # 05/add-to-eax 0x20/imm32
# The original instruction gets included as a comment at the end of each
# converted line.
#
# There's zero error-checking. For now we assume the input program is valid.
# We'll continue to rely on the C++ version for error messages.
== code
# instruction effective address register displacement immediate
# . op subop mod rm32 base index scale r32
# . 1-3 bytes 3 bits 2 bits 3 bits 3 bits 3 bits 2 bits 2 bits 0/1/2/4 bytes 0/1/2/4 bytes
Entry: # run tests if necessary, convert stdin if not
# . prologue
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# initialize heap
# . Heap = new-segment(Heap-size)
# . . push args
68/push Heap/imm32
ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 . . . Heap-size/disp32 # push *Heap-size
# . . call
e8/call new-segment/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# - if argc > 1 and argv[1] == "test", then return run_tests()
# if (argc <= 1) goto interactive
81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp
7e/jump-if-<= $subx-pack-main:interactive/disp8
# if (!kernel-string-equal?(argv[1], "test")) goto interactive
# . eax = kernel-string-equal?(argv[1], "test")
# . . push args
68/push "test"/imm32
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call kernel-string-equal?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) goto interactive
3d/compare-eax-and 0/imm32/false
74/jump-if-= $subx-pack-main:interactive/disp8
# run-tests()
e8/call run-tests/disp32
# syscall(exit, *Num-test-failures)
8b/copy 0/mod/indirect 5/rm32/.disp32 . . 3/r32/ebx Num-test-failures/disp32 # copy *Num-test-failures to ebx
eb/jump $subx-pack-main:end/disp8
$subx-pack-main:interactive:
# - otherwise convert stdin
# subx-pack(Stdin, Stdout)
# . . push args
68/push Stdout/imm32
68/push Stdin/imm32
# . . call
e8/call subx-pack/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0x8/imm32 # add to esp
# syscall(exit, 0)
bb/copy-to-ebx 0/imm32
$subx-pack-main:end:
e8/call syscall_exit/disp32
# - big picture
# We'll operate on each line/instruction in isolation. That way we only need to
# allocate memory for converting a single instruction.
#
# To pack an entire file, convert every segment in it
# To convert a code segment, convert every instruction (line) until the next segment header
# To convert a non-data segment, convert every word until the next segment header
#
# primary state: line
# stream of 512 bytes; abort if it ever overflows
# conceptual hierarchy within a line:
# line = words separated by ' ', maybe followed by comment starting with '#'
# word = datum until '/', then 0 or more metadata separated by '/'
#
# we won't bother saving the internal structure of lines; reparsing should be cheap using three primitives:
# next-token(stream, delim char) -> slice (start, end pointers)
# next-token-from-slice(start, end, delim char) -> slice
# slice-equal?(slice, string)
subx-pack: # in: (addr buffered-file), out: (addr buffered-file)
# pseudocode:
# var line: (stream byte 512)
# var in-code? = false
# while true
# clear-stream(line)
# read-line-buffered(in, line)
# if (line->write == 0) break # end of file
# var word-slice = next-word(line)
# if slice-empty?(word-slice) # whitespace
# write-stream-data(out, line)
# else if (slice-equal?(word-slice, "=="))
# word-slice = next-word(line)
# in-code? = slice-equal?(word-slice, "code")
# write-stream-data(out, line)
# else if (in-code?)
# rewind-stream(line)
# convert-instruction(line, out)
# else
# rewind-stream(line)
# convert-data(line, out)
# flush(out)
#
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# . save registers
50/push-eax
51/push-ecx
52/push-edx
53/push-ebx
# var line/ecx: (stream byte 512)
81 5/subop/subtract 3/mod/direct 4/rm32/esp . . . . . 0x200/imm32 # subtract from esp
68/push 0x200/imm32/length
68/push 0/imm32/read
68/push 0/imm32/write
89/copy 3/mod/direct 1/rm32/ecx . . . 4/r32/esp . . # copy esp to ecx
# var word-slice/edx: slice
68/push 0/imm32/end
68/push 0/imm32/start
89/copy 3/mod/direct 2/rm32/edx . . . 4/r32/esp . . # copy esp to edx
# var in-code?/ebx: boolean = false
31/xor 3/mod/direct 3/rm32/ebx . . . 3/r32/ebx . . # clear ebx
$subx-pack:loop:
# clear-stream(line)
# . . push args
51/push-ecx
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# read-line-buffered(in, line)
# . . push args
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call read-line-buffered/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
$subx-pack:check0:
# if (line->write == 0) break
81 7/subop/compare 0/mod/indirect 1/rm32/ecx . . . . . 0/imm32 # compare *ecx
0f 84/jump-if-= $subx-pack:break/disp32
#? # dump line {{{
#? # . write(2/stderr, "LL: ")
#? # . . push args
#? 68/push "LL: "/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, line)
#? # . . push args
#? 51/push-ecx
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# next-word(line, word-slice)
# . . push args
52/push-edx
51/push-ecx
# . . call
e8/call next-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
$subx-pack:check1:
# if (slice-empty?(word-slice)) write-stream-data(out, line)
# . eax = slice-empty?(word-slice)
# . . push args
52/push-edx
# . . call
e8/call slice-empty?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . if (eax != false) write-stream-data(out, line)
3d/compare-eax-and 0/imm32/false
0f 85/jump-if-!= $subx-pack:pass-through/disp32
$subx-pack:check2:
#? # dump word-slice {{{
#? # . write(2/stderr, "AA: ")
#? # . . push args
#? 68/push "AA: "/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . clear-stream($Stderr->buffer)
#? # . . push args
#? 68/push $Stderr->buffer/imm32
#? # . . call
#? e8/call clear-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # . write-slice-buffered(Stderr, word-slice)
#? # . . push args
#? 52/push-edx
#? 68/push Stderr/imm32
#? # . . call
#? e8/call write-slice-buffered/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . flush(Stderr)
#? # . . push args
#? 68/push Stderr/imm32
#? # . . call
#? e8/call flush/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# if (!slice-equal?(word-slice, "==")) goto next check
# . eax = slice-equal?(word-slice, "==")
# . . push args
68/push "=="/imm32
52/push-edx
# . . call
e8/call slice-equal?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) goto check3
3d/compare-eax-and 0/imm32/false
0f 84/jump-if-= $subx-pack:check3/disp32
# word-slice = next-word(line)
# . . push args
52/push-edx
51/push-ecx
# . . call
e8/call next-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # dump segment name {{{
#? # . write(2/stderr, "AA: ")
#? # . . push args
#? 68/push "AA: "/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . clear-stream($Stderr->buffer)
#? # . . push args
#? 68/push $Stderr->buffer/imm32
#? # . . call
#? e8/call clear-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # . write-slice-buffered(Stderr, word-slice)
#? # . . push args
#? 52/push-edx
#? 68/push Stderr/imm32
#? # . . call
#? e8/call write-slice-buffered/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . flush(Stderr)
#? # . . push args
#? 68/push Stderr/imm32
#? # . . call
#? e8/call flush/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# in-code? = slice-equal?(word-slice, "code")
# . . push args
68/push "code"/imm32
52/push-edx
# . . call
e8/call slice-equal?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . . in-code? = eax
89/copy 3/mod/direct 3/rm32/ebx . . . 0/r32/eax . . # copy eax to ebx
# write-stream-data(out, line)
eb/jump $subx-pack:pass-through/disp8
$subx-pack:check3:
# else rewind-stream(line)
# . rewind-stream(line)
# . . push args
51/push-ecx
# . . call
e8/call rewind-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# if (in-code? != false) convert-instruction(line, out)
81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0/imm32/false # compare ebx
74/jump-if-= $subx-pack:data/disp8
$subx-pack:code:
# . convert-instruction(line, out)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
51/push-ecx
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . loop
e9/jump $subx-pack:loop/disp32
$subx-pack:data:
# else convert-data(line, out)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
51/push-ecx
# . . call
e8/call convert-data/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . loop
e9/jump $subx-pack:loop/disp32
$subx-pack:pass-through:
# write-stream-data(out, line)
# . . push args
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call write-stream-data/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . loop
e9/jump $subx-pack:loop/disp32
$subx-pack:break:
# flush(out)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
$subx-pack:end:
# . reclaim locals
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0x214/imm32 # add to esp
# . restore registers
5b/pop-to-ebx
5a/pop-to-edx
59/pop-to-ecx
58/pop-to-eax
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-subx-pack-passes-empty-lines-through:
# if a line is empty, pass it along unchanged
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-input-buffered-file->buffer)
# . . push args
68/push $_test-input-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# write nothing to input
# subx-pack(_test-input-buffered-file, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-buffered-file/imm32
# . . call
e8/call subx-pack/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check that the line just passed through
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . check-stream-equal(_test-output-stream, "", msg)
# . . push args
68/push "F - test-subx-pack-passes-empty-lines-through"/imm32
68/push ""/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-subx-pack-passes-lines-with-just-whitespace-through:
# if a line is empty, pass it along unchanged
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-input-buffered-file->buffer)
# . . push args
68/push $_test-input-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, " ")
# . . push args
68/push " "/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# subx-pack(_test-input-buffered-file, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-buffered-file/imm32
# . . call
e8/call subx-pack/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check that the line just passed through
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . check-next-stream-line-equal(_test-output-stream, " ", msg)
# . . push args
68/push "F - test-subx-pack-passes-with-just-whitespace-through"/imm32
68/push " "/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-next-stream-line-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-subx-pack-passes-segment-headers-through:
# if a line starts with '==', pass it along unchanged
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-input-buffered-file->buffer)
# . . push args
68/push $_test-input-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "== abcd 0x1")
# . . push args
68/push "== abcd 0x1"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# subx-pack(_test-input-buffered-file, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-buffered-file/imm32
# . . call
e8/call subx-pack/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check that the line just passed through
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . check-stream-equal(_test-output-stream, "== abcd 0x1", msg)
# . . push args
68/push "F - test-subx-pack-passes-segment-headers-through"/imm32
68/push "== abcd 0x1"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-subx-pack-in-data-segment:
# correctly process lines in the data segment
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-input-buffered-file->buffer)
# . . push args
68/push $_test-input-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# == code 0x1
# == data 0x2
# 3 4/imm32
# . write(_test-input-stream, "== code 0x1")
# . . push args
68/push "== code 0x1\n"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . write(_test-input-stream, "== data 0x2\n")
# . . push args
68/push "== data 0x2\n"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . write(_test-input-stream, "3 4/imm32\n")
# . . push args
68/push "3 4/imm32\n"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# subx-pack(_test-input-buffered-file, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-buffered-file/imm32
# . . call
e8/call subx-pack/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
#? # debug print {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . check-next-stream-line-equal(_test-output-stream, "== code 0x1", msg)
# . . push args
68/push "F - test-subx-pack-in-data-segment/0"/imm32
68/push "== code 0x1"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-next-stream-line-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . check-next-stream-line-equal(_test-output-stream, "== data 0x2", msg)
# . . push args
68/push "F - test-subx-pack-in-data-segment/1"/imm32
68/push "== data 0x2"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-next-stream-line-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . check-next-stream-line-equal(_test-output-stream, "03 04 00 00 00 ", msg)
# . . push args
68/push "F - test-subx-pack-in-data-segment/2"/imm32
68/push "03 04 00 00 00 "/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-next-stream-line-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-subx-pack-code-and-data-segments:
# correctly process lines in both code and data segments
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-input-buffered-file->buffer)
# . . push args
68/push $_test-input-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# == code 0x1
# e8/call 20/disp32
# 68/push 0x20/imm8
# == data 0x2
# 3 4/imm32
# . write(_test-input-stream, "== code 0x1\n")
# . . push args
68/push "== code 0x1\n"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . write(_test-input-stream, "e8/call 20/disp32\n")
# . . push args
68/push "e8/call 20/disp32\n"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . write(_test-input-stream, "68/push 0x20/imm8\n")
# . . push args
68/push "68/push 0x20/imm8\n"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . write(_test-input-stream, "== data 0x2\n")
# . . push args
68/push "== data 0x2\n"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . write(_test-input-stream, "3 4/imm32\n")
# . . push args
68/push "3 4/imm32\n"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# subx-pack(_test-input-buffered-file, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-buffered-file/imm32
# . . call
e8/call subx-pack/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# == code 0x1
# e8 20 00 00 00 # e8/call 20/disp32
# 68 20 # 68/push 0x20/imm8
# == data 0x2
# 03 04 00 00 00
#? # debug print {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . check-next-stream-line-equal(_test-output-stream, "== code 0x1", msg)
# . . push args
68/push "F - test-subx-pack-code-and-data-segments/0"/imm32
68/push "== code 0x1"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-next-stream-line-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . check-next-stream-line-equal(_test-output-stream, "e8 20 00 00 00 # e8/call 20/disp32", msg)
# . . push args
68/push "F - test-subx-pack-code-and-data-segments/1"/imm32
68/push "e8 20 00 00 00 # e8/call 20/disp32"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-next-stream-line-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . check-next-stream-line-equal(_test-output-stream, "68 20 # 68/push 0x20/imm8", msg)
# . . push args
68/push "F - test-subx-pack-code-and-data-segments/2"/imm32
68/push "68 20 # 68/push 0x20/imm8"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-next-stream-line-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . check-next-stream-line-equal(_test-output-stream, "== data 0x2", msg)
# . . push args
68/push "F - test-subx-pack-code-and-data-segments/3"/imm32
68/push "== data 0x2"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-next-stream-line-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . check-next-stream-line-equal(_test-output-stream, "03 04 00 00 00 ", msg)
# . . push args
68/push "F - test-subx-pack-code-and-data-segments/4"/imm32
68/push "03 04 00 00 00 "/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-next-stream-line-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
convert-data: # line: (addr stream byte), out: (addr buffered-file)
# pseudocode:
# var word-slice: slice
# while true
# word-slice = next-word(line)
# if slice-empty?(word-slice) # end of file (maybe including trailing whitespace)
# break # skip emitting some whitespace
# if slice-starts-with?(word-slice, "#") # comment
# write-slice-buffered(out, word-slice)
# return
# if slice-ends-with?(word-slice, ":") # label
# write-stream-data(out, line)
# return
# if has-metadata?(word-slice, "imm32")
# emit(out, word-slice, 4)
# # disp32 is not permitted in data segments, and anything else is only a byte long
# else
# emit(out, word-slice, 1)
# write-buffered(out, "\n")
#
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# . save registers
50/push-eax
51/push-ecx
52/push-edx
# var word-slice/ecx: slice
68/push 0/imm32/end
68/push 0/imm32/start
89/copy 3/mod/direct 1/rm32/ecx . . . 4/r32/esp . . # copy esp to ecx
#? # dump line {{{
#? # . write(2/stderr, "LL: ")
#? # . . push args
#? 68/push "LL: "/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # write-stream(2/stderr, line)
#? # . . push args
#? ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
$convert-data:loop:
# next-word(line, word-slice)
# . . push args
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call next-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # dump word-slice {{{
#? # . write(2/stderr, "AA: ")
#? # . . push args
#? 68/push "AA: "/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . clear-stream($Stderr->buffer)
#? # . . push args
#? 68/push $Stderr->buffer/imm32
#? # . . call
#? e8/call clear-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # . write-slice-buffered(Stderr, word-slice)
#? # . . push args
#? 51/push-ecx
#? 68/push Stderr/imm32
#? # . . call
#? e8/call write-slice-buffered/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . flush(Stderr)
#? # . . push args
#? 68/push Stderr/imm32
#? # . . call
#? e8/call flush/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
$convert-data:check0:
# if (slice-empty?(word-slice)) break
# . eax = slice-empty?(word-slice)
# . . push args
51/push-ecx
# . . call
e8/call slice-empty?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . if (eax != false) break
3d/compare-eax-and 0/imm32/false
0f 85/jump-if-!= $convert-data:break/disp32
$convert-data:check-for-comment:
# if (slice-starts-with?(word-slice, "#"))
# . var start/edx: (addr byte) = word-slice->start
8b/copy 0/mod/indirect 1/rm32/ecx . . . 2/r32/edx . . # copy *ecx to edx
# . var c/eax: byte = *start
31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax
8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 0/r32/AL . . # copy byte at *edx to AL
# . if (c != '#') goto next check
3d/compare-eax-and 0x23/imm32/hash
75/jump-if-!= $convert-data:check-for-label/disp8
$convert-data:comment:
# write-slice-buffered(out, word-slice)
# . . push args
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call write-slice-buffered/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# return
0f 85/jump-if-!= $convert-data:end/disp32
$convert-data:check-for-label:
# if (slice-ends-with?(word-slice, ":"))
# . var end/edx: (addr byte) = word-slice->end
8b/copy 1/mod/*+disp8 1/rm32/ecx . . . 2/r32/edx 4/disp8 . # copy *(ecx+4) to edx
# . var c/eax: byte = *(end-1)
31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax
8a/copy-byte 1/mod/*+disp8 2/rm32/edx . . . 0/r32/AL -1/disp8 . # copy byte at *ecx to AL
# . if (c != ':') goto next check
3d/compare-eax-and 0x3a/imm32/colon
75/jump-if-!= $convert-data:check-for-imm32/disp8
$convert-data:label:
# write-stream-data(out, line)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call write-stream-data/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# return
75/jump-if-!= $convert-data:end/disp8
$convert-data:check-for-imm32:
# if (has-metadata?(word-slice, "imm32"))
# . eax = has-metadata?(ecx, "imm32")
# . . push args
68/push "imm32"/imm32
51/push-ecx
# . . call
e8/call has-metadata?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) process as a single byte
3d/compare-eax-and 0/imm32/false
74/jump-if-= $convert-data:single-byte/disp8
$convert-data:imm32:
# emit(out, word-slice, 4)
# . . push args
68/push 4/imm32
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call emit/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
e9/jump $convert-data:loop/disp32
$convert-data:single-byte:
# emit(out, word-slice, 1)
# . . push args
68/push 1/imm32
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call emit/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
e9/jump $convert-data:loop/disp32
$convert-data:break:
# write-buffered(out, "\n")
# . . push args
68/push Newline/imm32
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call write-buffered/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
$convert-data:end:
# . reclaim locals
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . restore registers
5a/pop-to-edx
59/pop-to-ecx
58/pop-to-eax
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-data-passes-comments-through:
# if a line starts with '#', pass it along unchanged
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "# abcd")
# . . push args
68/push "# abcd"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-data(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-data/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check that the line just passed through
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "# abcd", msg)
# . . push args
68/push "F - test-convert-data-passes-comments-through"/imm32
68/push "# abcd"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-data-passes-labels-through:
# if the first word ends with ':', pass along the entire line unchanged
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "ab: # cd")
# . . push args
68/push "ab: # cd"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-data(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-data/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check that the line just passed through
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . check-stream-equal(_test-output-stream, "ab: # cd", msg)
# . . push args
68/push "F - test-convert-data-passes-labels-through"/imm32
68/push "ab: # cd"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-data-passes-names-through:
# If a word is a valid name, just emit it unchanged.
# Later phases will deal with it.
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "abcd/imm32")
# . . push args
68/push "abcd/imm32"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-data(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-data/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check that the line just passed through
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . check-stream-equal(_test-output-stream, "abcd/imm32 \n", msg)
# . . push args
68/push "F - test-convert-data-passes-names-through"/imm32
68/push "abcd/imm32 \n"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-data-handles-imm32:
# If a word has the /imm32 metadata, emit it in 4 bytes.
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "30/imm32")
# . . push args
68/push "30/imm32"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-data(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-data/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check that 4 bytes were written
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . check-stream-equal(_test-output-stream, "30 00 00 00 \n", msg)
# . . push args
68/push "F - test-convert-data-handles-imm32"/imm32
68/push "30 00 00 00 \n"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-data-handles-single-byte:
# Any metadata but /imm32 will emit a single byte.
# Data segments can't have /disp32, and SubX doesn't support 16-bit operands.
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "30/imm16")
# . . push args
68/push "30/imm16"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-data(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-data/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check that a single byte was written (imm16 is not a valid operand type)
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . check-stream-equal(_test-output-stream, "30 \n", msg)
# . . push args
68/push "F - test-convert-data-handles-single-byte"/imm32
68/push "30 \n"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-data-multiple-bytes:
# Multiple single-byte words in input stream get processed one by one.
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "1 2")
# . . push args
68/push "1 2"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-data(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-data/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . check-stream-equal(_test-output-stream, "01 02 \n", msg)
# . . push args
68/push "F - test-convert-data-multiple-bytes"/imm32
68/push "01 02 \n"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-data-byte-then-name:
# Single-byte word followed by valid name get processed one by one.
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "30 abcd/o")
# . . push args
68/push "30 abcd/o"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-data(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-data/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . check-stream-equal(_test-output-stream, "30 abcd/o \n", msg)
# . . push args
68/push "F - test-convert-data-byte-then-name"/imm32
68/push "30 abcd/o \n"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-data-multiple-words:
# Multiple words in input stream get processed one by one.
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "30 abcd/o 42e1/imm32")
# . . push args
68/push "30 abcd/o 42e1/imm32"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-data(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-data/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "30 abcd/o 42 e1 00 00 \n", msg)
# . . push args
68/push "F - test-convert-data-multiple-words"/imm32
68/push "30 abcd/o e1 42 00 00 \n"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-data-trailing-comment:
# Trailing comments in data segment get appropriately ignored.
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "30/imm32 # comment")
# . . push args
68/push "30/imm32 # comment"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-data(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-data/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "30 00 00 00 # comment", msg)
# . . push args
68/push "F - test-convert-data-trailing-comment"/imm32
68/push "30 00 00 00 # comment"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
# pack an instruction, following the C++ version
#
# zero error handling at the moment (continuing to rely on the C++ version for that):
# missing fields are always 0-filled
# bytes never mentioned are silently dropped; if you don't provide /mod, /rm32 or /r32 you don't get a 0 ModR/M byte. You get *no* ModR/M byte.
# may pick up any of duplicate operands in an instruction
# silently drop extraneous operands
# unceremoniously abort on non-numeric operands except disp or imm
# opcodes must be lowercase and zero padded
# opcodes with misleading operand metadata may get duplicated as operands as well. don't rely on this.
convert-instruction: # line: (addr stream byte), out: (addr buffered-file)
# pseudocode:
# # some early exits
# var word-slice = next-word(line)
# if slice-empty?(word-slice)
# write-stream-data(out, line)
# return
# if slice-starts-with?(word-slice, "#")
# write-stream-data(out, line)
# return
# if slice-ends-with?(word-slice, ":")
# write-stream-data(out, line)
# return
# # really convert
# emit-opcodes(line, out)
# emit-modrm(line, out)
# emit-sib(line, out)
# emit-disp(line, out)
# emit-imm(line, out)
# emit-line-in-comment(line, out)
#
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# . save registers
50/push-eax
51/push-ecx
52/push-edx
# var word-slice/ecx: slice
68/push 0/imm32/end
68/push 0/imm32/start
89/copy 3/mod/direct 1/rm32/ecx . . . 4/r32/esp . . # copy esp to ecx
# next-word(line, word-slice)
# . . push args
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call next-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
$convert-instruction:check0:
# if (slice-empty?(word-slice)) break
# . eax = slice-empty?(word-slice)
# . . push args
51/push-ecx
# . . call
e8/call slice-empty?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . if (eax != false) pass through
3d/compare-eax-and 0/imm32/false
75/jump-if-!= $convert-instruction:pass-through/disp8
$convert-instruction:check1:
# if (slice-starts-with?(word-slice, "#")) write-stream-data(out, line)
# . var start/edx: (addr byte) = word-slice->start
8b/copy 0/mod/indirect 1/rm32/ecx . . . 2/r32/edx . . # copy *ecx to edx
# . var c/eax: byte = *start
31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax
8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 0/r32/AL . . # copy byte at *edx to AL
# . if (c == '#') pass through
3d/compare-eax-and 0x23/imm32/hash
74/jump-if-= $convert-instruction:pass-through/disp8
$convert-instruction:check2:
# if (slice-ends-with?(word-slice, ":")) write-stream-data(out, line)
# . var end/edx: (addr byte) = word-slice->end
8b/copy 1/mod/*+disp8 1/rm32/ecx . . . 2/r32/edx 4/disp8 . # copy *(ecx+4) to edx
# . var c/eax: byte = *(end-1)
31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax
8a/copy-byte 1/mod/*+disp8 2/rm32/edx . . . 0/r32/AL -1/disp8 . # copy byte at *ecx to AL
# . if (c == ':') pass through
3d/compare-eax-and 0x3a/imm32/colon
75/jump-if-!= $convert-instruction:really-convert/disp8
$convert-instruction:pass-through:
# write-stream-data(out, line)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call write-stream-data/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# return
eb/jump $convert-instruction:end/disp8
$convert-instruction:really-convert:
# emit-opcodes(line, out)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call emit-opcodes/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# emit-modrm(line, out)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call emit-modrm/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# emit-sib(line, out)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call emit-sib/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# emit-disp(line, out)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call emit-disp/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# emit-imm(line, out)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call emit-imm/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# emit-line-in-comment(line, out)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call emit-line-in-comment/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
$convert-instruction:end:
# . restore locals
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . restore registers
5a/pop-to-edx
59/pop-to-ecx
58/pop-to-eax
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
emit-opcodes: # line: (addr stream byte), out: (addr buffered-file)
# opcodes occupy 1-3 bytes:
# xx
# 0f xx
# f2 xx
# f3 xx
# f2 0f xx
# f3 0f xx
#
# pseudocode:
# rewind-stream(line)
#
# var op1 = next-word(line)
# if (slice-empty?(op1) || slice-starts-with?(op1, "#")) return
# op1 = next-token-from-slice(op1->start, op1->end, "/")
# write-slice-buffered(out, op1)
# if !slice-equal?(op1, "0f") && !slice-equal?(op1, "f2") && !slice-equal?(op1, "f3")
# return
#
# var op2 = next-word(line)
# if (slice-empty?(op2) || slice-starts-with?(op2, "#")) return
# op2 = next-token-from-slice(op2->start, op2->end, "/")
# write-slice-buffered(out, op2)
# if slice-equal?(op1, "0f")
# return
# if !slice-equal?(op2, "0f")
# return
#
# var op3 = next-word(line)
# if (slice-empty?(op3) || slice-starts-with?(op3, "#")) return
# op3 = next-token-from-slice(op3->start, op3->end, "/")
# write-slice-buffered(out, op3)
#
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# . save registers
50/push-eax
51/push-ecx
52/push-edx
53/push-ebx
# var op1/ecx: slice
68/push 0/imm32/end
68/push 0/imm32/start
89/copy 3/mod/direct 1/rm32/ecx . . . 4/r32/esp . . # copy esp to ecx
# var op2/edx: slice
68/push 0/imm32/end
68/push 0/imm32/start
89/copy 3/mod/direct 2/rm32/edx . . . 4/r32/esp . . # copy esp to edx
# rewind-stream(line)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call rewind-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
$emit-opcodes:op1:
# next-word(line, op1)
# . . push args
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call next-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# if (slice-empty?(op1)) return
# . eax = slice-empty?(op1)
# . . push args
51/push-ecx
# . . call
e8/call slice-empty?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . if (eax != false) return
3d/compare-eax-and 0/imm32/false
0f 85/jump-if-!= $emit-opcodes:end/disp32
# if (slice-starts-with?(op1, "#")) return
# . var start/ebx: (addr byte) = op1->start
8b/copy 0/mod/indirect 1/rm32/ecx . . . 3/r32/ebx . . # copy *ecx to ebx
# . var c/eax: byte = *start
31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax
8a/copy-byte 0/mod/indirect 3/rm32/ebx . . . 0/r32/AL . . # copy byte at *ebx to AL
# . if (c == '#') return
3d/compare-eax-and 0x23/imm32/hash
0f 84/jump-if-= $emit-opcodes:end/disp32
# op1 = next-token-from-slice(op1->start, op1->end, '/')
# . . push args
51/push-ecx
68/push 0x2f/imm32/slash
ff 6/subop/push 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 . # push *(ecx+4)
ff 6/subop/push 0/mod/indirect 1/rm32/ecx . . . . . . # push *ecx
# . . call
e8/call next-token-from-slice/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0x10/imm32 # add to esp
# write-slice-buffered(out, op1)
# . . push args
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call write-slice-buffered/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# write-buffered(out, " ")
# . . push args
68/push Space/imm32
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call write-buffered/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# if (slice-equal?(op1, "0f")) goto op2
# . eax = slice-equal?(op1, "0f")
# . . push args
68/push "0f"/imm32
51/push-ecx
# . . call
e8/call slice-equal?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax != false) goto op2
3d/compare-eax-and 0/imm32/false
75/jump-if-!= $emit-opcodes:op2/disp8
# if (slice-equal?(op1, "f2")) goto op2
# . eax = slice-equal?(op1, "f2")
# . . push args
68/push "f2"/imm32
51/push-ecx
# . . call
e8/call slice-equal?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax != false) goto op2
3d/compare-eax-and 0/imm32/false
75/jump-if-!= $emit-opcodes:op2/disp8
# if (slice-equal?(op1, "f3")) goto op2
# . eax = slice-equal?(op1, "f3")
# . . push args
68/push "f3"/imm32
51/push-ecx
# . . call
e8/call slice-equal?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax != false) goto op2
3d/compare-eax-and 0/imm32/false
75/jump-if-!= $emit-opcodes:op2/disp8
# otherwise return
e9/jump $emit-opcodes:end/disp32
$emit-opcodes:op2:
# next-word(line, op2)
# . . push args
52/push-edx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call next-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# if (slice-empty?(op2)) return
# . eax = slice-empty?(op2)
# . . push args
52/push-edx
# . . call
e8/call slice-empty?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . if (eax != false) return
3d/compare-eax-and 0/imm32/false
0f 85/jump-if-!= $emit-opcodes:end/disp32
# if (slice-starts-with?(op2, "#")) return
# . var start/ebx: (addr byte) = op2->start
8b/copy 0/mod/indirect 2/rm32/edx . . . 3/r32/ebx . . # copy *edx to ebx
# . var c/eax: byte = *start
31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax
8a/copy-byte 0/mod/indirect 3/rm32/ebx . . . 0/r32/AL . . # copy byte at *ebx to AL
# . if (c == '#') return
3d/compare-eax-and 0x23/imm32/hash
0f 84/jump-if-= $emit-opcodes:end/disp32
# op2 = next-token-from-slice(op2->start, op2->end, '/')
# . . push args
52/push-edx
68/push 0x2f/imm32/slash
ff 6/subop/push 1/mod/*+disp8 2/rm32/edx . . . . 4/disp8 . # push *(edx+4)
ff 6/subop/push 0/mod/indirect 2/rm32/edx . . . . . . # push *edx
# . . call
e8/call next-token-from-slice/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0x10/imm32 # add to esp
# write-slice-buffered(out, op2)
# . . push args
52/push-edx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call write-slice-buffered/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# write-buffered(out, " ")
# . . push args
68/push Space/imm32
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call write-buffered/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# if (slice-equal?(op1, "0f")) return
# . eax = slice-equal?(op1, "0f")
# . . push args
68/push "0f"/imm32
51/push-ecx
# . . call
e8/call slice-equal?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax != false) return
3d/compare-eax-and 0/imm32/false
0f 85/jump-if-!= $emit-opcodes:end/disp32
# if (!slice-equal?(op2, "0f")) return
# . eax = slice-equal?(op2, "0f")
# . . push args
68/push "0f"/imm32
52/push-edx
# . . call
e8/call slice-equal?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) return
3d/compare-eax-and 0/imm32/false
0f 84/jump-if-= $emit-opcodes:end/disp32
$emit-opcodes:op3:
# next-word(line, op3) # reuse op2/edx
# . . push args
52/push-edx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call next-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# if (slice-empty?(op3)) return
# . eax = slice-empty?(op3)
# . . push args
52/push-edx
# . . call
e8/call slice-empty?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . if (eax != false) return
3d/compare-eax-and 0/imm32/false
0f 85/jump-if-!= $emit-opcodes:end/disp32
# if (slice-starts-with?(op3, "#")) return
# . var start/ebx: (addr byte) = op2->start
8b/copy 0/mod/indirect 2/rm32/edx . . . 3/r32/ebx . . # copy *edx to ebx
# . var c/eax: byte = *start
31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax
8a/copy-byte 0/mod/indirect 3/rm32/ebx . . . 0/r32/AL . . # copy byte at *ebx to AL
# . if (c == '#') return
3d/compare-eax-and 0x23/imm32/hash
0f 84/jump-if-= $emit-opcodes:end/disp32
# op3 = next-token-from-slice(op3->start, op3->end, '/')
# . . push args
52/push-edx
68/push 0x2f/imm32/slash
ff 6/subop/push 1/mod/*+disp8 2/rm32/edx . . . . 4/disp8 . # push *(edx+4)
ff 6/subop/push 0/mod/indirect 2/rm32/edx . . . . . . # push *edx
# . . call
e8/call next-token-from-slice/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0x10/imm32 # add to esp
# write-slice-buffered(out, op3)
# . . push args
52/push-edx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call write-slice-buffered/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# write-buffered(out, " ")
# . . push args
68/push Space/imm32
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call write-buffered/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
$emit-opcodes:end:
# . restore locals
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0x10/imm32 # add to esp
# . restore registers
5b/pop-to-ebx
5a/pop-to-edx
59/pop-to-ecx
58/pop-to-eax
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
emit-modrm: # line: (addr stream byte), out: (addr buffered-file)
# pseudocode:
# rewind-stream(line)
# var has-modrm? = false, mod = 0, rm32 = 0, r32 = 0
# var word-slice: slice
# while true
# word-slice = next-word(line)
# if (slice-empty?(word-slice)) break
# if (slice-starts-with?(word-slice, "#")) break
# if (has-metadata?(word-slice, "mod"))
# mod = parse-hex-int-from-slice(next-token-from-slice(word-slice, "/"))
# has-modrm? = true
# else if has-metadata?(word-slice, "rm32") or has-metadata?(word-slice, "xm32")
# rm32 = parse-hex-int-from-slice(next-token-from-slice(word-slice, "/"))
# has-modrm? = true
# else if has-metadata?(word-slice, "r32") or has-metadata?(word-slice, "x32") or has-metadata?(word-slice, "subop")
# r32 = parse-hex-int-from-slice(next-token-from-slice(word-slice, "/"))
# has-modrm? = true
# if has-modrm?
# var modrm = mod & 0b11
# modrm <<= 3
# modrm |= r32 & 0b111
# modrm <<= 3
# modrm |= rm32 & 0b111
# emit-hex(out, modrm, 1)
#
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# . save registers
50/push-eax
51/push-ecx
52/push-edx
53/push-ebx
56/push-esi
57/push-edi
# var word-slice/ecx: slice
68/push 0/imm32/end
68/push 0/imm32/start
89/copy 3/mod/direct 1/rm32/ecx . . . 4/r32/esp . . # copy esp to ecx
# var has-modrm?/edx: boolean = false
31/xor 3/mod/direct 2/rm32/edx . . . 2/r32/edx . . # clear edx
# var mod/ebx: byte = 0
31/xor 3/mod/direct 3/rm32/ebx . . . 3/r32/ebx . . # clear ebx
# var rm32/esi: byte = 0
31/xor 3/mod/direct 6/rm32/esi . . . 6/r32/esi . . # clear esi
# var r32/edi: byte = 0
31/xor 3/mod/direct 7/rm32/edi . . . 7/r32/edi . . # clear edi
# rewind-stream(line)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call rewind-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump line {{{
#? # . write(2/stderr, "LL: ")
#? # . . push args
#? 68/push "LL: "/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, line)
#? # . . push args
#? ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . rewind-stream(line)
#? # . . push args
#? ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
#? # . . call
#? e8/call rewind-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # }}}
$emit-modrm:loop:
# next-word(line, word-slice)
# . . push args
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call next-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # dump word-slice {{{
#? # . write(2/stderr, "AA: ")
#? # . . push args
#? 68/push "AA: "/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . clear-stream($Stderr->buffer)
#? # . . push args
#? 68/push $Stderr->buffer/imm32
#? # . . call
#? e8/call clear-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # . write-slice-buffered(Stderr, word-slice)
#? # . . push args
#? 51/push-ecx
#? 68/push Stderr/imm32
#? # . . call
#? e8/call write-slice-buffered/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . flush(Stderr)
#? # . . push args
#? 68/push Stderr/imm32
#? # . . call
#? e8/call flush/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
$emit-modrm:check0:
# if (slice-empty?(word-slice)) break
# . eax = slice-empty?(word-slice)
# . . push args
51/push-ecx
# . . call
e8/call slice-empty?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . if (eax != false) pass through
3d/compare-eax-and 0/imm32/false
0f 85/jump-if-!= $emit-modrm:break/disp32
$emit-modrm:check1:
# if (slice-starts-with?(word-slice, "#")) break
# . spill edx
52/push-edx
# . var start/edx: (addr byte) = word-slice->start
8b/copy 0/mod/indirect 1/rm32/ecx . . . 2/r32/edx . . # copy *ecx to edx
# . var c/eax: byte = *start
31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax
8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 0/r32/AL . . # copy byte at *edx to AL
# . restore edx
5a/pop-to-edx
# . if (c == '#') pass through
3d/compare-eax-and 0x23/imm32/hash
0f 84/jump-if-= $emit-modrm:break/disp32
$emit-modrm:check-for-mod:
# if (has-metadata?(word-slice, "mod"))
# . eax = has-metadata?(ecx, "mod")
# . . push args
68/push "mod"/imm32
51/push-ecx
# . . call
e8/call has-metadata?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) goto next check
3d/compare-eax-and 0/imm32/false
74/jump-if-= $emit-modrm:check-for-rm32/disp8
$emit-modrm:mod:
# mod = parse-hex-int-from-slice(next-token-from-slice(word-slice->start, word-slice->end, '/'))
# . eax = parse-datum-of-word(word-slice)
# . . push args
51/push-ecx
# . . call
e8/call parse-datum-of-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . mod = eax
89/copy 3/mod/direct 3/rm32/ebx . . . 0/r32/eax . . # copy eax to ebx
# has-modrm? = true
ba/copy-to-edx 1/imm32/true
# continue
e9/jump $emit-modrm:loop/disp32
$emit-modrm:check-for-rm32:
# if (has-metadata?(word-slice, "rm32"))
# . eax = has-metadata?(ecx, "rm32")
# . . push args
68/push "rm32"/imm32
51/push-ecx
# . . call
e8/call has-metadata?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) goto next check
3d/compare-eax-and 0/imm32/false
74/jump-if-= $emit-modrm:check-for-xm32/disp8
$emit-modrm:rm32:
# rm32 = parse-hex-int-from-slice(next-token-from-slice(word-slice->start, word-slice->end, '/'))
# . eax = parse-datum-of-word(word-slice)
# . . push args
51/push-ecx
# . . call
e8/call parse-datum-of-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . rm32 = eax
89/copy 3/mod/direct 6/rm32/esi . . . 0/r32/eax . . # copy eax to esi
# has-modrm? = true
ba/copy-to-edx 1/imm32/true
# continue
e9/jump $emit-modrm:loop/disp32
$emit-modrm:check-for-xm32:
# if (has-metadata?(word-slice, "xm32"))
# . eax = has-metadata?(ecx, "xm32")
# . . push args
68/push "xm32"/imm32
51/push-ecx
# . . call
e8/call has-metadata?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) goto next check
3d/compare-eax-and 0/imm32/false
74/jump-if-= $emit-modrm:check-for-r32/disp8
$emit-modrm:xm32:
# rm32 = parse-hex-int-from-slice(next-token-from-slice(word-slice->start, word-slice->end, '/'))
# . eax = parse-datum-of-word(word-slice)
# . . push args
51/push-ecx
# . . call
e8/call parse-datum-of-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . rm32 = eax
89/copy 3/mod/direct 6/rm32/esi . . . 0/r32/eax . . # copy eax to esi
# has-modrm? = true
ba/copy-to-edx 1/imm32/true
# continue
e9/jump $emit-modrm:loop/disp32
$emit-modrm:check-for-r32:
# if (has-metadata?(word-slice, "r32"))
# . eax = has-metadata?(ecx, "r32")
# . . push args
68/push "r32"/imm32
51/push-ecx
# . . call
e8/call has-metadata?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) goto next check
3d/compare-eax-and 0/imm32/false
74/jump-if-= $emit-modrm:check-for-x32/disp8
$emit-modrm:r32:
# r32 = parse-hex-int-from-slice(next-token-from-slice(word-slice->start, word-slice->end, '/'))
# . eax = parse-datum-of-word(word-slice)
# . . push args
51/push-ecx
# . . call
e8/call parse-datum-of-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . r32 = eax
89/copy 3/mod/direct 7/rm32/edi . . . 0/r32/eax . . # copy eax to edi
# has-modrm? = true
ba/copy-to-edx 1/imm32/true
# continue
e9/jump $emit-modrm:loop/disp32
$emit-modrm:check-for-x32:
# if (has-metadata?(word-slice, "x32"))
# . eax = has-metadata?(ecx, "x32")
# . . push args
68/push "x32"/imm32
51/push-ecx
# . . call
e8/call has-metadata?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) goto next check
3d/compare-eax-and 0/imm32/false
74/jump-if-= $emit-modrm:check-for-subop/disp8
$emit-modrm:x32:
# r32 = parse-hex-int-from-slice(next-token-from-slice(word-slice->start, word-slice->end, '/'))
# . eax = parse-datum-of-word(word-slice)
# . . push args
51/push-ecx
# . . call
e8/call parse-datum-of-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . r32 = eax
89/copy 3/mod/direct 7/rm32/edi . . . 0/r32/eax . . # copy eax to edi
# has-modrm? = true
ba/copy-to-edx 1/imm32/true
# continue
e9/jump $emit-modrm:loop/disp32
$emit-modrm:check-for-subop:
# if (has-metadata?(word-slice, "subop"))
# . eax = has-metadata?(ecx, "subop")
# . . push args
68/push "subop"/imm32
51/push-ecx
# . . call
e8/call has-metadata?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) loop
3d/compare-eax-and 0/imm32/false
0f 84/jump-if-= $emit-modrm:loop/disp32
$emit-modrm:subop:
# r32 = parse-hex-int-from-slice(next-token-from-slice(word-slice->start, word-slice->end, '/'))
# . eax = parse-datum-of-word(word-slice)
# . . push args
51/push-ecx
# . . call
e8/call parse-datum-of-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . r32 = eax
89/copy 3/mod/direct 7/rm32/edi . . . 0/r32/eax . . # copy eax to edi
# has-modrm? = true
ba/copy-to-edx 1/imm32/true
# continue
e9/jump $emit-modrm:loop/disp32
$emit-modrm:break:
# if (!has-modrm?) return
81 7/subop/compare 3/mod/direct 2/rm32/edx . . . . . 0/imm32/false # compare edx
74/jump-if-= $emit-modrm:end/disp8
$emit-modrm:calculate:
# var modrm/ebx: byte = mod & 0b11
81 4/subop/and 3/mod/direct 3/rm32/ebx . . . . . 3/imm32/0b11 # bitwise and of ebx
# modrm <<= 3
c1/shift 4/subop/left 3/mod/direct 3/rm32/ebx . . . . . 3/imm8 # shift ebx left by 3 bits
# modrm |= r32 & 0b111
81 4/subop/and 3/mod/direct 7/rm32/edi . . . . . 7/imm32/0b111 # bitwise and of edi
09/or 3/mod/direct 3/rm32/ebx . . . 7/r32/edi . . # ebx = bitwise OR with edi
# modrm <<= 3
c1/shift 4/subop/left 3/mod/direct 3/rm32/ebx . . . . . 3/imm8 # shift ebx left by 3 bits
# modrm |= rm32 & 0b111
81 4/subop/and 3/mod/direct 6/rm32/esi . . . . . 7/imm32/0b111 # bitwise and of esi
09/or 3/mod/direct 3/rm32/ebx . . . 6/r32/esi . . # ebx = bitwise OR with esi
$emit-modrm:emit:
# emit-hex(out, modrm, 1)
# . . push args
68/push 1/imm32
53/push-ebx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call emit-hex/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
$emit-modrm:end:
# . restore locals
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . restore registers
5f/pop-to-edi
5e/pop-to-esi
5b/pop-to-ebx
5a/pop-to-edx
59/pop-to-ecx
58/pop-to-eax
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
emit-sib: # line: (addr stream byte), out: (addr buffered-file)
# pseudocode:
# var has-sib? = false, base = 0, index = 0, scale = 0
# var word-slice: slice
# while true
# word-slice = next-word(line)
# if (slice-empty?(word-slice)) break
# if (slice-starts-with?(word-slice, "#")) break
# if (has-metadata?(word-slice, "base")
# base = parse-hex-int-from-slice(next-token-from-slice(word-slice, "/"))
# has-sib? = true
# else if (has-metadata?(word-slice, "index")
# index = parse-hex-int-from-slice(next-token-from-slice(word-slice, "/"))
# has-sib? = true
# else if (has-metadata?(word-slice, "scale")
# scale = parse-hex-int-from-slice(next-token-from-slice(word-slice, "/"))
# has-sib? = true
# if has-sib?
# var sib = scale & 0b11
# sib <<= 3
# sib |= index & 0b111
# sib <<= 3
# sib |= base & 0b111
# emit-hex(out, sib, 1)
#
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# . save registers
50/push-eax
51/push-ecx
52/push-edx
53/push-ebx
56/push-esi
57/push-edi
# var word-slice/ecx: slice
68/push 0/imm32/end
68/push 0/imm32/start
89/copy 3/mod/direct 1/rm32/ecx . . . 4/r32/esp . . # copy esp to ecx
# var has-sib?/edx: boolean = false
31/xor 3/mod/direct 2/rm32/edx . . . 2/r32/edx . . # clear edx
# var scale/ebx: byte = 0
31/xor 3/mod/direct 3/rm32/ebx . . . 3/r32/ebx . . # clear ebx
# var base/esi: byte = 0
31/xor 3/mod/direct 6/rm32/esi . . . 6/r32/esi . . # clear esi
# var index/edi: byte = 0
31/xor 3/mod/direct 7/rm32/edi . . . 7/r32/edi . . # clear edi
# rewind-stream(line)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call rewind-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
$emit-sib:loop:
#? # dump line {{{
#? # . write(2/stderr, "LL: ")
#? # . . push args
#? 68/push "LL: "/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, line)
#? # . . push args
#? ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# next-word(line, word-slice)
# . . push args
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call next-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # dump word-slice {{{
#? # . write(2/stderr, "AA: ")
#? # . . push args
#? 68/push "AA: "/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . clear-stream($Stderr->buffer)
#? # . . push args
#? 68/push $Stderr->buffer/imm32
#? # . . call
#? e8/call clear-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # . write-slice-buffered(Stderr, word-slice)
#? # . . push args
#? 51/push-ecx
#? 68/push Stderr/imm32
#? # . . call
#? e8/call write-slice-buffered/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . flush(Stderr)
#? # . . push args
#? 68/push Stderr/imm32
#? # . . call
#? e8/call flush/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
$emit-sib:check0:
# if (slice-empty?(word-slice)) break
# . eax = slice-empty?(word-slice)
# . . push args
51/push-ecx
# . . call
e8/call slice-empty?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . if (eax != false) pass through
3d/compare-eax-and 0/imm32/false
0f 85/jump-if-!= $emit-sib:break/disp32
$emit-sib:check1:
# if (slice-starts-with?(word-slice, "#")) break
# . spill edx
52/push-edx
# . var start/edx: (addr byte) = word-slice->start
8b/copy 0/mod/indirect 1/rm32/ecx . . . 2/r32/edx . . # copy *ecx to edx
# . var c/eax: byte = *start
31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax
8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 0/r32/AL . . # copy byte at *edx to AL
# . restore edx
5a/pop-to-edx
# . if (c == '#') pass through
3d/compare-eax-and 0x23/imm32/hash
0f 84/jump-if-= $emit-sib:break/disp32
$emit-sib:check-for-scale:
# if (has-metadata?(word-slice, "scale"))
# . eax = has-metadata?(ecx, "scale")
# . . push args
68/push "scale"/imm32
51/push-ecx
# . . call
e8/call has-metadata?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) goto next check
3d/compare-eax-and 0/imm32/false
74/jump-if-= $emit-sib:check-for-base/disp8
$emit-sib:scale:
# scale = parse-hex-int-from-slice(next-token-from-slice(word-slice->start, word-slice->end, '/'))
# . eax = parse-datum-of-word(word-slice)
# . . push args
51/push-ecx
# . . call
e8/call parse-datum-of-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . scale = eax
89/copy 3/mod/direct 3/rm32/ebx . . . 0/r32/eax . . # copy eax to ebx
# has-sib? = true
ba/copy-to-edx 1/imm32/true
# continue
e9/jump $emit-sib:loop/disp32
$emit-sib:check-for-base:
# if (has-metadata?(word-slice, "base"))
# . eax = has-metadata?(ecx, "base")
# . . push args
68/push "base"/imm32
51/push-ecx
# . . call
e8/call has-metadata?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) goto next check
3d/compare-eax-and 0/imm32/false
74/jump-if-= $emit-sib:check-for-index/disp8
$emit-sib:base:
# base = parse-hex-int-from-slice(next-token-from-slice(word-slice->start, word-slice->end, '/'))
# . eax = parse-datum-of-word(word-slice)
# . . push args
51/push-ecx
# . . call
e8/call parse-datum-of-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . base = eax
89/copy 3/mod/direct 6/rm32/esi . . . 0/r32/eax . . # copy eax to esi
# has-sib? = true
ba/copy-to-edx 1/imm32/true
# continue
e9/jump $emit-sib:loop/disp32
$emit-sib:check-for-index:
# if (has-metadata?(word-slice, "index"))
# . eax = has-metadata?(ecx, "index")
# . . push args
68/push "index"/imm32
51/push-ecx
# . . call
e8/call has-metadata?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) loop
3d/compare-eax-and 0/imm32/false
0f 84/jump-if-= $emit-sib:loop/disp32
$emit-sib:index:
# index = parse-hex-int-from-slice(next-token-from-slice(word-slice->start, word-slice->end, '/'))
# . eax = parse-datum-of-word(word-slice)
# . . push args
51/push-ecx
# . . call
e8/call parse-datum-of-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . index = eax
89/copy 3/mod/direct 7/rm32/edi . . . 0/r32/eax . . # copy eax to edi
# has-sib? = true
ba/copy-to-edx 1/imm32/true
# continue
e9/jump $emit-sib:loop/disp32
$emit-sib:break:
# if (!has-sib?) return
81 7/subop/compare 3/mod/direct 2/rm32/edx . . . . . 0/imm32/false # compare edx
74/jump-if-= $emit-sib:end/disp8
$emit-sib:calculate:
# var sib/ebx: byte = scale & 0b11
81 4/subop/and 3/mod/direct 3/rm32/ebx . . . . . 3/imm32/0b11 # bitwise and of ebx
# sib <<= 2
c1/shift 4/subop/left 3/mod/direct 3/rm32/ebx . . . . . 3/imm8 # shift ebx left by 3 bits
# sib |= index & 0b111
81 4/subop/and 3/mod/direct 7/rm32/edi . . . . . 7/imm32/0b111 # bitwise and of edi
09/or 3/mod/direct 3/rm32/ebx . . . 7/r32/edi . . # ebx = bitwise OR with edi
# sib <<= 3
c1/shift 4/subop/left 3/mod/direct 3/rm32/ebx . . . . . 3/imm8 # shift ebx left by 3 bits
# sib |= base & 0b111
81 4/subop/and 3/mod/direct 6/rm32/esi . . . . . 7/imm32/0b111 # bitwise and of esi
09/or 3/mod/direct 3/rm32/ebx . . . 6/r32/esi . . # ebx = bitwise OR with esi
$emit-sib:emit:
# emit-hex(out, sib, 1)
# . . push args
68/push 1/imm32
53/push-ebx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call emit-hex/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
$emit-sib:end:
# . restore locals
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . restore registers
5f/pop-to-edi
5e/pop-to-esi
5b/pop-to-ebx
5a/pop-to-edx
59/pop-to-ecx
58/pop-to-eax
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
emit-disp: # line: (addr stream byte), out: (addr buffered-file)
# pseudocode:
# rewind-stream(line)
# var word-slice: slice
# while true
# word-slice = next-word(line)
# if (slice-empty?(word-slice)) break
# if (slice-starts-with?(word-slice, "#")) break
# if has-metadata?(word-slice, "disp32")
# emit(out, word-slice, 4)
# break
# if has-metadata?(word-slice, "disp16")
# emit(out, word-slice, 2)
# break
# if has-metadata?(word-slice, "disp8")
# emit(out, word-slice, 1)
# break
#
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# . save registers
50/push-eax
51/push-ecx
52/push-edx
# var word-slice/ecx: slice
68/push 0/imm32/end
68/push 0/imm32/start
89/copy 3/mod/direct 1/rm32/ecx . . . 4/r32/esp . . # copy esp to ecx
# rewind-stream(line)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call rewind-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump line {{{
#? # . write(2/stderr, "LL: ")
#? # . . push args
#? 68/push "LL: "/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, line)
#? # . . push args
#? ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
$emit-disp:loop:
# next-word(line, word-slice)
# . . push args
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call next-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # dump word-slice {{{
#? # . write(2/stderr, "AA: ")
#? # . . push args
#? 68/push "AA: "/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . clear-stream($Stderr->buffer)
#? # . . push args
#? 68/push $Stderr->buffer/imm32
#? # . . call
#? e8/call clear-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # . write-slice-buffered(Stderr, word-slice)
#? # . . push args
#? 51/push-ecx
#? 68/push Stderr/imm32
#? # . . call
#? e8/call write-slice-buffered/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . flush(Stderr)
#? # . . push args
#? 68/push Stderr/imm32
#? # . . call
#? e8/call flush/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
$emit-disp:check0:
# if (slice-empty?(word-slice)) break
# . eax = slice-empty?(word-slice)
# . . push args
51/push-ecx
# . . call
e8/call slice-empty?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . if (eax != false) pass through
3d/compare-eax-and 0/imm32/false
0f 85/jump-if-!= $emit-disp:break/disp32
$emit-disp:check1:
# if (slice-starts-with?(word-slice, "#")) break
# . var start/edx: (addr byte) = word-slice->start
8b/copy 0/mod/indirect 1/rm32/ecx . . . 2/r32/edx . . # copy *ecx to edx
# . var c/eax: byte = *start
31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax
8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 0/r32/AL . . # copy byte at *edx to AL
# . if (c == '#') break
3d/compare-eax-and 0x23/imm32/hash
0f 84/jump-if-= $emit-disp:break/disp32
$emit-disp:check-for-disp32:
# if (has-metadata?(word-slice, "disp32"))
# . eax = has-metadata?(ecx, "disp32")
# . . push args
68/push "disp32"/imm32
51/push-ecx
# . . call
e8/call has-metadata?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) goto next check
3d/compare-eax-and 0/imm32/false
74/jump-if-= $emit-disp:check-for-disp16/disp8
$emit-disp:disp32:
# emit(out, word-slice, 4)
# . . push args
68/push 4/imm32
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call emit/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# break
e9/jump $emit-disp:break/disp32
$emit-disp:check-for-disp16:
# else if (has-metadata?(word-slice, "disp16"))
# . eax = has-metadata?(ecx, "disp16")
# . . push args
68/push "disp16"/imm32
51/push-ecx
# . . call
e8/call has-metadata?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) goto next check
3d/compare-eax-and 0/imm32/false
74/jump-if-= $emit-disp:check-for-disp8/disp8
$emit-disp:disp16:
# emit(out, word-slice, 2)
# . . push args
68/push 2/imm32
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call emit/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# break
e9/jump $emit-disp:break/disp32
$emit-disp:check-for-disp8:
# if (has-metadata?(word-slice, "disp8"))
# . eax = has-metadata?(ecx, "disp8")
# . . push args
68/push "disp8"/imm32
51/push-ecx
# . . call
e8/call has-metadata?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) loop
3d/compare-eax-and 0/imm32/false
0f 84/jump-if-= $emit-disp:loop/disp32
$emit-disp:disp8:
# emit(out, word-slice, 1)
# . . push args
68/push 1/imm32
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call emit/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# break
$emit-disp:break:
# . restore locals
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . restore registers
5a/pop-to-edx
59/pop-to-ecx
58/pop-to-eax
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
emit-imm: # line: (addr stream byte), out: (addr buffered-file)
# pseudocode:
# rewind-stream(line)
# var word-slice: slice
# while true
# word-slice = next-word(line)
# if (slice-empty?(word-slice)) break
# if (slice-starts-with?(word-slice, "#")) break
# if has-metadata?(word-slice, "imm32")
# emit(out, word-slice, 4)
# break
# if has-metadata?(word-slice, "imm16")
# emit(out, word-slice, 2)
# break
# if has-metadata?(word-slice, "imm8")
# emit(out, word-slice, 1)
# break
#
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# . save registers
50/push-eax
51/push-ecx
52/push-edx
# var word-slice/ecx: slice
68/push 0/imm32/end
68/push 0/imm32/start
89/copy 3/mod/direct 1/rm32/ecx . . . 4/r32/esp . . # copy esp to ecx
# rewind-stream(line)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call rewind-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump line {{{
#? # . write(2/stderr, "LL: ")
#? # . . push args
#? 68/push "LL: "/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, line)
#? # . . push args
#? ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
$emit-imm:loop:
# next-word(line, word-slice)
# . . push args
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
# . . call
e8/call next-word/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # dump word-slice {{{
#? # . write(2/stderr, "AA: ")
#? # . . push args
#? 68/push "AA: "/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . clear-stream($Stderr->buffer)
#? # . . push args
#? 68/push $Stderr->buffer/imm32
#? # . . call
#? e8/call clear-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # . write-slice-buffered(Stderr, word-slice)
#? # . . push args
#? 51/push-ecx
#? 68/push Stderr/imm32
#? # . . call
#? e8/call write-slice-buffered/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . flush(Stderr)
#? # . . push args
#? 68/push Stderr/imm32
#? # . . call
#? e8/call flush/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
$emit-imm:check0:
# if (slice-empty?(word-slice)) break
# . eax = slice-empty?(word-slice)
# . . push args
51/push-ecx
# . . call
e8/call slice-empty?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . if (eax != false) pass through
3d/compare-eax-and 0/imm32/false
0f 85/jump-if-!= $emit-imm:break/disp32
$emit-imm:check1:
# if (slice-starts-with?(word-slice, "#")) break
# . var start/edx: (addr byte) = slice->start
8b/copy 0/mod/indirect 1/rm32/ecx . . . 2/r32/edx . . # copy *ecx to edx
# . var c/eax: byte = *start
31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax
8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 0/r32/AL . . # copy byte at *edx to AL
# . if (c == '#') break
3d/compare-eax-and 0x23/imm32/hash
0f 84/jump-if-= $emit-imm:break/disp32
$emit-imm:check-for-imm32:
# if (has-metadata?(word-slice, "imm32"))
# . eax = has-metadata?(ecx, "imm32")
# . . push args
68/push "imm32"/imm32
51/push-ecx
# . . call
e8/call has-metadata?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) goto next check
3d/compare-eax-and 0/imm32/false
74/jump-if-= $emit-imm:check-for-imm16/disp8
$emit-imm:imm32:
# emit(out, word-slice, 4)
# . . push args
68/push 4/imm32
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call emit/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# break
e9/jump $emit-imm:break/disp32
$emit-imm:check-for-imm16:
# if (has-metadata?(word-slice, "imm16"))
# . eax = has-metadata?(ecx, "imm16")
# . . push args
68/push "imm16"/imm32
51/push-ecx
# . . call
e8/call has-metadata?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) goto next check
3d/compare-eax-and 0/imm32/false
74/jump-if-= $emit-imm:check-for-imm8/disp8
$emit-imm:imm16:
# emit(out, word-slice, 2)
# . . push args
68/push 2/imm32
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call emit/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# break
e9/jump $emit-imm:break/disp32
$emit-imm:check-for-imm8:
# if (has-metadata?(word-slice, "imm8"))
# . eax = has-metadata?(ecx, "imm8")
# . . push args
68/push "imm8"/imm32
51/push-ecx
# . . call
e8/call has-metadata?/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . if (eax == false) loop
3d/compare-eax-and 0/imm32/false
0f 84/jump-if-= $emit-imm:loop/disp32
$emit-imm:imm8:
# emit(out, word-slice, 1)
# . . push args
68/push 1/imm32
51/push-ecx
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call emit/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# break
$emit-imm:break:
# . restore locals
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . restore registers
5a/pop-to-edx
59/pop-to-ecx
58/pop-to-eax
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
emit-line-in-comment: # line: (addr stream byte), out: (addr buffered-file)
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# write-buffered(out, " # ")
# . . push args
68/push " # "/imm32
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call write-buffered/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# write-stream-data(out, line)
# . . push args
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
# . . call
e8/call write-stream-data/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
$emit-line-in-comment:end:
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-passes-comments-through:
# if a line starts with '#', pass it along unchanged
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "# abcd")
# . . push args
68/push "# abcd"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check that the line just passed through
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . check-stream-equal(_test-output-stream, "# abcd", msg)
# . . push args
68/push "F - test-convert-instruction-passes-comments-through"/imm32
68/push "# abcd"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-passes-labels-through:
# if the first word ends with ':', pass along the entire line unchanged
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "ab: # cd")
# . . push args
68/push "ab: # cd"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check that the line just passed through
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . check-stream-equal(_test-output-stream, "ab: # cd", msg)
# . . push args
68/push "F - test-convert-instruction-passes-labels-through"/imm32
68/push "ab: # cd"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-handles-single-opcode:
# if the instruction consists of a single opcode, strip its metadata and pass it along
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "ab/cd # comment")
# . . push args
68/push "ab/cd # comment"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "ab # ab/cd # comment", msg)
# . . push args
68/push "F - test-convert-instruction-handles-single-opcode"/imm32
68/push "ab # ab/cd # comment"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-handles-0f-opcode:
# if the instruction starts with 0f opcode, include a second opcode
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "0f/m1 ab/m2 # comment")
# . . push args
68/push "0f/m1 ab/m2 # comment"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "0f ab # 0f/m1 ab/m2 # comment", msg)
# . . push args
68/push "F - test-convert-instruction-handles-0f-opcode"/imm32
68/push "0f ab # 0f/m1 ab/m2 # comment"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-handles-f2-opcode:
# if the instruction starts with f2 opcode, include a second opcode
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "f2/m1 ab/m2 # comment")
# . . push args
68/push "f2/m1 ab/m2 # comment"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "f2 ab # f2/m1 ab/m2 # comment", msg)
# . . push args
68/push "F - test-convert-instruction-handles-f2-opcode"/imm32
68/push "f2 ab # f2/m1 ab/m2 # comment"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-handles-f3-opcode:
# if the instruction starts with f3 opcode, include a second opcode
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "f3/m1 ab/m2 # comment")
# . . push args
68/push "f3/m1 ab/m2 # comment"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "f3 ab # f3/m1 ab/m2 # comment", msg)
# . . push args
68/push "F - test-convert-instruction-handles-f3-opcode"/imm32
68/push "f3 ab # f3/m1 ab/m2 # comment"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-handles-f2-0f-opcode:
# if the instruction starts with f2 0f opcode, include a second opcode
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "f2/m1 0f/m2 ab/m3 # comment")
# . . push args
68/push "f2/m1 0f/m2 ab/m3 # comment"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "f2 0f ab # f2/m1 0f/m2 ab/m3 # comment", msg)
# . . push args
68/push "F - test-convert-instruction-handles-f2-0f-opcode"/imm32
68/push "f2 0f ab # f2/m1 0f/m2 ab/m3 # comment"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-handles-f3-0f-opcode:
# if the instruction starts with f3 0f opcode, include a second opcode
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "f3/m1 0f/m2 ab/m3 # comment")
# . . push args
68/push "f3/m1 0f/m2 ab/m3 # comment"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "f3 0f ab # f3/m1 0f/m2 ab/m3 # comment", msg)
# . . push args
68/push "F - test-convert-instruction-handles-f3-0f-opcode"/imm32
68/push "f3 0f ab # f3/m1 0f/m2 ab/m3 # comment"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-handles-unused-opcodes:
# if the instruction doesn't start with f2, f3 or 0f, don't include other opcodes
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "ab/m1 cd/m2 # comment")
# . . push args
68/push "ab/m1 cd/m2 # comment"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "ab # f3/m1 0f/m2 ab/m3 # comment", msg)
# . . push args
68/push "F - test-convert-instruction-handles-unused-opcodes"/imm32
68/push "ab # ab/m1 cd/m2 # comment"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-handles-unused-second-opcodes:
# if the second opcode isn't 0f, don't include further opcodes
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "f2/m1 ab/m2 cd/m3 # comment")
# . . push args
68/push "f2/m1 ab/m2 cd/m3 # comment"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "f2 ab # f2/m1 ab/m2 cd/m3 # comment", msg)
# . . push args
68/push "F - test-convert-instruction-handles-unused-second-opcodes"/imm32
68/push "f2 ab # f2/m1 ab/m2 cd/m3 # comment"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-handles-unused-second-opcodes-2:
# if the second opcode isn't 0f, don't include further opcodes
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "f3/m1 ab/m2 cd/m3 # comment")
# . . push args
68/push "f3/m1 ab/m2 cd/m3 # comment"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "f3 ab # f3/m1 ab/m2 cd/m3 # comment", msg)
# . . push args
68/push "F - test-convert-instruction-handles-unused-second-opcodes"/imm32
68/push "f3 ab # f3/m1 ab/m2 cd/m3 # comment"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-emits-modrm-byte:
# pack mod, rm32 and r32 operands into ModR/M byte
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "8b/copy 0/mod 0/rm32 1/r32")
# . . push args
68/push "8b/copy 0/mod 0/rm32 1/r32"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "8b 08 # 8b/copy 0/mod 0/rm32 1/r32", msg)
# . . push args
68/push "F - test-convert-instruction-emits-modrm-byte"/imm32
68/push "8b 08 # 8b/copy 0/mod 0/rm32 1/r32"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-emits-modrm-byte-with-non-zero-mod:
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "01/add 3/mod/direct 3/rm32/ebx 1/r32/ecx")
# . . push args
68/push "01/add 3/mod/direct 3/rm32/ebx 1/r32/ecx"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "out: ")
#? # . . push args
#? 68/push "out: "/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# check output
# . check-stream-equal(_test-output-stream, "# abcd", msg)
# . . push args
68/push "F - test-convert-instruction-foo"/imm32
68/push "01 cb # 01/add 3/mod/direct 3/rm32/ebx 1/r32/ecx"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-emits-modrm-byte-from-subop:
# pack mod, rm32 and subop operands into ModR/M byte
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "ff 6/subop/push 0/mod 0/rm32")
# . . push args
68/push "ff 6/subop/push 0/mod 0/rm32"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "ff 30 # ff 6/subop/push 0/mod 0/rm32", msg)
# . . push args
68/push "F - test-convert-instruction-emits-modrm-byte-from-subop"/imm32
68/push "ff 30 # ff 6/subop/push 0/mod 0/rm32"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-emits-modrm-byte-with-missing-mod:
# pack rm32 and r32 operands into ModR/M byte
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "8b/copy 0/rm32 1/r32")
# . . push args
68/push "8b/copy 0/rm32 1/r32"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "8b 08 # 8b/copy 0/rm32 1/r32", msg)
# . . push args
68/push "F - test-convert-instruction-emits-modrm-byte-with-missing-mod"/imm32
68/push "8b 08 # 8b/copy 0/rm32 1/r32"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-emits-modrm-byte-with-missing-rm32:
# pack mod and r32 operands into ModR/M byte
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "8b/copy 0/mod 1/r32")
# . . push args
68/push "8b/copy 0/mod 1/r32"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "8b 08 # 8b/copy 0/mod 1/r32", msg)
# . . push args
68/push "F - test-convert-instruction-emits-modrm-byte-with-missing-rm32"/imm32
68/push "8b 08 # 8b/copy 0/mod 1/r32"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-emits-modrm-byte-with-missing-r32:
# pack mod and rm32 operands into ModR/M byte
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "8b/copy 0/mod 0/rm32")
# . . push args
68/push "8b/copy 0/mod 0/rm32"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "8b 00 # 8b/copy 0/mod 0/rm32", msg)
# . . push args
68/push "F - test-convert-instruction-emits-modrm-byte-with-missing-r32"/imm32
68/push "8b 00 # 8b/copy 0/mod 0/rm32"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-emits-sib-byte:
# pack base, index and scale operands into SIB byte
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "8b/copy 0/mod 4/rm32 1/r32 0/base 1/index 0/scale")
# . . push args
68/push "8b/copy 0/mod 4/rm32 1/r32 0/base 1/index 0/scale"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "8b 08 # 8b/copy 0/mod 4/rm32 1/r32 0/base 1/index 0/scale", msg)
# . . push args
68/push "F - test-convert-instruction-emits-sib-byte"/imm32
68/push "8b 0c 08 # 8b/copy 0/mod 4/rm32 1/r32 0/base 1/index 0/scale"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-emits-scale:
# pack base, index and scale operands into SIB byte
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "8b/copy 0/mod 4/rm32 1/scale")
# . . push args
68/push "8b/copy 0/mod 4/rm32 1/scale"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "8b 04 40 # 8b/copy 0/mod 4/rm32 1/scale", msg)
# . . push args
68/push "F - test-convert-instruction-emits-scale"/imm32
68/push "8b 04 40 # 8b/copy 0/mod 4/rm32 1/scale"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-emits-sib-byte-with-missing-base:
# pack index and scale operands into SIB byte
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "8b/copy 0/mod 4/rm32 1/r32 1/index 0/scale")
# . . push args
68/push "8b/copy 0/mod 4/rm32 1/r32 1/index 0/scale"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "8b 0c 08 # 8b/copy 0/mod 4/rm32 1/r32 1/index 0/scale", msg)
# . . push args
68/push "F - test-convert-instruction-emits-sib-byte-with-missing-base"/imm32
68/push "8b 0c 08 # 8b/copy 0/mod 4/rm32 1/r32 1/index 0/scale"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-emits-sib-byte-with-missing-index:
# pack base and scale operands into SIB byte
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "8b/copy 0/mod 4/rm32 1/r32 0/base 0/scale")
# . . push args
68/push "8b/copy 0/mod 4/rm32 1/r32 0/base 0/scale"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "8b 0c 08 # 8b/copy 0/mod 4/rm32 1/r32 0/base 0/scale", msg)
# . . push args
68/push "F - test-convert-instruction-emits-sib-byte-with-missing-index"/imm32
68/push "8b 0c 00 # 8b/copy 0/mod 4/rm32 1/r32 0/base 0/scale"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-emits-sib-byte-with-missing-scale:
# pack base and index operands into SIB byte
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "8b/copy 0/mod 4/rm32 1/r32 0/base 1/index")
# . . push args
68/push "8b/copy 0/mod 4/rm32 1/r32 0/base 1/index"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "8b 0c 08 # 8b/copy 0/mod 4/rm32 1/r32 0/base 1/index", msg)
# . . push args
68/push "F - test-convert-instruction-emits-sib-byte-with-missing-scale"/imm32
68/push "8b 0c 08 # 8b/copy 0/mod 4/rm32 1/r32 0/base 1/index"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-handles-disp32-operand:
# expand /disp32 operand into 4 bytes
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "e8/call 20/disp32")
# . . push args
68/push "e8/call 20/disp32"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "e8 20 00 00 00 # e8/call 20/disp32", msg)
# . . push args
68/push "F - test-convert-instruction-handles-disp32-operand"/imm32
68/push "e8 20 00 00 00 # e8/call 20/disp32"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-handles-disp16-operand:
# expand /disp16 operand into 2 bytes
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "e8/call 20/disp16")
# . . push args
68/push "e8/call 20/disp16"/imm32 # not a valid instruction
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "e8 20 00 # e8/call 20/disp16", msg)
# . . push args
68/push "F - test-convert-instruction-handles-disp16-operand"/imm32
68/push "e8 20 00 # e8/call 20/disp16"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-handles-disp8-operand:
# expand /disp8 operand into 1 byte
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "eb/jump 20/disp8")
# . . push args
68/push "eb/jump 20/disp8"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "eb 20 # eb/jump 20/disp8", msg)
# . . push args
68/push "F - test-convert-instruction-handles-disp8-operand"/imm32
68/push "eb 20 # eb/jump 20/disp8"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-handles-disp8-name:
# pass /disp8 name directly through
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "eb/jump xyz/disp8")
# . . push args
68/push "eb/jump xyz/disp8"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "eb xyz/disp8 # eb/jump xyz/disp8", msg)
# . . push args
68/push "F - test-convert-instruction-handles-disp8-name"/imm32
68/push "eb xyz/disp8 # eb/jump xyz/disp8"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-handles-imm32-operand:
# expand /imm32 operand into 4 bytes
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "68/push 0x20/imm32")
# . . push args
68/push "68/push 0x20/imm32"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "68 20 00 00 00 # 68/push 0x20/imm32", msg)
# . . push args
68/push "F - test-convert-instruction-handles-imm32-operand"/imm32
68/push "68 20 00 00 00 # 68/push 0x20/imm32"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-handles-imm16-operand:
# expand /imm16 operand into 2 bytes
# we don't have one of these at the moment, so this expands to an invalid instruction
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "68/push 0x20/imm16")
# . . push args
68/push "68/push 0x20/imm16"/imm32 # not a valid instruction
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "68 20 00 # 68/push 0x20/imm16", msg)
# . . push args
68/push "F - test-convert-instruction-handles-imm16-operand"/imm32
68/push "68 20 00 # 68/push 0x20/imm16"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-convert-instruction-handles-imm8-operand:
# expand /imm8 operand into 1 byte
# we don't have one of these at the moment, so this expands to an invalid instruction
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# setup
# . clear-stream(_test-input-stream)
# . . push args
68/push _test-input-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# initialize input
# . write(_test-input-stream, "68/push 0x20/imm8")
# . . push args
68/push "68/push 0x20/imm8"/imm32
68/push _test-input-stream/imm32
# . . call
e8/call write/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# convert-instruction(_test-input-stream, _test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
68/push _test-input-stream/imm32
# . . call
e8/call convert-instruction/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# check output
# . flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
#? # dump output {{{
#? # . write(2/stderr, "^")
#? # . . push args
#? 68/push "^"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write-stream(2/stderr, _test-output-stream)
#? # . . push args
#? 68/push _test-output-stream/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write-stream/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # . write(2/stderr, "$\n")
#? # . . push args
#? 68/push "$\n"/imm32
#? 68/push 2/imm32/stderr
#? # . . call
#? e8/call write/disp32
#? # . . discard args
#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
#? # }}}
# . check-stream-equal(_test-output-stream, "68 20 # 68/push 0x20/imm8", msg)
# . . push args
68/push "F - test-convert-instruction-handles-imm8-operand"/imm32
68/push "68 20 # 68/push 0x20/imm8"/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
# shortcut for parse-hex-int-from-slice(next-token-from-slice(word->start, word->end, '/'))
parse-datum-of-word: # word: (addr slice) -> value/eax: int
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# . save registers
51/push-ecx
56/push-esi
# esi = word
8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 6/r32/esi 8/disp8 . # copy *(ebp+8) to esi
# var slice/ecx: slice
68/push 0/imm32/end
68/push 0/imm32/start
89/copy 3/mod/direct 1/rm32/ecx . . . 4/r32/esp . . # copy esp to ecx
# slice = next-token-from-slice(word->start, word->end, '/')
# . . push args
51/push-ecx
68/push 0x2f/imm32/slash
ff 6/subop/push 1/mod/*+disp8 6/rm32/esi . . . . 4/disp8 . # push *(esi+4)
ff 6/subop/push 0/mod/indirect 6/rm32/esi . . . . . . # push *esi
# . . call
e8/call next-token-from-slice/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0x10/imm32 # add to esp
# return parse-hex-int-from-slice(slice)
# . . push args
51/push-ecx
# . . call
e8/call parse-hex-int-from-slice/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
$parse-datum-of-word:end:
# . reclaim locals
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# . restore registers
5e/pop-to-esi
59/pop-to-ecx
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
# . . vim:nowrap:textwidth=0
|