ofs | hex dump | ascii |
---|
0000 | 25 50 44 46 2d 31 2e 33 0a 25 c4 e5 f2 e5 eb a7 f3 a0 d0 c4 c6 0a 34 20 30 20 6f 62 6a 0a 3c 3c | %PDF-1.3.%............4.0.obj.<< |
0020 | 20 2f 4c 65 6e 67 74 68 20 35 20 30 20 52 20 2f 46 69 6c 74 65 72 20 2f 46 6c 61 74 65 44 65 63 | ./Length.5.0.R./Filter./FlateDec |
0040 | 6f 64 65 20 3e 3e 0a 73 74 72 65 61 6d 0a 78 01 9d 5d 6b 73 1b c7 b1 fd be bf 62 49 8a 36 40 89 | ode.>>.stream.x..]ks......bI.6@. |
0060 | d0 be 17 90 25 4b 94 45 59 a2 13 86 b9 21 19 93 44 3e b9 92 54 a5 ea de aa c4 ff bf ea 9e ee 79 | ....%K.EY....!..D>..T..........y |
0080 | f6 4c cf 12 4a 59 65 02 d8 9d 9e 9e ee d3 67 7a 7a 06 8b 7f d7 7f ae ff 5d b7 1d fd 1b b7 db 7a | .L..JYe.......gzz.......]......z |
00a0 | 9e b6 f5 7f fe 5e ff b5 fe bf fa f5 cf bf b7 f5 3f 7f af db fa f7 df e8 4d 47 6f 86 b1 ee 77 9b | .....^..........?.......MGo...w. |
00c0 | 19 37 b7 7d dd f6 9b 5d 47 b7 ff a3 6e 2a dc f4 f1 b6 6e 36 4d d3 74 f5 ed 6f f5 bc d9 6d eb 06 | .7.}...]G...n*....n6M.t..o...m.. |
00e0 | ff f1 0b b4 1b b6 9b 7e aa 6f ff b7 7e 7d 7b 8b fe ea db 7f d4 4f f5 ea e8 f8 64 5d 9f cf fd b6 | .......~.o..~}{......O....d].... |
0100 | 5e bd c0 0b fc 39 5d 57 53 bd fa 0e 6f 86 7a f5 fd 7e 85 17 2d ee db af d7 f5 df ea db 2b 48 84 | ^....9]WS...o.z..~..-........+H. |
0120 | f4 cb db fa f5 4f d0 ef b7 df a9 cb be ed e7 1e 2f fa 79 1a 66 fc 9d 30 94 8e d4 fe 78 5b ed 58 | .....O........../.y.f..0....x[.X |
0140 | 89 1d 34 df 60 8c f3 d8 6e 48 bf 44 8b b3 97 af d6 75 db 6c d0 fd f9 ba ee e8 ef e6 f5 ba 1e 37 | ..4.`...nH.D.....u.l...........7 |
0160 | 5d bd 6a ce cf da 97 50 a3 6a 36 50 a8 c3 e5 61 b3 ab 57 2d f4 32 37 f6 a4 5a d7 73 53 d6 10 ca | ].j....P.j6P...a..W-.27..Z.sS... |
0180 | c1 14 e7 64 0b 1a f1 6f b5 d4 a1 db b5 9b dd b8 9b 2b a3 c5 10 d9 02 72 e6 7a 05 8b b4 30 01 d9 | ...d...o.........+.....r.z...0.. |
01a0 | 03 23 3f 85 29 d2 81 77 3c 70 33 42 d3 51 3b 54 79 47 f3 76 b3 db ed e6 6c b8 c3 f7 a4 3c fc b3 | .#?.)..w<p3B.Q;TyG.v....l....<.. |
01c0 | 3a 1f 27 67 e1 f9 f8 18 9f a2 fb ed ba a2 7e e7 75 0d 25 ec 67 c7 5b 77 db ee f4 cd b4 fb e1 bb | :.'g..........~.u.%.g.[w........ |
01e0 | b7 50 15 c6 79 f7 e3 7b bc c0 dd 13 da c2 3c ee ae 37 d3 db 9d 51 bb 72 fe 72 26 69 b6 b1 49 da | .P..y..{......<..7...Q.r.r&i..I. |
0200 | b9 dd 74 3d 74 ec 4a ca 7e d8 af de ee 57 af ce 2e f6 ab 8f eb aa 85 82 a7 e8 0b e6 fe ee 3b bc | ..t=t.J.~....W................;. |
0220 | a0 f7 3f e1 96 77 34 90 fe f4 d3 e6 b2 df af 3e ff fc 6e c2 10 85 d5 5c f7 63 dc bb 01 45 37 8d | ..?..w4........>..n....\.c...E7. |
0240 | 9b dd bc 83 05 13 58 1c 91 9d 7a e0 85 50 71 8e 3f 23 fe c0 6a 34 58 8c 99 07 db 8d f5 ea d3 17 | ......X...z..Pq.?#..j4X......... |
0260 | f3 f9 07 e8 53 af be e2 cd 5c ad ae f0 07 06 3c f2 77 c1 20 ec 4f ba 5c af de 98 cb 56 14 5d c3 | ....S....\.....<.w...O.\....V.]. |
0280 | cd 3f 98 3f 04 7e bc 83 8d 5b 20 ed 1d fc 81 77 3f 9a 0f 61 ef d6 aa 80 3f c6 de 78 f1 c9 5c 95 | .?.?.~...[.....w?..a....?..x..\. |
02a0 | e2 60 9f ae 21 01 2c 0e d7 fe 56 45 01 e4 2c d2 08 8c b6 db 66 b3 03 70 6b 67 95 0c 3d b0 36 04 | .`..!.,...VE..,.....f..pkg..=.6. |
02c0 | 76 4d 45 7e c1 ab 16 7e bf 3a 3a fe fc e5 9d bd 40 06 81 29 60 18 32 05 79 ea ed 0f 13 50 63 bc | vME~...~.::.....@..)`.2.y....Pc. |
02e0 | 65 b5 f1 4d df 8d 6f d7 15 85 0f 2e 78 a3 42 eb 8f e6 76 8c 01 f2 d9 d7 ba 3f fb d8 a1 7d 33 6d | e..M..o.....x.B...v......?...}3m |
0300 | a6 06 23 72 da 67 3e fd 09 9a 91 39 8d ae d0 d1 ea 43 ae b5 38 76 57 c9 ce bd b9 fb f4 93 71 c2 | ..#r.g>....9.....C..8vW.......q. |
0320 | c6 bc bd 34 7f ec 45 33 14 dc fc d9 7c fc b3 f9 13 cc 2e c0 f2 8b 91 84 71 91 1a 70 a7 d7 86 fa | ...4..E3....|...........q..p.... |
0340 | 5b d6 06 2c 45 77 9f b1 a5 2e e8 4d c5 03 51 2d 03 1f c6 94 d0 c3 af db c8 32 99 5f 29 6a 30 14 | [..,Ew.....M..Q-.........2._)j0. |
0360 | 04 3f 9c f1 e5 a3 19 15 5e 9e ee 2c 47 d0 c7 c6 f9 74 c7 57 8a 7c fc 9d 3e 78 cf fe c1 18 15 ce | .?......^..,G....t.W.|..>x...... |
0380 | 7b bb fb c4 a2 18 7e 30 ad a6 20 42 3f 56 70 1c da cd b6 08 bc 0a 73 c5 5b 32 4e 0b 97 71 37 3d | {.....~0...B?Vp.......s.[2N..q7= |
03a0 | 82 88 e2 8e ba 80 4f b5 1e 9a 7e 27 7b c0 cc 45 c8 1e c1 e0 3b 25 de df da 28 fa 44 61 04 f1 f6 | ......O...~'{..E....;%...(.Da... |
03c0 | 2d 77 07 10 a2 fb 16 10 b1 9e f3 9f 8e 13 6c 86 bb dd 07 5f 28 98 a9 35 a4 90 a1 fe 58 a2 a2 06 | -w............l...._(..5....X... |
03e0 | cc 9c 4d 0e b0 02 b8 a8 cd 70 7b 45 5c d4 81 28 3d 67 63 aa a3 40 fb 7a 6d 3a c6 bb 88 9b d1 af | ..M......p{E\..(=gc..@.zm:...... |
0400 | e1 e6 ae 62 ba c2 7b 73 1b ac f5 69 da 61 0c 1d 8d 68 32 fe 1c d8 65 5e ce b5 0f 66 d3 87 b3 2e | ...b..{s...i.a...h2...e^...f.... |
0420 | 4d 31 d1 e4 d6 0c b1 fe 5d d7 6d 20 b3 b3 03 c8 e0 f5 e1 6b 44 03 55 1c ed d4 09 b1 00 93 39 19 | M1......].m........kD.U.......9. |
0440 | d9 e9 8a cf 03 0b c0 ef 86 f1 71 99 82 d8 e1 60 00 d7 32 fb c3 3e 24 a9 c7 d8 52 30 d0 54 8c 59 | ..........q....`..2..>$...R0.T.Y |
0460 | 2a b2 76 3f f4 9b 6e 22 30 24 fa 56 2e 33 31 53 09 84 52 6e 62 63 c3 bc f9 05 3d a0 a3 f7 6c 2f | *.v?..n"0$.V.31S..Rnbc....=...l/ |
0480 | ba 8a ee 79 b2 34 06 84 5d 31 5b e1 03 13 9b e7 03 3e f8 0c 4e 20 2a 4f ee 03 7e 11 ce 26 d4 e8 | ...y.4..]1[......>..N.*O..~..&.. |
04a0 | 36 23 d8 4e 14 e2 de 0a a1 b7 ae d1 97 ef 83 e3 0f 46 98 cc e7 14 84 1c 6d 26 08 49 1a 4d c1 10 | 6#.N.............F......m&.I.M.. |
04c0 | 4f 91 68 14 7f 87 48 84 56 b0 b4 66 20 39 31 8f 98 1b 91 10 a6 e6 f1 c9 0a 91 7d 75 8e 00 63 c5 | O.h...H.V..f.91...........}u..c. |
04e0 | 54 79 7a f0 11 0f ed 76 b0 b2 98 6c ab d5 07 18 03 4a ff 09 ba c2 c3 50 1d 63 43 f6 41 23 04 24 | Tyz....v...l.....J.....P.cC.A#.$ |
0500 | 30 f2 3f f2 1b e2 00 dc 86 cf 70 85 2c 85 69 19 71 6a 6e 33 6f 2a bc a1 31 43 0c 86 4a 9f 19 69 | 0.?.......p.,.i.qjn3o*..1C..J..i |
0520 | 14 ce 16 5b e6 12 ee b3 9f 25 12 dc 7d 00 03 03 15 56 84 6b a2 c6 d0 02 8d 61 ce d0 af ed 11 a3 | ...[.....%..}....V.k.....a...... |
0540 | c0 67 a9 62 ed b6 b2 fa eb 64 d0 b6 13 67 cd 49 a6 d8 82 a8 40 06 d6 56 93 35 7e 85 ac 99 b4 a1 | .g.b.....d...g.I....@..V.5~..... |
0560 | 24 91 b2 e7 96 38 f1 85 7b c1 8a d2 27 94 45 f4 18 00 11 47 4b 39 1a e3 80 6f a6 8c 95 9a 55 fe | $....8..{...'.E....GK9...o....U. |
0580 | 26 4c 29 46 ce 4b f7 82 9b c3 ec 34 e7 70 23 ca 81 f8 05 4d 82 2d 61 cd 6b f1 9a 66 0d ea d3 8b | &L)F.K.....4.p#....M.-a.k..f.... |
05a0 | 69 e8 1e 10 84 b1 1b f5 4e 09 33 df e3 f4 42 2a 6d 3e f0 3d 98 2b d5 ca 77 e0 c5 d1 4c 1b c4 51 | i.......N.3...B*m>.=.+..w...L..Q |
05c0 | c6 e1 d4 e3 d1 51 d7 83 13 c7 33 b9 31 00 00 8a 11 00 2b 49 47 7e 90 fe 85 ef a9 60 d0 ae 0d b6 | .....Q....3.1.....+IG~.....`.... |
05e0 | 22 65 28 79 f6 c3 f7 b6 47 ce 6c 7a 62 27 d0 a8 7d 07 6e d4 76 b0 15 d2 6c 7b af bb e2 ed 41 e0 | "e(y....G.lzb'..}.n.v...l{....A. |
0600 | 61 4b 65 ae a4 a4 b1 a5 9c 90 12 45 be 05 b9 93 79 e1 ec e1 f5 a7 40 e1 5b bc 5c af 94 eb 91 52 | aKe........E....y.....@.[.\....R |
0620 | 4a be c5 8e be 5a 61 d1 13 89 83 fe b9 2e 94 b1 70 23 33 7c 58 de 7b d6 eb fb c1 69 e5 cd 4a c9 | J....Za.........p#3|X.{....i..J. |
0640 | 8a 6c e5 8d f6 d1 5d fa 89 5f 60 74 4e 3f 44 25 35 aa 0c 88 c8 a5 5e 3f df 15 a3 12 3c ae 78 c3 | .l....].._`tN?D%5.....^?....<.x. |
0660 | 89 f1 fe 9f 9d 5a 1e ca fe 92 c7 a0 77 58 66 2d df c8 f6 ad e1 d4 b7 96 46 27 d5 7d 73 7f 8f d3 | .....Z......wXf-........F'.}s... |
0680 | cf ab e5 af f8 d1 b1 69 29 d4 70 6f ca b1 bc c0 94 c9 bb 5d cf 34 58 98 83 62 6d 0e e1 68 03 26 | .......i).po.......].4X..bm..h.& |
06a0 | 7a 09 31 14 11 c7 f4 17 de 3d 39 7e 49 cb 4b fe e8 9c 5f e1 c3 b3 d7 ed d9 87 e3 ee b4 75 57 3e | z.1......=9~I.K..._..........uW> |
06c0 | 9c bf 7a 89 96 15 b5 e8 00 08 62 43 7b ad 7b 35 59 51 af b6 ee a3 9d 13 d4 1d 9f bc 38 bd 74 52 | ..z.......bC{.{5YQ..........8.tR |
06e0 | 5e bc 7a bd c1 6b 1a 45 be 26 14 53 05 56 5c 9b 71 4b 73 b3 1d 48 c2 7f 98 4e cf ba 1d f7 8b 69 | ^.z..k.E.&.S.V\.qKs..H...N.....i |
0700 | e3 d5 f9 f9 e9 cb e9 15 94 66 f9 94 16 22 40 69 c2 38 7e 31 9f f2 88 f1 d1 f6 d5 39 35 c0 ab ce | .........f..."@i.8~1.......95... |
0720 | e8 87 57 6f 28 8a f0 f7 ad 15 75 f2 ae 3b c5 3c dd 83 5d 5c 33 67 20 8c 7c 7b 76 fa a2 fd c9 8e | ..Wo(.....u..;.<..]\3g..|{v..... |
0740 | c0 57 21 cc 22 4a a7 ef 76 d7 61 a1 bf dd 66 7e 38 98 be 51 36 09 b8 f1 cc f1 d9 05 8c c7 0b b4 | .W!."J..v.a...f~8..Q6........... |
0760 | 3a a7 7b 7d b8 f9 38 71 57 3c 1e a3 80 8e 98 83 1a 33 73 10 d6 b8 a3 06 71 e8 d1 67 b8 04 46 20 | :.{}..8qW<.......3s.....q..g..F. |
0780 | 71 23 fe fa 70 b1 2c 66 c8 91 a4 68 1d 45 9c 42 8d fd 2d 9e 41 3c 69 bd 70 11 ea 23 c0 0d 20 1f | q#..p.,f...h.E.B..-.A<i.p..#.... |
07a0 | 9a d7 ce 5f 42 26 24 48 a6 0a 5d 65 f2 bc 12 91 41 22 3d 85 e5 51 92 32 33 28 4f 4c 14 cc be 4b | ..._B&$H..]e....A"=..Q.23(OL...K |
07c0 | ef 02 2f cf f7 e4 03 de 0d c1 ce 0e 15 4d 0a 7a 30 8b 05 01 85 c1 44 a5 11 87 a3 2c 0c 28 44 2b | ../..........M.z0.....D....,.(D+ |
07e0 | ac a2 4c 60 d3 0b 03 6e 7a 85 28 3e 7d 8f 9e e9 f5 8f 6f 7e 20 8c d3 4b c2 b8 7b 79 d6 11 cc e9 | ..L`...nz.(>}.....o~...K..{y.... |
0800 | d3 fd 1a 61 ca 92 be d8 4f 8e 5f 53 f8 d3 b5 e1 63 f6 51 e8 e5 e5 87 e3 17 64 0b 50 02 20 07 c3 | ...a....O._S....c.Q......d.P.... |
0820 | 90 85 06 46 83 3a 42 94 6b a2 24 dc d0 55 bb a5 25 0f 72 4d 93 11 06 ba da 1e 7f e8 28 6c 2b 0a | ...F.:B.k.$..U..%.rM........(l+. |
0840 | db 1f 5b 32 2c fa 61 43 83 81 ce 2f ce 5e db 8f 98 a9 00 dc 93 77 50 b5 c7 0b 33 5e 6a 66 c7 4b | ..[2,.aC.../.^.......wP...3^jf.K |
0860 | 1f 9e f0 78 2b 7a 39 da fb 30 4a 08 85 da f4 1e 77 7f fd 88 39 48 28 fe 5c 95 d1 d6 3d 89 8b c7 | ...x+z9..0J.....w...9H(.\...=... |
0880 | d1 a4 70 9b dd 64 6a 8e f4 a2 9d 76 1b d0 eb dc 8e 9b de d5 1d 43 c5 ef 84 b2 97 11 54 c5 c9 f4 | ..p..dj....v.........C......T... |
08a0 | 08 45 38 33 a3 17 64 55 fa 4b 00 a3 3b 28 e2 26 a8 4e a8 1a 31 dd d1 7b ba 4e 06 9f e0 26 be 0f | .E83..dU.K..;(.&.N..1..{.N...&.. |
08c0 | a9 ae b9 df cc e4 74 5d b4 c3 7b 4a cc 90 6b 72 6c d3 75 32 27 c9 75 ed 29 b9 a1 cf 29 9d a2 cf | ......t]..{J..krl.u2'.u.)...)... |
08e0 | 07 60 9f de 53 56 35 a0 1f f6 36 fe d2 cc 49 9f bb bf 6c 48 bc 27 90 8f e0 0e 22 06 d2 d3 e9 cf | .`..SV5...6...I...lH.'...."..... |
0900 | 61 86 a5 1a a5 30 4e 1e dd 47 1c 3c c2 ad 24 27 d6 83 32 77 af 27 f4 75 7a 12 15 51 bb 97 a4 57 | a....0N..G.<..$'..2w.'.uz..Q...W |
0920 | fa 39 fa 73 fa b9 f1 50 8e 43 fd 71 bd 8d e0 6c df 73 e1 05 f7 13 67 8c 48 31 dc 7d 4e 5f b2 13 | .9.s...P.C.q...l.s....g.H1.}N_.. |
0940 | b5 e3 2a 0b da 51 ff f4 1e f2 53 80 28 d5 d8 29 ae c6 a2 e6 8c 85 f1 dc 50 01 c6 82 dc 16 c0 57 | ..*..Q....S.(..)........P......W |
0960 | ef af 7f b9 7c ff 87 75 7d fb af 64 46 c1 7a 55 94 e5 8c 8c 89 4a c7 6e 3e 09 45 f4 f7 c3 c9 2f | ....|..u}..dF.zU.....J.n>.E..../ |
0980 | 50 0f 28 61 61 42 3f 57 e5 53 c5 6d 31 41 29 e2 ae 8e 9e 15 87 49 32 0a 64 ab dd 8c bc 23 17 f7 | P.(aaB?W.S.m1A)......I2.d....#.. |
09a0 | 86 5d 5e af 30 52 28 89 28 c3 78 55 15 01 83 5c e6 84 25 50 2e f3 8f 56 a6 13 4d ce c1 e8 cd 1f | .]^.0R(.(.xU...\..%P...V..M..... |
09c0 | ea 06 ef 4a dd 34 bb dc 39 d3 88 12 70 e2 1c 54 9c 7e 39 db 99 45 13 15 4d 7e f8 f2 e6 ed 77 66 | ...J.4..9...p..T.~9..E..M~....wf |
09e0 | 75 0d 3c 5c 7e fa f2 27 ae 78 62 6a c0 8d ed 57 00 99 8a f7 a7 9f 26 a5 63 b7 ae b3 86 1a 26 b5 | u.<\~..'.xbj...W......&.c.....&. |
0a00 | 37 94 b7 19 60 f8 3f c2 05 ff a7 ce 79 db e1 33 bf c5 da d2 5f a2 72 89 29 1f c2 e8 f5 ea 67 74 | 7...`.?.....y..3...._.r.).....gt |
0a20 | 1a 37 d8 b0 ac 1b fe f0 cf f2 d2 ff 58 f3 87 4a 4e 3b 09 6f a2 2e b2 19 a8 36 e2 21 5b 85 3d 1b | .7..........X..JN;.o.....6.![.=. |
0a40 | 30 d4 5f 54 bc 8a 6a a3 17 61 10 1b 50 5f 61 db 07 22 6e 55 11 83 48 03 83 0c 86 69 90 61 b7 8e | 0._T..j..a..P_a.."nU..H....i.a.. |
0a60 | 6e c0 95 d5 39 c6 0e 61 2a 9e 86 82 4a 0c d3 4c 5c df 43 1a 1c 78 57 90 96 54 bb 9c 8d 26 06 a8 | n...9..a*...J..L\.C..xW..T...&.. |
0a80 | 94 b6 ba ed fb bb 75 25 83 da 41 20 0c 4b c1 1c f5 8e 66 c1 35 0d ed 57 f8 4d ac d0 56 47 d0 1d | ......u%..A..K....f.5..W.M..VG.. |
0aa0 | 9a 17 c6 40 25 30 54 21 a2 00 43 31 71 b3 2d f0 52 93 f9 d8 b4 8f 03 d4 b6 d7 38 69 d5 64 0e 2e | ...@%0T!..C1q.-.R.........8i.d.. |
0ac0 | b7 4f bc 4b 08 41 e8 dd 80 80 e1 0d c5 b7 24 09 7c 9a 8f 64 4a 1c 6b 25 c1 b1 24 69 28 f8 55 d6 | .O.K.A........$.|..dJ.k%..$i(.U. |
0ae0 | 05 dd a0 12 af 32 6c e1 55 08 29 78 d5 18 53 e3 11 ea d9 fb 94 cd 80 ad bf 50 f7 75 3d 96 3d ba | .....2l.U.)x..S..........P.u=.=. |
0b00 | a0 7c 2b b8 ac ef b1 63 89 64 43 9b 69 ee 33 8f 52 ce d2 6d 05 e7 5a 01 aa 4b ef e1 0a 39 76 5e | .|+....c.dC.i.3.R..m..Z..K...9v^ |
0b20 | 80 ca 98 75 02 0a 3e bd 07 13 e9 4e 35 b2 44 c0 3a 59 c2 ab be 3c 4b 5e 25 a8 1f 15 dc 2a c3 d5 | ...u..>....N5.D.:Y...<K^%....*.. |
0b40 | c9 12 6e 35 b2 28 58 21 44 0e cd 05 ab 6b a7 85 aa 69 c4 a1 5a b1 fa 62 6b d1 b5 2c b8 15 98 d0 | ..n5.(X!D....k...i..Z..bk..,.... |
0b60 | 03 15 db cc 80 b7 14 35 63 21 80 0d 63 dd b1 17 99 63 bd 04 cf 1b bd 93 90 d2 31 51 e9 ea 22 f3 | .......5c!..c....c........1Q..". |
0b80 | 2c a3 54 ec d3 06 09 7a ce 70 83 3c 09 59 1c 24 a5 54 cc da 88 70 0d b2 f4 84 c1 06 ec 55 2e 8b | ,.T....z.p.<.Y.$.T...p.......U.. |
0ba0 | cd 2c 03 36 08 53 32 05 f2 2d c4 14 7c eb 8d a2 79 f7 8a f9 db 10 31 9b 43 ac 5c 42 af 65 ff 86 | .,.6.S2..-..|...y.....1.C.\B.e.. |
0bc0 | b0 8d eb 1d 24 2b 39 15 80 83 07 0d 6d d3 ab 71 bb 5f ff 35 1e 40 85 7c 8e 2d 2a e2 76 70 22 54 | ....$+9.....m..q._.5.@.|.-*.vp"T |
0be0 | ff be fa 35 96 e0 8e 69 74 5d cc 42 41 42 12 ba 8c 90 9b 82 08 e1 d6 20 62 d1 ad 0f b9 5b d9 26 | ...5...it].BAB..........b....[.& |
0c00 | 05 59 8a 57 31 3b dc 22 fa 91 ee f6 8a 30 17 ba 41 1d e1 5e 1b f4 68 98 70 72 3c a1 84 b6 8a 7b | .Y.W1;.".....0..A..^..h.pr<....{ |
0c20 | 57 03 4d b3 b7 ff 4a bd 9a ac 6d 87 79 33 e0 50 81 ee d5 26 73 aa 21 40 b9 09 e0 44 a8 5e bd 50 | W.M...J...m.y3.P...&s.!@...D.^.P |
0c40 | bd 2a a7 f8 c1 4b 50 bc 4a 93 ac 89 5a 48 4a a3 d6 f2 b1 80 88 17 26 18 19 69 a7 99 b1 1d 23 3f | .*...KP.J...ZHJ.......&..i....#? |
0c60 | 16 a4 a1 84 1e 4d 7b 41 35 c1 c9 46 1a c5 2d c4 e8 71 1b 5a b2 63 e5 4e e9 ca 34 2b c5 6d 68 ab | .....M{A5..F..-..q.Z.c.N..4+.mh. |
0c80 | 38 f6 a9 82 6b 17 73 05 94 de e3 21 6c 87 cd 76 c4 f6 8c 12 b8 d5 ea 5e b8 d8 47 9d 8c 5b 27 41 | 8...k.s....!l..v.......^..G..['A |
0ca0 | f5 f0 2b ac 35 73 98 e1 d8 8d a6 c3 a4 78 78 75 63 44 b8 b5 a5 27 0f 19 6b 5e 89 b2 5f c1 65 a8 | ..+.5s.......xxucD...'..k^.._.e. |
0cc0 | d1 c5 20 71 b2 e4 42 70 f0 b2 14 af 46 71 1b 0b ab 8c b3 7c dc 7a 11 22 6e 2d 30 d0 70 29 6e 7d | ...q..Bp....Fq.....|.z."n-0.p)n} |
0ce0 | 5b 76 6f 02 8d 81 bc 2b 31 a5 44 dd 48 fb d8 b4 41 29 bd 6a 79 e3 22 f3 2a 8b 90 c0 f0 22 54 b7 | [vo....+1.D.H...A).jy.".*...."T. |
0d00 | de 9f a5 4b 03 a3 85 c0 56 10 a1 f8 95 22 17 a9 14 76 c4 68 b9 58 c5 6e f1 27 cf e4 e2 27 88 2b | ...K....V...."...v.h.X.n.'...'.+ |
0d20 | fb 98 0e 2d 3d 49 27 7b 69 72 ce 0d d2 14 2f 53 ec 3e a5 23 74 ce 0d 2d 35 e7 a2 77 ef 5c b6 89 | ...-=I'{ir..../S.>.#t..-5..w.\.. |
0d40 | 58 fc 84 b6 5a ec 22 c1 b7 39 15 fe a8 16 69 45 da 8d e3 66 4c cf 53 4f 27 02 b1 d8 4d 4f e3 bd | X...Z."..9....iE...fL.SO'...MO.. |
0d60 | f8 88 8d 29 57 eb 45 a1 09 95 41 5b 7e c4 fe 40 4b d5 27 de 3d a6 7c f6 0c 45 23 dc 41 ab 03 ba | ...)W.E...A[~..@K.'.=.|..E#.A... |
0d80 | 65 18 6d c3 89 8a 5a c3 40 7b 11 5c 5e 42 15 8a 6e e9 fa 01 77 bd ff 40 9f ed da 11 5b c3 28 5c | e.m...Z.@{.\^B..n...w..@....[.(\ |
0da0 | 0c b8 e9 fb fd fa b3 95 85 c2 06 8e 2b d2 f1 07 fc 9f 6b 52 54 c6 1d de 53 b9 0a 3d a2 a9 f9 1c | ............+.....kRT...S..=.... |
0dc0 | ff 6f 2e 3a db e8 67 ab d6 6c f4 f9 02 fe a0 be bf 7e 3f 9c fd 64 0b 9d 3f a0 8f 52 62 05 22 0f | .o.:..g..l.......~?..d..?..Rb.". |
0de0 | cb 12 aa 54 f4 88 82 09 95 4b 9c e9 ec 93 58 9a b1 fa be 45 8d 4f 09 27 d8 4c 93 83 93 59 24 07 | ...T.....K....X....E.O.'.L...Y$. |
0e00 | 76 8e ab 09 f3 4d 53 10 83 62 8a 22 06 69 b0 13 c3 07 49 fd 7a 60 a6 88 a0 ad d1 5b 58 08 95 10 | v....MS..b.".i....I.z`.....[X... |
0e20 | e8 a6 a3 40 ac 31 dc 28 b1 4b a3 8f f2 a2 a0 1d 0e f6 68 da cd 3b a7 9d 18 e4 f1 f1 16 c7 2b 33 | ...@.1.(.K........h..;........+3 |
0e40 | 73 cd 38 5f 6a 8e c8 e2 64 6a bf 41 fd 6b 44 b4 63 86 88 8f 46 50 05 56 46 05 4e b9 24 7d 0f f5 | s.8_j...dj.A.kD.c...FP.VF.N.$}.. |
0e60 | 38 e3 9c 65 dc 0c 1c 11 1d 4b 24 58 7e 85 df e9 c0 18 d6 2d a9 65 84 22 30 30 c9 eb 33 45 a2 05 | 8..e.....K$X~......-.e."00..3E.. |
0e80 | 8f 39 74 da 28 65 ce 11 c5 68 a1 c8 6a c6 2c 94 0d dd b0 a6 36 90 11 79 69 3c 10 b4 bf cf db 53 | .9t.(e...h..j.,.....6..yi<.....S |
0ea0 | ca 28 13 ae 76 8b 13 be 13 e1 35 f4 6f 2b 00 5c 16 41 ed 04 81 73 47 af d3 e1 e7 c2 ba 76 b7 41 | .(..v.....5.o+.\.A...sG......v.A |
0ec0 | e8 4c b4 bd 6a 94 b1 fc 7f 77 87 08 96 a0 2f b6 a6 25 9b 1c ca 9d 99 81 96 33 47 db 37 1d c7 4e | .L..j....w..../..%.......3G.7..N |
0ee0 | 5b 17 fa 8e f3 2a d7 7a c6 74 22 cc 68 b3 56 97 0b b8 84 44 1a d1 b7 6e 12 27 0c df 32 ee 04 02 | [....*.z.t".h.V....D...n.'..2... |
0f00 | 48 ab f2 99 b7 6c 35 da 46 91 9a 13 b3 5b 9b db 64 c1 cf 0e fe 6c 75 28 8d c5 00 e0 d5 8b 49 d7 | H....l5.F....[..d....lu(......I. |
0f20 | e3 81 9b e6 c2 6c be 9e 17 5c 6e 53 8e 7c e4 0b bd 87 73 dd ae c4 7f 67 c2 26 3d 06 2d 48 d2 2b | .....l...\nS.|....s....g.&=.-H.+ |
0f40 | 9f 3a bd 5a dd 21 6a 25 de 96 7a cf bc 7e 67 16 3a d4 fb f3 a6 cb 48 64 75 97 65 e1 0b a6 cb 43 | .:.Z.!j%..z..~g.:.....Hdu.e....C |
0f60 | ff ce a4 6b 07 8e 3d 8b fc 3b 93 10 44 cd 15 d4 d8 c2 5b e2 75 18 ee 3a 35 5c b9 71 ee f3 fd de | ...k..=..;..D.....[.u..:5\.q.... |
0f80 | b7 b6 76 2b b6 56 c2 9c 76 f1 a4 d3 4c 6b 81 38 a3 78 ea 71 50 14 16 65 5a e3 98 f4 6d d1 70 9c | ..v+.V..v...Lk.8.x.qP..eZ...m.p. |
0fa0 | 51 ff 13 b1 72 87 b2 e9 c1 8d 61 d8 a8 31 4c 86 29 f4 d0 c6 49 8c 43 6d 6c 36 d8 c6 cf 5a 2c 0b | Q...r.....a..1L.)...I.Cml6...Z,. |
0fc0 | f1 3b 6c af c9 9e 73 9c b9 8a 5a e2 69 e4 5b 7a 5a 2f 22 cc 35 a6 29 2b 1a b3 c9 1a b5 9e 63 6b | .;l...s...Z.i.[zZ/".5.)+......ck |
0fe0 | db c6 a9 a3 c1 6b 07 c4 b6 6b 9c d1 f9 10 22 bb 18 9a ae 71 16 d7 43 88 6b b1 5b 10 23 cc 37 96 | .....k...k...."....q..C.k.[.#.7. |
1000 | 7e c6 98 0b 51 ad 8d 79 72 c7 88 1c 9f 0d 07 c4 b4 eb 39 f1 33 0c 76 40 44 87 da 5a ee e9 10 d3 | ~...Q..yr.........9.3.v@D..Z.... |
1020 | 45 8c 85 e6 59 54 0f 51 54 5b ab e5 71 e9 db a7 ee 86 dd 4a 71 2d 0c e7 ca 8a 88 ec 14 6b 07 44 | E...YT.QT[..q......Jq-.......k.D |
1040 | 76 e8 3e f1 39 8c 77 40 6c 47 cd 33 af 87 e8 7e de 78 39 97 0f 21 be 0f b0 5d e2 79 d8 2e 8b f0 | v.>.9.w@lG.3...~.x9..!...].y.... |
1060 | 9c 50 43 d9 0d 87 fe 64 98 1e 65 31 be d4 3c f1 3c 72 de 90 41 08 e5 63 c7 f9 de 73 c7 1f 85 38 | .PC....d..e1..<.<r..A..c...s...8 |
1080 | 2f 9a 2e 34 cf 22 fd 28 44 ba e8 3d 0e d6 d0 3c f1 3b b6 38 b2 58 5f 18 3b e6 f0 d4 74 59 b4 2f | /..4.".(D..=...<.;.8.X_.;...tY./ |
10a0 | 35 4f 78 1d a6 cb e2 7d a9 79 e6 f7 a3 10 f1 65 d3 f9 ca 62 16 f1 47 21 e2 cb a6 f3 cd 13 bf d3 | 5Ox....}.y.....e...b..G!........ |
10c0 | b7 af c2 3c 2e da 0b c7 bb f6 70 7c 6a bb 43 22 de 17 15 c5 5c ce 5b 86 47 07 44 7c 68 9e 7b 9e | ...<......p|j.C"....\.[.G.D|h.{. |
10e0 | 23 7e 79 b9 10 35 4f 23 fe 28 44 bc 19 3c 6f 2e c9 8c 3f 34 4f 3c 0f e3 15 22 5e b7 5d 96 bd 1d | #~y..5O#.(D..<o...?4O<..."^.]... |
1100 | 1d 12 f1 be 60 97 78 1e df 9f 3b 24 e2 7d f3 cc f3 57 21 e2 cb b8 73 cd f3 88 bf 0a 11 2f 70 23 | ....`.x...;$.}...W!...s....../p# |
1120 | 42 d6 37 cf 22 fe aa 10 f1 c2 74 be 79 96 c5 5d 1d 12 f1 a1 b9 f4 3b 4c 77 48 c4 fb e6 99 df af | B.7.".....t.y..]......;LwH...... |
1140 | 42 c4 1f 60 ba 2c e2 af 42 c4 5b d3 e5 b9 5c a8 e5 25 7e c7 57 09 b3 88 cf 17 3c a1 79 96 cf 5d | B..`.,..B.[...\..%~.W.....<.y..] |
1160 | e5 11 bf d0 5e 38 9e 23 f6 2a 8f f8 a5 f6 b9 e7 39 e2 e3 90 5d 6a 9e 45 fc 55 3a c7 2b 5b cb 7e | ....^8.#.*......9...]j.E.U:.+[.~ |
1180 | f4 f9 7a ed 2a 8d 78 53 a8 11 a9 70 68 9e e5 76 57 59 c4 2f 29 9f 78 1e b8 cb 22 9e 9b ab 75 c5 | ..z.*.xS...ph..vWY./).x..."...u. |
11a0 | 11 67 15 d2 13 57 28 f5 70 55 b1 70 72 06 89 d5 dc 62 47 2d 6e fa 5b 6b 57 e9 28 79 22 8d 2f ed | .g...W(.pU.pr....bG-n.[kW.(y"./. |
11c0 | fb cc b3 39 4a 6b 9a 4a 92 b7 95 32 94 73 f1 5d ba bc 38 14 d7 c6 76 5b 2a 31 8d f8 0a 3c 8e 64 | ...9Jk.J...2.s.]..8...v[*1...<.d |
11e0 | da 04 c5 16 86 4c c0 9b fe cd a8 a5 d1 f9 0c e0 d8 e5 07 bf 30 68 5b 02 8d 41 e3 0a e6 f8 7a f4 | .....L..............0h[..A....z. |
1200 | 96 aa d3 71 cb e2 98 e5 19 bf 79 c2 f7 d8 4d 3b 65 c0 e6 5b 63 f8 82 2e 6a a5 ca a8 79 08 79 09 | ...q......y...M;e..[c...j...y.y. |
1220 | 16 c6 6f e9 0b fd 99 c0 03 ca af 7e 48 dd 66 68 51 1a 8b 25 15 87 24 27 2b b8 11 fb 4d a6 a1 b3 | ..o........~H.fhQ..%..$'+...M... |
1240 | bf f1 bf 71 22 7d f3 4b 75 a2 f1 48 56 b3 85 ac 06 df 91 f7 be b4 58 9a 6f a8 ec 5b 46 a1 51 3f | ...q"}.Ku..HV.........X.o..[F.Q? |
1260 | 6a f9 6d ea 73 c3 cc 82 54 ad 5d 56 5f 6c fc 99 93 84 c3 6e 97 79 63 45 a5 66 ad dc ec 1d c0 a5 | j.m.s...T.]V_l.....n.ycE.f...... |
1280 | 66 d3 d4 58 31 d2 7f b1 d6 8c 4d 13 80 7f ae e3 b6 d1 c3 1c d2 82 f3 75 61 6f 2a 2f 9e 0f 10 a9 | f..X1.....M............uao*/.... |
12a0 | 1c 8f 85 23 7e b5 a5 63 9a 78 e5 46 21 85 c6 cc ca 84 96 d1 40 16 e9 80 42 c3 f4 f8 ed 7e a0 54 | ...#~..c.x.F!.......@...B....~.T |
12c0 | 43 ee 93 40 7b 3a c3 9e 44 05 02 5b 29 7c 3b 27 4c 78 1c 86 6b 97 39 01 ba 17 67 5e 14 e6 51 2e | C..@{:..D..[)|;'Lx..k.9...g^..Q. |
12e0 | ec 6d 97 5a 14 24 30 0a 96 33 51 a0 14 dd 07 50 ab 12 05 79 dd dd 9f 28 c2 b1 76 d8 21 6e a7 9a | .m.Z.$0..3Q....P...y...(..v.!n.. |
1300 | 9e 7b 94 fb 15 f3 80 07 76 90 db b8 4f d5 fc 74 92 99 36 ba 68 d3 42 e1 a6 7c fd 61 6b ff 05 76 | .{......v...O..t..6.h.B..|.ak..v |
1320 | a7 02 ee f9 7f 53 fe d7 c8 13 3b 08 21 b3 2c ce 37 ae 8e ce 64 19 7c c4 19 86 dd 04 88 eb d1 f9 | .....S....;.!.,.7...d.|......... |
1340 | 88 9c 80 88 64 5c a0 ad ee 50 0f 4f c8 a9 28 40 8b 54 77 80 c5 69 e0 b6 f2 25 d7 5a 0d d4 b8 2c | ....d\...P.O..(@.Tw..i...%.Z..., |
1360 | ee 06 c4 e9 b1 13 c0 a1 11 6c c0 25 f9 6f d9 10 d0 80 82 1d 85 cc 0b 8c 35 31 e9 86 b2 ba 48 36 | .........l.%.o..........51....H6 |
1380 | ec 8c fd 90 2d 30 96 24 68 33 f7 43 e6 87 25 09 09 16 d8 0e 0f 61 99 61 03 7e 49 82 06 86 87 6c | ....-0.$h3.C..%......a.a.~I....l |
13a0 | a5 61 24 08 4f b8 cd 0d 15 0d 0f d9 62 63 41 07 8d 34 57 0f d9 7a 63 49 82 c0 83 f3 45 58 72 88 | .a$.O.......bcA..4W..zcI....EXr. |
13c0 | 35 43 cc b4 de 9b 31 eb f8 a0 78 c8 ce 1c 28 31 61 4b ee 02 0d 76 ce 7f 10 cb 8e 42 48 d8 f6 2a | 5C....1...x...(1aK...v.....BH..* |
13e0 | 16 f2 75 87 51 40 38 c2 0a 50 a1 90 2f 3c ca 23 50 52 88 d5 c3 01 b5 06 bb 6f 90 e2 80 79 e9 21 | ..u.Q@8..P../<.#PR.......o...y.! |
1400 | 5d 7a f0 41 c3 84 14 cc 00 54 52 78 e0 b5 47 9c c4 16 f5 37 d3 65 c2 09 0f e9 e2 43 a9 56 38 fd | ]z.A.....TRx..G....7.e.....C.V8. |
1420 | b5 f9 ea 41 5f 7d 10 23 f8 69 cb 15 a6 35 04 3c 1e c0 07 ae 3d 23 40 ce 5d ab c7 03 18 c9 b5 4f | ...A_}.#.i...5.<....=#@.]......O |
1440 | 00 c0 f6 7f 0c 5c 50 8c 01 d7 5e 63 82 47 66 82 d8 fe 79 14 da f6 a9 ff 99 8b 1e 53 1e 50 96 9e | .....\P...^c.Gf...y........S.P.. |
1460 | be 7d 48 b9 7c 04 3e 96 59 20 b5 bf ea ff c7 03 38 c0 f5 af e4 0e ab c7 ac ee 90 e3 2f 94 c7 05 | .}H.|.>.Y.......8.........../... |
1480 | 02 2c 0b 3d 0a 0e d0 77 c8 83 04 8d 05 1e c1 02 cf 4e cd 41 44 02 03 e3 86 88 07 8a 49 60 10 a1 | .,.=...w.........N.AD.......I`.. |
14a0 | 22 a1 c0 04 31 15 79 09 3a 16 0e e0 82 48 02 a1 21 8d 86 ac 12 b1 e0 0d 89 07 e7 8d 94 0f 14 3e | "...1.y.:....H..!..............> |
14c0 | 0a 3a 68 8c f0 d8 3d ef 8c 50 77 17 88 b0 b3 c2 49 e0 84 a2 2f 82 04 0d 11 27 19 2b 18 3b c4 be | .:h...=..Pw.....I.../....'.+.;.. |
14e0 | 08 12 34 40 9c 64 bc 90 5b 32 48 d0 66 86 93 2c 47 58 90 20 f1 60 7d 71 92 72 83 e2 0b af 83 3a | ..4@.d..[2H.f..,GX...`}q.r.....: |
1500 | 3b 9c 3c 7e 83 2f 24 1e 9c 2f 02 3f 3c ef 0b 35 47 38 29 30 84 f0 85 df 0c 50 f1 70 00 43 84 8a | ;.<~./$../.?<..5G8)0.....P.p.C.. |
1520 | ba 36 4b 9c 94 f2 84 38 d5 09 22 04 20 9c 33 22 86 28 ae 40 82 08 8d 21 4e 2e 0e f0 86 b3 84 44 | .6K....8.."...3".(.@...!N......D |
1540 | 84 f3 46 60 88 b2 37 82 04 65 be 38 29 30 84 ea 0d 1d 11 07 30 84 b7 83 ba 8c 38 c9 72 06 25 32 | ..F`..7..e.8)0......0.....8.r.%2 |
1560 | 7c a5 5c 20 c2 3a e3 29 30 44 d9 17 5e 82 c6 10 4f d9 2a 62 49 07 01 08 eb 8b a7 c0 10 65 5f 78 | |.\..:.)0D..^...O.*bI........e_x |
1580 | 1d 34 3c 3c 15 18 42 f8 c2 49 50 f1 f0 74 08 43 04 09 ca 8c f1 94 e5 0f 0b 76 90 78 70 be 08 0c | .4<<..B..IP..t.C.........v.xp... |
15a0 | f1 bc 2f 54 86 78 ca 56 11 79 0e 15 ea e7 02 0f ce 17 81 21 ac 2f 96 24 a8 78 c8 19 c2 88 88 9d | ../T.x.V.y.........!./.$.x...... |
15c0 | 11 94 50 01 91 33 c4 92 16 da 9c f1 94 e5 10 0b 12 24 22 9c 37 02 43 14 f3 59 3f 0c 75 ce 78 ba | ..P..3...........$".7.C..Y?.u.x. |
15e0 | 4f 59 6a 49 07 b1 ae 74 de 08 0c f1 bc 37 74 44 64 0c c1 3a 88 ef b2 b8 53 c4 c3 88 f2 be 3f 31 | OYjI...t.....7tDd..:....S.....?1 |
1600 | 6a 55 d0 4f 4a bb 32 20 d2 16 de d3 30 4d 4d 0e a5 56 d2 f2 58 70 7b 1a 5a af f8 2a 8b af 27 23 | jU.OJ.2.....0MM..V..Xp{.Z..*..'# |
1620 | b4 71 f0 15 14 91 1e 7b 35 03 11 15 13 5b 55 06 6f 87 71 58 77 fa 6d 0a 57 36 a2 fc d8 0f c3 6e | .q.....{5....[U.o.qXw.m.W6.....n |
1640 | 53 10 db ba 96 da 30 cc b7 1b c5 86 10 6f 53 c4 ed dc 82 82 4b fa 76 9b 82 b6 63 13 f5 cd ea 44 | S.....0......oS.....K.v...c....D |
1660 | db a2 18 7a d4 f4 13 37 40 58 71 8b 82 e2 2a 29 2d db 2d 8a 58 92 36 1c 25 0b 32 5b 14 a6 a1 4c | ...z...7@Xq...*)-.-.X.6.%.2[...L |
1680 | 89 e3 7d a6 67 7c a2 6c 54 0c 1d 2a fd e9 e1 35 b3 51 91 9c 9c f3 3e 71 83 e0 96 66 b1 1d 0d 22 | ..}.g|.lT..*...5.Q....>q...f..." |
16a0 | 14 fa 55 68 51 71 3a 6a 28 9c 62 37 2a dc 20 f4 2f a0 e0 eb 0b 79 99 bc 03 ef 27 9e 11 db 15 f1 | ..UhQq:j(.b7*.../....y....'..... |
16c0 | ea d5 8f c3 6c 57 44 4d a3 51 84 2a 3f a3 39 29 35 bb ed 0a 6e ab 7a 23 2e 35 63 3c 54 72 ce a1 | ....lWDM.Q.*?.9)5...n.z#.5c<Tr.. |
16e0 | 66 1f b1 ac 79 a5 45 dd 5f f1 8a db b5 20 13 24 d0 72 bb 16 dc f2 db bc c2 bb 16 51 bb 25 a7 1c | f...y.E._......$.r.........Q.%.. |
1700 | f2 ac 5f 1b ed 78 ce 50 ee 14 b1 77 61 b9 d3 79 c4 ee 5d 44 ed 54 8f 28 b8 72 7b 17 dc 54 75 08 | .._..x.P...wa..y..]D.T.(.r{..Tu. |
1720 | 6f 81 39 64 a5 31 6f 1d a1 ec 60 f4 3b 3c 06 23 77 44 be 83 e1 29 cb ec 60 98 76 99 1b c2 06 8c | o.9d.1o...`.;<.#wD...)..`.v..... |
1740 | 06 2b bb 83 11 b7 4d 5c 21 61 c5 cf 6f 56 60 95 1b c8 6e 64 a8 94 8e 33 74 78 a8 c4 7f b5 91 a1 | .+....M\!a..oV`...nd...3tx...... |
1760 | d1 2b 6f 64 3c 5b ab 70 45 7c 85 52 b1 0f 21 72 df 42 cd d4 7c 93 42 e3 12 de c8 48 c8 cb 98 24 | .+od<[.pE|.R..!r.B..|.B....H...$ |
1780 | ce 74 9c 06 51 fc 3b 63 a7 1b 19 7a c5 c6 09 d0 42 b5 b8 91 11 73 97 13 10 e1 9d 34 e0 a2 dd b7 | .t..Q.;c...z....B....s.....4.... |
17a0 | 6c 64 68 78 e1 8d 8c c4 0b 0c 39 31 2d 87 d2 b7 96 61 5c 07 37 14 93 9c 20 21 9a a1 bd 1d af b3 | ldhx......91-....a\.7....!...... |
17c0 | 22 85 d1 41 f8 c1 6f 22 68 58 b8 06 bc 9f 3b 46 1d 74 d0 e6 b2 6b 04 fd 37 48 88 27 12 9b a1 5c | "..A..o"hX....;F.t...k..7H.'...\ |
17e0 | 67 4b 90 25 4b 2a 3c ba ba ce 8a 14 4b 12 12 3c 70 f5 ee 3a 2c 41 9e f7 85 0a 88 eb 03 8a 14 ae | gK.%K*<.....K..<p..:,A.......... |
1800 | 0c ae a2 21 2c 40 8a 8b 20 d7 9e b1 20 69 78 75 9d 2f 3f 72 9e 72 02 12 28 70 48 5c e7 8b 8f b2 | ...!,@.......ixu./?r.r..(pH\.... |
1820 | 00 25 c5 58 5d 5f 10 12 e2 54 60 a1 7d 8c 03 9b 71 5f a7 0b 8f 85 8d 04 15 05 85 c2 04 38 c1 17 | .%.X]_...T`.}...q_...........8.. |
1840 | b2 9d 01 54 0c 84 45 c7 73 1e 30 08 48 3d a0 2f 39 04 23 b8 42 78 82 00 76 c0 7e 1f 08 c1 2a 90 | ...T..E.s.0.H=./9.#.Bx..v.~...*. |
1860 | c3 d8 09 d0 e8 60 bf cf 4a 12 65 01 09 04 38 0a f6 7b 41 07 34 33 94 05 68 10 d8 ef 0b 6c 10 33 | .....`..J.e...8..{A.43..h....l.3 |
1880 | 92 1b 82 36 33 ec f7 07 90 81 13 a0 cd 0c fb 7d 56 8e 28 0f 21 41 81 f5 42 a0 82 e7 bc a0 12 c1 | ...63..........}V.(.!A..B....... |
18a0 | 7e 9f 15 23 f2 38 08 05 f0 04 09 d6 0f 81 0c 2c 1d 2d 89 d0 b1 90 f1 81 12 4e 41 0d 1d 0e 25 4a | ~..#.8.........,.-.......NA...%J |
18c0 | 10 ee c4 5a 98 1f 73 a3 e6 0a fb 3d b3 42 bc f8 5c 1a 8a 92 f1 af f6 fb 94 18 94 f5 5b 18 89 a0 | ...Z..s....=.B..\...........[... |
18e0 | 06 3b c5 ec f7 65 6e f0 99 65 10 91 e0 c2 fa e4 26 ad 6a 2c 0c a4 80 8c c0 10 91 5b 0b 8f 95 d1 | .;...en..e......&.j,.......[.... |
1900 | 92 49 3c 82 2d e3 08 d2 a2 47 0a 1d ce 36 85 8a be 8a 8c 75 96 35 18 11 71 ee 14 44 30 30 12 a6 | .I<.-....G...6.....u.5..q..D00.. |
1920 | db af 05 4f b8 fc ad 34 10 c1 14 ce 23 f4 75 76 99 37 2c 69 a1 72 c5 fa 41 f3 48 49 0b 81 0b 3b | ...O...4....#.uv.7,i.r..A.HI...; |
1940 | e5 ec d7 81 2d 0e f0 88 8a 8b 75 c6 17 0b 1e d1 71 b1 ce 72 07 e6 2c b1 70 0d 05 71 66 8c cc 23 | ....-.....u.....q..r..,.p..qf..# |
1960 | 81 31 62 d6 2a 88 10 b8 f0 1e c9 18 c3 b0 7f 41 86 ca 18 6b 30 86 96 16 17 64 08 64 78 9f 04 c6 | .1b.*..........A...k0....d.dx... |
1980 | 88 72 b1 e4 61 87 c1 1c 3a 34 52 ca 30 65 a7 82 1a 3a 34 32 ca 30 4e 11 91 06 43 f2 e3 28 06 1d | .r..a...:4R.0e...:42.0N...C..(.. |
19a0 | 1a 59 46 b1 e0 57 35 a7 d8 af 03 65 44 49 89 7c d0 98 7f 7a 8b a4 0c eb d7 0b 95 31 4a 12 04 32 | .YF..W5....eDI.|...z.......1J..2 |
19c0 | ac 47 2e b2 b4 82 10 5e 92 a0 e1 e2 22 f0 45 14 66 25 09 1a 2a 2e 54 ba e8 f0 7d b3 88 f7 fc 3e | .G.....^....".E.f%..*.T...}....> |
19e0 | 85 86 89 8b 2c b3 58 1a 85 96 5b 5c 04 b2 38 c0 17 02 11 ce 17 2a 57 14 ec a0 72 c5 45 96 5c 30 | ....,.X...[\..8......*W...r.E.\0 |
1a00 | a4 06 59 b5 73 cf c2 91 80 70 ee 0c 54 11 c5 57 53 12 a1 22 22 a3 0a 8e af 76 16 c9 6e d8 25 50 | ..Y.s....p..T..WS..""....v..n.%P |
1a20 | 31 91 27 17 76 28 b1 4f 83 0c 15 15 81 2a 62 d6 2b 0d 45 cb 2e 2e 52 a6 30 a4 57 12 21 a8 c2 79 | 1.'.v(.O.....*b.+.E...R.0.W.!..y |
1a40 | 55 67 8a 92 08 01 0c e7 93 2c b9 58 72 ab 8e 8c c0 14 b1 5b 93 47 00 d9 c7 c3 f4 38 12 6e 1f eb | Ug.......,.Xr......[.G.....8.n.. |
1a60 | 22 7f d8 8f 9e ce ca e5 d4 db 4b 7a dc 2b 3f 5a 15 af f0 7d 03 3c 3e e7 2f 97 78 40 ea 25 1e 14 | ".........Kz.+?Z...}.<>./.x@.%.. |
1a80 | 04 4a 49 ca fa c6 6a 9d 7c 18 92 eb 8c 6a 76 d9 b3 68 50 57 a7 87 85 d2 f3 78 6e 2f dd 0b bc c7 | .JI...j.|....jv..hPW.....xn/.... |
1aa0 | 17 1b dc 5b f4 67 6e c0 1f fa 18 6f 70 c4 f8 96 6e aa 56 fc dc 32 34 46 36 a3 eb 12 e7 33 6e ab | ...[.gn....op...n.V..24F6....3n. |
1ac0 | a7 47 35 24 1b 37 fd 48 15 3d 86 86 1e a2 7f 7b 49 2f b0 f1 42 bd a0 aa 7c 79 4f 83 3e a2 41 83 | .G5$.7.H.=.....{I/..B...|yO.>.A. |
1ae0 | c3 d4 8e f0 e3 52 11 09 f9 9e f0 22 1f 34 1e dd 76 7b 49 ff 48 ea 15 49 cd 78 8d 1d 9f 1f b5 a7 | .....R.....".4..v{I.H..I.x...... |
1b00 | 87 fa f4 43 a7 c8 24 ed 5f fd 7a 89 7f ec 3b 98 e4 af 10 fe 40 c2 41 79 df a2 72 df 2b e2 a1 f2 | ...C..$._.z...;.....@.Ay..r.+... |
1b20 | af 97 f8 d7 90 d4 47 92 9a d1 20 ab 2c f3 2e 6f 06 fc ec 62 6e 06 56 d9 18 f8 0c 7f 00 2d f2 2d | ......G.....,..o...bn.V......-.- |
1b40 | 1e 8a 44 0f 3e 73 6f f1 50 20 f8 82 3e 45 cf 78 01 6f 10 0e 2a fe c5 03 8c d2 36 a1 67 0a f2 35 | ..D.>so.P...>E.x.o..*.....6.g..5 |
1b60 | 70 ab 3a 58 f1 d4 34 af 97 fa 7c 24 0b 04 7a 3a f1 19 89 27 15 9c 46 f4 08 31 7a 86 13 7d 8e 07 | p.:X..4...|$..z:...'..F..1z..}.. |
1b80 | 90 33 fc a0 12 52 b7 2d 63 13 3f 5a 63 50 03 88 46 17 53 95 08 7f f2 70 26 17 8f e9 79 74 2e 28 | .3...R.-c.?ZcP..F.S....p&...yt.( |
1ba0 | 65 6e 07 9d f8 11 59 28 c3 7d e3 83 70 e8 27 88 7a 35 f6 be e1 34 bc 11 22 a3 c6 f2 5e 52 48 76 | en....Y(.}..p.'.z5...4.."...^RHv |
1bc0 | cb 00 39 3a ae c2 b2 10 1b 10 e2 f8 28 1e 5e 91 9f 08 cf 4d 14 84 d8 08 10 42 a8 c2 9e 3d b7 79 | ..9:........(.^....M.....B...=.y |
1be0 | 49 88 c5 79 26 c4 2e 8c 68 fe 31 bb 3f 4b 42 2c b0 53 21 07 17 d7 d9 26 16 85 99 10 ab 09 11 8b | I..y&...h.1.?KB,.S!....&........ |
1c00 | d1 c4 4c 07 e2 b1 c1 5c 97 1d f1 c5 3a 87 9b 44 4a 93 25 7e 56 48 4c 57 41 88 0e 94 a6 a4 49 41 | ..L....\....:..DJ.%~VHLWA.....IA |
1c20 | 88 0a 94 26 a4 7f 72 38 ba 10 1d 28 8d ce 94 f2 41 c6 61 38 3a 50 9a 6c c9 b8 68 13 1d 28 8d 25 | ...&..r8...(....A.a8:P.l..h..(.% |
1c40 | c0 80 93 45 21 3a 50 1a 91 0a fa 52 5b 69 38 3a 50 9a 6c e1 c8 88 c5 a1 ce 90 15 73 c9 93 67 0f | ...E!:P....R[i8:P.l........s..g. |
1c60 | 75 ce 5f 35 21 1d 8c 51 2f 1e 23 1c 64 14 50 92 e5 83 a6 44 53 12 a2 a3 24 4f 08 cd 68 04 4a e8 | u._5!..Q/.#.d.P....DS...$O..h.J. |
1c80 | 24 3b 8f a6 80 12 35 23 a4 df 5c 53 4d 52 40 49 93 2e 62 97 14 29 80 24 24 85 d1 92 07 0f 27 53 | $;....5#..\SMR@I..b..).$$.....'S |
1ca0 | f5 28 60 24 5d 3f 9a 12 5e 41 46 01 22 21 2d 8c 63 4f 79 02 39 13 92 8e 91 7b 9d 4a e4 e3 33 b9 | .(`$]?..^AF."!-.cOy.9....{.J..3. |
1cc0 | 2c 6b a6 0b 2d df 5b dd eb 54 52 14 a2 82 e4 5e a7 92 92 10 1d 24 f7 3a 95 94 84 e8 20 b9 d7 a9 | ,k..-.[..TR....^.....$.:........ |
1ce0 | a4 24 44 47 c9 bd 4e 25 25 21 3a 4c ee 75 2a 29 09 d1 71 72 9f 51 09 93 5a 82 13 ae f5 e2 cb f3 | .$DG..N%%!:L.u*)..qr.Q..Z....... |
1d00 | 85 29 e7 3e e3 12 2b 24 46 bd a9 b3 92 10 9d 4c ee 73 32 21 29 c8 01 0a 52 74 a0 e4 6c b2 a8 4b | .).>..+$F......L.s2!)...Rt..l..K |
1d20 | 01 29 2a 9d 34 25 55 0a 48 c9 e8 64 51 93 02 52 2c 9f 24 93 4e 49 93 02 52 04 a1 f8 49 a7 24 a4 | .)*.4%U.H..dQ..R,.$.NI..R...I.$. |
1d40 | 80 94 8c 51 0c 3b c6 93 8e a9 1f 97 81 72 93 11 8a 91 11 7b 38 c8 d0 71 72 93 f1 c9 a2 0c 15 25 | ...Q.;.......r.....{8..qr......% |
1d60 | 37 19 9d 2c c9 d0 30 82 c5 97 79 e6 3c 9e e6 e1 92 b5 25 19 3a 44 6e 42 71 aa 38 5b 04 7b e8 08 | 7..,..0...y.<.....%.:Dnght: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Mu - 069allocate.subx</title>
<meta name="Generator" content="Vim/8.1">
<meta name="plugin-version" content="vim8.1_v1">
<meta name="syntax" content="none">
<meta name="settings" content="number_lines,use_css,no_foldcolumn,expand_tabs,line_ids,prevent_copy=">
<meta name="colorscheme" content="minimal-light">
<style type="text/css">
<!--
pre { font-family: monospace; color: #000000; background-color: #c6c6c6; }
body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
a { color:inherit; }
* { font-size:12pt; font-size: 1em; }
.subxComment { color: #005faf; }
.subxS2Comment { color: #8a8a8a; }
.subxFunction { color: #af5f00; text-decoration: underline; }
.LineNr { }
.subxS1Comment { color: #0000af; }
.SpecialChar { color: #d70000; }
.Normal { color: #000000; background-color: #c6c6c6; padding-bottom: 1px; }
.subxMinorFunction { color: #875f5f; }
.Constant { color: #008787; }
.subxTest { color: #5f8700; }
-->
</style>
<script type='text/javascript'>
<!--
/* function to open any folds containing a jumped-to line before jumping to it */
function JumpToLine()
{
var lineNum;
lineNum = window.location.hash;
lineNum = lineNum.substr(1); /* strip off '#' */
if (lineNum.indexOf('L') == -1) {
lineNum = 'L'+lineNum;
}
var lineElem = document.getElementById(lineNum);
/* Always jump to new location even if the line was hidden inside a fold, or
* we corrected the raw number to a line ID.
*/
if (lineElem) {
lineElem.scrollIntoView(true);
}
return true;
}
if ('onhashchange' in window) {
window.onhashchange = JumpToLine;
}
-->
</script>
</head>
<body onload='JumpToLine();'>
<a href='https://github.com/akkartik/mu/blob/master/069allocate.subx'>https://github.com/akkartik/mu/blob/master/069allocate.subx</a>
<pre id='vimCodeElement'>
<span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Helper to dynamically allocate memory on the heap.</span>
<span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
<span id="L3" class="LineNr"> 3 </span><span class="subxComment"># We'd like to be able to write tests for functions that allocate memory,</span>
<span id="L4" class="LineNr"> 4 </span><span class="subxComment"># making assertions on the precise addresses used. To achieve this we'll pass</span>
<span id="L5" class="LineNr"> 5 </span><span class="subxComment"># in an *allocation descriptor* to allocate from.</span>
<span id="L6" class="LineNr"> 6 </span><span class="subxComment">#</span>
<span id="L7" class="LineNr"> 7 </span><span class="subxComment"># Allocation descriptors are also useful outside of tests. Assembly and machine</span>
<span id="L8" class="LineNr"> 8 </span><span class="subxComment"># code are of necessity unsafe languages, and one of the most insidious kinds</span>
<span id="L9" class="LineNr"> 9 </span><span class="subxComment"># of bugs unsafe languages expose us to are dangling pointers to memory that</span>
<span id="L10" class="LineNr"> 10 </span><span class="subxComment"># has been freed and potentially even reused for something totally different.</span>
<span id="L11" class="LineNr"> 11 </span><span class="subxComment"># To reduce the odds of such "use after free" errors, SubX programs tend to not</span>
<span id="L12" class="LineNr"> 12 </span><span class="subxComment"># reclaim and reuse dynamically allocated memory. (Running out of memory is far</span>
<span id="L13" class="LineNr"> 13 </span><span class="subxComment"># easier to debug.) Long-running programs that want to reuse memory are mostly</span>
<span id="L14" class="LineNr"> 14 </span><span class="subxComment"># on their own to be careful. However, they do get one bit of help: they can</span>
<span id="L15" class="LineNr"> 15 </span><span class="subxComment"># carve out chunks of memory and then allocate from them manually using this</span>
<span id="L16" class="LineNr"> 16 </span><span class="subxComment"># very same 'allocate' helper. They just need a new allocation descriptor for</span>
<span id="L17" class="LineNr"> 17 </span><span class="subxComment"># their book-keeping.</span>
<span id="L18" class="LineNr"> 18 </span>
<span id="L19" class="LineNr"> 19 </span>== data
<span id="L20" class="LineNr"> 20 </span>
<span id="L21" class="LineNr"> 21 </span><span class="subxComment"># A default allocation descriptor for programs to use.</span>
<span id="L22" class="LineNr"> 22 </span><span class="SpecialChar">Heap</span>: <span class="subxComment"># allocation-descriptor</span>
<span id="L23" class="LineNr"> 23 </span> <span class="subxComment"># curr</span>
<span id="L24" class="LineNr"> 24 </span> 0/imm32
<span id="L25" class="LineNr"> 25 </span> <span class="subxComment"># limit</span>
<span id="L26" class="LineNr"> 26 </span> 0/imm32
<span id="L27" class="LineNr"> 27 </span>
<span id="L28" class="LineNr"> 28 </span><span class="subxComment"># a reasonable default</span>
<span id="L29" class="LineNr"> 29 </span><span class="SpecialChar">Heap-size</span>: <span class="subxComment"># int</span>
<span id="L30" class="LineNr"> 30 </span> 0x400000/imm32/4MB
<span id="L31" class="LineNr"> 31 </span>
<span id="L32" class="LineNr"> 32 </span>== code
<span id="L33" class="LineNr"> 33 </span><span class="subxComment"># instruction effective address register displacement immediate</span>
<span id="L34" class="LineNr"> 34 </span><span class="subxS1Comment"># . op subop mod rm32 base index scale r32</span>
<span id="L35" class="LineNr"> 35 </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="L36" class="LineNr"> 36 </span>
<span id="L37" class="LineNr"> 37 </span><span class="subxComment"># Let's start initializing the default allocation descriptor.</span>
<span id="L38" class="LineNr"> 38 </span>
<span id="L39" class="LineNr"> 39 </span><span class="SpecialChar">Entry</span>:
<span id="L40" class="LineNr"> 40 </span> <span class="subxComment"># initialize heap</span>
<span id="L41" class="LineNr"> 41 </span> <span class="subxS1Comment"># . Heap = new-segment(Heap-size)</span>
<span id="L42" class="LineNr"> 42 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L43" class="LineNr"> 43 </span> 68/push <span class="SpecialChar"><a href='069allocate.subx.html#L22'>Heap</a></span>/imm32
<span id="L44" class="LineNr"> 44 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='069allocate.subx.html#L29'>Heap-size</a></span>/disp32 <span class="subxComment"># push *Heap-size</span>
<span id="L45" class="LineNr"> 45 </span> <span class="subxS2Comment"># . . call</span>
<span id="L46" class="LineNr"> 46 </span> e8/call <a href='053new-segment.subx.html#L41'>new-segment</a>/disp32
<span id="L47" class="LineNr"> 47 </span> <span class="subxS2Comment"># . . discard args</span>
<span id="L48" class="LineNr"> 48 </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="L49" class="LineNr"> 49 </span>
<span id="L50" class="LineNr"> 50 </span> e8/call run-tests/disp32 <span class="subxComment"># 'run-tests' is a function created automatically by SubX. It calls all functions that start with 'test-'.</span>
<span id="L51" class="LineNr"> 51 </span><span class="Constant">$array-equal-main:end</span>:
<span id="L52" class="LineNr"> 52 </span> <span class="subxComment"># syscall(exit, Num-test-failures)</span>
<span id="L53" class="LineNr"> 53 </span> 8b/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 3/r32/ebx <span class="SpecialChar"><a href='051test.subx.html#L90'>Num-test-failures</a></span>/disp32 <span class="subxComment"># copy *Num-test-failures to ebx</span>
<span id="L54" class="LineNr"> 54 </span> b8/copy-to-eax 1/imm32/exit
<span id="L55" class="LineNr"> 55 </span> cd/syscall 0x80/imm8
<span id="L56" class="LineNr"> 56 </span>
<span id="L57" class="LineNr"> 57 </span><span class="subxComment"># Claim the next 'n' bytes of memory starting at ad->curr and update ad->curr.</span>
<span id="L58" class="LineNr"> 58 </span><span class="subxComment"># Abort if there isn't enough memory in 'ad'.</span>
<span id="L59" class="LineNr"> 59 </span><span class="subxFunction">allocate</span>: <span class="subxComment"># ad: (addr allocation-descriptor), n: int -> address-or-null/eax: (addr _)</span>
<span id="L60" class="LineNr"> 60 </span> <span class="subxS1Comment"># . prologue</span>
<span id="L61" class="LineNr"> 61 </span> 55/push-ebp
<span id="L62" class="LineNr"> 62 </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="L63" class="LineNr"> 63 </span> <span class="subxS1Comment"># . save registers</span>
<span id="L64" class="LineNr"> 64 </span> 51/push-ecx
<span id="L65" class="LineNr"> 65 </span> 52/push-edx
<span id="L66" class="LineNr"> 66 </span> <span class="subxComment"># ecx = ad</span>
<span id="L67" class="LineNr"> 67 </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="L68" class="LineNr"> 68 </span> <span class="subxComment"># save ad->curr</span>
<span id="L69" class="LineNr"> 69 </span> 8b/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 *ecx to eax</span>
<span id="L70" class="LineNr"> 70 </span> <span class="subxComment"># check if there's enough space</span>
<span id="L71" class="LineNr"> 71 </span> <span class="subxS1Comment"># . edx = ad->curr + n</span>
<span id="L72" class="LineNr"> 72 </span> 89/copy 3/mod/direct 2/rm32/edx <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 edx</span>
<span id="L73" class="LineNr"> 73 </span> 03/add 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 2/r32/edx 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># add *(ebp+12) to edx</span>
<span id="L74" class="LineNr"> 74 </span> 3b/compare 1/mod/*+disp8 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 2/r32/edx 4/disp8 <span class="Normal"> . </span> <span class="subxComment"># compare edx with *(ecx+4)</span>
<span id="L75" class="LineNr"> 75 </span> 73/jump-if->=-signed $allocate:abort/disp8
<span id="L76" class="LineNr"> 76 </span><span class="Constant">$allocate:commit</span>:
<span id="L77" class="LineNr"> 77 </span> <span class="subxComment"># update ad->curr</span>
<span id="L78" class="LineNr"> 78 </span> 89/copy 0/mod/indirect 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 2/r32/edx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy edx to *ecx</span>
<span id="L79" class="LineNr"> 79 </span><span class="Constant">$allocate:end</span>:
<span id="L80" class="LineNr"> 80 </span> <span class="subxS1Comment"># . restore registers</span>
<span id="L81" class="LineNr"> 81 </span> 5a/pop-to-edx
<span id="L82" class="LineNr"> 82 </span> 59/pop-to-ecx
<span id="L83" class="LineNr"> 83 </span> <span class="subxS1Comment"># . epilogue</span>
<span id="L84" class="LineNr"> 84 </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="L85" class="LineNr"> 85 </span> 5d/pop-to-ebp
<span id="L86" class="LineNr"> 86 </span> c3/return
<span id="L87" class="LineNr"> 87 </span>
<span id="L88" class="LineNr"> 88 </span><span class="Constant">$allocate:abort</span>:
<span id="L89" class="LineNr"> 89 </span> <span class="subxS1Comment"># . _write(2/stderr, error)</span>
<span id="L90" class="LineNr"> 90 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L91" class="LineNr"> 91 </span> 68/push <span class="Constant">"allocate: failed to allocate\n"</span>/imm32
<span id="L92" class="LineNr"> 92 </span> 68/push 2/imm32/stderr
<span id="L93" class="LineNr"> 93 </span> <span class="subxS2Comment"># . . call</span>
<span id="L94" class="LineNr"> 94 </span> e8/call <a href='050_write.subx.html#L14'>_write</a>/disp32
<span id="L95" class="LineNr"> 95 </span> <span class="subxS2Comment"># . . discard args</span>
<span id="L96" class="LineNr"> 96 </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="L97" class="LineNr"> 97 </span> <span class="subxS1Comment"># . syscall(exit, 1)</span>
<span id="L98" class="LineNr"> 98 </span> bb/copy-to-ebx 1/imm32
<span id="L99" class="LineNr"> 99 </span> b8/copy-to-eax 1/imm32/exit
<span id="L100" class="LineNr">100 </span> cd/syscall 0x80/imm8
<span id="L101" class="LineNr">101 </span> <span class="subxComment"># never gets here</span>
<span id="L102" class="LineNr">102 </span>
<span id="L103" class="LineNr">103 </span><span class="subxTest">test-allocate-success</span>:
<span id="L104" class="LineNr">104 </span> <span class="subxS1Comment"># . prologue</span>
<span id="L105" class="LineNr">105 </span> 55/push-ebp
<span id="L106" class="LineNr">106 </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="L107" class="LineNr">107 </span> <span class="subxComment"># var ad/ecx: allocation-descriptor = {11, 15}</span>
<span id="L108" class="LineNr">108 </span> 68/push 0xf/imm32/limit
<span id="L109" class="LineNr">109 </span> 68/push 0xb/imm32/curr
<span id="L110" class="LineNr">110 </span> 89/copy 3/mod/direct 1/rm32/ecx <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 ecx</span>
<span id="L111" class="LineNr">111 </span> <span class="subxComment"># var eax: (handle byte) = allocate(ad, 3)</span>
<span id="L112" class="LineNr">112 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L113" class="LineNr">113 </span> 68/push 3/imm32
<span id="L114" class="LineNr">114 </span> 51/push-ecx
<span id="L115" class="LineNr">115 </span> <span class="subxS2Comment"># . . call</span>
<span id="L116" class="LineNr">116 </span> e8/call <a href='069allocate.subx.html#L59'>allocate</a>/disp32
<span id="L117" class="LineNr">117 </span> <span class="subxS2Comment"># . . discard args</span>
<span id="L118" class="LineNr">118 </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="L119" class="LineNr">119 </span> <span class="subxComment"># check-ints-equal(eax, 11, msg)</span>
<span id="L120" class="LineNr">120 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L121" class="LineNr">121 </span> 68/push <span class="Constant">"F - <a href='069allocate.subx.html#L103'>test-allocate-success</a>: returns current pointer of allocation descriptor"</span>/imm32
<span id="L122" class="LineNr">122 </span> 68/push 0xb/imm32
<span id="L123" class="LineNr">123 </span> 50/push-eax
<span id="L124" class="LineNr">124 </span> <span class="subxS2Comment"># . . call</span>
<span id="L125" class="LineNr">125 </span> e8/call <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
<span id="L126" class="LineNr">126 </span> <span class="subxS2Comment"># . . discard args</span>
<span id="L127" class="LineNr">127 </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="L128" class="LineNr">128 </span> <span class="subxComment"># check-ints-equal(ad->curr, 14, msg)</span>
<span id="L129" class="LineNr">129 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L130" class="LineNr">130 </span> 68/push <span class="Constant">"F - <a href='069allocate.subx.html#L103'>test-allocate-success</a>: updates allocation descriptor"</span>/imm32
<span id="L131" class="LineNr">131 </span> 68/push 0xe/imm32
<span id="L132" class="LineNr">132 </span> ff 6/subop/push 0/mod/indirect 1/rm32/ecx <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"># push *ecx</span>
<span id="L133" class="LineNr">133 </span> <span class="subxS2Comment"># . . call</span>
<span id="L134" class="LineNr">134 </span> e8/call <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
<span id="L135" class="LineNr">135 </span> <span class="subxS2Comment"># . . discard args</span>
<span id="L136" class="LineNr">136 </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="L137" class="LineNr">137 </span> <span class="subxS1Comment"># . epilogue</span>
<span id="L138" class="LineNr">138 </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="L139" class="LineNr">139 </span> 5d/pop-to-ebp
<span id="L140" class="LineNr">140 </span> c3/return
<span id="L141" class="LineNr">141 </span>
<span id="L142" class="LineNr">142 </span><span class="subxMinorFunction">_pending-test-allocate-failure</span>:
<span id="L143" class="LineNr">143 </span> <span class="subxS1Comment"># . prologue</span>
<span id="L144" class="LineNr">144 </span> 55/push-ebp
<span id="L145" class="LineNr">145 </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="L146" class="LineNr">146 </span> <span class="subxComment"># var ad/ecx: allocation-descriptor = {11, 15}</span>
<span id="L147" class="LineNr">147 </span> 68/push 0xf/imm32/limit
<span id="L148" class="LineNr">148 </span> 68/push 0xb/imm32/curr
<span id="L149" class="LineNr">149 </span> 89/copy 3/mod/direct 1/rm32/ecx <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 ecx</span>
<span id="L150" class="LineNr">150 </span> <span class="subxComment"># var eax: (handle byte) = allocate(ad, 6)</span>
<span id="L151" class="LineNr">151 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L152" class="LineNr">152 </span> 68/push 6/imm32
<span id="L153" class="LineNr">153 </span> 51/push-ecx
<span id="L154" class="LineNr">154 </span> <span class="subxS2Comment"># . . call</span>
<span id="L155" class="LineNr">155 </span> e8/call <a href='069allocate.subx.html#L59'>allocate</a>/disp32
<span id="L156" class="LineNr">156 </span> <span class="subxS2Comment"># . . discard args</span>
<span id="L157" class="LineNr">157 </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="L158" class="LineNr">158 </span> <span class="subxComment"># check-ints-equal(eax, 0, msg)</span>
<span id="L159" class="LineNr">159 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L160" class="LineNr">160 </span> 68/push <span class="Constant">"F - test-allocate-failure: returns null"</span>/imm32
<span id="L161" class="LineNr">161 </span> 68/push 0/imm32
<span id="L162" class="LineNr">162 </span> 50/push-eax
<span id="L163" class="LineNr">163 </span> <span class="subxS2Comment"># . . call</span>
<span id="L164" class="LineNr">164 </span> e8/call <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
<span id="L165" class="LineNr">165 </span> <span class="subxS2Comment"># . . discard args</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> 0xc/imm32 <span class="subxComment"># add to esp</span>
<span id="L167" class="LineNr">167 </span> <span class="subxComment"># no change to ad->curr</span>
<span id="L168" class="LineNr">168 </span> <span class="subxS1Comment"># . check-ints-equal(ad->curr, 11)</span>
<span id="L169" class="LineNr">169 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L170" class="LineNr">170 </span> 68/push <span class="Constant">"F - test-allocate-failure: updates allocation descriptor"</span>/imm32
<span id="L171" class="LineNr">171 </span> 68/push 0xb/imm32
<span id="L172" class="LineNr">172 </span> ff 6/subop/push 0/mod/indirect 1/rm32/ecx <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"># push *ecx</span>
<span id="L173" class="LineNr">173 </span> <span class="subxS2Comment"># . . call</span>
<span id="L174" class="LineNr">174 </span> e8/call <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
<span id="L175" class="LineNr">175 </span> <span class="subxS2Comment"># . . discard args</span>
<span id="L176" class="LineNr">176 </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="L177" class="LineNr">177 </span> <span class="subxS1Comment"># . epilogue</span>
<span id="L178" class="LineNr">178 </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="L179" class="LineNr">179 </span> 5d/pop-to-ebp
<span id="L180" class="LineNr">180 </span> c3/return
<span id="L181" class="LineNr">181 </span>
<span id="L182" class="LineNr">182 </span><span class="subxComment"># helper: create a nested allocation descriptor (useful for tests)</span>
<span id="L183" class="LineNr">183 </span><span class="subxFunction">allocate-region</span>: <span class="subxComment"># ad: (addr allocation-descriptor), n: int -> new-ad: (handle allocation-descriptor)</span>
<span id="L184" class="LineNr">184 </span> <span class="subxS1Comment"># . prologue</span>
<span id="L185" class="LineNr">185 </span> 55/push-ebp
<span id="L186" class="LineNr">186 </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="L187" class="LineNr">187 </span> <span class="subxS1Comment"># . save registers</span>
<span id="L188" class="LineNr">188 </span> 51/push-ecx
<span id="L189" class="LineNr">189 </span> <span class="subxComment"># eax = allocate(ad, n)</span>
<span id="L190" class="LineNr">190 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L191" class="LineNr">191 </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> 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+12)</span>
<span id="L192" class="LineNr">192 </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="L193" class="LineNr">193 </span> <span class="subxS2Comment"># . . call</span>
<span id="L194" class="LineNr">194 </span> e8/call <a href='069allocate.subx.html#L59'>allocate</a>/disp32
<span id="L195" class="LineNr">195 </span> <span class="subxS2Comment"># . . discard args</span>
<span id="L196" class="LineNr">196 </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="L197" class="LineNr">197 </span> <span class="subxComment"># if (eax == 0) abort</span>
<span id="L198" class="LineNr">198 </span> 3d/compare-eax-and 0/imm32
<span id="L199" class="LineNr">199 </span> 74/jump-if-= $allocate-region:abort/disp8
<span id="L200" class="LineNr">200 </span> <span class="subxComment"># earmark 8 bytes at the start for a new allocation descriptor</span>
<span id="L201" class="LineNr">201 </span> <span class="subxS1Comment"># . *eax = eax + 8</span>
<span id="L202" class="LineNr">202 </span> 89/copy 3/mod/direct 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="L203" class="LineNr">203 </span> 81 0/subop/add 3/mod/direct 1/rm32/ecx <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 ecx</span>
<span id="L204" class="LineNr">204 </span> 89/copy 0/mod/indirect 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 1/r32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy ecx to *eax</span>
<span id="L205" class="LineNr">205 </span> <span class="subxS1Comment"># . *(eax+4) = eax + n</span>
<span id="L206" class="LineNr">206 </span> 89/copy 3/mod/direct 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="L207" class="LineNr">207 </span> 03/add 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 1/r32/ecx 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># add *(ebp+12) to ecx</span>
<span id="L208" class="LineNr">208 </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="L209" class="LineNr">209 </span> <span class="subxS1Comment"># . restore registers</span>
<span id="L210" class="LineNr">210 </span> 59/pop-to-ecx
<span id="L211" class="LineNr">211 </span> <span class="subxS1Comment"># . epilogue</span>
<span id="L212" class="LineNr">212 </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="L213" class="LineNr">213 </span> 5d/pop-to-ebp
<span id="L214" class="LineNr">214 </span> c3/return
<span id="L215" class="LineNr">215 </span>
<span id="L216" class="LineNr">216 </span><span class="subxComment"># We could create a more general '$abort' jump target, but then we'd need to do</span>
<span id="L217" class="LineNr">217 </span><span class="subxComment"># a conditional jump followed by loading the error message and an unconditional</span>
<span id="L218" class="LineNr">218 </span><span class="subxComment"># jump. Or we'd need to unconditionally load the error message before a</span>
<span id="L219" class="LineNr">219 </span><span class="subxComment"># conditional jump, even if it's unused the vast majority of the time. This way</span>
<span id="L220" class="LineNr">220 </span><span class="subxComment"># we bloat a potentially cold segment in RAM so we can abort with a single</span>
<span id="L221" class="LineNr">221 </span><span class="subxComment"># instruction.</span>
<span id="L222" class="LineNr">222 </span><span class="Constant">$allocate-region:abort</span>:
<span id="L223" class="LineNr">223 </span> <span class="subxS1Comment"># . _write(2/stderr, error)</span>
<span id="L224" class="LineNr">224 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L225" class="LineNr">225 </span> 68/push <span class="Constant">"allocate-region: failed to allocate\n"</span>/imm32
<span id="L226" class="LineNr">226 </span> 68/push 2/imm32/stderr
<span id="L227" class="LineNr">227 </span> <span class="subxS2Comment"># . . call</span>
<span id="L228" class="LineNr">228 </span> e8/call <a href='050_write.subx.html#L14'>_write</a>/disp32
<span id="L229" class="LineNr">229 </span> <span class="subxS2Comment"># . . discard args</span>
<span id="L230" class="LineNr">230 </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="L231" class="LineNr">231 </span> <span class="subxS1Comment"># . syscall(exit, 1)</span>
<span id="L232" class="LineNr">232 </span> bb/copy-to-ebx 1/imm32
<span id="L233" class="LineNr">233 </span> b8/copy-to-eax 1/imm32/exit
<span id="L234" class="LineNr">234 </span> cd/syscall 0x80/imm8
<span id="L235" class="LineNr">235 </span> <span class="subxComment"># never gets here</span>
<span id="L236" class="LineNr">236 </span>
<span id="L237" class="LineNr">237 </span><span class="subxComment"># Claim the next 'n+4' bytes of memory and initialize the first 4 to n.</span>
<span id="L238" class="LineNr">238 </span><span class="subxComment"># Abort if there isn't enough memory in 'ad'.</span>
<span id="L239" class="LineNr">239 </span><span class="subxFunction">allocate-array</span>: <span class="subxComment"># ad: (addr allocation-descriptor), n: int -> result/eax: (addr _)</span>
<span id="L240" class="LineNr">240 </span> <span class="subxS1Comment"># . prologue</span>
<span id="L241" class="LineNr">241 </span> 55/push-ebp
<span id="L242" class="LineNr">242 </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="L243" class="LineNr">243 </span> <span class="subxS1Comment"># . save registers</span>
<span id="L244" class="LineNr">244 </span> 51/push-ecx
<span id="L245" class="LineNr">245 </span> 52/push-edx
<span id="L246" class="LineNr">246 </span> <span class="subxComment"># ecx = n</span>
<span id="L247" class="LineNr">247 </span> 8b/copy 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 1/r32/ecx 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(ebp+12) to ecx</span>
<span id="L248" class="LineNr">248 </span> <span class="subxComment"># var size/edx: int = n+4</span>
<span id="L249" class="LineNr">249 </span> 8d/copy-address 1/mod/*+disp8 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 2/r32/edx 4/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy ecx+4 to edx</span>
<span id="L250" class="LineNr">250 </span> <span class="subxComment"># result = allocate(ad, size)</span>
<span id="L251" class="LineNr">251 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L252" class="LineNr">252 </span> 52/push-edx
<span id="L253" class="LineNr">253 </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="L254" class="LineNr">254 </span> <span class="subxS2Comment"># . . call</span>
<span id="L255" class="LineNr">255 </span> e8/call <a href='069allocate.subx.html#L59'>allocate</a>/disp32
<span id="L256" class="LineNr">256 </span> <span class="subxS2Comment"># . . discard args</span>
<span id="L257" class="LineNr">257 </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="L258" class="LineNr">258 </span> <span class="subxComment"># *result = n</span>
<span id="L259" class="LineNr">259 </span> 89/copy 0/mod/indirect 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 1/r32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy ecx to *eax</span>
<span id="L260" class="LineNr">260 </span><span class="Constant">$allocate-array:end</span>:
<span id="L261" class="LineNr">261 </span> <span class="subxS1Comment"># . restore registers</span>
<span id="L262" class="LineNr">262 </span> 5a/pop-to-edx
<span id="L263" class="LineNr">263 </span> 59/pop-to-ecx
<span id="L264" class="LineNr">264 </span> <span class="subxS1Comment"># . epilogue</span>
<span id="L265" class="LineNr">265 </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="L266" class="LineNr">266 </span> 5d/pop-to-ebp
<span id="L267" class="LineNr">267 </span> c3/return
<span id="L268" class="LineNr">268 </span>
<span id="L269" class="LineNr">269 </span><span class="subxS2Comment"># . . vim:nowrap:textwidth=0</span>
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->
|