From 1c793a4f315ce705ce476a33610b014310fdb034 Mon Sep 17 00:00:00 2001 From: "Jeff St. Jean" Date: Mon, 12 Apr 2021 17:56:02 -0400 Subject: [PATCH] Add licence --- LICENSE | 21 + main.axf | Bin 56661 -> 0 bytes main.axf.objdump | 2143 ---------------------------------------------- main.c.o | Bin 18928 -> 0 bytes main.srec | 434 ---------- 5 files changed, 21 insertions(+), 2577 deletions(-) create mode 100644 LICENSE delete mode 100644 main.axf delete mode 100644 main.axf.objdump delete mode 100644 main.c.o delete mode 100644 main.srec diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..aed8e5e --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Jeff St. Jean + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/main.axf b/main.axf deleted file mode 100644 index bcb102b46db18be7010271f658f2400650e50f59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56661 zcmeHv4Rl<^eecY@cjdLb$ScVPAq-v_nK;CjR<uNUQ9?|c`a@BBTEg*OWZ;}+R*6z zesk|!T??fr=bd-nJMWx3$Fnp4&-u@P{xf&x-jVOy*nE?eQs`ue6@t(T{H#T}V@e3a z5P`KK0{jY5Ar>mSNQ3C4*Q$j`Unayn!f6NT7rqC45BMJNJ>Yx5_kiyK-vhn}d=K~@ z@IByr!1sXf0pA0@2Ye6s9`HTjd%*XA?*ZQfz6X2{_#W^*;CsOLfbRj{1HK1*5BMJN zJ>Yx5_kiyK-vhn}d=K~@@IByr!1sXf0pA0@2Ye6s9`HTjd%*XA?*ZQfz6X2{_#W^* z;CsOLfbRj{1HK1*5BMJNJ>Yx5_kiyK-vhn}d=K~@@IByr!1sXf0pA0@2Ye6s9`HTj zd%*XA?*ZQfz6X2{_#W^*;CsOLfbRj{1HK1*5BMJNJ>Yx5_kiyK-vhn}d=K~@@IByr z!1sXf0pA0@2Ye6s9`HTjd%*XA?*ZQfz6X2{_#W^*;CtZzBM(%apDg}IxjiUE7jiFh zAMy}#^I{<$oi9WR^{a$<>u~#IQHa|M>Da0_W&2I}D}*TB*Fs#TAi|kKD6+U1&Mqzn zV~dN1_*l-091svM6=FwW9!g^-2QB1z90J zRxqNOaufWf_`*4JYIimSUB3dIZA!7Hu&Cu=z5v(^h#yIe!O@F_xFP(R{Kc^2_O%s1 z6{4j8lb>A?nJg|jJ6Q~hN1(T*AkJpW!{N!IrD3su@wcX@-}>eB^t!XvLZmN)va?Hz zXB=D*{ah&~iz}m(MKju-EfH-6wD(Xj_RVuwOxNeCfEU31+w^ql!fYm23EVFr`x|AZ8^Kvoz5;;*^8Zq)BdZIYK{6Nk^xh`tv$5$W7 zjYOy4_)0XL3ql8DB`Q|E8HS#)(-#3--?>GiKe2*2HIWUsu#b!1oF@)rUX1745m$)I z>M-P^!j3nN-RsvtCK|(hI(F_&*dBy^R%}&q5p~Cohc#De&{ZLpbgmJnaEP#P%jiF7F(7LjL{4ADoKT$y<6-1F#r zE&3;5Q%HRFTq*D+h^b@12iRuxF^Be;OFImjj7{Xnupa#n_%;Z6310`HqXquPT2&o} zEMqGeK2m(=S@`;NtdMR=X9L?ml|6nH;7APX+!6TjL@|th$jo?l5&B?=ortf@pS(Cd z{p>l+la=uA`Okdw9Oo?X1q=3l(P=-3_OWJEhZ$R-zjM7krtRWbu}h2>=V7e^t`g&1 zDI@8M_Q?3+#~|zFdl)dselB^A&y0Lb$se30zu%G9v13g!b`GC==W4r;Y0N>f{y=t~ zc;egwF>%ftFILu$H!I5V7E87~eY{|od?uY=6G zZ3PqfAJm&g`c310P+ti>6$R*!+P{6#V`?2l99CPn|$w-qVFPx`3@ZBY_CYGwS?;;*CeiKGM34m6=!ox z+p#vbA1PwoFwbY!#?Ss5YoC}Xz9Rm{T_0!jd>T9!c)kaoxpdqQdJuH3Wn2$wPXzv4 z2wQhLw*DG1KUaPgyyp4$t1j7R3p@|PnZi#n=9O1x3)AZs7JhZ3fjJI;psY|h zLybSfg6nUgrA>b=v z$C4#t`KTjz9=f>ZFF_3bKHB;+@`K1HkP{edDPSk+`x+*(79Bgc4Y-$)mjn0CN6|)0 ztRPQk3dbKu{V3uymMNr%4(5lj=F&Hd(1&f{743K?h=avTP)|8DuCZ3^!Q#I5gIF^& zg%Z&C?4O6VdlTyOu$I4}Y!GiP0RGpg{{k7?jJL``x1ztV<|g-(7W7lrg6!8plkNBC zORzuvSF8ztk3I(5j{wf({sHpy#N$|R9ypg4j}@oe?YTm^r4g*n(M;|;|Bg1&ncM{E zoCBmW21xr$($Lng;eW`Qho}R-@C<2mwWU=P|{7%t5}0-M-}k5&}^=`*OazYD`9 zc|M0s)Nco#eg{AB!TkNG2TD>P4Y3z?zmp8tA zzPt(fX82;+N<6o37{)XEz?2L}ri7@m%V_6UFSXa3{e}z|j6k|DZB1caX|FJ3dBIq` zzc9V%dF8slH# znkmF;^r;3mM&Pys2KE>g--aLeV;teH9Q{>^KC-U{O7bJ#C1s_E(!NTr&C^x|*MjOa z`ew-Vm82WBk3esFHR=uY$$i$i@+WDHE6+ndQ{HsLd5QJ6JY9=%T6=w# zCC9NL3_rFvimB7|i`=qyoaZODU04XZj2u;X@^d}Wu+dO%kAoP(+Ly~q$cw2A+k@JS zc_;M9)lG(RO;i4o2-*tnDy)1dQxlFfE|VeD&tz)g+ht*a`U{yF_;#6vI{doqRHQL_ zs-`u2;KNNg=ZI&^SC41IFJy8N?#bk?Le%&|mSf3&L@>_f4(+fwnri^<)WRv{L#{=c z4=l-^{P2=+2r(KGYszn=zas~-aw?KdTky-G)8*J_l^ScnYmDbkR*dJ4Htf$DG6er_ zFYFIz8osb}f5Uh*(;yK$_eEaF|2yIezIn)yZEjpCpNeR~cs`WhzbGR!*5TYqi~Ozm z>FDqah>z#N^E_i-`5yRduzp@Dh6{!i-vjLx#7{nrxNNAf`^r9dV9epq{Nd=aobH#3 ztLH^NjaWhaV$E+fa3(Dc!9F3@zy_Iz-Jq45h&h`U-k+O7?4A5@2xr*UIQOn8$9R?+ z&z}YVE0x&4S4$B=zlD0P3-(1uD;bYMG*lY0q4FZ|Qx=G7#uV32=wa+uBffyol=GRP z_1tHr-I!$EMBnMBxyI#sH7<>6TreiNw3W#%0Zy*Y6lyRgk=5gf{ZJljdX8i9iO3)1 zjlWM=g67`d)pF+Jxw&iLXnj$MD@Ti|e{S@lv>eIQEFPtvNbElf)i08~h z)S=f0+Q%{E_}v$IvA#b|4n@*m6w4hxwLO^Gx&TwZYl5a2>%JNc>2@J5cyAo=34vZX@va zdx>Mk8=UjJKEw05^exb@!!zZFQxEefmyZQq?RtQNu(fu-WM0?(^_ z?%}xqchB(s0G@xeRfuc>=eV~nEyFt>oRfk$58*6O#Jh)rm}<%Me8+Pg&%iJE?$F&&6oUBXK#U=PRh zGHq^Mhx4Dn84`6lglAZq&-@d`O&vS~++GNsK2cnQIbpRtj{WCt`9qoeTbH&RYz=IG zs0B8E^!@OIz}{va;yJ*%6Wf6Kk}6m&8}rKm3-OV{&k-Y5^zmXKa#t4fCT~RU&+>db z7Of~^Y%8tU{eiKt0XMgC?^;?_i$0X2JyDUfjy_(5`K5;)81?F)I8jW87Z>$AC+eOL zeP_{*z&RW5sdC>z-D}J1fQP~y!|m#v%k$a!ZMI*vo*y%g#f)B_W2u{V36zL!jD1@H z&xca(t3>ou_L#SSUis>4XoE5(r?GcO++ZK(`kpZwcHSw4@ZM?j^z>yqe%sNhFJjYp z9eAQGlf@|BaaplMcEkG9IcxjDFxIzHD|(IFUm4qx=lQvVu^hAeFa{m_klD^9z(<|7 zggCYsdo5Y3;V@u6FC&@4?_j^CZCV9;xW~351@E`Yh2S~23NdGeCyRWqNcvU65G;8H z>w~R*?UTil_C)rk4%phVu>y0jl5t=~zlM03$ZOwP;&%0pGX|NMBZJua(Qhj^>26GS#*KeYq!GhsUd>8qY2LWFRvalVU z9=%kEcagim``e@&JhHzH|NjXd-L0}U-}x_VEBfE~@jnIx_QZbjJ>Yxb|AGhj&4$fj zzls%^2~P>6T>#p#N!IB>Y@i*wY(Yh?$L{WB%w94+=ge5c3M2=njhyDkIw3gcqCZj{h?;}UJlQ7Wp^wwSUc z4Dx*0-!UX)R1#1Ar;(ZD-C!@h8b2~hS_HYY9Y)*WdV=d*YMkH#7vy7P0S?a&v+=M9 zVJk0W1K#zE&m)VAd5v7x7NmBP2vzg z<^RM_)oXwrCCf$fyF_l6R6w33XlDaa?+0Kj-|i?6Dfw1HLzFF-&yewUNtv;L5dV!} z06^)#u-)5f$ghCAluu>(5mH(%{W|o@ove>t4By;Arh4EmhHn(G6+nm^1o=_Y+6nG= z!Q%wE4Uu<}`VK*E!ECSsYRkTlANKP5pdkhfY+TBI4BT4aexh*OjXjETFB}yN*c61! z3|3TA`6Y5U`*92Vb{u&%l*lIhgjD~wkf#-3_z;Nn7h6N5K`=^_dMWf8^4%01#81^3 zhqLPYP6fP+6qS5cB|Y08wkzBBuh6zeR)gNHR7fe}&Ai;>Y&*p5yBcwOl?yfdUlyd;f-UUBb zl{O&Wvs%Cw1eGX@Kp~mv$~l?1=ENMPIT@e@3qm)3m&hRcVU|f+$x9gQ@VB7&icO%J zVOGzk(|f`GT~rq@2X-l(2wI)gmo_M~RL0O1bG6jBIBX=o7YOrOsjqd|$lqm?*GqlR z!$uy2$IKfgFMjaChmHIU#Tz9NV-9kO{0SSnMG`ULAjjahOCKPHtsM7_f09Nv8XjA7k42f;kwUZ&P;5JH~o62Q@ zhylq4!`NWl4zrXC!smgZk$g-waM1{EW&}p5^GQiwUZUAUeq4WW2KJ;L*em{xd|x1# z!8nJ0%3=5-4SgIEp;l5A$WX3|LKD}ls(q+%4MIbFUu7s4Fs1F&$?iK5*ohM4!ghTs^O~cl1 z{=2m#{vPZ<>JVRc1ozm2aC1N{})3rxHTzTi%JZB-K836kqx3M1{60QRU1$# zWms-Ph3kG*3KjJbOgoseCs3h0JAuBkKTiSmbD;jzwi(ZMXTYjXgTg0a*>jH6tF{z9 zR5bk;S0(pa^5PJdz<~KW-mX=5gR7=>;|4tW zh+TFqT98$$`ZWZRyi`@cL0#3V`d64I@-kKZ7L_eg)jP?1xvENPxPsNn&l9_p)qu&b zc2}~shXB^{2ltn(d0z#l@{g#q=3d434)#)&A0R?a(}20-G9Z4RO*x32M0}eTUAY{; z0rNOiSMFuVU&IGO!0ZLbl|P3%X4Te0wzY;H7=U?}EW;TnV4kA~-T+T!5)B3x(!79~ zqJBPG17SWB17;r)6Qq^fh#?@BuL6g0=^xULfVqp90F)S)-38Uatc6k4gQzdEM)AA& zb6{Maq>>6+4UQ+kfdi9VURJrlEW50%99w}f>^Ew~f(17&FcEyFQ^l)ot5PmlaQ%W0 zFTf=jbX1r@0-GzZ!+@6nESmx6UF?E5NL5O+Y({c^om>~PW#1RtT*)?LC670TsI@fU z${Da@fd@n*p|uxKFH(wBt22r|Ybz>y@PI_e8Y-!E;X^np7^M$4LPuB=utp}(`BEF2sH^gSt4EZYrwnSoN@!y`Fj=Ej|;;vLjk6pvDJ~2Ez zI+Pl*;oiiUUFq*g4%Bs$83AVO!elY)LaeNQym(-W*|KF}Zx%P6@; z{hrurc6HaAwNH+Jqo?<-w}VTg=Dpq5f+S12)vr1BEK7wl#}26amf)SQoXFgI69IEf z@%5YYpESE}i2`NR^JjC?ytJ-JXjN~dD}A0##Dop8mo(qnzsS6- zd(GCBtIhcbwwOC_sZS=inpbsS(-Uo8wY7OXxv_Q4`=hJ2oB2;3XpZ)*u`KgA;1+XlT@tycr@n`{Wb>`6F9+F|!~>IW|LvBydzdg}7#;+c z!2OqL%#3|yp^MZz8~UAI=lkczvZ{%agMs_42h2mpr=?5h8;e7V9-gocn)id&ShfNa zi^51eo^L?eSQZrc9;H%x1~*|G1V0FTpUuRRGx@+j&UQ4OC*_#Jn8fH#zY;7a#6Zt8Z6!zic~a^HB%q zNw@-=a@1kBcmB0-j?I>#4NpTRjSBmrV~lm;Ev)SOep8=rD!XpBKE{z{+28#(D1G5^ zYr;IJ{q~;zgZCWTZuYcIo1(x|{t0CG<$>QMKLozD*a5L!j5kK-y?rF@IQUw?cS!NM zaV_HU&XG0o;lxNH<E7cnxN#2_fU>WU8@mUm44s;GD`V#}G z_(-BJ(V0pP4u~xq?}!hjhDB4$ZShpca1Ydx6>8%{$+1MA=uQrgq~gP)1EO=VZ*X)t zo)UZGBVbL5z79}EI`-f+WSc`1x|4T{k>0`KRD`dvscZLWcXwh~(3;fVp@e9;t+l0j zqub2x!Qrk1)b=JjKR%Ec8BtG5^sJ)`y1EC^T4JC}@cAhE2fGr2rmg=_d~@q|n$h`j zks6Hm4c=pmDZ?Oq_h@1yC3g3XCd8f&{tk_f^zI%_r3MG$o7-AN_wZnUyf@j?>o_Kv z5}P*ejPFjSM#LQ(o13?N#I~<@@SgYxyp|ZS^`}H~B%bI>rji3aqPuUfBPB-q2GOam zj#P&-dat;-b>kf(G0?HQFF`|R9{HlN`L>OsM``Oyjtup6?2QkM_KT+Lcdc3T!D||K zbqx2fg2z^MB^sh|_dsfRu+R0=NTP>hM?2TV@e@_!Hs*}QNU~=j(G}_J#p|Swt}cxF zh)53XNerhjI*rZio3@D20f&hLGc#bL16_%3ar3RWMVcaO>pobwM%V)e!@Ck=Zu6a^ z!^3vy*k+8WVS&F>qaz5ip7>yQH-nKQJ~W)zlN=l!K^Q4!PrQ-bHQWKOI^Frmrp-Ix z6b!01H*N`frolG49$(Vxzp-j*$sE)^BroB+di7G#j(HvGEDrnb&d$>S!Q+BQSop-J3(5WQGD zJXSIymi%J*FIEoYtB9&xHmM~PIb~zV#Hc1~Eo^KTGCRn!-L8jOX6-tjTXyP2!4=#P z(Mgt%BIAk>-t0}X`ji6q5M=c<@b_lO$T zfmslKh)e@n*5Vn1dJt8WviLoZj1gc#@`WQnhF>a%?JP9IcDDs$R@hoqxzcHYWv^YY zf}l!k0ml?B>dKR+&*oEQ+OE465}t7AEDzari{+GEclGn5<8kCtu??T)mP{VAjs*#4 zkS}s^tw7^OFIxn*tOkc8m$*$M3T!QU}DL%n*uoIah zI4i)hEY7Ox9W36lu`DPh#T{CPpVVxbwi(7YO@)53ND1uJs2{tHwCP4n@$fVEd8BnS z3h$L$gvKl}a#l>TW;ffawalZIk}F##sp-eaQna$5Hd{#Rbvdfw#%)YSvrCqmJ@)!rat84?{O*T%I zyX?Aa_ypiX4xQ!Gv*=TR&mqIF=TY#JBdTE(E9`0%#U{I|eLVy)g-rWc^2msKm?dAc zdF>SKT$B1&AHUw1nk^T}Mak zL^=(4HtNeZm&$6&pDhjKPRbtJB@+6gMt3sk4uM%7f!nOr4xq4af(GS%w zac!y4ws>gTDmHWonciagv|V>&h43>Do#k~n5`)*Jp8@VwWO(Lv6zA+J3w~8H#qjIu zL+DZfV9~9f1)b~|#dVWEM1?1DLtHz#1my}P7`$_m6}AT#X+eT9WSYye*RH#vPh1XjkVrV8VNI#8SBFazWOO`vb)Upp5 z3bhJ8m$eR{b<aSIZ4j)Q#-zPj&1@nHsjsUR{H5O4KEKK61zux z;vK^s13d{BOb*~kr%AhaN*Ge)j_Ckee2e`j#O$m ziGv+l_^lH@7r?Cy3@4?rn&XVElU{pjfFK_pR*L@GV+_5Sr0X95ihPI)!S6b+gYW4X zHdkhi!-r>p`djs*kJ}5sWCP1NAuzDSX8^3M81dyJhZKz zI?2BT-x0hV*NL_>aWkUpgb$+8CU)LQn$`nY*GYQmOG5mK2cfGR5?v?XzEgOrYNr9# z)imnliy||{z9Pg)O$1CD^QW8=g-W@v;jS>|hEBRIxb*^k>;8O3H+i)_t_bk)5OGX{ z;Je1Is$Z=SuesD%XwnzK_hk*B)O;*G?h>^xV*80d5~BP;WOgZxOp`gbI-U6*F6QuK zf|Im94bN4YPOCa@O{ZnXACu{{p#M(<)A6?czZXnA5xvQrnGFhUs%W0!z|ubhpk}IG z%%DtcyuHcfXKzn3-M5c6(!{3Rn@l_?z5TYtKTqSsnZ5AAJ z*Gczh#Vmf_;;@rc_vAIC`C}Jr3_U8u%$E-N$Dr$^ z$A{mT>}1EoGww98VLg92!*~aPFyB>E|2F{ht9i_UzYUmQ_BEaD^K-nNEb(2?2{U9l zo}}{&znuai3p(L;ASC?v6Ttl7Z}SJ#RaSoQ*YK6FonQAgTnCt+=QYev{QNqv;Tr+- zd%kU-?LV%6b}AKHLDxz9=Q)o*J~juvmqDhI6oYfn+u2En{>eG${AQu)tj64hxK!}I zm`>Ur{@sn8?C}ZV8-*9{^~m#1mrj(Y=ymRRnBudb^Y2Plz(IOEGA`X7pP9cM!T&Zi zOCP(=ZzOiI?Rj?=eAHvlAI~Ar?R+D+?s5A};Z6tMog5Bl$gS^VDtoPoVO?vnov!1{Sd``!kuzv+{1 zVN1sNqMCC2E(ZLPM}9eAj)~S+2lxh$e{TTH^~RPr#WukD+adLL0M;oCm@j+uexU;W z|0H0q|33wo^K}D+D1QR*bLc;|@e2MU!1^0G>0bw|6aDd5fb}-4reDwmR?N2!LJ%IIhVe&r!c*qk!#{ug^ z|4ahb`!DkUC&23eWCK$e&&yMQz44%86YKFipp*aQS^WP1*gHSo0<2R6m7fttaJM`0 zZ{R@bjju}pXJ9X%r_{d^Fz>z*E{8qW06q?%#vJ-qz^5=?&pGg&fb|^;%HIWe0`wIQ z{T{$ixbb6&{eX3fpmGB6m}kE5<%&+6lT(13VIP-t)qlYHZUNy}9R3*S9RD8!_QumM z0i)|GalGe4m)^f}e&P>})s5n2a8Tb>9y;T9HDGUl*8%2!;ke^Zb)ytMUhBy3oF)G; z!1_)D^(O%9I~Ihw_Hlp0m;Qu#@0ibTJzqZ!*xTOc0qf@{?f)|1Q^>mgDb%ybQOBOY zMtuzSt#Dxe@xH#x!S;ARnR6)S(C6bI$>#;zC;f5{ybN#@u)ZThdLv-HK87K+8Sqn( zWum{kD3A760wzE2bbI4{Kj19r+Fsh`jn6Lu=6*@{@5_L_@%7DF{4dXf`G??MfBhV= zz9T_<-UZwRAL#yuaOBi?en?*mI1Af3=LxUz97!X<-3-{P|91g%4J3{H{j>PT0ehcM zhiB1+`d*KV6obQcgQB)W)OO)R_CR7d*||#H%mCKDkkE;%eX6! z{euHZ*xgxNFyX$*8JL_qAM<4DYcC6w{!Fu)K zzrJ%gm1N7qsgV>eZNTVweB-A0O|9#ym|Aj@iym5?ojrRBN6@$C)g8w1Db}hs`6x=3ArY;b3KKR>rA!dEh zR#!IOa}mY4@Zx;BpZgjCvH!t!2hVL0^=8y_WoFjJ0@&Ig$IXqA(cL56YZxO$^pEy+ zCHHs`-N~_$?h%es2VTJ@Qy3$sNcInn4krNHmALaI-(^G0b@cVcUDzEZIvCe{29j#L z?ZMu7>jrnI?fU?;&;1To%+$K&c1d%PRt2*4gnb+f}2cu$aN`|OKc zJGM5(ZGWr4y6}#LhZT2L)H1AqDub(2b{*Hg z_9z4Aygq~8kKl?;$3RyfE>j`gFSx#AYfvj$U$P(9sCXwwUEFf+u~33;cRgTVE7OaC z6Rf;~7RM^LyVEmq9rK*AvsY4%o2^gxsT*$AvNLN1FzR|1uFL2y>kD!WAZO`}_a~sv z9c<^ei-XWtwc~r#5)VGlYG*Gs>T8D0Zd*CxX!FLKGI{fkt+*a$uZtLDE|fcXrRlxb z*)CA0E?LZhgaBL=mK5@%g-u6)|fI%DH%;behN)QZ4sknWnG0-mb4D0J-U zNcO3FhFBKt`*|0PtP@3!GMdauXWyUH@$I?!XPaW1hj4>JM9M9D;;qgy(1gvv2)0YJ e$I5O-b=-6PH0~}R&Njzcd$?sl40YpHsrX-*1G^6Z diff --git a/main.axf.objdump b/main.axf.objdump deleted file mode 100644 index 8e3e1a1..0000000 --- a/main.axf.objdump +++ /dev/null @@ -1,2143 +0,0 @@ - -main.axf: file format elf32-littlearm - - -Disassembly of section .text: - -00000000 <__cs3_interrupt_vector>: - 0: 18 f0 9f e5 18 f0 9f e5 18 f0 9f e5 18 f0 9f e5 ................ - 10: 18 f0 9f e5 18 f0 9f e5 18 f0 9f e5 18 f0 9f e5 ................ - 20: 60 08 00 00 64 08 00 00 68 08 00 00 6c 08 00 00 `...d...h...l... - 30: 70 08 00 00 4c 15 00 00 94 09 00 00 74 08 00 00 p...L.......t... - -00000040 <__cs3_reset_generic>: - 40: ea000026 b e0 <__cs3_start_asm_sim> - -00000044 <__cs3_start_c>: - 44: e59f608c ldr r6, [pc, #140] ; d8 <__cs3_region_zero_size_ram+0x30> - 48: e3560000 cmp r6, #0 - 4c: e92d4080 push {r7, lr} - 50: e2466001 sub r6, r6, #1 - 54: 0a00001e beq d4 <__cs3_region_zero_size_ram+0x2c> - 58: e59f507c ldr r5, [pc, #124] ; dc <__cs3_region_zero_size_ram+0x34> - 5c: e3a00000 mov r0, #0 - 60: e3a01000 mov r1, #0 - 64: e515200c ldr r2, [r5, #-12] - 68: e515e010 ldr lr, [r5, #-16] - 6c: e5154008 ldr r4, [r5, #-8] - 70: e15e0002 cmp lr, r2 - 74: 00822004 addeq r2, r2, r4 - 78: 0a000009 beq a4 <__cs3_start_c+0x60> - 7c: e3540000 cmp r4, #0 - 80: 0a000007 beq a4 <__cs3_start_c+0x60> - 84: e1a07002 mov r7, r2 - 88: e1a0c002 mov ip, r2 - 8c: e8be000c ldm lr!, {r2, r3} - 90: e8ac000c stmia ip!, {r2, r3} - 94: e067300c rsb r3, r7, ip - 98: e1540003 cmp r4, r3 - 9c: e1a0200c mov r2, ip - a0: 1afffff9 bne 8c <__cs3_start_c+0x48> - a4: e515e004 ldr lr, [r5, #-4] - a8: e35e0000 cmp lr, #0 - ac: 11a03002 movne r3, r2 - b0: 0a000003 beq c4 <__cs3_region_zero_size_ram+0x1c> - b4: e8a30003 stmia r3!, {r0, r1} - b8: e062c003 rsb ip, r2, r3 - bc: e15e000c cmp lr, ip - c0: 1afffffb bne b4 <__cs3_region_zero_size_ram+0xc> - c4: e2466001 sub r6, r6, #1 - c8: e3760001 cmn r6, #1 - cc: e2855014 add r5, r5, #20 - d0: 1affffe3 bne 64 <__cs3_start_c+0x20> - d4: eb000503 bl 14e8 <__cs3_premain> - d8: 00000001 .word 0x00000001 - dc: 00001690 .word 0x00001690 - -000000e0 <__cs3_start_asm_sim>: - e0: e28f103c add r1, pc, #60 ; 0x3c - e4: e3a00016 mov r0, #22 - e8: ef123456 svc 0x00123456 - ec: e3500000 cmp r0, #0 - f0: ba000008 blt 118 <__cs3_start_asm_sim+0x38> - f4: e59f2028 ldr r2, [pc, #40] ; 124 <__cs3_heap_start_ptr> - f8: e59fd01c ldr sp, [pc, #28] ; 11c <__cs3_start_asm_sim+0x3c> - fc: e5920008 ldr r0, [r2, #8] - 100: e3500000 cmp r0, #0 - 104: 11a0d000 movne sp, r0 - 108: e59f1010 ldr r1, [pc, #16] ; 120 <__cs3_start_asm_sim+0x40> - 10c: e5920004 ldr r0, [r2, #4] - 110: e3500000 cmp r0, #0 - 114: 15810000 strne r0, [r1] - 118: eaffffc9 b 44 <__cs3_start_c> - 11c: 3ffffff8 .word 0x3ffffff8 - 120: 00001ad0 .word 0x00001ad0 - -00000124 <__cs3_heap_start_ptr>: - 124: 00001b80 .word 0x00001b80 - -00000128 <_start>: - 128: e51fd000 ldr sp, [pc, #-0] ; 130 <_start+0x8> - 12c: eaffffc4 b 44 <__cs3_start_c> - 130: 3ffffff8 .word 0x3ffffff8 - -00000134 : - 134: e92d4008 push {r3, lr} - 138: e59f002c ldr r0, [pc, #44] ; 16c - 13c: e59f302c ldr r3, [pc, #44] ; 170 - 140: e0603003 rsb r3, r0, r3 - 144: e3530006 cmp r3, #6 - 148: 8a000001 bhi 154 - 14c: e8bd4008 pop {r3, lr} - 150: e12fff1e bx lr - 154: e59f3018 ldr r3, [pc, #24] ; 174 - 158: e3530000 cmp r3, #0 - 15c: 0afffffa beq 14c - 160: e1a0e00f mov lr, pc - 164: e12fff13 bx r3 - 168: eafffff7 b 14c - 16c: 00001ad8 .word 0x00001ad8 - 170: 00001adb .word 0x00001adb - 174: 00000000 .word 0x00000000 - -00000178 : - 178: e92d4008 push {r3, lr} - 17c: e59f0034 ldr r0, [pc, #52] ; 1b8 - 180: e59f3034 ldr r3, [pc, #52] ; 1bc - 184: e0603003 rsb r3, r0, r3 - 188: e1a03143 asr r3, r3, #2 - 18c: e0833fa3 add r3, r3, r3, lsr #31 - 190: e1b010c3 asrs r1, r3, #1 - 194: 1a000001 bne 1a0 - 198: e8bd4008 pop {r3, lr} - 19c: e12fff1e bx lr - 1a0: e59f2018 ldr r2, [pc, #24] ; 1c0 - 1a4: e3520000 cmp r2, #0 - 1a8: 0afffffa beq 198 - 1ac: e1a0e00f mov lr, pc - 1b0: e12fff12 bx r2 - 1b4: eafffff7 b 198 - 1b8: 00001ad8 .word 0x00001ad8 - 1bc: 00001ad8 .word 0x00001ad8 - 1c0: 00000000 .word 0x00000000 - -000001c4 <__do_global_dtors_aux>: - 1c4: e92d4010 push {r4, lr} - 1c8: e59f402c ldr r4, [pc, #44] ; 1fc <__do_global_dtors_aux+0x38> - 1cc: e5d43000 ldrb r3, [r4] - 1d0: e3530000 cmp r3, #0 - 1d4: 1a000006 bne 1f4 <__do_global_dtors_aux+0x30> - 1d8: ebffffd5 bl 134 - 1dc: e59f301c ldr r3, [pc, #28] ; 200 <__do_global_dtors_aux+0x3c> - 1e0: e3530000 cmp r3, #0 - 1e4: 159f0018 ldrne r0, [pc, #24] ; 204 <__do_global_dtors_aux+0x40> - 1e8: 1320f000 nopne {0} - 1ec: e3a03001 mov r3, #1 - 1f0: e5c43000 strb r3, [r4] - 1f4: e8bd4010 pop {r4, lr} - 1f8: e12fff1e bx lr - 1fc: 00001ad8 .word 0x00001ad8 - 200: 00000000 .word 0x00000000 - 204: 000015d8 .word 0x000015d8 - -00000208 : - 208: e92d4008 push {r3, lr} - 20c: e59f3034 ldr r3, [pc, #52] ; 248 - 210: e3530000 cmp r3, #0 - 214: 159f0030 ldrne r0, [pc, #48] ; 24c - 218: 159f1030 ldrne r1, [pc, #48] ; 250 - 21c: 1320f000 nopne {0} - 220: e59f002c ldr r0, [pc, #44] ; 254 - 224: e5903000 ldr r3, [r0] - 228: e3530000 cmp r3, #0 - 22c: 0a000003 beq 240 - 230: e59f3020 ldr r3, [pc, #32] ; 258 - 234: e3530000 cmp r3, #0 - 238: 11a0e00f movne lr, pc - 23c: 112fff13 bxne r3 - 240: e8bd4008 pop {r3, lr} - 244: eaffffcb b 178 - 248: 00000000 .word 0x00000000 - 24c: 000015d8 .word 0x000015d8 - 250: 00001adc .word 0x00001adc - 254: 00001690 .word 0x00001690 - 258: 00000000 .word 0x00000000 - -0000025c : - -void vga_init() { - vga_set_screen(BLACK); -} - -int map(int value, int from_low, int from_high, int to_low, int to_high) { - 25c: e92d41f0 push {r4, r5, r6, r7, r8, lr} - 260: e1a05001 mov r5, r1 - 264: e1a08002 mov r8, r2 - 268: e1a04003 mov r4, r3 - float slope = (float)(to_high - to_low)/(float)(from_high - from_low); - return to_low + (int)(slope*(value - from_low)); - 26c: e0610000 rsb r0, r1, r0 - 270: eb0002c5 bl d8c <__aeabi_i2f> - 274: e1a06000 mov r6, r0 -void vga_init() { - vga_set_screen(BLACK); -} - -int map(int value, int from_low, int from_high, int to_low, int to_high) { - float slope = (float)(to_high - to_low)/(float)(from_high - from_low); - 278: e59d0018 ldr r0, [sp, #24] - 27c: e0640000 rsb r0, r4, r0 - 280: eb0002c1 bl d8c <__aeabi_i2f> - 284: e1a07000 mov r7, r0 - 288: e0650008 rsb r0, r5, r8 - 28c: eb0002be bl d8c <__aeabi_i2f> - 290: e1a01000 mov r1, r0 - 294: e1a00007 mov r0, r7 - 298: eb000358 bl 1000 <__aeabi_fdiv> - 29c: e1a01000 mov r1, r0 - return to_low + (int)(slope*(value - from_low)); - 2a0: e1a00006 mov r0, r6 - 2a4: eb0002ef bl e68 <__aeabi_fmul> - 2a8: eb0003ac bl 1160 <__aeabi_f2iz> -} - 2ac: e0800004 add r0, r0, r4 - 2b0: e8bd81f0 pop {r4, r5, r6, r7, r8, pc} - -000002b4 : - -short vga_pixel_to_short(colour_t colour) { - 2b4: e92d4070 push {r4, r5, r6, lr} - 2b8: e24dd018 sub sp, sp, #24 - 2bc: e28d3018 add r3, sp, #24 - 2c0: e9030007 stmdb r3, {r0, r1, r2} - short result = 0; - result |= map(colour.blue, 0, 255, 0, 31) & 0x1F; - 2c4: e3a0401f mov r4, #31 - 2c8: e58d4000 str r4, [sp] - 2cc: e59d0014 ldr r0, [sp, #20] - 2d0: e3a01000 mov r1, #0 - 2d4: e3a020ff mov r2, #255 ; 0xff - 2d8: e1a03001 mov r3, r1 - 2dc: ebffffde bl 25c - 2e0: e1a06000 mov r6, r0 - result |= (map(colour.green, 0, 255, 0, 63) & 0x3F) << 5; - 2e4: e3a0303f mov r3, #63 ; 0x3f - 2e8: e58d3000 str r3, [sp] - 2ec: e59d0010 ldr r0, [sp, #16] - 2f0: e3a01000 mov r1, #0 - 2f4: e3a020ff mov r2, #255 ; 0xff - 2f8: e1a03001 mov r3, r1 - 2fc: ebffffd6 bl 25c - 300: e1a05000 mov r5, r0 - result |= (map(colour.red, 0, 255, 0, 31) & 0x1F) << 11; - 304: e58d4000 str r4, [sp] - 308: e59d000c ldr r0, [sp, #12] - 30c: e3a01000 mov r1, #0 - 310: e3a020ff mov r2, #255 ; 0xff - 314: e1a03001 mov r3, r1 - 318: ebffffcf bl 25c - return to_low + (int)(slope*(value - from_low)); -} - -short vga_pixel_to_short(colour_t colour) { - short result = 0; - result |= map(colour.blue, 0, 255, 0, 31) & 0x1F; - 31c: e0066004 and r6, r6, r4 - result |= (map(colour.green, 0, 255, 0, 63) & 0x3F) << 5; - 320: e1860580 orr r0, r6, r0, lsl #11 - 324: e6ff6070 uxth r6, r0 - 328: e205503f and r5, r5, #63 ; 0x3f - result |= (map(colour.red, 0, 255, 0, 31) & 0x1F) << 11; - 32c: e1860285 orr r0, r6, r5, lsl #5 - return result; -} - 330: e6bf0070 sxth r0, r0 - 334: e28dd018 add sp, sp, #24 - 338: e8bd8070 pop {r4, r5, r6, pc} - -0000033c : - - -void vga_set_pixel(int x, int y, colour_t colour) { - 33c: e24dd008 sub sp, sp, #8 - 340: e24dc004 sub ip, sp, #4 - 344: e98c000c stmib ip, {r2, r3} - volatile short *address=(volatile short*)(FPGA_PIXEL_BUF_BASE + (y << 10) + (x << 1)); - 348: e1a00080 lsl r0, r0, #1 - 34c: e2800332 add r0, r0, #-939524096 ; 0xc8000000 - 350: e1a01501 lsl r1, r1, #10 - *address = (colour.blue & 0x1F) | (colour.green & 0x3F) << 5 | (colour.red & 0x1F) << 11; - 354: e59d2008 ldr r2, [sp, #8] - 358: e202201f and r2, r2, #31 - 35c: e59d3000 ldr r3, [sp] - 360: e1822583 orr r2, r2, r3, lsl #11 - 364: e59d3004 ldr r3, [sp, #4] - 368: e203303f and r3, r3, #63 ; 0x3f - 36c: e1823283 orr r3, r2, r3, lsl #5 - 370: e6ff3073 uxth r3, r3 - 374: e18030b1 strh r3, [r0, r1] -} - 378: e28dd008 add sp, sp, #8 - 37c: e12fff1e bx lr - -00000380 : - -void vga_set_screen(colour_t colour) { - 380: e92d0030 push {r4, r5} - 384: e24dd010 sub sp, sp, #16 - 388: e28d3010 add r3, sp, #16 - 38c: e9030007 stmdb r3, {r0, r1, r2} - 390: e3a03000 mov r3, #0 - int i; - for(i = 0; i < VGA_WIDTH_BINS*VGA_HEIGHT_BINS; i++) { - colour_buffer[i] = colour; - 394: e3014af4 movw r4, #6900 ; 0x1af4 - 398: e3404000 movt r4, #0 - 39c: e084c003 add ip, r4, r3 - 3a0: e28d5010 add r5, sp, #16 - 3a4: e9150007 ldmdb r5, {r0, r1, r2} - 3a8: e88c0007 stm ip, {r0, r1, r2} - 3ac: e283300c add r3, r3, #12 - *address = (colour.blue & 0x1F) | (colour.green & 0x3F) << 5 | (colour.red & 0x1F) << 11; -} - -void vga_set_screen(colour_t colour) { - int i; - for(i = 0; i < VGA_WIDTH_BINS*VGA_HEIGHT_BINS; i++) { - 3b0: e3530060 cmp r3, #96 ; 0x60 - 3b4: 1afffff8 bne 39c - colour_buffer[i] = colour; - } -} - 3b8: e28dd010 add sp, sp, #16 - 3bc: e8bd0030 pop {r4, r5} - 3c0: e12fff1e bx lr - -000003c4 : -void vga_draw_current_segment(); -void vga_draw_segment(int segment); -colour_t get_inverted_colour(colour_t colour); -void vga_set_border_thickness(int thickness); - -void vga_init() { - 3c4: e92d4008 push {r3, lr} - vga_set_screen(BLACK); - 3c8: e30135dc movw r3, #5596 ; 0x15dc - 3cc: e3403000 movt r3, #0 - 3d0: e8930007 ldm r3, {r0, r1, r2} - 3d4: ebffffe9 bl 380 - 3d8: e8bd8008 pop {r3, pc} - -000003dc : - for(segment = 0; segment < VGA_WIDTH_BINS*VGA_HEIGHT_BINS; segment++) { - vga_draw_segment(segment); - } -} - -colour_t get_inverted_colour(colour_t colour) { - 3dc: e52d4004 push {r4} ; (str r4, [sp, #-4]!) - 3e0: e24dd014 sub sp, sp, #20 - 3e4: e28d4010 add r4, sp, #16 - 3e8: e904000e stmdb r4, {r1, r2, r3} - colour_t inverted = { VGA_MAX_RED - colour.red, VGA_MAX_GREEN - colour.green, VGA_MAX_BLUE - colour.blue }; - 3ec: e59d2008 ldr r2, [sp, #8] - 3f0: e262203f rsb r2, r2, #63 ; 0x3f - 3f4: e59d300c ldr r3, [sp, #12] - 3f8: e263301f rsb r3, r3, #31 - 3fc: e59d1004 ldr r1, [sp, #4] - 400: e261101f rsb r1, r1, #31 - return inverted; - 404: e5801000 str r1, [r0] - 408: e5802004 str r2, [r0, #4] - 40c: e5803008 str r3, [r0, #8] -} - 410: e28dd014 add sp, sp, #20 - 414: e8bd0010 ldmfd sp!, {r4} - 418: e12fff1e bx lr - -0000041c : - -void vga_draw_segment(int segment) { - 41c: e92d4ff0 push {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 420: e24dd02c sub sp, sp, #44 ; 0x2c - 424: e1a09000 mov r9, r0 - const int bin_width_size = VGA_WIDTH/VGA_WIDTH_BINS; - const int bin_height_size = VGA_HEIGHT/VGA_HEIGHT_BINS; - int x, y; - int x_start = (segment%VGA_WIDTH_BINS)*bin_width_size, x_end = x_start + bin_width_size; - 428: e1a03fc0 asr r3, r0, #31 - 42c: e1a03f23 lsr r3, r3, #30 - 430: e0802003 add r2, r0, r3 - 434: e2022003 and r2, r2, #3 - 438: e0633002 rsb r3, r3, r2 - 43c: e0833103 add r3, r3, r3, lsl #2 - 440: e1a03203 lsl r3, r3, #4 - 444: e58d3010 str r3, [sp, #16] - int y_start = (segment/VGA_WIDTH_BINS)*bin_height_size, y_end = y_start + bin_height_size; - 448: e2802003 add r2, r0, #3 - 44c: e3500000 cmp r0, #0 - 450: a1a02000 movge r2, r0 - 454: e1a02142 asr r2, r2, #2 - 458: e0622202 rsb r2, r2, r2, lsl #4 - 45c: e1a02182 lsl r2, r2, #3 - 460: e1a08002 mov r8, r2 - 464: e2822078 add r2, r2, #120 ; 0x78 - 468: e58d2014 str r2, [sp, #20] - -void vga_draw_segment(int segment) { - const int bin_width_size = VGA_WIDTH/VGA_WIDTH_BINS; - const int bin_height_size = VGA_HEIGHT/VGA_HEIGHT_BINS; - int x, y; - int x_start = (segment%VGA_WIDTH_BINS)*bin_width_size, x_end = x_start + bin_width_size; - 46c: e2832050 add r2, r3, #80 ; 0x50 - int y_start = (segment/VGA_WIDTH_BINS)*bin_height_size, y_end = y_start + bin_height_size; - for(x = x_start; x < x_end; x++) { - 470: e1530002 cmp r3, r2 - 474: ba00002c blt 52c - 478: ea00003c b 570 -colour_t get_inverted_colour(colour_t colour) { - colour_t inverted = { VGA_MAX_RED - colour.red, VGA_MAX_GREEN - colour.green, VGA_MAX_BLUE - colour.blue }; - return inverted; -} - -void vga_draw_segment(int segment) { - 47c: e0846008 add r6, r4, r8 - int x, y; - int x_start = (segment%VGA_WIDTH_BINS)*bin_width_size, x_end = x_start + bin_width_size; - int y_start = (segment/VGA_WIDTH_BINS)*bin_height_size, y_end = y_start + bin_height_size; - for(x = x_start; x < x_end; x++) { - for(y = y_start; y < y_end; y++) { - if(segment == vga_segment_selection && (x - x_start <= (border_thickness-1) || (x_end-1)-x <= (border_thickness-1) || y - y_start <= (border_thickness-1) || (y_end-1)-y <= (border_thickness-1))) { - 480: e59b3060 ldr r3, [fp, #96] ; 0x60 - 484: e1590003 cmp r9, r3 - 488: 1a000018 bne 4f0 - 48c: e59d100c ldr r1, [sp, #12] - 490: e5913000 ldr r3, [r1] - 494: e2433001 sub r3, r3, #1 - 498: e59d2008 ldr r2, [sp, #8] - 49c: e1520003 cmp r2, r3 - 4a0: da000007 ble 4c4 -colour_t get_inverted_colour(colour_t colour) { - colour_t inverted = { VGA_MAX_RED - colour.red, VGA_MAX_GREEN - colour.green, VGA_MAX_BLUE - colour.blue }; - return inverted; -} - -void vga_draw_segment(int segment) { - 4a4: e262204f rsb r2, r2, #79 ; 0x4f - int x, y; - int x_start = (segment%VGA_WIDTH_BINS)*bin_width_size, x_end = x_start + bin_width_size; - int y_start = (segment/VGA_WIDTH_BINS)*bin_height_size, y_end = y_start + bin_height_size; - for(x = x_start; x < x_end; x++) { - for(y = y_start; y < y_end; y++) { - if(segment == vga_segment_selection && (x - x_start <= (border_thickness-1) || (x_end-1)-x <= (border_thickness-1) || y - y_start <= (border_thickness-1) || (y_end-1)-y <= (border_thickness-1))) { - 4a8: e1530002 cmp r3, r2 - 4ac: aa000004 bge 4c4 - 4b0: e1530004 cmp r3, r4 - 4b4: aa000002 bge 4c4 -colour_t get_inverted_colour(colour_t colour) { - colour_t inverted = { VGA_MAX_RED - colour.red, VGA_MAX_GREEN - colour.green, VGA_MAX_BLUE - colour.blue }; - return inverted; -} - -void vga_draw_segment(int segment) { - 4b8: e2642077 rsb r2, r4, #119 ; 0x77 - int x, y; - int x_start = (segment%VGA_WIDTH_BINS)*bin_width_size, x_end = x_start + bin_width_size; - int y_start = (segment/VGA_WIDTH_BINS)*bin_height_size, y_end = y_start + bin_height_size; - for(x = x_start; x < x_end; x++) { - for(y = y_start; y < y_end; y++) { - if(segment == vga_segment_selection && (x - x_start <= (border_thickness-1) || (x_end-1)-x <= (border_thickness-1) || y - y_start <= (border_thickness-1) || (y_end-1)-y <= (border_thickness-1))) { - 4bc: e1530002 cmp r3, r2 - 4c0: ba00000a blt 4f0 - vga_set_pixel(x,y,get_inverted_colour(colour_buffer[segment])); - 4c4: e28d701c add r7, sp, #28 - 4c8: e1a00007 mov r0, r7 - 4cc: e895000e ldm r5, {r1, r2, r3} - 4d0: ebffffc1 bl 3dc - 4d4: e59d3024 ldr r3, [sp, #36] ; 0x24 - 4d8: e58d3000 str r3, [sp] - 4dc: e897000c ldm r7, {r2, r3} - 4e0: e1a0000a mov r0, sl - 4e4: e1a01006 mov r1, r6 - 4e8: ebffff93 bl 33c - 4ec: ea000005 b 508 - } - else { - vga_set_pixel(x,y,colour_buffer[segment]); - 4f0: e5953008 ldr r3, [r5, #8] - 4f4: e58d3000 str r3, [sp] - 4f8: e895000c ldm r5, {r2, r3} - 4fc: e1a0000a mov r0, sl - 500: e1a01006 mov r1, r6 - 504: ebffff8c bl 33c - 508: e2844001 add r4, r4, #1 - const int bin_height_size = VGA_HEIGHT/VGA_HEIGHT_BINS; - int x, y; - int x_start = (segment%VGA_WIDTH_BINS)*bin_width_size, x_end = x_start + bin_width_size; - int y_start = (segment/VGA_WIDTH_BINS)*bin_height_size, y_end = y_start + bin_height_size; - for(x = x_start; x < x_end; x++) { - for(y = y_start; y < y_end; y++) { - 50c: e3540078 cmp r4, #120 ; 0x78 - 510: 1affffd9 bne 47c - 514: e59d3008 ldr r3, [sp, #8] - 518: e2833001 add r3, r3, #1 - 51c: e58d3008 str r3, [sp, #8] - const int bin_width_size = VGA_WIDTH/VGA_WIDTH_BINS; - const int bin_height_size = VGA_HEIGHT/VGA_HEIGHT_BINS; - int x, y; - int x_start = (segment%VGA_WIDTH_BINS)*bin_width_size, x_end = x_start + bin_width_size; - int y_start = (segment/VGA_WIDTH_BINS)*bin_height_size, y_end = y_start + bin_height_size; - for(x = x_start; x < x_end; x++) { - 520: e3530050 cmp r3, #80 ; 0x50 - 524: 1a000009 bne 550 - 528: ea000010 b 570 - 52c: e3a01000 mov r1, #0 - 530: e58d1008 str r1, [sp, #8] - for(y = y_start; y < y_end; y++) { - if(segment == vga_segment_selection && (x - x_start <= (border_thickness-1) || (x_end-1)-x <= (border_thickness-1) || y - y_start <= (border_thickness-1) || (y_end-1)-y <= (border_thickness-1))) { - 534: e301baf4 movw fp, #6900 ; 0x1af4 - 538: e340b000 movt fp, #0 - vga_set_pixel(x,y,get_inverted_colour(colour_buffer[segment])); - } - else { - vga_set_pixel(x,y,colour_buffer[segment]); - 53c: e0805080 add r5, r0, r0, lsl #1 - 540: e08b5105 add r5, fp, r5, lsl #2 - int x, y; - int x_start = (segment%VGA_WIDTH_BINS)*bin_width_size, x_end = x_start + bin_width_size; - int y_start = (segment/VGA_WIDTH_BINS)*bin_height_size, y_end = y_start + bin_height_size; - for(x = x_start; x < x_end; x++) { - for(y = y_start; y < y_end; y++) { - if(segment == vga_segment_selection && (x - x_start <= (border_thickness-1) || (x_end-1)-x <= (border_thickness-1) || y - y_start <= (border_thickness-1) || (y_end-1)-y <= (border_thickness-1))) { - 544: e3012698 movw r2, #5784 ; 0x1698 - 548: e3402000 movt r2, #0 - 54c: e58d200c str r2, [sp, #12] -colour_t get_inverted_colour(colour_t colour) { - colour_t inverted = { VGA_MAX_RED - colour.red, VGA_MAX_GREEN - colour.green, VGA_MAX_BLUE - colour.blue }; - return inverted; -} - -void vga_draw_segment(int segment) { - 550: e59d3008 ldr r3, [sp, #8] - 554: e59d1010 ldr r1, [sp, #16] - 558: e083a001 add sl, r3, r1 - const int bin_height_size = VGA_HEIGHT/VGA_HEIGHT_BINS; - int x, y; - int x_start = (segment%VGA_WIDTH_BINS)*bin_width_size, x_end = x_start + bin_width_size; - int y_start = (segment/VGA_WIDTH_BINS)*bin_height_size, y_end = y_start + bin_height_size; - for(x = x_start; x < x_end; x++) { - for(y = y_start; y < y_end; y++) { - 55c: e59d2014 ldr r2, [sp, #20] - 560: e1580002 cmp r8, r2 - 564: b3a04000 movlt r4, #0 - 568: baffffc3 blt 47c - 56c: eaffffe8 b 514 - else { - vga_set_pixel(x,y,colour_buffer[segment]); - } - } - } -} - 570: e28dd02c add sp, sp, #44 ; 0x2c - 574: e8bd8ff0 pop {r4, r5, r6, r7, r8, r9, sl, fp, pc} - -00000578 : - for(i = 0; i < VGA_WIDTH_BINS*VGA_HEIGHT_BINS; i++) { - colour_buffer[i] = colour; - } -} - -void vga_show_screen() { - 578: e92d4010 push {r4, lr} - int segment; - for(segment = 0; segment < VGA_WIDTH_BINS*VGA_HEIGHT_BINS; segment++) { - 57c: e3a04000 mov r4, #0 - vga_draw_segment(segment); - 580: e1a00004 mov r0, r4 - 584: ebffffa4 bl 41c - } -} - -void vga_show_screen() { - int segment; - for(segment = 0; segment < VGA_WIDTH_BINS*VGA_HEIGHT_BINS; segment++) { - 588: e2844001 add r4, r4, #1 - 58c: e3540008 cmp r4, #8 - 590: 1afffffa bne 580 - vga_draw_segment(segment); - } -} - 594: e8bd8010 pop {r4, pc} - -00000598 : - } - } - } -} - -void vga_increment_selection() { - 598: e92d4008 push {r3, lr} - vga_previous_segment_selection = vga_segment_selection; - 59c: e3013af4 movw r3, #6900 ; 0x1af4 - 5a0: e3403000 movt r3, #0 - 5a4: e5930060 ldr r0, [r3, #96] ; 0x60 - 5a8: e5830064 str r0, [r3, #100] ; 0x64 - if(vga_segment_selection != VGA_WIDTH_BINS*VGA_HEIGHT_BINS - 1) vga_segment_selection++; - 5ac: e3500007 cmp r0, #7 - 5b0: 13013af4 movwne r3, #6900 ; 0x1af4 - 5b4: 13403000 movtne r3, #0 - 5b8: 12802001 addne r2, r0, #1 - 5bc: 15832060 strne r2, [r3, #96] ; 0x60 - vga_draw_segment(vga_previous_segment_selection); - 5c0: ebffff95 bl 41c - vga_draw_segment(vga_segment_selection); - 5c4: e3013af4 movw r3, #6900 ; 0x1af4 - 5c8: e3403000 movt r3, #0 - 5cc: e5930060 ldr r0, [r3, #96] ; 0x60 - 5d0: ebffff91 bl 41c - 5d4: e8bd8008 pop {r3, pc} - -000005d8 : -} - -void vga_decrement_selection() { - 5d8: e92d4008 push {r3, lr} - vga_previous_segment_selection = vga_segment_selection; - 5dc: e3013af4 movw r3, #6900 ; 0x1af4 - 5e0: e3403000 movt r3, #0 - 5e4: e5930060 ldr r0, [r3, #96] ; 0x60 - 5e8: e5830064 str r0, [r3, #100] ; 0x64 - if(vga_segment_selection != 0) vga_segment_selection--; - 5ec: e3500000 cmp r0, #0 - 5f0: 13013af4 movwne r3, #6900 ; 0x1af4 - 5f4: 13403000 movtne r3, #0 - 5f8: 12402001 subne r2, r0, #1 - 5fc: 15832060 strne r2, [r3, #96] ; 0x60 - vga_draw_segment(vga_previous_segment_selection); - 600: ebffff85 bl 41c - vga_draw_segment(vga_segment_selection); - 604: e3013af4 movw r3, #6900 ; 0x1af4 - 608: e3403000 movt r3, #0 - 60c: e5930060 ldr r0, [r3, #96] ; 0x60 - 610: ebffff81 bl 41c - 614: e8bd8008 pop {r3, pc} - -00000618 : -} - -void vga_set_segment(int segment, colour_t colour) { - 618: e52d4004 push {r4} ; (str r4, [sp, #-4]!) - 61c: e24dd014 sub sp, sp, #20 - 620: e28dc004 add ip, sp, #4 - 624: e88c000e stm ip, {r1, r2, r3} - colour_buffer[segment] = colour; - 628: e3012af4 movw r2, #6900 ; 0x1af4 - 62c: e3402000 movt r2, #0 - 630: e0800080 add r0, r0, r0, lsl #1 - 634: e0824100 add r4, r2, r0, lsl #2 - 638: e89c0007 ldm ip, {r0, r1, r2} - 63c: e884000b stm r4, {r0, r1, r3} -} - 640: e28dd014 add sp, sp, #20 - 644: e8bd0010 ldmfd sp!, {r4} - 648: e12fff1e bx lr - -0000064c : - -void vga_set_current_segment(colour_t colour) { - 64c: e52de004 push {lr} ; (str lr, [sp, #-4]!) - 650: e24dd014 sub sp, sp, #20 - 654: e28d3004 add r3, sp, #4 - 658: e8830007 stm r3, {r0, r1, r2} - vga_set_segment(vga_segment_selection, colour); - 65c: e3012af4 movw r2, #6900 ; 0x1af4 - 660: e3402000 movt r2, #0 - 664: e5920060 ldr r0, [r2, #96] ; 0x60 - 668: e893000e ldm r3, {r1, r2, r3} - 66c: ebffffe9 bl 618 -} - 670: e28dd014 add sp, sp, #20 - 674: e8bd8000 ldmfd sp!, {pc} - -00000678 : - -colour_t vga_get_current_segment() { - 678: e1a03000 mov r3, r0 - return colour_buffer[vga_segment_selection]; - 67c: e3012af4 movw r2, #6900 ; 0x1af4 - 680: e3402000 movt r2, #0 - 684: e5921060 ldr r1, [r2, #96] ; 0x60 - 688: e0811081 add r1, r1, r1, lsl #1 - 68c: e0822101 add r2, r2, r1, lsl #2 - 690: e8920007 ldm r2, {r0, r1, r2} - 694: e8830007 stm r3, {r0, r1, r2} -} - 698: e1a00003 mov r0, r3 - 69c: e12fff1e bx lr - -000006a0 : - -void vga_draw_current_segment() { - 6a0: e92d4008 push {r3, lr} - vga_draw_segment(vga_segment_selection); - 6a4: e3013af4 movw r3, #6900 ; 0x1af4 - 6a8: e3403000 movt r3, #0 - 6ac: e5930060 ldr r0, [r3, #96] ; 0x60 - 6b0: ebffff59 bl 41c - 6b4: e8bd8008 pop {r3, pc} - -000006b8 : -} - -void vga_set_border_thickness(int thickness) { - border_thickness = thickness; - 6b8: e3013698 movw r3, #5784 ; 0x1698 - 6bc: e3403000 movt r3, #0 - 6c0: e5830000 str r0, [r3] - 6c4: e12fff1e bx lr - -000006c8 : -} - -void jtag_fifo_flush() { - int data; - do { - data = jtag->data; - 6c8: e3012fff movw r2, #8191 ; 0x1fff - 6cc: e34f2f21 movt r2, #65313 ; 0xff21 - 6d0: e5123fdf ldr r3, [r2, #-4063] ; 0xfffff021 - } while(data & JTAG_READY_MASK); - 6d4: e3130902 tst r3, #32768 ; 0x8000 - 6d8: 1afffffc bne 6d0 -} - 6dc: e12fff1e bx lr - -000006e0 : - int data_ready; -} carworld; - -volatile jtag_t* const jtag = (jtag_t*)JTAG_BASE; - -void jtag_start_request() { - 6e0: e92d4008 push {r3, lr} - carworld.buffer_index = 0; - 6e4: e3013af4 movw r3, #6900 ; 0x1af4 - 6e8: e3403000 movt r3, #0 - 6ec: e3a02000 mov r2, #0 - 6f0: e583206c str r2, [r3, #108] ; 0x6c - carworld.data_ready = 0; - 6f4: e5832070 str r2, [r3, #112] ; 0x70 - - jtag_fifo_flush(); - 6f8: ebfffff2 bl 6c8 - - // request sliders - jtag->data = JTAG_REQUEST_SLIDERS; - 6fc: e3013fff movw r3, #8191 ; 0x1fff - 700: e34f3f21 movt r3, #65313 ; 0xff21 - 704: e3a02003 mov r2, #3 - 708: e5032fdf str r2, [r3, #-4063] ; 0xfffff021 - 70c: e8bd8008 pop {r3, pc} - -00000710 : - data = jtag->data; - } while(data & JTAG_READY_MASK); -} - -void jtag_read_fifo() { - int data = jtag->data; - 710: e3013fff movw r3, #8191 ; 0x1fff - 714: e34f3f21 movt r3, #65313 ; 0xff21 - 718: e5132fdf ldr r2, [r3, #-4063] ; 0xfffff021 - if(data & JTAG_READY_MASK) { - 71c: e3120902 tst r2, #32768 ; 0x8000 - 720: 012fff1e bxeq lr - if(carworld.buffer_index == 0) { - 724: e3013af4 movw r3, #6900 ; 0x1af4 - 728: e3403000 movt r3, #0 - 72c: e593306c ldr r3, [r3, #108] ; 0x6c - 730: e3530000 cmp r3, #0 - 734: 1a000004 bne 74c - carworld.buffer_index++; - 738: e3013af4 movw r3, #6900 ; 0x1af4 - 73c: e3403000 movt r3, #0 - 740: e3a02001 mov r2, #1 - 744: e583206c str r2, [r3, #108] ; 0x6c - 748: e12fff1e bx lr - } - else if(carworld.buffer_index == 1) { - 74c: e3530001 cmp r3, #1 - 750: 1a000005 bne 76c - carworld.x = data & JTAG_DATA_MASK; - 754: e3013af4 movw r3, #6900 ; 0x1af4 - 758: e3403000 movt r3, #0 - 75c: e5c32068 strb r2, [r3, #104] ; 0x68 - carworld.buffer_index++; - 760: e3a02002 mov r2, #2 - 764: e583206c str r2, [r3, #108] ; 0x6c - 768: e12fff1e bx lr - } - else if(carworld.buffer_index == 2) { - 76c: e3530002 cmp r3, #2 - 770: 1a000005 bne 78c - carworld.y = data & JTAG_DATA_MASK; - 774: e3013af4 movw r3, #6900 ; 0x1af4 - 778: e3403000 movt r3, #0 - 77c: e5c32069 strb r2, [r3, #105] ; 0x69 - carworld.buffer_index++; - 780: e3a02003 mov r2, #3 - 784: e583206c str r2, [r3, #108] ; 0x6c - 788: e12fff1e bx lr - } - else if(carworld.buffer_index == 3) { - 78c: e3530003 cmp r3, #3 - 790: 112fff1e bxne lr - carworld.z = data & JTAG_DATA_MASK; - 794: e3013af4 movw r3, #6900 ; 0x1af4 - 798: e3403000 movt r3, #0 - 79c: e5c3206a strb r2, [r3, #106] ; 0x6a - carworld.buffer_index = 0; - 7a0: e3a02000 mov r2, #0 - 7a4: e583206c str r2, [r3, #108] ; 0x6c - carworld.data_ready = 1; - 7a8: e3a02001 mov r2, #1 - 7ac: e5832070 str r2, [r3, #112] ; 0x70 - 7b0: e12fff1e bx lr - -000007b4 : - } - } -} - -struct _carworld* get_carworld_data() { - carworld.data_ready = 0; - 7b4: e3010af4 movw r0, #6900 ; 0x1af4 - 7b8: e3400000 movt r0, #0 - 7bc: e3a03000 mov r3, #0 - 7c0: e5803070 str r3, [r0, #112] ; 0x70 - return &carworld; -} - 7c4: e2800068 add r0, r0, #104 ; 0x68 - 7c8: e12fff1e bx lr - -000007cc : - -void carworld_to_colour(struct _carworld* car, colour_t* colour) { - 7cc: e92d4070 push {r4, r5, r6, lr} - 7d0: e24dd008 sub sp, sp, #8 - 7d4: e1a05000 mov r5, r0 - 7d8: e1a04001 mov r4, r1 - colour->red = map((car->x+CARWORLD_SLIDER_OFFSET), 0, CARWORLD_MAX_SLIDER, 0, VGA_MAX_RED); - 7dc: e1d000d0 ldrsb r0, [r0] - 7e0: e3a0601f mov r6, #31 - 7e4: e58d6000 str r6, [sp] - 7e8: e2800080 add r0, r0, #128 ; 0x80 - 7ec: e3a01000 mov r1, #0 - 7f0: e3a020ff mov r2, #255 ; 0xff - 7f4: e1a03001 mov r3, r1 - 7f8: ebfffe97 bl 25c - 7fc: e5840000 str r0, [r4] - colour->green = map((car->y+CARWORLD_SLIDER_OFFSET), 0, CARWORLD_MAX_SLIDER, 0, VGA_MAX_GREEN); - 800: e1d500d1 ldrsb r0, [r5, #1] - 804: e3a0303f mov r3, #63 ; 0x3f - 808: e58d3000 str r3, [sp] - 80c: e2800080 add r0, r0, #128 ; 0x80 - 810: e3a01000 mov r1, #0 - 814: e3a020ff mov r2, #255 ; 0xff - 818: e1a03001 mov r3, r1 - 81c: ebfffe8e bl 25c - 820: e5840004 str r0, [r4, #4] - colour->blue = map((car->z+CARWORLD_SLIDER_OFFSET), 0, CARWORLD_MAX_SLIDER, 0, VGA_MAX_BLUE); - 824: e1d500d2 ldrsb r0, [r5, #2] - 828: e58d6000 str r6, [sp] - 82c: e2800080 add r0, r0, #128 ; 0x80 - 830: e3a01000 mov r1, #0 - 834: e3a020ff mov r2, #255 ; 0xff - 838: e1a03001 mov r3, r1 - 83c: ebfffe86 bl 25c - 840: e5840008 str r0, [r4, #8] - 844: e28dd008 add sp, sp, #8 - 848: e8bd8070 pop {r4, r5, r6, pc} - -0000084c : -/*setup the KEY interrupts in the FPGA*/ -void config_KEYs() -{ - volatile int * KEY_ptr = (int*) 0xFF200050; // KEY base address - - *(KEY_ptr + 2) = 0xF; // enable interrupts for all four KEYs - 84c: e3a03000 mov r3, #0 - 850: e34f3f20 movt r3, #65312 ; 0xff20 - 854: e3a0200f mov r2, #15 - 858: e5832058 str r2, [r3, #88] ; 0x58 - 85c: e12fff1e bx lr - -00000860 <__cs3_reset>: - *((int*) 0xFFFEC110) = interrupt_ID; -} - -// Define the remaining exception handlers -void __attribute__ ((interrupt)) __cs3_reset (void) -{ - 860: eafffffe b 860 <__cs3_reset> - -00000864 <__cs3_isr_undef>: - while(1); -} -void __attribute__ ((interrupt)) __cs3_isr_undef (void) -{ - 864: eafffffe b 864 <__cs3_isr_undef> - -00000868 <__cs3_isr_swi>: - while(1); -} -void __attribute__ ((interrupt)) __cs3_isr_swi (void) -{ - 868: eafffffe b 868 <__cs3_isr_swi> - -0000086c <__cs3_isr_pabort>: - while(1); -} -void __attribute__ ((interrupt)) __cs3_isr_pabort (void) -{ - 86c: eafffffe b 86c <__cs3_isr_pabort> - -00000870 <__cs3_isr_dabort>: - while(1); -} -void __attribute__ ((interrupt)) __cs3_isr_dabort (void) -{ - 870: eafffffe b 870 <__cs3_isr_dabort> - -00000874 <__cs3_isr_fiq>: - while(1); -} -void __attribute__ ((interrupt)) __cs3_isr_fiq (void) -{ - 874: eafffffe b 874 <__cs3_isr_fiq> - -00000878 : - *Turn off interrupts in the ARM processor -*/ -void disable_A9_interrupts(void) -{ - int status = 0b11010011; - asm("msr cpsr, %[ps]" : : [ps]"r"(status)); - 878: e3a030d3 mov r3, #211 ; 0xd3 - 87c: e129f003 msr CPSR_fc, r3 - 880: e12fff1e bx lr - -00000884 : -{ - int stack, mode; - stack = 0xFFFFFFFF - 7; // top of A9 onchip memory, aligned to 8 bytes - /*change processor to IRQ mode with interrupts disabled*/ - mode = 0b11010010; - asm("msr cpsr, %[ps]" : : [ps] "r" (mode)); - 884: e3a030d2 mov r3, #210 ; 0xd2 - 888: e129f003 msr CPSR_fc, r3 - /*set banked stack pointer*/ - asm("mov sp, %[ps]" : : [ps] "r" (stack)); - 88c: e3e03007 mvn r3, #7 - 890: e1a0d003 mov sp, r3 - - /*go back to SVC mode before executing subroutine return!*/ - mode = 0b11010011; - asm("msr cpsr, %[ps]" : : [ps] "r" (mode)); - 894: e3a030d3 mov r3, #211 ; 0xd3 - 898: e129f003 msr CPSR_fc, r3 - 89c: e12fff1e bx lr - -000008a0 : - *Turn on interrupts in the ARM processor -*/ -void enable_A9_interrupts(void) -{ - int status = 0b01010011; - asm("msr cpsr, %[ps]" : : [ps]"r"(status)); - 8a0: e3a03053 mov r3, #83 ; 0x53 - 8a4: e129f003 msr CPSR_fc, r3 - 8a8: e12fff1e bx lr - -000008ac : - *configure only the Interrupt Set Enable Registers (ICDISERn) and - *Interrupt Processor Target Registers (ICDIPTRn). The default (reset) - *values are used for other registers in the GIC -*/ -void config_interrupt (int N, int CPU_target) -{ - 8ac: e52d4004 push {r4} ; (str r4, [sp, #-4]!) - int reg_offset, index, value, address; - - /* Configure the Interrupt Set-Enable Registers (ICDISERn). - * reg_offset = (integer_div(N / 32)*4; value = 1 << (N mod 32)*/ - reg_offset = (N >> 3) & 0xFFFFFFFC; - 8b0: e1a031c0 asr r3, r0, #3 - 8b4: e3c33003 bic r3, r3, #3 - index = N & 0x1F; - value = 0x1 << index; - address = 0xFFFED100 + reg_offset; - 8b8: e2433b4b sub r3, r3, #76800 ; 0x12c00 - int reg_offset, index, value, address; - - /* Configure the Interrupt Set-Enable Registers (ICDISERn). - * reg_offset = (integer_div(N / 32)*4; value = 1 << (N mod 32)*/ - reg_offset = (N >> 3) & 0xFFFFFFFC; - index = N & 0x1F; - 8bc: e200201f and r2, r0, #31 - value = 0x1 << index; - address = 0xFFFED100 + reg_offset; - /* Using the address and value, set the appropriate bit */ - *(int*)address |= value; - 8c0: e513c300 ldr ip, [r3, #-768] ; 0xfffffd00 - 8c4: e3a04001 mov r4, #1 - 8c8: e18c2214 orr r2, ip, r4, lsl r2 - 8cc: e5032300 str r2, [r3, #-768] ; 0xfffffd00 - reg_offset = (N & 0xFFFFFFFC); - index = N & 0x3; - address = 0xFFFED800 + reg_offset + index; - - /*Using the address and value, write to (only) the appropriate byte*/ - *(char*)address = (char) CPU_target; - 8d0: e2400b4a sub r0, r0, #75776 ; 0x12800 - 8d4: e5c01000 strb r1, [r0] -} - 8d8: e8bd0010 ldmfd sp!, {r4} - 8dc: e12fff1e bx lr - -000008e0 : - -/* - *Configure the Generic Interrupt Controller (GIC) -*/ -void config_GIC(void) -{ - 8e0: e92d4008 push {r3, lr} - config_interrupt (73, 1); // configure the FPGA KEYs interrupt (73) - 8e4: e3a00049 mov r0, #73 ; 0x49 - 8e8: e3a01001 mov r1, #1 - 8ec: ebffffee bl 8ac - - // Set Interrupt Priority Mask Register (ICCPMR). Enable all priorities - *((int*) 0xFFFEC104) = 0xFFFF; - 8f0: e3e02a13 mvn r2, #77824 ; 0x13000 - 8f4: e30f3fff movw r3, #65535 ; 0xffff - 8f8: e5023efb str r3, [r2, #-3835] ; 0xfffff105 - - // Set the enable in the CPU Interface Control Register (ICCICR) - *((int*) 0xFFFEC100) = 1; - 8fc: e3a03001 mov r3, #1 - 900: e5023eff str r3, [r2, #-3839] ; 0xfffff101 - - // Set the enable in the Distributor Control Register (ICDDCR) - *((int*) 0xFFFED000) = 1; - 904: e3e02a12 mvn r2, #73728 ; 0x12000 - 908: e5023fff str r3, [r2, #-4095] ; 0xfffff001 - 90c: e8bd8008 pop {r3, pc} - -00000910 : - * Pushbutton - Interrupt Service Routine - * - * This routine checks which KEY has been pressed. It writes to HEX0 - *******************************************************************/ -void pushbutton_ISR( void ) -{ - 910: e92d4008 push {r3, lr} - volatile int*KEY_ptr = (int*) 0xFF200050; - /*HEX display base address*/ - volatile int*HEX3_HEX0_ptr = (int*) 0xFF200020; - int press, HEX_bits; - - press =*(KEY_ptr + 3); // read the pushbutton interrupt register - 914: e3a02000 mov r2, #0 - 918: e34f2f20 movt r2, #65312 ; 0xff20 - 91c: e592305c ldr r3, [r2, #92] ; 0x5c - *(KEY_ptr + 3) = press; // Clear the interrupt - 920: e582305c str r3, [r2, #92] ; 0x5c - - if (press & 0x1) { // KEY0 - 924: e3130001 tst r3, #1 - 928: 0a000002 beq 938 - HEX_bits = 0b00111111; - vga_increment_selection(); - 92c: ebffff19 bl 598 - - press =*(KEY_ptr + 3); // read the pushbutton interrupt register - *(KEY_ptr + 3) = press; // Clear the interrupt - - if (press & 0x1) { // KEY0 - HEX_bits = 0b00111111; - 930: e3a0203f mov r2, #63 ; 0x3f - 934: ea000012 b 984 - vga_increment_selection(); - } - else if (press & 0x2) { // KEY1 - 938: e3130002 tst r3, #2 - 93c: 0a00000a beq 96c - HEX_bits = 0b00000110; - if(is_editing == 1) { - 940: e3013af4 movw r3, #6900 ; 0x1af4 - 944: e3403000 movt r3, #0 - 948: e5933074 ldr r3, [r3, #116] ; 0x74 - 94c: e3530001 cmp r3, #1 - is_editing = 0; - 950: e3013af4 movw r3, #6900 ; 0x1af4 - 954: e3403000 movt r3, #0 - 958: 03a02000 moveq r2, #0 - } - else { - is_editing = 1; - 95c: 13a02001 movne r2, #1 - 960: e5832074 str r2, [r3, #116] ; 0x74 - if (press & 0x1) { // KEY0 - HEX_bits = 0b00111111; - vga_increment_selection(); - } - else if (press & 0x2) { // KEY1 - HEX_bits = 0b00000110; - 964: e3a02006 mov r2, #6 - 968: ea000005 b 984 - } - else { - is_editing = 1; - } - } - else if (press & 0x4) { // KEY2 - 96c: e3130004 tst r3, #4 - HEX_bits = 0b01011011; - vga_decrement_selection(); - } - else { // press & 0x8, which is KEY3 - HEX_bits = 0b01001111; - 970: 03a0204f moveq r2, #79 ; 0x4f - } - else { - is_editing = 1; - } - } - else if (press & 0x4) { // KEY2 - 974: 0a000002 beq 984 - HEX_bits = 0b01011011; - vga_decrement_selection(); - 978: ebffff16 bl 5d8 - else { - is_editing = 1; - } - } - else if (press & 0x4) { // KEY2 - HEX_bits = 0b01011011; - 97c: e3a0205b mov r2, #91 ; 0x5b - 980: eaffffff b 984 - } - else { // press & 0x8, which is KEY3 - HEX_bits = 0b01001111; - } - - *HEX3_HEX0_ptr = HEX_bits; - 984: e3a03000 mov r3, #0 - 988: e34f3f20 movt r3, #65312 ; 0xff20 - 98c: e5832020 str r2, [r3, #32] - 990: e8bd8008 pop {r3, pc} - -00000994 <__cs3_isr_irq>: -void pushbutton_ISR (void); -void config_interrupt (int, int); - -// Define the IRQ exception handler -void __attribute__ ((interrupt)) __cs3_isr_irq (void) -{ - 994: e24ee004 sub lr, lr, #4 - 998: e92d500f push {r0, r1, r2, r3, ip, lr} - // Read the ICCIAR from the CPU Interface in the GIC - int interrupt_ID = *((int*) 0xFFFEC10C); - 99c: e3e03a13 mvn r3, #77824 ; 0x13000 - - if (interrupt_ID == 73) // check if interrupt is from the KEYs - 9a0: e5133ef3 ldr r3, [r3, #-3827] ; 0xfffff10d - 9a4: e3530049 cmp r3, #73 ; 0x49 - 9a8: 1a000004 bne 9c0 <__cs3_isr_irq+0x2c> - pushbutton_ISR (); - 9ac: ebffffd7 bl 910 - else - while (1); // if unexpected, then stay here - - // Write to the End of Interrupt Register (ICCEOIR) - *((int*) 0xFFFEC110) = interrupt_ID; - 9b0: e3a02049 mov r2, #73 ; 0x49 - 9b4: e3e03a13 mvn r3, #77824 ; 0x13000 - 9b8: e5032eef str r2, [r3, #-3823] ; 0xfffff111 - 9bc: e8fd900f ldm sp!, {r0, r1, r2, r3, ip, pc}^ - 9c0: eafffffe b 9c0 <__cs3_isr_irq+0x2c> - -000009c4 : - -void hex_display(int display_num, int value); - -// displays a hex digit accounting for an offset into the next register -void hex_display(int display_num, int value) { - int address = display_num <= 3 ? HEX3_HEX0_BASE : HEX5_HEX4_BASE; - 9c4: e3500003 cmp r0, #3 - 9c8: ca00000c bgt a00 - 9cc: e3a03020 mov r3, #32 - 9d0: e34f3f20 movt r3, #65312 ; 0xff20 - - // make sure we're using the right offset with the given word - if(display_num <= 3) offset = display_num; - else offset = display_num - 4; - - *((int*)address) &= ~(0xFF << offset*8); // clear the two bytes of interest - 9d4: e1a00180 lsl r0, r0, #3 - 9d8: e5932000 ldr r2, [r3] - 9dc: e3a0c0ff mov ip, #255 ; 0xff - 9e0: e1c2c01c bic ip, r2, ip, lsl r0 - *((int*)address) |= (sevenseglookup[value] << offset*8); // set the two bytes - 9e4: e30125dc movw r2, #5596 ; 0x15dc - 9e8: e3402000 movt r2, #0 - 9ec: e0822101 add r2, r2, r1, lsl #2 - 9f0: e592200c ldr r2, [r2, #12] - 9f4: e18c0012 orr r0, ip, r2, lsl r0 - 9f8: e5830000 str r0, [r3] - 9fc: e12fff1e bx lr - int address = display_num <= 3 ? HEX3_HEX0_BASE : HEX5_HEX4_BASE; - int offset = 0; - - // make sure we're using the right offset with the given word - if(display_num <= 3) offset = display_num; - else offset = display_num - 4; - a00: e2400004 sub r0, r0, #4 - -void hex_display(int display_num, int value); - -// displays a hex digit accounting for an offset into the next register -void hex_display(int display_num, int value) { - int address = display_num <= 3 ? HEX3_HEX0_BASE : HEX5_HEX4_BASE; - a04: e3a03030 mov r3, #48 ; 0x30 - a08: e34f3f20 movt r3, #65312 ; 0xff20 - a0c: eafffff0 b 9d4 - -00000a10
: -static colour_t current_colour; -static struct _carworld* data; -static struct _carworld* last_saved; -int first_run = 1; - -int main(void) { - a10: e92d4ff0 push {r4, r5, r6, r7, r8, r9, sl, fp, lr} - a14: e24dd01c sub sp, sp, #28 - set_A9_IRQ_stack(); - a18: ebffff99 bl 884 - config_GIC(); - a1c: ebffffaf bl 8e0 - config_KEYs(); - a20: ebffff89 bl 84c - enable_A9_interrupts(); - a24: ebffff9d bl 8a0 - vga_init(); - a28: ebfffe65 bl 3c4 - vga_set_border_thickness(BORDER_THICKNESS); - a2c: e3a00001 mov r0, #1 - a30: ebffff20 bl 6b8 - vga_set_screen(GREY); - a34: e59f317c ldr r3, [pc, #380] ; bb8 - a38: e8930007 ldm r3, {r0, r1, r2} - a3c: ebfffe4f bl 380 - vga_show_screen(); - a40: ebfffecc bl 578 - jtag_start_request(); - a44: ebffff25 bl 6e0 - while(1) { - - if(carworld.data_ready == 1) { - a48: e3015af4 movw r5, #6900 ; 0x1af4 - a4c: e3405000 movt r5, #0 - vga_set_border_thickness(EDIT_BORDER_THICKNESS); - carworld_to_colour(data, ¤t_colour); - vga_set_current_segment(current_colour); - } - else { - vga_set_border_thickness(BORDER_THICKNESS); - a50: e3a0b001 mov fp, #1 - - if(carworld.data_ready == 1) { - data = get_carworld_data(); - jtag_start_request(); - if(is_editing == 1) { - first_run = 0; - a54: e3019698 movw r9, #5784 ; 0x1698 - a58: e3409000 movt r9, #0 - a5c: e3a04000 mov r4, #0 - last_saved = data; - vga_set_border_thickness(EDIT_BORDER_THICKNESS); - carworld_to_colour(data, ¤t_colour); - a60: e2857080 add r7, r5, #128 ; 0x80 - vga_set_screen(GREY); - vga_show_screen(); - jtag_start_request(); - while(1) { - - if(carworld.data_ready == 1) { - a64: e5953070 ldr r3, [r5, #112] ; 0x70 - a68: e3530001 cmp r3, #1 - a6c: 1a000014 bne ac4 - data = get_carworld_data(); - a70: ebffff4f bl 7b4 - a74: e1a06000 mov r6, r0 - a78: e5850078 str r0, [r5, #120] ; 0x78 - jtag_start_request(); - a7c: ebffff17 bl 6e0 - if(is_editing == 1) { - a80: e5953074 ldr r3, [r5, #116] ; 0x74 - a84: e3530001 cmp r3, #1 - a88: 1a000009 bne ab4 - first_run = 0; - a8c: e5894004 str r4, [r9, #4] - last_saved = data; - a90: e585607c str r6, [r5, #124] ; 0x7c - vga_set_border_thickness(EDIT_BORDER_THICKNESS); - a94: e3a00002 mov r0, #2 - a98: ebffff06 bl 6b8 - carworld_to_colour(data, ¤t_colour); - a9c: e1a00006 mov r0, r6 - aa0: e1a01007 mov r1, r7 - aa4: ebffff48 bl 7cc - vga_set_current_segment(current_colour); - aa8: e8970007 ldm r7, {r0, r1, r2} - aac: ebfffee6 bl 64c - ab0: ea000001 b abc - } - else { - vga_set_border_thickness(BORDER_THICKNESS); - ab4: e1a0000b mov r0, fp - ab8: ebfffefe bl 6b8 - } - vga_draw_current_segment(); - abc: ebfffef7 bl 6a0 - ac0: ea000000 b ac8 - - } - else { - jtag_read_fifo(); - ac4: ebffff11 bl 710 - } - if(first_run) { - ac8: e5993004 ldr r3, [r9, #4] - acc: e3530000 cmp r3, #0 - ad0: 0a000007 beq af4 - ad4: e1a06004 mov r6, r4 - int i; - for(i = 0; i < 6; i++) { - hex_display(i, 0); - ad8: e1a00006 mov r0, r6 - adc: e1a01004 mov r1, r4 - ae0: ebffffb7 bl 9c4 - else { - jtag_read_fifo(); - } - if(first_run) { - int i; - for(i = 0; i < 6; i++) { - ae4: e2866001 add r6, r6, #1 - ae8: e3560006 cmp r6, #6 - aec: 1afffff9 bne ad8 - af0: eaffffdb b a64 - hex_display(i, 0); - } - } - else { - current_colour = vga_get_current_segment(); - af4: e28d6008 add r6, sp, #8 - af8: e1a00006 mov r0, r6 - afc: ebfffedd bl 678 - b00: e8960007 ldm r6, {r0, r1, r2} - b04: e8870007 stm r7, {r0, r1, r2} - int red = map(current_colour.red, 0, VGA_MAX_RED, 0, 0xFF); - b08: e5950080 ldr r0, [r5, #128] ; 0x80 - b0c: e3a060ff mov r6, #255 ; 0xff - b10: e58d6000 str r6, [sp] - b14: e1a01004 mov r1, r4 - b18: e3a0201f mov r2, #31 - b1c: e1a03004 mov r3, r4 - b20: ebfffdcd bl 25c - b24: e1a08000 mov r8, r0 - int green = map(current_colour.green, 0, VGA_MAX_GREEN, 0, 0xFF); - b28: e5950084 ldr r0, [r5, #132] ; 0x84 - b2c: e58d6000 str r6, [sp] - b30: e1a01004 mov r1, r4 - b34: e3a0203f mov r2, #63 ; 0x3f - b38: e1a03004 mov r3, r4 - b3c: ebfffdc6 bl 25c - b40: e1a06000 mov r6, r0 - if(green == 0xFE) green = 0xFF; - b44: e35000fe cmp r0, #254 ; 0xfe - b48: 03a060ff moveq r6, #255 ; 0xff - int blue = map(current_colour.blue, 0, VGA_MAX_BLUE, 0, 0xFF); - b4c: e5950088 ldr r0, [r5, #136] ; 0x88 - b50: e3a030ff mov r3, #255 ; 0xff - b54: e58d3000 str r3, [sp] - b58: e1a01004 mov r1, r4 - b5c: e3a0201f mov r2, #31 - b60: e1a03004 mov r3, r4 - b64: ebfffdbc bl 25c - b68: e1a0a000 mov sl, r0 - hex_display(0, blue & 0xF); - b6c: e1a00004 mov r0, r4 - b70: e20a100f and r1, sl, #15 - b74: ebffff92 bl 9c4 - hex_display(1, (blue >> 4) & 0xF); - b78: e1a0000b mov r0, fp - b7c: e7e3125a ubfx r1, sl, #4, #4 - b80: ebffff8f bl 9c4 - hex_display(2, green & 0xF); - b84: e3a00002 mov r0, #2 - b88: e206100f and r1, r6, #15 - b8c: ebffff8c bl 9c4 - hex_display(3, (green >> 4) & 0xF); - b90: e3a00003 mov r0, #3 - b94: e7e31256 ubfx r1, r6, #4, #4 - b98: ebffff89 bl 9c4 - hex_display(4, red & 0xF); - b9c: e3a00004 mov r0, #4 - ba0: e208100f and r1, r8, #15 - ba4: ebffff86 bl 9c4 - hex_display(5, (red >> 4) & 0xF); - ba8: e3a00005 mov r0, #5 - bac: e7e31258 ubfx r1, r8, #4, #4 - bb0: ebffff83 bl 9c4 - bb4: eaffffaa b a64 - bb8: 00001628 .word 0x00001628 - -00000bbc <__aeabi_frsub>: - bbc: e2200102 eor r0, r0, #-2147483648 ; 0x80000000 - bc0: ea000000 b bc8 <__addsf3> - -00000bc4 <__aeabi_fsub>: - bc4: e2211102 eor r1, r1, #-2147483648 ; 0x80000000 - -00000bc8 <__addsf3>: - bc8: e1b02080 lsls r2, r0, #1 - bcc: 11b03081 lslsne r3, r1, #1 - bd0: 11320003 teqne r2, r3 - bd4: 11f0cc42 mvnsne ip, r2, asr #24 - bd8: 11f0cc43 mvnsne ip, r3, asr #24 - bdc: 0a000047 beq d00 <__addsf3+0x138> - be0: e1a02c22 lsr r2, r2, #24 - be4: e0723c23 rsbs r3, r2, r3, lsr #24 - be8: c0822003 addgt r2, r2, r3 - bec: c0201001 eorgt r1, r0, r1 - bf0: c0210000 eorgt r0, r1, r0 - bf4: c0201001 eorgt r1, r0, r1 - bf8: b2633000 rsblt r3, r3, #0 - bfc: e3530019 cmp r3, #25 - c00: 812fff1e bxhi lr - c04: e3100102 tst r0, #-2147483648 ; 0x80000000 - c08: e3800502 orr r0, r0, #8388608 ; 0x800000 - c0c: e3c004ff bic r0, r0, #-16777216 ; 0xff000000 - c10: 12600000 rsbne r0, r0, #0 - c14: e3110102 tst r1, #-2147483648 ; 0x80000000 - c18: e3811502 orr r1, r1, #8388608 ; 0x800000 - c1c: e3c114ff bic r1, r1, #-16777216 ; 0xff000000 - c20: 12611000 rsbne r1, r1, #0 - c24: e1320003 teq r2, r3 - c28: 0a00002e beq ce8 <__addsf3+0x120> - c2c: e2422001 sub r2, r2, #1 - c30: e0900351 adds r0, r0, r1, asr r3 - c34: e2633020 rsb r3, r3, #32 - c38: e1a01311 lsl r1, r1, r3 - c3c: e2003102 and r3, r0, #-2147483648 ; 0x80000000 - c40: 5a000001 bpl c4c <__addsf3+0x84> - c44: e2711000 rsbs r1, r1, #0 - c48: e2e00000 rsc r0, r0, #0 - c4c: e3500502 cmp r0, #8388608 ; 0x800000 - c50: 3a00000b bcc c84 <__addsf3+0xbc> - c54: e3500401 cmp r0, #16777216 ; 0x1000000 - c58: 3a000004 bcc c70 <__addsf3+0xa8> - c5c: e1b000a0 lsrs r0, r0, #1 - c60: e1a01061 rrx r1, r1 - c64: e2822001 add r2, r2, #1 - c68: e35200fe cmp r2, #254 ; 0xfe - c6c: 2a000038 bcs d54 <__addsf3+0x18c> - c70: e3510102 cmp r1, #-2147483648 ; 0x80000000 - c74: e0a00b82 adc r0, r0, r2, lsl #23 - c78: 03c00001 biceq r0, r0, #1 - c7c: e1800003 orr r0, r0, r3 - c80: e12fff1e bx lr - c84: e1b01081 lsls r1, r1, #1 - c88: e0a00000 adc r0, r0, r0 - c8c: e3100502 tst r0, #8388608 ; 0x800000 - c90: e2422001 sub r2, r2, #1 - c94: 1afffff5 bne c70 <__addsf3+0xa8> - c98: e1b0c620 lsrs ip, r0, #12 - c9c: 01a00600 lsleq r0, r0, #12 - ca0: 0242200c subeq r2, r2, #12 - ca4: e31008ff tst r0, #16711680 ; 0xff0000 - ca8: 01a00400 lsleq r0, r0, #8 - cac: 02422008 subeq r2, r2, #8 - cb0: e310060f tst r0, #15728640 ; 0xf00000 - cb4: 01a00200 lsleq r0, r0, #4 - cb8: 02422004 subeq r2, r2, #4 - cbc: e3100503 tst r0, #12582912 ; 0xc00000 - cc0: 01a00100 lsleq r0, r0, #2 - cc4: 02422002 subeq r2, r2, #2 - cc8: e3500502 cmp r0, #8388608 ; 0x800000 - ccc: 31a00080 lslcc r0, r0, #1 - cd0: e2d22000 sbcs r2, r2, #0 - cd4: a0800b82 addge r0, r0, r2, lsl #23 - cd8: b2622000 rsblt r2, r2, #0 - cdc: a1800003 orrge r0, r0, r3 - ce0: b1830230 orrlt r0, r3, r0, lsr r2 - ce4: e12fff1e bx lr - ce8: e3320000 teq r2, #0 - cec: e2211502 eor r1, r1, #8388608 ; 0x800000 - cf0: 02200502 eoreq r0, r0, #8388608 ; 0x800000 - cf4: 02822001 addeq r2, r2, #1 - cf8: 12433001 subne r3, r3, #1 - cfc: eaffffca b c2c <__addsf3+0x64> - d00: e1a03081 lsl r3, r1, #1 - d04: e1f0cc42 mvns ip, r2, asr #24 - d08: 11f0cc43 mvnsne ip, r3, asr #24 - d0c: 0a000013 beq d60 <__addsf3+0x198> - d10: e1320003 teq r2, r3 - d14: 0a000002 beq d24 <__addsf3+0x15c> - d18: e3320000 teq r2, #0 - d1c: 01a00001 moveq r0, r1 - d20: e12fff1e bx lr - d24: e1300001 teq r0, r1 - d28: 13a00000 movne r0, #0 - d2c: 112fff1e bxne lr - d30: e31204ff tst r2, #-16777216 ; 0xff000000 - d34: 1a000002 bne d44 <__addsf3+0x17c> - d38: e1b00080 lsls r0, r0, #1 - d3c: 23800102 orrcs r0, r0, #-2147483648 ; 0x80000000 - d40: e12fff1e bx lr - d44: e2922402 adds r2, r2, #33554432 ; 0x2000000 - d48: 32800502 addcc r0, r0, #8388608 ; 0x800000 - d4c: 312fff1e bxcc lr - d50: e2003102 and r3, r0, #-2147483648 ; 0x80000000 - d54: e383047f orr r0, r3, #2130706432 ; 0x7f000000 - d58: e3800502 orr r0, r0, #8388608 ; 0x800000 - d5c: e12fff1e bx lr - d60: e1f02c42 mvns r2, r2, asr #24 - d64: 11a00001 movne r0, r1 - d68: 01f03c43 mvnseq r3, r3, asr #24 - d6c: 11a01000 movne r1, r0 - d70: e1b02480 lsls r2, r0, #9 - d74: 01b03481 lslseq r3, r1, #9 - d78: 01300001 teqeq r0, r1 - d7c: 13800501 orrne r0, r0, #4194304 ; 0x400000 - d80: e12fff1e bx lr - -00000d84 <__aeabi_ui2f>: - d84: e3a03000 mov r3, #0 - d88: ea000001 b d94 <__aeabi_i2f+0x8> - -00000d8c <__aeabi_i2f>: - d8c: e2103102 ands r3, r0, #-2147483648 ; 0x80000000 - d90: 42600000 rsbmi r0, r0, #0 - d94: e1b0c000 movs ip, r0 - d98: 012fff1e bxeq lr - d9c: e383344b orr r3, r3, #1258291200 ; 0x4b000000 - da0: e1a01000 mov r1, r0 - da4: e3a00000 mov r0, #0 - da8: ea00000f b dec <__aeabi_l2f+0x30> - -00000dac <__aeabi_ul2f>: - dac: e1902001 orrs r2, r0, r1 - db0: 012fff1e bxeq lr - db4: e3a03000 mov r3, #0 - db8: ea000005 b dd4 <__aeabi_l2f+0x18> - -00000dbc <__aeabi_l2f>: - dbc: e1902001 orrs r2, r0, r1 - dc0: 012fff1e bxeq lr - dc4: e2113102 ands r3, r1, #-2147483648 ; 0x80000000 - dc8: 5a000001 bpl dd4 <__aeabi_l2f+0x18> - dcc: e2700000 rsbs r0, r0, #0 - dd0: e2e11000 rsc r1, r1, #0 - dd4: e1b0c001 movs ip, r1 - dd8: 01a0c000 moveq ip, r0 - ddc: 01a01000 moveq r1, r0 - de0: 03a00000 moveq r0, #0 - de4: e383345b orr r3, r3, #1526726656 ; 0x5b000000 - de8: 02433201 subeq r3, r3, #268435456 ; 0x10000000 - dec: e2433502 sub r3, r3, #8388608 ; 0x800000 - df0: e3a02017 mov r2, #23 - df4: e35c0801 cmp ip, #65536 ; 0x10000 - df8: 21a0c82c lsrcs ip, ip, #16 - dfc: 22422010 subcs r2, r2, #16 - e00: e35c0c01 cmp ip, #256 ; 0x100 - e04: 21a0c42c lsrcs ip, ip, #8 - e08: 22422008 subcs r2, r2, #8 - e0c: e35c0010 cmp ip, #16 - e10: 21a0c22c lsrcs ip, ip, #4 - e14: 22422004 subcs r2, r2, #4 - e18: e35c0004 cmp ip, #4 - e1c: 22422002 subcs r2, r2, #2 - e20: 304220ac subcc r2, r2, ip, lsr #1 - e24: e05221ac subs r2, r2, ip, lsr #3 - e28: e0433b82 sub r3, r3, r2, lsl #23 - e2c: ba000006 blt e4c <__aeabi_l2f+0x90> - e30: e0833211 add r3, r3, r1, lsl r2 - e34: e1a0c210 lsl ip, r0, r2 - e38: e2622020 rsb r2, r2, #32 - e3c: e35c0102 cmp ip, #-2147483648 ; 0x80000000 - e40: e0a30230 adc r0, r3, r0, lsr r2 - e44: 03c00001 biceq r0, r0, #1 - e48: e12fff1e bx lr - e4c: e2822020 add r2, r2, #32 - e50: e1a0c211 lsl ip, r1, r2 - e54: e2622020 rsb r2, r2, #32 - e58: e190008c orrs r0, r0, ip, lsl #1 - e5c: e0a30231 adc r0, r3, r1, lsr r2 - e60: 01c00fac biceq r0, r0, ip, lsr #31 - e64: e12fff1e bx lr - -00000e68 <__aeabi_fmul>: - e68: e3a0c0ff mov ip, #255 ; 0xff - e6c: e01c2ba0 ands r2, ip, r0, lsr #23 - e70: 101c3ba1 andsne r3, ip, r1, lsr #23 - e74: 1132000c teqne r2, ip - e78: 1133000c teqne r3, ip - e7c: 0a00003e beq f7c <__aeabi_fmul+0x114> - e80: e0822003 add r2, r2, r3 - e84: e020c001 eor ip, r0, r1 - e88: e1b00480 lsls r0, r0, #9 - e8c: 11b01481 lslsne r1, r1, #9 - e90: 0a000010 beq ed8 <__aeabi_fmul+0x70> - e94: e3a03302 mov r3, #134217728 ; 0x8000000 - e98: e18302a0 orr r0, r3, r0, lsr #5 - e9c: e18312a1 orr r1, r3, r1, lsr #5 - ea0: e0813190 umull r3, r1, r0, r1 - ea4: e20c0102 and r0, ip, #-2147483648 ; 0x80000000 - ea8: e3510502 cmp r1, #8388608 ; 0x800000 - eac: 31a01081 lslcc r1, r1, #1 - eb0: 31811fa3 orrcc r1, r1, r3, lsr #31 - eb4: 31a03083 lslcc r3, r3, #1 - eb8: e1800001 orr r0, r0, r1 - ebc: e2c2207f sbc r2, r2, #127 ; 0x7f - ec0: e35200fd cmp r2, #253 ; 0xfd - ec4: 8a00000f bhi f08 <__aeabi_fmul+0xa0> - ec8: e3530102 cmp r3, #-2147483648 ; 0x80000000 - ecc: e0a00b82 adc r0, r0, r2, lsl #23 - ed0: 03c00001 biceq r0, r0, #1 - ed4: e12fff1e bx lr - ed8: e3300000 teq r0, #0 - edc: e20cc102 and ip, ip, #-2147483648 ; 0x80000000 - ee0: 01a01481 lsleq r1, r1, #9 - ee4: e18c04a0 orr r0, ip, r0, lsr #9 - ee8: e18004a1 orr r0, r0, r1, lsr #9 - eec: e252207f subs r2, r2, #127 ; 0x7f - ef0: c27230ff rsbsgt r3, r2, #255 ; 0xff - ef4: c1800b82 orrgt r0, r0, r2, lsl #23 - ef8: c12fff1e bxgt lr - efc: e3800502 orr r0, r0, #8388608 ; 0x800000 - f00: e3a03000 mov r3, #0 - f04: e2522001 subs r2, r2, #1 - f08: ca000035 bgt fe4 <__aeabi_fmul+0x17c> - f0c: e3720019 cmn r2, #25 - f10: d2000102 andle r0, r0, #-2147483648 ; 0x80000000 - f14: d12fff1e bxle lr - f18: e2622000 rsb r2, r2, #0 - f1c: e1b01080 lsls r1, r0, #1 - f20: e1a01231 lsr r1, r1, r2 - f24: e2622020 rsb r2, r2, #32 - f28: e1a0c210 lsl ip, r0, r2 - f2c: e1b00061 rrxs r0, r1 - f30: e2a00000 adc r0, r0, #0 - f34: e193308c orrs r3, r3, ip, lsl #1 - f38: 01c00fac biceq r0, r0, ip, lsr #31 - f3c: e12fff1e bx lr - f40: e3320000 teq r2, #0 - f44: e200c102 and ip, r0, #-2147483648 ; 0x80000000 - f48: 01a00080 lsleq r0, r0, #1 - f4c: 03100502 tsteq r0, #8388608 ; 0x800000 - f50: 02422001 subeq r2, r2, #1 - f54: 0afffffb beq f48 <__aeabi_fmul+0xe0> - f58: e180000c orr r0, r0, ip - f5c: e3330000 teq r3, #0 - f60: e201c102 and ip, r1, #-2147483648 ; 0x80000000 - f64: 01a01081 lsleq r1, r1, #1 - f68: 03110502 tsteq r1, #8388608 ; 0x800000 - f6c: 02433001 subeq r3, r3, #1 - f70: 0afffffb beq f64 <__aeabi_fmul+0xfc> - f74: e181100c orr r1, r1, ip - f78: eaffffc0 b e80 <__aeabi_fmul+0x18> - f7c: e00c3ba1 and r3, ip, r1, lsr #23 - f80: e132000c teq r2, ip - f84: 1133000c teqne r3, ip - f88: 0a000005 beq fa4 <__aeabi_fmul+0x13c> - f8c: e3d0c102 bics ip, r0, #-2147483648 ; 0x80000000 - f90: 13d1c102 bicsne ip, r1, #-2147483648 ; 0x80000000 - f94: 1affffe9 bne f40 <__aeabi_fmul+0xd8> - f98: e0200001 eor r0, r0, r1 - f9c: e2000102 and r0, r0, #-2147483648 ; 0x80000000 - fa0: e12fff1e bx lr - fa4: e3300000 teq r0, #0 - fa8: 13300102 teqne r0, #-2147483648 ; 0x80000000 - fac: 01a00001 moveq r0, r1 - fb0: 13310000 teqne r1, #0 - fb4: 13310102 teqne r1, #-2147483648 ; 0x80000000 - fb8: 0a00000d beq ff4 <__aeabi_fmul+0x18c> - fbc: e132000c teq r2, ip - fc0: 1a000001 bne fcc <__aeabi_fmul+0x164> - fc4: e1b02480 lsls r2, r0, #9 - fc8: 1a000009 bne ff4 <__aeabi_fmul+0x18c> - fcc: e133000c teq r3, ip - fd0: 1a000002 bne fe0 <__aeabi_fmul+0x178> - fd4: e1b03481 lsls r3, r1, #9 - fd8: 11a00001 movne r0, r1 - fdc: 1a000004 bne ff4 <__aeabi_fmul+0x18c> - fe0: e0200001 eor r0, r0, r1 - fe4: e2000102 and r0, r0, #-2147483648 ; 0x80000000 - fe8: e380047f orr r0, r0, #2130706432 ; 0x7f000000 - fec: e3800502 orr r0, r0, #8388608 ; 0x800000 - ff0: e12fff1e bx lr - ff4: e380047f orr r0, r0, #2130706432 ; 0x7f000000 - ff8: e3800503 orr r0, r0, #12582912 ; 0xc00000 - ffc: e12fff1e bx lr - -00001000 <__aeabi_fdiv>: - 1000: e3a0c0ff mov ip, #255 ; 0xff - 1004: e01c2ba0 ands r2, ip, r0, lsr #23 - 1008: 101c3ba1 andsne r3, ip, r1, lsr #23 - 100c: 1132000c teqne r2, ip - 1010: 1133000c teqne r3, ip - 1014: 0a00003a beq 1104 <__aeabi_fdiv+0x104> - 1018: e0422003 sub r2, r2, r3 - 101c: e020c001 eor ip, r0, r1 - 1020: e1b01481 lsls r1, r1, #9 - 1024: e1a00480 lsl r0, r0, #9 - 1028: 0a00001c beq 10a0 <__aeabi_fdiv+0xa0> - 102c: e3a03201 mov r3, #268435456 ; 0x10000000 - 1030: e1831221 orr r1, r3, r1, lsr #4 - 1034: e1833220 orr r3, r3, r0, lsr #4 - 1038: e20c0102 and r0, ip, #-2147483648 ; 0x80000000 - 103c: e1530001 cmp r3, r1 - 1040: 31a03083 lslcc r3, r3, #1 - 1044: e2a2207d adc r2, r2, #125 ; 0x7d - 1048: e3a0c502 mov ip, #8388608 ; 0x800000 - 104c: e1530001 cmp r3, r1 - 1050: 20433001 subcs r3, r3, r1 - 1054: 2180000c orrcs r0, r0, ip - 1058: e15300a1 cmp r3, r1, lsr #1 - 105c: 204330a1 subcs r3, r3, r1, lsr #1 - 1060: 218000ac orrcs r0, r0, ip, lsr #1 - 1064: e1530121 cmp r3, r1, lsr #2 - 1068: 20433121 subcs r3, r3, r1, lsr #2 - 106c: 2180012c orrcs r0, r0, ip, lsr #2 - 1070: e15301a1 cmp r3, r1, lsr #3 - 1074: 204331a1 subcs r3, r3, r1, lsr #3 - 1078: 218001ac orrcs r0, r0, ip, lsr #3 - 107c: e1b03203 lsls r3, r3, #4 - 1080: 11b0c22c lsrsne ip, ip, #4 - 1084: 1afffff0 bne 104c <__aeabi_fdiv+0x4c> - 1088: e35200fd cmp r2, #253 ; 0xfd - 108c: 8affff9d bhi f08 <__aeabi_fmul+0xa0> - 1090: e1530001 cmp r3, r1 - 1094: e0a00b82 adc r0, r0, r2, lsl #23 - 1098: 03c00001 biceq r0, r0, #1 - 109c: e12fff1e bx lr - 10a0: e20cc102 and ip, ip, #-2147483648 ; 0x80000000 - 10a4: e18c04a0 orr r0, ip, r0, lsr #9 - 10a8: e292207f adds r2, r2, #127 ; 0x7f - 10ac: c27230ff rsbsgt r3, r2, #255 ; 0xff - 10b0: c1800b82 orrgt r0, r0, r2, lsl #23 - 10b4: c12fff1e bxgt lr - 10b8: e3800502 orr r0, r0, #8388608 ; 0x800000 - 10bc: e3a03000 mov r3, #0 - 10c0: e2522001 subs r2, r2, #1 - 10c4: eaffff8f b f08 <__aeabi_fmul+0xa0> - 10c8: e3320000 teq r2, #0 - 10cc: e200c102 and ip, r0, #-2147483648 ; 0x80000000 - 10d0: 01a00080 lsleq r0, r0, #1 - 10d4: 03100502 tsteq r0, #8388608 ; 0x800000 - 10d8: 02422001 subeq r2, r2, #1 - 10dc: 0afffffb beq 10d0 <__aeabi_fdiv+0xd0> - 10e0: e180000c orr r0, r0, ip - 10e4: e3330000 teq r3, #0 - 10e8: e201c102 and ip, r1, #-2147483648 ; 0x80000000 - 10ec: 01a01081 lsleq r1, r1, #1 - 10f0: 03110502 tsteq r1, #8388608 ; 0x800000 - 10f4: 02433001 subeq r3, r3, #1 - 10f8: 0afffffb beq 10ec <__aeabi_fdiv+0xec> - 10fc: e181100c orr r1, r1, ip - 1100: eaffffc4 b 1018 <__aeabi_fdiv+0x18> - 1104: e00c3ba1 and r3, ip, r1, lsr #23 - 1108: e132000c teq r2, ip - 110c: 1a000005 bne 1128 <__aeabi_fdiv+0x128> - 1110: e1b02480 lsls r2, r0, #9 - 1114: 1affffb6 bne ff4 <__aeabi_fmul+0x18c> - 1118: e133000c teq r3, ip - 111c: 1affffaf bne fe0 <__aeabi_fmul+0x178> - 1120: e1a00001 mov r0, r1 - 1124: eaffffb2 b ff4 <__aeabi_fmul+0x18c> - 1128: e133000c teq r3, ip - 112c: 1a000003 bne 1140 <__aeabi_fdiv+0x140> - 1130: e1b03481 lsls r3, r1, #9 - 1134: 0affff97 beq f98 <__aeabi_fmul+0x130> - 1138: e1a00001 mov r0, r1 - 113c: eaffffac b ff4 <__aeabi_fmul+0x18c> - 1140: e3d0c102 bics ip, r0, #-2147483648 ; 0x80000000 - 1144: 13d1c102 bicsne ip, r1, #-2147483648 ; 0x80000000 - 1148: 1affffde bne 10c8 <__aeabi_fdiv+0xc8> - 114c: e3d02102 bics r2, r0, #-2147483648 ; 0x80000000 - 1150: 1affffa2 bne fe0 <__aeabi_fmul+0x178> - 1154: e3d13102 bics r3, r1, #-2147483648 ; 0x80000000 - 1158: 1affff8e bne f98 <__aeabi_fmul+0x130> - 115c: eaffffa4 b ff4 <__aeabi_fmul+0x18c> - -00001160 <__aeabi_f2iz>: - 1160: e1a02080 lsl r2, r0, #1 - 1164: e352047f cmp r2, #2130706432 ; 0x7f000000 - 1168: 3a000008 bcc 1190 <__aeabi_f2iz+0x30> - 116c: e3a0309e mov r3, #158 ; 0x9e - 1170: e0532c22 subs r2, r3, r2, lsr #24 - 1174: 9a000007 bls 1198 <__aeabi_f2iz+0x38> - 1178: e1a03400 lsl r3, r0, #8 - 117c: e3833102 orr r3, r3, #-2147483648 ; 0x80000000 - 1180: e3100102 tst r0, #-2147483648 ; 0x80000000 - 1184: e1a00233 lsr r0, r3, r2 - 1188: 12600000 rsbne r0, r0, #0 - 118c: e12fff1e bx lr - 1190: e3a00000 mov r0, #0 - 1194: e12fff1e bx lr - 1198: e3720061 cmn r2, #97 ; 0x61 - 119c: 1a000001 bne 11a8 <__aeabi_f2iz+0x48> - 11a0: e1b02480 lsls r2, r0, #9 - 11a4: 1a000002 bne 11b4 <__aeabi_f2iz+0x54> - 11a8: e2100102 ands r0, r0, #-2147483648 ; 0x80000000 - 11ac: 03e00102 mvneq r0, #-2147483648 ; 0x80000000 - 11b0: e12fff1e bx lr - 11b4: e3a00000 mov r0, #0 - 11b8: e12fff1e bx lr - -000011bc : - 11bc: e1a01000 mov r1, r0 - 11c0: e3a00000 mov r0, #0 - 11c4: e92d4008 push {r3, lr} - 11c8: e1a02000 mov r2, r0 - 11cc: e1a03000 mov r3, r0 - 11d0: eb00000e bl 1210 <__register_exitproc> - 11d4: e8bd4008 pop {r3, lr} - 11d8: e12fff1e bx lr - -000011dc : - 11dc: e92d4008 push {r3, lr} - 11e0: e3a01000 mov r1, #0 - 11e4: e1a04000 mov r4, r0 - 11e8: eb000045 bl 1304 <__call_exitprocs> - 11ec: e59f3018 ldr r3, [pc, #24] ; 120c - 11f0: e5930000 ldr r0, [r3] - 11f4: e590303c ldr r3, [r0, #60] ; 0x3c - 11f8: e3530000 cmp r3, #0 - 11fc: 11a0e00f movne lr, pc - 1200: 112fff13 bxne r3 - 1204: e1a00004 mov r0, r4 - 1208: eb0000c9 bl 1534 <_exit> - 120c: 00001638 .word 0x00001638 - -00001210 <__register_exitproc>: - 1210: e59fc0e4 ldr ip, [pc, #228] ; 12fc <__register_exitproc+0xec> - 1214: e92d41f0 push {r4, r5, r6, r7, r8, lr} - 1218: e59c4000 ldr r4, [ip] - 121c: e594c148 ldr ip, [r4, #328] ; 0x148 - 1220: e35c0000 cmp ip, #0 - 1224: 0284cf53 addeq ip, r4, #332 ; 0x14c - 1228: e59c5004 ldr r5, [ip, #4] - 122c: 0584c148 streq ip, [r4, #328] ; 0x148 - 1230: e355001f cmp r5, #31 - 1234: e24dd010 sub sp, sp, #16 - 1238: e1a06000 mov r6, r0 - 123c: da000015 ble 1298 <__register_exitproc+0x88> - 1240: e59f00b8 ldr r0, [pc, #184] ; 1300 <__register_exitproc+0xf0> - 1244: e3500000 cmp r0, #0 - 1248: 1a000001 bne 1254 <__register_exitproc+0x44> - 124c: e3e00000 mvn r0, #0 - 1250: ea000018 b 12b8 <__register_exitproc+0xa8> - 1254: e3a00e19 mov r0, #400 ; 0x190 - 1258: e58d100c str r1, [sp, #12] - 125c: e58d2008 str r2, [sp, #8] - 1260: e58d3004 str r3, [sp, #4] - 1264: e320f000 nop {0} - 1268: e250c000 subs ip, r0, #0 - 126c: e59d100c ldr r1, [sp, #12] - 1270: e59d2008 ldr r2, [sp, #8] - 1274: e59d3004 ldr r3, [sp, #4] - 1278: 0afffff3 beq 124c <__register_exitproc+0x3c> - 127c: e5945148 ldr r5, [r4, #328] ; 0x148 - 1280: e3a00000 mov r0, #0 - 1284: e58c0004 str r0, [ip, #4] - 1288: e58c5000 str r5, [ip] - 128c: e584c148 str ip, [r4, #328] ; 0x148 - 1290: e58c0188 str r0, [ip, #392] ; 0x188 - 1294: e58c018c str r0, [ip, #396] ; 0x18c - 1298: e3560000 cmp r6, #0 - 129c: e59c4004 ldr r4, [ip, #4] - 12a0: 1a000007 bne 12c4 <__register_exitproc+0xb4> - 12a4: e2843002 add r3, r4, #2 - 12a8: e2844001 add r4, r4, #1 - 12ac: e78c1103 str r1, [ip, r3, lsl #2] - 12b0: e58c4004 str r4, [ip, #4] - 12b4: e3a00000 mov r0, #0 - 12b8: e28dd010 add sp, sp, #16 - 12bc: e8bd41f0 pop {r4, r5, r6, r7, r8, lr} - 12c0: e12fff1e bx lr - 12c4: e3a00001 mov r0, #1 - 12c8: e1a00410 lsl r0, r0, r4 - 12cc: e08c8104 add r8, ip, r4, lsl #2 - 12d0: e3560002 cmp r6, #2 - 12d4: e59c7188 ldr r7, [ip, #392] ; 0x188 - 12d8: e5883108 str r3, [r8, #264] ; 0x108 - 12dc: 059c318c ldreq r3, [ip, #396] ; 0x18c - 12e0: e1877000 orr r7, r7, r0 - 12e4: 01830000 orreq r0, r3, r0 - 12e8: e1a05008 mov r5, r8 - 12ec: e5882088 str r2, [r8, #136] ; 0x88 - 12f0: e58c7188 str r7, [ip, #392] ; 0x188 - 12f4: 058c018c streq r0, [ip, #396] ; 0x18c - 12f8: eaffffe9 b 12a4 <__register_exitproc+0x94> - 12fc: 00001638 .word 0x00001638 - 1300: 00000000 .word 0x00000000 - -00001304 <__call_exitprocs>: - 1304: e92d4ff0 push {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1308: e59f3168 ldr r3, [pc, #360] ; 1478 <__call_exitprocs+0x174> - 130c: e5933000 ldr r3, [r3] - 1310: e24dd014 sub sp, sp, #20 - 1314: e58d3004 str r3, [sp, #4] - 1318: e2833f52 add r3, r3, #328 ; 0x148 - 131c: e58d0008 str r0, [sp, #8] - 1320: e58d300c str r3, [sp, #12] - 1324: e1a07001 mov r7, r1 - 1328: e3a08001 mov r8, #1 - 132c: e59d3004 ldr r3, [sp, #4] - 1330: e5936148 ldr r6, [r3, #328] ; 0x148 - 1334: e3560000 cmp r6, #0 - 1338: e59db00c ldr fp, [sp, #12] - 133c: 0a000033 beq 1410 <__call_exitprocs+0x10c> - 1340: e5965004 ldr r5, [r6, #4] - 1344: e2554001 subs r4, r5, #1 - 1348: 5286a088 addpl sl, r6, #136 ; 0x88 - 134c: 5285501f addpl r5, r5, #31 - 1350: 508a5105 addpl r5, sl, r5, lsl #2 - 1354: 5a000007 bpl 1378 <__call_exitprocs+0x74> - 1358: ea000029 b 1404 <__call_exitprocs+0x100> - 135c: e5953000 ldr r3, [r5] - 1360: e1530007 cmp r3, r7 - 1364: 0a000005 beq 1380 <__call_exitprocs+0x7c> - 1368: e2444001 sub r4, r4, #1 - 136c: e3740001 cmn r4, #1 - 1370: e2455004 sub r5, r5, #4 - 1374: 0a000022 beq 1404 <__call_exitprocs+0x100> - 1378: e3570000 cmp r7, #0 - 137c: 1afffff6 bne 135c <__call_exitprocs+0x58> - 1380: e5963004 ldr r3, [r6, #4] - 1384: e06a2005 rsb r2, sl, r5 - 1388: e2433001 sub r3, r3, #1 - 138c: e0862002 add r2, r6, r2 - 1390: e1530004 cmp r3, r4 - 1394: e5123078 ldr r3, [r2, #-120] ; 0xffffff88 - 1398: 13a01000 movne r1, #0 - 139c: 05864004 streq r4, [r6, #4] - 13a0: 15021078 strne r1, [r2, #-120] ; 0xffffff88 - 13a4: e3530000 cmp r3, #0 - 13a8: 0affffee beq 1368 <__call_exitprocs+0x64> - 13ac: e1a02418 lsl r2, r8, r4 - 13b0: e5961188 ldr r1, [r6, #392] ; 0x188 - 13b4: e1120001 tst r2, r1 - 13b8: e5969004 ldr r9, [r6, #4] - 13bc: 0a000016 beq 141c <__call_exitprocs+0x118> - 13c0: e596118c ldr r1, [r6, #396] ; 0x18c - 13c4: e1120001 tst r2, r1 - 13c8: 1a000016 bne 1428 <__call_exitprocs+0x124> - 13cc: e59d0008 ldr r0, [sp, #8] - 13d0: e5151080 ldr r1, [r5, #-128] ; 0xffffff80 - 13d4: e1a0e00f mov lr, pc - 13d8: e12fff13 bx r3 - 13dc: e5963004 ldr r3, [r6, #4] - 13e0: e1530009 cmp r3, r9 - 13e4: 1affffd0 bne 132c <__call_exitprocs+0x28> - 13e8: e59b3000 ldr r3, [fp] - 13ec: e1530006 cmp r3, r6 - 13f0: 1affffcd bne 132c <__call_exitprocs+0x28> - 13f4: e2444001 sub r4, r4, #1 - 13f8: e3740001 cmn r4, #1 - 13fc: e2455004 sub r5, r5, #4 - 1400: 1affffdc bne 1378 <__call_exitprocs+0x74> - 1404: e59f1070 ldr r1, [pc, #112] ; 147c <__call_exitprocs+0x178> - 1408: e3510000 cmp r1, #0 - 140c: 1a000009 bne 1438 <__call_exitprocs+0x134> - 1410: e28dd014 add sp, sp, #20 - 1414: e8bd4ff0 pop {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1418: e12fff1e bx lr - 141c: e1a0e00f mov lr, pc - 1420: e12fff13 bx r3 - 1424: eaffffec b 13dc <__call_exitprocs+0xd8> - 1428: e5150080 ldr r0, [r5, #-128] ; 0xffffff80 - 142c: e1a0e00f mov lr, pc - 1430: e12fff13 bx r3 - 1434: eaffffe8 b 13dc <__call_exitprocs+0xd8> - 1438: e5963004 ldr r3, [r6, #4] - 143c: e3530000 cmp r3, #0 - 1440: e5963000 ldr r3, [r6] - 1444: 1a000008 bne 146c <__call_exitprocs+0x168> - 1448: e3530000 cmp r3, #0 - 144c: 0a000006 beq 146c <__call_exitprocs+0x168> - 1450: e1a00006 mov r0, r6 - 1454: e58b3000 str r3, [fp] - 1458: e320f000 nop {0} - 145c: e59b6000 ldr r6, [fp] - 1460: e3560000 cmp r6, #0 - 1464: 1affffb5 bne 1340 <__call_exitprocs+0x3c> - 1468: eaffffe8 b 1410 <__call_exitprocs+0x10c> - 146c: e1a0b006 mov fp, r6 - 1470: e1a06003 mov r6, r3 - 1474: eafffff9 b 1460 <__call_exitprocs+0x15c> - 1478: 00001638 .word 0x00001638 - 147c: 00000000 .word 0x00000000 - -00001480 : - 1480: e92d4008 push {r3, lr} - 1484: e59f3010 ldr r3, [pc, #16] ; 149c - 1488: e3530000 cmp r3, #0 - 148c: 159f000c ldrne r0, [pc, #12] ; 14a0 - 1490: 1bffff49 blne 11bc - 1494: e8bd4008 pop {r3, lr} - 1498: e12fff1e bx lr - 149c: 00001660 .word 0x00001660 - 14a0: 000014a4 .word 0x000014a4 - -000014a4 <__libc_fini_array>: - 14a4: e92d4038 push {r3, r4, r5, lr} - 14a8: e59f5030 ldr r5, [pc, #48] ; 14e0 <__libc_fini_array+0x3c> - 14ac: e59f4030 ldr r4, [pc, #48] ; 14e4 <__libc_fini_array+0x40> - 14b0: e0654004 rsb r4, r5, r4 - 14b4: e1b04144 asrs r4, r4, #2 - 14b8: 10855104 addne r5, r5, r4, lsl #2 - 14bc: 0a000004 beq 14d4 <__libc_fini_array+0x30> - 14c0: e5353004 ldr r3, [r5, #-4]! - 14c4: e1a0e00f mov lr, pc - 14c8: e12fff13 bx r3 - 14cc: e2544001 subs r4, r4, #1 - 14d0: 1afffffa bne 14c0 <__libc_fini_array+0x1c> - 14d4: eb000061 bl 1660 <__libc_fini> - 14d8: e8bd4038 pop {r3, r4, r5, lr} - 14dc: e12fff1e bx lr - 14e0: 00001678 .word 0x00001678 - 14e4: 0000167c .word 0x0000167c - -000014e8 <__cs3_premain>: - 14e8: e92d4008 push {r3, lr} - 14ec: eb000017 bl 1550 <__libc_init_array> - 14f0: e59f3030 ldr r3, [pc, #48] ; 1528 <__cs3_premain+0x40> - 14f4: e3530000 cmp r3, #0 - 14f8: 15930000 ldrne r0, [r3] - 14fc: 01a00003 moveq r0, r3 - 1500: e59f3024 ldr r3, [pc, #36] ; 152c <__cs3_premain+0x44> - 1504: e3530000 cmp r3, #0 - 1508: 15931000 ldrne r1, [r3] - 150c: 01a01003 moveq r1, r3 - 1510: e3a02000 mov r2, #0 - 1514: ebfffd3d bl a10
- 1518: e59f3010 ldr r3, [pc, #16] ; 1530 <__cs3_premain+0x48> - 151c: e3530000 cmp r3, #0 - 1520: 1bffff2d blne 11dc - 1524: eafffffe b 1524 <__cs3_premain+0x3c> - ... - 1530: 000011dc .word 0x000011dc - -00001534 <_exit>: - 1534: e52de004 push {lr} ; (str lr, [sp, #-4]!) - 1538: e3a00018 mov r0, #24 - 153c: e59f1004 ldr r1, [pc, #4] ; 1548 <_exit+0x14> - 1540: ef123456 svc 0x00123456 - 1544: eafffffe b 1544 <_exit+0x10> - 1548: 00020026 .word 0x00020026 - -0000154c <__cs3_isr_interrupt>: - 154c: eafffffe b 154c <__cs3_isr_interrupt> - -00001550 <__libc_init_array>: - 1550: e92d4070 push {r4, r5, r6, lr} - 1554: e59f506c ldr r5, [pc, #108] ; 15c8 <__libc_init_array+0x78> - 1558: e59f606c ldr r6, [pc, #108] ; 15cc <__libc_init_array+0x7c> - 155c: e0656006 rsb r6, r5, r6 - 1560: e1b06146 asrs r6, r6, #2 - 1564: 12455004 subne r5, r5, #4 - 1568: 13a04000 movne r4, #0 - 156c: 0a000005 beq 1588 <__libc_init_array+0x38> - 1570: e5b53004 ldr r3, [r5, #4]! - 1574: e2844001 add r4, r4, #1 - 1578: e1a0e00f mov lr, pc - 157c: e12fff13 bx r3 - 1580: e1560004 cmp r6, r4 - 1584: 1afffff9 bne 1570 <__libc_init_array+0x20> - 1588: e59f5040 ldr r5, [pc, #64] ; 15d0 <__libc_init_array+0x80> - 158c: e59f6040 ldr r6, [pc, #64] ; 15d4 <__libc_init_array+0x84> - 1590: e0656006 rsb r6, r5, r6 - 1594: eb000029 bl 1640 <_init> - 1598: e1b06146 asrs r6, r6, #2 - 159c: 12455004 subne r5, r5, #4 - 15a0: 13a04000 movne r4, #0 - 15a4: 0a000005 beq 15c0 <__libc_init_array+0x70> - 15a8: e5b53004 ldr r3, [r5, #4]! - 15ac: e2844001 add r4, r4, #1 - 15b0: e1a0e00f mov lr, pc - 15b4: e12fff13 bx r3 - 15b8: e1560004 cmp r6, r4 - 15bc: 1afffff9 bne 15a8 <__libc_init_array+0x58> - 15c0: e8bd4070 pop {r4, r5, r6, lr} - 15c4: e12fff1e bx lr - 15c8: 00001658 .word 0x00001658 - 15cc: 00001658 .word 0x00001658 - 15d0: 00001658 .word 0x00001658 - 15d4: 00001660 .word 0x00001660 - -Disassembly of section .rodata: - -000015dc : - ... - -000015e8 : - 15e8: 0000003f 00000006 0000005b 0000004f ?.......[...O... - 15f8: 00000066 0000006d 0000007d 00000007 f...m...}....... - 1608: 0000007f 00000067 00000077 0000007c ....g...w...|... - 1618: 00000058 0000005e 00000079 00000071 X...^...y...q... - -00001628 : - 1628: 0000000a 00000014 0000000a ............ - -00001634 : - 1634: ff211020 .!. - -00001638 <_global_impure_ptr>: - 1638: 000016a8 00000043 ....C... - -00001640 <_init>: - 1640: e1a0c00d mov ip, sp - 1644: e92ddff8 push {r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc} - 1648: e24cb004 sub fp, ip, #4 - 164c: e24bd028 sub sp, fp, #40 ; 0x28 - 1650: e89d6ff0 ldm sp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, lr} - 1654: e12fff1e bx lr - -00001658 <__init_array_start>: - 1658: 00001480 .word 0x00001480 - -0000165c <__frame_dummy_init_array_entry>: - 165c: 00000208 .... - -00001660 <__libc_fini>: - 1660: e1a0c00d mov ip, sp - 1664: e92ddff8 push {r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc} - 1668: e24cb004 sub fp, ip, #4 - 166c: e24bd028 sub sp, fp, #40 ; 0x28 - 1670: e89d6ff0 ldm sp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, lr} - 1674: e12fff1e bx lr - -00001678 <__fini_array_start>: - 1678: 000001c4 .word 0x000001c4 - -0000167c <__cs3_regions>: - ... - 1688: 00001ad8 .word 0x00001ad8 - 168c: 000000a8 .word 0x000000a8 diff --git a/main.c.o b/main.c.o deleted file mode 100644 index 1360e1a701baafe2e037c0acd5c5ae6447d0125d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18928 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 Uyg}ig2v?5V9<#56J}CVE0fep~kN^Mx diff --git a/main.srec b/main.srec deleted file mode 100644 index bc4dc9a..0000000 --- a/main.srec +++ /dev/null @@ -1,434 +0,0 @@ -S00C00006D61696E2E7372656373 -S113000018F09FE518F09FE518F09FE518F09FE5BC -S113001018F09FE518F09FE518F09FE518F09FE5AC -S11300206008000064080000680800006C08000014 -S1130030700800004C1500009409000074080000CA -S1130040260000EA8C609FE5000056E380402DE91D -S1130050016046E21E00000A7C509FE50000A0E318 -S11300600010A0E30C2015E510E015E5084015E5A7 -S113007002005EE1042082000900000A000054E34B -S11300800700000A0270A0E102C0A0E10C00BEE873 -S11300900C00ACE80C3067E0030054E10C20A0E154 -S11300A0F9FFFF1A04E015E500005EE30230A01139 -S11300B00300000A0300A3E803C062E00C005EE151 -S11300C0FBFFFF1A016046E2010076E3145085E26B -S11300D0E3FFFF1A030500EB010000009016000087 -S11300E03C108FE21600A0E3563412EF000050E3F8 -S11300F0080000BA28209FE51CD09FE5080092E57F -S1130100000050E300D0A01110109FE5040092E518 -S1130110000050E300008115C9FFFFEAF8FFFF3F2C -S1130120D01A0000801B000000D01FE5C4FFFFEAC6 -S1130130F8FFFF3F08402DE92C009FE52C309FE598 -S1130140033060E0060053E30100008A0840BDE884 -S11301501EFF2FE118309FE5000053E3FAFFFF0A6A -S11301600FE0A0E113FF2FE1F7FFFFEAD81A000028 -S1130170DB1A00000000000008402DE934009FE570 -S113018034309FE5033060E04331A0E1A33F83E0D6 -S1130190C310B0E10100001A0840BDE81EFF2FE1C2 -S11301A018209FE5000052E3FAFFFF0A0FE0A0E1E8 -S11301B012FF2FE1F7FFFFEAD81A0000D81A000057 -S11301C00000000010402DE92C409FE50030D4E5EC -S11301D0000053E30600001AD5FFFFEB1C309FE537 -S11301E0000053E318009F1500F020130130A0E332 -S11301F00030C4E51040BDE81EFF2FE1D81A00000E -S113020000000000D815000008402DE934309FE5B7 -S1130210000053E330009F1530109F1500F02013A9 -S11302202C009FE5003090E5000053E30300000A32 -S113023020309FE5000053E30FE0A01113FF2F11BE -S11302400840BDE8CBFFFFEA00000000D81500001D -S1130250DC1A00009016000000000000F0412DE9B7 -S11302600150A0E10280A0E10340A0E1000061E0B0 -S1130270C50200EB0060A0E118009DE5000064E009 -S1130280C10200EB0070A0E1080065E0BE0200EBD3 -S11302900010A0E10700A0E1580300EB0010A0E16A -S11302A00600A0E1EF0200EBAC0300EB040080E0E9 -S11302B0F081BDE870402DE918D04DE218308DE290 -S11302C0070003E91F40A0E300408DE514009DE50D -S11302D00010A0E3FF20A0E30130A0E1DEFFFFEB6C -S11302E00060A0E13F30A0E300308DE510009DE503 -S11302F00010A0E3FF20A0E30130A0E1D6FFFFEB54 -S11303000050A0E100408DE50C009DE50010A0E345 -S1130310FF20A0E30130A0E1CFFFFFEB046006E083 -S1130320800586E17060FFE63F5005E2850286E1C4 -S11303307000BFE618D08DE27080BDE808D04DE2B1 -S113034004C04DE20C008CE98000A0E1320380E29D -S11303500115A0E108209DE51F2002E200309DE583 -S1130360832582E104309DE53F3003E2833282E15C -S11303707330FFE6B13080E108D08DE21EFF2FE13B -S113038030002DE910D04DE210308DE2070003E972 -S11303900030A0E3F44A01E3004040E303C084E0FA -S11303A010508DE2070015E907008CE80C3083E259 -S11303B0600053E3F8FFFF1A10D08DE23000BDE86F -S11303C01EFF2FE108402DE9DC3501E3003040E356 -S11303D0070093E8E9FFFFEB0880BDE804402DE542 -S11303E014D04DE210408DE20E0004E908209DE592 -S11303F03F2062E20C309DE51F3063E204109DE56E -S11304001F1061E2001080E5042080E5083080E5DB -S113041014D08DE21000BDE81EFF2FE1F04F2DE94E -S11304202CD04DE20090A0E1C03FA0E1233FA0E129 -S1130430032080E0032002E2023063E0033183E022 -S11304400332A0E110308DE5032080E2000050E388 -S11304500020A0A14221A0E1022262E08221A0E1C9 -S11304600280A0E1782082E214208DE5502083E20E -S1130470020053E12C0000BA3C0000EA086084E06A -S113048060309BE5030059E11800001A0C109DE54B -S1130490003091E5013043E208209DE5030052E17C -S11304A0070000DA4F2062E2020053E1040000AAD0 -S11304B0040053E1020000AA772064E2020053E141 -S11304C00A0000BA1C708DE20700A0E10E0095E856 -S11304D0C1FFFFEB24309DE500308DE50C0097E86B -S11304E00A00A0E10610A0E193FFFFEB050000EA7B -S11304F0083095E500308DE50C0095E80A00A0E190 -S11305000610A0E18CFFFFEB014084E2780054E385 -S1130510D9FFFF1A08309DE5013083E208308DE5EC -S1130520500053E30900001A100000EA0010A0E391 -S113053008108DE5F4BA01E300B040E3805080E098 -S113054005518BE0982601E3002040E30C208DE563 -S113055008309DE510109DE501A083E014209DE581 -S1130560020058E10040A0B3C3FFFFBAE8FFFFEA6E -S11305702CD08DE2F08FBDE810402DE90040A0E3BF -S11305800400A0E1A4FFFFEB014084E2080054E36F -S1130590FAFFFF1A1080BDE808402DE9F43A01E3A0 -S11305A0003040E3600093E5640083E5070050E316 -S11305B0F43A0113003040130120801260208315A7 -S11305C095FFFFEBF43A01E3003040E3600093E56C -S11305D091FFFFEB0880BDE808402DE9F43A01E300 -S11305E0003040E3600093E5640083E5000050E3DD -S11305F0F43A0113003040130120401260208315A7 -S113060085FFFFEBF43A01E3003040E3600093E53B -S113061081FFFFEB0880BDE804402DE514D04DE2D6 -S113062004C08DE20E008CE8F42A01E3002040E3CC -S1130630800080E0004182E007009CE80B0084E831 -S113064014D08DE21000BDE81EFF2FE104E02DE57B -S113065014D04DE204308DE2070083E8F42A01E36C -S1130660002040E3600092E50E0093E8E9FFFFEB11 -S113067014D08DE20080BDE80030A0E1F42A01E34B -S1130680002040E3601092E5811081E0012182E0C6 -S1130690070092E8070083E80300A0E11EFF2FE1B2 -S11306A008402DE9F43A01E3003040E3600093E5AB -S11306B059FFFFEB0880BDE8983601E3003040E3C2 -S11306C0000083E51EFF2FE1FF2F01E3212F4FE3FD -S11306D0DF3F12E5020913E3FCFFFF1A1EFF2FE1BF -S11306E008402DE9F43A01E3003040E30020A0E3A0 -S11306F06C2083E5702083E5F2FFFFEBFF3F01E30D -S1130700213F4FE30320A0E3DF2F03E50880BDE88A -S1130710FF3F01E3213F4FE3DF2F13E5020912E31B -S11307201EFF2F01F43A01E3003040E36C3093E5FF -S1130730000053E30400001AF43A01E3003040E3FC -S11307400120A0E36C2083E51EFF2FE1010053E3A9 -S11307500500001AF43A01E3003040E36820C3E5E1 -S11307600220A0E36C2083E51EFF2FE1020053E387 -S11307700500001AF43A01E3003040E36920C3E5C0 -S11307800320A0E36C2083E51EFF2FE1030053E365 -S11307901EFF2F11F43A01E3003040E36A20C3E561 -S11307A00020A0E36C2083E50120A0E3702083E512 -S11307B01EFF2FE1F40A01E3000040E30030A0E350 -S11307C0703080E5680080E21EFF2FE170402DE963 -S11307D008D04DE20050A0E10140A0E1D000D0E1FA -S11307E01F60A0E300608DE5800080E20010A0E3BC -S11307F0FF20A0E30130A0E197FEFFEB000084E5B9 -S1130800D100D5E13F30A0E300308DE5800080E2E7 -S11308100010A0E3FF20A0E30130A0E18EFEFFEB77 -S1130820040084E5D200D5E100608DE5800080E21B -S11308300010A0E3FF20A0E30130A0E186FEFFEB5F -S1130840080084E508D08DE27080BDE80030A0E3A4 -S1130850203F4FE30F20A0E3582083E51EFF2FE144 -S1130860FEFFFFEAFEFFFFEAFEFFFFEAFEFFFFEAEC -S1130870FEFFFFEAFEFFFFEAD330A0E303F029E125 -S11308801EFF2FE1D230A0E303F029E10730E0E3BB -S113089003D0A0E1D330A0E303F029E11EFF2FE150 -S11308A05330A0E303F029E11EFF2FE104402DE5BE -S11308B0C031A0E10330C3E34B3B43E21F2000E21D -S11308C000C313E50140A0E314228CE1002303E5F7 -S11308D04A0B40E20010C0E51000BDE81EFF2FE106 -S11308E008402DE94900A0E30110A0E3EEFFFFEB6F -S11308F0132AE0E3FF3F0FE3FB3E02E50130A0E3F0 -S1130900FF3E02E5122AE0E3FF3F02E50880BDE86E -S113091008402DE90020A0E3202F4FE35C3092E54E -S11309205C3082E5010013E30200000A19FFFFEBCB -S11309303F20A0E3120000EA020013E30A00000AC9 -S1130940F43A01E3003040E3743093E5010053E3EB -S1130950F43A01E3003040E30020A0030120A01397 -S1130960742083E50620A0E3050000EA040013E3F5 -S11309704F20A0030200000A16FFFFEB5B20A0E358 -S1130980FFFFFFEA0030A0E3203F4FE3202083E590 -S11309900880BDE804E04EE20F502DE9133AE0E38D -S11309A0F33E13E5490053E30400001AD7FFFFEBBD -S11309B04920A0E3133AE0E3EF2E03E50F90FDE8AE -S11309C0FEFFFFEA030050E30C0000CA2030A0E35E -S11309D0203F4FE38001A0E1002093E5FFC0A0E3A6 -S11309E01CC0C2E1DC2501E3002040E3012182E0D8 -S11309F00C2092E512008CE1000083E51EFF2FE13C -S1130A00040040E23030A0E3203F4FE3F0FFFFEA70 -S1130A10F04F2DE91CD04DE299FFFFEBAFFFFFEB48 -S1130A2089FFFFEB9DFFFFEB65FEFFEB0100A0E3F9 -S1130A3020FFFFEB7C319FE5070093E84FFEFFEBBF -S1130A40CCFEFFEB25FFFFEBF45A01E3005040E33B -S1130A5001B0A0E3989601E3009040E30040A0E3D6 -S1130A60807085E2703095E5010053E31400001AAC -S1130A704FFFFFEB0060A0E1780085E517FFFFEB77 -S1130A80743095E5010053E30900001A044089E538 -S1130A907C6085E50200A0E306FFFFEB0600A0E111 -S1130AA00710A0E148FFFFEB070097E8E6FEFFEB25 -S1130AB0010000EA0B00A0E1FEFEFFEBF7FEFFEBF6 -S1130AC0000000EA11FFFFEB043099E5000053E356 -S1130AD00700000A0460A0E10600A0E10410A0E100 -S1130AE0B7FFFFEB016086E2060056E3F9FFFF1A49 -S1130AF0DBFFFFEA08608DE20600A0E1DDFEFFEB0C -S1130B00070096E8070087E8800095E5FF60A0E30A -S1130B1000608DE50410A0E11F20A0E30430A0E1F3 -S1130B20CDFDFFEB0080A0E1840095E500608DE53C -S1130B300410A0E13F20A0E30430A0E1C6FDFFEBD8 -S1130B400060A0E1FE0050E3FF60A003880095E58B -S1130B50FF30A0E300308DE50410A0E11F20A0E3E6 -S1130B600430A0E1BCFDFFEB00A0A0E10400A0E183 -S1130B700F100AE292FFFFEB0B00A0E15A12E3E729 -S1130B808FFFFFEB0200A0E30F1006E28CFFFFEBE8 -S1130B900300A0E35612E3E789FFFFEB0400A0E3A0 -S1130BA00F1008E286FFFFEB0500A0E35812E3E70D -S1130BB083FFFFEBAAFFFFEA28160000020120E2F0 -S1130BC0000000EA021121E28020B0E18130B0117E -S1130BD00300321142CCF01143CCF0114700000A5B -S1130BE0222CA0E1233C72E0032082C0011020C02B -S1130BF0000021C0011020C0003063B2190053E38B -S1130C001EFF2F81020110E3020580E3FF04C0E30D -S1130C1000006012020111E3021581E3FF14C1E335 -S1130C2000106112030032E12E00000A012042E2AA -S1130C30510390E0203063E21113A0E1023100E29D -S1130C400100005A001071E20000E0E2020550E3E6 -S1130C500B00003A010450E30400003AA000B0E1A4 -S1130C606110A0E1012082E2FE0052E33800002A74 -S1130C70020151E3820BA0E00100C003030080E104 -S1130C801EFF2FE18110B0E10000A0E0020510E397 -S1130C90012042E2F5FFFF1A20C6B0E10006A001E0 -S1130CA00C204202FF0810E30004A00108204202C5 -S1130CB00F0610E30002A00104204202030510E322 -S1130CC00001A00102204202020550E38000A0318D -S1130CD00020D2E2820B80A0002062B2030080A137 -S1130CE0300283B11EFF2FE1000032E3021521E23E -S1130CF0020520020120820201304312CAFFFFEAEA -S1130D008130A0E142CCF0E143CCF0111300000AA1 -S1130D10030032E10200000A000032E30100A001F6 -S1130D201EFF2FE1010030E10000A0131EFF2F1170 -S1130D30FF0412E30200001A8000B0E102018023E4 -S1130D401EFF2FE1022492E2020580321EFF2F31A2 -S1130D50023100E27F0483E3020580E31EFF2FE1FA -S1130D60422CF0E10100A011433CF0010010A0115D -S1130D708024B0E18134B001010030010105801309 -S1130D801EFF2FE10030A0E3010000EA023110E26F -S1130D900000604200C0B0E11EFF2F014B3483E32A -S1130DA00010A0E10000A0E30F0000EA012090E1A0 -S1130DB01EFF2F010030A0E3050000EA012090E1AE -S1130DC01EFF2F01023111E20100005A000070E2FF -S1130DD00010E1E201C0B0E100C0A0010010A001D8 -S1130DE00000A0035B3483E301324302023543E293 -S1130DF01720A0E301085CE32CC8A02110204222A4 -S1130E00010C5CE32CC4A0210820422210005CE306 -S1130E102CC2A0210420422204005CE302204222CE -S1130E20AC204230AC2152E0823B43E0060000BAE1 -S1130E30113283E010C2A0E1202062E202015CE3EF -S1130E403002A3E00100C0031EFF2FE1202082E254 -S1130E5011C2A0E1202062E28C0090E13102A3E003 -S1130E60AC0FC0011EFF2FE1FFC0A0E3A02B1CE0CC -S1130E70A13B1C100C0032110C0033113E00000A7F -S1130E80032082E001C020E08004B0E18114B011AD -S1130E901000000A0233A0E3A00283E1A11283E15F -S1130EA0903181E002010CE2020551E38110A0318E -S1130EB0A31F81318330A031010080E17F20C2E291 -S1130EC0FD0052E30F00008A020153E3820BA0E00D -S1130ED00100C0031EFF2FE1000030E302C10CE259 -S1130EE08114A001A0048CE1A10480E17F2052E2DE -S1130EF0FF3072C2820B80C11EFF2FC1020580E346 -S1130F000030A0E3012052E2350000CA190072E368 -S1130F10020100D21EFF2FD1002062E28010B0E156 -S1130F203112A0E1202062E210C2A0E16100B0E130 -S1130F300000A0E28C3093E1AC0FC0011EFF2FE152 -S1130F40000032E302C100E28000A00102051003A8 -S1130F5001204202FBFFFF0A0C0080E1000033E3A2 -S1130F6002C101E28110A001020511030130430214 -S1130F70FBFFFF0A0C1081E1C0FFFFEAA13B0CE07C -S1130F800C0032E10C0033110500000A02C1D0E369 -S1130F9002C1D113E9FFFF1A010020E0020100E2BF -S1130FA01EFF2FE1000030E3020130130100A00115 -S1130FB000003113020131130D00000A0C0032E16C -S1130FC00100001A8024B0E10900001A0C0033E18A -S1130FD00200001A8134B0E10100A0110400001ADB -S1130FE0010020E0020100E27F0480E3020580E3C7 -S1130FF01EFF2FE17F0480E3030580E31EFF2FE142 -S1131000FFC0A0E3A02B1CE0A13B1C100C0032117C -S11310100C0033113A00000A032042E001C020E032 -S11310208114B0E18004A0E11C00000A0132A0E3B5 -S1131030211283E1203283E102010CE2010053E139 -S11310408330A0317D20A2E202C5A0E3010053E178 -S1131050013043200C008021A10053E1A130432042 -S1131060AC008021210153E1213143202C01802156 -S1131070A10153E1A1314320AC0180210332B0E14D -S11310802CC2B011F0FFFF1AFD0052E39DFFFF8A4E -S1131090010053E1820BA0E00100C0031EFF2FE119 -S11310A002C10CE2A0048CE17F2092E2FF3072C204 -S11310B0820B80C11EFF2FC1020580E30030A0E334 -S11310C0012052E28FFFFFEA000032E302C100E296 -S11310D08000A0010205100301204202FBFFFF0A69 -S11310E00C0080E1000033E302C101E28110A001A1 -S11310F00205110301304302FBFFFF0A0C1081E1DA -S1131100C4FFFFEAA13B0CE00C0032E10500001A29 -S11311108024B0E1B6FFFF1A0C0033E1AFFFFF1AE1 -S11311200100A0E1B2FFFFEA0C0033E10300001A62 -S11311308134B0E197FFFF0A0100A0E1ACFFFFEAB0 -S113114002C1D0E302C1D113DEFFFF1A0221D0E3B2 -S1131150A2FFFF1A0231D1E38EFFFF1AA4FFFFEAB8 -S11311608020A0E17F0452E30800003A9E30A0E30F -S1131170222C53E00700009A0034A0E1023183E3FB -S1131180020110E33302A0E1000060121EFF2FE110 -S11311900000A0E31EFF2FE1610072E30100001ACA -S11311A08024B0E10200001A020110E20201E0030F -S11311B01EFF2FE10000A0E31EFF2FE10010A0E1BD -S11311C00000A0E308402DE90020A0E10030A0E1E8 -S11311D00E0000EB0840BDE81EFF2FE108402DE99A -S11311E00010A0E30040A0E1450000EB18309FE5AB -S11311F0000093E53C3090E5000053E30FE0A011BC -S113120013FF2F110400A0E1C90000EB3816000001 -S1131210E4C09FE5F0412DE900409CE548C194E518 -S113122000005CE353CF840204509CE548C184056C -S11312301F0055E310D04DE20060A0E1150000DA74 -S1131240B8009FE5000050E30100001A0000E0E34D -S1131250180000EA190EA0E30C108DE508208DE5B6 -S113126004308DE500F020E300C050E20C109DE551 -S113127008209DE504309DE5F3FFFF0A485194E5FD -S11312800000A0E304008CE500508CE548C184E52F -S113129088018CE58C018CE5000056E304409CE554 -S11312A00700001A023084E2014084E203118CE753 -S11312B004408CE50000A0E310D08DE2F041BDE8CD -S11312C01EFF2FE10100A0E31004A0E104818CE0E3 -S11312D0020056E388719CE5083188E58C319C0551 -S11312E0007087E1000083010850A0E1882088E5B0 -S11312F088718CE58C018C05E9FFFFEA3816000043 -S113130000000000F04F2DE968319FE5003093E5BF -S113131014D04DE204308DE5523F83E208008DE5A0 -S11313200C308DE50170A0E10180A0E304309DE55F -S1131330486193E5000056E30CB09DE53300000AD4 -S1131340045096E5014055E288A086521F5085520C -S113135005518A500700005A290000EA003095E53B -S1131360070053E10500000A014044E2010074E370 -S1131370045045E22200000A000057E3F6FFFF1A7A -S1131380043096E505206AE0013043E2022086E05D -S1131390040053E1783012E50010A01304408605E0 -S11313A078100215000053E3EEFFFF0A1824A0E1B1 -S11313B0881196E5010012E1049096E51600000AF2 -S11313C08C1196E5010012E11600001A08009DE553 -S11313D0801015E50FE0A0E113FF2FE1043096E53E -S11313E0090053E1D0FFFF1A00309BE5060053E1EA -S11313F0CDFFFF1A014044E2010074E3045045E2CA -S1131400DCFFFF1A70109FE5000051E30900001A89 -S113141014D08DE2F04FBDE81EFF2FE10FE0A0E1F4 -S113142013FF2FE1ECFFFFEA800015E50FE0A0E1D8 -S113143013FF2FE1E8FFFFEA043096E5000053E3D1 -S1131440003096E50800001A000053E30600000A85 -S11314500600A0E100308BE500F020E300609BE58E -S1131460000056E3B5FFFF1AE8FFFFEA06B0A0E16B -S11314700360A0E1F9FFFFEA381600000000000055 -S113148008402DE910309FE5000053E30C009F1540 -S113149049FFFF1B0840BDE81EFF2FE16016000056 -S11314A0A414000038402DE930509FE530409FE5FA -S11314B0044065E04441B0E1045185100400000A91 -S11314C0043035E50FE0A0E113FF2FE1014054E2C1 -S11314D0FAFFFF1A610000EB3840BDE81EFF2FE160 -S11314E0781600007C16000008402DE9170000EB78 -S11314F030309FE5000053E3000093150300A00182 -S113150024309FE5000053E3001093150310A0015D -S11315100020A0E33DFDFFEB10309FE5000053E306 -S11315202DFFFF1BFEFFFFEA00000000000000008B -S1131530DC11000004E02DE51800A0E304109FE591 -S1131540563412EFFEFFFFEA26000200FEFFFFEA18 -S113155070402DE96C509FE56C609FE5066065E086 -S11315604661B0E1045045120040A0130500000A92 -S11315700430B5E5014084E20FE0A0E113FF2FE160 -S1131580040056E1F9FFFF1A40509FE540609FE5D3 -S1131590066065E0290000EB4661B0E104504512A5 -S11315A00040A0130500000A0430B5E5014084E2C0 -S11315B00FE0A0E113FF2FE1040056E1F9FFFF1A49 -S11315C07040BDE81EFF2FE15816000058160000B9 -S10B15D058160000601600002B -S10715D8000000000B -S11315DC0000000000000000000000003F000000BC -S11315EC060000005B0000004F00000066000000D5 -S11315FC6D0000007D000000070000007F0000006B -S113160C67000000770000007C0000005800000018 -S113161C5E00000079000000710000000A00000068 -S113162C140000000A000000201021FFA81600007E -S113163C430000000DC0A0E1F8DF2DE904B04CE23A -S113164C28D04BE2F06F9DE81EFF2FE180140000C0 -S113165C080200000DC0A0E1F8DF2DE904B04CE253 -S113166C28D04BE2F06F9DE81EFF2FE1C40100006F -S113167C000000000000000000000000D81A000068 -S107168CA8000000AE -S11316900000000000000000050000000100000040 -S11316A0A8160000000000000000000094190000CB -S11316B0FC190000641A0000000000000000000093 -S11316C00000000000000000000000000000000016 -S11316D00000000000000000000000003C160000B4 -S11316E000000000000000000000000000000000F6 -S11316F000000000000000000000000000000000E6 -S113170000000000000000000000000000000000D5 -S113171000000000000000000000000000000000C5 -S113172000000000000000000000000000000000B5 -S113173000000000000000000000000000000000A5 -S11317400000000000000000000000000000000095 -S113175001000000000000000E33CDAB34126DE632 -S1131760ECDE05000B00000000000000000000009B -S11317700000000000000000000000000000000065 -S11317800000000000000000000000000000000055 -S11317900000000000000000000000000000000045 -S11317A00000000000000000000000000000000035 -S11317B00000000000000000000000000000000025 -S11317C00000000000000000000000000000000015 -S11317D00000000000000000000000000000000005 -S11317E000000000000000000000000000000000F5 -S11317F000000000000000000000000000000000E5 -S113180000000000000000000000000000000000D4 -S113181000000000000000000000000000000000C4 -S113182000000000000000000000000000000000B4 -S113183000000000000000000000000000000000A4 -S11318400000000000000000000000000000000094 -S11318500000000000000000000000000000000084 -S11318600000000000000000000000000000000074 -S11318700000000000000000000000000000000064 -S11318800000000000000000000000000000000054 -S11318900000000000000000000000000000000044 -S11318A00000000000000000000000000000000034 -S11318B00000000000000000000000000000000024 -S11318C00000000000000000000000000000000014 -S11318D00000000000000000000000000000000004 -S11318E000000000000000000000000000000000F4 -S11318F000000000000000000000000000000000E4 -S113190000000000000000000000000000000000D3 -S113191000000000000000000000000000000000C3 -S113192000000000000000000000000000000000B3 -S113193000000000000000000000000000000000A3 -S11319400000000000000000000000000000000093 -S11319500000000000000000000000000000000083 -S11319600000000000000000000000000000000073 -S11319700000000000000000000000000000000063 -S11319800000000000000000000000000000000053 -S11319900000000000000000000000000000000043 -S11319A00000000000000000000000000000000033 -S11319B00000000000000000000000000000000023 -S11319C00000000000000000000000000000000013 -S11319D00000000000000000000000000000000003 -S11319E000000000000000000000000000000000F3 -S11319F000000000000000000000000000000000E3 -S1131A0000000000000000000000000000000000D2 -S1131A1000000000000000000000000000000000C2 -S1131A2000000000000000000000000000000000B2 -S1131A3000000000000000000000000000000000A2 -S1131A400000000000000000000000000000000092 -S1131A500000000000000000000000000000000082 -S1131A600000000000000000000000000000000072 -S1131A700000000000000000000000000000000062 -S1131A800000000000000000000000000000000052 -S1131A900000000000000000000000000000000042 -S1131AA00000000000000000000000000000000032 -S1131AB00000000000000000000000000000000022 -S1131AC00000000000000000000000000000000012 -S10B1AD0F8FFFF3F00000000D5 -S9030128D3