summary refs log tree commit diff stats
path: root/src/gifs/lainchan/galladite.png
blob: 03300eac631fec524dd2ca08e3372439171b0fd2 (plain)
ofshex dumpascii
0000 47 49 46 38 39 61 f0 00 3c 00 f3 0a 00 44 28 3b 21 1f 34 3f 3f 74 8a d3 5a 00 00 00 f3 cf 1a 2e GIF89a..<....D(;!.4??t..Z.......
0020 2d 3a eb d5 a5 51 57 29 df d9 e5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 21 ff 0b -:...QW).....................!..
0040 4e 45 54 53 43 41 50 45 32 2e 30 03 01 00 00 00 21 f9 04 05 11 00 0a 00 2c 00 00 00 00 f0 00 3c NETSCAPE2.0.....!.......,......<
0060 00 00 04 ff 90 c8 49 ab bd 38 eb cd bb ff 60 28 8e 64 69 9e 68 aa ae 6c eb be 70 2c cf 74 6d df ......I..8....`(.di.h..l..p,.tm.
0080 78 ae ef 7c ef ff 40 9e 60 08 18 0a 8a 44 23 f2 a8 6c 26 9f 4c e8 72 ea 8c 5a a9 d2 2a f6 aa ed x..|..@.`....D#..l&.L.r..Z..*...
00a0 66 87 86 84 78 4c 3e 88 11 86 f4 61 cd 66 23 de ef 01 82 6c 18 d8 11 76 79 fb a0 e6 a7 ff 80 7f f...xL>....a.f#....l...vy.......
00c0 34 43 01 46 85 84 86 89 88 8b 02 87 8d 8a 8f 8c 8e 93 90 94 92 95 98 97 9a 91 9c 96 9d 61 67 64 4C.F.........................agd
00e0 a2 63 7b 6b 71 79 a8 76 06 78 72 72 ac 79 08 a5 6b 06 6b 09 66 b6 b6 73 69 02 2d 5b be 5e 5c 5f .c{kqy.v.xrr.y..k.k.f..si.-[.^\_
0100 c1 c3 bf c2 c5 c4 c0 c7 ca 02 a0 a1 a3 65 6d af a9 d3 a9 78 a7 79 b2 73 cf a2 69 45 28 9d 99 e0 .............em....x.y.s..iE(...
0120 9b 9e e4 e1 e5 e3 e6 e9 e8 eb e2 cd ce cf b1 6d d4 f3 b0 a8 d2 76 b2 ee db 62 06 84 25 c8 c6 92 ...............m.....v...b..%...
0140 09 0c 48 10 a0 c1 65 05 11 1e a1 b5 6f 0c ad 03 f7 e8 51 63 15 b1 9a 9b 86 b1 f8 45 19 21 ae e3 ..H...e.....o.....Qc.......E.!..
0160 39 8f ea ff 40 b2 fb 48 32 64 49 74 fa f8 8d 82 28 31 cf aa 8a af 2a c2 62 b3 cd 5d bf 49 21 0e 9...@..H2dIt....(1....*.b..].I!.
0180 0e d4 99 70 a7 c2 9f 3e 83 3e 51 33 0a cd 98 6b 12 eb 4c 9c 26 f3 4e 2d 6e 69 48 19 c0 02 c2 d2 ...p...>.>Q3...k..L.&.N-niH.....
01a0 05 74 14 24 4d 38 37 61 e4 90 ac 94 34 84 e5 c0 eb 43 00 0f 7f e8 8c 52 da b2 65 c4 a6 b0 1c da .t.$M87a....4....C.....R..e.....
01c0 e4 e7 e9 03 55 0c c5 b2 52 e9 2a ac ab 42 0a 77 35 6c e4 00 00 44 59 0e 70 e0 38 3c da b6 1e bd ....U...R.*..B.w5l...DY.p.8<....
01e0 38 d6 5a 35 d5 95 20 a5 99 7e 59 3c 28 da b0 89 82 55 09 e3 b6 9a cc ca a8 83 11 d3 86 3d 14 58 8.Z5.....~Y<(....U...........=.X
0200 bd fa 0d 51 31 8d 1d cb 59 05 2b 4d cc c6 ab d4 86 59 15 68 91 e6 c1 13 96 00 76 82 c1 8a df 2e ...Q1...Y.+M.....Y.h......v.....
0220 7c 0d e2 55 12 9c 79 05 2e a4 7d 91 36 0e 1a 80 01 d6 05 10 60 df ce 1a 0d 45 b6 f6 ec 49 4b 0c |..U..y...}.6.......`....E...IK.
0240 e7 65 ab d8 cd 56 71 ef 8e dd 80 69 4e 9e 13 25 77 84 01 a7 04 ae a0 45 36 2a 8e 68 fe 69 d1 be .e...Vq....iN..%w......E6*.h.i..
0260 75 55 0e ff 69 f6 11 10 c0 2a d1 ac b1 1e 76 14 c1 94 8a 52 d6 78 57 1e 1a b0 9c 32 d9 65 d8 b1 uU..i....*....v....R.xW....2.e..
0280 b1 60 6b 64 4d d1 dc 13 7c 79 28 81 37 f9 31 91 dc 16 c7 05 c4 57 88 5f e5 b7 57 89 c2 7d 18 8c .`kdM...|y(.7.1......W._..W..}..
02a0 5e 4d 4c f0 52 82 0a 2e 18 19 78 e1 55 18 13 64 70 f0 71 9e 79 e7 4d 74 dd 6a b2 98 c2 1d 07 63 ^ML.R.....x.U..dp.q.y.Mt.j.....c
02c0 11 00 89 80 86 90 06 56 8b 4e 7a 04 20 48 52 5e 09 65 80 a0 15 58 65 47 f1 71 09 51 92 39 72 e7 .......V.Nz..HR^.e...XeG.q.Q.9r.
02e0 4a 01 13 8d 97 80 85 b6 98 41 93 29 92 bd 84 14 53 64 ba b1 24 67 20 ba e8 1c 01 2f 7e 59 d8 88 J........A.)....Sd..$g...../~Y..
0300 ff 39 f9 cb 89 5e b0 78 a2 8c 22 f2 59 23 8b 52 4c 17 23 01 63 e2 a8 a1 99 da bd 45 91 53 75 58 .9...^.x..".Y#.RL.#.c......E.SuX
0320 e3 66 2d d1 dc 01 87 2b 97 8e 57 a7 29 07 6c 87 27 7c 5d ca 57 e2 21 7c 15 32 df 95 9f 55 f9 d1 .f-....+..W.).l.'|].W.!|.2...U..
0340 96 ad 1e 86 89 7f 87 39 39 60 ad fe 48 10 29 99 dc bd d1 5a 35 e3 0d 30 0b 45 6d b4 89 8b 85 7c .......99`..H.)....Z5..0.Em....|
0360 34 78 1b ff 36 a3 c6 72 27 7f 89 06 06 45 8a 86 c2 58 45 8a c4 c8 88 ad 9e 79 56 f9 a8 a2 5f d0 4x..6..r'....E...XE......yV..._.
0380 48 84 7b be c6 03 2c 83 da 65 57 8d 64 77 3c c4 92 ba 6f b6 c9 ac 2d e1 45 34 6a a4 a6 66 00 0e H.{...,..eW.dw<...o...-.E4j..f..
03a0 ae b6 16 48 5f aa b6 5a 79 5f 3a af 1e 4c 25 98 04 ef 07 f0 c0 0a 3f 82 2e a4 f4 92 3a 29 7b ab ...H_..Zy_:..L%.......?.....:){.
03c0 bd eb a9 a7 6e d8 81 cb a6 20 5b 23 6f 64 97 9e 57 71 29 f1 f4 bb 5c b8 8d 02 4a 84 a3 d3 71 db ....n.....[#od..Wq)...\...J...q.
03e0 a7 40 d1 e5 fa b2 cb 57 20 6a 73 b7 84 5e 37 c1 af 6e b4 b1 e1 52 26 6f 9a 80 1e 6d de c2 a9 90 .@.....W.js..^7..n...R&o...m....
0400 48 b3 04 ea 44 fb 96 b9 9a 60 a5 35 ec ea aa cf 3d f2 dc 59 11 c7 8a d5 94 b9 1a 58 f0 bf ab 52 H...D....`.5....=..Y.......X...R
0420 a9 eb ad bc 4e 9d 2e ca 17 9b 79 87 c9 b3 cd a6 2c d0 6e 26 7d 06 1e b6 55 f6 36 52 ac 44 5d 2a ....N.....y.....,.n&}...U.6R.D]*
0440 76 54 57 4b b3 b6 37 2b 4a e8 b5 d5 15 0a ae 89 f9 31 0a 1c e2 38 07 26 a8 11 6a 43 3a ea d0 f4 vTWK..7+J........1...8.&..jC:...
0460 bc 04 c8 ff 1c 63 7e 9c 2c a7 bc 6d ee 69 84 1c 47 ad f2 55 4d aa c3 ab d6 8d e7 47 0e ac 4f 5a .....c~.,..m.i..G..UM......G..OZ
0480 bd 70 c0 b1 9f dd 6b d9 55 77 5d b9 c5 38 ea 98 6f 84 68 e4 56 19 2d 9c 2f fd e6 2c c2 0f 2f 67 .p....k.Uw]..8..o.h.V.-./..,../g
04a0 c9 f8 ec 3b ed 05 d6 2a 97 38 cb b6 0e 4a 78 ce 91 07 7a 84 ce 85 f7 29 ae 16 8e 1e f9 33 dd 63 ...;...*.8...Jx...z....).....3.c
04c0 6e d8 e0 de c1 07 02 8a f1 a5 1c a5 fe 9a 03 10 1f 59 2b 75 a6 cc 20 d5 a8 da 6e b0 d8 b9 3b cc n................Y+u......n...;.
04e0 bf 38 ab 4b 9d 56 0e f6 b0 b1 b1 6a 4b 64 73 1d 33 2a b7 01 cc c9 26 78 c3 33 8a 51 68 e2 b9 b9 .8.K.V.....jKds.3*....&x.3.Qh...
0500 5d 46 31 7f 88 1f 85 2c 42 26 69 6d 07 01 81 db d3 32 3c 40 22 3f 6d 6b 7a 33 7a 8f e3 90 e0 b8 ]F1....,B&im.....2<@"?mkz3z.....
0520 e1 94 2b 45 e2 eb c0 d0 48 e6 12 50 68 8e 1f 19 f9 1c c8 dc e0 9d cd d9 26 54 27 0b da 7a 40 e8 ..+E....H..Ph...........&T'..z@.
0540 2f 01 8a e4 37 01 8c 52 d7 6a 87 27 04 42 ac 13 d3 a9 cb 95 62 c8 01 f3 bd 25 37 b6 e1 8d 77 f6 /...7..R.j.'.B......b....%7...w.
0560 f0 31 65 ff b5 e9 87 5a b4 21 0d 83 48 aa 60 15 40 03 d1 63 a1 05 cc 46 35 99 2d ca 84 2d eb 10 .1e....Z.!..H.`.@..c...F5.-..-..
0580 f7 b6 97 bd 9a c5 d1 4f 54 2c c5 07 7d b7 b7 f8 89 31 74 5b f4 1c 17 6b 11 bc 1e 42 b0 32 25 ab .......OT,..}....1t[...k...B.2%.
05a0 df 10 cf e8 af fe 41 2c 2b 61 ca 9f 81 60 c7 a5 d0 3c 0c 92 b8 63 dd 97 0e 28 bb fe d4 8a 8a 05 ......A,+a...`...<...c...(......
05c0 28 55 bb 36 f4 c1 f9 c5 0b 87 80 44 90 0e 2d e8 87 1e de f0 6e e7 e9 20 29 43 d8 bd 3d 01 66 8e (U.6.......D..-.....n...)C..=.f.
05e0 25 1c 1b 8a 50 38 b3 17 3a 69 85 b3 1b 57 5e 60 58 39 06 2d 32 58 45 d2 c3 2d c2 a8 45 41 d6 8b %...P8..:i...W^`X9.-2XE..-..EA..
0600 90 59 74 8d 51 10 f9 36 63 65 43 47 0c 5c a3 11 9f 78 b5 4d 6e 06 34 49 bc 1d 7e 64 55 3b da 39 .Yt.Q..6ceCG.\...x.Mn.4I..~dU;.9
0620 52 89 99 7c a4 23 40 49 4a 52 de 46 1b 67 d0 62 0f 39 c5 ca 4d 15 52 73 d3 9c 1f 1e f4 98 9d 76 R..|.#@IJR.F.g.b.9..M.Rs.......v
0640 a2 91 38 8b fb 13 b9 80 b9 30 37 26 e1 70 d4 99 5c 1c 05 2a 9d 3a 12 94 8e da 2a a6 31 cd 18 2c ..8......07&.p..\..*.:....*.1..,
0660 51 2d 53 ff 9e 2f a9 20 3d 9f 32 a1 68 9e c1 15 4e 69 5b 3b 19 c9 9f fc 25 50 7b af bb 0f 25 23 Q-S../..=.2.h...Ni[;....%P{...%#
0680 11 4e ff ed ea 97 e9 34 a0 d9 b0 c4 2b 9f 49 80 a2 7b 44 e6 1d ec 76 b4 f4 05 c9 82 ce 5c 13 33 .N.....4....+.I..{D...v......\.3
06a0 ad 91 8b f1 8c 72 a4 a3 a4 25 44 d3 88 4b 5b 21 f4 51 c8 78 6a 41 03 1a cc 40 91 2b 85 28 b4 29 .....r...%D..K[!.Q.xjA...@.+.(.)
06c0 01 46 8a 31 06 cd c4 8b 75 a0 4d 58 eb b6 43 a3 41 24 31 7e cc 45 3d 62 71 d4 d6 60 33 9b 5b 53 .F.1....u.MX..C.A$1~.E=bq..`3.[S
06e0 95 37 17 d6 cd 4c 74 a5 a5 5c fb 9f d7 18 06 53 fd 71 13 9d 73 95 24 25 26 c6 d5 19 6a 0a 64 6b .7...Lt..\.....S.q..s.$%&...j.dk
0700 2a 8f dd 96 96 b4 37 51 28 a3 1f 1d 12 44 72 8a 53 92 42 0f a0 df ab 65 c1 76 d9 d7 a8 5e 0f aa *.....7Q(....Dr.S.B....e.v...^..
0720 0d e5 13 2e 75 66 47 ec 5d 6f 02 6f 45 6a d3 1a fb 14 e3 89 a1 16 b9 79 26 6b cf 4a 9b f8 49 ad ....ufG.]o.oEj.........y&k.J..I.
0740 9f c7 64 0d 9e fe ea c9 2f 39 11 9d 79 1d a7 25 f5 2a 57 99 de 6e ae 60 4b 20 39 6f 57 d8 ae b2 ..d...../9..y..%.*W..n.`K.9oW...
0760 c6 15 8b ff 5d ec f1 a4 db 58 9e ba 49 4e ca fc 1b 52 01 c7 19 c1 51 8f a1 c8 01 e7 67 b5 67 3d ....]....X..IN...R....Q.....g.g=
0780 38 3e 0e 98 08 75 21 56 15 ca b8 ad 9a 2f b5 d9 41 03 44 e6 86 0b 67 92 35 59 5e 44 d9 1c e2 60 8>...u!V...../..A.D...g.5Y^D...`
07a0 0b f5 38 77 a2 ba dd c0 36 51 6a 5c 96 8a 77 b9 50 5c 62 25 f9 6a 4e 03 23 38 af 81 55 e7 37 dd ..8w....6Qj\..w.P\b%.jN.#8..U.7.
07c0 fb de b7 5e 23 87 64 65 ed 6b 77 58 cf ea 0a 49 58 94 0d 31 5c d7 18 2e f6 82 77 b3 27 ec 6c 79 ...^#.de.kwX...IX..1\.....w.'.ly
07e0 81 61 d0 a5 72 cf 5c ed cd ac 69 cd 6b a3 76 b6 95 5d b6 29 9d 0e ef fb 4c b3 d6 53 42 6d bd f1 .a..r.\...i.k.v..].)....L..SBm..
0800 2c c9 e2 25 c0 12 78 80 93 54 b0 83 87 fb 52 99 c6 95 4b 7e 95 eb 83 6d 74 a4 0a 73 67 15 85 c8 ,..%..x..T....R...K~...mt..sg...
0820 d4 4e 5f 2b dd 7a c5 a3 9e 3a cc 31 1a fe 0b e0 00 13 e6 8d 25 3d 31 74 0e 2c 18 d4 8c d7 a9 67 .N_+.z...:.1........%=1t.,.....g
0840 0e db ca 80 63 62 39 63 00 c0 98 99 0a 18 fa c1 9b ca d4 6b 59 42 ee 8e bc 92 65 a1 4c d9 c6 ca ....cb9c...........kYB....e.L...
0860 dc 25 4b ff ee 48 ac 49 bb b2 39 03 10 f6 57 4b ef 2a 60 ab 36 52 b0 13 6e 20 83 76 a1 09 40 f0 .%K..H.I..9...WK.*`.6R..n..v..@.
0880 83 8b ed 12 da 10 cd fa 07 91 a1 81 19 69 a8 e8 82 3e b0 e6 ac 3d 6e 18 94 e6 8c 9b eb dc 3d c1 .............i...>...=n.......=.
08a0 24 4a a9 02 a5 71 07 d4 77 8c f5 39 24 87 a1 e6 e7 76 18 62 0a f5 a1 da 3a 7b e6 6a 55 4c c2 6c $J...q..w..9$....v.b....:{.jUL.l
08c0 af 38 5b 3f 27 81 76 b3 1b b1 8b 03 dd 64 da eb 6c 88 7a 2e 77 e5 94 54 06 25 ea db 45 4e 78 42 .8[?'.v......d..l.z.w..T.%..ENxB
08e0 6e a0 f4 e4 dc e5 16 4a 30 f4 dc 0d 75 2f 21 2a dc c0 61 28 83 f6 86 b3 d6 bb 94 cf e8 87 b9 ed n......J0...u/!*..a(............
0900 cc 24 6c fb fb d9 d1 0e f8 bf f5 83 19 66 fc 3b 10 6b 01 b1 29 c8 28 4a 10 67 67 25 06 10 38 1b .$l..........f.;.k..).(J.gg%..8.
0920 0d 93 6e 74 ef fb e2 ee ce b8 c5 07 b2 1b e5 15 25 be a6 63 57 01 d2 d3 9b bf 9c 60 e0 12 97 36 ..nt............%..cW......`...6
0940 c0 51 ce f2 95 33 22 dc 1f 47 12 b7 2b 2a 97 de ac a3 05 1a af b8 ce 31 be f1 9e eb 3c 2d a5 1e .Q...3"..G..+*.........1....<-..
0960 45 86 66 42 7e e5 9a ef 06 33 a1 8d 81 cb 55 ce f4 94 3b bd e5 4d 37 02 c2 e1 ad 92 2a cf 7b 5d E.fB~....3....U...;..M7.....*.{]
0980 3a b2 61 54 00 d1 a4 20 78 fd eb 60 0f bb d8 c7 4e f6 b2 9b fd ec 68 4f bb da d7 ce f6 b6 bb fd :.aT....x..`....N.....hO........
09a0 ed 70 ff 41 04 00 00 21 f9 04 05 11 00 03 00 2c 05 00 05 00 e4 00 32 00 00 04 ff 70 c8 49 2b 90 .p.A...!.......,......2....p.I+.
09c0 e2 8e 8c 35 df 5e d8 8d 20 f9 9d 62 a9 a2 66 ca ae 6e dc 56 74 6d df 78 ae ef 3c 16 f8 c0 cd 4f ...5.^.....b..f..n.Vtm.x..<....O
09e0 18 14 0c 8d c5 a3 32 c9 24 3a 91 cf 65 b4 09 ad 4a ad c5 9e 76 cb a5 0d 7b af b0 0c 36 23 9b c5 ......2.$:..e...J...v...{...6#..
0a00 65 f4 79 ac 6e 6b ba f0 b8 ee 93 c3 4e ef f6 fc 75 4f e5 e3 fd 7a 7d 82 4e 72 85 86 35 02 38 6e e.y.nk......N...uO...z}.Nr..5.8n
0a20 69 6c 8d 8c 8f 6b 90 8b 91 94 89 87 97 85 74 34 81 7f 83 9c 9f 80 a1 9e a2 9d a5 50 98 a8 5b 55 il...k........t4...........P..[U
0a40 9b 8e 95 ad 93 b0 af b2 92 b3 a9 b6 3c 2f 13 76 36 9c 14 ab 83 be a4 c1 41 bc 52 a8 96 b7 c9 72 ............</.v6.......A.R....r
0a60 bb 65 bc 63 be 29 03 cf ba ad d0 24 73 6f 75 5a d9 ca dd db 65 c6 75 e1 4d c3 4f ba a4 c8 03 e3 .e.c.).....$souZ....e.u.M.O.....
0a80 38 5f 3a ed de f0 de a7 d7 d4 ac f4 f6 15 6a d2 90 ce 18 f5 1b 88 a2 fd 3b 41 41 a0 bf 78 08 b9 8_:...........j.........;AA..x..
0aa0 cc 23 b7 ae 1c b2 5e e7 a8 d8 30 b6 8e 19 b0 88 00 0f 26 dc b8 83 60 b3 81 ff ff f6 a9 10 99 6b .#....^...0.......&...`........k
0ac0 e0 33 6e 23 4d 4e 30 48 c9 5a 4a 8e 30 15 51 24 86 31 dd 3b 42 35 8f e4 24 87 e8 a6 45 73 13 fc .3n#MN0H.ZJ.0.Q$.1.;B5..$...Es..
0ae0 38 bc 19 b3 a8 85 7b 2b 54 4a f0 10 52 29 9d 6a 21 99 a6 51 ea d2 e3 52 a4 46 b3 aa a3 c9 90 2b 8.....{+TJ..R).j!..Q...R.F.....+
0b00 21 9d 17 c3 e2 24 26 b4 a2 d0 9a 5a d3 82 fc 88 54 d3 b5 69 92 9a b6 65 e9 b6 e5 5a b5 5a 77 99 !....$&....Z....T..i...e...Z.Zw.
0b20 d5 b8 70 2c 9e 9d 77 b6 66 f4 fb f3 97 84 b3 3c f1 c6 2c 69 e2 2e c9 82 f8 72 41 6d eb 94 6a e5 ..p,..w.f......<..,i.....rAm..j.
0b40 95 58 15 6f dc fb 55 63 39 5f 80 fb 42 f4 7a aa 2c 69 c4 7e 35 2f 96 ea 0a 73 d2 b7 6c ed 36 43 .X.o..Uc9_..B.z.,i.~5/...s..l.6C
0b60 c9 f8 a5 6c db aa 61 ea 15 bb 3b df 95 d0 3e 1b 02 76 48 01 b5 e1 dc 1c 6b eb b3 1c 39 1a 1b e6 ...l..a...;...>..vH.....k...9...
0b80 83 c3 40 97 ee 3a 1d f2 cd a7 25 26 8e 6e dc 34 d0 ce 81 39 17 26 7a 1d a1 d5 49 d8 aa d3 85 8b ..@..:....%&.n.4...9.&z...I.....
0ba0 83 f6 fa e6 73 cb 17 ed 3d 9a dd a6 df 62 b5 8c f7 dc 5d fe ea f8 a9 e8 f3 1c ff 2e 97 99 51 15 ....s...=....b....]...........Q.
0bc0 6b 8f f9 97 10 67 73 54 04 dc 7d 59 04 15 e1 61 12 86 97 5d 60 18 29 98 d0 79 08 ea e2 d4 1b 20 k....gsT..}Y...a...]`.)..y......
0be0 c6 26 60 6c 07 e2 53 a2 6d 75 69 d8 0d 7d c1 55 f8 d3 50 7c f5 97 da 70 68 b9 c8 a0 8a f0 28 c7 .&`l..S.mui..}.U..P|...ph.....(.
0c00 5a 5d b5 9d f8 94 88 2e 78 38 15 90 8d a9 87 a3 37 e2 7d d1 e2 77 0f c9 68 58 2f 4a 76 45 98 8c Z]......x8......7.}..w..hX/JvE..
0c20 47 ca b3 23 5d 1f ba 46 d2 7b 06 b2 77 a2 4b 3e ba 57 65 8e 33 4d 69 a3 57 30 72 b7 dd 8b 34 4e G..#]..F.{..w.K>.We.3Mi.W0r...4N
0c40 28 d8 7e 33 8e 99 09 97 0f 89 89 5b 96 57 19 58 60 9d 45 ea 39 64 9e 29 ca 89 89 68 65 a6 f9 d0 (.~3.......[.W.X`.E.9d.)...he...
0c60 83 be 4d 08 e5 99 83 bd b9 24 9c d6 09 7a 08 87 94 f1 13 a2 9f 2d 79 49 15 9d 9c 4a 7a 4c 99 84 ..M......$...z.......-yI...JzL..
0c80 32 da 97 a1 88 a6 59 cc 85 36 ad 29 9c a7 70 d0 29 17 a6 61 1a 89 62 90 7c 75 9a 0f ad 80 a2 c4 2.....Y..6.)..p.)..a..b.|u......
0ca0 aa 21 c7 81 45 61 a2 4c 96 1a 5a a9 51 9a 69 2c a4 83 92 a7 61 8f 90 45 77 12 9a 26 97 32 ab 88 .!..Ea.L..Z.Q.i,....a..Ew..&.2..
0cc0 ae 01 01 18 68 0f ce 8d b9 ea af a5 6d 37 47 17 6c ca d4 43 92 85 a0 86 63 8f b6 6e 41 ed b4 7d ....h.......m7G.l..C....c..nA..}
0ce0 46 7a ab 67 75 20 c8 92 7e 9a 7a d3 a1 2a e8 e4 3b ca be a6 e8 db af 27 42 fe 8b a1 6e e6 b2 db Fz.gu...~.z..*..;......'B...n...
0d00 da c1 b1 d0 a2 30 c2 b5 24 7c db 46 0e f7 c4 2f 28 13 fb 4b b1 c0 17 f7 e6 28 bf f3 f9 1b ef c2 .....0..$|.F.../(..K.....(......
0d20 0e 87 dc f0 c8 20 93 0c eb 7f 0f d7 60 f1 ca 15 b7 8c 31 cb 2f 7b 5b 94 30 d8 96 6c 33 c3 37 8b ............`.....1./{[.0..l3.7.
0d40 9c 73 2d 9a 51 c7 2b cc 19 03 2d b4 cb 41 cb 9c 55 b8 14 44 00 00 21 f9 04 05 11 00 03 00 2c 05 .s-.Q.+...-..A..U..D..!.......,.
0d60 00 05 00 e4 00 32 00 00 04 ff 70 c8 49 ab 00 f2 66 3c 74 e7 5e 08 8e 5b f9 99 22 4a 9e 6c da ae .....2....p.I...f<t.^..[.."J.l..
0d80 6e 0c 73 55 6d df 78 ae ef bc 1e 64 bf 4e 50 30 2c 02 8f 42 24 51 69 4c 3a 97 cf 26 74 2a ad 32 n.sUm.x....d.NP0,..B$QiL:..&t*.2
0da0 af 51 64 6f cb ed e6 04 5e 99 6a fc 22 8b cb e8 b3 7a 66 66 a7 bd f0 78 b8 47 c5 d6 b3 f8 bb de .Qdo....^.j."....zff...x.G......
0dc0 9a e7 ef ed 7e 81 5a 72 84 85 35 41 3a 6b 6d 8b 69 6e 8a 8d 8c 8f 92 2b 86 95 96 2c 36 7f 7d 80 ....~.Zr..5A:km.in.....+...,6.}.
0de0 9c 9b 9e 9a a0 82 9f a2 60 97 a6 70 50 99 8e ab 91 ac 90 af 93 ad b2 af a7 b5 3c 2e 13 77 15 7e ........`..pP.............<..w.~
0e00 14 4d 14 9a 03 a4 88 b9 43 89 c5 b6 c8 c9 84 ba 64 37 67 bf 20 b9 6e d0 8c d4 98 89 34 97 a5 ca .M......C.......d7g...n.....4...
0e20 dc 5c 31 58 38 7c bf be e2 c4 9d e3 83 5f c3 5f 5c eb dd ef 3c 4d 94 d2 35 b8 aa f5 30 f4 b4 f7 .\1X8|......._._\...<M..5...0...
0e40 16 d9 f8 19 14 a6 e9 f3 00 af 20 1c 5f e6 3a 24 4c 95 c9 1d 30 51 ce 8e e1 41 e7 84 e2 94 5e e9 ............_.:$L...0Q...A....^.
0e60 0c 6a dc 42 70 20 8d 79 00 ff 51 78 34 61 ed 1b 49 4a f9 9a 8d bc 26 72 a3 cb 1d 17 c1 25 a4 48 .j.Bp..y..Qx4a..IJ....&r.....%.H
0e80 b3 5c a7 6d c1 ea 39 44 98 11 d8 42 77 2f 83 36 03 d9 42 9f b5 92 d1 66 0d 48 ca 12 4d c9 80 2a .\.m..9D...Bw/.6..B....f.H..M..*
0ea0 a3 0a 15 ca 4c c9 cf 09 12 19 9e 83 38 33 ab 94 ab 16 be 62 cd 38 35 28 51 5c 67 3f 86 dc 57 cd ....L.......83.....b.85(Q\g?..W.
0ec0 a8 d1 69 69 a5 76 2c 4b 37 e6 c4 99 78 b5 d8 fc 94 b7 22 58 9a 60 b5 3e a1 5b 17 25 49 b7 87 13 ..ii.v,K7...x....."X.`.>.[.%I...
0ee0 bf 89 04 55 e1 04 7f 4e 07 36 b6 d7 92 30 55 9e 83 c9 4a 8c 08 8e 97 ce 7a 81 ff 86 1e eb d7 b2 ...U...N.6...0U...J.....z.......
0f00 cb b8 8b 23 af 7d b6 92 60 4a 4c 70 15 b3 56 6c da a5 dd 50 a4 6f 23 da eb b3 f3 e7 d2 c0 7b 03 ...#.}..`JLp..Vl...P.o#.......{.
0f20 af bd 11 6d db a1 ff 8a 1e 57 dd 4f 36 d3 a5 72 21 13 d7 58 d5 93 45 a0 81 77 db 11 bd 5a ec dd ...m.....W.O6..r!..X..E..w...Z..
0f40 ed b9 a7 bf 44 6d f2 56 6b c8 b3 71 b8 46 de 34 fd 5c f1 06 75 9f 33 96 1b b3 f0 70 bf 05 eb e7 ....Dm.Vk..q.F.4.\..u.3....p....
0f60 8d 1d 7e 37 e3 4d 41 d7 03 ff 7a af a5 e7 0d 79 93 a1 e6 1f 75 f6 f5 17 16 59 d9 d5 d7 93 7d a3 ..~7.MA...z....y....u....Y....}.
0f80 7d 97 07 46 8e 2d 08 8f 82 d8 54 b6 8d 7b 05 c6 26 81 88 ef 81 a8 21 83 dd f5 14 a1 04 da 59 f8 }..F.-....T..{..&.....!.......Y.
0fa0 90 4c f9 ed 14 e3 84 27 c6 67 58 7b 6a 31 87 d4 6a 02 49 b5 63 73 19 0a 48 99 72 35 2a 53 9d 7c .L.....'.gX{j1..j.I.cs..H.r5*S.|
0fc0 0f 0e b7 62 4e 2e 7a f7 a1 93 0d 5a 25 61 91 ca 90 97 e3 8f 1f 9e 97 5c 08 5a 8e f8 18 7b 25 f6 ...bN.z....Z%a.........\.Z...{%.
0fe0 18 20 95 b5 20 a9 df 92 2d 1e 29 ce 5e d7 fd d6 66 70 9b 91 79 0a 80 61 7e a9 63 6b 5d fe e8 0c ........-.).^...fp..y..a~.ck]...
1000 82 76 0e 39 a4 9c 96 44 99 e1 7e 10 6e 05 e3 85 29 c2 49 63 66 2c 16 0a 68 25 75 c2 b6 25 53 1f .v.9...D..~.n...).Icf,..h%u..%S.
1020 8a 59 de 33 39 72 19 dd a6 41 3e 6a 89 99 0e a1 39 25 a1 13 b1 f9 97 a0 6a 3a ea 69 18 1c 9e e4 .Y.39r...A>j....9%......j:.i....
1040 23 9e cb fd b9 d2 53 7d 5a b9 aa 2d a4 02 76 e8 9b a9 f0 27 e5 a0 71 1e aa 07 86 82 19 82 93 9c #.....S}Z..-..v....'..q.........
1060 9a aa 47 a0 87 da e4 29 1d 92 3f 30 f1 29 47 79 45 56 67 91 a8 81 8e ea 20 67 b7 a0 ba 2d 7d 16 ..G....)..?0.)GyEVg......g...-}.
1080 56 fb dc ac 62 c2 84 0a 51 d1 6e 61 eb b4 e5 72 83 d3 b3 dd de 24 8c bc f4 8e 52 2f 6e d6 35 74 V...b...Q.na...r.....$....R/n.5t
10a0 ef b7 b6 78 c6 83 2b b1 c0 02 f0 c0 b3 04 ac 46 97 06 16 14 b0 be f6 36 8c ef c3 f3 3a 1c 31 c4 ...x..+........F.......6....:.1.
10c0 f3 15 17 f1 0d 04 0b 5c 70 c6 06 73 ec f1 c6 84 3d 02 2e c5 12 ef 6b 72 c9 28 93 6c ad 6d 5c dd .......\p..s....=.....kr.(.l.m\.
10e0 f2 b1 c6 30 77 0c 72 cc 2f cb 7a da ab 5e 4c ac f3 c9 2a ef 9c 72 cb 75 05 6b 43 04 00 21 f9 04 ...0w.r./.z..^L...*..r.u.kC..!..
1100 05 11 00 03 00 2c 05 00 05 00 e4 00 32 00 00 04 ff 70 c8 49 eb 10 40 62 9d 6f df 1e 27 86 24 68 .....,......2....p.I..@b.o..'.$h
1120 7e e8 78 aa 69 d9 ae 2e 2b 93 56 6d df 78 ae ef fc 15 68 3f 1f 70 28 2c 0a 82 47 62 d2 88 6c 2a ~.x.i...+.Vm.x....h?.p(,..Gb..l*
1140 9d cc a7 34 4a 5d 5a a1 d7 9e 76 cb ed da 60 e0 97 78 16 26 8f 63 e8 72 fa ac f6 ba df 70 09 76 ...4J]Z...v...`..x.&.c.r.....p.v
1160 3e cd 56 e9 f7 3a de ce df fb eb 71 81 82 4b 36 6c 86 66 88 6b 89 6a 8c 87 8a 8f 20 82 92 5e 1f >.V..:.....q..K6l.f.k.j.......^.
1180 35 7f 79 98 7d 7a 9b 99 97 9a 9d 9c 93 a2 5a 50 14 8e 8d 8b a7 aa a9 ac 90 ab 17 a3 b1 3c 26 16 5.y.}z........ZP.............<&.
11a0 56 35 9f 14 76 b9 58 13 9f b6 13 a5 39 84 3a 41 b2 c6 c7 15 ba 2a c2 2f a6 23 b9 67 03 af d0 1a V5..v.X.....9.:A.....*./.#.g....
11c0 3a 95 c8 d8 d9 38 30 bd 48 c2 78 bb d5 a1 dd e3 53 3a c3 83 da ea b3 de 25 b7 1d d4 b0 35 2d d2 :....80.H.x.....S:......%....5-.
11e0 33 f1 6d ef b5 f0 ce 34 bd d1 fe cf f6 ad 1b f8 25 18 91 70 45 0a d6 e2 c5 09 5d b2 62 e4 12 46 3.m....4........%..pE.....].b..F
1200 14 40 01 dc 44 88 04 33 de a0 07 50 1e 9a 2f 02 ff 1f d5 13 d9 ab 23 45 7b 26 43 82 e1 17 49 a3 .@..D..3...P../.......#E{&C...I.
1220 cb 1b 0e 75 19 f4 38 a0 1d 26 84 ca 0e 46 ac a9 a4 a2 ce 72 46 5e 0a 4d 76 ed 63 c7 78 48 ff 2d ...u..8..&...F.....rF^.Mv.c.xH.-
1240 3a ca 14 e5 b3 94 4f 9d 0e d5 28 f3 67 50 ab 31 19 82 92 23 4e a2 b9 89 3e a9 e0 c4 38 35 23 37 :.....O...(.gP.1...#N...>...85#7
1260 93 50 25 14 6d 99 68 24 be 80 5d 57 4a 95 ab 36 6a d9 8c 33 ab 7a 4d 68 13 d7 45 ac 64 09 81 cb .P%.m.h$..]WJ..6j..3.zMh..E.d...
1280 6b d1 ea 5d aa 6b 39 da 65 4b 43 29 c9 c5 2a 15 f7 6b db f4 30 d5 52 84 17 5a d2 7c f5 66 d8 93 k..].k9.eKC)..*..k..0.R..Z.|.f..
12a0 30 33 d3 2c dc d9 32 c1 b3 94 a5 de a3 c7 26 6d ae b4 a0 51 a7 61 19 d2 b4 36 d1 7c fe 26 d3 9d 03.,..2.......&m...Q.a...6.|.&..
12c0 d5 9c 56 c1 be 01 7f 35 6c 5b 1d ad 56 6e 13 4f 70 fc f6 63 64 c8 fa e6 d6 2e ae 4d af df e0 0f ..V....5l[..Vn.Op..cd......M....
12e0 7b 02 cd 99 7d ef 2f ae 62 77 52 1f 28 bb b9 96 36 ad 67 c1 76 bd 7e 79 d7 f1 b7 85 57 e9 11 9b {...}./.bwR.(...6.g.v.~y....W...
1300 f4 f5 d0 c0 b0 f7 0e 4f 1c fe b1 e3 ee 44 b7 43 ff 24 cc 39 b6 91 80 8c 25 58 a0 7f e4 61 66 58 .......O.....D.C.$.9....%X...afX
1320 60 33 8d 15 97 7d 11 ea 86 d3 67 a2 31 58 9d 64 8c 81 64 d7 6a 70 19 45 46 49 23 4a b7 8c 7b 34 `3...}....g.1X.d..d.jp.EFI#J..{4
1340 69 68 0c 6e c5 40 a8 9d 47 f7 e5 16 4a 8b fa b9 c8 df 5e 2a ca 02 60 79 b0 c1 e3 a3 89 ce a9 c6 ih.n.@..G...J.....^*..`y........
1360 1e 74 22 4e 96 a3 8e 0e 7a 47 e3 8d 12 c2 48 61 7f 37 7e c7 53 94 36 1d 39 4a 79 ca 11 f5 61 8f .t"N....zG....Ha.7~.S.6.9Jy...a.
1380 28 62 79 22 8c cd 00 09 60 72 56 ca c2 62 7e dd 7d 57 df 70 f3 cd 88 a6 75 36 72 e7 50 99 93 ec (by"....`rV..b~.}W.p....u6r.P...
13a0 c8 21 97 75 e5 e9 65 90 45 82 a8 e5 9f 7b 76 48 e7 1b 70 72 36 25 77 4d ae 49 25 94 72 56 f9 24 .!.u..e.E....{vH..pr6%wM.I%.rV.$
13c0 8e 83 be c1 61 96 7e 7a c8 67 a0 6b 0d 59 24 5d 64 46 7a 65 9c 4b 26 4a a2 67 80 b8 09 9e 9a 67 ....a.~z.g.k.Y$]dFze.K&J.g.....g
13e0 2a f9 9e a7 70 8c 79 67 5b 3f 6e 1a 8d 81 68 75 f9 9c ac 5b b2 ca 45 86 3b 91 26 ea 76 15 3e f8 *...p.yg[?n...hu...[..E.;.&.v.>.
1400 e2 a1 a9 ea 3a c8 74 02 56 aa 05 b2 30 85 99 e2 9b 36 f4 15 d5 69 1c b1 45 8a a8 78 a5 3e eb 86 ....:.t.V...0....6...i..E..x.>..
1420 a2 7a 9d 43 96 42 aa 6a 7b 9e 56 03 7d db 83 64 f7 e0 39 52 20 b1 ca 76 a0 91 96 2a 98 eb 80 b4 .z.C.B.j{.V.}..d..9R...v...*....
1440 6e b8 ad 27 f8 36 94 ef 56 be ec 8b cb 92 fd b2 89 cd 7d 15 60 84 8a 2b ad 1c ac f0 2b 0b 97 08 n..'.6..V.........}.`..+....+...
1460 e8 34 eb 30 8c 6c c0 fc fa 6b b1 be 18 57 9c b1 8c 2e 51 3c 67 c2 12 83 2c 32 c2 24 37 5c b2 b4 .4.0.l...k...W....Q<g...,2.$7\..
1480 1a 41 8c 9f c6 2c 7b 7c 71 cb 2f bb 0c e5 3a be 70 61 f2 cd 21 9f 3c 32 ce 23 0f 65 9e cd 31 07 .A...,{|q./...:.pa..!.<2.#.e..1.
14a0 bd b1 d0 30 0f 3d b3 59 e6 d6 10 01 00 3b ...0.=.Y.....;
span class="s">"L13" class="LineNr"> 13 </span><span class="subxComment"># exit().</span> <span id="L14" class="LineNr"> 14 </span><span class="subxComment">#</span> <span id="L15" class="LineNr"> 15 </span><span class="subxComment"># We'd also like to get the exit status out of 'stop', so we'll combine the</span> <span id="L16" class="LineNr"> 16 </span><span class="subxComment"># input target with an output status parameter into a type called 'exit-descriptor'.</span> <span id="L17" class="LineNr"> 17 </span><span class="subxComment">#</span> <span id="L18" class="LineNr"> 18 </span><span class="subxComment"># So the exit-descriptor looks like this:</span> <span id="L19" class="LineNr"> 19 </span><span class="subxComment"># target: address # return address for 'stop' to unwind to</span> <span id="L20" class="LineNr"> 20 </span><span class="subxComment"># value: int # exit status stop was called with</span> <span id="L21" class="LineNr"> 21 </span><span class="subxComment">#</span> <span id="L22" class="LineNr"> 22 </span><span class="subxComment"># 'stop' thus takes two parameters: an exit-descriptor and the exit status.</span> <span id="L23" class="LineNr"> 23 </span><span class="subxComment">#</span> <span id="L24" class="LineNr"> 24 </span><span class="subxComment"># 'stop' won't bother cleaning up any other processor state besides the stack,</span> <span id="L25" class="LineNr"> 25 </span><span class="subxComment"># such as registers. Only esp will have a well-defined value after 'stop'</span> <span id="L26" class="LineNr"> 26 </span><span class="subxComment"># returns. (This is a poor man's setjmp/longjmp, if you know what that is.)</span> <span id="L27" class="LineNr"> 27 </span><span class="subxComment">#</span> <span id="L28" class="LineNr"> 28 </span><span class="subxComment"># Before you can call any function that may call 'stop', you need to pass in an</span> <span id="L29" class="LineNr"> 29 </span><span class="subxComment"># exit-descriptor to it. To create an exit-descriptor use 'tailor-exit-descriptor'</span> <span id="L30" class="LineNr"> 30 </span><span class="subxComment"># below. It's not the most pleasant abstraction in the world.</span> <span id="L31" class="LineNr"> 31 </span><span class="subxComment">#</span> <span id="L32" class="LineNr"> 32 </span><span class="subxComment"># An exit-descriptor's target is its input, computed during 'tailor-exit-descriptor'.</span> <span id="L33" class="LineNr"> 33 </span><span class="subxComment"># Its value is its output, computed during stop and available to the test.</span> <span id="L34" class="LineNr"> 34 </span> <span id="L35" class="LineNr"> 35 </span>== code <span id="L36" class="LineNr"> 36 </span><span class="subxComment"># instruction effective address register displacement immediate</span> <span id="L37" class="LineNr"> 37 </span><span class="subxS1Comment"># . op subop mod rm32 base index scale r32</span> <span id="L38" class="LineNr"> 38 </span><span class="subxS1Comment"># . 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</span> <span id="L39" class="LineNr"> 39 </span> <span id="L40" class="LineNr"> 40 </span><span class="subxComment"># Configure an exit-descriptor for a call pushing 'nbytes' bytes of args to</span> <span id="L41" class="LineNr"> 41 </span><span class="subxComment"># the stack.</span> <span id="L42" class="LineNr"> 42 </span><span class="subxComment"># Ugly that we need to know the size of args. Don't allocate variables between</span> <span id="L43" class="LineNr"> 43 </span><span class="subxComment"># tailor-exit-descriptor and the call it's for.</span> <span id="L44" class="LineNr"> 44 </span><span class="subxFunction">tailor-exit-descriptor</span>: <span class="subxComment"># ed: (addr exit-descriptor), nbytes: int</span> <span id="L45" class="LineNr"> 45 </span> <span class="subxS1Comment"># . prologue</span> <span id="L46" class="LineNr"> 46 </span> 55/push-ebp <span id="L47" class="LineNr"> 47 </span> 89/copy 3/mod/direct 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/r32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy esp to ebp</span> <span id="L48" class="LineNr"> 48 </span> <span class="subxS1Comment"># . save registers</span> <span id="L49" class="LineNr"> 49 </span> 50/push-eax <span id="L50" class="LineNr"> 50 </span> 51/push-ecx <span id="L51" class="LineNr"> 51 </span> <span class="subxComment"># eax = nbytes</span> <span id="L52" class="LineNr"> 52 </span> 8b/copy 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(ebp+12) to eax</span> <span id="L53" class="LineNr"> 53 </span> <span class="subxComment"># Let X be the value of esp in the caller, before the call to tailor-exit-descriptor.</span> <span id="L54" class="LineNr"> 54 </span> <span class="subxComment"># The return address for a call in the caller's body will be at:</span> <span id="L55" class="LineNr"> 55 </span> <span class="subxComment"># X-8 if the caller takes 4 bytes of args for the exit-descriptor (add 4 bytes for the return address)</span> <span id="L56" class="LineNr"> 56 </span> <span class="subxComment"># X-12 if the caller takes 8 bytes of args</span> <span id="L57" class="LineNr"> 57 </span> <span class="subxComment"># ..and so on</span> <span id="L58" class="LineNr"> 58 </span> <span class="subxComment"># That's the value we need to return: X-nbytes-4</span> <span id="L59" class="LineNr"> 59 </span> <span class="subxComment">#</span> <span id="L60" class="LineNr"> 60 </span> <span class="subxComment"># However, we also need to account for the perturbance to esp caused by the</span> <span id="L61" class="LineNr"> 61 </span> <span class="subxComment"># call to tailor-exit-descriptor. It pushes 8 bytes of args followed by 4</span> <span id="L62" class="LineNr"> 62 </span> <span class="subxComment"># bytes for the return address and 4 bytes to push ebp above.</span> <span id="L63" class="LineNr"> 63 </span> <span class="subxComment"># So ebp at this point is X-16.</span> <span id="L64" class="LineNr"> 64 </span> <span class="subxComment">#</span> <span id="L65" class="LineNr"> 65 </span> <span class="subxComment"># So the return address for the next call in the caller is:</span> <span id="L66" class="LineNr"> 66 </span> <span class="subxComment"># ebp+8 if the caller takes 4 bytes of args</span> <span id="L67" class="LineNr"> 67 </span> <span class="subxComment"># ebp+4 if the caller takes 8 bytes of args</span> <span id="L68" class="LineNr"> 68 </span> <span class="subxComment"># ebp if the caller takes 12 bytes of args</span> <span id="L69" class="LineNr"> 69 </span> <span class="subxComment"># ebp-4 if the caller takes 16 bytes of args</span> <span id="L70" class="LineNr"> 70 </span> <span class="subxComment"># ..and so on</span> <span id="L71" class="LineNr"> 71 </span> <span class="subxComment"># That's ebp+12-nbytes.</span> <span id="L72" class="LineNr"> 72 </span> <span class="subxComment"># option 1: 6 + 3 bytes</span> <span id="L73" class="LineNr"> 73 </span><span class="CommentedCode">#? 2d/subtract 3/mod/direct 0/rm32/eax . . . . . 8/imm32 # subtract from eax</span> <span id="L74" class="LineNr"> 74 </span><span class="CommentedCode">#? 8d/copy-address 0/mod/indirect 4/rm32/sib 5/base/ebp 0/index/eax . 0/r32/eax . . # copy ebp+eax to eax</span> <span id="L75" class="LineNr"> 75 </span> <span class="subxComment"># option 2: 2 + 4 bytes</span> <span id="L76" class="LineNr"> 76 </span> f7 3/subop/negate 3/mod/direct 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># negate eax</span> <span id="L77" class="LineNr"> 77 </span> 8d/copy-address 1/mod/*+disp8 4/rm32/sib 5/base/ebp 0/index/eax <span class="Normal"> . </span> 0/r32/eax 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy ebp+eax+12 to eax</span> <span id="L78" class="LineNr"> 78 </span> <span class="subxComment"># copy eax to ed-&gt;target</span> <span id="L79" class="LineNr"> 79 </span> 8b/copy 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 1/r32/ecx 8/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(ebp+8) to ecx</span> <span id="L80" class="LineNr"> 80 </span> 89/copy 0/mod/indirect 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy eax to *ecx</span> <span id="L81" class="LineNr"> 81 </span> <span class="subxComment"># initialize ed-&gt;value</span> <span id="L82" class="LineNr"> 82 </span> c7 0/subop/copy 1/mod/*+disp8 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/disp8 0/imm32 <span class="subxComment"># copy to *(ecx+4)</span> <span id="L83" class="LineNr"> 83 </span><span class="Constant">$tailor-exit-descriptor:end</span>: <span id="L84" class="LineNr"> 84 </span> <span class="subxS1Comment"># . restore registers</span> <span id="L85" class="LineNr"> 85 </span> 59/pop-to-ecx <span id="L86" class="LineNr"> 86 </span> 58/pop-to-eax <span id="L87" class="LineNr"> 87 </span> <span class="subxS1Comment"># . epilogue</span> <span id="L88" class="LineNr"> 88 </span> 89/copy 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 5/r32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy ebp to esp</span> <span id="L89" class="LineNr"> 89 </span> 5d/pop-to-ebp <span id="L90" class="LineNr"> 90 </span> c3/return <span id="L91" class="LineNr"> 91 </span> <span id="L92" class="LineNr"> 92 </span><span class="subxFunction">stop</span>: <span class="subxComment"># ed: (addr exit-descriptor), value: int</span> <span id="L93" class="LineNr"> 93 </span> <span class="subxComment"># no prologue; one way or another, we're going to clobber registers</span> <span id="L94" class="LineNr"> 94 </span> <span class="subxComment"># eax = ed</span> <span id="L95" class="LineNr"> 95 </span> 8b/copy 1/mod/*+disp8 4/rm32/sib 4/base/esp 4/index/none <span class="Normal"> . </span> 0/r32/eax 4/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(esp+4) to eax</span> <span id="L96" class="LineNr"> 96 </span> <span class="subxComment"># if (ed == 0) really exit</span> <span id="L97" class="LineNr"> 97 </span> 3d/compare-eax-and 0/imm32 <span id="L98" class="LineNr"> 98 </span> 74/jump-if-= $stop:real/disp8 <span id="L99" class="LineNr"> 99 </span> <span class="subxComment"># if (ed-&gt;target == 0) really exit</span> <span id="L100" class="LineNr">100 </span> 81 7/subop/compare 0/mod/indirect 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/imm32 <span class="subxComment"># compare *eax</span> <span id="L101" class="LineNr">101 </span> 74/jump-if-= $stop:real/disp8 <span id="L102" class="LineNr">102 </span><span class="Constant">$stop:fake</span>: <span id="L103" class="LineNr">103 </span> <span class="subxComment"># ed-&gt;value = value+1</span> <span id="L104" class="LineNr">104 </span> 8b/copy 1/mod/*+disp8 4/rm32/sib 4/base/esp 4/index/none <span class="Normal"> . </span> 1/r32/ecx 8/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(esp+8) to ecx</span> <span id="L105" class="LineNr">105 </span> 41/increment-ecx <span id="L106" class="LineNr">106 </span> 89/copy 1/mod/*+disp8 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 1/r32/ecx 4/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy ecx to *(eax+4)</span> <span id="L107" class="LineNr">107 </span> <span class="subxComment"># perform a non-local jump to ed-&gt;target</span> <span id="L108" class="LineNr">108 </span> 8b/copy 0/mod/indirect 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/r32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy *eax to esp</span> <span id="L109" class="LineNr">109 </span><span class="Constant">$stop:end1</span>: <span id="L110" class="LineNr">110 </span> <span class="subxComment"># never gets here</span> <span id="L111" class="LineNr">111 </span> c3/return <span class="subxComment"># doesn't return to caller</span> <span id="L112" class="LineNr">112 </span><span class="Constant">$stop:real</span>: <span id="L113" class="LineNr">113 </span> <span class="subxS1Comment"># . syscall(exit, value)</span> <span id="L114" class="LineNr">114 </span> 8b/copy 1/mod/*+disp8 4/rm32/sib 4/base/esp 4/index/none <span class="Normal"> . </span> 3/r32/ebx 8/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(esp+8) to ebx</span> <span id="L115" class="LineNr">115 </span> e8/call <a href='000init.subx.html#L18'>syscall_exit</a>/disp32 <span id="L116" class="LineNr">116 </span><span class="Constant">$stop:end2</span>: <span id="L117" class="LineNr">117 </span> <span class="subxComment"># never gets here</span> <span id="L118" class="LineNr">118 </span> c3/return <span class="subxComment"># doesn't return to caller</span> <span id="L119" class="LineNr">119 </span> <span id="L120" class="LineNr">120 </span><span class="subxTest">test-stop-skips-returns-on-exit</span>: <span id="L121" class="LineNr">121 </span> <span class="subxComment"># This looks like the standard prologue, but is here for different reasons.</span> <span id="L122" class="LineNr">122 </span> <span class="subxComment"># A function calling 'stop' can't rely on ebp persisting past the call.</span> <span id="L123" class="LineNr">123 </span> <span class="subxComment">#</span> <span id="L124" class="LineNr">124 </span> <span class="subxComment"># Use ebp here as a stable base to refer to locals and arguments from in the</span> <span id="L125" class="LineNr">125 </span> <span class="subxComment"># presence of push/pop/call instructions.</span> <span id="L126" class="LineNr">126 </span> <span class="subxComment"># *Don't* use ebp as a way to restore esp.</span> <span id="L127" class="LineNr">127 </span> 55/push-ebp <span id="L128" class="LineNr">128 </span> 89/copy 3/mod/direct 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/r32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy esp to ebp</span> <span id="L129" class="LineNr">129 </span> <span class="subxComment"># Make room for an exit descriptor on the stack. That's almost always the</span> <span id="L130" class="LineNr">130 </span> <span class="subxComment"># right place for it, available only as long as it's legal to use. Once this</span> <span id="L131" class="LineNr">131 </span> <span class="subxComment"># containing function returns we'll need a new exit descriptor.</span> <span id="L132" class="LineNr">132 </span> <span class="subxComment"># var ed/eax: exit-descriptor</span> <span id="L133" class="LineNr">133 </span> 68/push 0/imm32 <span id="L134" class="LineNr">134 </span> 68/push 0/imm32 <span id="L135" class="LineNr">135 </span> 89/copy 3/mod/direct 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/r32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy esp to eax</span> <span id="L136" class="LineNr">136 </span> <span class="subxComment"># Size the exit-descriptor precisely for the next call below, to _test-stop-1.</span> <span id="L137" class="LineNr">137 </span> <span class="subxComment"># tailor-exit-descriptor(ed, 4)</span> <span id="L138" class="LineNr">138 </span> <span class="subxS2Comment"># . . push args</span> <span id="L139" class="LineNr">139 </span> 68/push 4/imm32/nbytes-of-args-for-_test-stop-1 <span id="L140" class="LineNr">140 </span> 50/push-eax <span id="L141" class="LineNr">141 </span> <span class="subxS2Comment"># . . call</span> <span id="L142" class="LineNr">142 </span> e8/call <a href='110stop.subx.html#L44'>tailor-exit-descriptor</a>/disp32 <span id="L143" class="LineNr">143 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L144" class="LineNr">144 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> <span id="L145" class="LineNr">145 </span> <span class="subxS1Comment"># . _test-stop-1(ed)</span> <span id="L146" class="LineNr">146 </span> <span class="subxS2Comment"># . . push args</span> <span id="L147" class="LineNr">147 </span> 50/push-eax <span id="L148" class="LineNr">148 </span> <span class="subxS2Comment"># . . call</span> <span id="L149" class="LineNr">149 </span> e8/call <a href='110stop.subx.html#L170'>_test-stop-1</a>/disp32 <span id="L150" class="LineNr">150 </span> <span class="subxComment"># registers except esp may be clobbered at this point</span> <span id="L151" class="LineNr">151 </span> <span class="subxComment"># restore args</span> <span id="L152" class="LineNr">152 </span> 58/pop-to-eax <span id="L153" class="LineNr">153 </span> <span class="subxComment"># check that _test-stop-1 tried to call exit(1)</span> <span id="L154" class="LineNr">154 </span> <span class="subxS1Comment"># . check-ints-equal(ed-&gt;value, 2, msg) # i.e. stop was called with value 1</span> <span id="L155" class="LineNr">155 </span> <span class="subxS2Comment"># . . push args</span> <span id="L156" class="LineNr">156 </span> 68/push <span class="Constant">&quot;F - test-stop-skips-returns-on-exit&quot;</span>/imm32 <span id="L157" class="LineNr">157 </span> 68/push 2/imm32 <span id="L158" class="LineNr">158 </span> <span class="subxS2Comment"># . . push ed-&gt;value</span> <span id="L159" class="LineNr">159 </span> ff 6/subop/push 1/mod/*+disp8 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(eax+4)</span> <span id="L160" class="LineNr">160 </span> <span class="subxS2Comment"># . . call</span> <span id="L161" class="LineNr">161 </span> e8/call <a href='102test.subx.html#L23'>check-ints-equal</a>/disp32 <span id="L162" class="LineNr">162 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L163" class="LineNr">163 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0xc/imm32 <span class="subxComment"># add to esp</span> <span id="L164" class="LineNr">164 </span> <span class="subxS1Comment"># . epilogue</span> <span id="L165" class="LineNr">165 </span> <span class="subxComment"># don't restore esp from ebp; manually reclaim locals</span> <span id="L166" class="LineNr">166 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> <span id="L167" class="LineNr">167 </span> 5d/pop-to-ebp <span id="L168" class="LineNr">168 </span> c3/return <span id="L169" class="LineNr">169 </span> <span id="L170" class="LineNr">170 </span><span class="subxMinorFunction">_test-stop-1</span>: <span class="subxComment"># ed: (addr exit-descriptor)</span> <span id="L171" class="LineNr">171 </span> <span class="subxS1Comment"># . prologue</span> <span id="L172" class="LineNr">172 </span> 55/push-ebp <span id="L173" class="LineNr">173 </span> 89/copy 3/mod/direct 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/r32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy esp to ebp</span> <span id="L174" class="LineNr">174 </span> <span class="subxComment"># _test-stop-2(ed)</span> <span id="L175" class="LineNr">175 </span> <span class="subxS2Comment"># . . push args</span> <span id="L176" class="LineNr">176 </span> ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+8)</span> <span id="L177" class="LineNr">177 </span> <span class="subxS2Comment"># . . call</span> <span id="L178" class="LineNr">178 </span> e8/call <a href='110stop.subx.html#L197'>_test-stop-2</a>/disp32 <span id="L179" class="LineNr">179 </span> <span class="subxComment"># should never get past this point</span> <span id="L180" class="LineNr">180 </span><span class="Constant">$_test-stop-1:dead-end</span>: <span id="L181" class="LineNr">181 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L182" class="LineNr">182 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> <span id="L183" class="LineNr">183 </span> <span class="subxComment"># signal test failed: check-ints-equal(1, 0, msg)</span> <span id="L184" class="LineNr">184 </span> <span class="subxS2Comment"># . . push args</span> <span id="L185" class="LineNr">185 </span> 68/push <span class="Constant">&quot;F - test-stop-skips-returns-on-exit&quot;</span>/imm32 <span id="L186" class="LineNr">186 </span> 68/push 0/imm32 <span id="L187" class="LineNr">187 </span> 68/push 1/imm32 <span id="L188" class="LineNr">188 </span> <span class="subxS2Comment"># . . call</span> <span id="L189" class="LineNr">189 </span> e8/call <a href='102test.subx.html#L23'>check-ints-equal</a>/disp32 <span id="L190" class="LineNr">190 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L191" class="LineNr">191 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0xc/imm32 <span class="subxComment"># add to esp</span> <span id="L192" class="LineNr">192 </span> <span class="subxS1Comment"># . epilogue</span> <span id="L193" class="LineNr">193 </span> 89/copy 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 5/r32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy ebp to esp</span> <span id="L194" class="LineNr">194 </span> 5d/pop-to-ebp <span id="L195" class="LineNr">195 </span> c3/return <span id="L196" class="LineNr">196 </span> <span id="L197" class="LineNr">197 </span><span class="subxMinorFunction">_test-stop-2</span>: <span class="subxComment"># ed: (addr exit-descriptor)</span> <span id="L198" class="LineNr">198 </span> <span class="subxS1Comment"># . prologue</span> <span id="L199" class="LineNr">199 </span> 55/push-ebp <span id="L200" class="LineNr">200 </span> 89/copy 3/mod/direct 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/r32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy esp to ebp</span> <span id="L201" class="LineNr">201 </span> <span class="subxS1Comment"># . stop(ed, 1)</span> <span id="L202" class="LineNr">202 </span> <span class="subxS2Comment"># . . push args</span> <span id="L203" class="LineNr">203 </span> 68/push 1/imm32 <span id="L204" class="LineNr">204 </span> ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+8)</span> <span id="L205" class="LineNr">205 </span> <span class="subxS2Comment"># . . call</span> <span id="L206" class="LineNr">206 </span> e8/call <a href='110stop.subx.html#L92'>stop</a>/disp32 <span id="L207" class="LineNr">207 </span> <span class="subxComment"># should never get past this point</span> <span id="L208" class="LineNr">208 </span><span class="Constant">$_test-stop-2:dead-end</span>: <span id="L209" class="LineNr">209 </span> <span class="subxS1Comment"># . epilogue</span> <span id="L210" class="LineNr">210 </span> 89/copy 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 5/r32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy ebp to esp</span> <span id="L211" class="LineNr">211 </span> 5d/pop-to-ebp <span id="L212" class="LineNr">212 </span> c3/return <span id="L213" class="LineNr">213 </span> <span id="L214" class="LineNr">214 </span><span class="subxS2Comment"># . . vim&#0058;nowrap:textwidth=0</span> </pre> </body> </html> <!-- vim: set foldmethod=manual : -->