You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

RTC.list 462KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180
  1. RTC.elf: file format elf32-littlearm
  2. Sections:
  3. Idx Name Size VMA LMA File off Algn
  4. 0 .isr_vector 00000194 08000000 08000000 00010000 2**0
  5. CONTENTS, ALLOC, LOAD, READONLY, DATA
  6. 1 .text 00005de4 08000198 08000198 00010198 2**3
  7. CONTENTS, ALLOC, LOAD, READONLY, CODE
  8. 2 .rodata 00000290 08005f80 08005f80 00015f80 2**3
  9. CONTENTS, ALLOC, LOAD, READONLY, DATA
  10. 3 .ARM.extab 00000000 08006210 08006210 00020088 2**0
  11. CONTENTS
  12. 4 .ARM 00000008 08006210 08006210 00016210 2**2
  13. CONTENTS, ALLOC, LOAD, READONLY, DATA
  14. 5 .preinit_array 00000000 08006218 08006218 00020088 2**0
  15. CONTENTS, ALLOC, LOAD, DATA
  16. 6 .init_array 00000004 08006218 08006218 00016218 2**2
  17. CONTENTS, ALLOC, LOAD, DATA
  18. 7 .fini_array 00000004 0800621c 0800621c 0001621c 2**2
  19. CONTENTS, ALLOC, LOAD, DATA
  20. 8 .data 00000088 20000000 08006220 00020000 2**2
  21. CONTENTS, ALLOC, LOAD, DATA
  22. 9 .bss 000000c0 20000088 080062a8 00020088 2**2
  23. ALLOC
  24. 10 ._user_heap_stack 00000600 20000148 080062a8 00020148 2**0
  25. ALLOC
  26. 11 .ARM.attributes 00000030 00000000 00000000 00020088 2**0
  27. CONTENTS, READONLY
  28. 12 .debug_info 000098e6 00000000 00000000 000200b8 2**0
  29. CONTENTS, READONLY, DEBUGGING
  30. 13 .debug_abbrev 0000196e 00000000 00000000 0002999e 2**0
  31. CONTENTS, READONLY, DEBUGGING
  32. 14 .debug_aranges 00000910 00000000 00000000 0002b310 2**3
  33. CONTENTS, READONLY, DEBUGGING
  34. 15 .debug_ranges 00000838 00000000 00000000 0002bc20 2**3
  35. CONTENTS, READONLY, DEBUGGING
  36. 16 .debug_macro 00015f3a 00000000 00000000 0002c458 2**0
  37. CONTENTS, READONLY, DEBUGGING
  38. 17 .debug_line 00007bf1 00000000 00000000 00042392 2**0
  39. CONTENTS, READONLY, DEBUGGING
  40. 18 .debug_str 00089db1 00000000 00000000 00049f83 2**0
  41. CONTENTS, READONLY, DEBUGGING
  42. 19 .comment 0000007b 00000000 00000000 000d3d34 2**0
  43. CONTENTS, READONLY
  44. 20 .debug_frame 000029c4 00000000 00000000 000d3db0 2**2
  45. CONTENTS, READONLY, DEBUGGING
  46. Disassembly of section .text:
  47. 08000198 <__do_global_dtors_aux>:
  48. 8000198: b510 push {r4, lr}
  49. 800019a: 4c05 ldr r4, [pc, #20] ; (80001b0 <__do_global_dtors_aux+0x18>)
  50. 800019c: 7823 ldrb r3, [r4, #0]
  51. 800019e: b933 cbnz r3, 80001ae <__do_global_dtors_aux+0x16>
  52. 80001a0: 4b04 ldr r3, [pc, #16] ; (80001b4 <__do_global_dtors_aux+0x1c>)
  53. 80001a2: b113 cbz r3, 80001aa <__do_global_dtors_aux+0x12>
  54. 80001a4: 4804 ldr r0, [pc, #16] ; (80001b8 <__do_global_dtors_aux+0x20>)
  55. 80001a6: f3af 8000 nop.w
  56. 80001aa: 2301 movs r3, #1
  57. 80001ac: 7023 strb r3, [r4, #0]
  58. 80001ae: bd10 pop {r4, pc}
  59. 80001b0: 20000088 .word 0x20000088
  60. 80001b4: 00000000 .word 0x00000000
  61. 80001b8: 08005f64 .word 0x08005f64
  62. 080001bc <frame_dummy>:
  63. 80001bc: b508 push {r3, lr}
  64. 80001be: 4b03 ldr r3, [pc, #12] ; (80001cc <frame_dummy+0x10>)
  65. 80001c0: b11b cbz r3, 80001ca <frame_dummy+0xe>
  66. 80001c2: 4903 ldr r1, [pc, #12] ; (80001d0 <frame_dummy+0x14>)
  67. 80001c4: 4803 ldr r0, [pc, #12] ; (80001d4 <frame_dummy+0x18>)
  68. 80001c6: f3af 8000 nop.w
  69. 80001ca: bd08 pop {r3, pc}
  70. 80001cc: 00000000 .word 0x00000000
  71. 80001d0: 2000008c .word 0x2000008c
  72. 80001d4: 08005f64 .word 0x08005f64
  73. 080001d8 <strlen>:
  74. 80001d8: 4603 mov r3, r0
  75. 80001da: f813 2b01 ldrb.w r2, [r3], #1
  76. 80001de: 2a00 cmp r2, #0
  77. 80001e0: d1fb bne.n 80001da <strlen+0x2>
  78. 80001e2: 1a18 subs r0, r3, r0
  79. 80001e4: 3801 subs r0, #1
  80. 80001e6: 4770 bx lr
  81. 080001e8 <__aeabi_drsub>:
  82. 80001e8: f081 4100 eor.w r1, r1, #2147483648 ; 0x80000000
  83. 80001ec: e002 b.n 80001f4 <__adddf3>
  84. 80001ee: bf00 nop
  85. 080001f0 <__aeabi_dsub>:
  86. 80001f0: f083 4300 eor.w r3, r3, #2147483648 ; 0x80000000
  87. 080001f4 <__adddf3>:
  88. 80001f4: b530 push {r4, r5, lr}
  89. 80001f6: ea4f 0441 mov.w r4, r1, lsl #1
  90. 80001fa: ea4f 0543 mov.w r5, r3, lsl #1
  91. 80001fe: ea94 0f05 teq r4, r5
  92. 8000202: bf08 it eq
  93. 8000204: ea90 0f02 teqeq r0, r2
  94. 8000208: bf1f itttt ne
  95. 800020a: ea54 0c00 orrsne.w ip, r4, r0
  96. 800020e: ea55 0c02 orrsne.w ip, r5, r2
  97. 8000212: ea7f 5c64 mvnsne.w ip, r4, asr #21
  98. 8000216: ea7f 5c65 mvnsne.w ip, r5, asr #21
  99. 800021a: f000 80e2 beq.w 80003e2 <__adddf3+0x1ee>
  100. 800021e: ea4f 5454 mov.w r4, r4, lsr #21
  101. 8000222: ebd4 5555 rsbs r5, r4, r5, lsr #21
  102. 8000226: bfb8 it lt
  103. 8000228: 426d neglt r5, r5
  104. 800022a: dd0c ble.n 8000246 <__adddf3+0x52>
  105. 800022c: 442c add r4, r5
  106. 800022e: ea80 0202 eor.w r2, r0, r2
  107. 8000232: ea81 0303 eor.w r3, r1, r3
  108. 8000236: ea82 0000 eor.w r0, r2, r0
  109. 800023a: ea83 0101 eor.w r1, r3, r1
  110. 800023e: ea80 0202 eor.w r2, r0, r2
  111. 8000242: ea81 0303 eor.w r3, r1, r3
  112. 8000246: 2d36 cmp r5, #54 ; 0x36
  113. 8000248: bf88 it hi
  114. 800024a: bd30 pophi {r4, r5, pc}
  115. 800024c: f011 4f00 tst.w r1, #2147483648 ; 0x80000000
  116. 8000250: ea4f 3101 mov.w r1, r1, lsl #12
  117. 8000254: f44f 1c80 mov.w ip, #1048576 ; 0x100000
  118. 8000258: ea4c 3111 orr.w r1, ip, r1, lsr #12
  119. 800025c: d002 beq.n 8000264 <__adddf3+0x70>
  120. 800025e: 4240 negs r0, r0
  121. 8000260: eb61 0141 sbc.w r1, r1, r1, lsl #1
  122. 8000264: f013 4f00 tst.w r3, #2147483648 ; 0x80000000
  123. 8000268: ea4f 3303 mov.w r3, r3, lsl #12
  124. 800026c: ea4c 3313 orr.w r3, ip, r3, lsr #12
  125. 8000270: d002 beq.n 8000278 <__adddf3+0x84>
  126. 8000272: 4252 negs r2, r2
  127. 8000274: eb63 0343 sbc.w r3, r3, r3, lsl #1
  128. 8000278: ea94 0f05 teq r4, r5
  129. 800027c: f000 80a7 beq.w 80003ce <__adddf3+0x1da>
  130. 8000280: f1a4 0401 sub.w r4, r4, #1
  131. 8000284: f1d5 0e20 rsbs lr, r5, #32
  132. 8000288: db0d blt.n 80002a6 <__adddf3+0xb2>
  133. 800028a: fa02 fc0e lsl.w ip, r2, lr
  134. 800028e: fa22 f205 lsr.w r2, r2, r5
  135. 8000292: 1880 adds r0, r0, r2
  136. 8000294: f141 0100 adc.w r1, r1, #0
  137. 8000298: fa03 f20e lsl.w r2, r3, lr
  138. 800029c: 1880 adds r0, r0, r2
  139. 800029e: fa43 f305 asr.w r3, r3, r5
  140. 80002a2: 4159 adcs r1, r3
  141. 80002a4: e00e b.n 80002c4 <__adddf3+0xd0>
  142. 80002a6: f1a5 0520 sub.w r5, r5, #32
  143. 80002aa: f10e 0e20 add.w lr, lr, #32
  144. 80002ae: 2a01 cmp r2, #1
  145. 80002b0: fa03 fc0e lsl.w ip, r3, lr
  146. 80002b4: bf28 it cs
  147. 80002b6: f04c 0c02 orrcs.w ip, ip, #2
  148. 80002ba: fa43 f305 asr.w r3, r3, r5
  149. 80002be: 18c0 adds r0, r0, r3
  150. 80002c0: eb51 71e3 adcs.w r1, r1, r3, asr #31
  151. 80002c4: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000
  152. 80002c8: d507 bpl.n 80002da <__adddf3+0xe6>
  153. 80002ca: f04f 0e00 mov.w lr, #0
  154. 80002ce: f1dc 0c00 rsbs ip, ip, #0
  155. 80002d2: eb7e 0000 sbcs.w r0, lr, r0
  156. 80002d6: eb6e 0101 sbc.w r1, lr, r1
  157. 80002da: f5b1 1f80 cmp.w r1, #1048576 ; 0x100000
  158. 80002de: d31b bcc.n 8000318 <__adddf3+0x124>
  159. 80002e0: f5b1 1f00 cmp.w r1, #2097152 ; 0x200000
  160. 80002e4: d30c bcc.n 8000300 <__adddf3+0x10c>
  161. 80002e6: 0849 lsrs r1, r1, #1
  162. 80002e8: ea5f 0030 movs.w r0, r0, rrx
  163. 80002ec: ea4f 0c3c mov.w ip, ip, rrx
  164. 80002f0: f104 0401 add.w r4, r4, #1
  165. 80002f4: ea4f 5244 mov.w r2, r4, lsl #21
  166. 80002f8: f512 0f80 cmn.w r2, #4194304 ; 0x400000
  167. 80002fc: f080 809a bcs.w 8000434 <__adddf3+0x240>
  168. 8000300: f1bc 4f00 cmp.w ip, #2147483648 ; 0x80000000
  169. 8000304: bf08 it eq
  170. 8000306: ea5f 0c50 movseq.w ip, r0, lsr #1
  171. 800030a: f150 0000 adcs.w r0, r0, #0
  172. 800030e: eb41 5104 adc.w r1, r1, r4, lsl #20
  173. 8000312: ea41 0105 orr.w r1, r1, r5
  174. 8000316: bd30 pop {r4, r5, pc}
  175. 8000318: ea5f 0c4c movs.w ip, ip, lsl #1
  176. 800031c: 4140 adcs r0, r0
  177. 800031e: eb41 0101 adc.w r1, r1, r1
  178. 8000322: f411 1f80 tst.w r1, #1048576 ; 0x100000
  179. 8000326: f1a4 0401 sub.w r4, r4, #1
  180. 800032a: d1e9 bne.n 8000300 <__adddf3+0x10c>
  181. 800032c: f091 0f00 teq r1, #0
  182. 8000330: bf04 itt eq
  183. 8000332: 4601 moveq r1, r0
  184. 8000334: 2000 moveq r0, #0
  185. 8000336: fab1 f381 clz r3, r1
  186. 800033a: bf08 it eq
  187. 800033c: 3320 addeq r3, #32
  188. 800033e: f1a3 030b sub.w r3, r3, #11
  189. 8000342: f1b3 0220 subs.w r2, r3, #32
  190. 8000346: da0c bge.n 8000362 <__adddf3+0x16e>
  191. 8000348: 320c adds r2, #12
  192. 800034a: dd08 ble.n 800035e <__adddf3+0x16a>
  193. 800034c: f102 0c14 add.w ip, r2, #20
  194. 8000350: f1c2 020c rsb r2, r2, #12
  195. 8000354: fa01 f00c lsl.w r0, r1, ip
  196. 8000358: fa21 f102 lsr.w r1, r1, r2
  197. 800035c: e00c b.n 8000378 <__adddf3+0x184>
  198. 800035e: f102 0214 add.w r2, r2, #20
  199. 8000362: bfd8 it le
  200. 8000364: f1c2 0c20 rsble ip, r2, #32
  201. 8000368: fa01 f102 lsl.w r1, r1, r2
  202. 800036c: fa20 fc0c lsr.w ip, r0, ip
  203. 8000370: bfdc itt le
  204. 8000372: ea41 010c orrle.w r1, r1, ip
  205. 8000376: 4090 lslle r0, r2
  206. 8000378: 1ae4 subs r4, r4, r3
  207. 800037a: bfa2 ittt ge
  208. 800037c: eb01 5104 addge.w r1, r1, r4, lsl #20
  209. 8000380: 4329 orrge r1, r5
  210. 8000382: bd30 popge {r4, r5, pc}
  211. 8000384: ea6f 0404 mvn.w r4, r4
  212. 8000388: 3c1f subs r4, #31
  213. 800038a: da1c bge.n 80003c6 <__adddf3+0x1d2>
  214. 800038c: 340c adds r4, #12
  215. 800038e: dc0e bgt.n 80003ae <__adddf3+0x1ba>
  216. 8000390: f104 0414 add.w r4, r4, #20
  217. 8000394: f1c4 0220 rsb r2, r4, #32
  218. 8000398: fa20 f004 lsr.w r0, r0, r4
  219. 800039c: fa01 f302 lsl.w r3, r1, r2
  220. 80003a0: ea40 0003 orr.w r0, r0, r3
  221. 80003a4: fa21 f304 lsr.w r3, r1, r4
  222. 80003a8: ea45 0103 orr.w r1, r5, r3
  223. 80003ac: bd30 pop {r4, r5, pc}
  224. 80003ae: f1c4 040c rsb r4, r4, #12
  225. 80003b2: f1c4 0220 rsb r2, r4, #32
  226. 80003b6: fa20 f002 lsr.w r0, r0, r2
  227. 80003ba: fa01 f304 lsl.w r3, r1, r4
  228. 80003be: ea40 0003 orr.w r0, r0, r3
  229. 80003c2: 4629 mov r1, r5
  230. 80003c4: bd30 pop {r4, r5, pc}
  231. 80003c6: fa21 f004 lsr.w r0, r1, r4
  232. 80003ca: 4629 mov r1, r5
  233. 80003cc: bd30 pop {r4, r5, pc}
  234. 80003ce: f094 0f00 teq r4, #0
  235. 80003d2: f483 1380 eor.w r3, r3, #1048576 ; 0x100000
  236. 80003d6: bf06 itte eq
  237. 80003d8: f481 1180 eoreq.w r1, r1, #1048576 ; 0x100000
  238. 80003dc: 3401 addeq r4, #1
  239. 80003de: 3d01 subne r5, #1
  240. 80003e0: e74e b.n 8000280 <__adddf3+0x8c>
  241. 80003e2: ea7f 5c64 mvns.w ip, r4, asr #21
  242. 80003e6: bf18 it ne
  243. 80003e8: ea7f 5c65 mvnsne.w ip, r5, asr #21
  244. 80003ec: d029 beq.n 8000442 <__adddf3+0x24e>
  245. 80003ee: ea94 0f05 teq r4, r5
  246. 80003f2: bf08 it eq
  247. 80003f4: ea90 0f02 teqeq r0, r2
  248. 80003f8: d005 beq.n 8000406 <__adddf3+0x212>
  249. 80003fa: ea54 0c00 orrs.w ip, r4, r0
  250. 80003fe: bf04 itt eq
  251. 8000400: 4619 moveq r1, r3
  252. 8000402: 4610 moveq r0, r2
  253. 8000404: bd30 pop {r4, r5, pc}
  254. 8000406: ea91 0f03 teq r1, r3
  255. 800040a: bf1e ittt ne
  256. 800040c: 2100 movne r1, #0
  257. 800040e: 2000 movne r0, #0
  258. 8000410: bd30 popne {r4, r5, pc}
  259. 8000412: ea5f 5c54 movs.w ip, r4, lsr #21
  260. 8000416: d105 bne.n 8000424 <__adddf3+0x230>
  261. 8000418: 0040 lsls r0, r0, #1
  262. 800041a: 4149 adcs r1, r1
  263. 800041c: bf28 it cs
  264. 800041e: f041 4100 orrcs.w r1, r1, #2147483648 ; 0x80000000
  265. 8000422: bd30 pop {r4, r5, pc}
  266. 8000424: f514 0480 adds.w r4, r4, #4194304 ; 0x400000
  267. 8000428: bf3c itt cc
  268. 800042a: f501 1180 addcc.w r1, r1, #1048576 ; 0x100000
  269. 800042e: bd30 popcc {r4, r5, pc}
  270. 8000430: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000
  271. 8000434: f045 41fe orr.w r1, r5, #2130706432 ; 0x7f000000
  272. 8000438: f441 0170 orr.w r1, r1, #15728640 ; 0xf00000
  273. 800043c: f04f 0000 mov.w r0, #0
  274. 8000440: bd30 pop {r4, r5, pc}
  275. 8000442: ea7f 5c64 mvns.w ip, r4, asr #21
  276. 8000446: bf1a itte ne
  277. 8000448: 4619 movne r1, r3
  278. 800044a: 4610 movne r0, r2
  279. 800044c: ea7f 5c65 mvnseq.w ip, r5, asr #21
  280. 8000450: bf1c itt ne
  281. 8000452: 460b movne r3, r1
  282. 8000454: 4602 movne r2, r0
  283. 8000456: ea50 3401 orrs.w r4, r0, r1, lsl #12
  284. 800045a: bf06 itte eq
  285. 800045c: ea52 3503 orrseq.w r5, r2, r3, lsl #12
  286. 8000460: ea91 0f03 teqeq r1, r3
  287. 8000464: f441 2100 orrne.w r1, r1, #524288 ; 0x80000
  288. 8000468: bd30 pop {r4, r5, pc}
  289. 800046a: bf00 nop
  290. 0800046c <__aeabi_ui2d>:
  291. 800046c: f090 0f00 teq r0, #0
  292. 8000470: bf04 itt eq
  293. 8000472: 2100 moveq r1, #0
  294. 8000474: 4770 bxeq lr
  295. 8000476: b530 push {r4, r5, lr}
  296. 8000478: f44f 6480 mov.w r4, #1024 ; 0x400
  297. 800047c: f104 0432 add.w r4, r4, #50 ; 0x32
  298. 8000480: f04f 0500 mov.w r5, #0
  299. 8000484: f04f 0100 mov.w r1, #0
  300. 8000488: e750 b.n 800032c <__adddf3+0x138>
  301. 800048a: bf00 nop
  302. 0800048c <__aeabi_i2d>:
  303. 800048c: f090 0f00 teq r0, #0
  304. 8000490: bf04 itt eq
  305. 8000492: 2100 moveq r1, #0
  306. 8000494: 4770 bxeq lr
  307. 8000496: b530 push {r4, r5, lr}
  308. 8000498: f44f 6480 mov.w r4, #1024 ; 0x400
  309. 800049c: f104 0432 add.w r4, r4, #50 ; 0x32
  310. 80004a0: f010 4500 ands.w r5, r0, #2147483648 ; 0x80000000
  311. 80004a4: bf48 it mi
  312. 80004a6: 4240 negmi r0, r0
  313. 80004a8: f04f 0100 mov.w r1, #0
  314. 80004ac: e73e b.n 800032c <__adddf3+0x138>
  315. 80004ae: bf00 nop
  316. 080004b0 <__aeabi_f2d>:
  317. 80004b0: 0042 lsls r2, r0, #1
  318. 80004b2: ea4f 01e2 mov.w r1, r2, asr #3
  319. 80004b6: ea4f 0131 mov.w r1, r1, rrx
  320. 80004ba: ea4f 7002 mov.w r0, r2, lsl #28
  321. 80004be: bf1f itttt ne
  322. 80004c0: f012 437f andsne.w r3, r2, #4278190080 ; 0xff000000
  323. 80004c4: f093 4f7f teqne r3, #4278190080 ; 0xff000000
  324. 80004c8: f081 5160 eorne.w r1, r1, #939524096 ; 0x38000000
  325. 80004cc: 4770 bxne lr
  326. 80004ce: f032 427f bics.w r2, r2, #4278190080 ; 0xff000000
  327. 80004d2: bf08 it eq
  328. 80004d4: 4770 bxeq lr
  329. 80004d6: f093 4f7f teq r3, #4278190080 ; 0xff000000
  330. 80004da: bf04 itt eq
  331. 80004dc: f441 2100 orreq.w r1, r1, #524288 ; 0x80000
  332. 80004e0: 4770 bxeq lr
  333. 80004e2: b530 push {r4, r5, lr}
  334. 80004e4: f44f 7460 mov.w r4, #896 ; 0x380
  335. 80004e8: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000
  336. 80004ec: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000
  337. 80004f0: e71c b.n 800032c <__adddf3+0x138>
  338. 80004f2: bf00 nop
  339. 080004f4 <__aeabi_ul2d>:
  340. 80004f4: ea50 0201 orrs.w r2, r0, r1
  341. 80004f8: bf08 it eq
  342. 80004fa: 4770 bxeq lr
  343. 80004fc: b530 push {r4, r5, lr}
  344. 80004fe: f04f 0500 mov.w r5, #0
  345. 8000502: e00a b.n 800051a <__aeabi_l2d+0x16>
  346. 08000504 <__aeabi_l2d>:
  347. 8000504: ea50 0201 orrs.w r2, r0, r1
  348. 8000508: bf08 it eq
  349. 800050a: 4770 bxeq lr
  350. 800050c: b530 push {r4, r5, lr}
  351. 800050e: f011 4500 ands.w r5, r1, #2147483648 ; 0x80000000
  352. 8000512: d502 bpl.n 800051a <__aeabi_l2d+0x16>
  353. 8000514: 4240 negs r0, r0
  354. 8000516: eb61 0141 sbc.w r1, r1, r1, lsl #1
  355. 800051a: f44f 6480 mov.w r4, #1024 ; 0x400
  356. 800051e: f104 0432 add.w r4, r4, #50 ; 0x32
  357. 8000522: ea5f 5c91 movs.w ip, r1, lsr #22
  358. 8000526: f43f aed8 beq.w 80002da <__adddf3+0xe6>
  359. 800052a: f04f 0203 mov.w r2, #3
  360. 800052e: ea5f 0cdc movs.w ip, ip, lsr #3
  361. 8000532: bf18 it ne
  362. 8000534: 3203 addne r2, #3
  363. 8000536: ea5f 0cdc movs.w ip, ip, lsr #3
  364. 800053a: bf18 it ne
  365. 800053c: 3203 addne r2, #3
  366. 800053e: eb02 02dc add.w r2, r2, ip, lsr #3
  367. 8000542: f1c2 0320 rsb r3, r2, #32
  368. 8000546: fa00 fc03 lsl.w ip, r0, r3
  369. 800054a: fa20 f002 lsr.w r0, r0, r2
  370. 800054e: fa01 fe03 lsl.w lr, r1, r3
  371. 8000552: ea40 000e orr.w r0, r0, lr
  372. 8000556: fa21 f102 lsr.w r1, r1, r2
  373. 800055a: 4414 add r4, r2
  374. 800055c: e6bd b.n 80002da <__adddf3+0xe6>
  375. 800055e: bf00 nop
  376. 08000560 <__aeabi_dmul>:
  377. 8000560: b570 push {r4, r5, r6, lr}
  378. 8000562: f04f 0cff mov.w ip, #255 ; 0xff
  379. 8000566: f44c 6ce0 orr.w ip, ip, #1792 ; 0x700
  380. 800056a: ea1c 5411 ands.w r4, ip, r1, lsr #20
  381. 800056e: bf1d ittte ne
  382. 8000570: ea1c 5513 andsne.w r5, ip, r3, lsr #20
  383. 8000574: ea94 0f0c teqne r4, ip
  384. 8000578: ea95 0f0c teqne r5, ip
  385. 800057c: f000 f8de bleq 800073c <__aeabi_dmul+0x1dc>
  386. 8000580: 442c add r4, r5
  387. 8000582: ea81 0603 eor.w r6, r1, r3
  388. 8000586: ea21 514c bic.w r1, r1, ip, lsl #21
  389. 800058a: ea23 534c bic.w r3, r3, ip, lsl #21
  390. 800058e: ea50 3501 orrs.w r5, r0, r1, lsl #12
  391. 8000592: bf18 it ne
  392. 8000594: ea52 3503 orrsne.w r5, r2, r3, lsl #12
  393. 8000598: f441 1180 orr.w r1, r1, #1048576 ; 0x100000
  394. 800059c: f443 1380 orr.w r3, r3, #1048576 ; 0x100000
  395. 80005a0: d038 beq.n 8000614 <__aeabi_dmul+0xb4>
  396. 80005a2: fba0 ce02 umull ip, lr, r0, r2
  397. 80005a6: f04f 0500 mov.w r5, #0
  398. 80005aa: fbe1 e502 umlal lr, r5, r1, r2
  399. 80005ae: f006 4200 and.w r2, r6, #2147483648 ; 0x80000000
  400. 80005b2: fbe0 e503 umlal lr, r5, r0, r3
  401. 80005b6: f04f 0600 mov.w r6, #0
  402. 80005ba: fbe1 5603 umlal r5, r6, r1, r3
  403. 80005be: f09c 0f00 teq ip, #0
  404. 80005c2: bf18 it ne
  405. 80005c4: f04e 0e01 orrne.w lr, lr, #1
  406. 80005c8: f1a4 04ff sub.w r4, r4, #255 ; 0xff
  407. 80005cc: f5b6 7f00 cmp.w r6, #512 ; 0x200
  408. 80005d0: f564 7440 sbc.w r4, r4, #768 ; 0x300
  409. 80005d4: d204 bcs.n 80005e0 <__aeabi_dmul+0x80>
  410. 80005d6: ea5f 0e4e movs.w lr, lr, lsl #1
  411. 80005da: 416d adcs r5, r5
  412. 80005dc: eb46 0606 adc.w r6, r6, r6
  413. 80005e0: ea42 21c6 orr.w r1, r2, r6, lsl #11
  414. 80005e4: ea41 5155 orr.w r1, r1, r5, lsr #21
  415. 80005e8: ea4f 20c5 mov.w r0, r5, lsl #11
  416. 80005ec: ea40 505e orr.w r0, r0, lr, lsr #21
  417. 80005f0: ea4f 2ece mov.w lr, lr, lsl #11
  418. 80005f4: f1b4 0cfd subs.w ip, r4, #253 ; 0xfd
  419. 80005f8: bf88 it hi
  420. 80005fa: f5bc 6fe0 cmphi.w ip, #1792 ; 0x700
  421. 80005fe: d81e bhi.n 800063e <__aeabi_dmul+0xde>
  422. 8000600: f1be 4f00 cmp.w lr, #2147483648 ; 0x80000000
  423. 8000604: bf08 it eq
  424. 8000606: ea5f 0e50 movseq.w lr, r0, lsr #1
  425. 800060a: f150 0000 adcs.w r0, r0, #0
  426. 800060e: eb41 5104 adc.w r1, r1, r4, lsl #20
  427. 8000612: bd70 pop {r4, r5, r6, pc}
  428. 8000614: f006 4600 and.w r6, r6, #2147483648 ; 0x80000000
  429. 8000618: ea46 0101 orr.w r1, r6, r1
  430. 800061c: ea40 0002 orr.w r0, r0, r2
  431. 8000620: ea81 0103 eor.w r1, r1, r3
  432. 8000624: ebb4 045c subs.w r4, r4, ip, lsr #1
  433. 8000628: bfc2 ittt gt
  434. 800062a: ebd4 050c rsbsgt r5, r4, ip
  435. 800062e: ea41 5104 orrgt.w r1, r1, r4, lsl #20
  436. 8000632: bd70 popgt {r4, r5, r6, pc}
  437. 8000634: f441 1180 orr.w r1, r1, #1048576 ; 0x100000
  438. 8000638: f04f 0e00 mov.w lr, #0
  439. 800063c: 3c01 subs r4, #1
  440. 800063e: f300 80ab bgt.w 8000798 <__aeabi_dmul+0x238>
  441. 8000642: f114 0f36 cmn.w r4, #54 ; 0x36
  442. 8000646: bfde ittt le
  443. 8000648: 2000 movle r0, #0
  444. 800064a: f001 4100 andle.w r1, r1, #2147483648 ; 0x80000000
  445. 800064e: bd70 pople {r4, r5, r6, pc}
  446. 8000650: f1c4 0400 rsb r4, r4, #0
  447. 8000654: 3c20 subs r4, #32
  448. 8000656: da35 bge.n 80006c4 <__aeabi_dmul+0x164>
  449. 8000658: 340c adds r4, #12
  450. 800065a: dc1b bgt.n 8000694 <__aeabi_dmul+0x134>
  451. 800065c: f104 0414 add.w r4, r4, #20
  452. 8000660: f1c4 0520 rsb r5, r4, #32
  453. 8000664: fa00 f305 lsl.w r3, r0, r5
  454. 8000668: fa20 f004 lsr.w r0, r0, r4
  455. 800066c: fa01 f205 lsl.w r2, r1, r5
  456. 8000670: ea40 0002 orr.w r0, r0, r2
  457. 8000674: f001 4200 and.w r2, r1, #2147483648 ; 0x80000000
  458. 8000678: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000
  459. 800067c: eb10 70d3 adds.w r0, r0, r3, lsr #31
  460. 8000680: fa21 f604 lsr.w r6, r1, r4
  461. 8000684: eb42 0106 adc.w r1, r2, r6
  462. 8000688: ea5e 0e43 orrs.w lr, lr, r3, lsl #1
  463. 800068c: bf08 it eq
  464. 800068e: ea20 70d3 biceq.w r0, r0, r3, lsr #31
  465. 8000692: bd70 pop {r4, r5, r6, pc}
  466. 8000694: f1c4 040c rsb r4, r4, #12
  467. 8000698: f1c4 0520 rsb r5, r4, #32
  468. 800069c: fa00 f304 lsl.w r3, r0, r4
  469. 80006a0: fa20 f005 lsr.w r0, r0, r5
  470. 80006a4: fa01 f204 lsl.w r2, r1, r4
  471. 80006a8: ea40 0002 orr.w r0, r0, r2
  472. 80006ac: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000
  473. 80006b0: eb10 70d3 adds.w r0, r0, r3, lsr #31
  474. 80006b4: f141 0100 adc.w r1, r1, #0
  475. 80006b8: ea5e 0e43 orrs.w lr, lr, r3, lsl #1
  476. 80006bc: bf08 it eq
  477. 80006be: ea20 70d3 biceq.w r0, r0, r3, lsr #31
  478. 80006c2: bd70 pop {r4, r5, r6, pc}
  479. 80006c4: f1c4 0520 rsb r5, r4, #32
  480. 80006c8: fa00 f205 lsl.w r2, r0, r5
  481. 80006cc: ea4e 0e02 orr.w lr, lr, r2
  482. 80006d0: fa20 f304 lsr.w r3, r0, r4
  483. 80006d4: fa01 f205 lsl.w r2, r1, r5
  484. 80006d8: ea43 0302 orr.w r3, r3, r2
  485. 80006dc: fa21 f004 lsr.w r0, r1, r4
  486. 80006e0: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000
  487. 80006e4: fa21 f204 lsr.w r2, r1, r4
  488. 80006e8: ea20 0002 bic.w r0, r0, r2
  489. 80006ec: eb00 70d3 add.w r0, r0, r3, lsr #31
  490. 80006f0: ea5e 0e43 orrs.w lr, lr, r3, lsl #1
  491. 80006f4: bf08 it eq
  492. 80006f6: ea20 70d3 biceq.w r0, r0, r3, lsr #31
  493. 80006fa: bd70 pop {r4, r5, r6, pc}
  494. 80006fc: f094 0f00 teq r4, #0
  495. 8000700: d10f bne.n 8000722 <__aeabi_dmul+0x1c2>
  496. 8000702: f001 4600 and.w r6, r1, #2147483648 ; 0x80000000
  497. 8000706: 0040 lsls r0, r0, #1
  498. 8000708: eb41 0101 adc.w r1, r1, r1
  499. 800070c: f411 1f80 tst.w r1, #1048576 ; 0x100000
  500. 8000710: bf08 it eq
  501. 8000712: 3c01 subeq r4, #1
  502. 8000714: d0f7 beq.n 8000706 <__aeabi_dmul+0x1a6>
  503. 8000716: ea41 0106 orr.w r1, r1, r6
  504. 800071a: f095 0f00 teq r5, #0
  505. 800071e: bf18 it ne
  506. 8000720: 4770 bxne lr
  507. 8000722: f003 4600 and.w r6, r3, #2147483648 ; 0x80000000
  508. 8000726: 0052 lsls r2, r2, #1
  509. 8000728: eb43 0303 adc.w r3, r3, r3
  510. 800072c: f413 1f80 tst.w r3, #1048576 ; 0x100000
  511. 8000730: bf08 it eq
  512. 8000732: 3d01 subeq r5, #1
  513. 8000734: d0f7 beq.n 8000726 <__aeabi_dmul+0x1c6>
  514. 8000736: ea43 0306 orr.w r3, r3, r6
  515. 800073a: 4770 bx lr
  516. 800073c: ea94 0f0c teq r4, ip
  517. 8000740: ea0c 5513 and.w r5, ip, r3, lsr #20
  518. 8000744: bf18 it ne
  519. 8000746: ea95 0f0c teqne r5, ip
  520. 800074a: d00c beq.n 8000766 <__aeabi_dmul+0x206>
  521. 800074c: ea50 0641 orrs.w r6, r0, r1, lsl #1
  522. 8000750: bf18 it ne
  523. 8000752: ea52 0643 orrsne.w r6, r2, r3, lsl #1
  524. 8000756: d1d1 bne.n 80006fc <__aeabi_dmul+0x19c>
  525. 8000758: ea81 0103 eor.w r1, r1, r3
  526. 800075c: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000
  527. 8000760: f04f 0000 mov.w r0, #0
  528. 8000764: bd70 pop {r4, r5, r6, pc}
  529. 8000766: ea50 0641 orrs.w r6, r0, r1, lsl #1
  530. 800076a: bf06 itte eq
  531. 800076c: 4610 moveq r0, r2
  532. 800076e: 4619 moveq r1, r3
  533. 8000770: ea52 0643 orrsne.w r6, r2, r3, lsl #1
  534. 8000774: d019 beq.n 80007aa <__aeabi_dmul+0x24a>
  535. 8000776: ea94 0f0c teq r4, ip
  536. 800077a: d102 bne.n 8000782 <__aeabi_dmul+0x222>
  537. 800077c: ea50 3601 orrs.w r6, r0, r1, lsl #12
  538. 8000780: d113 bne.n 80007aa <__aeabi_dmul+0x24a>
  539. 8000782: ea95 0f0c teq r5, ip
  540. 8000786: d105 bne.n 8000794 <__aeabi_dmul+0x234>
  541. 8000788: ea52 3603 orrs.w r6, r2, r3, lsl #12
  542. 800078c: bf1c itt ne
  543. 800078e: 4610 movne r0, r2
  544. 8000790: 4619 movne r1, r3
  545. 8000792: d10a bne.n 80007aa <__aeabi_dmul+0x24a>
  546. 8000794: ea81 0103 eor.w r1, r1, r3
  547. 8000798: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000
  548. 800079c: f041 41fe orr.w r1, r1, #2130706432 ; 0x7f000000
  549. 80007a0: f441 0170 orr.w r1, r1, #15728640 ; 0xf00000
  550. 80007a4: f04f 0000 mov.w r0, #0
  551. 80007a8: bd70 pop {r4, r5, r6, pc}
  552. 80007aa: f041 41fe orr.w r1, r1, #2130706432 ; 0x7f000000
  553. 80007ae: f441 0178 orr.w r1, r1, #16252928 ; 0xf80000
  554. 80007b2: bd70 pop {r4, r5, r6, pc}
  555. 080007b4 <__aeabi_ddiv>:
  556. 80007b4: b570 push {r4, r5, r6, lr}
  557. 80007b6: f04f 0cff mov.w ip, #255 ; 0xff
  558. 80007ba: f44c 6ce0 orr.w ip, ip, #1792 ; 0x700
  559. 80007be: ea1c 5411 ands.w r4, ip, r1, lsr #20
  560. 80007c2: bf1d ittte ne
  561. 80007c4: ea1c 5513 andsne.w r5, ip, r3, lsr #20
  562. 80007c8: ea94 0f0c teqne r4, ip
  563. 80007cc: ea95 0f0c teqne r5, ip
  564. 80007d0: f000 f8a7 bleq 8000922 <__aeabi_ddiv+0x16e>
  565. 80007d4: eba4 0405 sub.w r4, r4, r5
  566. 80007d8: ea81 0e03 eor.w lr, r1, r3
  567. 80007dc: ea52 3503 orrs.w r5, r2, r3, lsl #12
  568. 80007e0: ea4f 3101 mov.w r1, r1, lsl #12
  569. 80007e4: f000 8088 beq.w 80008f8 <__aeabi_ddiv+0x144>
  570. 80007e8: ea4f 3303 mov.w r3, r3, lsl #12
  571. 80007ec: f04f 5580 mov.w r5, #268435456 ; 0x10000000
  572. 80007f0: ea45 1313 orr.w r3, r5, r3, lsr #4
  573. 80007f4: ea43 6312 orr.w r3, r3, r2, lsr #24
  574. 80007f8: ea4f 2202 mov.w r2, r2, lsl #8
  575. 80007fc: ea45 1511 orr.w r5, r5, r1, lsr #4
  576. 8000800: ea45 6510 orr.w r5, r5, r0, lsr #24
  577. 8000804: ea4f 2600 mov.w r6, r0, lsl #8
  578. 8000808: f00e 4100 and.w r1, lr, #2147483648 ; 0x80000000
  579. 800080c: 429d cmp r5, r3
  580. 800080e: bf08 it eq
  581. 8000810: 4296 cmpeq r6, r2
  582. 8000812: f144 04fd adc.w r4, r4, #253 ; 0xfd
  583. 8000816: f504 7440 add.w r4, r4, #768 ; 0x300
  584. 800081a: d202 bcs.n 8000822 <__aeabi_ddiv+0x6e>
  585. 800081c: 085b lsrs r3, r3, #1
  586. 800081e: ea4f 0232 mov.w r2, r2, rrx
  587. 8000822: 1ab6 subs r6, r6, r2
  588. 8000824: eb65 0503 sbc.w r5, r5, r3
  589. 8000828: 085b lsrs r3, r3, #1
  590. 800082a: ea4f 0232 mov.w r2, r2, rrx
  591. 800082e: f44f 1080 mov.w r0, #1048576 ; 0x100000
  592. 8000832: f44f 2c00 mov.w ip, #524288 ; 0x80000
  593. 8000836: ebb6 0e02 subs.w lr, r6, r2
  594. 800083a: eb75 0e03 sbcs.w lr, r5, r3
  595. 800083e: bf22 ittt cs
  596. 8000840: 1ab6 subcs r6, r6, r2
  597. 8000842: 4675 movcs r5, lr
  598. 8000844: ea40 000c orrcs.w r0, r0, ip
  599. 8000848: 085b lsrs r3, r3, #1
  600. 800084a: ea4f 0232 mov.w r2, r2, rrx
  601. 800084e: ebb6 0e02 subs.w lr, r6, r2
  602. 8000852: eb75 0e03 sbcs.w lr, r5, r3
  603. 8000856: bf22 ittt cs
  604. 8000858: 1ab6 subcs r6, r6, r2
  605. 800085a: 4675 movcs r5, lr
  606. 800085c: ea40 005c orrcs.w r0, r0, ip, lsr #1
  607. 8000860: 085b lsrs r3, r3, #1
  608. 8000862: ea4f 0232 mov.w r2, r2, rrx
  609. 8000866: ebb6 0e02 subs.w lr, r6, r2
  610. 800086a: eb75 0e03 sbcs.w lr, r5, r3
  611. 800086e: bf22 ittt cs
  612. 8000870: 1ab6 subcs r6, r6, r2
  613. 8000872: 4675 movcs r5, lr
  614. 8000874: ea40 009c orrcs.w r0, r0, ip, lsr #2
  615. 8000878: 085b lsrs r3, r3, #1
  616. 800087a: ea4f 0232 mov.w r2, r2, rrx
  617. 800087e: ebb6 0e02 subs.w lr, r6, r2
  618. 8000882: eb75 0e03 sbcs.w lr, r5, r3
  619. 8000886: bf22 ittt cs
  620. 8000888: 1ab6 subcs r6, r6, r2
  621. 800088a: 4675 movcs r5, lr
  622. 800088c: ea40 00dc orrcs.w r0, r0, ip, lsr #3
  623. 8000890: ea55 0e06 orrs.w lr, r5, r6
  624. 8000894: d018 beq.n 80008c8 <__aeabi_ddiv+0x114>
  625. 8000896: ea4f 1505 mov.w r5, r5, lsl #4
  626. 800089a: ea45 7516 orr.w r5, r5, r6, lsr #28
  627. 800089e: ea4f 1606 mov.w r6, r6, lsl #4
  628. 80008a2: ea4f 03c3 mov.w r3, r3, lsl #3
  629. 80008a6: ea43 7352 orr.w r3, r3, r2, lsr #29
  630. 80008aa: ea4f 02c2 mov.w r2, r2, lsl #3
  631. 80008ae: ea5f 1c1c movs.w ip, ip, lsr #4
  632. 80008b2: d1c0 bne.n 8000836 <__aeabi_ddiv+0x82>
  633. 80008b4: f411 1f80 tst.w r1, #1048576 ; 0x100000
  634. 80008b8: d10b bne.n 80008d2 <__aeabi_ddiv+0x11e>
  635. 80008ba: ea41 0100 orr.w r1, r1, r0
  636. 80008be: f04f 0000 mov.w r0, #0
  637. 80008c2: f04f 4c00 mov.w ip, #2147483648 ; 0x80000000
  638. 80008c6: e7b6 b.n 8000836 <__aeabi_ddiv+0x82>
  639. 80008c8: f411 1f80 tst.w r1, #1048576 ; 0x100000
  640. 80008cc: bf04 itt eq
  641. 80008ce: 4301 orreq r1, r0
  642. 80008d0: 2000 moveq r0, #0
  643. 80008d2: f1b4 0cfd subs.w ip, r4, #253 ; 0xfd
  644. 80008d6: bf88 it hi
  645. 80008d8: f5bc 6fe0 cmphi.w ip, #1792 ; 0x700
  646. 80008dc: f63f aeaf bhi.w 800063e <__aeabi_dmul+0xde>
  647. 80008e0: ebb5 0c03 subs.w ip, r5, r3
  648. 80008e4: bf04 itt eq
  649. 80008e6: ebb6 0c02 subseq.w ip, r6, r2
  650. 80008ea: ea5f 0c50 movseq.w ip, r0, lsr #1
  651. 80008ee: f150 0000 adcs.w r0, r0, #0
  652. 80008f2: eb41 5104 adc.w r1, r1, r4, lsl #20
  653. 80008f6: bd70 pop {r4, r5, r6, pc}
  654. 80008f8: f00e 4e00 and.w lr, lr, #2147483648 ; 0x80000000
  655. 80008fc: ea4e 3111 orr.w r1, lr, r1, lsr #12
  656. 8000900: eb14 045c adds.w r4, r4, ip, lsr #1
  657. 8000904: bfc2 ittt gt
  658. 8000906: ebd4 050c rsbsgt r5, r4, ip
  659. 800090a: ea41 5104 orrgt.w r1, r1, r4, lsl #20
  660. 800090e: bd70 popgt {r4, r5, r6, pc}
  661. 8000910: f441 1180 orr.w r1, r1, #1048576 ; 0x100000
  662. 8000914: f04f 0e00 mov.w lr, #0
  663. 8000918: 3c01 subs r4, #1
  664. 800091a: e690 b.n 800063e <__aeabi_dmul+0xde>
  665. 800091c: ea45 0e06 orr.w lr, r5, r6
  666. 8000920: e68d b.n 800063e <__aeabi_dmul+0xde>
  667. 8000922: ea0c 5513 and.w r5, ip, r3, lsr #20
  668. 8000926: ea94 0f0c teq r4, ip
  669. 800092a: bf08 it eq
  670. 800092c: ea95 0f0c teqeq r5, ip
  671. 8000930: f43f af3b beq.w 80007aa <__aeabi_dmul+0x24a>
  672. 8000934: ea94 0f0c teq r4, ip
  673. 8000938: d10a bne.n 8000950 <__aeabi_ddiv+0x19c>
  674. 800093a: ea50 3401 orrs.w r4, r0, r1, lsl #12
  675. 800093e: f47f af34 bne.w 80007aa <__aeabi_dmul+0x24a>
  676. 8000942: ea95 0f0c teq r5, ip
  677. 8000946: f47f af25 bne.w 8000794 <__aeabi_dmul+0x234>
  678. 800094a: 4610 mov r0, r2
  679. 800094c: 4619 mov r1, r3
  680. 800094e: e72c b.n 80007aa <__aeabi_dmul+0x24a>
  681. 8000950: ea95 0f0c teq r5, ip
  682. 8000954: d106 bne.n 8000964 <__aeabi_ddiv+0x1b0>
  683. 8000956: ea52 3503 orrs.w r5, r2, r3, lsl #12
  684. 800095a: f43f aefd beq.w 8000758 <__aeabi_dmul+0x1f8>
  685. 800095e: 4610 mov r0, r2
  686. 8000960: 4619 mov r1, r3
  687. 8000962: e722 b.n 80007aa <__aeabi_dmul+0x24a>
  688. 8000964: ea50 0641 orrs.w r6, r0, r1, lsl #1
  689. 8000968: bf18 it ne
  690. 800096a: ea52 0643 orrsne.w r6, r2, r3, lsl #1
  691. 800096e: f47f aec5 bne.w 80006fc <__aeabi_dmul+0x19c>
  692. 8000972: ea50 0441 orrs.w r4, r0, r1, lsl #1
  693. 8000976: f47f af0d bne.w 8000794 <__aeabi_dmul+0x234>
  694. 800097a: ea52 0543 orrs.w r5, r2, r3, lsl #1
  695. 800097e: f47f aeeb bne.w 8000758 <__aeabi_dmul+0x1f8>
  696. 8000982: e712 b.n 80007aa <__aeabi_dmul+0x24a>
  697. 08000984 <__gedf2>:
  698. 8000984: f04f 3cff mov.w ip, #4294967295
  699. 8000988: e006 b.n 8000998 <__cmpdf2+0x4>
  700. 800098a: bf00 nop
  701. 0800098c <__ledf2>:
  702. 800098c: f04f 0c01 mov.w ip, #1
  703. 8000990: e002 b.n 8000998 <__cmpdf2+0x4>
  704. 8000992: bf00 nop
  705. 08000994 <__cmpdf2>:
  706. 8000994: f04f 0c01 mov.w ip, #1
  707. 8000998: f84d cd04 str.w ip, [sp, #-4]!
  708. 800099c: ea4f 0c41 mov.w ip, r1, lsl #1
  709. 80009a0: ea7f 5c6c mvns.w ip, ip, asr #21
  710. 80009a4: ea4f 0c43 mov.w ip, r3, lsl #1
  711. 80009a8: bf18 it ne
  712. 80009aa: ea7f 5c6c mvnsne.w ip, ip, asr #21
  713. 80009ae: d01b beq.n 80009e8 <__cmpdf2+0x54>
  714. 80009b0: b001 add sp, #4
  715. 80009b2: ea50 0c41 orrs.w ip, r0, r1, lsl #1
  716. 80009b6: bf0c ite eq
  717. 80009b8: ea52 0c43 orrseq.w ip, r2, r3, lsl #1
  718. 80009bc: ea91 0f03 teqne r1, r3
  719. 80009c0: bf02 ittt eq
  720. 80009c2: ea90 0f02 teqeq r0, r2
  721. 80009c6: 2000 moveq r0, #0
  722. 80009c8: 4770 bxeq lr
  723. 80009ca: f110 0f00 cmn.w r0, #0
  724. 80009ce: ea91 0f03 teq r1, r3
  725. 80009d2: bf58 it pl
  726. 80009d4: 4299 cmppl r1, r3
  727. 80009d6: bf08 it eq
  728. 80009d8: 4290 cmpeq r0, r2
  729. 80009da: bf2c ite cs
  730. 80009dc: 17d8 asrcs r0, r3, #31
  731. 80009de: ea6f 70e3 mvncc.w r0, r3, asr #31
  732. 80009e2: f040 0001 orr.w r0, r0, #1
  733. 80009e6: 4770 bx lr
  734. 80009e8: ea4f 0c41 mov.w ip, r1, lsl #1
  735. 80009ec: ea7f 5c6c mvns.w ip, ip, asr #21
  736. 80009f0: d102 bne.n 80009f8 <__cmpdf2+0x64>
  737. 80009f2: ea50 3c01 orrs.w ip, r0, r1, lsl #12
  738. 80009f6: d107 bne.n 8000a08 <__cmpdf2+0x74>
  739. 80009f8: ea4f 0c43 mov.w ip, r3, lsl #1
  740. 80009fc: ea7f 5c6c mvns.w ip, ip, asr #21
  741. 8000a00: d1d6 bne.n 80009b0 <__cmpdf2+0x1c>
  742. 8000a02: ea52 3c03 orrs.w ip, r2, r3, lsl #12
  743. 8000a06: d0d3 beq.n 80009b0 <__cmpdf2+0x1c>
  744. 8000a08: f85d 0b04 ldr.w r0, [sp], #4
  745. 8000a0c: 4770 bx lr
  746. 8000a0e: bf00 nop
  747. 08000a10 <__aeabi_cdrcmple>:
  748. 8000a10: 4684 mov ip, r0
  749. 8000a12: 4610 mov r0, r2
  750. 8000a14: 4662 mov r2, ip
  751. 8000a16: 468c mov ip, r1
  752. 8000a18: 4619 mov r1, r3
  753. 8000a1a: 4663 mov r3, ip
  754. 8000a1c: e000 b.n 8000a20 <__aeabi_cdcmpeq>
  755. 8000a1e: bf00 nop
  756. 08000a20 <__aeabi_cdcmpeq>:
  757. 8000a20: b501 push {r0, lr}
  758. 8000a22: f7ff ffb7 bl 8000994 <__cmpdf2>
  759. 8000a26: 2800 cmp r0, #0
  760. 8000a28: bf48 it mi
  761. 8000a2a: f110 0f00 cmnmi.w r0, #0
  762. 8000a2e: bd01 pop {r0, pc}
  763. 08000a30 <__aeabi_dcmpeq>:
  764. 8000a30: f84d ed08 str.w lr, [sp, #-8]!
  765. 8000a34: f7ff fff4 bl 8000a20 <__aeabi_cdcmpeq>
  766. 8000a38: bf0c ite eq
  767. 8000a3a: 2001 moveq r0, #1
  768. 8000a3c: 2000 movne r0, #0
  769. 8000a3e: f85d fb08 ldr.w pc, [sp], #8
  770. 8000a42: bf00 nop
  771. 08000a44 <__aeabi_dcmplt>:
  772. 8000a44: f84d ed08 str.w lr, [sp, #-8]!
  773. 8000a48: f7ff ffea bl 8000a20 <__aeabi_cdcmpeq>
  774. 8000a4c: bf34 ite cc
  775. 8000a4e: 2001 movcc r0, #1
  776. 8000a50: 2000 movcs r0, #0
  777. 8000a52: f85d fb08 ldr.w pc, [sp], #8
  778. 8000a56: bf00 nop
  779. 08000a58 <__aeabi_dcmple>:
  780. 8000a58: f84d ed08 str.w lr, [sp, #-8]!
  781. 8000a5c: f7ff ffe0 bl 8000a20 <__aeabi_cdcmpeq>
  782. 8000a60: bf94 ite ls
  783. 8000a62: 2001 movls r0, #1
  784. 8000a64: 2000 movhi r0, #0
  785. 8000a66: f85d fb08 ldr.w pc, [sp], #8
  786. 8000a6a: bf00 nop
  787. 08000a6c <__aeabi_dcmpge>:
  788. 8000a6c: f84d ed08 str.w lr, [sp, #-8]!
  789. 8000a70: f7ff ffce bl 8000a10 <__aeabi_cdrcmple>
  790. 8000a74: bf94 ite ls
  791. 8000a76: 2001 movls r0, #1
  792. 8000a78: 2000 movhi r0, #0
  793. 8000a7a: f85d fb08 ldr.w pc, [sp], #8
  794. 8000a7e: bf00 nop
  795. 08000a80 <__aeabi_dcmpgt>:
  796. 8000a80: f84d ed08 str.w lr, [sp, #-8]!
  797. 8000a84: f7ff ffc4 bl 8000a10 <__aeabi_cdrcmple>
  798. 8000a88: bf34 ite cc
  799. 8000a8a: 2001 movcc r0, #1
  800. 8000a8c: 2000 movcs r0, #0
  801. 8000a8e: f85d fb08 ldr.w pc, [sp], #8
  802. 8000a92: bf00 nop
  803. 08000a94 <__aeabi_dcmpun>:
  804. 8000a94: ea4f 0c41 mov.w ip, r1, lsl #1
  805. 8000a98: ea7f 5c6c mvns.w ip, ip, asr #21
  806. 8000a9c: d102 bne.n 8000aa4 <__aeabi_dcmpun+0x10>
  807. 8000a9e: ea50 3c01 orrs.w ip, r0, r1, lsl #12
  808. 8000aa2: d10a bne.n 8000aba <__aeabi_dcmpun+0x26>
  809. 8000aa4: ea4f 0c43 mov.w ip, r3, lsl #1
  810. 8000aa8: ea7f 5c6c mvns.w ip, ip, asr #21
  811. 8000aac: d102 bne.n 8000ab4 <__aeabi_dcmpun+0x20>
  812. 8000aae: ea52 3c03 orrs.w ip, r2, r3, lsl #12
  813. 8000ab2: d102 bne.n 8000aba <__aeabi_dcmpun+0x26>
  814. 8000ab4: f04f 0000 mov.w r0, #0
  815. 8000ab8: 4770 bx lr
  816. 8000aba: f04f 0001 mov.w r0, #1
  817. 8000abe: 4770 bx lr
  818. 08000ac0 <__aeabi_d2iz>:
  819. 8000ac0: ea4f 0241 mov.w r2, r1, lsl #1
  820. 8000ac4: f512 1200 adds.w r2, r2, #2097152 ; 0x200000
  821. 8000ac8: d215 bcs.n 8000af6 <__aeabi_d2iz+0x36>
  822. 8000aca: d511 bpl.n 8000af0 <__aeabi_d2iz+0x30>
  823. 8000acc: f46f 7378 mvn.w r3, #992 ; 0x3e0
  824. 8000ad0: ebb3 5262 subs.w r2, r3, r2, asr #21
  825. 8000ad4: d912 bls.n 8000afc <__aeabi_d2iz+0x3c>
  826. 8000ad6: ea4f 23c1 mov.w r3, r1, lsl #11
  827. 8000ada: f043 4300 orr.w r3, r3, #2147483648 ; 0x80000000
  828. 8000ade: ea43 5350 orr.w r3, r3, r0, lsr #21
  829. 8000ae2: f011 4f00 tst.w r1, #2147483648 ; 0x80000000
  830. 8000ae6: fa23 f002 lsr.w r0, r3, r2
  831. 8000aea: bf18 it ne
  832. 8000aec: 4240 negne r0, r0
  833. 8000aee: 4770 bx lr
  834. 8000af0: f04f 0000 mov.w r0, #0
  835. 8000af4: 4770 bx lr
  836. 8000af6: ea50 3001 orrs.w r0, r0, r1, lsl #12
  837. 8000afa: d105 bne.n 8000b08 <__aeabi_d2iz+0x48>
  838. 8000afc: f011 4000 ands.w r0, r1, #2147483648 ; 0x80000000
  839. 8000b00: bf08 it eq
  840. 8000b02: f06f 4000 mvneq.w r0, #2147483648 ; 0x80000000
  841. 8000b06: 4770 bx lr
  842. 8000b08: f04f 0000 mov.w r0, #0
  843. 8000b0c: 4770 bx lr
  844. 8000b0e: bf00 nop
  845. 08000b10 <__aeabi_uldivmod>:
  846. 8000b10: b953 cbnz r3, 8000b28 <__aeabi_uldivmod+0x18>
  847. 8000b12: b94a cbnz r2, 8000b28 <__aeabi_uldivmod+0x18>
  848. 8000b14: 2900 cmp r1, #0
  849. 8000b16: bf08 it eq
  850. 8000b18: 2800 cmpeq r0, #0
  851. 8000b1a: bf1c itt ne
  852. 8000b1c: f04f 31ff movne.w r1, #4294967295
  853. 8000b20: f04f 30ff movne.w r0, #4294967295
  854. 8000b24: f000 b972 b.w 8000e0c <__aeabi_idiv0>
  855. 8000b28: f1ad 0c08 sub.w ip, sp, #8
  856. 8000b2c: e96d ce04 strd ip, lr, [sp, #-16]!
  857. 8000b30: f000 f806 bl 8000b40 <__udivmoddi4>
  858. 8000b34: f8dd e004 ldr.w lr, [sp, #4]
  859. 8000b38: e9dd 2302 ldrd r2, r3, [sp, #8]
  860. 8000b3c: b004 add sp, #16
  861. 8000b3e: 4770 bx lr
  862. 08000b40 <__udivmoddi4>:
  863. 8000b40: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
  864. 8000b44: 9e08 ldr r6, [sp, #32]
  865. 8000b46: 4604 mov r4, r0
  866. 8000b48: 4688 mov r8, r1
  867. 8000b4a: 2b00 cmp r3, #0
  868. 8000b4c: d14b bne.n 8000be6 <__udivmoddi4+0xa6>
  869. 8000b4e: 428a cmp r2, r1
  870. 8000b50: 4615 mov r5, r2
  871. 8000b52: d967 bls.n 8000c24 <__udivmoddi4+0xe4>
  872. 8000b54: fab2 f282 clz r2, r2
  873. 8000b58: b14a cbz r2, 8000b6e <__udivmoddi4+0x2e>
  874. 8000b5a: f1c2 0720 rsb r7, r2, #32
  875. 8000b5e: fa01 f302 lsl.w r3, r1, r2
  876. 8000b62: fa20 f707 lsr.w r7, r0, r7
  877. 8000b66: 4095 lsls r5, r2
  878. 8000b68: ea47 0803 orr.w r8, r7, r3
  879. 8000b6c: 4094 lsls r4, r2
  880. 8000b6e: ea4f 4e15 mov.w lr, r5, lsr #16
  881. 8000b72: 0c23 lsrs r3, r4, #16
  882. 8000b74: fbb8 f7fe udiv r7, r8, lr
  883. 8000b78: fa1f fc85 uxth.w ip, r5
  884. 8000b7c: fb0e 8817 mls r8, lr, r7, r8
  885. 8000b80: ea43 4308 orr.w r3, r3, r8, lsl #16
  886. 8000b84: fb07 f10c mul.w r1, r7, ip
  887. 8000b88: 4299 cmp r1, r3
  888. 8000b8a: d909 bls.n 8000ba0 <__udivmoddi4+0x60>
  889. 8000b8c: 18eb adds r3, r5, r3
  890. 8000b8e: f107 30ff add.w r0, r7, #4294967295
  891. 8000b92: f080 811b bcs.w 8000dcc <__udivmoddi4+0x28c>
  892. 8000b96: 4299 cmp r1, r3
  893. 8000b98: f240 8118 bls.w 8000dcc <__udivmoddi4+0x28c>
  894. 8000b9c: 3f02 subs r7, #2
  895. 8000b9e: 442b add r3, r5
  896. 8000ba0: 1a5b subs r3, r3, r1
  897. 8000ba2: b2a4 uxth r4, r4
  898. 8000ba4: fbb3 f0fe udiv r0, r3, lr
  899. 8000ba8: fb0e 3310 mls r3, lr, r0, r3
  900. 8000bac: ea44 4403 orr.w r4, r4, r3, lsl #16
  901. 8000bb0: fb00 fc0c mul.w ip, r0, ip
  902. 8000bb4: 45a4 cmp ip, r4
  903. 8000bb6: d909 bls.n 8000bcc <__udivmoddi4+0x8c>
  904. 8000bb8: 192c adds r4, r5, r4
  905. 8000bba: f100 33ff add.w r3, r0, #4294967295
  906. 8000bbe: f080 8107 bcs.w 8000dd0 <__udivmoddi4+0x290>
  907. 8000bc2: 45a4 cmp ip, r4
  908. 8000bc4: f240 8104 bls.w 8000dd0 <__udivmoddi4+0x290>
  909. 8000bc8: 3802 subs r0, #2
  910. 8000bca: 442c add r4, r5
  911. 8000bcc: ea40 4007 orr.w r0, r0, r7, lsl #16
  912. 8000bd0: eba4 040c sub.w r4, r4, ip
  913. 8000bd4: 2700 movs r7, #0
  914. 8000bd6: b11e cbz r6, 8000be0 <__udivmoddi4+0xa0>
  915. 8000bd8: 40d4 lsrs r4, r2
  916. 8000bda: 2300 movs r3, #0
  917. 8000bdc: e9c6 4300 strd r4, r3, [r6]
  918. 8000be0: 4639 mov r1, r7
  919. 8000be2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
  920. 8000be6: 428b cmp r3, r1
  921. 8000be8: d909 bls.n 8000bfe <__udivmoddi4+0xbe>
  922. 8000bea: 2e00 cmp r6, #0
  923. 8000bec: f000 80eb beq.w 8000dc6 <__udivmoddi4+0x286>
  924. 8000bf0: 2700 movs r7, #0
  925. 8000bf2: e9c6 0100 strd r0, r1, [r6]
  926. 8000bf6: 4638 mov r0, r7
  927. 8000bf8: 4639 mov r1, r7
  928. 8000bfa: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
  929. 8000bfe: fab3 f783 clz r7, r3
  930. 8000c02: 2f00 cmp r7, #0
  931. 8000c04: d147 bne.n 8000c96 <__udivmoddi4+0x156>
  932. 8000c06: 428b cmp r3, r1
  933. 8000c08: d302 bcc.n 8000c10 <__udivmoddi4+0xd0>
  934. 8000c0a: 4282 cmp r2, r0
  935. 8000c0c: f200 80fa bhi.w 8000e04 <__udivmoddi4+0x2c4>
  936. 8000c10: 1a84 subs r4, r0, r2
  937. 8000c12: eb61 0303 sbc.w r3, r1, r3
  938. 8000c16: 2001 movs r0, #1
  939. 8000c18: 4698 mov r8, r3
  940. 8000c1a: 2e00 cmp r6, #0
  941. 8000c1c: d0e0 beq.n 8000be0 <__udivmoddi4+0xa0>
  942. 8000c1e: e9c6 4800 strd r4, r8, [r6]
  943. 8000c22: e7dd b.n 8000be0 <__udivmoddi4+0xa0>
  944. 8000c24: b902 cbnz r2, 8000c28 <__udivmoddi4+0xe8>
  945. 8000c26: deff udf #255 ; 0xff
  946. 8000c28: fab2 f282 clz r2, r2
  947. 8000c2c: 2a00 cmp r2, #0
  948. 8000c2e: f040 808f bne.w 8000d50 <__udivmoddi4+0x210>
  949. 8000c32: 1b49 subs r1, r1, r5
  950. 8000c34: ea4f 4e15 mov.w lr, r5, lsr #16
  951. 8000c38: fa1f f885 uxth.w r8, r5
  952. 8000c3c: 2701 movs r7, #1
  953. 8000c3e: fbb1 fcfe udiv ip, r1, lr
  954. 8000c42: 0c23 lsrs r3, r4, #16
  955. 8000c44: fb0e 111c mls r1, lr, ip, r1
  956. 8000c48: ea43 4301 orr.w r3, r3, r1, lsl #16
  957. 8000c4c: fb08 f10c mul.w r1, r8, ip
  958. 8000c50: 4299 cmp r1, r3
  959. 8000c52: d907 bls.n 8000c64 <__udivmoddi4+0x124>
  960. 8000c54: 18eb adds r3, r5, r3
  961. 8000c56: f10c 30ff add.w r0, ip, #4294967295
  962. 8000c5a: d202 bcs.n 8000c62 <__udivmoddi4+0x122>
  963. 8000c5c: 4299 cmp r1, r3
  964. 8000c5e: f200 80cd bhi.w 8000dfc <__udivmoddi4+0x2bc>
  965. 8000c62: 4684 mov ip, r0
  966. 8000c64: 1a59 subs r1, r3, r1
  967. 8000c66: b2a3 uxth r3, r4
  968. 8000c68: fbb1 f0fe udiv r0, r1, lr
  969. 8000c6c: fb0e 1410 mls r4, lr, r0, r1
  970. 8000c70: ea43 4404 orr.w r4, r3, r4, lsl #16
  971. 8000c74: fb08 f800 mul.w r8, r8, r0
  972. 8000c78: 45a0 cmp r8, r4
  973. 8000c7a: d907 bls.n 8000c8c <__udivmoddi4+0x14c>
  974. 8000c7c: 192c adds r4, r5, r4
  975. 8000c7e: f100 33ff add.w r3, r0, #4294967295
  976. 8000c82: d202 bcs.n 8000c8a <__udivmoddi4+0x14a>
  977. 8000c84: 45a0 cmp r8, r4
  978. 8000c86: f200 80b6 bhi.w 8000df6 <__udivmoddi4+0x2b6>
  979. 8000c8a: 4618 mov r0, r3
  980. 8000c8c: eba4 0408 sub.w r4, r4, r8
  981. 8000c90: ea40 400c orr.w r0, r0, ip, lsl #16
  982. 8000c94: e79f b.n 8000bd6 <__udivmoddi4+0x96>
  983. 8000c96: f1c7 0c20 rsb ip, r7, #32
  984. 8000c9a: 40bb lsls r3, r7
  985. 8000c9c: fa22 fe0c lsr.w lr, r2, ip
  986. 8000ca0: ea4e 0e03 orr.w lr, lr, r3
  987. 8000ca4: fa01 f407 lsl.w r4, r1, r7
  988. 8000ca8: fa20 f50c lsr.w r5, r0, ip
  989. 8000cac: fa21 f30c lsr.w r3, r1, ip
  990. 8000cb0: ea4f 481e mov.w r8, lr, lsr #16
  991. 8000cb4: 4325 orrs r5, r4
  992. 8000cb6: fbb3 f9f8 udiv r9, r3, r8
  993. 8000cba: 0c2c lsrs r4, r5, #16
  994. 8000cbc: fb08 3319 mls r3, r8, r9, r3
  995. 8000cc0: fa1f fa8e uxth.w sl, lr
  996. 8000cc4: ea44 4303 orr.w r3, r4, r3, lsl #16
  997. 8000cc8: fb09 f40a mul.w r4, r9, sl
  998. 8000ccc: 429c cmp r4, r3
  999. 8000cce: fa02 f207 lsl.w r2, r2, r7
  1000. 8000cd2: fa00 f107 lsl.w r1, r0, r7
  1001. 8000cd6: d90b bls.n 8000cf0 <__udivmoddi4+0x1b0>
  1002. 8000cd8: eb1e 0303 adds.w r3, lr, r3
  1003. 8000cdc: f109 30ff add.w r0, r9, #4294967295
  1004. 8000ce0: f080 8087 bcs.w 8000df2 <__udivmoddi4+0x2b2>
  1005. 8000ce4: 429c cmp r4, r3
  1006. 8000ce6: f240 8084 bls.w 8000df2 <__udivmoddi4+0x2b2>
  1007. 8000cea: f1a9 0902 sub.w r9, r9, #2
  1008. 8000cee: 4473 add r3, lr
  1009. 8000cf0: 1b1b subs r3, r3, r4
  1010. 8000cf2: b2ad uxth r5, r5
  1011. 8000cf4: fbb3 f0f8 udiv r0, r3, r8
  1012. 8000cf8: fb08 3310 mls r3, r8, r0, r3
  1013. 8000cfc: ea45 4403 orr.w r4, r5, r3, lsl #16
  1014. 8000d00: fb00 fa0a mul.w sl, r0, sl
  1015. 8000d04: 45a2 cmp sl, r4
  1016. 8000d06: d908 bls.n 8000d1a <__udivmoddi4+0x1da>
  1017. 8000d08: eb1e 0404 adds.w r4, lr, r4
  1018. 8000d0c: f100 33ff add.w r3, r0, #4294967295
  1019. 8000d10: d26b bcs.n 8000dea <__udivmoddi4+0x2aa>
  1020. 8000d12: 45a2 cmp sl, r4
  1021. 8000d14: d969 bls.n 8000dea <__udivmoddi4+0x2aa>
  1022. 8000d16: 3802 subs r0, #2
  1023. 8000d18: 4474 add r4, lr
  1024. 8000d1a: ea40 4009 orr.w r0, r0, r9, lsl #16
  1025. 8000d1e: fba0 8902 umull r8, r9, r0, r2
  1026. 8000d22: eba4 040a sub.w r4, r4, sl
  1027. 8000d26: 454c cmp r4, r9
  1028. 8000d28: 46c2 mov sl, r8
  1029. 8000d2a: 464b mov r3, r9
  1030. 8000d2c: d354 bcc.n 8000dd8 <__udivmoddi4+0x298>
  1031. 8000d2e: d051 beq.n 8000dd4 <__udivmoddi4+0x294>
  1032. 8000d30: 2e00 cmp r6, #0
  1033. 8000d32: d069 beq.n 8000e08 <__udivmoddi4+0x2c8>
  1034. 8000d34: ebb1 050a subs.w r5, r1, sl
  1035. 8000d38: eb64 0403 sbc.w r4, r4, r3
  1036. 8000d3c: fa04 fc0c lsl.w ip, r4, ip
  1037. 8000d40: 40fd lsrs r5, r7
  1038. 8000d42: 40fc lsrs r4, r7
  1039. 8000d44: ea4c 0505 orr.w r5, ip, r5
  1040. 8000d48: e9c6 5400 strd r5, r4, [r6]
  1041. 8000d4c: 2700 movs r7, #0
  1042. 8000d4e: e747 b.n 8000be0 <__udivmoddi4+0xa0>
  1043. 8000d50: f1c2 0320 rsb r3, r2, #32
  1044. 8000d54: fa20 f703 lsr.w r7, r0, r3
  1045. 8000d58: 4095 lsls r5, r2
  1046. 8000d5a: fa01 f002 lsl.w r0, r1, r2
  1047. 8000d5e: fa21 f303 lsr.w r3, r1, r3
  1048. 8000d62: ea4f 4e15 mov.w lr, r5, lsr #16
  1049. 8000d66: 4338 orrs r0, r7
  1050. 8000d68: 0c01 lsrs r1, r0, #16
  1051. 8000d6a: fbb3 f7fe udiv r7, r3, lr
  1052. 8000d6e: fa1f f885 uxth.w r8, r5
  1053. 8000d72: fb0e 3317 mls r3, lr, r7, r3
  1054. 8000d76: ea41 4103 orr.w r1, r1, r3, lsl #16
  1055. 8000d7a: fb07 f308 mul.w r3, r7, r8
  1056. 8000d7e: 428b cmp r3, r1
  1057. 8000d80: fa04 f402 lsl.w r4, r4, r2
  1058. 8000d84: d907 bls.n 8000d96 <__udivmoddi4+0x256>
  1059. 8000d86: 1869 adds r1, r5, r1
  1060. 8000d88: f107 3cff add.w ip, r7, #4294967295
  1061. 8000d8c: d22f bcs.n 8000dee <__udivmoddi4+0x2ae>
  1062. 8000d8e: 428b cmp r3, r1
  1063. 8000d90: d92d bls.n 8000dee <__udivmoddi4+0x2ae>
  1064. 8000d92: 3f02 subs r7, #2
  1065. 8000d94: 4429 add r1, r5
  1066. 8000d96: 1acb subs r3, r1, r3
  1067. 8000d98: b281 uxth r1, r0
  1068. 8000d9a: fbb3 f0fe udiv r0, r3, lr
  1069. 8000d9e: fb0e 3310 mls r3, lr, r0, r3
  1070. 8000da2: ea41 4103 orr.w r1, r1, r3, lsl #16
  1071. 8000da6: fb00 f308 mul.w r3, r0, r8
  1072. 8000daa: 428b cmp r3, r1
  1073. 8000dac: d907 bls.n 8000dbe <__udivmoddi4+0x27e>
  1074. 8000dae: 1869 adds r1, r5, r1
  1075. 8000db0: f100 3cff add.w ip, r0, #4294967295
  1076. 8000db4: d217 bcs.n 8000de6 <__udivmoddi4+0x2a6>
  1077. 8000db6: 428b cmp r3, r1
  1078. 8000db8: d915 bls.n 8000de6 <__udivmoddi4+0x2a6>
  1079. 8000dba: 3802 subs r0, #2
  1080. 8000dbc: 4429 add r1, r5
  1081. 8000dbe: 1ac9 subs r1, r1, r3
  1082. 8000dc0: ea40 4707 orr.w r7, r0, r7, lsl #16
  1083. 8000dc4: e73b b.n 8000c3e <__udivmoddi4+0xfe>
  1084. 8000dc6: 4637 mov r7, r6
  1085. 8000dc8: 4630 mov r0, r6
  1086. 8000dca: e709 b.n 8000be0 <__udivmoddi4+0xa0>
  1087. 8000dcc: 4607 mov r7, r0
  1088. 8000dce: e6e7 b.n 8000ba0 <__udivmoddi4+0x60>
  1089. 8000dd0: 4618 mov r0, r3
  1090. 8000dd2: e6fb b.n 8000bcc <__udivmoddi4+0x8c>
  1091. 8000dd4: 4541 cmp r1, r8
  1092. 8000dd6: d2ab bcs.n 8000d30 <__udivmoddi4+0x1f0>
  1093. 8000dd8: ebb8 0a02 subs.w sl, r8, r2
  1094. 8000ddc: eb69 020e sbc.w r2, r9, lr
  1095. 8000de0: 3801 subs r0, #1
  1096. 8000de2: 4613 mov r3, r2
  1097. 8000de4: e7a4 b.n 8000d30 <__udivmoddi4+0x1f0>
  1098. 8000de6: 4660 mov r0, ip
  1099. 8000de8: e7e9 b.n 8000dbe <__udivmoddi4+0x27e>
  1100. 8000dea: 4618 mov r0, r3
  1101. 8000dec: e795 b.n 8000d1a <__udivmoddi4+0x1da>
  1102. 8000dee: 4667 mov r7, ip
  1103. 8000df0: e7d1 b.n 8000d96 <__udivmoddi4+0x256>
  1104. 8000df2: 4681 mov r9, r0
  1105. 8000df4: e77c b.n 8000cf0 <__udivmoddi4+0x1b0>
  1106. 8000df6: 3802 subs r0, #2
  1107. 8000df8: 442c add r4, r5
  1108. 8000dfa: e747 b.n 8000c8c <__udivmoddi4+0x14c>
  1109. 8000dfc: f1ac 0c02 sub.w ip, ip, #2
  1110. 8000e00: 442b add r3, r5
  1111. 8000e02: e72f b.n 8000c64 <__udivmoddi4+0x124>
  1112. 8000e04: 4638 mov r0, r7
  1113. 8000e06: e708 b.n 8000c1a <__udivmoddi4+0xda>
  1114. 8000e08: 4637 mov r7, r6
  1115. 8000e0a: e6e9 b.n 8000be0 <__udivmoddi4+0xa0>
  1116. 08000e0c <__aeabi_idiv0>:
  1117. 8000e0c: 4770 bx lr
  1118. 8000e0e: bf00 nop
  1119. 08000e10 <deg_to_rad>:
  1120. * Function Name : deg_to_rad
  1121. * Description : converts degrees to radians
  1122. * Return : angle in radians
  1123. *******************************************************************************/
  1124. double deg_to_rad(double deg)
  1125. {
  1126. 8000e10: b590 push {r4, r7, lr}
  1127. 8000e12: b085 sub sp, #20
  1128. 8000e14: af00 add r7, sp, #0
  1129. 8000e16: ed87 0b00 vstr d0, [r7]
  1130. double rad = deg*(M_PI/180);
  1131. 8000e1a: a30b add r3, pc, #44 ; (adr r3, 8000e48 <deg_to_rad+0x38>)
  1132. 8000e1c: e9d3 2300 ldrd r2, r3, [r3]
  1133. 8000e20: e9d7 0100 ldrd r0, r1, [r7]
  1134. 8000e24: f7ff fb9c bl 8000560 <__aeabi_dmul>
  1135. 8000e28: 4603 mov r3, r0
  1136. 8000e2a: 460c mov r4, r1
  1137. 8000e2c: e9c7 3402 strd r3, r4, [r7, #8]
  1138. return rad;
  1139. 8000e30: e9d7 3402 ldrd r3, r4, [r7, #8]
  1140. 8000e34: ec44 3b17 vmov d7, r3, r4
  1141. }
  1142. 8000e38: eeb0 0a47 vmov.f32 s0, s14
  1143. 8000e3c: eef0 0a67 vmov.f32 s1, s15
  1144. 8000e40: 3714 adds r7, #20
  1145. 8000e42: 46bd mov sp, r7
  1146. 8000e44: bd90 pop {r4, r7, pc}
  1147. 8000e46: bf00 nop
  1148. 8000e48: a2529d39 .word 0xa2529d39
  1149. 8000e4c: 3f91df46 .word 0x3f91df46
  1150. 08000e50 <rad_to_deg>:
  1151. * Function Name : rad_to_deg
  1152. * Description : converts radians to degrees
  1153. * Return : angle in degrees
  1154. *******************************************************************************/
  1155. double rad_to_deg(double rad)
  1156. {
  1157. 8000e50: b590 push {r4, r7, lr}
  1158. 8000e52: b085 sub sp, #20
  1159. 8000e54: af00 add r7, sp, #0
  1160. 8000e56: ed87 0b00 vstr d0, [r7]
  1161. double deg = rad*(180/M_PI);
  1162. 8000e5a: a30b add r3, pc, #44 ; (adr r3, 8000e88 <rad_to_deg+0x38>)
  1163. 8000e5c: e9d3 2300 ldrd r2, r3, [r3]
  1164. 8000e60: e9d7 0100 ldrd r0, r1, [r7]
  1165. 8000e64: f7ff fb7c bl 8000560 <__aeabi_dmul>
  1166. 8000e68: 4603 mov r3, r0
  1167. 8000e6a: 460c mov r4, r1
  1168. 8000e6c: e9c7 3402 strd r3, r4, [r7, #8]
  1169. return deg;
  1170. 8000e70: e9d7 3402 ldrd r3, r4, [r7, #8]
  1171. 8000e74: ec44 3b17 vmov d7, r3, r4
  1172. }
  1173. 8000e78: eeb0 0a47 vmov.f32 s0, s14
  1174. 8000e7c: eef0 0a67 vmov.f32 s1, s15
  1175. 8000e80: 3714 adds r7, #20
  1176. 8000e82: 46bd mov sp, r7
  1177. 8000e84: bd90 pop {r4, r7, pc}
  1178. 8000e86: bf00 nop
  1179. 8000e88: 1a63c1f8 .word 0x1a63c1f8
  1180. 8000e8c: 404ca5dc .word 0x404ca5dc
  1181. 08000e90 <leap_year_check>:
  1182. * Function Name : leap_year_check
  1183. * Description : checks if year is a leap year
  1184. * Return : false: no leap year, true: leap year
  1185. *******************************************************************************/
  1186. int leap_year_check(int year)
  1187. {
  1188. 8000e90: b480 push {r7}
  1189. 8000e92: b083 sub sp, #12
  1190. 8000e94: af00 add r7, sp, #0
  1191. 8000e96: 6078 str r0, [r7, #4]
  1192. if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
  1193. 8000e98: 687b ldr r3, [r7, #4]
  1194. 8000e9a: f003 0303 and.w r3, r3, #3
  1195. 8000e9e: 2b00 cmp r3, #0
  1196. 8000ea0: d10c bne.n 8000ebc <leap_year_check+0x2c>
  1197. 8000ea2: 687a ldr r2, [r7, #4]
  1198. 8000ea4: 4b11 ldr r3, [pc, #68] ; (8000eec <leap_year_check+0x5c>)
  1199. 8000ea6: fb83 1302 smull r1, r3, r3, r2
  1200. 8000eaa: 1159 asrs r1, r3, #5
  1201. 8000eac: 17d3 asrs r3, r2, #31
  1202. 8000eae: 1acb subs r3, r1, r3
  1203. 8000eb0: 2164 movs r1, #100 ; 0x64
  1204. 8000eb2: fb01 f303 mul.w r3, r1, r3
  1205. 8000eb6: 1ad3 subs r3, r2, r3
  1206. 8000eb8: 2b00 cmp r3, #0
  1207. 8000eba: d10d bne.n 8000ed8 <leap_year_check+0x48>
  1208. 8000ebc: 687a ldr r2, [r7, #4]
  1209. 8000ebe: 4b0b ldr r3, [pc, #44] ; (8000eec <leap_year_check+0x5c>)
  1210. 8000ec0: fb83 1302 smull r1, r3, r3, r2
  1211. 8000ec4: 11d9 asrs r1, r3, #7
  1212. 8000ec6: 17d3 asrs r3, r2, #31
  1213. 8000ec8: 1acb subs r3, r1, r3
  1214. 8000eca: f44f 71c8 mov.w r1, #400 ; 0x190
  1215. 8000ece: fb01 f303 mul.w r3, r1, r3
  1216. 8000ed2: 1ad3 subs r3, r2, r3
  1217. 8000ed4: 2b00 cmp r3, #0
  1218. 8000ed6: d101 bne.n 8000edc <leap_year_check+0x4c>
  1219. {
  1220. return true;
  1221. 8000ed8: 2301 movs r3, #1
  1222. 8000eda: e000 b.n 8000ede <leap_year_check+0x4e>
  1223. }
  1224. return false;
  1225. 8000edc: 2300 movs r3, #0
  1226. }
  1227. 8000ede: 4618 mov r0, r3
  1228. 8000ee0: 370c adds r7, #12
  1229. 8000ee2: 46bd mov sp, r7
  1230. 8000ee4: f85d 7b04 ldr.w r7, [sp], #4
  1231. 8000ee8: 4770 bx lr
  1232. 8000eea: bf00 nop
  1233. 8000eec: 51eb851f .word 0x51eb851f
  1234. 08000ef0 <calc_day_of_year>:
  1235. * Description : calculates the day of year
  1236. * Return : day of year (1.1.. = 1, 2.1.. = 2,...)
  1237. * Source : https://overiq.com/c-examples/c-program-to-calculate-the-day-of-year-from-the-date/
  1238. *******************************************************************************/
  1239. int calc_day_of_year(int day, int mon, int year)
  1240. {
  1241. 8000ef0: b580 push {r7, lr}
  1242. 8000ef2: b088 sub sp, #32
  1243. 8000ef4: af00 add r7, sp, #0
  1244. 8000ef6: 60f8 str r0, [r7, #12]
  1245. 8000ef8: 60b9 str r1, [r7, #8]
  1246. 8000efa: 607a str r2, [r7, #4]
  1247. int days_in_feb = 28;
  1248. 8000efc: 231c movs r3, #28
  1249. 8000efe: 61fb str r3, [r7, #28]
  1250. int doy = day; //day of year
  1251. 8000f00: 68fb ldr r3, [r7, #12]
  1252. 8000f02: 61bb str r3, [r7, #24]
  1253. // check for leap year
  1254. bool leap_year = leap_year_check(year);
  1255. 8000f04: 6878 ldr r0, [r7, #4]
  1256. 8000f06: f7ff ffc3 bl 8000e90 <leap_year_check>
  1257. 8000f0a: 4603 mov r3, r0
  1258. 8000f0c: 2b00 cmp r3, #0
  1259. 8000f0e: bf14 ite ne
  1260. 8000f10: 2301 movne r3, #1
  1261. 8000f12: 2300 moveq r3, #0
  1262. 8000f14: 75fb strb r3, [r7, #23]
  1263. if(leap_year == true)
  1264. 8000f16: 7dfb ldrb r3, [r7, #23]
  1265. 8000f18: 2b00 cmp r3, #0
  1266. 8000f1a: d001 beq.n 8000f20 <calc_day_of_year+0x30>
  1267. {
  1268. days_in_feb = 29;
  1269. 8000f1c: 231d movs r3, #29
  1270. 8000f1e: 61fb str r3, [r7, #28]
  1271. }
  1272. switch(mon)
  1273. 8000f20: 68bb ldr r3, [r7, #8]
  1274. 8000f22: 3b02 subs r3, #2
  1275. 8000f24: 2b0a cmp r3, #10
  1276. 8000f26: d85b bhi.n 8000fe0 <calc_day_of_year+0xf0>
  1277. 8000f28: a201 add r2, pc, #4 ; (adr r2, 8000f30 <calc_day_of_year+0x40>)
  1278. 8000f2a: f852 f023 ldr.w pc, [r2, r3, lsl #2]
  1279. 8000f2e: bf00 nop
  1280. 8000f30: 08000f5d .word 0x08000f5d
  1281. 8000f34: 08000f65 .word 0x08000f65
  1282. 8000f38: 08000f71 .word 0x08000f71
  1283. 8000f3c: 08000f7d .word 0x08000f7d
  1284. 8000f40: 08000f89 .word 0x08000f89
  1285. 8000f44: 08000f95 .word 0x08000f95
  1286. 8000f48: 08000fa1 .word 0x08000fa1
  1287. 8000f4c: 08000fad .word 0x08000fad
  1288. 8000f50: 08000fb9 .word 0x08000fb9
  1289. 8000f54: 08000fc5 .word 0x08000fc5
  1290. 8000f58: 08000fd3 .word 0x08000fd3
  1291. {
  1292. case 2:
  1293. doy += 31;
  1294. 8000f5c: 69bb ldr r3, [r7, #24]
  1295. 8000f5e: 331f adds r3, #31
  1296. 8000f60: 61bb str r3, [r7, #24]
  1297. break;
  1298. 8000f62: e03d b.n 8000fe0 <calc_day_of_year+0xf0>
  1299. case 3:
  1300. doy += 31+days_in_feb;
  1301. 8000f64: 69fb ldr r3, [r7, #28]
  1302. 8000f66: 331f adds r3, #31
  1303. 8000f68: 69ba ldr r2, [r7, #24]
  1304. 8000f6a: 4413 add r3, r2
  1305. 8000f6c: 61bb str r3, [r7, #24]
  1306. break;
  1307. 8000f6e: e037 b.n 8000fe0 <calc_day_of_year+0xf0>
  1308. case 4:
  1309. doy += days_in_feb+62;
  1310. 8000f70: 69fb ldr r3, [r7, #28]
  1311. 8000f72: 333e adds r3, #62 ; 0x3e
  1312. 8000f74: 69ba ldr r2, [r7, #24]
  1313. 8000f76: 4413 add r3, r2
  1314. 8000f78: 61bb str r3, [r7, #24]
  1315. break;
  1316. 8000f7a: e031 b.n 8000fe0 <calc_day_of_year+0xf0>
  1317. case 5:
  1318. doy += days_in_feb+92;
  1319. 8000f7c: 69fb ldr r3, [r7, #28]
  1320. 8000f7e: 335c adds r3, #92 ; 0x5c
  1321. 8000f80: 69ba ldr r2, [r7, #24]
  1322. 8000f82: 4413 add r3, r2
  1323. 8000f84: 61bb str r3, [r7, #24]
  1324. break;
  1325. 8000f86: e02b b.n 8000fe0 <calc_day_of_year+0xf0>
  1326. case 6:
  1327. doy += days_in_feb+123;
  1328. 8000f88: 69fb ldr r3, [r7, #28]
  1329. 8000f8a: 337b adds r3, #123 ; 0x7b
  1330. 8000f8c: 69ba ldr r2, [r7, #24]
  1331. 8000f8e: 4413 add r3, r2
  1332. 8000f90: 61bb str r3, [r7, #24]
  1333. break;
  1334. 8000f92: e025 b.n 8000fe0 <calc_day_of_year+0xf0>
  1335. case 7:
  1336. doy += days_in_feb+153;
  1337. 8000f94: 69fb ldr r3, [r7, #28]
  1338. 8000f96: 3399 adds r3, #153 ; 0x99
  1339. 8000f98: 69ba ldr r2, [r7, #24]
  1340. 8000f9a: 4413 add r3, r2
  1341. 8000f9c: 61bb str r3, [r7, #24]
  1342. break;
  1343. 8000f9e: e01f b.n 8000fe0 <calc_day_of_year+0xf0>
  1344. case 8:
  1345. doy += days_in_feb+184;
  1346. 8000fa0: 69fb ldr r3, [r7, #28]
  1347. 8000fa2: 33b8 adds r3, #184 ; 0xb8
  1348. 8000fa4: 69ba ldr r2, [r7, #24]
  1349. 8000fa6: 4413 add r3, r2
  1350. 8000fa8: 61bb str r3, [r7, #24]
  1351. break;
  1352. 8000faa: e019 b.n 8000fe0 <calc_day_of_year+0xf0>
  1353. case 9:
  1354. doy += days_in_feb+215;
  1355. 8000fac: 69fb ldr r3, [r7, #28]
  1356. 8000fae: 33d7 adds r3, #215 ; 0xd7
  1357. 8000fb0: 69ba ldr r2, [r7, #24]
  1358. 8000fb2: 4413 add r3, r2
  1359. 8000fb4: 61bb str r3, [r7, #24]
  1360. break;
  1361. 8000fb6: e013 b.n 8000fe0 <calc_day_of_year+0xf0>
  1362. case 10:
  1363. doy += days_in_feb+245;
  1364. 8000fb8: 69fb ldr r3, [r7, #28]
  1365. 8000fba: 33f5 adds r3, #245 ; 0xf5
  1366. 8000fbc: 69ba ldr r2, [r7, #24]
  1367. 8000fbe: 4413 add r3, r2
  1368. 8000fc0: 61bb str r3, [r7, #24]
  1369. break;
  1370. 8000fc2: e00d b.n 8000fe0 <calc_day_of_year+0xf0>
  1371. case 11:
  1372. doy += days_in_feb+276;
  1373. 8000fc4: 69fb ldr r3, [r7, #28]
  1374. 8000fc6: f503 738a add.w r3, r3, #276 ; 0x114
  1375. 8000fca: 69ba ldr r2, [r7, #24]
  1376. 8000fcc: 4413 add r3, r2
  1377. 8000fce: 61bb str r3, [r7, #24]
  1378. break;
  1379. 8000fd0: e006 b.n 8000fe0 <calc_day_of_year+0xf0>
  1380. case 12:
  1381. doy += days_in_feb+306;
  1382. 8000fd2: 69fb ldr r3, [r7, #28]
  1383. 8000fd4: f503 7399 add.w r3, r3, #306 ; 0x132
  1384. 8000fd8: 69ba ldr r2, [r7, #24]
  1385. 8000fda: 4413 add r3, r2
  1386. 8000fdc: 61bb str r3, [r7, #24]
  1387. break;
  1388. 8000fde: bf00 nop
  1389. }
  1390. return doy;
  1391. 8000fe0: 69bb ldr r3, [r7, #24]
  1392. }
  1393. 8000fe2: 4618 mov r0, r3
  1394. 8000fe4: 3720 adds r7, #32
  1395. 8000fe6: 46bd mov sp, r7
  1396. 8000fe8: bd80 pop {r7, pc}
  1397. 8000fea: bf00 nop
  1398. 8000fec: 0000 movs r0, r0
  1399. ...
  1400. 08000ff0 <calc_sunrise_sunset>:
  1401. * Function Name : calc_sunrise_sunset
  1402. * Description : calculates the sunrise and sunset time of a specific date
  1403. * Source : General Solar Position Calculations, NOAA Global Monitoring Division
  1404. *******************************************************************************/
  1405. void calc_sunrise_sunset(int date, int month, int year, int sunrise_time[2], int sunset_time[2])
  1406. {
  1407. 8000ff0: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
  1408. 8000ff4: b0a3 sub sp, #140 ; 0x8c
  1409. 8000ff6: af00 add r7, sp, #0
  1410. 8000ff8: 60f8 str r0, [r7, #12]
  1411. 8000ffa: 60b9 str r1, [r7, #8]
  1412. 8000ffc: 607a str r2, [r7, #4]
  1413. 8000ffe: 603b str r3, [r7, #0]
  1414. double gamma = 0;
  1415. 8001000: f04f 0300 mov.w r3, #0
  1416. 8001004: f04f 0400 mov.w r4, #0
  1417. 8001008: e9c7 3420 strd r3, r4, [r7, #128] ; 0x80
  1418. bool leap_year;
  1419. double eqtime = 0;
  1420. 800100c: f04f 0300 mov.w r3, #0
  1421. 8001010: f04f 0400 mov.w r4, #0
  1422. 8001014: e9c7 341a strd r3, r4, [r7, #104] ; 0x68
  1423. double decl = 0;
  1424. 8001018: f04f 0300 mov.w r3, #0
  1425. 800101c: f04f 0400 mov.w r4, #0
  1426. 8001020: e9c7 3418 strd r3, r4, [r7, #96] ; 0x60
  1427. double decl_deg = 0;
  1428. 8001024: f04f 0300 mov.w r3, #0
  1429. 8001028: f04f 0400 mov.w r4, #0
  1430. 800102c: e9c7 3416 strd r3, r4, [r7, #88] ; 0x58
  1431. double zenith_sun = 0;
  1432. 8001030: f04f 0300 mov.w r3, #0
  1433. 8001034: f04f 0400 mov.w r4, #0
  1434. 8001038: e9c7 3414 strd r3, r4, [r7, #80] ; 0x50
  1435. double lat_nbg_rad = 0;
  1436. 800103c: f04f 0300 mov.w r3, #0
  1437. 8001040: f04f 0400 mov.w r4, #0
  1438. 8001044: e9c7 3412 strd r3, r4, [r7, #72] ; 0x48
  1439. double ha = 0;
  1440. 8001048: f04f 0300 mov.w r3, #0
  1441. 800104c: f04f 0400 mov.w r4, #0
  1442. 8001050: e9c7 3410 strd r3, r4, [r7, #64] ; 0x40
  1443. double sunrise = 0;
  1444. 8001054: f04f 0300 mov.w r3, #0
  1445. 8001058: f04f 0400 mov.w r4, #0
  1446. 800105c: e9c7 340e strd r3, r4, [r7, #56] ; 0x38
  1447. double sunset = 0;
  1448. 8001060: f04f 0300 mov.w r3, #0
  1449. 8001064: f04f 0400 mov.w r4, #0
  1450. 8001068: e9c7 340c strd r3, r4, [r7, #48] ; 0x30
  1451. double ha_deg = 0;
  1452. 800106c: f04f 0300 mov.w r3, #0
  1453. 8001070: f04f 0400 mov.w r4, #0
  1454. 8001074: e9c7 340a strd r3, r4, [r7, #40] ; 0x28
  1455. int sunrise_h = 0;
  1456. 8001078: 2300 movs r3, #0
  1457. 800107a: 67fb str r3, [r7, #124] ; 0x7c
  1458. int sunset_h = 0;
  1459. 800107c: 2300 movs r3, #0
  1460. 800107e: 67bb str r3, [r7, #120] ; 0x78
  1461. double sunrise_min = 0;
  1462. 8001080: f04f 0300 mov.w r3, #0
  1463. 8001084: f04f 0400 mov.w r4, #0
  1464. 8001088: e9c7 3408 strd r3, r4, [r7, #32]
  1465. double sunset_min = 0;
  1466. 800108c: f04f 0300 mov.w r3, #0
  1467. 8001090: f04f 0400 mov.w r4, #0
  1468. 8001094: e9c7 3406 strd r3, r4, [r7, #24]
  1469. int int_sunrise_min = 0;
  1470. 8001098: 2300 movs r3, #0
  1471. 800109a: 677b str r3, [r7, #116] ; 0x74
  1472. int int_sunset_min = 0;
  1473. 800109c: 2300 movs r3, #0
  1474. 800109e: 673b str r3, [r7, #112] ; 0x70
  1475. //day of year calculation
  1476. int day_of_year = calc_day_of_year(date, month, year);
  1477. 80010a0: 687a ldr r2, [r7, #4]
  1478. 80010a2: 68b9 ldr r1, [r7, #8]
  1479. 80010a4: 68f8 ldr r0, [r7, #12]
  1480. 80010a6: f7ff ff23 bl 8000ef0 <calc_day_of_year>
  1481. 80010aa: 6178 str r0, [r7, #20]
  1482. // fractional year (γ) in radians
  1483. // check for leap year
  1484. leap_year = leap_year_check(year);
  1485. 80010ac: 6878 ldr r0, [r7, #4]
  1486. 80010ae: f7ff feef bl 8000e90 <leap_year_check>
  1487. 80010b2: 4603 mov r3, r0
  1488. 80010b4: 2b00 cmp r3, #0
  1489. 80010b6: bf14 ite ne
  1490. 80010b8: 2301 movne r3, #1
  1491. 80010ba: 2300 moveq r3, #0
  1492. 80010bc: 74fb strb r3, [r7, #19]
  1493. if(leap_year == false)
  1494. 80010be: 7cfb ldrb r3, [r7, #19]
  1495. 80010c0: f083 0301 eor.w r3, r3, #1
  1496. 80010c4: b2db uxtb r3, r3
  1497. 80010c6: 2b00 cmp r3, #0
  1498. 80010c8: d00f beq.n 80010ea <calc_sunrise_sunset+0xfa>
  1499. {
  1500. //The back part of the formula was omitted, because there is no difference in the result
  1501. gamma = ((2 * M_PI)/365)*(day_of_year - 1);
  1502. 80010ca: 697b ldr r3, [r7, #20]
  1503. 80010cc: 3b01 subs r3, #1
  1504. 80010ce: 4618 mov r0, r3
  1505. 80010d0: f7ff f9dc bl 800048c <__aeabi_i2d>
  1506. 80010d4: f20f 537c addw r3, pc, #1404 ; 0x57c
  1507. 80010d8: e9d3 2300 ldrd r2, r3, [r3]
  1508. 80010dc: f7ff fa40 bl 8000560 <__aeabi_dmul>
  1509. 80010e0: 4603 mov r3, r0
  1510. 80010e2: 460c mov r4, r1
  1511. 80010e4: e9c7 3420 strd r3, r4, [r7, #128] ; 0x80
  1512. 80010e8: e00e b.n 8001108 <calc_sunrise_sunset+0x118>
  1513. } else {
  1514. //The back part of the formula was omitted, because there is no difference in the result
  1515. gamma = ((2 * M_PI)/366)*(day_of_year - 1);
  1516. 80010ea: 697b ldr r3, [r7, #20]
  1517. 80010ec: 3b01 subs r3, #1
  1518. 80010ee: 4618 mov r0, r3
  1519. 80010f0: f7ff f9cc bl 800048c <__aeabi_i2d>
  1520. 80010f4: f20f 5364 addw r3, pc, #1380 ; 0x564
  1521. 80010f8: e9d3 2300 ldrd r2, r3, [r3]
  1522. 80010fc: f7ff fa30 bl 8000560 <__aeabi_dmul>
  1523. 8001100: 4603 mov r3, r0
  1524. 8001102: 460c mov r4, r1
  1525. 8001104: e9c7 3420 strd r3, r4, [r7, #128] ; 0x80
  1526. }
  1527. //Equation of time in minutes
  1528. eqtime = 229.18*(0.000075 + 0.001868*cos(gamma) - 0.032077*sin(gamma) - 0.014615*cos(2*gamma) - 0.040849*sin(2*gamma));
  1529. 8001108: ed97 0b20 vldr d0, [r7, #128] ; 0x80
  1530. 800110c: f003 f968 bl 80043e0 <cos>
  1531. 8001110: ec51 0b10 vmov r0, r1, d0
  1532. 8001114: f20f 534c addw r3, pc, #1356 ; 0x54c
  1533. 8001118: e9d3 2300 ldrd r2, r3, [r3]
  1534. 800111c: f7ff fa20 bl 8000560 <__aeabi_dmul>
  1535. 8001120: 4603 mov r3, r0
  1536. 8001122: 460c mov r4, r1
  1537. 8001124: 4618 mov r0, r3
  1538. 8001126: 4621 mov r1, r4
  1539. 8001128: f20f 5340 addw r3, pc, #1344 ; 0x540
  1540. 800112c: e9d3 2300 ldrd r2, r3, [r3]
  1541. 8001130: f7ff f860 bl 80001f4 <__adddf3>
  1542. 8001134: 4603 mov r3, r0
  1543. 8001136: 460c mov r4, r1
  1544. 8001138: 4625 mov r5, r4
  1545. 800113a: 461c mov r4, r3
  1546. 800113c: ed97 0b20 vldr d0, [r7, #128] ; 0x80
  1547. 8001140: f003 fa16 bl 8004570 <sin>
  1548. 8001144: ec51 0b10 vmov r0, r1, d0
  1549. 8001148: f20f 5328 addw r3, pc, #1320 ; 0x528
  1550. 800114c: e9d3 2300 ldrd r2, r3, [r3]
  1551. 8001150: f7ff fa06 bl 8000560 <__aeabi_dmul>
  1552. 8001154: 4602 mov r2, r0
  1553. 8001156: 460b mov r3, r1
  1554. 8001158: 4620 mov r0, r4
  1555. 800115a: 4629 mov r1, r5
  1556. 800115c: f7ff f848 bl 80001f0 <__aeabi_dsub>
  1557. 8001160: 4603 mov r3, r0
  1558. 8001162: 460c mov r4, r1
  1559. 8001164: 4625 mov r5, r4
  1560. 8001166: 461c mov r4, r3
  1561. 8001168: e9d7 0120 ldrd r0, r1, [r7, #128] ; 0x80
  1562. 800116c: 4602 mov r2, r0
  1563. 800116e: 460b mov r3, r1
  1564. 8001170: f7ff f840 bl 80001f4 <__adddf3>
  1565. 8001174: 4602 mov r2, r0
  1566. 8001176: 460b mov r3, r1
  1567. 8001178: ec43 2b17 vmov d7, r2, r3
  1568. 800117c: eeb0 0a47 vmov.f32 s0, s14
  1569. 8001180: eef0 0a67 vmov.f32 s1, s15
  1570. 8001184: f003 f92c bl 80043e0 <cos>
  1571. 8001188: ec51 0b10 vmov r0, r1, d0
  1572. 800118c: f20f 43ec addw r3, pc, #1260 ; 0x4ec
  1573. 8001190: e9d3 2300 ldrd r2, r3, [r3]
  1574. 8001194: f7ff f9e4 bl 8000560 <__aeabi_dmul>
  1575. 8001198: 4602 mov r2, r0
  1576. 800119a: 460b mov r3, r1
  1577. 800119c: 4620 mov r0, r4
  1578. 800119e: 4629 mov r1, r5
  1579. 80011a0: f7ff f826 bl 80001f0 <__aeabi_dsub>
  1580. 80011a4: 4603 mov r3, r0
  1581. 80011a6: 460c mov r4, r1
  1582. 80011a8: 4625 mov r5, r4
  1583. 80011aa: 461c mov r4, r3
  1584. 80011ac: e9d7 0120 ldrd r0, r1, [r7, #128] ; 0x80
  1585. 80011b0: 4602 mov r2, r0
  1586. 80011b2: 460b mov r3, r1
  1587. 80011b4: f7ff f81e bl 80001f4 <__adddf3>
  1588. 80011b8: 4602 mov r2, r0
  1589. 80011ba: 460b mov r3, r1
  1590. 80011bc: ec43 2b17 vmov d7, r2, r3
  1591. 80011c0: eeb0 0a47 vmov.f32 s0, s14
  1592. 80011c4: eef0 0a67 vmov.f32 s1, s15
  1593. 80011c8: f003 f9d2 bl 8004570 <sin>
  1594. 80011cc: ec51 0b10 vmov r0, r1, d0
  1595. 80011d0: f20f 43b0 addw r3, pc, #1200 ; 0x4b0
  1596. 80011d4: e9d3 2300 ldrd r2, r3, [r3]
  1597. 80011d8: f7ff f9c2 bl 8000560 <__aeabi_dmul>
  1598. 80011dc: 4602 mov r2, r0
  1599. 80011de: 460b mov r3, r1
  1600. 80011e0: 4620 mov r0, r4
  1601. 80011e2: 4629 mov r1, r5
  1602. 80011e4: f7ff f804 bl 80001f0 <__aeabi_dsub>
  1603. 80011e8: 4603 mov r3, r0
  1604. 80011ea: 460c mov r4, r1
  1605. 80011ec: 4618 mov r0, r3
  1606. 80011ee: 4621 mov r1, r4
  1607. 80011f0: f20f 4398 addw r3, pc, #1176 ; 0x498
  1608. 80011f4: e9d3 2300 ldrd r2, r3, [r3]
  1609. 80011f8: f7ff f9b2 bl 8000560 <__aeabi_dmul>
  1610. 80011fc: 4603 mov r3, r0
  1611. 80011fe: 460c mov r4, r1
  1612. 8001200: e9c7 341a strd r3, r4, [r7, #104] ; 0x68
  1613. //Solar declination angle in radians
  1614. decl = 0.006918 - 0.399912*cos(gamma) + 0.070257*sin(gamma) - 0.006758*cos(2*gamma) + 0.000907*sin(2*gamma) - 0.002697*cos(3*gamma) + 0.00148*sin(3*gamma);
  1615. 8001204: ed97 0b20 vldr d0, [r7, #128] ; 0x80
  1616. 8001208: f003 f8ea bl 80043e0 <cos>
  1617. 800120c: ec51 0b10 vmov r0, r1, d0
  1618. 8001210: f20f 4380 addw r3, pc, #1152 ; 0x480
  1619. 8001214: e9d3 2300 ldrd r2, r3, [r3]
  1620. 8001218: f7ff f9a2 bl 8000560 <__aeabi_dmul>
  1621. 800121c: 4603 mov r3, r0
  1622. 800121e: 460c mov r4, r1
  1623. 8001220: 461a mov r2, r3
  1624. 8001222: 4623 mov r3, r4
  1625. 8001224: f20f 4174 addw r1, pc, #1140 ; 0x474
  1626. 8001228: e9d1 0100 ldrd r0, r1, [r1]
  1627. 800122c: f7fe ffe0 bl 80001f0 <__aeabi_dsub>
  1628. 8001230: 4603 mov r3, r0
  1629. 8001232: 460c mov r4, r1
  1630. 8001234: 4625 mov r5, r4
  1631. 8001236: 461c mov r4, r3
  1632. 8001238: ed97 0b20 vldr d0, [r7, #128] ; 0x80
  1633. 800123c: f003 f998 bl 8004570 <sin>
  1634. 8001240: ec51 0b10 vmov r0, r1, d0
  1635. 8001244: f20f 435c addw r3, pc, #1116 ; 0x45c
  1636. 8001248: e9d3 2300 ldrd r2, r3, [r3]
  1637. 800124c: f7ff f988 bl 8000560 <__aeabi_dmul>
  1638. 8001250: 4602 mov r2, r0
  1639. 8001252: 460b mov r3, r1
  1640. 8001254: 4620 mov r0, r4
  1641. 8001256: 4629 mov r1, r5
  1642. 8001258: f7fe ffcc bl 80001f4 <__adddf3>
  1643. 800125c: 4603 mov r3, r0
  1644. 800125e: 460c mov r4, r1
  1645. 8001260: 4625 mov r5, r4
  1646. 8001262: 461c mov r4, r3
  1647. 8001264: e9d7 0120 ldrd r0, r1, [r7, #128] ; 0x80
  1648. 8001268: 4602 mov r2, r0
  1649. 800126a: 460b mov r3, r1
  1650. 800126c: f7fe ffc2 bl 80001f4 <__adddf3>
  1651. 8001270: 4602 mov r2, r0
  1652. 8001272: 460b mov r3, r1
  1653. 8001274: ec43 2b17 vmov d7, r2, r3
  1654. 8001278: eeb0 0a47 vmov.f32 s0, s14
  1655. 800127c: eef0 0a67 vmov.f32 s1, s15
  1656. 8001280: f003 f8ae bl 80043e0 <cos>
  1657. 8001284: ec51 0b10 vmov r0, r1, d0
  1658. 8001288: f20f 4320 addw r3, pc, #1056 ; 0x420
  1659. 800128c: e9d3 2300 ldrd r2, r3, [r3]
  1660. 8001290: f7ff f966 bl 8000560 <__aeabi_dmul>
  1661. 8001294: 4602 mov r2, r0
  1662. 8001296: 460b mov r3, r1
  1663. 8001298: 4620 mov r0, r4
  1664. 800129a: 4629 mov r1, r5
  1665. 800129c: f7fe ffa8 bl 80001f0 <__aeabi_dsub>
  1666. 80012a0: 4603 mov r3, r0
  1667. 80012a2: 460c mov r4, r1
  1668. 80012a4: 4625 mov r5, r4
  1669. 80012a6: 461c mov r4, r3
  1670. 80012a8: e9d7 0120 ldrd r0, r1, [r7, #128] ; 0x80
  1671. 80012ac: 4602 mov r2, r0
  1672. 80012ae: 460b mov r3, r1
  1673. 80012b0: f7fe ffa0 bl 80001f4 <__adddf3>
  1674. 80012b4: 4602 mov r2, r0
  1675. 80012b6: 460b mov r3, r1
  1676. 80012b8: ec43 2b17 vmov d7, r2, r3
  1677. 80012bc: eeb0 0a47 vmov.f32 s0, s14
  1678. 80012c0: eef0 0a67 vmov.f32 s1, s15
  1679. 80012c4: f003 f954 bl 8004570 <sin>
  1680. 80012c8: ec51 0b10 vmov r0, r1, d0
  1681. 80012cc: a3f9 add r3, pc, #996 ; (adr r3, 80016b4 <calc_sunrise_sunset+0x6c4>)
  1682. 80012ce: e9d3 2300 ldrd r2, r3, [r3]
  1683. 80012d2: f7ff f945 bl 8000560 <__aeabi_dmul>
  1684. 80012d6: 4602 mov r2, r0
  1685. 80012d8: 460b mov r3, r1
  1686. 80012da: 4620 mov r0, r4
  1687. 80012dc: 4629 mov r1, r5
  1688. 80012de: f7fe ff89 bl 80001f4 <__adddf3>
  1689. 80012e2: 4603 mov r3, r0
  1690. 80012e4: 460c mov r4, r1
  1691. 80012e6: 4625 mov r5, r4
  1692. 80012e8: 461c mov r4, r3
  1693. 80012ea: f04f 0200 mov.w r2, #0
  1694. 80012ee: 4bd0 ldr r3, [pc, #832] ; (8001630 <calc_sunrise_sunset+0x640>)
  1695. 80012f0: e9d7 0120 ldrd r0, r1, [r7, #128] ; 0x80
  1696. 80012f4: f7ff f934 bl 8000560 <__aeabi_dmul>
  1697. 80012f8: 4602 mov r2, r0
  1698. 80012fa: 460b mov r3, r1
  1699. 80012fc: ec43 2b17 vmov d7, r2, r3
  1700. 8001300: eeb0 0a47 vmov.f32 s0, s14
  1701. 8001304: eef0 0a67 vmov.f32 s1, s15
  1702. 8001308: f003 f86a bl 80043e0 <cos>
  1703. 800130c: ec51 0b10 vmov r0, r1, d0
  1704. 8001310: a3c1 add r3, pc, #772 ; (adr r3, 8001618 <calc_sunrise_sunset+0x628>)
  1705. 8001312: e9d3 2300 ldrd r2, r3, [r3]
  1706. 8001316: f7ff f923 bl 8000560 <__aeabi_dmul>
  1707. 800131a: 4602 mov r2, r0
  1708. 800131c: 460b mov r3, r1
  1709. 800131e: 4620 mov r0, r4
  1710. 8001320: 4629 mov r1, r5
  1711. 8001322: f7fe ff65 bl 80001f0 <__aeabi_dsub>
  1712. 8001326: 4603 mov r3, r0
  1713. 8001328: 460c mov r4, r1
  1714. 800132a: 4625 mov r5, r4
  1715. 800132c: 461c mov r4, r3
  1716. 800132e: f04f 0200 mov.w r2, #0
  1717. 8001332: 4bbf ldr r3, [pc, #764] ; (8001630 <calc_sunrise_sunset+0x640>)
  1718. 8001334: e9d7 0120 ldrd r0, r1, [r7, #128] ; 0x80
  1719. 8001338: f7ff f912 bl 8000560 <__aeabi_dmul>
  1720. 800133c: 4602 mov r2, r0
  1721. 800133e: 460b mov r3, r1
  1722. 8001340: ec43 2b17 vmov d7, r2, r3
  1723. 8001344: eeb0 0a47 vmov.f32 s0, s14
  1724. 8001348: eef0 0a67 vmov.f32 s1, s15
  1725. 800134c: f003 f910 bl 8004570 <sin>
  1726. 8001350: ec51 0b10 vmov r0, r1, d0
  1727. 8001354: a3b2 add r3, pc, #712 ; (adr r3, 8001620 <calc_sunrise_sunset+0x630>)
  1728. 8001356: e9d3 2300 ldrd r2, r3, [r3]
  1729. 800135a: f7ff f901 bl 8000560 <__aeabi_dmul>
  1730. 800135e: 4602 mov r2, r0
  1731. 8001360: 460b mov r3, r1
  1732. 8001362: 4620 mov r0, r4
  1733. 8001364: 4629 mov r1, r5
  1734. 8001366: f7fe ff45 bl 80001f4 <__adddf3>
  1735. 800136a: 4603 mov r3, r0
  1736. 800136c: 460c mov r4, r1
  1737. 800136e: e9c7 3418 strd r3, r4, [r7, #96] ; 0x60
  1738. //Solar declination angle in degrees
  1739. decl_deg = rad_to_deg(decl);
  1740. 8001372: ed97 0b18 vldr d0, [r7, #96] ; 0x60
  1741. 8001376: f7ff fd6b bl 8000e50 <rad_to_deg>
  1742. 800137a: ed87 0b16 vstr d0, [r7, #88] ; 0x58
  1743. //Hour angle in degrees, positive number corresponds to sunrise, negative to sunset
  1744. //special case of sunrise or sunset, the zenith is set to 90.833Deg
  1745. zenith_sun = deg_to_rad(90.833);
  1746. 800137e: ed9f 0baa vldr d0, [pc, #680] ; 8001628 <calc_sunrise_sunset+0x638>
  1747. 8001382: f7ff fd45 bl 8000e10 <deg_to_rad>
  1748. 8001386: ed87 0b14 vstr d0, [r7, #80] ; 0x50
  1749. //Latitude of Nuernberg in rad
  1750. lat_nbg_rad = deg_to_rad(latitude_nbg);
  1751. 800138a: 4baa ldr r3, [pc, #680] ; (8001634 <calc_sunrise_sunset+0x644>)
  1752. 800138c: 681b ldr r3, [r3, #0]
  1753. 800138e: 4618 mov r0, r3
  1754. 8001390: f7ff f87c bl 800048c <__aeabi_i2d>
  1755. 8001394: 4603 mov r3, r0
  1756. 8001396: 460c mov r4, r1
  1757. 8001398: ec44 3b10 vmov d0, r3, r4
  1758. 800139c: f7ff fd38 bl 8000e10 <deg_to_rad>
  1759. 80013a0: ed87 0b12 vstr d0, [r7, #72] ; 0x48
  1760. ha = acos((cos(zenith_sun)/(cos(lat_nbg_rad)*cos(decl)))-(tan(lat_nbg_rad)*tan(decl)));
  1761. 80013a4: ed97 0b14 vldr d0, [r7, #80] ; 0x50
  1762. 80013a8: f003 f81a bl 80043e0 <cos>
  1763. 80013ac: ec56 5b10 vmov r5, r6, d0
  1764. 80013b0: ed97 0b12 vldr d0, [r7, #72] ; 0x48
  1765. 80013b4: f003 f814 bl 80043e0 <cos>
  1766. 80013b8: ec59 8b10 vmov r8, r9, d0
  1767. 80013bc: ed97 0b18 vldr d0, [r7, #96] ; 0x60
  1768. 80013c0: f003 f80e bl 80043e0 <cos>
  1769. 80013c4: ec54 3b10 vmov r3, r4, d0
  1770. 80013c8: 461a mov r2, r3
  1771. 80013ca: 4623 mov r3, r4
  1772. 80013cc: 4640 mov r0, r8
  1773. 80013ce: 4649 mov r1, r9
  1774. 80013d0: f7ff f8c6 bl 8000560 <__aeabi_dmul>
  1775. 80013d4: 4603 mov r3, r0
  1776. 80013d6: 460c mov r4, r1
  1777. 80013d8: 461a mov r2, r3
  1778. 80013da: 4623 mov r3, r4
  1779. 80013dc: 4628 mov r0, r5
  1780. 80013de: 4631 mov r1, r6
  1781. 80013e0: f7ff f9e8 bl 80007b4 <__aeabi_ddiv>
  1782. 80013e4: 4603 mov r3, r0
  1783. 80013e6: 460c mov r4, r1
  1784. 80013e8: 4625 mov r5, r4
  1785. 80013ea: 461c mov r4, r3
  1786. 80013ec: ed97 0b12 vldr d0, [r7, #72] ; 0x48
  1787. 80013f0: f003 f906 bl 8004600 <tan>
  1788. 80013f4: ec59 8b10 vmov r8, r9, d0
  1789. 80013f8: ed97 0b18 vldr d0, [r7, #96] ; 0x60
  1790. 80013fc: f003 f900 bl 8004600 <tan>
  1791. 8001400: ec53 2b10 vmov r2, r3, d0
  1792. 8001404: 4640 mov r0, r8
  1793. 8001406: 4649 mov r1, r9
  1794. 8001408: f7ff f8aa bl 8000560 <__aeabi_dmul>
  1795. 800140c: 4602 mov r2, r0
  1796. 800140e: 460b mov r3, r1
  1797. 8001410: 4620 mov r0, r4
  1798. 8001412: 4629 mov r1, r5
  1799. 8001414: f7fe feec bl 80001f0 <__aeabi_dsub>
  1800. 8001418: 4603 mov r3, r0
  1801. 800141a: 460c mov r4, r1
  1802. 800141c: ec44 3b17 vmov d7, r3, r4
  1803. 8001420: eeb0 0a47 vmov.f32 s0, s14
  1804. 8001424: eef0 0a67 vmov.f32 s1, s15
  1805. 8001428: f003 f91a bl 8004660 <acos>
  1806. 800142c: ed87 0b10 vstr d0, [r7, #64] ; 0x40
  1807. ha_deg = rad_to_deg(ha);
  1808. 8001430: ed97 0b10 vldr d0, [r7, #64] ; 0x40
  1809. 8001434: f7ff fd0c bl 8000e50 <rad_to_deg>
  1810. 8001438: ed87 0b0a vstr d0, [r7, #40] ; 0x28
  1811. //UTC time of sunrise (or sunset) in minutes
  1812. sunrise = (720-4*(longitude_nbg+ha_deg)-eqtime);
  1813. 800143c: 4b7e ldr r3, [pc, #504] ; (8001638 <calc_sunrise_sunset+0x648>)
  1814. 800143e: 681b ldr r3, [r3, #0]
  1815. 8001440: 4618 mov r0, r3
  1816. 8001442: f7ff f823 bl 800048c <__aeabi_i2d>
  1817. 8001446: e9d7 230a ldrd r2, r3, [r7, #40] ; 0x28
  1818. 800144a: f7fe fed3 bl 80001f4 <__adddf3>
  1819. 800144e: 4603 mov r3, r0
  1820. 8001450: 460c mov r4, r1
  1821. 8001452: 4618 mov r0, r3
  1822. 8001454: 4621 mov r1, r4
  1823. 8001456: f04f 0200 mov.w r2, #0
  1824. 800145a: 4b78 ldr r3, [pc, #480] ; (800163c <calc_sunrise_sunset+0x64c>)
  1825. 800145c: f7ff f880 bl 8000560 <__aeabi_dmul>
  1826. 8001460: 4603 mov r3, r0
  1827. 8001462: 460c mov r4, r1
  1828. 8001464: 461a mov r2, r3
  1829. 8001466: 4623 mov r3, r4
  1830. 8001468: f04f 0000 mov.w r0, #0
  1831. 800146c: 4974 ldr r1, [pc, #464] ; (8001640 <calc_sunrise_sunset+0x650>)
  1832. 800146e: f7fe febf bl 80001f0 <__aeabi_dsub>
  1833. 8001472: 4603 mov r3, r0
  1834. 8001474: 460c mov r4, r1
  1835. 8001476: 4618 mov r0, r3
  1836. 8001478: 4621 mov r1, r4
  1837. 800147a: e9d7 231a ldrd r2, r3, [r7, #104] ; 0x68
  1838. 800147e: f7fe feb7 bl 80001f0 <__aeabi_dsub>
  1839. 8001482: 4603 mov r3, r0
  1840. 8001484: 460c mov r4, r1
  1841. 8001486: e9c7 340e strd r3, r4, [r7, #56] ; 0x38
  1842. sunset = 720-4*(longitude_nbg-ha_deg)-eqtime;
  1843. 800148a: 4b6b ldr r3, [pc, #428] ; (8001638 <calc_sunrise_sunset+0x648>)
  1844. 800148c: 681b ldr r3, [r3, #0]
  1845. 800148e: 4618 mov r0, r3
  1846. 8001490: f7fe fffc bl 800048c <__aeabi_i2d>
  1847. 8001494: e9d7 230a ldrd r2, r3, [r7, #40] ; 0x28
  1848. 8001498: f7fe feaa bl 80001f0 <__aeabi_dsub>
  1849. 800149c: 4603 mov r3, r0
  1850. 800149e: 460c mov r4, r1
  1851. 80014a0: 4618 mov r0, r3
  1852. 80014a2: 4621 mov r1, r4
  1853. 80014a4: f04f 0200 mov.w r2, #0
  1854. 80014a8: 4b64 ldr r3, [pc, #400] ; (800163c <calc_sunrise_sunset+0x64c>)
  1855. 80014aa: f7ff f859 bl 8000560 <__aeabi_dmul>
  1856. 80014ae: 4603 mov r3, r0
  1857. 80014b0: 460c mov r4, r1
  1858. 80014b2: 461a mov r2, r3
  1859. 80014b4: 4623 mov r3, r4
  1860. 80014b6: f04f 0000 mov.w r0, #0
  1861. 80014ba: 4961 ldr r1, [pc, #388] ; (8001640 <calc_sunrise_sunset+0x650>)
  1862. 80014bc: f7fe fe98 bl 80001f0 <__aeabi_dsub>
  1863. 80014c0: 4603 mov r3, r0
  1864. 80014c2: 460c mov r4, r1
  1865. 80014c4: 4618 mov r0, r3
  1866. 80014c6: 4621 mov r1, r4
  1867. 80014c8: e9d7 231a ldrd r2, r3, [r7, #104] ; 0x68
  1868. 80014cc: f7fe fe90 bl 80001f0 <__aeabi_dsub>
  1869. 80014d0: 4603 mov r3, r0
  1870. 80014d2: 460c mov r4, r1
  1871. 80014d4: e9c7 340c strd r3, r4, [r7, #48] ; 0x30
  1872. //Convert sunrise (or sunset) UTC time in hours
  1873. sunrise = sunrise/60;
  1874. 80014d8: f04f 0200 mov.w r2, #0
  1875. 80014dc: 4b59 ldr r3, [pc, #356] ; (8001644 <calc_sunrise_sunset+0x654>)
  1876. 80014de: e9d7 010e ldrd r0, r1, [r7, #56] ; 0x38
  1877. 80014e2: f7ff f967 bl 80007b4 <__aeabi_ddiv>
  1878. 80014e6: 4603 mov r3, r0
  1879. 80014e8: 460c mov r4, r1
  1880. 80014ea: e9c7 340e strd r3, r4, [r7, #56] ; 0x38
  1881. sunset = sunset/60;
  1882. 80014ee: f04f 0200 mov.w r2, #0
  1883. 80014f2: 4b54 ldr r3, [pc, #336] ; (8001644 <calc_sunrise_sunset+0x654>)
  1884. 80014f4: e9d7 010c ldrd r0, r1, [r7, #48] ; 0x30
  1885. 80014f8: f7ff f95c bl 80007b4 <__aeabi_ddiv>
  1886. 80014fc: 4603 mov r3, r0
  1887. 80014fe: 460c mov r4, r1
  1888. 8001500: e9c7 340c strd r3, r4, [r7, #48] ; 0x30
  1889. //Seperate hours and minutes
  1890. sunrise_h = floor(sunrise);
  1891. 8001504: ed97 0b0e vldr d0, [r7, #56] ; 0x38
  1892. 8001508: f002 ffae bl 8004468 <floor>
  1893. 800150c: ec54 3b10 vmov r3, r4, d0
  1894. 8001510: 4618 mov r0, r3
  1895. 8001512: 4621 mov r1, r4
  1896. 8001514: f7ff fad4 bl 8000ac0 <__aeabi_d2iz>
  1897. 8001518: 4603 mov r3, r0
  1898. 800151a: 67fb str r3, [r7, #124] ; 0x7c
  1899. sunrise_min = sunrise - sunrise_h;
  1900. 800151c: 6ff8 ldr r0, [r7, #124] ; 0x7c
  1901. 800151e: f7fe ffb5 bl 800048c <__aeabi_i2d>
  1902. 8001522: 4603 mov r3, r0
  1903. 8001524: 460c mov r4, r1
  1904. 8001526: 461a mov r2, r3
  1905. 8001528: 4623 mov r3, r4
  1906. 800152a: e9d7 010e ldrd r0, r1, [r7, #56] ; 0x38
  1907. 800152e: f7fe fe5f bl 80001f0 <__aeabi_dsub>
  1908. 8001532: 4603 mov r3, r0
  1909. 8001534: 460c mov r4, r1
  1910. 8001536: e9c7 3408 strd r3, r4, [r7, #32]
  1911. //Cut off after two decimal places
  1912. int_sunrise_min = floor(sunrise_min * 100.0);
  1913. 800153a: f04f 0200 mov.w r2, #0
  1914. 800153e: 4b42 ldr r3, [pc, #264] ; (8001648 <calc_sunrise_sunset+0x658>)
  1915. 8001540: e9d7 0108 ldrd r0, r1, [r7, #32]
  1916. 8001544: f7ff f80c bl 8000560 <__aeabi_dmul>
  1917. 8001548: 4603 mov r3, r0
  1918. 800154a: 460c mov r4, r1
  1919. 800154c: ec44 3b17 vmov d7, r3, r4
  1920. 8001550: eeb0 0a47 vmov.f32 s0, s14
  1921. 8001554: eef0 0a67 vmov.f32 s1, s15
  1922. 8001558: f002 ff86 bl 8004468 <floor>
  1923. 800155c: ec54 3b10 vmov r3, r4, d0
  1924. 8001560: 4618 mov r0, r3
  1925. 8001562: 4621 mov r1, r4
  1926. 8001564: f7ff faac bl 8000ac0 <__aeabi_d2iz>
  1927. 8001568: 4603 mov r3, r0
  1928. 800156a: 677b str r3, [r7, #116] ; 0x74
  1929. if (int_sunrise_min >= 60)
  1930. 800156c: 6f7b ldr r3, [r7, #116] ; 0x74
  1931. 800156e: 2b3b cmp r3, #59 ; 0x3b
  1932. 8001570: dd05 ble.n 800157e <calc_sunrise_sunset+0x58e>
  1933. {
  1934. sunrise_h = sunrise_h + 1;
  1935. 8001572: 6ffb ldr r3, [r7, #124] ; 0x7c
  1936. 8001574: 3301 adds r3, #1
  1937. 8001576: 67fb str r3, [r7, #124] ; 0x7c
  1938. int_sunrise_min = int_sunrise_min - 60;
  1939. 8001578: 6f7b ldr r3, [r7, #116] ; 0x74
  1940. 800157a: 3b3c subs r3, #60 ; 0x3c
  1941. 800157c: 677b str r3, [r7, #116] ; 0x74
  1942. }
  1943. sunset_h = floor(sunset);
  1944. 800157e: ed97 0b0c vldr d0, [r7, #48] ; 0x30
  1945. 8001582: f002 ff71 bl 8004468 <floor>
  1946. 8001586: ec54 3b10 vmov r3, r4, d0
  1947. 800158a: 4618 mov r0, r3
  1948. 800158c: 4621 mov r1, r4
  1949. 800158e: f7ff fa97 bl 8000ac0 <__aeabi_d2iz>
  1950. 8001592: 4603 mov r3, r0
  1951. 8001594: 67bb str r3, [r7, #120] ; 0x78
  1952. sunset_min = sunset - sunset_h;
  1953. 8001596: 6fb8 ldr r0, [r7, #120] ; 0x78
  1954. 8001598: f7fe ff78 bl 800048c <__aeabi_i2d>
  1955. 800159c: 4603 mov r3, r0
  1956. 800159e: 460c mov r4, r1
  1957. 80015a0: 461a mov r2, r3
  1958. 80015a2: 4623 mov r3, r4
  1959. 80015a4: e9d7 010c ldrd r0, r1, [r7, #48] ; 0x30
  1960. 80015a8: f7fe fe22 bl 80001f0 <__aeabi_dsub>
  1961. 80015ac: 4603 mov r3, r0
  1962. 80015ae: 460c mov r4, r1
  1963. 80015b0: e9c7 3406 strd r3, r4, [r7, #24]
  1964. //Cut off after two decimal places
  1965. int_sunset_min = floor(sunset_min * 100.0);
  1966. 80015b4: f04f 0200 mov.w r2, #0
  1967. 80015b8: 4b23 ldr r3, [pc, #140] ; (8001648 <calc_sunrise_sunset+0x658>)
  1968. 80015ba: e9d7 0106 ldrd r0, r1, [r7, #24]
  1969. 80015be: f7fe ffcf bl 8000560 <__aeabi_dmul>
  1970. 80015c2: 4603 mov r3, r0
  1971. 80015c4: 460c mov r4, r1
  1972. 80015c6: ec44 3b17 vmov d7, r3, r4
  1973. 80015ca: eeb0 0a47 vmov.f32 s0, s14
  1974. 80015ce: eef0 0a67 vmov.f32 s1, s15
  1975. 80015d2: f002 ff49 bl 8004468 <floor>
  1976. 80015d6: ec54 3b10 vmov r3, r4, d0
  1977. 80015da: 4618 mov r0, r3
  1978. 80015dc: 4621 mov r1, r4
  1979. 80015de: f7ff fa6f bl 8000ac0 <__aeabi_d2iz>
  1980. 80015e2: 4603 mov r3, r0
  1981. 80015e4: 673b str r3, [r7, #112] ; 0x70
  1982. if (int_sunset_min >= 60)
  1983. 80015e6: 6f3b ldr r3, [r7, #112] ; 0x70
  1984. 80015e8: 2b3b cmp r3, #59 ; 0x3b
  1985. 80015ea: dd05 ble.n 80015f8 <calc_sunrise_sunset+0x608>
  1986. {
  1987. sunset_h = sunset_h + 1;
  1988. 80015ec: 6fbb ldr r3, [r7, #120] ; 0x78
  1989. 80015ee: 3301 adds r3, #1
  1990. 80015f0: 67bb str r3, [r7, #120] ; 0x78
  1991. int_sunset_min = int_sunset_min - 60;
  1992. 80015f2: 6f3b ldr r3, [r7, #112] ; 0x70
  1993. 80015f4: 3b3c subs r3, #60 ; 0x3c
  1994. 80015f6: 673b str r3, [r7, #112] ; 0x70
  1995. }
  1996. //Add time difference from German time to UTC Time
  1997. //Private variable winterTime must be initialized accordingly
  1998. if (winterTime)
  1999. 80015f8: 4b14 ldr r3, [pc, #80] ; (800164c <calc_sunrise_sunset+0x65c>)
  2000. 80015fa: 781b ldrb r3, [r3, #0]
  2001. 80015fc: 2b00 cmp r3, #0
  2002. 80015fe: d05d beq.n 80016bc <calc_sunrise_sunset+0x6cc>
  2003. {
  2004. sunrise_h = sunrise_h + UTC_DER_win;
  2005. 8001600: 4b13 ldr r3, [pc, #76] ; (8001650 <calc_sunrise_sunset+0x660>)
  2006. 8001602: 681b ldr r3, [r3, #0]
  2007. 8001604: 6ffa ldr r2, [r7, #124] ; 0x7c
  2008. 8001606: 4413 add r3, r2
  2009. 8001608: 67fb str r3, [r7, #124] ; 0x7c
  2010. sunset_h = sunset_h + UTC_DER_win;
  2011. 800160a: 4b11 ldr r3, [pc, #68] ; (8001650 <calc_sunrise_sunset+0x660>)
  2012. 800160c: 681b ldr r3, [r3, #0]
  2013. 800160e: 6fba ldr r2, [r7, #120] ; 0x78
  2014. 8001610: 4413 add r3, r2
  2015. 8001612: 67bb str r3, [r7, #120] ; 0x78
  2016. 8001614: e05c b.n 80016d0 <calc_sunrise_sunset+0x6e0>
  2017. 8001616: bf00 nop
  2018. 8001618: d9839475 .word 0xd9839475
  2019. 800161c: 3f661804 .word 0x3f661804
  2020. 8001620: e646f156 .word 0xe646f156
  2021. 8001624: 3f583f91 .word 0x3f583f91
  2022. 8001628: df3b645a .word 0xdf3b645a
  2023. 800162c: 4056b54f .word 0x4056b54f
  2024. 8001630: 40080000 .word 0x40080000
  2025. 8001634: 20000000 .word 0x20000000
  2026. 8001638: 20000004 .word 0x20000004
  2027. 800163c: 40100000 .word 0x40100000
  2028. 8001640: 40868000 .word 0x40868000
  2029. 8001644: 404e0000 .word 0x404e0000
  2030. 8001648: 40590000 .word 0x40590000
  2031. 800164c: 20000010 .word 0x20000010
  2032. 8001650: 2000000c .word 0x2000000c
  2033. 8001654: d4b3ac9a .word 0xd4b3ac9a
  2034. 8001658: 3f91a099 .word 0x3f91a099
  2035. 800165c: 79e42523 .word 0x79e42523
  2036. 8001660: 3f919445 .word 0x3f919445
  2037. 8001664: ba2be059 .word 0xba2be059
  2038. 8001668: 3f5e9af5 .word 0x3f5e9af5
  2039. 800166c: 30553261 .word 0x30553261
  2040. 8001670: 3f13a92a .word 0x3f13a92a
  2041. 8001674: 83e8576d .word 0x83e8576d
  2042. 8001678: 3fa06c65 .word 0x3fa06c65
  2043. 800167c: 183f91e6 .word 0x183f91e6
  2044. 8001680: 3f8dee78 .word 0x3f8dee78
  2045. 8001684: fe260b2d .word 0xfe260b2d
  2046. 8001688: 3fa4ea28 .word 0x3fa4ea28
  2047. 800168c: 8f5c28f6 .word 0x8f5c28f6
  2048. 8001690: 406ca5c2 .word 0x406ca5c2
  2049. 8001694: 8051c9f7 .word 0x8051c9f7
  2050. 8001698: 3fd99828 .word 0x3fd99828
  2051. 800169c: 7c0f4517 .word 0x7c0f4517
  2052. 80016a0: 3f7c560c .word 0x3f7c560c
  2053. 80016a4: dd50a88f .word 0xdd50a88f
  2054. 80016a8: 3fb1fc5c .word 0x3fb1fc5c
  2055. 80016ac: cfc829d0 .word 0xcfc829d0
  2056. 80016b0: 3f7bae46 .word 0x3f7bae46
  2057. 80016b4: ab324852 .word 0xab324852
  2058. 80016b8: 3f4db877 .word 0x3f4db877
  2059. } else {
  2060. sunrise_h = sunrise_h + UTC_DER_sum;
  2061. 80016bc: 4b0f ldr r3, [pc, #60] ; (80016fc <calc_sunrise_sunset+0x70c>)
  2062. 80016be: 681b ldr r3, [r3, #0]
  2063. 80016c0: 6ffa ldr r2, [r7, #124] ; 0x7c
  2064. 80016c2: 4413 add r3, r2
  2065. 80016c4: 67fb str r3, [r7, #124] ; 0x7c
  2066. sunset_h = sunset_h + UTC_DER_sum;
  2067. 80016c6: 4b0d ldr r3, [pc, #52] ; (80016fc <calc_sunrise_sunset+0x70c>)
  2068. 80016c8: 681b ldr r3, [r3, #0]
  2069. 80016ca: 6fba ldr r2, [r7, #120] ; 0x78
  2070. 80016cc: 4413 add r3, r2
  2071. 80016ce: 67bb str r3, [r7, #120] ; 0x78
  2072. }
  2073. sunrise_time[0] = sunrise_h;
  2074. 80016d0: 683b ldr r3, [r7, #0]
  2075. 80016d2: 6ffa ldr r2, [r7, #124] ; 0x7c
  2076. 80016d4: 601a str r2, [r3, #0]
  2077. sunrise_time[1] = int_sunrise_min;
  2078. 80016d6: 683b ldr r3, [r7, #0]
  2079. 80016d8: 3304 adds r3, #4
  2080. 80016da: 6f7a ldr r2, [r7, #116] ; 0x74
  2081. 80016dc: 601a str r2, [r3, #0]
  2082. sunset_time[0] = sunset_h;
  2083. 80016de: f8d7 30a8 ldr.w r3, [r7, #168] ; 0xa8
  2084. 80016e2: 6fba ldr r2, [r7, #120] ; 0x78
  2085. 80016e4: 601a str r2, [r3, #0]
  2086. sunset_time[1] = int_sunset_min;
  2087. 80016e6: f8d7 30a8 ldr.w r3, [r7, #168] ; 0xa8
  2088. 80016ea: 3304 adds r3, #4
  2089. 80016ec: 6f3a ldr r2, [r7, #112] ; 0x70
  2090. 80016ee: 601a str r2, [r3, #0]
  2091. }
  2092. 80016f0: bf00 nop
  2093. 80016f2: 378c adds r7, #140 ; 0x8c
  2094. 80016f4: 46bd mov sp, r7
  2095. 80016f6: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
  2096. 80016fa: bf00 nop
  2097. 80016fc: 20000008 .word 0x20000008
  2098. 08001700 <calc_tomorrows_date>:
  2099. * Function Name : calc_tomorrows_date
  2100. * Description : calculates tomorrow's date
  2101. * Source : https://github.com/vyacht/stm32/blob/master/vynmea/rtc.c
  2102. *******************************************************************************/
  2103. void calc_tomorrows_date(int day, int wday, int month, int year, int DaysInMonth[12], int tomorrows_date[4])
  2104. {
  2105. 8001700: b480 push {r7}
  2106. 8001702: b085 sub sp, #20
  2107. 8001704: af00 add r7, sp, #0
  2108. 8001706: 60f8 str r0, [r7, #12]
  2109. 8001708: 60b9 str r1, [r7, #8]
  2110. 800170a: 607a str r2, [r7, #4]
  2111. 800170c: 603b str r3, [r7, #0]
  2112. bool leap_year;
  2113. day++; // next day
  2114. 800170e: 68fb ldr r3, [r7, #12]
  2115. 8001710: 3301 adds r3, #1
  2116. 8001712: 60fb str r3, [r7, #12]
  2117. wday++; // next weekday
  2118. 8001714: 68bb ldr r3, [r7, #8]
  2119. 8001716: 3301 adds r3, #1
  2120. 8001718: 60bb str r3, [r7, #8]
  2121. if(wday == 8)
  2122. 800171a: 68bb ldr r3, [r7, #8]
  2123. 800171c: 2b08 cmp r3, #8
  2124. 800171e: d101 bne.n 8001724 <calc_tomorrows_date+0x24>
  2125. {
  2126. wday = 1; // Monday
  2127. 8001720: 2301 movs r3, #1
  2128. 8001722: 60bb str r3, [r7, #8]
  2129. }
  2130. if(day > DaysInMonth[month-1])
  2131. 8001724: 687b ldr r3, [r7, #4]
  2132. 8001726: f103 4380 add.w r3, r3, #1073741824 ; 0x40000000
  2133. 800172a: 3b01 subs r3, #1
  2134. 800172c: 009b lsls r3, r3, #2
  2135. 800172e: 69ba ldr r2, [r7, #24]
  2136. 8001730: 4413 add r3, r2
  2137. 8001732: 681b ldr r3, [r3, #0]
  2138. 8001734: 68fa ldr r2, [r7, #12]
  2139. 8001736: 429a cmp r2, r3
  2140. 8001738: dd04 ble.n 8001744 <calc_tomorrows_date+0x44>
  2141. { // next month
  2142. day = 1;
  2143. 800173a: 2301 movs r3, #1
  2144. 800173c: 60fb str r3, [r7, #12]
  2145. month++;
  2146. 800173e: 687b ldr r3, [r7, #4]
  2147. 8001740: 3301 adds r3, #1
  2148. 8001742: 607b str r3, [r7, #4]
  2149. }
  2150. if(day > 31 && month == 12) // next year
  2151. 8001744: 68fb ldr r3, [r7, #12]
  2152. 8001746: 2b1f cmp r3, #31
  2153. 8001748: dd09 ble.n 800175e <calc_tomorrows_date+0x5e>
  2154. 800174a: 687b ldr r3, [r7, #4]
  2155. 800174c: 2b0c cmp r3, #12
  2156. 800174e: d106 bne.n 800175e <calc_tomorrows_date+0x5e>
  2157. {
  2158. day = 1;
  2159. 8001750: 2301 movs r3, #1
  2160. 8001752: 60fb str r3, [r7, #12]
  2161. month = 1;
  2162. 8001754: 2301 movs r3, #1
  2163. 8001756: 607b str r3, [r7, #4]
  2164. year++;
  2165. 8001758: 683b ldr r3, [r7, #0]
  2166. 800175a: 3301 adds r3, #1
  2167. 800175c: 603b str r3, [r7, #0]
  2168. }
  2169. tomorrows_date[0] = day;
  2170. 800175e: 69fb ldr r3, [r7, #28]
  2171. 8001760: 68fa ldr r2, [r7, #12]
  2172. 8001762: 601a str r2, [r3, #0]
  2173. tomorrows_date[1] = wday;
  2174. 8001764: 69fb ldr r3, [r7, #28]
  2175. 8001766: 3304 adds r3, #4
  2176. 8001768: 68ba ldr r2, [r7, #8]
  2177. 800176a: 601a str r2, [r3, #0]
  2178. tomorrows_date[2] = month;
  2179. 800176c: 69fb ldr r3, [r7, #28]
  2180. 800176e: 3308 adds r3, #8
  2181. 8001770: 687a ldr r2, [r7, #4]
  2182. 8001772: 601a str r2, [r3, #0]
  2183. tomorrows_date[3] = year;
  2184. 8001774: 69fb ldr r3, [r7, #28]
  2185. 8001776: 330c adds r3, #12
  2186. 8001778: 683a ldr r2, [r7, #0]
  2187. 800177a: 601a str r2, [r3, #0]
  2188. }
  2189. 800177c: bf00 nop
  2190. 800177e: 3714 adds r7, #20
  2191. 8001780: 46bd mov sp, r7
  2192. 8001782: f85d 7b04 ldr.w r7, [sp], #4
  2193. 8001786: 4770 bx lr
  2194. 08001788 <set_Alarm>:
  2195. /*******************************************************************************
  2196. * Function Name : set_Alarm
  2197. * Description : sets the wake up Alarm
  2198. *******************************************************************************/
  2199. void set_Alarm(int h, int min, int weekDay)
  2200. {
  2201. 8001788: b580 push {r7, lr}
  2202. 800178a: b084 sub sp, #16
  2203. 800178c: af00 add r7, sp, #0
  2204. 800178e: 60f8 str r0, [r7, #12]
  2205. 8001790: 60b9 str r1, [r7, #8]
  2206. 8001792: 607a str r2, [r7, #4]
  2207. /** Enable the Alarm A*/
  2208. sAlarm.AlarmTime.Hours = h;
  2209. 8001794: 68fb ldr r3, [r7, #12]
  2210. 8001796: b2da uxtb r2, r3
  2211. 8001798: 4b19 ldr r3, [pc, #100] ; (8001800 <set_Alarm+0x78>)
  2212. 800179a: 701a strb r2, [r3, #0]
  2213. sAlarm.AlarmTime.Minutes = min;
  2214. 800179c: 68bb ldr r3, [r7, #8]
  2215. 800179e: b2da uxtb r2, r3
  2216. 80017a0: 4b17 ldr r3, [pc, #92] ; (8001800 <set_Alarm+0x78>)
  2217. 80017a2: 705a strb r2, [r3, #1]
  2218. sAlarm.AlarmTime.Seconds = 0;
  2219. 80017a4: 4b16 ldr r3, [pc, #88] ; (8001800 <set_Alarm+0x78>)
  2220. 80017a6: 2200 movs r2, #0
  2221. 80017a8: 709a strb r2, [r3, #2]
  2222. sAlarm.AlarmTime.SubSeconds = 0;
  2223. 80017aa: 4b15 ldr r3, [pc, #84] ; (8001800 <set_Alarm+0x78>)
  2224. 80017ac: 2200 movs r2, #0
  2225. 80017ae: 605a str r2, [r3, #4]
  2226. sAlarm.AlarmTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
  2227. 80017b0: 4b13 ldr r3, [pc, #76] ; (8001800 <set_Alarm+0x78>)
  2228. 80017b2: 2200 movs r2, #0
  2229. 80017b4: 60da str r2, [r3, #12]
  2230. sAlarm.AlarmTime.StoreOperation = RTC_STOREOPERATION_RESET;
  2231. 80017b6: 4b12 ldr r3, [pc, #72] ; (8001800 <set_Alarm+0x78>)
  2232. 80017b8: 2200 movs r2, #0
  2233. 80017ba: 611a str r2, [r3, #16]
  2234. sAlarm.AlarmMask = RTC_ALARMMASK_NONE; //only by specific time
  2235. 80017bc: 4b10 ldr r3, [pc, #64] ; (8001800 <set_Alarm+0x78>)
  2236. 80017be: 2200 movs r2, #0
  2237. 80017c0: 615a str r2, [r3, #20]
  2238. sAlarm.AlarmSubSecondMask = RTC_ALARMSUBSECONDMASK_ALL;
  2239. 80017c2: 4b0f ldr r3, [pc, #60] ; (8001800 <set_Alarm+0x78>)
  2240. 80017c4: 2200 movs r2, #0
  2241. 80017c6: 619a str r2, [r3, #24]
  2242. sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_WEEKDAY;
  2243. 80017c8: 4b0d ldr r3, [pc, #52] ; (8001800 <set_Alarm+0x78>)
  2244. 80017ca: f04f 4280 mov.w r2, #1073741824 ; 0x40000000
  2245. 80017ce: 61da str r2, [r3, #28]
  2246. sAlarm.AlarmDateWeekDay = weekDay;
  2247. 80017d0: 687b ldr r3, [r7, #4]
  2248. 80017d2: b2da uxtb r2, r3
  2249. 80017d4: 4b0a ldr r3, [pc, #40] ; (8001800 <set_Alarm+0x78>)
  2250. 80017d6: f883 2020 strb.w r2, [r3, #32]
  2251. sAlarm.Alarm = RTC_ALARM_A;
  2252. 80017da: 4b09 ldr r3, [pc, #36] ; (8001800 <set_Alarm+0x78>)
  2253. 80017dc: f44f 7280 mov.w r2, #256 ; 0x100
  2254. 80017e0: 625a str r2, [r3, #36] ; 0x24
  2255. if (HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, RTC_FORMAT_BIN) != HAL_OK)
  2256. 80017e2: 2200 movs r2, #0
  2257. 80017e4: 4906 ldr r1, [pc, #24] ; (8001800 <set_Alarm+0x78>)
  2258. 80017e6: 4807 ldr r0, [pc, #28] ; (8001804 <set_Alarm+0x7c>)
  2259. 80017e8: f001 ff04 bl 80035f4 <HAL_RTC_SetAlarm_IT>
  2260. 80017ec: 4603 mov r3, r0
  2261. 80017ee: 2b00 cmp r3, #0
  2262. 80017f0: d001 beq.n 80017f6 <set_Alarm+0x6e>
  2263. {
  2264. Error_Handler();
  2265. 80017f2: f000 fa7d bl 8001cf0 <Error_Handler>
  2266. }
  2267. }
  2268. 80017f6: bf00 nop
  2269. 80017f8: 3710 adds r7, #16
  2270. 80017fa: 46bd mov sp, r7
  2271. 80017fc: bd80 pop {r7, pc}
  2272. 80017fe: bf00 nop
  2273. 8001800: 200000b8 .word 0x200000b8
  2274. 8001804: 200000e4 .word 0x200000e4
  2275. 08001808 <transmit_uart>:
  2276. // sending to UART
  2277. void transmit_uart(char *string){
  2278. 8001808: b580 push {r7, lr}
  2279. 800180a: b084 sub sp, #16
  2280. 800180c: af00 add r7, sp, #0
  2281. 800180e: 6078 str r0, [r7, #4]
  2282. uint8_t len = strlen(string);
  2283. 8001810: 6878 ldr r0, [r7, #4]
  2284. 8001812: f7fe fce1 bl 80001d8 <strlen>
  2285. 8001816: 4603 mov r3, r0
  2286. 8001818: 73fb strb r3, [r7, #15]
  2287. HAL_UART_Transmit(&huart2, (uint8_t*) string, len, 200);
  2288. 800181a: 7bfb ldrb r3, [r7, #15]
  2289. 800181c: b29a uxth r2, r3
  2290. 800181e: 23c8 movs r3, #200 ; 0xc8
  2291. 8001820: 6879 ldr r1, [r7, #4]
  2292. 8001822: 4803 ldr r0, [pc, #12] ; (8001830 <transmit_uart+0x28>)
  2293. 8001824: f002 f94b bl 8003abe <HAL_UART_Transmit>
  2294. }
  2295. 8001828: bf00 nop
  2296. 800182a: 3710 adds r7, #16
  2297. 800182c: 46bd mov sp, r7
  2298. 800182e: bd80 pop {r7, pc}
  2299. 8001830: 20000104 .word 0x20000104
  2300. 08001834 <main>:
  2301. /**
  2302. * @brief The application entry point.
  2303. * @retval int
  2304. */
  2305. int main(void)
  2306. {
  2307. 8001834: b5b0 push {r4, r5, r7, lr}
  2308. 8001836: b0ae sub sp, #184 ; 0xb8
  2309. 8001838: af02 add r7, sp, #8
  2310. /* USER CODE END 1 */
  2311. /* MCU Configuration--------------------------------------------------------*/
  2312. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  2313. HAL_Init();
  2314. 800183a: f000 fb6b bl 8001f14 <HAL_Init>
  2315. /* USER CODE BEGIN Init */
  2316. /* USER CODE END Init */
  2317. /* Configure the system clock */
  2318. SystemClock_Config();
  2319. 800183e: f000 f8e1 bl 8001a04 <SystemClock_Config>
  2320. /* USER CODE BEGIN SysInit */
  2321. /* USER CODE END SysInit */
  2322. /* Initialize all configured peripherals */
  2323. MX_GPIO_Init();
  2324. 8001842: f000 f9e5 bl 8001c10 <MX_GPIO_Init>
  2325. MX_USART2_UART_Init();
  2326. 8001846: f000 f9b9 bl 8001bbc <MX_USART2_UART_Init>
  2327. MX_RTC_Init();
  2328. 800184a: f000 f95f bl 8001b0c <MX_RTC_Init>
  2329. /* USER CODE BEGIN 2 */
  2330. int hours = 0;
  2331. 800184e: 2300 movs r3, #0
  2332. 8001850: f8c7 309c str.w r3, [r7, #156] ; 0x9c
  2333. int minutes = 0;
  2334. 8001854: 2300 movs r3, #0
  2335. 8001856: f8c7 3098 str.w r3, [r7, #152] ; 0x98
  2336. int seconds = 0;
  2337. 800185a: 2300 movs r3, #0
  2338. 800185c: f8c7 3094 str.w r3, [r7, #148] ; 0x94
  2339. int weekDay = 0;
  2340. 8001860: 2300 movs r3, #0
  2341. 8001862: f8c7 30ac str.w r3, [r7, #172] ; 0xac
  2342. int month = 0;
  2343. 8001866: 2300 movs r3, #0
  2344. 8001868: f8c7 30a8 str.w r3, [r7, #168] ; 0xa8
  2345. int date = 0;
  2346. 800186c: 2300 movs r3, #0
  2347. 800186e: f8c7 30a4 str.w r3, [r7, #164] ; 0xa4
  2348. int year = 0;
  2349. 8001872: 2300 movs r3, #0
  2350. 8001874: f8c7 30a0 str.w r3, [r7, #160] ; 0xa0
  2351. int sunrise_h = 0;
  2352. 8001878: 2300 movs r3, #0
  2353. 800187a: f8c7 3090 str.w r3, [r7, #144] ; 0x90
  2354. int sunset_h = 0;
  2355. 800187e: 2300 movs r3, #0
  2356. 8001880: f8c7 308c str.w r3, [r7, #140] ; 0x8c
  2357. int int_sunrise_min = 0;
  2358. 8001884: 2300 movs r3, #0
  2359. 8001886: f8c7 3088 str.w r3, [r7, #136] ; 0x88
  2360. int int_sunset_min = 0;
  2361. 800188a: 2300 movs r3, #0
  2362. 800188c: f8c7 3084 str.w r3, [r7, #132] ; 0x84
  2363. int sunrise_time[2] = {0};
  2364. 8001890: f107 0378 add.w r3, r7, #120 ; 0x78
  2365. 8001894: 2200 movs r2, #0
  2366. 8001896: 601a str r2, [r3, #0]
  2367. 8001898: 605a str r2, [r3, #4]
  2368. int sunset_time[2] = {0};
  2369. 800189a: f107 0370 add.w r3, r7, #112 ; 0x70
  2370. 800189e: 2200 movs r2, #0
  2371. 80018a0: 601a str r2, [r3, #0]
  2372. 80018a2: 605a str r2, [r3, #4]
  2373. int tomorrows_date[4] = {0};
  2374. 80018a4: f107 0360 add.w r3, r7, #96 ; 0x60
  2375. 80018a8: 2200 movs r2, #0
  2376. 80018aa: 601a str r2, [r3, #0]
  2377. 80018ac: 605a str r2, [r3, #4]
  2378. 80018ae: 609a str r2, [r3, #8]
  2379. 80018b0: 60da str r2, [r3, #12]
  2380. int DaysInMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  2381. 80018b2: 4b4d ldr r3, [pc, #308] ; (80019e8 <main+0x1b4>)
  2382. 80018b4: f107 0430 add.w r4, r7, #48 ; 0x30
  2383. 80018b8: 461d mov r5, r3
  2384. 80018ba: cd0f ldmia r5!, {r0, r1, r2, r3}
  2385. 80018bc: c40f stmia r4!, {r0, r1, r2, r3}
  2386. 80018be: cd0f ldmia r5!, {r0, r1, r2, r3}
  2387. 80018c0: c40f stmia r4!, {r0, r1, r2, r3}
  2388. 80018c2: e895 000f ldmia.w r5, {r0, r1, r2, r3}
  2389. 80018c6: e884 000f stmia.w r4, {r0, r1, r2, r3}
  2390. int DaysInMonthLeapYear[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  2391. 80018ca: 4b48 ldr r3, [pc, #288] ; (80019ec <main+0x1b8>)
  2392. 80018cc: 463c mov r4, r7
  2393. 80018ce: 461d mov r5, r3
  2394. 80018d0: cd0f ldmia r5!, {r0, r1, r2, r3}
  2395. 80018d2: c40f stmia r4!, {r0, r1, r2, r3}
  2396. 80018d4: cd0f ldmia r5!, {r0, r1, r2, r3}
  2397. 80018d6: c40f stmia r4!, {r0, r1, r2, r3}
  2398. 80018d8: e895 000f ldmia.w r5, {r0, r1, r2, r3}
  2399. 80018dc: e884 000f stmia.w r4, {r0, r1, r2, r3}
  2400. bool leap_year = false;
  2401. 80018e0: 2300 movs r3, #0
  2402. 80018e2: f887 3083 strb.w r3, [r7, #131] ; 0x83
  2403. /* USER CODE BEGIN WHILE */
  2404. while (1)
  2405. {
  2406. //Get Time and Date
  2407. if (HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN) == HAL_OK)
  2408. 80018e6: 2200 movs r2, #0
  2409. 80018e8: 4941 ldr r1, [pc, #260] ; (80019f0 <main+0x1bc>)
  2410. 80018ea: 4842 ldr r0, [pc, #264] ; (80019f4 <main+0x1c0>)
  2411. 80018ec: f001 fd2e bl 800334c <HAL_RTC_GetTime>
  2412. 80018f0: 4603 mov r3, r0
  2413. 80018f2: 2b00 cmp r3, #0
  2414. 80018f4: d10b bne.n 800190e <main+0xda>
  2415. {
  2416. hours = sTime.Hours;
  2417. 80018f6: 4b3e ldr r3, [pc, #248] ; (80019f0 <main+0x1bc>)
  2418. 80018f8: 781b ldrb r3, [r3, #0]
  2419. 80018fa: f8c7 309c str.w r3, [r7, #156] ; 0x9c
  2420. minutes = sTime.Minutes;
  2421. 80018fe: 4b3c ldr r3, [pc, #240] ; (80019f0 <main+0x1bc>)
  2422. 8001900: 785b ldrb r3, [r3, #1]
  2423. 8001902: f8c7 3098 str.w r3, [r7, #152] ; 0x98
  2424. seconds = sTime.Seconds;
  2425. 8001906: 4b3a ldr r3, [pc, #232] ; (80019f0 <main+0x1bc>)
  2426. 8001908: 789b ldrb r3, [r3, #2]
  2427. 800190a: f8c7 3094 str.w r3, [r7, #148] ; 0x94
  2428. }
  2429. if (HAL_RTC_GetDate(&hrtc, &sDate, RTC_FORMAT_BIN) == HAL_OK)
  2430. 800190e: 2200 movs r2, #0
  2431. 8001910: 4939 ldr r1, [pc, #228] ; (80019f8 <main+0x1c4>)
  2432. 8001912: 4838 ldr r0, [pc, #224] ; (80019f4 <main+0x1c0>)
  2433. 8001914: f001 fe1f bl 8003556 <HAL_RTC_GetDate>
  2434. 8001918: 4603 mov r3, r0
  2435. 800191a: 2b00 cmp r3, #0
  2436. 800191c: d111 bne.n 8001942 <main+0x10e>
  2437. {
  2438. weekDay = sDate.WeekDay;
  2439. 800191e: 4b36 ldr r3, [pc, #216] ; (80019f8 <main+0x1c4>)
  2440. 8001920: 781b ldrb r3, [r3, #0]
  2441. 8001922: f8c7 30ac str.w r3, [r7, #172] ; 0xac
  2442. month = sDate.Month;
  2443. 8001926: 4b34 ldr r3, [pc, #208] ; (80019f8 <main+0x1c4>)
  2444. 8001928: 785b ldrb r3, [r3, #1]
  2445. 800192a: f8c7 30a8 str.w r3, [r7, #168] ; 0xa8
  2446. date = sDate.Date;
  2447. 800192e: 4b32 ldr r3, [pc, #200] ; (80019f8 <main+0x1c4>)
  2448. 8001930: 789b ldrb r3, [r3, #2]
  2449. 8001932: f8c7 30a4 str.w r3, [r7, #164] ; 0xa4
  2450. year = 2000 + sDate.Year;
  2451. 8001936: 4b30 ldr r3, [pc, #192] ; (80019f8 <main+0x1c4>)
  2452. 8001938: 78db ldrb r3, [r3, #3]
  2453. 800193a: f503 63fa add.w r3, r3, #2000 ; 0x7d0
  2454. 800193e: f8c7 30a0 str.w r3, [r7, #160] ; 0xa0
  2455. }
  2456. // check for leap year
  2457. leap_year = leap_year_check(year);
  2458. 8001942: f8d7 00a0 ldr.w r0, [r7, #160] ; 0xa0
  2459. 8001946: f7ff faa3 bl 8000e90 <leap_year_check>
  2460. 800194a: 4603 mov r3, r0
  2461. 800194c: 2b00 cmp r3, #0
  2462. 800194e: bf14 ite ne
  2463. 8001950: 2301 movne r3, #1
  2464. 8001952: 2300 moveq r3, #0
  2465. 8001954: f887 3083 strb.w r3, [r7, #131] ; 0x83
  2466. if (leap_year)
  2467. 8001958: f897 3083 ldrb.w r3, [r7, #131] ; 0x83
  2468. 800195c: 2b00 cmp r3, #0
  2469. 800195e: d00f beq.n 8001980 <main+0x14c>
  2470. {
  2471. //Calculate tomorrow's date
  2472. calc_tomorrows_date(date, weekDay, month, year, DaysInMonthLeapYear, tomorrows_date);
  2473. 8001960: f107 0360 add.w r3, r7, #96 ; 0x60
  2474. 8001964: 9301 str r3, [sp, #4]
  2475. 8001966: 463b mov r3, r7
  2476. 8001968: 9300 str r3, [sp, #0]
  2477. 800196a: f8d7 30a0 ldr.w r3, [r7, #160] ; 0xa0
  2478. 800196e: f8d7 20a8 ldr.w r2, [r7, #168] ; 0xa8
  2479. 8001972: f8d7 10ac ldr.w r1, [r7, #172] ; 0xac
  2480. 8001976: f8d7 00a4 ldr.w r0, [r7, #164] ; 0xa4
  2481. 800197a: f7ff fec1 bl 8001700 <calc_tomorrows_date>
  2482. 800197e: e00f b.n 80019a0 <main+0x16c>
  2483. } else {
  2484. //Calculate tomorrow's date
  2485. calc_tomorrows_date(date, weekDay, month, year, DaysInMonth, tomorrows_date);
  2486. 8001980: f107 0360 add.w r3, r7, #96 ; 0x60
  2487. 8001984: 9301 str r3, [sp, #4]
  2488. 8001986: f107 0330 add.w r3, r7, #48 ; 0x30
  2489. 800198a: 9300 str r3, [sp, #0]
  2490. 800198c: f8d7 30a0 ldr.w r3, [r7, #160] ; 0xa0
  2491. 8001990: f8d7 20a8 ldr.w r2, [r7, #168] ; 0xa8
  2492. 8001994: f8d7 10ac ldr.w r1, [r7, #172] ; 0xac
  2493. 8001998: f8d7 00a4 ldr.w r0, [r7, #164] ; 0xa4
  2494. 800199c: f7ff feb0 bl 8001700 <calc_tomorrows_date>
  2495. }
  2496. //Calculate sunrise and sunset time for tomorrow
  2497. calc_sunrise_sunset(tomorrows_date[0], tomorrows_date[2], tomorrows_date[3], sunrise_time, sunset_time);
  2498. 80019a0: 6e38 ldr r0, [r7, #96] ; 0x60
  2499. 80019a2: 6eb9 ldr r1, [r7, #104] ; 0x68
  2500. 80019a4: 6efa ldr r2, [r7, #108] ; 0x6c
  2501. 80019a6: f107 0478 add.w r4, r7, #120 ; 0x78
  2502. 80019aa: f107 0370 add.w r3, r7, #112 ; 0x70
  2503. 80019ae: 9300 str r3, [sp, #0]
  2504. 80019b0: 4623 mov r3, r4
  2505. 80019b2: f7ff fb1d bl 8000ff0 <calc_sunrise_sunset>
  2506. set_Alarm(16, 22, 1);
  2507. 80019b6: 2201 movs r2, #1
  2508. 80019b8: 2116 movs r1, #22
  2509. 80019ba: 2010 movs r0, #16
  2510. 80019bc: f7ff fee4 bl 8001788 <set_Alarm>
  2511. HAL_Delay(5000);
  2512. 80019c0: f241 3088 movw r0, #5000 ; 0x1388
  2513. 80019c4: f000 fb18 bl 8001ff8 <HAL_Delay>
  2514. transmit_uart("Ich gehe schlafen!\r\n");
  2515. 80019c8: 480c ldr r0, [pc, #48] ; (80019fc <main+0x1c8>)
  2516. 80019ca: f7ff ff1d bl 8001808 <transmit_uart>
  2517. // Suspend Tick increment to prevent wake up by Systick interrupt
  2518. HAL_SuspendTick();
  2519. 80019ce: f000 fb35 bl 800203c <HAL_SuspendTick>
  2520. HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); //Interrupt for wake up
  2521. 80019d2: 2101 movs r1, #1
  2522. 80019d4: 2000 movs r0, #0
  2523. 80019d6: f000 fdff bl 80025d8 <HAL_PWR_EnterSLEEPMode>
  2524. HAL_ResumeTick();
  2525. 80019da: f000 fb3f bl 800205c <HAL_ResumeTick>
  2526. transmit_uart("Bin wieder wach!\r\n");
  2527. 80019de: 4808 ldr r0, [pc, #32] ; (8001a00 <main+0x1cc>)
  2528. 80019e0: f7ff ff12 bl 8001808 <transmit_uart>
  2529. if (HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN) == HAL_OK)
  2530. 80019e4: e77f b.n 80018e6 <main+0xb2>
  2531. 80019e6: bf00 nop
  2532. 80019e8: 08005fac .word 0x08005fac
  2533. 80019ec: 08005fdc .word 0x08005fdc
  2534. 80019f0: 200000a4 .word 0x200000a4
  2535. 80019f4: 200000e4 .word 0x200000e4
  2536. 80019f8: 200000e0 .word 0x200000e0
  2537. 80019fc: 08005f80 .word 0x08005f80
  2538. 8001a00: 08005f98 .word 0x08005f98
  2539. 08001a04 <SystemClock_Config>:
  2540. /**
  2541. * @brief System Clock Configuration
  2542. * @retval None
  2543. */
  2544. void SystemClock_Config(void)
  2545. {
  2546. 8001a04: b580 push {r7, lr}
  2547. 8001a06: b098 sub sp, #96 ; 0x60
  2548. 8001a08: af00 add r7, sp, #0
  2549. RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  2550. 8001a0a: f107 0330 add.w r3, r7, #48 ; 0x30
  2551. 8001a0e: 2230 movs r2, #48 ; 0x30
  2552. 8001a10: 2100 movs r1, #0
  2553. 8001a12: 4618 mov r0, r3
  2554. 8001a14: f002 fcdc bl 80043d0 <memset>
  2555. RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  2556. 8001a18: f107 031c add.w r3, r7, #28
  2557. 8001a1c: 2200 movs r2, #0
  2558. 8001a1e: 601a str r2, [r3, #0]
  2559. 8001a20: 605a str r2, [r3, #4]
  2560. 8001a22: 609a str r2, [r3, #8]
  2561. 8001a24: 60da str r2, [r3, #12]
  2562. 8001a26: 611a str r2, [r3, #16]
  2563. RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
  2564. 8001a28: f107 0308 add.w r3, r7, #8
  2565. 8001a2c: 2200 movs r2, #0
  2566. 8001a2e: 601a str r2, [r3, #0]
  2567. 8001a30: 605a str r2, [r3, #4]
  2568. 8001a32: 609a str r2, [r3, #8]
  2569. 8001a34: 60da str r2, [r3, #12]
  2570. 8001a36: 611a str r2, [r3, #16]
  2571. /** Configure the main internal regulator output voltage
  2572. */
  2573. __HAL_RCC_PWR_CLK_ENABLE();
  2574. 8001a38: 2300 movs r3, #0
  2575. 8001a3a: 607b str r3, [r7, #4]
  2576. 8001a3c: 4b31 ldr r3, [pc, #196] ; (8001b04 <SystemClock_Config+0x100>)
  2577. 8001a3e: 6c1b ldr r3, [r3, #64] ; 0x40
  2578. 8001a40: 4a30 ldr r2, [pc, #192] ; (8001b04 <SystemClock_Config+0x100>)
  2579. 8001a42: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
  2580. 8001a46: 6413 str r3, [r2, #64] ; 0x40
  2581. 8001a48: 4b2e ldr r3, [pc, #184] ; (8001b04 <SystemClock_Config+0x100>)
  2582. 8001a4a: 6c1b ldr r3, [r3, #64] ; 0x40
  2583. 8001a4c: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  2584. 8001a50: 607b str r3, [r7, #4]
  2585. 8001a52: 687b ldr r3, [r7, #4]
  2586. __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2);
  2587. 8001a54: 2300 movs r3, #0
  2588. 8001a56: 603b str r3, [r7, #0]
  2589. 8001a58: 4b2b ldr r3, [pc, #172] ; (8001b08 <SystemClock_Config+0x104>)
  2590. 8001a5a: 681b ldr r3, [r3, #0]
  2591. 8001a5c: f423 4340 bic.w r3, r3, #49152 ; 0xc000
  2592. 8001a60: 4a29 ldr r2, [pc, #164] ; (8001b08 <SystemClock_Config+0x104>)
  2593. 8001a62: f443 4300 orr.w r3, r3, #32768 ; 0x8000
  2594. 8001a66: 6013 str r3, [r2, #0]
  2595. 8001a68: 4b27 ldr r3, [pc, #156] ; (8001b08 <SystemClock_Config+0x104>)
  2596. 8001a6a: 681b ldr r3, [r3, #0]
  2597. 8001a6c: f403 4340 and.w r3, r3, #49152 ; 0xc000
  2598. 8001a70: 603b str r3, [r7, #0]
  2599. 8001a72: 683b ldr r3, [r7, #0]
  2600. /** Initializes the RCC Oscillators according to the specified parameters
  2601. * in the RCC_OscInitTypeDef structure.
  2602. */
  2603. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSI;
  2604. 8001a74: 230a movs r3, #10
  2605. 8001a76: 633b str r3, [r7, #48] ; 0x30
  2606. RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  2607. 8001a78: 2301 movs r3, #1
  2608. 8001a7a: 63fb str r3, [r7, #60] ; 0x3c
  2609. RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  2610. 8001a7c: 2310 movs r3, #16
  2611. 8001a7e: 643b str r3, [r7, #64] ; 0x40
  2612. RCC_OscInitStruct.LSIState = RCC_LSI_ON;
  2613. 8001a80: 2301 movs r3, #1
  2614. 8001a82: 647b str r3, [r7, #68] ; 0x44
  2615. RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  2616. 8001a84: 2302 movs r3, #2
  2617. 8001a86: 64bb str r3, [r7, #72] ; 0x48
  2618. RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
  2619. 8001a88: 2300 movs r3, #0
  2620. 8001a8a: 64fb str r3, [r7, #76] ; 0x4c
  2621. RCC_OscInitStruct.PLL.PLLM = 16;
  2622. 8001a8c: 2310 movs r3, #16
  2623. 8001a8e: 653b str r3, [r7, #80] ; 0x50
  2624. RCC_OscInitStruct.PLL.PLLN = 336;
  2625. 8001a90: f44f 73a8 mov.w r3, #336 ; 0x150
  2626. 8001a94: 657b str r3, [r7, #84] ; 0x54
  2627. RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4;
  2628. 8001a96: 2304 movs r3, #4
  2629. 8001a98: 65bb str r3, [r7, #88] ; 0x58
  2630. RCC_OscInitStruct.PLL.PLLQ = 7;
  2631. 8001a9a: 2307 movs r3, #7
  2632. 8001a9c: 65fb str r3, [r7, #92] ; 0x5c
  2633. if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  2634. 8001a9e: f107 0330 add.w r3, r7, #48 ; 0x30
  2635. 8001aa2: 4618 mov r0, r3
  2636. 8001aa4: f000 fdb4 bl 8002610 <HAL_RCC_OscConfig>
  2637. 8001aa8: 4603 mov r3, r0
  2638. 8001aaa: 2b00 cmp r3, #0
  2639. 8001aac: d001 beq.n 8001ab2 <SystemClock_Config+0xae>
  2640. {
  2641. Error_Handler();
  2642. 8001aae: f000 f91f bl 8001cf0 <Error_Handler>
  2643. }
  2644. /** Initializes the CPU, AHB and APB buses clocks
  2645. */
  2646. RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  2647. 8001ab2: 230f movs r3, #15
  2648. 8001ab4: 61fb str r3, [r7, #28]
  2649. |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  2650. RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  2651. 8001ab6: 2302 movs r3, #2
  2652. 8001ab8: 623b str r3, [r7, #32]
  2653. RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  2654. 8001aba: 2300 movs r3, #0
  2655. 8001abc: 627b str r3, [r7, #36] ; 0x24
  2656. RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  2657. 8001abe: f44f 5380 mov.w r3, #4096 ; 0x1000
  2658. 8001ac2: 62bb str r3, [r7, #40] ; 0x28
  2659. RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  2660. 8001ac4: 2300 movs r3, #0
  2661. 8001ac6: 62fb str r3, [r7, #44] ; 0x2c
  2662. if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  2663. 8001ac8: f107 031c add.w r3, r7, #28
  2664. 8001acc: 2102 movs r1, #2
  2665. 8001ace: 4618 mov r0, r3
  2666. 8001ad0: f001 f80e bl 8002af0 <HAL_RCC_ClockConfig>
  2667. 8001ad4: 4603 mov r3, r0
  2668. 8001ad6: 2b00 cmp r3, #0
  2669. 8001ad8: d001 beq.n 8001ade <SystemClock_Config+0xda>
  2670. {
  2671. Error_Handler();
  2672. 8001ada: f000 f909 bl 8001cf0 <Error_Handler>
  2673. }
  2674. PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
  2675. 8001ade: 2302 movs r3, #2
  2676. 8001ae0: 60bb str r3, [r7, #8]
  2677. PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;
  2678. 8001ae2: f44f 7300 mov.w r3, #512 ; 0x200
  2679. 8001ae6: 617b str r3, [r7, #20]
  2680. if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
  2681. 8001ae8: f107 0308 add.w r3, r7, #8
  2682. 8001aec: 4618 mov r0, r3
  2683. 8001aee: f001 f9f1 bl 8002ed4 <HAL_RCCEx_PeriphCLKConfig>
  2684. 8001af2: 4603 mov r3, r0
  2685. 8001af4: 2b00 cmp r3, #0
  2686. 8001af6: d001 beq.n 8001afc <SystemClock_Config+0xf8>
  2687. {
  2688. Error_Handler();
  2689. 8001af8: f000 f8fa bl 8001cf0 <Error_Handler>
  2690. }
  2691. }
  2692. 8001afc: bf00 nop
  2693. 8001afe: 3760 adds r7, #96 ; 0x60
  2694. 8001b00: 46bd mov sp, r7
  2695. 8001b02: bd80 pop {r7, pc}
  2696. 8001b04: 40023800 .word 0x40023800
  2697. 8001b08: 40007000 .word 0x40007000
  2698. 08001b0c <MX_RTC_Init>:
  2699. * @brief RTC Initialization Function
  2700. * @param None
  2701. * @retval None
  2702. */
  2703. static void MX_RTC_Init(void)
  2704. {
  2705. 8001b0c: b580 push {r7, lr}
  2706. 8001b0e: af00 add r7, sp, #0
  2707. /* USER CODE BEGIN RTC_Init 1 */
  2708. /* USER CODE END RTC_Init 1 */
  2709. /** Initialize RTC Only
  2710. */
  2711. hrtc.Instance = RTC;
  2712. 8001b10: 4b26 ldr r3, [pc, #152] ; (8001bac <MX_RTC_Init+0xa0>)
  2713. 8001b12: 4a27 ldr r2, [pc, #156] ; (8001bb0 <MX_RTC_Init+0xa4>)
  2714. 8001b14: 601a str r2, [r3, #0]
  2715. hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
  2716. 8001b16: 4b25 ldr r3, [pc, #148] ; (8001bac <MX_RTC_Init+0xa0>)
  2717. 8001b18: 2200 movs r2, #0
  2718. 8001b1a: 605a str r2, [r3, #4]
  2719. hrtc.Init.AsynchPrediv = 127;
  2720. 8001b1c: 4b23 ldr r3, [pc, #140] ; (8001bac <MX_RTC_Init+0xa0>)
  2721. 8001b1e: 227f movs r2, #127 ; 0x7f
  2722. 8001b20: 609a str r2, [r3, #8]
  2723. hrtc.Init.SynchPrediv = 255;
  2724. 8001b22: 4b22 ldr r3, [pc, #136] ; (8001bac <MX_RTC_Init+0xa0>)
  2725. 8001b24: 22ff movs r2, #255 ; 0xff
  2726. 8001b26: 60da str r2, [r3, #12]
  2727. hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  2728. 8001b28: 4b20 ldr r3, [pc, #128] ; (8001bac <MX_RTC_Init+0xa0>)
  2729. 8001b2a: 2200 movs r2, #0
  2730. 8001b2c: 611a str r2, [r3, #16]
  2731. hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  2732. 8001b2e: 4b1f ldr r3, [pc, #124] ; (8001bac <MX_RTC_Init+0xa0>)
  2733. 8001b30: 2200 movs r2, #0
  2734. 8001b32: 615a str r2, [r3, #20]
  2735. hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  2736. 8001b34: 4b1d ldr r3, [pc, #116] ; (8001bac <MX_RTC_Init+0xa0>)
  2737. 8001b36: 2200 movs r2, #0
  2738. 8001b38: 619a str r2, [r3, #24]
  2739. if (HAL_RTC_Init(&hrtc) != HAL_OK)
  2740. 8001b3a: 481c ldr r0, [pc, #112] ; (8001bac <MX_RTC_Init+0xa0>)
  2741. 8001b3c: f001 fab8 bl 80030b0 <HAL_RTC_Init>
  2742. 8001b40: 4603 mov r3, r0
  2743. 8001b42: 2b00 cmp r3, #0
  2744. 8001b44: d001 beq.n 8001b4a <MX_RTC_Init+0x3e>
  2745. {
  2746. Error_Handler();
  2747. 8001b46: f000 f8d3 bl 8001cf0 <Error_Handler>
  2748. /* USER CODE END Check_RTC_BKUP */
  2749. /** Initialize RTC and set the Time and Date
  2750. */
  2751. sTime.Hours = 16;
  2752. 8001b4a: 4b1a ldr r3, [pc, #104] ; (8001bb4 <MX_RTC_Init+0xa8>)
  2753. 8001b4c: 2210 movs r2, #16
  2754. 8001b4e: 701a strb r2, [r3, #0]
  2755. sTime.Minutes = 20;
  2756. 8001b50: 4b18 ldr r3, [pc, #96] ; (8001bb4 <MX_RTC_Init+0xa8>)
  2757. 8001b52: 2214 movs r2, #20
  2758. 8001b54: 705a strb r2, [r3, #1]
  2759. sTime.Seconds = 30;
  2760. 8001b56: 4b17 ldr r3, [pc, #92] ; (8001bb4 <MX_RTC_Init+0xa8>)
  2761. 8001b58: 221e movs r2, #30
  2762. 8001b5a: 709a strb r2, [r3, #2]
  2763. sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
  2764. 8001b5c: 4b15 ldr r3, [pc, #84] ; (8001bb4 <MX_RTC_Init+0xa8>)
  2765. 8001b5e: 2200 movs r2, #0
  2766. 8001b60: 60da str r2, [r3, #12]
  2767. sTime.StoreOperation = RTC_STOREOPERATION_RESET;
  2768. 8001b62: 4b14 ldr r3, [pc, #80] ; (8001bb4 <MX_RTC_Init+0xa8>)
  2769. 8001b64: 2200 movs r2, #0
  2770. 8001b66: 611a str r2, [r3, #16]
  2771. if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK)
  2772. 8001b68: 2200 movs r2, #0
  2773. 8001b6a: 4912 ldr r1, [pc, #72] ; (8001bb4 <MX_RTC_Init+0xa8>)
  2774. 8001b6c: 480f ldr r0, [pc, #60] ; (8001bac <MX_RTC_Init+0xa0>)
  2775. 8001b6e: f001 fb30 bl 80031d2 <HAL_RTC_SetTime>
  2776. 8001b72: 4603 mov r3, r0
  2777. 8001b74: 2b00 cmp r3, #0
  2778. 8001b76: d001 beq.n 8001b7c <MX_RTC_Init+0x70>
  2779. {
  2780. Error_Handler();
  2781. 8001b78: f000 f8ba bl 8001cf0 <Error_Handler>
  2782. }
  2783. sDate.WeekDay = RTC_WEEKDAY_MONDAY;
  2784. 8001b7c: 4b0e ldr r3, [pc, #56] ; (8001bb8 <MX_RTC_Init+0xac>)
  2785. 8001b7e: 2201 movs r2, #1
  2786. 8001b80: 701a strb r2, [r3, #0]
  2787. sDate.Month = RTC_MONTH_JANUARY;
  2788. 8001b82: 4b0d ldr r3, [pc, #52] ; (8001bb8 <MX_RTC_Init+0xac>)
  2789. 8001b84: 2201 movs r2, #1
  2790. 8001b86: 705a strb r2, [r3, #1]
  2791. sDate.Date = 11;
  2792. 8001b88: 4b0b ldr r3, [pc, #44] ; (8001bb8 <MX_RTC_Init+0xac>)
  2793. 8001b8a: 220b movs r2, #11
  2794. 8001b8c: 709a strb r2, [r3, #2]
  2795. sDate.Year = 21;
  2796. 8001b8e: 4b0a ldr r3, [pc, #40] ; (8001bb8 <MX_RTC_Init+0xac>)
  2797. 8001b90: 2215 movs r2, #21
  2798. 8001b92: 70da strb r2, [r3, #3]
  2799. if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK)
  2800. 8001b94: 2200 movs r2, #0
  2801. 8001b96: 4908 ldr r1, [pc, #32] ; (8001bb8 <MX_RTC_Init+0xac>)
  2802. 8001b98: 4804 ldr r0, [pc, #16] ; (8001bac <MX_RTC_Init+0xa0>)
  2803. 8001b9a: f001 fc35 bl 8003408 <HAL_RTC_SetDate>
  2804. 8001b9e: 4603 mov r3, r0
  2805. 8001ba0: 2b00 cmp r3, #0
  2806. 8001ba2: d001 beq.n 8001ba8 <MX_RTC_Init+0x9c>
  2807. {
  2808. Error_Handler();
  2809. 8001ba4: f000 f8a4 bl 8001cf0 <Error_Handler>
  2810. /* USER CODE BEGIN RTC_Init 2 */
  2811. /* USER CODE END RTC_Init 2 */
  2812. }
  2813. 8001ba8: bf00 nop
  2814. 8001baa: bd80 pop {r7, pc}
  2815. 8001bac: 200000e4 .word 0x200000e4
  2816. 8001bb0: 40002800 .word 0x40002800
  2817. 8001bb4: 200000a4 .word 0x200000a4
  2818. 8001bb8: 200000e0 .word 0x200000e0
  2819. 08001bbc <MX_USART2_UART_Init>:
  2820. * @brief USART2 Initialization Function
  2821. * @param None
  2822. * @retval None
  2823. */
  2824. static void MX_USART2_UART_Init(void)
  2825. {
  2826. 8001bbc: b580 push {r7, lr}
  2827. 8001bbe: af00 add r7, sp, #0
  2828. /* USER CODE END USART2_Init 0 */
  2829. /* USER CODE BEGIN USART2_Init 1 */
  2830. /* USER CODE END USART2_Init 1 */
  2831. huart2.Instance = USART2;
  2832. 8001bc0: 4b11 ldr r3, [pc, #68] ; (8001c08 <MX_USART2_UART_Init+0x4c>)
  2833. 8001bc2: 4a12 ldr r2, [pc, #72] ; (8001c0c <MX_USART2_UART_Init+0x50>)
  2834. 8001bc4: 601a str r2, [r3, #0]
  2835. huart2.Init.BaudRate = 115200;
  2836. 8001bc6: 4b10 ldr r3, [pc, #64] ; (8001c08 <MX_USART2_UART_Init+0x4c>)
  2837. 8001bc8: f44f 32e1 mov.w r2, #115200 ; 0x1c200
  2838. 8001bcc: 605a str r2, [r3, #4]
  2839. huart2.Init.WordLength = UART_WORDLENGTH_8B;
  2840. 8001bce: 4b0e ldr r3, [pc, #56] ; (8001c08 <MX_USART2_UART_Init+0x4c>)
  2841. 8001bd0: 2200 movs r2, #0
  2842. 8001bd2: 609a str r2, [r3, #8]
  2843. huart2.Init.StopBits = UART_STOPBITS_1;
  2844. 8001bd4: 4b0c ldr r3, [pc, #48] ; (8001c08 <MX_USART2_UART_Init+0x4c>)
  2845. 8001bd6: 2200 movs r2, #0
  2846. 8001bd8: 60da str r2, [r3, #12]
  2847. huart2.Init.Parity = UART_PARITY_NONE;
  2848. 8001bda: 4b0b ldr r3, [pc, #44] ; (8001c08 <MX_USART2_UART_Init+0x4c>)
  2849. 8001bdc: 2200 movs r2, #0
  2850. 8001bde: 611a str r2, [r3, #16]
  2851. huart2.Init.Mode = UART_MODE_TX_RX;
  2852. 8001be0: 4b09 ldr r3, [pc, #36] ; (8001c08 <MX_USART2_UART_Init+0x4c>)
  2853. 8001be2: 220c movs r2, #12
  2854. 8001be4: 615a str r2, [r3, #20]
  2855. huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  2856. 8001be6: 4b08 ldr r3, [pc, #32] ; (8001c08 <MX_USART2_UART_Init+0x4c>)
  2857. 8001be8: 2200 movs r2, #0
  2858. 8001bea: 619a str r2, [r3, #24]
  2859. huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  2860. 8001bec: 4b06 ldr r3, [pc, #24] ; (8001c08 <MX_USART2_UART_Init+0x4c>)
  2861. 8001bee: 2200 movs r2, #0
  2862. 8001bf0: 61da str r2, [r3, #28]
  2863. if (HAL_UART_Init(&huart2) != HAL_OK)
  2864. 8001bf2: 4805 ldr r0, [pc, #20] ; (8001c08 <MX_USART2_UART_Init+0x4c>)
  2865. 8001bf4: f001 ff16 bl 8003a24 <HAL_UART_Init>
  2866. 8001bf8: 4603 mov r3, r0
  2867. 8001bfa: 2b00 cmp r3, #0
  2868. 8001bfc: d001 beq.n 8001c02 <MX_USART2_UART_Init+0x46>
  2869. {
  2870. Error_Handler();
  2871. 8001bfe: f000 f877 bl 8001cf0 <Error_Handler>
  2872. }
  2873. /* USER CODE BEGIN USART2_Init 2 */
  2874. /* USER CODE END USART2_Init 2 */
  2875. }
  2876. 8001c02: bf00 nop
  2877. 8001c04: bd80 pop {r7, pc}
  2878. 8001c06: bf00 nop
  2879. 8001c08: 20000104 .word 0x20000104
  2880. 8001c0c: 40004400 .word 0x40004400
  2881. 08001c10 <MX_GPIO_Init>:
  2882. * @brief GPIO Initialization Function
  2883. * @param None
  2884. * @retval None
  2885. */
  2886. static void MX_GPIO_Init(void)
  2887. {
  2888. 8001c10: b580 push {r7, lr}
  2889. 8001c12: b08a sub sp, #40 ; 0x28
  2890. 8001c14: af00 add r7, sp, #0
  2891. GPIO_InitTypeDef GPIO_InitStruct = {0};
  2892. 8001c16: f107 0314 add.w r3, r7, #20
  2893. 8001c1a: 2200 movs r2, #0
  2894. 8001c1c: 601a str r2, [r3, #0]
  2895. 8001c1e: 605a str r2, [r3, #4]
  2896. 8001c20: 609a str r2, [r3, #8]
  2897. 8001c22: 60da str r2, [r3, #12]
  2898. 8001c24: 611a str r2, [r3, #16]
  2899. /* GPIO Ports Clock Enable */
  2900. __HAL_RCC_GPIOC_CLK_ENABLE();
  2901. 8001c26: 2300 movs r3, #0
  2902. 8001c28: 613b str r3, [r7, #16]
  2903. 8001c2a: 4b2d ldr r3, [pc, #180] ; (8001ce0 <MX_GPIO_Init+0xd0>)
  2904. 8001c2c: 6b1b ldr r3, [r3, #48] ; 0x30
  2905. 8001c2e: 4a2c ldr r2, [pc, #176] ; (8001ce0 <MX_GPIO_Init+0xd0>)
  2906. 8001c30: f043 0304 orr.w r3, r3, #4
  2907. 8001c34: 6313 str r3, [r2, #48] ; 0x30
  2908. 8001c36: 4b2a ldr r3, [pc, #168] ; (8001ce0 <MX_GPIO_Init+0xd0>)
  2909. 8001c38: 6b1b ldr r3, [r3, #48] ; 0x30
  2910. 8001c3a: f003 0304 and.w r3, r3, #4
  2911. 8001c3e: 613b str r3, [r7, #16]
  2912. 8001c40: 693b ldr r3, [r7, #16]
  2913. __HAL_RCC_GPIOH_CLK_ENABLE();
  2914. 8001c42: 2300 movs r3, #0
  2915. 8001c44: 60fb str r3, [r7, #12]
  2916. 8001c46: 4b26 ldr r3, [pc, #152] ; (8001ce0 <MX_GPIO_Init+0xd0>)
  2917. 8001c48: 6b1b ldr r3, [r3, #48] ; 0x30
  2918. 8001c4a: 4a25 ldr r2, [pc, #148] ; (8001ce0 <MX_GPIO_Init+0xd0>)
  2919. 8001c4c: f043 0380 orr.w r3, r3, #128 ; 0x80
  2920. 8001c50: 6313 str r3, [r2, #48] ; 0x30
  2921. 8001c52: 4b23 ldr r3, [pc, #140] ; (8001ce0 <MX_GPIO_Init+0xd0>)
  2922. 8001c54: 6b1b ldr r3, [r3, #48] ; 0x30
  2923. 8001c56: f003 0380 and.w r3, r3, #128 ; 0x80
  2924. 8001c5a: 60fb str r3, [r7, #12]
  2925. 8001c5c: 68fb ldr r3, [r7, #12]
  2926. __HAL_RCC_GPIOA_CLK_ENABLE();
  2927. 8001c5e: 2300 movs r3, #0
  2928. 8001c60: 60bb str r3, [r7, #8]
  2929. 8001c62: 4b1f ldr r3, [pc, #124] ; (8001ce0 <MX_GPIO_Init+0xd0>)
  2930. 8001c64: 6b1b ldr r3, [r3, #48] ; 0x30
  2931. 8001c66: 4a1e ldr r2, [pc, #120] ; (8001ce0 <MX_GPIO_Init+0xd0>)
  2932. 8001c68: f043 0301 orr.w r3, r3, #1
  2933. 8001c6c: 6313 str r3, [r2, #48] ; 0x30
  2934. 8001c6e: 4b1c ldr r3, [pc, #112] ; (8001ce0 <MX_GPIO_Init+0xd0>)
  2935. 8001c70: 6b1b ldr r3, [r3, #48] ; 0x30
  2936. 8001c72: f003 0301 and.w r3, r3, #1
  2937. 8001c76: 60bb str r3, [r7, #8]
  2938. 8001c78: 68bb ldr r3, [r7, #8]
  2939. __HAL_RCC_GPIOB_CLK_ENABLE();
  2940. 8001c7a: 2300 movs r3, #0
  2941. 8001c7c: 607b str r3, [r7, #4]
  2942. 8001c7e: 4b18 ldr r3, [pc, #96] ; (8001ce0 <MX_GPIO_Init+0xd0>)
  2943. 8001c80: 6b1b ldr r3, [r3, #48] ; 0x30
  2944. 8001c82: 4a17 ldr r2, [pc, #92] ; (8001ce0 <MX_GPIO_Init+0xd0>)
  2945. 8001c84: f043 0302 orr.w r3, r3, #2
  2946. 8001c88: 6313 str r3, [r2, #48] ; 0x30
  2947. 8001c8a: 4b15 ldr r3, [pc, #84] ; (8001ce0 <MX_GPIO_Init+0xd0>)
  2948. 8001c8c: 6b1b ldr r3, [r3, #48] ; 0x30
  2949. 8001c8e: f003 0302 and.w r3, r3, #2
  2950. 8001c92: 607b str r3, [r7, #4]
  2951. 8001c94: 687b ldr r3, [r7, #4]
  2952. /*Configure GPIO pin Output Level */
  2953. HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
  2954. 8001c96: 2200 movs r2, #0
  2955. 8001c98: 2120 movs r1, #32
  2956. 8001c9a: 4812 ldr r0, [pc, #72] ; (8001ce4 <MX_GPIO_Init+0xd4>)
  2957. 8001c9c: f000 fc82 bl 80025a4 <HAL_GPIO_WritePin>
  2958. /*Configure GPIO pin : B1_Pin */
  2959. GPIO_InitStruct.Pin = B1_Pin;
  2960. 8001ca0: f44f 5300 mov.w r3, #8192 ; 0x2000
  2961. 8001ca4: 617b str r3, [r7, #20]
  2962. GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  2963. 8001ca6: 4b10 ldr r3, [pc, #64] ; (8001ce8 <MX_GPIO_Init+0xd8>)
  2964. 8001ca8: 61bb str r3, [r7, #24]
  2965. GPIO_InitStruct.Pull = GPIO_NOPULL;
  2966. 8001caa: 2300 movs r3, #0
  2967. 8001cac: 61fb str r3, [r7, #28]
  2968. HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct);
  2969. 8001cae: f107 0314 add.w r3, r7, #20
  2970. 8001cb2: 4619 mov r1, r3
  2971. 8001cb4: 480d ldr r0, [pc, #52] ; (8001cec <MX_GPIO_Init+0xdc>)
  2972. 8001cb6: f000 faf3 bl 80022a0 <HAL_GPIO_Init>
  2973. /*Configure GPIO pin : LD2_Pin */
  2974. GPIO_InitStruct.Pin = LD2_Pin;
  2975. 8001cba: 2320 movs r3, #32
  2976. 8001cbc: 617b str r3, [r7, #20]
  2977. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  2978. 8001cbe: 2301 movs r3, #1
  2979. 8001cc0: 61bb str r3, [r7, #24]
  2980. GPIO_InitStruct.Pull = GPIO_NOPULL;
  2981. 8001cc2: 2300 movs r3, #0
  2982. 8001cc4: 61fb str r3, [r7, #28]
  2983. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  2984. 8001cc6: 2300 movs r3, #0
  2985. 8001cc8: 623b str r3, [r7, #32]
  2986. HAL_GPIO_Init(LD2_GPIO_Port, &GPIO_InitStruct);
  2987. 8001cca: f107 0314 add.w r3, r7, #20
  2988. 8001cce: 4619 mov r1, r3
  2989. 8001cd0: 4804 ldr r0, [pc, #16] ; (8001ce4 <MX_GPIO_Init+0xd4>)
  2990. 8001cd2: f000 fae5 bl 80022a0 <HAL_GPIO_Init>
  2991. }
  2992. 8001cd6: bf00 nop
  2993. 8001cd8: 3728 adds r7, #40 ; 0x28
  2994. 8001cda: 46bd mov sp, r7
  2995. 8001cdc: bd80 pop {r7, pc}
  2996. 8001cde: bf00 nop
  2997. 8001ce0: 40023800 .word 0x40023800
  2998. 8001ce4: 40020000 .word 0x40020000
  2999. 8001ce8: 10210000 .word 0x10210000
  3000. 8001cec: 40020800 .word 0x40020800
  3001. 08001cf0 <Error_Handler>:
  3002. /**
  3003. * @brief This function is executed in case of error occurrence.
  3004. * @retval None
  3005. */
  3006. void Error_Handler(void)
  3007. {
  3008. 8001cf0: b480 push {r7}
  3009. 8001cf2: af00 add r7, sp, #0
  3010. \details Disables IRQ interrupts by setting the I-bit in the CPSR.
  3011. Can only be executed in Privileged modes.
  3012. */
  3013. __STATIC_FORCEINLINE void __disable_irq(void)
  3014. {
  3015. __ASM volatile ("cpsid i" : : : "memory");
  3016. 8001cf4: b672 cpsid i
  3017. /* USER CODE BEGIN Error_Handler_Debug */
  3018. /* User can add his own implementation to report the HAL error return state */
  3019. __disable_irq();
  3020. while (1)
  3021. 8001cf6: e7fe b.n 8001cf6 <Error_Handler+0x6>
  3022. 08001cf8 <HAL_RTC_AlarmAEventCallback>:
  3023. * @brief Alarm callback
  3024. * @param hrtc: RTC handle
  3025. * @retval None
  3026. */
  3027. void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc)
  3028. {
  3029. 8001cf8: b580 push {r7, lr}
  3030. 8001cfa: b082 sub sp, #8
  3031. 8001cfc: af00 add r7, sp, #0
  3032. 8001cfe: 6078 str r0, [r7, #4]
  3033. /* Alarm generation */
  3034. transmit_uart("Alarm!!!!\r\n");
  3035. 8001d00: 4803 ldr r0, [pc, #12] ; (8001d10 <HAL_RTC_AlarmAEventCallback+0x18>)
  3036. 8001d02: f7ff fd81 bl 8001808 <transmit_uart>
  3037. }
  3038. 8001d06: bf00 nop
  3039. 8001d08: 3708 adds r7, #8
  3040. 8001d0a: 46bd mov sp, r7
  3041. 8001d0c: bd80 pop {r7, pc}
  3042. 8001d0e: bf00 nop
  3043. 8001d10: 0800600c .word 0x0800600c
  3044. 08001d14 <HAL_MspInit>:
  3045. /* USER CODE END 0 */
  3046. /**
  3047. * Initializes the Global MSP.
  3048. */
  3049. void HAL_MspInit(void)
  3050. {
  3051. 8001d14: b580 push {r7, lr}
  3052. 8001d16: b082 sub sp, #8
  3053. 8001d18: af00 add r7, sp, #0
  3054. /* USER CODE BEGIN MspInit 0 */
  3055. /* USER CODE END MspInit 0 */
  3056. __HAL_RCC_SYSCFG_CLK_ENABLE();
  3057. 8001d1a: 2300 movs r3, #0
  3058. 8001d1c: 607b str r3, [r7, #4]
  3059. 8001d1e: 4b10 ldr r3, [pc, #64] ; (8001d60 <HAL_MspInit+0x4c>)
  3060. 8001d20: 6c5b ldr r3, [r3, #68] ; 0x44
  3061. 8001d22: 4a0f ldr r2, [pc, #60] ; (8001d60 <HAL_MspInit+0x4c>)
  3062. 8001d24: f443 4380 orr.w r3, r3, #16384 ; 0x4000
  3063. 8001d28: 6453 str r3, [r2, #68] ; 0x44
  3064. 8001d2a: 4b0d ldr r3, [pc, #52] ; (8001d60 <HAL_MspInit+0x4c>)
  3065. 8001d2c: 6c5b ldr r3, [r3, #68] ; 0x44
  3066. 8001d2e: f403 4380 and.w r3, r3, #16384 ; 0x4000
  3067. 8001d32: 607b str r3, [r7, #4]
  3068. 8001d34: 687b ldr r3, [r7, #4]
  3069. __HAL_RCC_PWR_CLK_ENABLE();
  3070. 8001d36: 2300 movs r3, #0
  3071. 8001d38: 603b str r3, [r7, #0]
  3072. 8001d3a: 4b09 ldr r3, [pc, #36] ; (8001d60 <HAL_MspInit+0x4c>)
  3073. 8001d3c: 6c1b ldr r3, [r3, #64] ; 0x40
  3074. 8001d3e: 4a08 ldr r2, [pc, #32] ; (8001d60 <HAL_MspInit+0x4c>)
  3075. 8001d40: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
  3076. 8001d44: 6413 str r3, [r2, #64] ; 0x40
  3077. 8001d46: 4b06 ldr r3, [pc, #24] ; (8001d60 <HAL_MspInit+0x4c>)
  3078. 8001d48: 6c1b ldr r3, [r3, #64] ; 0x40
  3079. 8001d4a: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  3080. 8001d4e: 603b str r3, [r7, #0]
  3081. 8001d50: 683b ldr r3, [r7, #0]
  3082. HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0);
  3083. 8001d52: 2007 movs r0, #7
  3084. 8001d54: f000 fa62 bl 800221c <HAL_NVIC_SetPriorityGrouping>
  3085. /* System interrupt init*/
  3086. /* USER CODE BEGIN MspInit 1 */
  3087. /* USER CODE END MspInit 1 */
  3088. }
  3089. 8001d58: bf00 nop
  3090. 8001d5a: 3708 adds r7, #8
  3091. 8001d5c: 46bd mov sp, r7
  3092. 8001d5e: bd80 pop {r7, pc}
  3093. 8001d60: 40023800 .word 0x40023800
  3094. 08001d64 <HAL_RTC_MspInit>:
  3095. * This function configures the hardware resources used in this example
  3096. * @param hrtc: RTC handle pointer
  3097. * @retval None
  3098. */
  3099. void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
  3100. {
  3101. 8001d64: b580 push {r7, lr}
  3102. 8001d66: b082 sub sp, #8
  3103. 8001d68: af00 add r7, sp, #0
  3104. 8001d6a: 6078 str r0, [r7, #4]
  3105. if(hrtc->Instance==RTC)
  3106. 8001d6c: 687b ldr r3, [r7, #4]
  3107. 8001d6e: 681b ldr r3, [r3, #0]
  3108. 8001d70: 4a08 ldr r2, [pc, #32] ; (8001d94 <HAL_RTC_MspInit+0x30>)
  3109. 8001d72: 4293 cmp r3, r2
  3110. 8001d74: d10a bne.n 8001d8c <HAL_RTC_MspInit+0x28>
  3111. {
  3112. /* USER CODE BEGIN RTC_MspInit 0 */
  3113. /* USER CODE END RTC_MspInit 0 */
  3114. /* Peripheral clock enable */
  3115. __HAL_RCC_RTC_ENABLE();
  3116. 8001d76: 4b08 ldr r3, [pc, #32] ; (8001d98 <HAL_RTC_MspInit+0x34>)
  3117. 8001d78: 2201 movs r2, #1
  3118. 8001d7a: 601a str r2, [r3, #0]
  3119. /* RTC interrupt Init */
  3120. HAL_NVIC_SetPriority(RTC_Alarm_IRQn, 0, 0);
  3121. 8001d7c: 2200 movs r2, #0
  3122. 8001d7e: 2100 movs r1, #0
  3123. 8001d80: 2029 movs r0, #41 ; 0x29
  3124. 8001d82: f000 fa56 bl 8002232 <HAL_NVIC_SetPriority>
  3125. HAL_NVIC_EnableIRQ(RTC_Alarm_IRQn);
  3126. 8001d86: 2029 movs r0, #41 ; 0x29
  3127. 8001d88: f000 fa6f bl 800226a <HAL_NVIC_EnableIRQ>
  3128. /* USER CODE BEGIN RTC_MspInit 1 */
  3129. /* USER CODE END RTC_MspInit 1 */
  3130. }
  3131. }
  3132. 8001d8c: bf00 nop
  3133. 8001d8e: 3708 adds r7, #8
  3134. 8001d90: 46bd mov sp, r7
  3135. 8001d92: bd80 pop {r7, pc}
  3136. 8001d94: 40002800 .word 0x40002800
  3137. 8001d98: 42470e3c .word 0x42470e3c
  3138. 08001d9c <HAL_UART_MspInit>:
  3139. * This function configures the hardware resources used in this example
  3140. * @param huart: UART handle pointer
  3141. * @retval None
  3142. */
  3143. void HAL_UART_MspInit(UART_HandleTypeDef* huart)
  3144. {
  3145. 8001d9c: b580 push {r7, lr}
  3146. 8001d9e: b08a sub sp, #40 ; 0x28
  3147. 8001da0: af00 add r7, sp, #0
  3148. 8001da2: 6078 str r0, [r7, #4]
  3149. GPIO_InitTypeDef GPIO_InitStruct = {0};
  3150. 8001da4: f107 0314 add.w r3, r7, #20
  3151. 8001da8: 2200 movs r2, #0
  3152. 8001daa: 601a str r2, [r3, #0]
  3153. 8001dac: 605a str r2, [r3, #4]
  3154. 8001dae: 609a str r2, [r3, #8]
  3155. 8001db0: 60da str r2, [r3, #12]
  3156. 8001db2: 611a str r2, [r3, #16]
  3157. if(huart->Instance==USART2)
  3158. 8001db4: 687b ldr r3, [r7, #4]
  3159. 8001db6: 681b ldr r3, [r3, #0]
  3160. 8001db8: 4a19 ldr r2, [pc, #100] ; (8001e20 <HAL_UART_MspInit+0x84>)
  3161. 8001dba: 4293 cmp r3, r2
  3162. 8001dbc: d12b bne.n 8001e16 <HAL_UART_MspInit+0x7a>
  3163. {
  3164. /* USER CODE BEGIN USART2_MspInit 0 */
  3165. /* USER CODE END USART2_MspInit 0 */
  3166. /* Peripheral clock enable */
  3167. __HAL_RCC_USART2_CLK_ENABLE();
  3168. 8001dbe: 2300 movs r3, #0
  3169. 8001dc0: 613b str r3, [r7, #16]
  3170. 8001dc2: 4b18 ldr r3, [pc, #96] ; (8001e24 <HAL_UART_MspInit+0x88>)
  3171. 8001dc4: 6c1b ldr r3, [r3, #64] ; 0x40
  3172. 8001dc6: 4a17 ldr r2, [pc, #92] ; (8001e24 <HAL_UART_MspInit+0x88>)
  3173. 8001dc8: f443 3300 orr.w r3, r3, #131072 ; 0x20000
  3174. 8001dcc: 6413 str r3, [r2, #64] ; 0x40
  3175. 8001dce: 4b15 ldr r3, [pc, #84] ; (8001e24 <HAL_UART_MspInit+0x88>)
  3176. 8001dd0: 6c1b ldr r3, [r3, #64] ; 0x40
  3177. 8001dd2: f403 3300 and.w r3, r3, #131072 ; 0x20000
  3178. 8001dd6: 613b str r3, [r7, #16]
  3179. 8001dd8: 693b ldr r3, [r7, #16]
  3180. __HAL_RCC_GPIOA_CLK_ENABLE();
  3181. 8001dda: 2300 movs r3, #0
  3182. 8001ddc: 60fb str r3, [r7, #12]
  3183. 8001dde: 4b11 ldr r3, [pc, #68] ; (8001e24 <HAL_UART_MspInit+0x88>)
  3184. 8001de0: 6b1b ldr r3, [r3, #48] ; 0x30
  3185. 8001de2: 4a10 ldr r2, [pc, #64] ; (8001e24 <HAL_UART_MspInit+0x88>)
  3186. 8001de4: f043 0301 orr.w r3, r3, #1
  3187. 8001de8: 6313 str r3, [r2, #48] ; 0x30
  3188. 8001dea: 4b0e ldr r3, [pc, #56] ; (8001e24 <HAL_UART_MspInit+0x88>)
  3189. 8001dec: 6b1b ldr r3, [r3, #48] ; 0x30
  3190. 8001dee: f003 0301 and.w r3, r3, #1
  3191. 8001df2: 60fb str r3, [r7, #12]
  3192. 8001df4: 68fb ldr r3, [r7, #12]
  3193. /**USART2 GPIO Configuration
  3194. PA2 ------> USART2_TX
  3195. PA3 ------> USART2_RX
  3196. */
  3197. GPIO_InitStruct.Pin = USART_TX_Pin|USART_RX_Pin;
  3198. 8001df6: 230c movs r3, #12
  3199. 8001df8: 617b str r3, [r7, #20]
  3200. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  3201. 8001dfa: 2302 movs r3, #2
  3202. 8001dfc: 61bb str r3, [r7, #24]
  3203. GPIO_InitStruct.Pull = GPIO_NOPULL;
  3204. 8001dfe: 2300 movs r3, #0
  3205. 8001e00: 61fb str r3, [r7, #28]
  3206. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  3207. 8001e02: 2300 movs r3, #0
  3208. 8001e04: 623b str r3, [r7, #32]
  3209. GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
  3210. 8001e06: 2307 movs r3, #7
  3211. 8001e08: 627b str r3, [r7, #36] ; 0x24
  3212. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  3213. 8001e0a: f107 0314 add.w r3, r7, #20
  3214. 8001e0e: 4619 mov r1, r3
  3215. 8001e10: 4805 ldr r0, [pc, #20] ; (8001e28 <HAL_UART_MspInit+0x8c>)
  3216. 8001e12: f000 fa45 bl 80022a0 <HAL_GPIO_Init>
  3217. /* USER CODE BEGIN USART2_MspInit 1 */
  3218. /* USER CODE END USART2_MspInit 1 */
  3219. }
  3220. }
  3221. 8001e16: bf00 nop
  3222. 8001e18: 3728 adds r7, #40 ; 0x28
  3223. 8001e1a: 46bd mov sp, r7
  3224. 8001e1c: bd80 pop {r7, pc}
  3225. 8001e1e: bf00 nop
  3226. 8001e20: 40004400 .word 0x40004400
  3227. 8001e24: 40023800 .word 0x40023800
  3228. 8001e28: 40020000 .word 0x40020000
  3229. 08001e2c <NMI_Handler>:
  3230. /******************************************************************************/
  3231. /**
  3232. * @brief This function handles Non maskable interrupt.
  3233. */
  3234. void NMI_Handler(void)
  3235. {
  3236. 8001e2c: b480 push {r7}
  3237. 8001e2e: af00 add r7, sp, #0
  3238. /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
  3239. /* USER CODE END NonMaskableInt_IRQn 0 */
  3240. /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
  3241. while (1)
  3242. 8001e30: e7fe b.n 8001e30 <NMI_Handler+0x4>
  3243. 08001e32 <HardFault_Handler>:
  3244. /**
  3245. * @brief This function handles Hard fault interrupt.
  3246. */
  3247. void HardFault_Handler(void)
  3248. {
  3249. 8001e32: b480 push {r7}
  3250. 8001e34: af00 add r7, sp, #0
  3251. /* USER CODE BEGIN HardFault_IRQn 0 */
  3252. /* USER CODE END HardFault_IRQn 0 */
  3253. while (1)
  3254. 8001e36: e7fe b.n 8001e36 <HardFault_Handler+0x4>
  3255. 08001e38 <MemManage_Handler>:
  3256. /**
  3257. * @brief This function handles Memory management fault.
  3258. */
  3259. void MemManage_Handler(void)
  3260. {
  3261. 8001e38: b480 push {r7}
  3262. 8001e3a: af00 add r7, sp, #0
  3263. /* USER CODE BEGIN MemoryManagement_IRQn 0 */
  3264. /* USER CODE END MemoryManagement_IRQn 0 */
  3265. while (1)
  3266. 8001e3c: e7fe b.n 8001e3c <MemManage_Handler+0x4>
  3267. 08001e3e <BusFault_Handler>:
  3268. /**
  3269. * @brief This function handles Pre-fetch fault, memory access fault.
  3270. */
  3271. void BusFault_Handler(void)
  3272. {
  3273. 8001e3e: b480 push {r7}
  3274. 8001e40: af00 add r7, sp, #0
  3275. /* USER CODE BEGIN BusFault_IRQn 0 */
  3276. /* USER CODE END BusFault_IRQn 0 */
  3277. while (1)
  3278. 8001e42: e7fe b.n 8001e42 <BusFault_Handler+0x4>
  3279. 08001e44 <UsageFault_Handler>:
  3280. /**
  3281. * @brief This function handles Undefined instruction or illegal state.
  3282. */
  3283. void UsageFault_Handler(void)
  3284. {
  3285. 8001e44: b480 push {r7}
  3286. 8001e46: af00 add r7, sp, #0
  3287. /* USER CODE BEGIN UsageFault_IRQn 0 */
  3288. /* USER CODE END UsageFault_IRQn 0 */
  3289. while (1)
  3290. 8001e48: e7fe b.n 8001e48 <UsageFault_Handler+0x4>
  3291. 08001e4a <SVC_Handler>:
  3292. /**
  3293. * @brief This function handles System service call via SWI instruction.
  3294. */
  3295. void SVC_Handler(void)
  3296. {
  3297. 8001e4a: b480 push {r7}
  3298. 8001e4c: af00 add r7, sp, #0
  3299. /* USER CODE END SVCall_IRQn 0 */
  3300. /* USER CODE BEGIN SVCall_IRQn 1 */
  3301. /* USER CODE END SVCall_IRQn 1 */
  3302. }
  3303. 8001e4e: bf00 nop
  3304. 8001e50: 46bd mov sp, r7
  3305. 8001e52: f85d 7b04 ldr.w r7, [sp], #4
  3306. 8001e56: 4770 bx lr
  3307. 08001e58 <DebugMon_Handler>:
  3308. /**
  3309. * @brief This function handles Debug monitor.
  3310. */
  3311. void DebugMon_Handler(void)
  3312. {
  3313. 8001e58: b480 push {r7}
  3314. 8001e5a: af00 add r7, sp, #0
  3315. /* USER CODE END DebugMonitor_IRQn 0 */
  3316. /* USER CODE BEGIN DebugMonitor_IRQn 1 */
  3317. /* USER CODE END DebugMonitor_IRQn 1 */
  3318. }
  3319. 8001e5c: bf00 nop
  3320. 8001e5e: 46bd mov sp, r7
  3321. 8001e60: f85d 7b04 ldr.w r7, [sp], #4
  3322. 8001e64: 4770 bx lr
  3323. 08001e66 <PendSV_Handler>:
  3324. /**
  3325. * @brief This function handles Pendable request for system service.
  3326. */
  3327. void PendSV_Handler(void)
  3328. {
  3329. 8001e66: b480 push {r7}
  3330. 8001e68: af00 add r7, sp, #0
  3331. /* USER CODE END PendSV_IRQn 0 */
  3332. /* USER CODE BEGIN PendSV_IRQn 1 */
  3333. /* USER CODE END PendSV_IRQn 1 */
  3334. }
  3335. 8001e6a: bf00 nop
  3336. 8001e6c: 46bd mov sp, r7
  3337. 8001e6e: f85d 7b04 ldr.w r7, [sp], #4
  3338. 8001e72: 4770 bx lr
  3339. 08001e74 <SysTick_Handler>:
  3340. /**
  3341. * @brief This function handles System tick timer.
  3342. */
  3343. void SysTick_Handler(void)
  3344. {
  3345. 8001e74: b580 push {r7, lr}
  3346. 8001e76: af00 add r7, sp, #0
  3347. /* USER CODE BEGIN SysTick_IRQn 0 */
  3348. /* USER CODE END SysTick_IRQn 0 */
  3349. HAL_IncTick();
  3350. 8001e78: f000 f89e bl 8001fb8 <HAL_IncTick>
  3351. /* USER CODE BEGIN SysTick_IRQn 1 */
  3352. /* USER CODE END SysTick_IRQn 1 */
  3353. }
  3354. 8001e7c: bf00 nop
  3355. 8001e7e: bd80 pop {r7, pc}
  3356. 08001e80 <RTC_Alarm_IRQHandler>:
  3357. /**
  3358. * @brief This function handles RTC alarms A and B interrupt through EXTI line 17.
  3359. */
  3360. void RTC_Alarm_IRQHandler(void)
  3361. {
  3362. 8001e80: b580 push {r7, lr}
  3363. 8001e82: af00 add r7, sp, #0
  3364. /* USER CODE BEGIN RTC_Alarm_IRQn 0 */
  3365. /* USER CODE END RTC_Alarm_IRQn 0 */
  3366. HAL_RTC_AlarmIRQHandler(&hrtc);
  3367. 8001e84: 4802 ldr r0, [pc, #8] ; (8001e90 <RTC_Alarm_IRQHandler+0x10>)
  3368. 8001e86: f001 fced bl 8003864 <HAL_RTC_AlarmIRQHandler>
  3369. /* USER CODE BEGIN RTC_Alarm_IRQn 1 */
  3370. /* USER CODE END RTC_Alarm_IRQn 1 */
  3371. }
  3372. 8001e8a: bf00 nop
  3373. 8001e8c: bd80 pop {r7, pc}
  3374. 8001e8e: bf00 nop
  3375. 8001e90: 200000e4 .word 0x200000e4
  3376. 08001e94 <SystemInit>:
  3377. * configuration.
  3378. * @param None
  3379. * @retval None
  3380. */
  3381. void SystemInit(void)
  3382. {
  3383. 8001e94: b480 push {r7}
  3384. 8001e96: af00 add r7, sp, #0
  3385. /* FPU settings ------------------------------------------------------------*/
  3386. #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
  3387. SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
  3388. 8001e98: 4b08 ldr r3, [pc, #32] ; (8001ebc <SystemInit+0x28>)
  3389. 8001e9a: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88
  3390. 8001e9e: 4a07 ldr r2, [pc, #28] ; (8001ebc <SystemInit+0x28>)
  3391. 8001ea0: f443 0370 orr.w r3, r3, #15728640 ; 0xf00000
  3392. 8001ea4: f8c2 3088 str.w r3, [r2, #136] ; 0x88
  3393. /* Configure the Vector Table location add offset address ------------------*/
  3394. #ifdef VECT_TAB_SRAM
  3395. SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
  3396. #else
  3397. SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
  3398. 8001ea8: 4b04 ldr r3, [pc, #16] ; (8001ebc <SystemInit+0x28>)
  3399. 8001eaa: f04f 6200 mov.w r2, #134217728 ; 0x8000000
  3400. 8001eae: 609a str r2, [r3, #8]
  3401. #endif
  3402. }
  3403. 8001eb0: bf00 nop
  3404. 8001eb2: 46bd mov sp, r7
  3405. 8001eb4: f85d 7b04 ldr.w r7, [sp], #4
  3406. 8001eb8: 4770 bx lr
  3407. 8001eba: bf00 nop
  3408. 8001ebc: e000ed00 .word 0xe000ed00
  3409. 08001ec0 <Reset_Handler>:
  3410. 8001ec0: f8df d034 ldr.w sp, [pc, #52] ; 8001ef8 <LoopFillZerobss+0x14>
  3411. 8001ec4: 2100 movs r1, #0
  3412. 8001ec6: e003 b.n 8001ed0 <LoopCopyDataInit>
  3413. 08001ec8 <CopyDataInit>:
  3414. 8001ec8: 4b0c ldr r3, [pc, #48] ; (8001efc <LoopFillZerobss+0x18>)
  3415. 8001eca: 585b ldr r3, [r3, r1]
  3416. 8001ecc: 5043 str r3, [r0, r1]
  3417. 8001ece: 3104 adds r1, #4
  3418. 08001ed0 <LoopCopyDataInit>:
  3419. 8001ed0: 480b ldr r0, [pc, #44] ; (8001f00 <LoopFillZerobss+0x1c>)
  3420. 8001ed2: 4b0c ldr r3, [pc, #48] ; (8001f04 <LoopFillZerobss+0x20>)
  3421. 8001ed4: 1842 adds r2, r0, r1
  3422. 8001ed6: 429a cmp r2, r3
  3423. 8001ed8: d3f6 bcc.n 8001ec8 <CopyDataInit>
  3424. 8001eda: 4a0b ldr r2, [pc, #44] ; (8001f08 <LoopFillZerobss+0x24>)
  3425. 8001edc: e002 b.n 8001ee4 <LoopFillZerobss>
  3426. 08001ede <FillZerobss>:
  3427. 8001ede: 2300 movs r3, #0
  3428. 8001ee0: f842 3b04 str.w r3, [r2], #4
  3429. 08001ee4 <LoopFillZerobss>:
  3430. 8001ee4: 4b09 ldr r3, [pc, #36] ; (8001f0c <LoopFillZerobss+0x28>)
  3431. 8001ee6: 429a cmp r2, r3
  3432. 8001ee8: d3f9 bcc.n 8001ede <FillZerobss>
  3433. 8001eea: f7ff ffd3 bl 8001e94 <SystemInit>
  3434. 8001eee: f002 fa4b bl 8004388 <__libc_init_array>
  3435. 8001ef2: f7ff fc9f bl 8001834 <main>
  3436. 8001ef6: 4770 bx lr
  3437. 8001ef8: 20018000 .word 0x20018000
  3438. 8001efc: 08006220 .word 0x08006220
  3439. 8001f00: 20000000 .word 0x20000000
  3440. 8001f04: 20000088 .word 0x20000088
  3441. 8001f08: 20000088 .word 0x20000088
  3442. 8001f0c: 20000148 .word 0x20000148
  3443. 08001f10 <ADC_IRQHandler>:
  3444. 8001f10: e7fe b.n 8001f10 <ADC_IRQHandler>
  3445. ...
  3446. 08001f14 <HAL_Init>:
  3447. * need to ensure that the SysTick time base is always set to 1 millisecond
  3448. * to have correct HAL operation.
  3449. * @retval HAL status
  3450. */
  3451. HAL_StatusTypeDef HAL_Init(void)
  3452. {
  3453. 8001f14: b580 push {r7, lr}
  3454. 8001f16: af00 add r7, sp, #0
  3455. /* Configure Flash prefetch, Instruction cache, Data cache */
  3456. #if (INSTRUCTION_CACHE_ENABLE != 0U)
  3457. __HAL_FLASH_INSTRUCTION_CACHE_ENABLE();
  3458. 8001f18: 4b0e ldr r3, [pc, #56] ; (8001f54 <HAL_Init+0x40>)
  3459. 8001f1a: 681b ldr r3, [r3, #0]
  3460. 8001f1c: 4a0d ldr r2, [pc, #52] ; (8001f54 <HAL_Init+0x40>)
  3461. 8001f1e: f443 7300 orr.w r3, r3, #512 ; 0x200
  3462. 8001f22: 6013 str r3, [r2, #0]
  3463. #endif /* INSTRUCTION_CACHE_ENABLE */
  3464. #if (DATA_CACHE_ENABLE != 0U)
  3465. __HAL_FLASH_DATA_CACHE_ENABLE();
  3466. 8001f24: 4b0b ldr r3, [pc, #44] ; (8001f54 <HAL_Init+0x40>)
  3467. 8001f26: 681b ldr r3, [r3, #0]
  3468. 8001f28: 4a0a ldr r2, [pc, #40] ; (8001f54 <HAL_Init+0x40>)
  3469. 8001f2a: f443 6380 orr.w r3, r3, #1024 ; 0x400
  3470. 8001f2e: 6013 str r3, [r2, #0]
  3471. #endif /* DATA_CACHE_ENABLE */
  3472. #if (PREFETCH_ENABLE != 0U)
  3473. __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
  3474. 8001f30: 4b08 ldr r3, [pc, #32] ; (8001f54 <HAL_Init+0x40>)
  3475. 8001f32: 681b ldr r3, [r3, #0]
  3476. 8001f34: 4a07 ldr r2, [pc, #28] ; (8001f54 <HAL_Init+0x40>)
  3477. 8001f36: f443 7380 orr.w r3, r3, #256 ; 0x100
  3478. 8001f3a: 6013 str r3, [r2, #0]
  3479. #endif /* PREFETCH_ENABLE */
  3480. /* Set Interrupt Group Priority */
  3481. HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
  3482. 8001f3c: 2003 movs r0, #3
  3483. 8001f3e: f000 f96d bl 800221c <HAL_NVIC_SetPriorityGrouping>
  3484. /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */
  3485. HAL_InitTick(TICK_INT_PRIORITY);
  3486. 8001f42: 2000 movs r0, #0
  3487. 8001f44: f000 f808 bl 8001f58 <HAL_InitTick>
  3488. /* Init the low level hardware */
  3489. HAL_MspInit();
  3490. 8001f48: f7ff fee4 bl 8001d14 <HAL_MspInit>
  3491. /* Return function status */
  3492. return HAL_OK;
  3493. 8001f4c: 2300 movs r3, #0
  3494. }
  3495. 8001f4e: 4618 mov r0, r3
  3496. 8001f50: bd80 pop {r7, pc}
  3497. 8001f52: bf00 nop
  3498. 8001f54: 40023c00 .word 0x40023c00
  3499. 08001f58 <HAL_InitTick>:
  3500. * implementation in user file.
  3501. * @param TickPriority Tick interrupt priority.
  3502. * @retval HAL status
  3503. */
  3504. __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
  3505. {
  3506. 8001f58: b580 push {r7, lr}
  3507. 8001f5a: b082 sub sp, #8
  3508. 8001f5c: af00 add r7, sp, #0
  3509. 8001f5e: 6078 str r0, [r7, #4]
  3510. /* Configure the SysTick to have interrupt in 1ms time basis*/
  3511. if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U)
  3512. 8001f60: 4b12 ldr r3, [pc, #72] ; (8001fac <HAL_InitTick+0x54>)
  3513. 8001f62: 681a ldr r2, [r3, #0]
  3514. 8001f64: 4b12 ldr r3, [pc, #72] ; (8001fb0 <HAL_InitTick+0x58>)
  3515. 8001f66: 781b ldrb r3, [r3, #0]
  3516. 8001f68: 4619 mov r1, r3
  3517. 8001f6a: f44f 737a mov.w r3, #1000 ; 0x3e8
  3518. 8001f6e: fbb3 f3f1 udiv r3, r3, r1
  3519. 8001f72: fbb2 f3f3 udiv r3, r2, r3
  3520. 8001f76: 4618 mov r0, r3
  3521. 8001f78: f000 f985 bl 8002286 <HAL_SYSTICK_Config>
  3522. 8001f7c: 4603 mov r3, r0
  3523. 8001f7e: 2b00 cmp r3, #0
  3524. 8001f80: d001 beq.n 8001f86 <HAL_InitTick+0x2e>
  3525. {
  3526. return HAL_ERROR;
  3527. 8001f82: 2301 movs r3, #1
  3528. 8001f84: e00e b.n 8001fa4 <HAL_InitTick+0x4c>
  3529. }
  3530. /* Configure the SysTick IRQ priority */
  3531. if (TickPriority < (1UL << __NVIC_PRIO_BITS))
  3532. 8001f86: 687b ldr r3, [r7, #4]
  3533. 8001f88: 2b0f cmp r3, #15
  3534. 8001f8a: d80a bhi.n 8001fa2 <HAL_InitTick+0x4a>
  3535. {
  3536. HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U);
  3537. 8001f8c: 2200 movs r2, #0
  3538. 8001f8e: 6879 ldr r1, [r7, #4]
  3539. 8001f90: f04f 30ff mov.w r0, #4294967295
  3540. 8001f94: f000 f94d bl 8002232 <HAL_NVIC_SetPriority>
  3541. uwTickPrio = TickPriority;
  3542. 8001f98: 4a06 ldr r2, [pc, #24] ; (8001fb4 <HAL_InitTick+0x5c>)
  3543. 8001f9a: 687b ldr r3, [r7, #4]
  3544. 8001f9c: 6013 str r3, [r2, #0]
  3545. {
  3546. return HAL_ERROR;
  3547. }
  3548. /* Return function status */
  3549. return HAL_OK;
  3550. 8001f9e: 2300 movs r3, #0
  3551. 8001fa0: e000 b.n 8001fa4 <HAL_InitTick+0x4c>
  3552. return HAL_ERROR;
  3553. 8001fa2: 2301 movs r3, #1
  3554. }
  3555. 8001fa4: 4618 mov r0, r3
  3556. 8001fa6: 3708 adds r7, #8
  3557. 8001fa8: 46bd mov sp, r7
  3558. 8001faa: bd80 pop {r7, pc}
  3559. 8001fac: 20000014 .word 0x20000014
  3560. 8001fb0: 2000001c .word 0x2000001c
  3561. 8001fb4: 20000018 .word 0x20000018
  3562. 08001fb8 <HAL_IncTick>:
  3563. * @note This function is declared as __weak to be overwritten in case of other
  3564. * implementations in user file.
  3565. * @retval None
  3566. */
  3567. __weak void HAL_IncTick(void)
  3568. {
  3569. 8001fb8: b480 push {r7}
  3570. 8001fba: af00 add r7, sp, #0
  3571. uwTick += uwTickFreq;
  3572. 8001fbc: 4b06 ldr r3, [pc, #24] ; (8001fd8 <HAL_IncTick+0x20>)
  3573. 8001fbe: 781b ldrb r3, [r3, #0]
  3574. 8001fc0: 461a mov r2, r3
  3575. 8001fc2: 4b06 ldr r3, [pc, #24] ; (8001fdc <HAL_IncTick+0x24>)
  3576. 8001fc4: 681b ldr r3, [r3, #0]
  3577. 8001fc6: 4413 add r3, r2
  3578. 8001fc8: 4a04 ldr r2, [pc, #16] ; (8001fdc <HAL_IncTick+0x24>)
  3579. 8001fca: 6013 str r3, [r2, #0]
  3580. }
  3581. 8001fcc: bf00 nop
  3582. 8001fce: 46bd mov sp, r7
  3583. 8001fd0: f85d 7b04 ldr.w r7, [sp], #4
  3584. 8001fd4: 4770 bx lr
  3585. 8001fd6: bf00 nop
  3586. 8001fd8: 2000001c .word 0x2000001c
  3587. 8001fdc: 20000144 .word 0x20000144
  3588. 08001fe0 <HAL_GetTick>:
  3589. * @note This function is declared as __weak to be overwritten in case of other
  3590. * implementations in user file.
  3591. * @retval tick value
  3592. */
  3593. __weak uint32_t HAL_GetTick(void)
  3594. {
  3595. 8001fe0: b480 push {r7}
  3596. 8001fe2: af00 add r7, sp, #0
  3597. return uwTick;
  3598. 8001fe4: 4b03 ldr r3, [pc, #12] ; (8001ff4 <HAL_GetTick+0x14>)
  3599. 8001fe6: 681b ldr r3, [r3, #0]
  3600. }
  3601. 8001fe8: 4618 mov r0, r3
  3602. 8001fea: 46bd mov sp, r7
  3603. 8001fec: f85d 7b04 ldr.w r7, [sp], #4
  3604. 8001ff0: 4770 bx lr
  3605. 8001ff2: bf00 nop
  3606. 8001ff4: 20000144 .word 0x20000144
  3607. 08001ff8 <HAL_Delay>:
  3608. * implementations in user file.
  3609. * @param Delay specifies the delay time length, in milliseconds.
  3610. * @retval None
  3611. */
  3612. __weak void HAL_Delay(uint32_t Delay)
  3613. {
  3614. 8001ff8: b580 push {r7, lr}
  3615. 8001ffa: b084 sub sp, #16
  3616. 8001ffc: af00 add r7, sp, #0
  3617. 8001ffe: 6078 str r0, [r7, #4]
  3618. uint32_t tickstart = HAL_GetTick();
  3619. 8002000: f7ff ffee bl 8001fe0 <HAL_GetTick>
  3620. 8002004: 60b8 str r0, [r7, #8]
  3621. uint32_t wait = Delay;
  3622. 8002006: 687b ldr r3, [r7, #4]
  3623. 8002008: 60fb str r3, [r7, #12]
  3624. /* Add a freq to guarantee minimum wait */
  3625. if (wait < HAL_MAX_DELAY)
  3626. 800200a: 68fb ldr r3, [r7, #12]
  3627. 800200c: f1b3 3fff cmp.w r3, #4294967295
  3628. 8002010: d005 beq.n 800201e <HAL_Delay+0x26>
  3629. {
  3630. wait += (uint32_t)(uwTickFreq);
  3631. 8002012: 4b09 ldr r3, [pc, #36] ; (8002038 <HAL_Delay+0x40>)
  3632. 8002014: 781b ldrb r3, [r3, #0]
  3633. 8002016: 461a mov r2, r3
  3634. 8002018: 68fb ldr r3, [r7, #12]
  3635. 800201a: 4413 add r3, r2
  3636. 800201c: 60fb str r3, [r7, #12]
  3637. }
  3638. while((HAL_GetTick() - tickstart) < wait)
  3639. 800201e: bf00 nop
  3640. 8002020: f7ff ffde bl 8001fe0 <HAL_GetTick>
  3641. 8002024: 4602 mov r2, r0
  3642. 8002026: 68bb ldr r3, [r7, #8]
  3643. 8002028: 1ad3 subs r3, r2, r3
  3644. 800202a: 68fa ldr r2, [r7, #12]
  3645. 800202c: 429a cmp r2, r3
  3646. 800202e: d8f7 bhi.n 8002020 <HAL_Delay+0x28>
  3647. {
  3648. }
  3649. }
  3650. 8002030: bf00 nop
  3651. 8002032: 3710 adds r7, #16
  3652. 8002034: 46bd mov sp, r7
  3653. 8002036: bd80 pop {r7, pc}
  3654. 8002038: 2000001c .word 0x2000001c
  3655. 0800203c <HAL_SuspendTick>:
  3656. * @note This function is declared as __weak to be overwritten in case of other
  3657. * implementations in user file.
  3658. * @retval None
  3659. */
  3660. __weak void HAL_SuspendTick(void)
  3661. {
  3662. 800203c: b480 push {r7}
  3663. 800203e: af00 add r7, sp, #0
  3664. /* Disable SysTick Interrupt */
  3665. SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk;
  3666. 8002040: 4b05 ldr r3, [pc, #20] ; (8002058 <HAL_SuspendTick+0x1c>)
  3667. 8002042: 681b ldr r3, [r3, #0]
  3668. 8002044: 4a04 ldr r2, [pc, #16] ; (8002058 <HAL_SuspendTick+0x1c>)
  3669. 8002046: f023 0302 bic.w r3, r3, #2
  3670. 800204a: 6013 str r3, [r2, #0]
  3671. }
  3672. 800204c: bf00 nop
  3673. 800204e: 46bd mov sp, r7
  3674. 8002050: f85d 7b04 ldr.w r7, [sp], #4
  3675. 8002054: 4770 bx lr
  3676. 8002056: bf00 nop
  3677. 8002058: e000e010 .word 0xe000e010
  3678. 0800205c <HAL_ResumeTick>:
  3679. * @note This function is declared as __weak to be overwritten in case of other
  3680. * implementations in user file.
  3681. * @retval None
  3682. */
  3683. __weak void HAL_ResumeTick(void)
  3684. {
  3685. 800205c: b480 push {r7}
  3686. 800205e: af00 add r7, sp, #0
  3687. /* Enable SysTick Interrupt */
  3688. SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk;
  3689. 8002060: 4b05 ldr r3, [pc, #20] ; (8002078 <HAL_ResumeTick+0x1c>)
  3690. 8002062: 681b ldr r3, [r3, #0]
  3691. 8002064: 4a04 ldr r2, [pc, #16] ; (8002078 <HAL_ResumeTick+0x1c>)
  3692. 8002066: f043 0302 orr.w r3, r3, #2
  3693. 800206a: 6013 str r3, [r2, #0]
  3694. }
  3695. 800206c: bf00 nop
  3696. 800206e: 46bd mov sp, r7
  3697. 8002070: f85d 7b04 ldr.w r7, [sp], #4
  3698. 8002074: 4770 bx lr
  3699. 8002076: bf00 nop
  3700. 8002078: e000e010 .word 0xe000e010
  3701. 0800207c <__NVIC_SetPriorityGrouping>:
  3702. In case of a conflict between priority grouping and available
  3703. priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
  3704. \param [in] PriorityGroup Priority grouping field.
  3705. */
  3706. __STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
  3707. {
  3708. 800207c: b480 push {r7}
  3709. 800207e: b085 sub sp, #20
  3710. 8002080: af00 add r7, sp, #0
  3711. 8002082: 6078 str r0, [r7, #4]
  3712. uint32_t reg_value;
  3713. uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */
  3714. 8002084: 687b ldr r3, [r7, #4]
  3715. 8002086: f003 0307 and.w r3, r3, #7
  3716. 800208a: 60fb str r3, [r7, #12]
  3717. reg_value = SCB->AIRCR; /* read old register configuration */
  3718. 800208c: 4b0c ldr r3, [pc, #48] ; (80020c0 <__NVIC_SetPriorityGrouping+0x44>)
  3719. 800208e: 68db ldr r3, [r3, #12]
  3720. 8002090: 60bb str r3, [r7, #8]
  3721. reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */
  3722. 8002092: 68ba ldr r2, [r7, #8]
  3723. 8002094: f64f 03ff movw r3, #63743 ; 0xf8ff
  3724. 8002098: 4013 ands r3, r2
  3725. 800209a: 60bb str r3, [r7, #8]
  3726. reg_value = (reg_value |
  3727. ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
  3728. (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */
  3729. 800209c: 68fb ldr r3, [r7, #12]
  3730. 800209e: 021a lsls r2, r3, #8
  3731. ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
  3732. 80020a0: 68bb ldr r3, [r7, #8]
  3733. 80020a2: 4313 orrs r3, r2
  3734. reg_value = (reg_value |
  3735. 80020a4: f043 63bf orr.w r3, r3, #100139008 ; 0x5f80000
  3736. 80020a8: f443 3300 orr.w r3, r3, #131072 ; 0x20000
  3737. 80020ac: 60bb str r3, [r7, #8]
  3738. SCB->AIRCR = reg_value;
  3739. 80020ae: 4a04 ldr r2, [pc, #16] ; (80020c0 <__NVIC_SetPriorityGrouping+0x44>)
  3740. 80020b0: 68bb ldr r3, [r7, #8]
  3741. 80020b2: 60d3 str r3, [r2, #12]
  3742. }
  3743. 80020b4: bf00 nop
  3744. 80020b6: 3714 adds r7, #20
  3745. 80020b8: 46bd mov sp, r7
  3746. 80020ba: f85d 7b04 ldr.w r7, [sp], #4
  3747. 80020be: 4770 bx lr
  3748. 80020c0: e000ed00 .word 0xe000ed00
  3749. 080020c4 <__NVIC_GetPriorityGrouping>:
  3750. \brief Get Priority Grouping
  3751. \details Reads the priority grouping field from the NVIC Interrupt Controller.
  3752. \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
  3753. */
  3754. __STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)
  3755. {
  3756. 80020c4: b480 push {r7}
  3757. 80020c6: af00 add r7, sp, #0
  3758. return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
  3759. 80020c8: 4b04 ldr r3, [pc, #16] ; (80020dc <__NVIC_GetPriorityGrouping+0x18>)
  3760. 80020ca: 68db ldr r3, [r3, #12]
  3761. 80020cc: 0a1b lsrs r3, r3, #8
  3762. 80020ce: f003 0307 and.w r3, r3, #7
  3763. }
  3764. 80020d2: 4618 mov r0, r3
  3765. 80020d4: 46bd mov sp, r7
  3766. 80020d6: f85d 7b04 ldr.w r7, [sp], #4
  3767. 80020da: 4770 bx lr
  3768. 80020dc: e000ed00 .word 0xe000ed00
  3769. 080020e0 <__NVIC_EnableIRQ>:
  3770. \details Enables a device specific interrupt in the NVIC interrupt controller.
  3771. \param [in] IRQn Device specific interrupt number.
  3772. \note IRQn must not be negative.
  3773. */
  3774. __STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)
  3775. {
  3776. 80020e0: b480 push {r7}
  3777. 80020e2: b083 sub sp, #12
  3778. 80020e4: af00 add r7, sp, #0
  3779. 80020e6: 4603 mov r3, r0
  3780. 80020e8: 71fb strb r3, [r7, #7]
  3781. if ((int32_t)(IRQn) >= 0)
  3782. 80020ea: f997 3007 ldrsb.w r3, [r7, #7]
  3783. 80020ee: 2b00 cmp r3, #0
  3784. 80020f0: db0b blt.n 800210a <__NVIC_EnableIRQ+0x2a>
  3785. {
  3786. NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
  3787. 80020f2: 79fb ldrb r3, [r7, #7]
  3788. 80020f4: f003 021f and.w r2, r3, #31
  3789. 80020f8: 4907 ldr r1, [pc, #28] ; (8002118 <__NVIC_EnableIRQ+0x38>)
  3790. 80020fa: f997 3007 ldrsb.w r3, [r7, #7]
  3791. 80020fe: 095b lsrs r3, r3, #5
  3792. 8002100: 2001 movs r0, #1
  3793. 8002102: fa00 f202 lsl.w r2, r0, r2
  3794. 8002106: f841 2023 str.w r2, [r1, r3, lsl #2]
  3795. }
  3796. }
  3797. 800210a: bf00 nop
  3798. 800210c: 370c adds r7, #12
  3799. 800210e: 46bd mov sp, r7
  3800. 8002110: f85d 7b04 ldr.w r7, [sp], #4
  3801. 8002114: 4770 bx lr
  3802. 8002116: bf00 nop
  3803. 8002118: e000e100 .word 0xe000e100
  3804. 0800211c <__NVIC_SetPriority>:
  3805. \param [in] IRQn Interrupt number.
  3806. \param [in] priority Priority to set.
  3807. \note The priority cannot be set for every processor exception.
  3808. */
  3809. __STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
  3810. {
  3811. 800211c: b480 push {r7}
  3812. 800211e: b083 sub sp, #12
  3813. 8002120: af00 add r7, sp, #0
  3814. 8002122: 4603 mov r3, r0
  3815. 8002124: 6039 str r1, [r7, #0]
  3816. 8002126: 71fb strb r3, [r7, #7]
  3817. if ((int32_t)(IRQn) >= 0)
  3818. 8002128: f997 3007 ldrsb.w r3, [r7, #7]
  3819. 800212c: 2b00 cmp r3, #0
  3820. 800212e: db0a blt.n 8002146 <__NVIC_SetPriority+0x2a>
  3821. {
  3822. NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
  3823. 8002130: 683b ldr r3, [r7, #0]
  3824. 8002132: b2da uxtb r2, r3
  3825. 8002134: 490c ldr r1, [pc, #48] ; (8002168 <__NVIC_SetPriority+0x4c>)
  3826. 8002136: f997 3007 ldrsb.w r3, [r7, #7]
  3827. 800213a: 0112 lsls r2, r2, #4
  3828. 800213c: b2d2 uxtb r2, r2
  3829. 800213e: 440b add r3, r1
  3830. 8002140: f883 2300 strb.w r2, [r3, #768] ; 0x300
  3831. }
  3832. else
  3833. {
  3834. SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
  3835. }
  3836. }
  3837. 8002144: e00a b.n 800215c <__NVIC_SetPriority+0x40>
  3838. SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
  3839. 8002146: 683b ldr r3, [r7, #0]
  3840. 8002148: b2da uxtb r2, r3
  3841. 800214a: 4908 ldr r1, [pc, #32] ; (800216c <__NVIC_SetPriority+0x50>)
  3842. 800214c: 79fb ldrb r3, [r7, #7]
  3843. 800214e: f003 030f and.w r3, r3, #15
  3844. 8002152: 3b04 subs r3, #4
  3845. 8002154: 0112 lsls r2, r2, #4
  3846. 8002156: b2d2 uxtb r2, r2
  3847. 8002158: 440b add r3, r1
  3848. 800215a: 761a strb r2, [r3, #24]
  3849. }
  3850. 800215c: bf00 nop
  3851. 800215e: 370c adds r7, #12
  3852. 8002160: 46bd mov sp, r7
  3853. 8002162: f85d 7b04 ldr.w r7, [sp], #4
  3854. 8002166: 4770 bx lr
  3855. 8002168: e000e100 .word 0xe000e100
  3856. 800216c: e000ed00 .word 0xe000ed00
  3857. 08002170 <NVIC_EncodePriority>:
  3858. \param [in] PreemptPriority Preemptive priority value (starting from 0).
  3859. \param [in] SubPriority Subpriority value (starting from 0).
  3860. \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
  3861. */
  3862. __STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
  3863. {
  3864. 8002170: b480 push {r7}
  3865. 8002172: b089 sub sp, #36 ; 0x24
  3866. 8002174: af00 add r7, sp, #0
  3867. 8002176: 60f8 str r0, [r7, #12]
  3868. 8002178: 60b9 str r1, [r7, #8]
  3869. 800217a: 607a str r2, [r7, #4]
  3870. uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */
  3871. 800217c: 68fb ldr r3, [r7, #12]
  3872. 800217e: f003 0307 and.w r3, r3, #7
  3873. 8002182: 61fb str r3, [r7, #28]
  3874. uint32_t PreemptPriorityBits;
  3875. uint32_t SubPriorityBits;
  3876. PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
  3877. 8002184: 69fb ldr r3, [r7, #28]
  3878. 8002186: f1c3 0307 rsb r3, r3, #7
  3879. 800218a: 2b04 cmp r3, #4
  3880. 800218c: bf28 it cs
  3881. 800218e: 2304 movcs r3, #4
  3882. 8002190: 61bb str r3, [r7, #24]
  3883. SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
  3884. 8002192: 69fb ldr r3, [r7, #28]
  3885. 8002194: 3304 adds r3, #4
  3886. 8002196: 2b06 cmp r3, #6
  3887. 8002198: d902 bls.n 80021a0 <NVIC_EncodePriority+0x30>
  3888. 800219a: 69fb ldr r3, [r7, #28]
  3889. 800219c: 3b03 subs r3, #3
  3890. 800219e: e000 b.n 80021a2 <NVIC_EncodePriority+0x32>
  3891. 80021a0: 2300 movs r3, #0
  3892. 80021a2: 617b str r3, [r7, #20]
  3893. return (
  3894. ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
  3895. 80021a4: f04f 32ff mov.w r2, #4294967295
  3896. 80021a8: 69bb ldr r3, [r7, #24]
  3897. 80021aa: fa02 f303 lsl.w r3, r2, r3
  3898. 80021ae: 43da mvns r2, r3
  3899. 80021b0: 68bb ldr r3, [r7, #8]
  3900. 80021b2: 401a ands r2, r3
  3901. 80021b4: 697b ldr r3, [r7, #20]
  3902. 80021b6: 409a lsls r2, r3
  3903. ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))
  3904. 80021b8: f04f 31ff mov.w r1, #4294967295
  3905. 80021bc: 697b ldr r3, [r7, #20]
  3906. 80021be: fa01 f303 lsl.w r3, r1, r3
  3907. 80021c2: 43d9 mvns r1, r3
  3908. 80021c4: 687b ldr r3, [r7, #4]
  3909. 80021c6: 400b ands r3, r1
  3910. ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
  3911. 80021c8: 4313 orrs r3, r2
  3912. );
  3913. }
  3914. 80021ca: 4618 mov r0, r3
  3915. 80021cc: 3724 adds r7, #36 ; 0x24
  3916. 80021ce: 46bd mov sp, r7
  3917. 80021d0: f85d 7b04 ldr.w r7, [sp], #4
  3918. 80021d4: 4770 bx lr
  3919. ...
  3920. 080021d8 <SysTick_Config>:
  3921. \note When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
  3922. function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
  3923. must contain a vendor-specific implementation of this function.
  3924. */
  3925. __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
  3926. {
  3927. 80021d8: b580 push {r7, lr}
  3928. 80021da: b082 sub sp, #8
  3929. 80021dc: af00 add r7, sp, #0
  3930. 80021de: 6078 str r0, [r7, #4]
  3931. if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
  3932. 80021e0: 687b ldr r3, [r7, #4]
  3933. 80021e2: 3b01 subs r3, #1
  3934. 80021e4: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000
  3935. 80021e8: d301 bcc.n 80021ee <SysTick_Config+0x16>
  3936. {
  3937. return (1UL); /* Reload value impossible */
  3938. 80021ea: 2301 movs r3, #1
  3939. 80021ec: e00f b.n 800220e <SysTick_Config+0x36>
  3940. }
  3941. SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */
  3942. 80021ee: 4a0a ldr r2, [pc, #40] ; (8002218 <SysTick_Config+0x40>)
  3943. 80021f0: 687b ldr r3, [r7, #4]
  3944. 80021f2: 3b01 subs r3, #1
  3945. 80021f4: 6053 str r3, [r2, #4]
  3946. NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
  3947. 80021f6: 210f movs r1, #15
  3948. 80021f8: f04f 30ff mov.w r0, #4294967295
  3949. 80021fc: f7ff ff8e bl 800211c <__NVIC_SetPriority>
  3950. SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
  3951. 8002200: 4b05 ldr r3, [pc, #20] ; (8002218 <SysTick_Config+0x40>)
  3952. 8002202: 2200 movs r2, #0
  3953. 8002204: 609a str r2, [r3, #8]
  3954. SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
  3955. 8002206: 4b04 ldr r3, [pc, #16] ; (8002218 <SysTick_Config+0x40>)
  3956. 8002208: 2207 movs r2, #7
  3957. 800220a: 601a str r2, [r3, #0]
  3958. SysTick_CTRL_TICKINT_Msk |
  3959. SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
  3960. return (0UL); /* Function successful */
  3961. 800220c: 2300 movs r3, #0
  3962. }
  3963. 800220e: 4618 mov r0, r3
  3964. 8002210: 3708 adds r7, #8
  3965. 8002212: 46bd mov sp, r7
  3966. 8002214: bd80 pop {r7, pc}
  3967. 8002216: bf00 nop
  3968. 8002218: e000e010 .word 0xe000e010
  3969. 0800221c <HAL_NVIC_SetPriorityGrouping>:
  3970. * @note When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible.
  3971. * The pending IRQ priority will be managed only by the subpriority.
  3972. * @retval None
  3973. */
  3974. void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
  3975. {
  3976. 800221c: b580 push {r7, lr}
  3977. 800221e: b082 sub sp, #8
  3978. 8002220: af00 add r7, sp, #0
  3979. 8002222: 6078 str r0, [r7, #4]
  3980. /* Check the parameters */
  3981. assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));
  3982. /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */
  3983. NVIC_SetPriorityGrouping(PriorityGroup);
  3984. 8002224: 6878 ldr r0, [r7, #4]
  3985. 8002226: f7ff ff29 bl 800207c <__NVIC_SetPriorityGrouping>
  3986. }
  3987. 800222a: bf00 nop
  3988. 800222c: 3708 adds r7, #8
  3989. 800222e: 46bd mov sp, r7
  3990. 8002230: bd80 pop {r7, pc}
  3991. 08002232 <HAL_NVIC_SetPriority>:
  3992. * This parameter can be a value between 0 and 15
  3993. * A lower priority value indicates a higher priority.
  3994. * @retval None
  3995. */
  3996. void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
  3997. {
  3998. 8002232: b580 push {r7, lr}
  3999. 8002234: b086 sub sp, #24
  4000. 8002236: af00 add r7, sp, #0
  4001. 8002238: 4603 mov r3, r0
  4002. 800223a: 60b9 str r1, [r7, #8]
  4003. 800223c: 607a str r2, [r7, #4]
  4004. 800223e: 73fb strb r3, [r7, #15]
  4005. uint32_t prioritygroup = 0x00U;
  4006. 8002240: 2300 movs r3, #0
  4007. 8002242: 617b str r3, [r7, #20]
  4008. /* Check the parameters */
  4009. assert_param(IS_NVIC_SUB_PRIORITY(SubPriority));
  4010. assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority));
  4011. prioritygroup = NVIC_GetPriorityGrouping();
  4012. 8002244: f7ff ff3e bl 80020c4 <__NVIC_GetPriorityGrouping>
  4013. 8002248: 6178 str r0, [r7, #20]
  4014. NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority));
  4015. 800224a: 687a ldr r2, [r7, #4]
  4016. 800224c: 68b9 ldr r1, [r7, #8]
  4017. 800224e: 6978 ldr r0, [r7, #20]
  4018. 8002250: f7ff ff8e bl 8002170 <NVIC_EncodePriority>
  4019. 8002254: 4602 mov r2, r0
  4020. 8002256: f997 300f ldrsb.w r3, [r7, #15]
  4021. 800225a: 4611 mov r1, r2
  4022. 800225c: 4618 mov r0, r3
  4023. 800225e: f7ff ff5d bl 800211c <__NVIC_SetPriority>
  4024. }
  4025. 8002262: bf00 nop
  4026. 8002264: 3718 adds r7, #24
  4027. 8002266: 46bd mov sp, r7
  4028. 8002268: bd80 pop {r7, pc}
  4029. 0800226a <HAL_NVIC_EnableIRQ>:
  4030. * This parameter can be an enumerator of IRQn_Type enumeration
  4031. * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f4xxxx.h))
  4032. * @retval None
  4033. */
  4034. void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
  4035. {
  4036. 800226a: b580 push {r7, lr}
  4037. 800226c: b082 sub sp, #8
  4038. 800226e: af00 add r7, sp, #0
  4039. 8002270: 4603 mov r3, r0
  4040. 8002272: 71fb strb r3, [r7, #7]
  4041. /* Check the parameters */
  4042. assert_param(IS_NVIC_DEVICE_IRQ(IRQn));
  4043. /* Enable interrupt */
  4044. NVIC_EnableIRQ(IRQn);
  4045. 8002274: f997 3007 ldrsb.w r3, [r7, #7]
  4046. 8002278: 4618 mov r0, r3
  4047. 800227a: f7ff ff31 bl 80020e0 <__NVIC_EnableIRQ>
  4048. }
  4049. 800227e: bf00 nop
  4050. 8002280: 3708 adds r7, #8
  4051. 8002282: 46bd mov sp, r7
  4052. 8002284: bd80 pop {r7, pc}
  4053. 08002286 <HAL_SYSTICK_Config>:
  4054. * @param TicksNumb Specifies the ticks Number of ticks between two interrupts.
  4055. * @retval status: - 0 Function succeeded.
  4056. * - 1 Function failed.
  4057. */
  4058. uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb)
  4059. {
  4060. 8002286: b580 push {r7, lr}
  4061. 8002288: b082 sub sp, #8
  4062. 800228a: af00 add r7, sp, #0
  4063. 800228c: 6078 str r0, [r7, #4]
  4064. return SysTick_Config(TicksNumb);
  4065. 800228e: 6878 ldr r0, [r7, #4]
  4066. 8002290: f7ff ffa2 bl 80021d8 <SysTick_Config>
  4067. 8002294: 4603 mov r3, r0
  4068. }
  4069. 8002296: 4618 mov r0, r3
  4070. 8002298: 3708 adds r7, #8
  4071. 800229a: 46bd mov sp, r7
  4072. 800229c: bd80 pop {r7, pc}
  4073. ...
  4074. 080022a0 <HAL_GPIO_Init>:
  4075. * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains
  4076. * the configuration information for the specified GPIO peripheral.
  4077. * @retval None
  4078. */
  4079. void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
  4080. {
  4081. 80022a0: b480 push {r7}
  4082. 80022a2: b089 sub sp, #36 ; 0x24
  4083. 80022a4: af00 add r7, sp, #0
  4084. 80022a6: 6078 str r0, [r7, #4]
  4085. 80022a8: 6039 str r1, [r7, #0]
  4086. uint32_t position;
  4087. uint32_t ioposition = 0x00U;
  4088. 80022aa: 2300 movs r3, #0
  4089. 80022ac: 617b str r3, [r7, #20]
  4090. uint32_t iocurrent = 0x00U;
  4091. 80022ae: 2300 movs r3, #0
  4092. 80022b0: 613b str r3, [r7, #16]
  4093. uint32_t temp = 0x00U;
  4094. 80022b2: 2300 movs r3, #0
  4095. 80022b4: 61bb str r3, [r7, #24]
  4096. assert_param(IS_GPIO_PIN(GPIO_Init->Pin));
  4097. assert_param(IS_GPIO_MODE(GPIO_Init->Mode));
  4098. assert_param(IS_GPIO_PULL(GPIO_Init->Pull));
  4099. /* Configure the port pins */
  4100. for(position = 0U; position < GPIO_NUMBER; position++)
  4101. 80022b6: 2300 movs r3, #0
  4102. 80022b8: 61fb str r3, [r7, #28]
  4103. 80022ba: e159 b.n 8002570 <HAL_GPIO_Init+0x2d0>
  4104. {
  4105. /* Get the IO position */
  4106. ioposition = 0x01U << position;
  4107. 80022bc: 2201 movs r2, #1
  4108. 80022be: 69fb ldr r3, [r7, #28]
  4109. 80022c0: fa02 f303 lsl.w r3, r2, r3
  4110. 80022c4: 617b str r3, [r7, #20]
  4111. /* Get the current IO position */
  4112. iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition;
  4113. 80022c6: 683b ldr r3, [r7, #0]
  4114. 80022c8: 681b ldr r3, [r3, #0]
  4115. 80022ca: 697a ldr r2, [r7, #20]
  4116. 80022cc: 4013 ands r3, r2
  4117. 80022ce: 613b str r3, [r7, #16]
  4118. if(iocurrent == ioposition)
  4119. 80022d0: 693a ldr r2, [r7, #16]
  4120. 80022d2: 697b ldr r3, [r7, #20]
  4121. 80022d4: 429a cmp r2, r3
  4122. 80022d6: f040 8148 bne.w 800256a <HAL_GPIO_Init+0x2ca>
  4123. {
  4124. /*--------------------- GPIO Mode Configuration ------------------------*/
  4125. /* In case of Output or Alternate function mode selection */
  4126. if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
  4127. 80022da: 683b ldr r3, [r7, #0]
  4128. 80022dc: 685b ldr r3, [r3, #4]
  4129. 80022de: 2b01 cmp r3, #1
  4130. 80022e0: d00b beq.n 80022fa <HAL_GPIO_Init+0x5a>
  4131. 80022e2: 683b ldr r3, [r7, #0]
  4132. 80022e4: 685b ldr r3, [r3, #4]
  4133. 80022e6: 2b02 cmp r3, #2
  4134. 80022e8: d007 beq.n 80022fa <HAL_GPIO_Init+0x5a>
  4135. (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
  4136. 80022ea: 683b ldr r3, [r7, #0]
  4137. 80022ec: 685b ldr r3, [r3, #4]
  4138. if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
  4139. 80022ee: 2b11 cmp r3, #17
  4140. 80022f0: d003 beq.n 80022fa <HAL_GPIO_Init+0x5a>
  4141. (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
  4142. 80022f2: 683b ldr r3, [r7, #0]
  4143. 80022f4: 685b ldr r3, [r3, #4]
  4144. 80022f6: 2b12 cmp r3, #18
  4145. 80022f8: d130 bne.n 800235c <HAL_GPIO_Init+0xbc>
  4146. {
  4147. /* Check the Speed parameter */
  4148. assert_param(IS_GPIO_SPEED(GPIO_Init->Speed));
  4149. /* Configure the IO Speed */
  4150. temp = GPIOx->OSPEEDR;
  4151. 80022fa: 687b ldr r3, [r7, #4]
  4152. 80022fc: 689b ldr r3, [r3, #8]
  4153. 80022fe: 61bb str r3, [r7, #24]
  4154. temp &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2U));
  4155. 8002300: 69fb ldr r3, [r7, #28]
  4156. 8002302: 005b lsls r3, r3, #1
  4157. 8002304: 2203 movs r2, #3
  4158. 8002306: fa02 f303 lsl.w r3, r2, r3
  4159. 800230a: 43db mvns r3, r3
  4160. 800230c: 69ba ldr r2, [r7, #24]
  4161. 800230e: 4013 ands r3, r2
  4162. 8002310: 61bb str r3, [r7, #24]
  4163. temp |= (GPIO_Init->Speed << (position * 2U));
  4164. 8002312: 683b ldr r3, [r7, #0]
  4165. 8002314: 68da ldr r2, [r3, #12]
  4166. 8002316: 69fb ldr r3, [r7, #28]
  4167. 8002318: 005b lsls r3, r3, #1
  4168. 800231a: fa02 f303 lsl.w r3, r2, r3
  4169. 800231e: 69ba ldr r2, [r7, #24]
  4170. 8002320: 4313 orrs r3, r2
  4171. 8002322: 61bb str r3, [r7, #24]
  4172. GPIOx->OSPEEDR = temp;
  4173. 8002324: 687b ldr r3, [r7, #4]
  4174. 8002326: 69ba ldr r2, [r7, #24]
  4175. 8002328: 609a str r2, [r3, #8]
  4176. /* Configure the IO Output Type */
  4177. temp = GPIOx->OTYPER;
  4178. 800232a: 687b ldr r3, [r7, #4]
  4179. 800232c: 685b ldr r3, [r3, #4]
  4180. 800232e: 61bb str r3, [r7, #24]
  4181. temp &= ~(GPIO_OTYPER_OT_0 << position) ;
  4182. 8002330: 2201 movs r2, #1
  4183. 8002332: 69fb ldr r3, [r7, #28]
  4184. 8002334: fa02 f303 lsl.w r3, r2, r3
  4185. 8002338: 43db mvns r3, r3
  4186. 800233a: 69ba ldr r2, [r7, #24]
  4187. 800233c: 4013 ands r3, r2
  4188. 800233e: 61bb str r3, [r7, #24]
  4189. temp |= (((GPIO_Init->Mode & GPIO_OUTPUT_TYPE) >> 4U) << position);
  4190. 8002340: 683b ldr r3, [r7, #0]
  4191. 8002342: 685b ldr r3, [r3, #4]
  4192. 8002344: 091b lsrs r3, r3, #4
  4193. 8002346: f003 0201 and.w r2, r3, #1
  4194. 800234a: 69fb ldr r3, [r7, #28]
  4195. 800234c: fa02 f303 lsl.w r3, r2, r3
  4196. 8002350: 69ba ldr r2, [r7, #24]
  4197. 8002352: 4313 orrs r3, r2
  4198. 8002354: 61bb str r3, [r7, #24]
  4199. GPIOx->OTYPER = temp;
  4200. 8002356: 687b ldr r3, [r7, #4]
  4201. 8002358: 69ba ldr r2, [r7, #24]
  4202. 800235a: 605a str r2, [r3, #4]
  4203. }
  4204. /* Activate the Pull-up or Pull down resistor for the current IO */
  4205. temp = GPIOx->PUPDR;
  4206. 800235c: 687b ldr r3, [r7, #4]
  4207. 800235e: 68db ldr r3, [r3, #12]
  4208. 8002360: 61bb str r3, [r7, #24]
  4209. temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2U));
  4210. 8002362: 69fb ldr r3, [r7, #28]
  4211. 8002364: 005b lsls r3, r3, #1
  4212. 8002366: 2203 movs r2, #3
  4213. 8002368: fa02 f303 lsl.w r3, r2, r3
  4214. 800236c: 43db mvns r3, r3
  4215. 800236e: 69ba ldr r2, [r7, #24]
  4216. 8002370: 4013 ands r3, r2
  4217. 8002372: 61bb str r3, [r7, #24]
  4218. temp |= ((GPIO_Init->Pull) << (position * 2U));
  4219. 8002374: 683b ldr r3, [r7, #0]
  4220. 8002376: 689a ldr r2, [r3, #8]
  4221. 8002378: 69fb ldr r3, [r7, #28]
  4222. 800237a: 005b lsls r3, r3, #1
  4223. 800237c: fa02 f303 lsl.w r3, r2, r3
  4224. 8002380: 69ba ldr r2, [r7, #24]
  4225. 8002382: 4313 orrs r3, r2
  4226. 8002384: 61bb str r3, [r7, #24]
  4227. GPIOx->PUPDR = temp;
  4228. 8002386: 687b ldr r3, [r7, #4]
  4229. 8002388: 69ba ldr r2, [r7, #24]
  4230. 800238a: 60da str r2, [r3, #12]
  4231. /* In case of Alternate function mode selection */
  4232. if((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
  4233. 800238c: 683b ldr r3, [r7, #0]
  4234. 800238e: 685b ldr r3, [r3, #4]
  4235. 8002390: 2b02 cmp r3, #2
  4236. 8002392: d003 beq.n 800239c <HAL_GPIO_Init+0xfc>
  4237. 8002394: 683b ldr r3, [r7, #0]
  4238. 8002396: 685b ldr r3, [r3, #4]
  4239. 8002398: 2b12 cmp r3, #18
  4240. 800239a: d123 bne.n 80023e4 <HAL_GPIO_Init+0x144>
  4241. {
  4242. /* Check the Alternate function parameter */
  4243. assert_param(IS_GPIO_AF(GPIO_Init->Alternate));
  4244. /* Configure Alternate function mapped with the current IO */
  4245. temp = GPIOx->AFR[position >> 3U];
  4246. 800239c: 69fb ldr r3, [r7, #28]
  4247. 800239e: 08da lsrs r2, r3, #3
  4248. 80023a0: 687b ldr r3, [r7, #4]
  4249. 80023a2: 3208 adds r2, #8
  4250. 80023a4: f853 3022 ldr.w r3, [r3, r2, lsl #2]
  4251. 80023a8: 61bb str r3, [r7, #24]
  4252. temp &= ~(0xFU << ((uint32_t)(position & 0x07U) * 4U)) ;
  4253. 80023aa: 69fb ldr r3, [r7, #28]
  4254. 80023ac: f003 0307 and.w r3, r3, #7
  4255. 80023b0: 009b lsls r3, r3, #2
  4256. 80023b2: 220f movs r2, #15
  4257. 80023b4: fa02 f303 lsl.w r3, r2, r3
  4258. 80023b8: 43db mvns r3, r3
  4259. 80023ba: 69ba ldr r2, [r7, #24]
  4260. 80023bc: 4013 ands r3, r2
  4261. 80023be: 61bb str r3, [r7, #24]
  4262. temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4U));
  4263. 80023c0: 683b ldr r3, [r7, #0]
  4264. 80023c2: 691a ldr r2, [r3, #16]
  4265. 80023c4: 69fb ldr r3, [r7, #28]
  4266. 80023c6: f003 0307 and.w r3, r3, #7
  4267. 80023ca: 009b lsls r3, r3, #2
  4268. 80023cc: fa02 f303 lsl.w r3, r2, r3
  4269. 80023d0: 69ba ldr r2, [r7, #24]
  4270. 80023d2: 4313 orrs r3, r2
  4271. 80023d4: 61bb str r3, [r7, #24]
  4272. GPIOx->AFR[position >> 3U] = temp;
  4273. 80023d6: 69fb ldr r3, [r7, #28]
  4274. 80023d8: 08da lsrs r2, r3, #3
  4275. 80023da: 687b ldr r3, [r7, #4]
  4276. 80023dc: 3208 adds r2, #8
  4277. 80023de: 69b9 ldr r1, [r7, #24]
  4278. 80023e0: f843 1022 str.w r1, [r3, r2, lsl #2]
  4279. }
  4280. /* Configure IO Direction mode (Input, Output, Alternate or Analog) */
  4281. temp = GPIOx->MODER;
  4282. 80023e4: 687b ldr r3, [r7, #4]
  4283. 80023e6: 681b ldr r3, [r3, #0]
  4284. 80023e8: 61bb str r3, [r7, #24]
  4285. temp &= ~(GPIO_MODER_MODER0 << (position * 2U));
  4286. 80023ea: 69fb ldr r3, [r7, #28]
  4287. 80023ec: 005b lsls r3, r3, #1
  4288. 80023ee: 2203 movs r2, #3
  4289. 80023f0: fa02 f303 lsl.w r3, r2, r3
  4290. 80023f4: 43db mvns r3, r3
  4291. 80023f6: 69ba ldr r2, [r7, #24]
  4292. 80023f8: 4013 ands r3, r2
  4293. 80023fa: 61bb str r3, [r7, #24]
  4294. temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U));
  4295. 80023fc: 683b ldr r3, [r7, #0]
  4296. 80023fe: 685b ldr r3, [r3, #4]
  4297. 8002400: f003 0203 and.w r2, r3, #3
  4298. 8002404: 69fb ldr r3, [r7, #28]
  4299. 8002406: 005b lsls r3, r3, #1
  4300. 8002408: fa02 f303 lsl.w r3, r2, r3
  4301. 800240c: 69ba ldr r2, [r7, #24]
  4302. 800240e: 4313 orrs r3, r2
  4303. 8002410: 61bb str r3, [r7, #24]
  4304. GPIOx->MODER = temp;
  4305. 8002412: 687b ldr r3, [r7, #4]
  4306. 8002414: 69ba ldr r2, [r7, #24]
  4307. 8002416: 601a str r2, [r3, #0]
  4308. /*--------------------- EXTI Mode Configuration ------------------------*/
  4309. /* Configure the External Interrupt or event for the current IO */
  4310. if((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)
  4311. 8002418: 683b ldr r3, [r7, #0]
  4312. 800241a: 685b ldr r3, [r3, #4]
  4313. 800241c: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  4314. 8002420: 2b00 cmp r3, #0
  4315. 8002422: f000 80a2 beq.w 800256a <HAL_GPIO_Init+0x2ca>
  4316. {
  4317. /* Enable SYSCFG Clock */
  4318. __HAL_RCC_SYSCFG_CLK_ENABLE();
  4319. 8002426: 2300 movs r3, #0
  4320. 8002428: 60fb str r3, [r7, #12]
  4321. 800242a: 4b56 ldr r3, [pc, #344] ; (8002584 <HAL_GPIO_Init+0x2e4>)
  4322. 800242c: 6c5b ldr r3, [r3, #68] ; 0x44
  4323. 800242e: 4a55 ldr r2, [pc, #340] ; (8002584 <HAL_GPIO_Init+0x2e4>)
  4324. 8002430: f443 4380 orr.w r3, r3, #16384 ; 0x4000
  4325. 8002434: 6453 str r3, [r2, #68] ; 0x44
  4326. 8002436: 4b53 ldr r3, [pc, #332] ; (8002584 <HAL_GPIO_Init+0x2e4>)
  4327. 8002438: 6c5b ldr r3, [r3, #68] ; 0x44
  4328. 800243a: f403 4380 and.w r3, r3, #16384 ; 0x4000
  4329. 800243e: 60fb str r3, [r7, #12]
  4330. 8002440: 68fb ldr r3, [r7, #12]
  4331. temp = SYSCFG->EXTICR[position >> 2U];
  4332. 8002442: 4a51 ldr r2, [pc, #324] ; (8002588 <HAL_GPIO_Init+0x2e8>)
  4333. 8002444: 69fb ldr r3, [r7, #28]
  4334. 8002446: 089b lsrs r3, r3, #2
  4335. 8002448: 3302 adds r3, #2
  4336. 800244a: f852 3023 ldr.w r3, [r2, r3, lsl #2]
  4337. 800244e: 61bb str r3, [r7, #24]
  4338. temp &= ~(0x0FU << (4U * (position & 0x03U)));
  4339. 8002450: 69fb ldr r3, [r7, #28]
  4340. 8002452: f003 0303 and.w r3, r3, #3
  4341. 8002456: 009b lsls r3, r3, #2
  4342. 8002458: 220f movs r2, #15
  4343. 800245a: fa02 f303 lsl.w r3, r2, r3
  4344. 800245e: 43db mvns r3, r3
  4345. 8002460: 69ba ldr r2, [r7, #24]
  4346. 8002462: 4013 ands r3, r2
  4347. 8002464: 61bb str r3, [r7, #24]
  4348. temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U)));
  4349. 8002466: 687b ldr r3, [r7, #4]
  4350. 8002468: 4a48 ldr r2, [pc, #288] ; (800258c <HAL_GPIO_Init+0x2ec>)
  4351. 800246a: 4293 cmp r3, r2
  4352. 800246c: d019 beq.n 80024a2 <HAL_GPIO_Init+0x202>
  4353. 800246e: 687b ldr r3, [r7, #4]
  4354. 8002470: 4a47 ldr r2, [pc, #284] ; (8002590 <HAL_GPIO_Init+0x2f0>)
  4355. 8002472: 4293 cmp r3, r2
  4356. 8002474: d013 beq.n 800249e <HAL_GPIO_Init+0x1fe>
  4357. 8002476: 687b ldr r3, [r7, #4]
  4358. 8002478: 4a46 ldr r2, [pc, #280] ; (8002594 <HAL_GPIO_Init+0x2f4>)
  4359. 800247a: 4293 cmp r3, r2
  4360. 800247c: d00d beq.n 800249a <HAL_GPIO_Init+0x1fa>
  4361. 800247e: 687b ldr r3, [r7, #4]
  4362. 8002480: 4a45 ldr r2, [pc, #276] ; (8002598 <HAL_GPIO_Init+0x2f8>)
  4363. 8002482: 4293 cmp r3, r2
  4364. 8002484: d007 beq.n 8002496 <HAL_GPIO_Init+0x1f6>
  4365. 8002486: 687b ldr r3, [r7, #4]
  4366. 8002488: 4a44 ldr r2, [pc, #272] ; (800259c <HAL_GPIO_Init+0x2fc>)
  4367. 800248a: 4293 cmp r3, r2
  4368. 800248c: d101 bne.n 8002492 <HAL_GPIO_Init+0x1f2>
  4369. 800248e: 2304 movs r3, #4
  4370. 8002490: e008 b.n 80024a4 <HAL_GPIO_Init+0x204>
  4371. 8002492: 2307 movs r3, #7
  4372. 8002494: e006 b.n 80024a4 <HAL_GPIO_Init+0x204>
  4373. 8002496: 2303 movs r3, #3
  4374. 8002498: e004 b.n 80024a4 <HAL_GPIO_Init+0x204>
  4375. 800249a: 2302 movs r3, #2
  4376. 800249c: e002 b.n 80024a4 <HAL_GPIO_Init+0x204>
  4377. 800249e: 2301 movs r3, #1
  4378. 80024a0: e000 b.n 80024a4 <HAL_GPIO_Init+0x204>
  4379. 80024a2: 2300 movs r3, #0
  4380. 80024a4: 69fa ldr r2, [r7, #28]
  4381. 80024a6: f002 0203 and.w r2, r2, #3
  4382. 80024aa: 0092 lsls r2, r2, #2
  4383. 80024ac: 4093 lsls r3, r2
  4384. 80024ae: 69ba ldr r2, [r7, #24]
  4385. 80024b0: 4313 orrs r3, r2
  4386. 80024b2: 61bb str r3, [r7, #24]
  4387. SYSCFG->EXTICR[position >> 2U] = temp;
  4388. 80024b4: 4934 ldr r1, [pc, #208] ; (8002588 <HAL_GPIO_Init+0x2e8>)
  4389. 80024b6: 69fb ldr r3, [r7, #28]
  4390. 80024b8: 089b lsrs r3, r3, #2
  4391. 80024ba: 3302 adds r3, #2
  4392. 80024bc: 69ba ldr r2, [r7, #24]
  4393. 80024be: f841 2023 str.w r2, [r1, r3, lsl #2]
  4394. /* Clear EXTI line configuration */
  4395. temp = EXTI->IMR;
  4396. 80024c2: 4b37 ldr r3, [pc, #220] ; (80025a0 <HAL_GPIO_Init+0x300>)
  4397. 80024c4: 681b ldr r3, [r3, #0]
  4398. 80024c6: 61bb str r3, [r7, #24]
  4399. temp &= ~((uint32_t)iocurrent);
  4400. 80024c8: 693b ldr r3, [r7, #16]
  4401. 80024ca: 43db mvns r3, r3
  4402. 80024cc: 69ba ldr r2, [r7, #24]
  4403. 80024ce: 4013 ands r3, r2
  4404. 80024d0: 61bb str r3, [r7, #24]
  4405. if((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT)
  4406. 80024d2: 683b ldr r3, [r7, #0]
  4407. 80024d4: 685b ldr r3, [r3, #4]
  4408. 80024d6: f403 3380 and.w r3, r3, #65536 ; 0x10000
  4409. 80024da: 2b00 cmp r3, #0
  4410. 80024dc: d003 beq.n 80024e6 <HAL_GPIO_Init+0x246>
  4411. {
  4412. temp |= iocurrent;
  4413. 80024de: 69ba ldr r2, [r7, #24]
  4414. 80024e0: 693b ldr r3, [r7, #16]
  4415. 80024e2: 4313 orrs r3, r2
  4416. 80024e4: 61bb str r3, [r7, #24]
  4417. }
  4418. EXTI->IMR = temp;
  4419. 80024e6: 4a2e ldr r2, [pc, #184] ; (80025a0 <HAL_GPIO_Init+0x300>)
  4420. 80024e8: 69bb ldr r3, [r7, #24]
  4421. 80024ea: 6013 str r3, [r2, #0]
  4422. temp = EXTI->EMR;
  4423. 80024ec: 4b2c ldr r3, [pc, #176] ; (80025a0 <HAL_GPIO_Init+0x300>)
  4424. 80024ee: 685b ldr r3, [r3, #4]
  4425. 80024f0: 61bb str r3, [r7, #24]
  4426. temp &= ~((uint32_t)iocurrent);
  4427. 80024f2: 693b ldr r3, [r7, #16]
  4428. 80024f4: 43db mvns r3, r3
  4429. 80024f6: 69ba ldr r2, [r7, #24]
  4430. 80024f8: 4013 ands r3, r2
  4431. 80024fa: 61bb str r3, [r7, #24]
  4432. if((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT)
  4433. 80024fc: 683b ldr r3, [r7, #0]
  4434. 80024fe: 685b ldr r3, [r3, #4]
  4435. 8002500: f403 3300 and.w r3, r3, #131072 ; 0x20000
  4436. 8002504: 2b00 cmp r3, #0
  4437. 8002506: d003 beq.n 8002510 <HAL_GPIO_Init+0x270>
  4438. {
  4439. temp |= iocurrent;
  4440. 8002508: 69ba ldr r2, [r7, #24]
  4441. 800250a: 693b ldr r3, [r7, #16]
  4442. 800250c: 4313 orrs r3, r2
  4443. 800250e: 61bb str r3, [r7, #24]
  4444. }
  4445. EXTI->EMR = temp;
  4446. 8002510: 4a23 ldr r2, [pc, #140] ; (80025a0 <HAL_GPIO_Init+0x300>)
  4447. 8002512: 69bb ldr r3, [r7, #24]
  4448. 8002514: 6053 str r3, [r2, #4]
  4449. /* Clear Rising Falling edge configuration */
  4450. temp = EXTI->RTSR;
  4451. 8002516: 4b22 ldr r3, [pc, #136] ; (80025a0 <HAL_GPIO_Init+0x300>)
  4452. 8002518: 689b ldr r3, [r3, #8]
  4453. 800251a: 61bb str r3, [r7, #24]
  4454. temp &= ~((uint32_t)iocurrent);
  4455. 800251c: 693b ldr r3, [r7, #16]
  4456. 800251e: 43db mvns r3, r3
  4457. 8002520: 69ba ldr r2, [r7, #24]
  4458. 8002522: 4013 ands r3, r2
  4459. 8002524: 61bb str r3, [r7, #24]
  4460. if((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE)
  4461. 8002526: 683b ldr r3, [r7, #0]
  4462. 8002528: 685b ldr r3, [r3, #4]
  4463. 800252a: f403 1380 and.w r3, r3, #1048576 ; 0x100000
  4464. 800252e: 2b00 cmp r3, #0
  4465. 8002530: d003 beq.n 800253a <HAL_GPIO_Init+0x29a>
  4466. {
  4467. temp |= iocurrent;
  4468. 8002532: 69ba ldr r2, [r7, #24]
  4469. 8002534: 693b ldr r3, [r7, #16]
  4470. 8002536: 4313 orrs r3, r2
  4471. 8002538: 61bb str r3, [r7, #24]
  4472. }
  4473. EXTI->RTSR = temp;
  4474. 800253a: 4a19 ldr r2, [pc, #100] ; (80025a0 <HAL_GPIO_Init+0x300>)
  4475. 800253c: 69bb ldr r3, [r7, #24]
  4476. 800253e: 6093 str r3, [r2, #8]
  4477. temp = EXTI->FTSR;
  4478. 8002540: 4b17 ldr r3, [pc, #92] ; (80025a0 <HAL_GPIO_Init+0x300>)
  4479. 8002542: 68db ldr r3, [r3, #12]
  4480. 8002544: 61bb str r3, [r7, #24]
  4481. temp &= ~((uint32_t)iocurrent);
  4482. 8002546: 693b ldr r3, [r7, #16]
  4483. 8002548: 43db mvns r3, r3
  4484. 800254a: 69ba ldr r2, [r7, #24]
  4485. 800254c: 4013 ands r3, r2
  4486. 800254e: 61bb str r3, [r7, #24]
  4487. if((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE)
  4488. 8002550: 683b ldr r3, [r7, #0]
  4489. 8002552: 685b ldr r3, [r3, #4]
  4490. 8002554: f403 1300 and.w r3, r3, #2097152 ; 0x200000
  4491. 8002558: 2b00 cmp r3, #0
  4492. 800255a: d003 beq.n 8002564 <HAL_GPIO_Init+0x2c4>
  4493. {
  4494. temp |= iocurrent;
  4495. 800255c: 69ba ldr r2, [r7, #24]
  4496. 800255e: 693b ldr r3, [r7, #16]
  4497. 8002560: 4313 orrs r3, r2
  4498. 8002562: 61bb str r3, [r7, #24]
  4499. }
  4500. EXTI->FTSR = temp;
  4501. 8002564: 4a0e ldr r2, [pc, #56] ; (80025a0 <HAL_GPIO_Init+0x300>)
  4502. 8002566: 69bb ldr r3, [r7, #24]
  4503. 8002568: 60d3 str r3, [r2, #12]
  4504. for(position = 0U; position < GPIO_NUMBER; position++)
  4505. 800256a: 69fb ldr r3, [r7, #28]
  4506. 800256c: 3301 adds r3, #1
  4507. 800256e: 61fb str r3, [r7, #28]
  4508. 8002570: 69fb ldr r3, [r7, #28]
  4509. 8002572: 2b0f cmp r3, #15
  4510. 8002574: f67f aea2 bls.w 80022bc <HAL_GPIO_Init+0x1c>
  4511. }
  4512. }
  4513. }
  4514. }
  4515. 8002578: bf00 nop
  4516. 800257a: 3724 adds r7, #36 ; 0x24
  4517. 800257c: 46bd mov sp, r7
  4518. 800257e: f85d 7b04 ldr.w r7, [sp], #4
  4519. 8002582: 4770 bx lr
  4520. 8002584: 40023800 .word 0x40023800
  4521. 8002588: 40013800 .word 0x40013800
  4522. 800258c: 40020000 .word 0x40020000
  4523. 8002590: 40020400 .word 0x40020400
  4524. 8002594: 40020800 .word 0x40020800
  4525. 8002598: 40020c00 .word 0x40020c00
  4526. 800259c: 40021000 .word 0x40021000
  4527. 80025a0: 40013c00 .word 0x40013c00
  4528. 080025a4 <HAL_GPIO_WritePin>:
  4529. * @arg GPIO_PIN_RESET: to clear the port pin
  4530. * @arg GPIO_PIN_SET: to set the port pin
  4531. * @retval None
  4532. */
  4533. void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
  4534. {
  4535. 80025a4: b480 push {r7}
  4536. 80025a6: b083 sub sp, #12
  4537. 80025a8: af00 add r7, sp, #0
  4538. 80025aa: 6078 str r0, [r7, #4]
  4539. 80025ac: 460b mov r3, r1
  4540. 80025ae: 807b strh r3, [r7, #2]
  4541. 80025b0: 4613 mov r3, r2
  4542. 80025b2: 707b strb r3, [r7, #1]
  4543. /* Check the parameters */
  4544. assert_param(IS_GPIO_PIN(GPIO_Pin));
  4545. assert_param(IS_GPIO_PIN_ACTION(PinState));
  4546. if(PinState != GPIO_PIN_RESET)
  4547. 80025b4: 787b ldrb r3, [r7, #1]
  4548. 80025b6: 2b00 cmp r3, #0
  4549. 80025b8: d003 beq.n 80025c2 <HAL_GPIO_WritePin+0x1e>
  4550. {
  4551. GPIOx->BSRR = GPIO_Pin;
  4552. 80025ba: 887a ldrh r2, [r7, #2]
  4553. 80025bc: 687b ldr r3, [r7, #4]
  4554. 80025be: 619a str r2, [r3, #24]
  4555. }
  4556. else
  4557. {
  4558. GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U;
  4559. }
  4560. }
  4561. 80025c0: e003 b.n 80025ca <HAL_GPIO_WritePin+0x26>
  4562. GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U;
  4563. 80025c2: 887b ldrh r3, [r7, #2]
  4564. 80025c4: 041a lsls r2, r3, #16
  4565. 80025c6: 687b ldr r3, [r7, #4]
  4566. 80025c8: 619a str r2, [r3, #24]
  4567. }
  4568. 80025ca: bf00 nop
  4569. 80025cc: 370c adds r7, #12
  4570. 80025ce: 46bd mov sp, r7
  4571. 80025d0: f85d 7b04 ldr.w r7, [sp], #4
  4572. 80025d4: 4770 bx lr
  4573. ...
  4574. 080025d8 <HAL_PWR_EnterSLEEPMode>:
  4575. * @arg PWR_SLEEPENTRY_WFI: enter SLEEP mode with WFI instruction
  4576. * @arg PWR_SLEEPENTRY_WFE: enter SLEEP mode with WFE instruction
  4577. * @retval None
  4578. */
  4579. void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry)
  4580. {
  4581. 80025d8: b480 push {r7}
  4582. 80025da: b083 sub sp, #12
  4583. 80025dc: af00 add r7, sp, #0
  4584. 80025de: 6078 str r0, [r7, #4]
  4585. 80025e0: 460b mov r3, r1
  4586. 80025e2: 70fb strb r3, [r7, #3]
  4587. /* Check the parameters */
  4588. assert_param(IS_PWR_REGULATOR(Regulator));
  4589. assert_param(IS_PWR_SLEEP_ENTRY(SLEEPEntry));
  4590. /* Clear SLEEPDEEP bit of Cortex System Control Register */
  4591. CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk));
  4592. 80025e4: 4b09 ldr r3, [pc, #36] ; (800260c <HAL_PWR_EnterSLEEPMode+0x34>)
  4593. 80025e6: 691b ldr r3, [r3, #16]
  4594. 80025e8: 4a08 ldr r2, [pc, #32] ; (800260c <HAL_PWR_EnterSLEEPMode+0x34>)
  4595. 80025ea: f023 0304 bic.w r3, r3, #4
  4596. 80025ee: 6113 str r3, [r2, #16]
  4597. /* Select SLEEP mode entry -------------------------------------------------*/
  4598. if(SLEEPEntry == PWR_SLEEPENTRY_WFI)
  4599. 80025f0: 78fb ldrb r3, [r7, #3]
  4600. 80025f2: 2b01 cmp r3, #1
  4601. 80025f4: d101 bne.n 80025fa <HAL_PWR_EnterSLEEPMode+0x22>
  4602. {
  4603. /* Request Wait For Interrupt */
  4604. __WFI();
  4605. 80025f6: bf30 wfi
  4606. /* Request Wait For Event */
  4607. __SEV();
  4608. __WFE();
  4609. __WFE();
  4610. }
  4611. }
  4612. 80025f8: e002 b.n 8002600 <HAL_PWR_EnterSLEEPMode+0x28>
  4613. __SEV();
  4614. 80025fa: bf40 sev
  4615. __WFE();
  4616. 80025fc: bf20 wfe
  4617. __WFE();
  4618. 80025fe: bf20 wfe
  4619. }
  4620. 8002600: bf00 nop
  4621. 8002602: 370c adds r7, #12
  4622. 8002604: 46bd mov sp, r7
  4623. 8002606: f85d 7b04 ldr.w r7, [sp], #4
  4624. 800260a: 4770 bx lr
  4625. 800260c: e000ed00 .word 0xe000ed00
  4626. 08002610 <HAL_RCC_OscConfig>:
  4627. * supported by this API. User should request a transition to HSE Off
  4628. * first and then HSE On or HSE Bypass.
  4629. * @retval HAL status
  4630. */
  4631. __weak HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
  4632. {
  4633. 8002610: b580 push {r7, lr}
  4634. 8002612: b086 sub sp, #24
  4635. 8002614: af00 add r7, sp, #0
  4636. 8002616: 6078 str r0, [r7, #4]
  4637. uint32_t tickstart, pll_config;
  4638. /* Check Null pointer */
  4639. if(RCC_OscInitStruct == NULL)
  4640. 8002618: 687b ldr r3, [r7, #4]
  4641. 800261a: 2b00 cmp r3, #0
  4642. 800261c: d101 bne.n 8002622 <HAL_RCC_OscConfig+0x12>
  4643. {
  4644. return HAL_ERROR;
  4645. 800261e: 2301 movs r3, #1
  4646. 8002620: e25b b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  4647. }
  4648. /* Check the parameters */
  4649. assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));
  4650. /*------------------------------- HSE Configuration ------------------------*/
  4651. if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
  4652. 8002622: 687b ldr r3, [r7, #4]
  4653. 8002624: 681b ldr r3, [r3, #0]
  4654. 8002626: f003 0301 and.w r3, r3, #1
  4655. 800262a: 2b00 cmp r3, #0
  4656. 800262c: d075 beq.n 800271a <HAL_RCC_OscConfig+0x10a>
  4657. {
  4658. /* Check the parameters */
  4659. assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
  4660. /* When the HSE is used as system clock or clock source for PLL in these cases HSE will not disabled */
  4661. if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSE) ||\
  4662. 800262e: 4ba3 ldr r3, [pc, #652] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4663. 8002630: 689b ldr r3, [r3, #8]
  4664. 8002632: f003 030c and.w r3, r3, #12
  4665. 8002636: 2b04 cmp r3, #4
  4666. 8002638: d00c beq.n 8002654 <HAL_RCC_OscConfig+0x44>
  4667. ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE)))
  4668. 800263a: 4ba0 ldr r3, [pc, #640] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4669. 800263c: 689b ldr r3, [r3, #8]
  4670. 800263e: f003 030c and.w r3, r3, #12
  4671. if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSE) ||\
  4672. 8002642: 2b08 cmp r3, #8
  4673. 8002644: d112 bne.n 800266c <HAL_RCC_OscConfig+0x5c>
  4674. ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE)))
  4675. 8002646: 4b9d ldr r3, [pc, #628] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4676. 8002648: 685b ldr r3, [r3, #4]
  4677. 800264a: f403 0380 and.w r3, r3, #4194304 ; 0x400000
  4678. 800264e: f5b3 0f80 cmp.w r3, #4194304 ; 0x400000
  4679. 8002652: d10b bne.n 800266c <HAL_RCC_OscConfig+0x5c>
  4680. {
  4681. if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
  4682. 8002654: 4b99 ldr r3, [pc, #612] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4683. 8002656: 681b ldr r3, [r3, #0]
  4684. 8002658: f403 3300 and.w r3, r3, #131072 ; 0x20000
  4685. 800265c: 2b00 cmp r3, #0
  4686. 800265e: d05b beq.n 8002718 <HAL_RCC_OscConfig+0x108>
  4687. 8002660: 687b ldr r3, [r7, #4]
  4688. 8002662: 685b ldr r3, [r3, #4]
  4689. 8002664: 2b00 cmp r3, #0
  4690. 8002666: d157 bne.n 8002718 <HAL_RCC_OscConfig+0x108>
  4691. {
  4692. return HAL_ERROR;
  4693. 8002668: 2301 movs r3, #1
  4694. 800266a: e236 b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  4695. }
  4696. }
  4697. else
  4698. {
  4699. /* Set the new HSE configuration ---------------------------------------*/
  4700. __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
  4701. 800266c: 687b ldr r3, [r7, #4]
  4702. 800266e: 685b ldr r3, [r3, #4]
  4703. 8002670: f5b3 3f80 cmp.w r3, #65536 ; 0x10000
  4704. 8002674: d106 bne.n 8002684 <HAL_RCC_OscConfig+0x74>
  4705. 8002676: 4b91 ldr r3, [pc, #580] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4706. 8002678: 681b ldr r3, [r3, #0]
  4707. 800267a: 4a90 ldr r2, [pc, #576] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4708. 800267c: f443 3380 orr.w r3, r3, #65536 ; 0x10000
  4709. 8002680: 6013 str r3, [r2, #0]
  4710. 8002682: e01d b.n 80026c0 <HAL_RCC_OscConfig+0xb0>
  4711. 8002684: 687b ldr r3, [r7, #4]
  4712. 8002686: 685b ldr r3, [r3, #4]
  4713. 8002688: f5b3 2fa0 cmp.w r3, #327680 ; 0x50000
  4714. 800268c: d10c bne.n 80026a8 <HAL_RCC_OscConfig+0x98>
  4715. 800268e: 4b8b ldr r3, [pc, #556] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4716. 8002690: 681b ldr r3, [r3, #0]
  4717. 8002692: 4a8a ldr r2, [pc, #552] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4718. 8002694: f443 2380 orr.w r3, r3, #262144 ; 0x40000
  4719. 8002698: 6013 str r3, [r2, #0]
  4720. 800269a: 4b88 ldr r3, [pc, #544] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4721. 800269c: 681b ldr r3, [r3, #0]
  4722. 800269e: 4a87 ldr r2, [pc, #540] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4723. 80026a0: f443 3380 orr.w r3, r3, #65536 ; 0x10000
  4724. 80026a4: 6013 str r3, [r2, #0]
  4725. 80026a6: e00b b.n 80026c0 <HAL_RCC_OscConfig+0xb0>
  4726. 80026a8: 4b84 ldr r3, [pc, #528] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4727. 80026aa: 681b ldr r3, [r3, #0]
  4728. 80026ac: 4a83 ldr r2, [pc, #524] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4729. 80026ae: f423 3380 bic.w r3, r3, #65536 ; 0x10000
  4730. 80026b2: 6013 str r3, [r2, #0]
  4731. 80026b4: 4b81 ldr r3, [pc, #516] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4732. 80026b6: 681b ldr r3, [r3, #0]
  4733. 80026b8: 4a80 ldr r2, [pc, #512] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4734. 80026ba: f423 2380 bic.w r3, r3, #262144 ; 0x40000
  4735. 80026be: 6013 str r3, [r2, #0]
  4736. /* Check the HSE State */
  4737. if((RCC_OscInitStruct->HSEState) != RCC_HSE_OFF)
  4738. 80026c0: 687b ldr r3, [r7, #4]
  4739. 80026c2: 685b ldr r3, [r3, #4]
  4740. 80026c4: 2b00 cmp r3, #0
  4741. 80026c6: d013 beq.n 80026f0 <HAL_RCC_OscConfig+0xe0>
  4742. {
  4743. /* Get Start Tick */
  4744. tickstart = HAL_GetTick();
  4745. 80026c8: f7ff fc8a bl 8001fe0 <HAL_GetTick>
  4746. 80026cc: 6138 str r0, [r7, #16]
  4747. /* Wait till HSE is ready */
  4748. while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
  4749. 80026ce: e008 b.n 80026e2 <HAL_RCC_OscConfig+0xd2>
  4750. {
  4751. if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
  4752. 80026d0: f7ff fc86 bl 8001fe0 <HAL_GetTick>
  4753. 80026d4: 4602 mov r2, r0
  4754. 80026d6: 693b ldr r3, [r7, #16]
  4755. 80026d8: 1ad3 subs r3, r2, r3
  4756. 80026da: 2b64 cmp r3, #100 ; 0x64
  4757. 80026dc: d901 bls.n 80026e2 <HAL_RCC_OscConfig+0xd2>
  4758. {
  4759. return HAL_TIMEOUT;
  4760. 80026de: 2303 movs r3, #3
  4761. 80026e0: e1fb b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  4762. while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
  4763. 80026e2: 4b76 ldr r3, [pc, #472] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4764. 80026e4: 681b ldr r3, [r3, #0]
  4765. 80026e6: f403 3300 and.w r3, r3, #131072 ; 0x20000
  4766. 80026ea: 2b00 cmp r3, #0
  4767. 80026ec: d0f0 beq.n 80026d0 <HAL_RCC_OscConfig+0xc0>
  4768. 80026ee: e014 b.n 800271a <HAL_RCC_OscConfig+0x10a>
  4769. }
  4770. }
  4771. else
  4772. {
  4773. /* Get Start Tick */
  4774. tickstart = HAL_GetTick();
  4775. 80026f0: f7ff fc76 bl 8001fe0 <HAL_GetTick>
  4776. 80026f4: 6138 str r0, [r7, #16]
  4777. /* Wait till HSE is bypassed or disabled */
  4778. while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
  4779. 80026f6: e008 b.n 800270a <HAL_RCC_OscConfig+0xfa>
  4780. {
  4781. if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
  4782. 80026f8: f7ff fc72 bl 8001fe0 <HAL_GetTick>
  4783. 80026fc: 4602 mov r2, r0
  4784. 80026fe: 693b ldr r3, [r7, #16]
  4785. 8002700: 1ad3 subs r3, r2, r3
  4786. 8002702: 2b64 cmp r3, #100 ; 0x64
  4787. 8002704: d901 bls.n 800270a <HAL_RCC_OscConfig+0xfa>
  4788. {
  4789. return HAL_TIMEOUT;
  4790. 8002706: 2303 movs r3, #3
  4791. 8002708: e1e7 b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  4792. while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
  4793. 800270a: 4b6c ldr r3, [pc, #432] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4794. 800270c: 681b ldr r3, [r3, #0]
  4795. 800270e: f403 3300 and.w r3, r3, #131072 ; 0x20000
  4796. 8002712: 2b00 cmp r3, #0
  4797. 8002714: d1f0 bne.n 80026f8 <HAL_RCC_OscConfig+0xe8>
  4798. 8002716: e000 b.n 800271a <HAL_RCC_OscConfig+0x10a>
  4799. if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
  4800. 8002718: bf00 nop
  4801. }
  4802. }
  4803. }
  4804. }
  4805. /*----------------------------- HSI Configuration --------------------------*/
  4806. if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
  4807. 800271a: 687b ldr r3, [r7, #4]
  4808. 800271c: 681b ldr r3, [r3, #0]
  4809. 800271e: f003 0302 and.w r3, r3, #2
  4810. 8002722: 2b00 cmp r3, #0
  4811. 8002724: d063 beq.n 80027ee <HAL_RCC_OscConfig+0x1de>
  4812. /* Check the parameters */
  4813. assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));
  4814. assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));
  4815. /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */
  4816. if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSI) ||\
  4817. 8002726: 4b65 ldr r3, [pc, #404] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4818. 8002728: 689b ldr r3, [r3, #8]
  4819. 800272a: f003 030c and.w r3, r3, #12
  4820. 800272e: 2b00 cmp r3, #0
  4821. 8002730: d00b beq.n 800274a <HAL_RCC_OscConfig+0x13a>
  4822. ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI)))
  4823. 8002732: 4b62 ldr r3, [pc, #392] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4824. 8002734: 689b ldr r3, [r3, #8]
  4825. 8002736: f003 030c and.w r3, r3, #12
  4826. if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSI) ||\
  4827. 800273a: 2b08 cmp r3, #8
  4828. 800273c: d11c bne.n 8002778 <HAL_RCC_OscConfig+0x168>
  4829. ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI)))
  4830. 800273e: 4b5f ldr r3, [pc, #380] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4831. 8002740: 685b ldr r3, [r3, #4]
  4832. 8002742: f403 0380 and.w r3, r3, #4194304 ; 0x400000
  4833. 8002746: 2b00 cmp r3, #0
  4834. 8002748: d116 bne.n 8002778 <HAL_RCC_OscConfig+0x168>
  4835. {
  4836. /* When HSI is used as system clock it will not disabled */
  4837. if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
  4838. 800274a: 4b5c ldr r3, [pc, #368] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4839. 800274c: 681b ldr r3, [r3, #0]
  4840. 800274e: f003 0302 and.w r3, r3, #2
  4841. 8002752: 2b00 cmp r3, #0
  4842. 8002754: d005 beq.n 8002762 <HAL_RCC_OscConfig+0x152>
  4843. 8002756: 687b ldr r3, [r7, #4]
  4844. 8002758: 68db ldr r3, [r3, #12]
  4845. 800275a: 2b01 cmp r3, #1
  4846. 800275c: d001 beq.n 8002762 <HAL_RCC_OscConfig+0x152>
  4847. {
  4848. return HAL_ERROR;
  4849. 800275e: 2301 movs r3, #1
  4850. 8002760: e1bb b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  4851. }
  4852. /* Otherwise, just the calibration is allowed */
  4853. else
  4854. {
  4855. /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
  4856. __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
  4857. 8002762: 4b56 ldr r3, [pc, #344] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4858. 8002764: 681b ldr r3, [r3, #0]
  4859. 8002766: f023 02f8 bic.w r2, r3, #248 ; 0xf8
  4860. 800276a: 687b ldr r3, [r7, #4]
  4861. 800276c: 691b ldr r3, [r3, #16]
  4862. 800276e: 00db lsls r3, r3, #3
  4863. 8002770: 4952 ldr r1, [pc, #328] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4864. 8002772: 4313 orrs r3, r2
  4865. 8002774: 600b str r3, [r1, #0]
  4866. if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
  4867. 8002776: e03a b.n 80027ee <HAL_RCC_OscConfig+0x1de>
  4868. }
  4869. }
  4870. else
  4871. {
  4872. /* Check the HSI State */
  4873. if((RCC_OscInitStruct->HSIState)!= RCC_HSI_OFF)
  4874. 8002778: 687b ldr r3, [r7, #4]
  4875. 800277a: 68db ldr r3, [r3, #12]
  4876. 800277c: 2b00 cmp r3, #0
  4877. 800277e: d020 beq.n 80027c2 <HAL_RCC_OscConfig+0x1b2>
  4878. {
  4879. /* Enable the Internal High Speed oscillator (HSI). */
  4880. __HAL_RCC_HSI_ENABLE();
  4881. 8002780: 4b4f ldr r3, [pc, #316] ; (80028c0 <HAL_RCC_OscConfig+0x2b0>)
  4882. 8002782: 2201 movs r2, #1
  4883. 8002784: 601a str r2, [r3, #0]
  4884. /* Get Start Tick*/
  4885. tickstart = HAL_GetTick();
  4886. 8002786: f7ff fc2b bl 8001fe0 <HAL_GetTick>
  4887. 800278a: 6138 str r0, [r7, #16]
  4888. /* Wait till HSI is ready */
  4889. while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
  4890. 800278c: e008 b.n 80027a0 <HAL_RCC_OscConfig+0x190>
  4891. {
  4892. if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
  4893. 800278e: f7ff fc27 bl 8001fe0 <HAL_GetTick>
  4894. 8002792: 4602 mov r2, r0
  4895. 8002794: 693b ldr r3, [r7, #16]
  4896. 8002796: 1ad3 subs r3, r2, r3
  4897. 8002798: 2b02 cmp r3, #2
  4898. 800279a: d901 bls.n 80027a0 <HAL_RCC_OscConfig+0x190>
  4899. {
  4900. return HAL_TIMEOUT;
  4901. 800279c: 2303 movs r3, #3
  4902. 800279e: e19c b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  4903. while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
  4904. 80027a0: 4b46 ldr r3, [pc, #280] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4905. 80027a2: 681b ldr r3, [r3, #0]
  4906. 80027a4: f003 0302 and.w r3, r3, #2
  4907. 80027a8: 2b00 cmp r3, #0
  4908. 80027aa: d0f0 beq.n 800278e <HAL_RCC_OscConfig+0x17e>
  4909. }
  4910. }
  4911. /* Adjusts the Internal High Speed oscillator (HSI) calibration value. */
  4912. __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
  4913. 80027ac: 4b43 ldr r3, [pc, #268] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4914. 80027ae: 681b ldr r3, [r3, #0]
  4915. 80027b0: f023 02f8 bic.w r2, r3, #248 ; 0xf8
  4916. 80027b4: 687b ldr r3, [r7, #4]
  4917. 80027b6: 691b ldr r3, [r3, #16]
  4918. 80027b8: 00db lsls r3, r3, #3
  4919. 80027ba: 4940 ldr r1, [pc, #256] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4920. 80027bc: 4313 orrs r3, r2
  4921. 80027be: 600b str r3, [r1, #0]
  4922. 80027c0: e015 b.n 80027ee <HAL_RCC_OscConfig+0x1de>
  4923. }
  4924. else
  4925. {
  4926. /* Disable the Internal High Speed oscillator (HSI). */
  4927. __HAL_RCC_HSI_DISABLE();
  4928. 80027c2: 4b3f ldr r3, [pc, #252] ; (80028c0 <HAL_RCC_OscConfig+0x2b0>)
  4929. 80027c4: 2200 movs r2, #0
  4930. 80027c6: 601a str r2, [r3, #0]
  4931. /* Get Start Tick*/
  4932. tickstart = HAL_GetTick();
  4933. 80027c8: f7ff fc0a bl 8001fe0 <HAL_GetTick>
  4934. 80027cc: 6138 str r0, [r7, #16]
  4935. /* Wait till HSI is ready */
  4936. while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
  4937. 80027ce: e008 b.n 80027e2 <HAL_RCC_OscConfig+0x1d2>
  4938. {
  4939. if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
  4940. 80027d0: f7ff fc06 bl 8001fe0 <HAL_GetTick>
  4941. 80027d4: 4602 mov r2, r0
  4942. 80027d6: 693b ldr r3, [r7, #16]
  4943. 80027d8: 1ad3 subs r3, r2, r3
  4944. 80027da: 2b02 cmp r3, #2
  4945. 80027dc: d901 bls.n 80027e2 <HAL_RCC_OscConfig+0x1d2>
  4946. {
  4947. return HAL_TIMEOUT;
  4948. 80027de: 2303 movs r3, #3
  4949. 80027e0: e17b b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  4950. while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
  4951. 80027e2: 4b36 ldr r3, [pc, #216] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  4952. 80027e4: 681b ldr r3, [r3, #0]
  4953. 80027e6: f003 0302 and.w r3, r3, #2
  4954. 80027ea: 2b00 cmp r3, #0
  4955. 80027ec: d1f0 bne.n 80027d0 <HAL_RCC_OscConfig+0x1c0>
  4956. }
  4957. }
  4958. }
  4959. }
  4960. /*------------------------------ LSI Configuration -------------------------*/
  4961. if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
  4962. 80027ee: 687b ldr r3, [r7, #4]
  4963. 80027f0: 681b ldr r3, [r3, #0]
  4964. 80027f2: f003 0308 and.w r3, r3, #8
  4965. 80027f6: 2b00 cmp r3, #0
  4966. 80027f8: d030 beq.n 800285c <HAL_RCC_OscConfig+0x24c>
  4967. {
  4968. /* Check the parameters */
  4969. assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));
  4970. /* Check the LSI State */
  4971. if((RCC_OscInitStruct->LSIState)!= RCC_LSI_OFF)
  4972. 80027fa: 687b ldr r3, [r7, #4]
  4973. 80027fc: 695b ldr r3, [r3, #20]
  4974. 80027fe: 2b00 cmp r3, #0
  4975. 8002800: d016 beq.n 8002830 <HAL_RCC_OscConfig+0x220>
  4976. {
  4977. /* Enable the Internal Low Speed oscillator (LSI). */
  4978. __HAL_RCC_LSI_ENABLE();
  4979. 8002802: 4b30 ldr r3, [pc, #192] ; (80028c4 <HAL_RCC_OscConfig+0x2b4>)
  4980. 8002804: 2201 movs r2, #1
  4981. 8002806: 601a str r2, [r3, #0]
  4982. /* Get Start Tick*/
  4983. tickstart = HAL_GetTick();
  4984. 8002808: f7ff fbea bl 8001fe0 <HAL_GetTick>
  4985. 800280c: 6138 str r0, [r7, #16]
  4986. /* Wait till LSI is ready */
  4987. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
  4988. 800280e: e008 b.n 8002822 <HAL_RCC_OscConfig+0x212>
  4989. {
  4990. if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
  4991. 8002810: f7ff fbe6 bl 8001fe0 <HAL_GetTick>
  4992. 8002814: 4602 mov r2, r0
  4993. 8002816: 693b ldr r3, [r7, #16]
  4994. 8002818: 1ad3 subs r3, r2, r3
  4995. 800281a: 2b02 cmp r3, #2
  4996. 800281c: d901 bls.n 8002822 <HAL_RCC_OscConfig+0x212>
  4997. {
  4998. return HAL_TIMEOUT;
  4999. 800281e: 2303 movs r3, #3
  5000. 8002820: e15b b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  5001. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
  5002. 8002822: 4b26 ldr r3, [pc, #152] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  5003. 8002824: 6f5b ldr r3, [r3, #116] ; 0x74
  5004. 8002826: f003 0302 and.w r3, r3, #2
  5005. 800282a: 2b00 cmp r3, #0
  5006. 800282c: d0f0 beq.n 8002810 <HAL_RCC_OscConfig+0x200>
  5007. 800282e: e015 b.n 800285c <HAL_RCC_OscConfig+0x24c>
  5008. }
  5009. }
  5010. else
  5011. {
  5012. /* Disable the Internal Low Speed oscillator (LSI). */
  5013. __HAL_RCC_LSI_DISABLE();
  5014. 8002830: 4b24 ldr r3, [pc, #144] ; (80028c4 <HAL_RCC_OscConfig+0x2b4>)
  5015. 8002832: 2200 movs r2, #0
  5016. 8002834: 601a str r2, [r3, #0]
  5017. /* Get Start Tick */
  5018. tickstart = HAL_GetTick();
  5019. 8002836: f7ff fbd3 bl 8001fe0 <HAL_GetTick>
  5020. 800283a: 6138 str r0, [r7, #16]
  5021. /* Wait till LSI is ready */
  5022. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
  5023. 800283c: e008 b.n 8002850 <HAL_RCC_OscConfig+0x240>
  5024. {
  5025. if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
  5026. 800283e: f7ff fbcf bl 8001fe0 <HAL_GetTick>
  5027. 8002842: 4602 mov r2, r0
  5028. 8002844: 693b ldr r3, [r7, #16]
  5029. 8002846: 1ad3 subs r3, r2, r3
  5030. 8002848: 2b02 cmp r3, #2
  5031. 800284a: d901 bls.n 8002850 <HAL_RCC_OscConfig+0x240>
  5032. {
  5033. return HAL_TIMEOUT;
  5034. 800284c: 2303 movs r3, #3
  5035. 800284e: e144 b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  5036. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
  5037. 8002850: 4b1a ldr r3, [pc, #104] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  5038. 8002852: 6f5b ldr r3, [r3, #116] ; 0x74
  5039. 8002854: f003 0302 and.w r3, r3, #2
  5040. 8002858: 2b00 cmp r3, #0
  5041. 800285a: d1f0 bne.n 800283e <HAL_RCC_OscConfig+0x22e>
  5042. }
  5043. }
  5044. }
  5045. }
  5046. /*------------------------------ LSE Configuration -------------------------*/
  5047. if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
  5048. 800285c: 687b ldr r3, [r7, #4]
  5049. 800285e: 681b ldr r3, [r3, #0]
  5050. 8002860: f003 0304 and.w r3, r3, #4
  5051. 8002864: 2b00 cmp r3, #0
  5052. 8002866: f000 80a0 beq.w 80029aa <HAL_RCC_OscConfig+0x39a>
  5053. {
  5054. FlagStatus pwrclkchanged = RESET;
  5055. 800286a: 2300 movs r3, #0
  5056. 800286c: 75fb strb r3, [r7, #23]
  5057. /* Check the parameters */
  5058. assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));
  5059. /* Update LSE configuration in Backup Domain control register */
  5060. /* Requires to enable write access to Backup Domain of necessary */
  5061. if(__HAL_RCC_PWR_IS_CLK_DISABLED())
  5062. 800286e: 4b13 ldr r3, [pc, #76] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  5063. 8002870: 6c1b ldr r3, [r3, #64] ; 0x40
  5064. 8002872: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  5065. 8002876: 2b00 cmp r3, #0
  5066. 8002878: d10f bne.n 800289a <HAL_RCC_OscConfig+0x28a>
  5067. {
  5068. __HAL_RCC_PWR_CLK_ENABLE();
  5069. 800287a: 2300 movs r3, #0
  5070. 800287c: 60bb str r3, [r7, #8]
  5071. 800287e: 4b0f ldr r3, [pc, #60] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  5072. 8002880: 6c1b ldr r3, [r3, #64] ; 0x40
  5073. 8002882: 4a0e ldr r2, [pc, #56] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  5074. 8002884: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
  5075. 8002888: 6413 str r3, [r2, #64] ; 0x40
  5076. 800288a: 4b0c ldr r3, [pc, #48] ; (80028bc <HAL_RCC_OscConfig+0x2ac>)
  5077. 800288c: 6c1b ldr r3, [r3, #64] ; 0x40
  5078. 800288e: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  5079. 8002892: 60bb str r3, [r7, #8]
  5080. 8002894: 68bb ldr r3, [r7, #8]
  5081. pwrclkchanged = SET;
  5082. 8002896: 2301 movs r3, #1
  5083. 8002898: 75fb strb r3, [r7, #23]
  5084. }
  5085. if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
  5086. 800289a: 4b0b ldr r3, [pc, #44] ; (80028c8 <HAL_RCC_OscConfig+0x2b8>)
  5087. 800289c: 681b ldr r3, [r3, #0]
  5088. 800289e: f403 7380 and.w r3, r3, #256 ; 0x100
  5089. 80028a2: 2b00 cmp r3, #0
  5090. 80028a4: d121 bne.n 80028ea <HAL_RCC_OscConfig+0x2da>
  5091. {
  5092. /* Enable write access to Backup domain */
  5093. SET_BIT(PWR->CR, PWR_CR_DBP);
  5094. 80028a6: 4b08 ldr r3, [pc, #32] ; (80028c8 <HAL_RCC_OscConfig+0x2b8>)
  5095. 80028a8: 681b ldr r3, [r3, #0]
  5096. 80028aa: 4a07 ldr r2, [pc, #28] ; (80028c8 <HAL_RCC_OscConfig+0x2b8>)
  5097. 80028ac: f443 7380 orr.w r3, r3, #256 ; 0x100
  5098. 80028b0: 6013 str r3, [r2, #0]
  5099. /* Wait for Backup domain Write protection disable */
  5100. tickstart = HAL_GetTick();
  5101. 80028b2: f7ff fb95 bl 8001fe0 <HAL_GetTick>
  5102. 80028b6: 6138 str r0, [r7, #16]
  5103. while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
  5104. 80028b8: e011 b.n 80028de <HAL_RCC_OscConfig+0x2ce>
  5105. 80028ba: bf00 nop
  5106. 80028bc: 40023800 .word 0x40023800
  5107. 80028c0: 42470000 .word 0x42470000
  5108. 80028c4: 42470e80 .word 0x42470e80
  5109. 80028c8: 40007000 .word 0x40007000
  5110. {
  5111. if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
  5112. 80028cc: f7ff fb88 bl 8001fe0 <HAL_GetTick>
  5113. 80028d0: 4602 mov r2, r0
  5114. 80028d2: 693b ldr r3, [r7, #16]
  5115. 80028d4: 1ad3 subs r3, r2, r3
  5116. 80028d6: 2b02 cmp r3, #2
  5117. 80028d8: d901 bls.n 80028de <HAL_RCC_OscConfig+0x2ce>
  5118. {
  5119. return HAL_TIMEOUT;
  5120. 80028da: 2303 movs r3, #3
  5121. 80028dc: e0fd b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  5122. while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP))
  5123. 80028de: 4b81 ldr r3, [pc, #516] ; (8002ae4 <HAL_RCC_OscConfig+0x4d4>)
  5124. 80028e0: 681b ldr r3, [r3, #0]
  5125. 80028e2: f403 7380 and.w r3, r3, #256 ; 0x100
  5126. 80028e6: 2b00 cmp r3, #0
  5127. 80028e8: d0f0 beq.n 80028cc <HAL_RCC_OscConfig+0x2bc>
  5128. }
  5129. }
  5130. }
  5131. /* Set the new LSE configuration -----------------------------------------*/
  5132. __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
  5133. 80028ea: 687b ldr r3, [r7, #4]
  5134. 80028ec: 689b ldr r3, [r3, #8]
  5135. 80028ee: 2b01 cmp r3, #1
  5136. 80028f0: d106 bne.n 8002900 <HAL_RCC_OscConfig+0x2f0>
  5137. 80028f2: 4b7d ldr r3, [pc, #500] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5138. 80028f4: 6f1b ldr r3, [r3, #112] ; 0x70
  5139. 80028f6: 4a7c ldr r2, [pc, #496] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5140. 80028f8: f043 0301 orr.w r3, r3, #1
  5141. 80028fc: 6713 str r3, [r2, #112] ; 0x70
  5142. 80028fe: e01c b.n 800293a <HAL_RCC_OscConfig+0x32a>
  5143. 8002900: 687b ldr r3, [r7, #4]
  5144. 8002902: 689b ldr r3, [r3, #8]
  5145. 8002904: 2b05 cmp r3, #5
  5146. 8002906: d10c bne.n 8002922 <HAL_RCC_OscConfig+0x312>
  5147. 8002908: 4b77 ldr r3, [pc, #476] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5148. 800290a: 6f1b ldr r3, [r3, #112] ; 0x70
  5149. 800290c: 4a76 ldr r2, [pc, #472] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5150. 800290e: f043 0304 orr.w r3, r3, #4
  5151. 8002912: 6713 str r3, [r2, #112] ; 0x70
  5152. 8002914: 4b74 ldr r3, [pc, #464] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5153. 8002916: 6f1b ldr r3, [r3, #112] ; 0x70
  5154. 8002918: 4a73 ldr r2, [pc, #460] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5155. 800291a: f043 0301 orr.w r3, r3, #1
  5156. 800291e: 6713 str r3, [r2, #112] ; 0x70
  5157. 8002920: e00b b.n 800293a <HAL_RCC_OscConfig+0x32a>
  5158. 8002922: 4b71 ldr r3, [pc, #452] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5159. 8002924: 6f1b ldr r3, [r3, #112] ; 0x70
  5160. 8002926: 4a70 ldr r2, [pc, #448] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5161. 8002928: f023 0301 bic.w r3, r3, #1
  5162. 800292c: 6713 str r3, [r2, #112] ; 0x70
  5163. 800292e: 4b6e ldr r3, [pc, #440] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5164. 8002930: 6f1b ldr r3, [r3, #112] ; 0x70
  5165. 8002932: 4a6d ldr r2, [pc, #436] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5166. 8002934: f023 0304 bic.w r3, r3, #4
  5167. 8002938: 6713 str r3, [r2, #112] ; 0x70
  5168. /* Check the LSE State */
  5169. if((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF)
  5170. 800293a: 687b ldr r3, [r7, #4]
  5171. 800293c: 689b ldr r3, [r3, #8]
  5172. 800293e: 2b00 cmp r3, #0
  5173. 8002940: d015 beq.n 800296e <HAL_RCC_OscConfig+0x35e>
  5174. {
  5175. /* Get Start Tick*/
  5176. tickstart = HAL_GetTick();
  5177. 8002942: f7ff fb4d bl 8001fe0 <HAL_GetTick>
  5178. 8002946: 6138 str r0, [r7, #16]
  5179. /* Wait till LSE is ready */
  5180. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
  5181. 8002948: e00a b.n 8002960 <HAL_RCC_OscConfig+0x350>
  5182. {
  5183. if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
  5184. 800294a: f7ff fb49 bl 8001fe0 <HAL_GetTick>
  5185. 800294e: 4602 mov r2, r0
  5186. 8002950: 693b ldr r3, [r7, #16]
  5187. 8002952: 1ad3 subs r3, r2, r3
  5188. 8002954: f241 3288 movw r2, #5000 ; 0x1388
  5189. 8002958: 4293 cmp r3, r2
  5190. 800295a: d901 bls.n 8002960 <HAL_RCC_OscConfig+0x350>
  5191. {
  5192. return HAL_TIMEOUT;
  5193. 800295c: 2303 movs r3, #3
  5194. 800295e: e0bc b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  5195. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
  5196. 8002960: 4b61 ldr r3, [pc, #388] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5197. 8002962: 6f1b ldr r3, [r3, #112] ; 0x70
  5198. 8002964: f003 0302 and.w r3, r3, #2
  5199. 8002968: 2b00 cmp r3, #0
  5200. 800296a: d0ee beq.n 800294a <HAL_RCC_OscConfig+0x33a>
  5201. 800296c: e014 b.n 8002998 <HAL_RCC_OscConfig+0x388>
  5202. }
  5203. }
  5204. else
  5205. {
  5206. /* Get Start Tick */
  5207. tickstart = HAL_GetTick();
  5208. 800296e: f7ff fb37 bl 8001fe0 <HAL_GetTick>
  5209. 8002972: 6138 str r0, [r7, #16]
  5210. /* Wait till LSE is ready */
  5211. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
  5212. 8002974: e00a b.n 800298c <HAL_RCC_OscConfig+0x37c>
  5213. {
  5214. if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
  5215. 8002976: f7ff fb33 bl 8001fe0 <HAL_GetTick>
  5216. 800297a: 4602 mov r2, r0
  5217. 800297c: 693b ldr r3, [r7, #16]
  5218. 800297e: 1ad3 subs r3, r2, r3
  5219. 8002980: f241 3288 movw r2, #5000 ; 0x1388
  5220. 8002984: 4293 cmp r3, r2
  5221. 8002986: d901 bls.n 800298c <HAL_RCC_OscConfig+0x37c>
  5222. {
  5223. return HAL_TIMEOUT;
  5224. 8002988: 2303 movs r3, #3
  5225. 800298a: e0a6 b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  5226. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
  5227. 800298c: 4b56 ldr r3, [pc, #344] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5228. 800298e: 6f1b ldr r3, [r3, #112] ; 0x70
  5229. 8002990: f003 0302 and.w r3, r3, #2
  5230. 8002994: 2b00 cmp r3, #0
  5231. 8002996: d1ee bne.n 8002976 <HAL_RCC_OscConfig+0x366>
  5232. }
  5233. }
  5234. }
  5235. /* Restore clock configuration if changed */
  5236. if(pwrclkchanged == SET)
  5237. 8002998: 7dfb ldrb r3, [r7, #23]
  5238. 800299a: 2b01 cmp r3, #1
  5239. 800299c: d105 bne.n 80029aa <HAL_RCC_OscConfig+0x39a>
  5240. {
  5241. __HAL_RCC_PWR_CLK_DISABLE();
  5242. 800299e: 4b52 ldr r3, [pc, #328] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5243. 80029a0: 6c1b ldr r3, [r3, #64] ; 0x40
  5244. 80029a2: 4a51 ldr r2, [pc, #324] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5245. 80029a4: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000
  5246. 80029a8: 6413 str r3, [r2, #64] ; 0x40
  5247. }
  5248. }
  5249. /*-------------------------------- PLL Configuration -----------------------*/
  5250. /* Check the parameters */
  5251. assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState));
  5252. if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)
  5253. 80029aa: 687b ldr r3, [r7, #4]
  5254. 80029ac: 699b ldr r3, [r3, #24]
  5255. 80029ae: 2b00 cmp r3, #0
  5256. 80029b0: f000 8092 beq.w 8002ad8 <HAL_RCC_OscConfig+0x4c8>
  5257. {
  5258. /* Check if the PLL is used as system clock or not */
  5259. if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_CFGR_SWS_PLL)
  5260. 80029b4: 4b4c ldr r3, [pc, #304] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5261. 80029b6: 689b ldr r3, [r3, #8]
  5262. 80029b8: f003 030c and.w r3, r3, #12
  5263. 80029bc: 2b08 cmp r3, #8
  5264. 80029be: d05c beq.n 8002a7a <HAL_RCC_OscConfig+0x46a>
  5265. {
  5266. if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)
  5267. 80029c0: 687b ldr r3, [r7, #4]
  5268. 80029c2: 699b ldr r3, [r3, #24]
  5269. 80029c4: 2b02 cmp r3, #2
  5270. 80029c6: d141 bne.n 8002a4c <HAL_RCC_OscConfig+0x43c>
  5271. assert_param(IS_RCC_PLLN_VALUE(RCC_OscInitStruct->PLL.PLLN));
  5272. assert_param(IS_RCC_PLLP_VALUE(RCC_OscInitStruct->PLL.PLLP));
  5273. assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ));
  5274. /* Disable the main PLL. */
  5275. __HAL_RCC_PLL_DISABLE();
  5276. 80029c8: 4b48 ldr r3, [pc, #288] ; (8002aec <HAL_RCC_OscConfig+0x4dc>)
  5277. 80029ca: 2200 movs r2, #0
  5278. 80029cc: 601a str r2, [r3, #0]
  5279. /* Get Start Tick */
  5280. tickstart = HAL_GetTick();
  5281. 80029ce: f7ff fb07 bl 8001fe0 <HAL_GetTick>
  5282. 80029d2: 6138 str r0, [r7, #16]
  5283. /* Wait till PLL is ready */
  5284. while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
  5285. 80029d4: e008 b.n 80029e8 <HAL_RCC_OscConfig+0x3d8>
  5286. {
  5287. if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
  5288. 80029d6: f7ff fb03 bl 8001fe0 <HAL_GetTick>
  5289. 80029da: 4602 mov r2, r0
  5290. 80029dc: 693b ldr r3, [r7, #16]
  5291. 80029de: 1ad3 subs r3, r2, r3
  5292. 80029e0: 2b02 cmp r3, #2
  5293. 80029e2: d901 bls.n 80029e8 <HAL_RCC_OscConfig+0x3d8>
  5294. {
  5295. return HAL_TIMEOUT;
  5296. 80029e4: 2303 movs r3, #3
  5297. 80029e6: e078 b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  5298. while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
  5299. 80029e8: 4b3f ldr r3, [pc, #252] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5300. 80029ea: 681b ldr r3, [r3, #0]
  5301. 80029ec: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
  5302. 80029f0: 2b00 cmp r3, #0
  5303. 80029f2: d1f0 bne.n 80029d6 <HAL_RCC_OscConfig+0x3c6>
  5304. }
  5305. }
  5306. /* Configure the main PLL clock source, multiplication and division factors. */
  5307. WRITE_REG(RCC->PLLCFGR, (RCC_OscInitStruct->PLL.PLLSource | \
  5308. 80029f4: 687b ldr r3, [r7, #4]
  5309. 80029f6: 69da ldr r2, [r3, #28]
  5310. 80029f8: 687b ldr r3, [r7, #4]
  5311. 80029fa: 6a1b ldr r3, [r3, #32]
  5312. 80029fc: 431a orrs r2, r3
  5313. 80029fe: 687b ldr r3, [r7, #4]
  5314. 8002a00: 6a5b ldr r3, [r3, #36] ; 0x24
  5315. 8002a02: 019b lsls r3, r3, #6
  5316. 8002a04: 431a orrs r2, r3
  5317. 8002a06: 687b ldr r3, [r7, #4]
  5318. 8002a08: 6a9b ldr r3, [r3, #40] ; 0x28
  5319. 8002a0a: 085b lsrs r3, r3, #1
  5320. 8002a0c: 3b01 subs r3, #1
  5321. 8002a0e: 041b lsls r3, r3, #16
  5322. 8002a10: 431a orrs r2, r3
  5323. 8002a12: 687b ldr r3, [r7, #4]
  5324. 8002a14: 6adb ldr r3, [r3, #44] ; 0x2c
  5325. 8002a16: 061b lsls r3, r3, #24
  5326. 8002a18: 4933 ldr r1, [pc, #204] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5327. 8002a1a: 4313 orrs r3, r2
  5328. 8002a1c: 604b str r3, [r1, #4]
  5329. RCC_OscInitStruct->PLL.PLLM | \
  5330. (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos) | \
  5331. (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos) | \
  5332. (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos)));
  5333. /* Enable the main PLL. */
  5334. __HAL_RCC_PLL_ENABLE();
  5335. 8002a1e: 4b33 ldr r3, [pc, #204] ; (8002aec <HAL_RCC_OscConfig+0x4dc>)
  5336. 8002a20: 2201 movs r2, #1
  5337. 8002a22: 601a str r2, [r3, #0]
  5338. /* Get Start Tick */
  5339. tickstart = HAL_GetTick();
  5340. 8002a24: f7ff fadc bl 8001fe0 <HAL_GetTick>
  5341. 8002a28: 6138 str r0, [r7, #16]
  5342. /* Wait till PLL is ready */
  5343. while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
  5344. 8002a2a: e008 b.n 8002a3e <HAL_RCC_OscConfig+0x42e>
  5345. {
  5346. if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
  5347. 8002a2c: f7ff fad8 bl 8001fe0 <HAL_GetTick>
  5348. 8002a30: 4602 mov r2, r0
  5349. 8002a32: 693b ldr r3, [r7, #16]
  5350. 8002a34: 1ad3 subs r3, r2, r3
  5351. 8002a36: 2b02 cmp r3, #2
  5352. 8002a38: d901 bls.n 8002a3e <HAL_RCC_OscConfig+0x42e>
  5353. {
  5354. return HAL_TIMEOUT;
  5355. 8002a3a: 2303 movs r3, #3
  5356. 8002a3c: e04d b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  5357. while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
  5358. 8002a3e: 4b2a ldr r3, [pc, #168] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5359. 8002a40: 681b ldr r3, [r3, #0]
  5360. 8002a42: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
  5361. 8002a46: 2b00 cmp r3, #0
  5362. 8002a48: d0f0 beq.n 8002a2c <HAL_RCC_OscConfig+0x41c>
  5363. 8002a4a: e045 b.n 8002ad8 <HAL_RCC_OscConfig+0x4c8>
  5364. }
  5365. }
  5366. else
  5367. {
  5368. /* Disable the main PLL. */
  5369. __HAL_RCC_PLL_DISABLE();
  5370. 8002a4c: 4b27 ldr r3, [pc, #156] ; (8002aec <HAL_RCC_OscConfig+0x4dc>)
  5371. 8002a4e: 2200 movs r2, #0
  5372. 8002a50: 601a str r2, [r3, #0]
  5373. /* Get Start Tick */
  5374. tickstart = HAL_GetTick();
  5375. 8002a52: f7ff fac5 bl 8001fe0 <HAL_GetTick>
  5376. 8002a56: 6138 str r0, [r7, #16]
  5377. /* Wait till PLL is ready */
  5378. while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
  5379. 8002a58: e008 b.n 8002a6c <HAL_RCC_OscConfig+0x45c>
  5380. {
  5381. if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
  5382. 8002a5a: f7ff fac1 bl 8001fe0 <HAL_GetTick>
  5383. 8002a5e: 4602 mov r2, r0
  5384. 8002a60: 693b ldr r3, [r7, #16]
  5385. 8002a62: 1ad3 subs r3, r2, r3
  5386. 8002a64: 2b02 cmp r3, #2
  5387. 8002a66: d901 bls.n 8002a6c <HAL_RCC_OscConfig+0x45c>
  5388. {
  5389. return HAL_TIMEOUT;
  5390. 8002a68: 2303 movs r3, #3
  5391. 8002a6a: e036 b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  5392. while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
  5393. 8002a6c: 4b1e ldr r3, [pc, #120] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5394. 8002a6e: 681b ldr r3, [r3, #0]
  5395. 8002a70: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
  5396. 8002a74: 2b00 cmp r3, #0
  5397. 8002a76: d1f0 bne.n 8002a5a <HAL_RCC_OscConfig+0x44a>
  5398. 8002a78: e02e b.n 8002ad8 <HAL_RCC_OscConfig+0x4c8>
  5399. }
  5400. }
  5401. else
  5402. {
  5403. /* Check if there is a request to disable the PLL used as System clock source */
  5404. if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF)
  5405. 8002a7a: 687b ldr r3, [r7, #4]
  5406. 8002a7c: 699b ldr r3, [r3, #24]
  5407. 8002a7e: 2b01 cmp r3, #1
  5408. 8002a80: d101 bne.n 8002a86 <HAL_RCC_OscConfig+0x476>
  5409. {
  5410. return HAL_ERROR;
  5411. 8002a82: 2301 movs r3, #1
  5412. 8002a84: e029 b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  5413. }
  5414. else
  5415. {
  5416. /* Do not return HAL_ERROR if request repeats the current configuration */
  5417. pll_config = RCC->PLLCFGR;
  5418. 8002a86: 4b18 ldr r3, [pc, #96] ; (8002ae8 <HAL_RCC_OscConfig+0x4d8>)
  5419. 8002a88: 685b ldr r3, [r3, #4]
  5420. 8002a8a: 60fb str r3, [r7, #12]
  5421. if((READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
  5422. 8002a8c: 68fb ldr r3, [r7, #12]
  5423. 8002a8e: f403 0280 and.w r2, r3, #4194304 ; 0x400000
  5424. 8002a92: 687b ldr r3, [r7, #4]
  5425. 8002a94: 69db ldr r3, [r3, #28]
  5426. 8002a96: 429a cmp r2, r3
  5427. 8002a98: d11c bne.n 8002ad4 <HAL_RCC_OscConfig+0x4c4>
  5428. (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) ||
  5429. 8002a9a: 68fb ldr r3, [r7, #12]
  5430. 8002a9c: f003 023f and.w r2, r3, #63 ; 0x3f
  5431. 8002aa0: 687b ldr r3, [r7, #4]
  5432. 8002aa2: 6a1b ldr r3, [r3, #32]
  5433. if((READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
  5434. 8002aa4: 429a cmp r2, r3
  5435. 8002aa6: d115 bne.n 8002ad4 <HAL_RCC_OscConfig+0x4c4>
  5436. (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != RCC_OscInitStruct->PLL.PLLN) ||
  5437. 8002aa8: 68fa ldr r2, [r7, #12]
  5438. 8002aaa: f647 73c0 movw r3, #32704 ; 0x7fc0
  5439. 8002aae: 4013 ands r3, r2
  5440. 8002ab0: 687a ldr r2, [r7, #4]
  5441. 8002ab2: 6a52 ldr r2, [r2, #36] ; 0x24
  5442. (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) ||
  5443. 8002ab4: 4293 cmp r3, r2
  5444. 8002ab6: d10d bne.n 8002ad4 <HAL_RCC_OscConfig+0x4c4>
  5445. (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != RCC_OscInitStruct->PLL.PLLP) ||
  5446. 8002ab8: 68fb ldr r3, [r7, #12]
  5447. 8002aba: f403 3240 and.w r2, r3, #196608 ; 0x30000
  5448. 8002abe: 687b ldr r3, [r7, #4]
  5449. 8002ac0: 6a9b ldr r3, [r3, #40] ; 0x28
  5450. (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != RCC_OscInitStruct->PLL.PLLN) ||
  5451. 8002ac2: 429a cmp r2, r3
  5452. 8002ac4: d106 bne.n 8002ad4 <HAL_RCC_OscConfig+0x4c4>
  5453. (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != RCC_OscInitStruct->PLL.PLLQ))
  5454. 8002ac6: 68fb ldr r3, [r7, #12]
  5455. 8002ac8: f003 6270 and.w r2, r3, #251658240 ; 0xf000000
  5456. 8002acc: 687b ldr r3, [r7, #4]
  5457. 8002ace: 6adb ldr r3, [r3, #44] ; 0x2c
  5458. (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != RCC_OscInitStruct->PLL.PLLP) ||
  5459. 8002ad0: 429a cmp r2, r3
  5460. 8002ad2: d001 beq.n 8002ad8 <HAL_RCC_OscConfig+0x4c8>
  5461. {
  5462. return HAL_ERROR;
  5463. 8002ad4: 2301 movs r3, #1
  5464. 8002ad6: e000 b.n 8002ada <HAL_RCC_OscConfig+0x4ca>
  5465. }
  5466. }
  5467. }
  5468. }
  5469. return HAL_OK;
  5470. 8002ad8: 2300 movs r3, #0
  5471. }
  5472. 8002ada: 4618 mov r0, r3
  5473. 8002adc: 3718 adds r7, #24
  5474. 8002ade: 46bd mov sp, r7
  5475. 8002ae0: bd80 pop {r7, pc}
  5476. 8002ae2: bf00 nop
  5477. 8002ae4: 40007000 .word 0x40007000
  5478. 8002ae8: 40023800 .word 0x40023800
  5479. 8002aec: 42470060 .word 0x42470060
  5480. 08002af0 <HAL_RCC_ClockConfig>:
  5481. * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency
  5482. * (for more details refer to section above "Initialization/de-initialization functions")
  5483. * @retval None
  5484. */
  5485. HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)
  5486. {
  5487. 8002af0: b580 push {r7, lr}
  5488. 8002af2: b084 sub sp, #16
  5489. 8002af4: af00 add r7, sp, #0
  5490. 8002af6: 6078 str r0, [r7, #4]
  5491. 8002af8: 6039 str r1, [r7, #0]
  5492. uint32_t tickstart;
  5493. /* Check Null pointer */
  5494. if(RCC_ClkInitStruct == NULL)
  5495. 8002afa: 687b ldr r3, [r7, #4]
  5496. 8002afc: 2b00 cmp r3, #0
  5497. 8002afe: d101 bne.n 8002b04 <HAL_RCC_ClockConfig+0x14>
  5498. {
  5499. return HAL_ERROR;
  5500. 8002b00: 2301 movs r3, #1
  5501. 8002b02: e0cc b.n 8002c9e <HAL_RCC_ClockConfig+0x1ae>
  5502. /* To correctly read data from FLASH memory, the number of wait states (LATENCY)
  5503. must be correctly programmed according to the frequency of the CPU clock
  5504. (HCLK) and the supply voltage of the device. */
  5505. /* Increasing the number of wait states because of higher CPU frequency */
  5506. if(FLatency > __HAL_FLASH_GET_LATENCY())
  5507. 8002b04: 4b68 ldr r3, [pc, #416] ; (8002ca8 <HAL_RCC_ClockConfig+0x1b8>)
  5508. 8002b06: 681b ldr r3, [r3, #0]
  5509. 8002b08: f003 030f and.w r3, r3, #15
  5510. 8002b0c: 683a ldr r2, [r7, #0]
  5511. 8002b0e: 429a cmp r2, r3
  5512. 8002b10: d90c bls.n 8002b2c <HAL_RCC_ClockConfig+0x3c>
  5513. {
  5514. /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
  5515. __HAL_FLASH_SET_LATENCY(FLatency);
  5516. 8002b12: 4b65 ldr r3, [pc, #404] ; (8002ca8 <HAL_RCC_ClockConfig+0x1b8>)
  5517. 8002b14: 683a ldr r2, [r7, #0]
  5518. 8002b16: b2d2 uxtb r2, r2
  5519. 8002b18: 701a strb r2, [r3, #0]
  5520. /* Check that the new number of wait states is taken into account to access the Flash
  5521. memory by reading the FLASH_ACR register */
  5522. if(__HAL_FLASH_GET_LATENCY() != FLatency)
  5523. 8002b1a: 4b63 ldr r3, [pc, #396] ; (8002ca8 <HAL_RCC_ClockConfig+0x1b8>)
  5524. 8002b1c: 681b ldr r3, [r3, #0]
  5525. 8002b1e: f003 030f and.w r3, r3, #15
  5526. 8002b22: 683a ldr r2, [r7, #0]
  5527. 8002b24: 429a cmp r2, r3
  5528. 8002b26: d001 beq.n 8002b2c <HAL_RCC_ClockConfig+0x3c>
  5529. {
  5530. return HAL_ERROR;
  5531. 8002b28: 2301 movs r3, #1
  5532. 8002b2a: e0b8 b.n 8002c9e <HAL_RCC_ClockConfig+0x1ae>
  5533. }
  5534. }
  5535. /*-------------------------- HCLK Configuration --------------------------*/
  5536. if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
  5537. 8002b2c: 687b ldr r3, [r7, #4]
  5538. 8002b2e: 681b ldr r3, [r3, #0]
  5539. 8002b30: f003 0302 and.w r3, r3, #2
  5540. 8002b34: 2b00 cmp r3, #0
  5541. 8002b36: d020 beq.n 8002b7a <HAL_RCC_ClockConfig+0x8a>
  5542. {
  5543. /* Set the highest APBx dividers in order to ensure that we do not go through
  5544. a non-spec phase whatever we decrease or increase HCLK. */
  5545. if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
  5546. 8002b38: 687b ldr r3, [r7, #4]
  5547. 8002b3a: 681b ldr r3, [r3, #0]
  5548. 8002b3c: f003 0304 and.w r3, r3, #4
  5549. 8002b40: 2b00 cmp r3, #0
  5550. 8002b42: d005 beq.n 8002b50 <HAL_RCC_ClockConfig+0x60>
  5551. {
  5552. MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16);
  5553. 8002b44: 4b59 ldr r3, [pc, #356] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5554. 8002b46: 689b ldr r3, [r3, #8]
  5555. 8002b48: 4a58 ldr r2, [pc, #352] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5556. 8002b4a: f443 53e0 orr.w r3, r3, #7168 ; 0x1c00
  5557. 8002b4e: 6093 str r3, [r2, #8]
  5558. }
  5559. if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
  5560. 8002b50: 687b ldr r3, [r7, #4]
  5561. 8002b52: 681b ldr r3, [r3, #0]
  5562. 8002b54: f003 0308 and.w r3, r3, #8
  5563. 8002b58: 2b00 cmp r3, #0
  5564. 8002b5a: d005 beq.n 8002b68 <HAL_RCC_ClockConfig+0x78>
  5565. {
  5566. MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3));
  5567. 8002b5c: 4b53 ldr r3, [pc, #332] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5568. 8002b5e: 689b ldr r3, [r3, #8]
  5569. 8002b60: 4a52 ldr r2, [pc, #328] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5570. 8002b62: f443 4360 orr.w r3, r3, #57344 ; 0xe000
  5571. 8002b66: 6093 str r3, [r2, #8]
  5572. }
  5573. assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider));
  5574. MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider);
  5575. 8002b68: 4b50 ldr r3, [pc, #320] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5576. 8002b6a: 689b ldr r3, [r3, #8]
  5577. 8002b6c: f023 02f0 bic.w r2, r3, #240 ; 0xf0
  5578. 8002b70: 687b ldr r3, [r7, #4]
  5579. 8002b72: 689b ldr r3, [r3, #8]
  5580. 8002b74: 494d ldr r1, [pc, #308] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5581. 8002b76: 4313 orrs r3, r2
  5582. 8002b78: 608b str r3, [r1, #8]
  5583. }
  5584. /*------------------------- SYSCLK Configuration ---------------------------*/
  5585. if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)
  5586. 8002b7a: 687b ldr r3, [r7, #4]
  5587. 8002b7c: 681b ldr r3, [r3, #0]
  5588. 8002b7e: f003 0301 and.w r3, r3, #1
  5589. 8002b82: 2b00 cmp r3, #0
  5590. 8002b84: d044 beq.n 8002c10 <HAL_RCC_ClockConfig+0x120>
  5591. {
  5592. assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource));
  5593. /* HSE is selected as System Clock Source */
  5594. if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
  5595. 8002b86: 687b ldr r3, [r7, #4]
  5596. 8002b88: 685b ldr r3, [r3, #4]
  5597. 8002b8a: 2b01 cmp r3, #1
  5598. 8002b8c: d107 bne.n 8002b9e <HAL_RCC_ClockConfig+0xae>
  5599. {
  5600. /* Check the HSE ready flag */
  5601. if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
  5602. 8002b8e: 4b47 ldr r3, [pc, #284] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5603. 8002b90: 681b ldr r3, [r3, #0]
  5604. 8002b92: f403 3300 and.w r3, r3, #131072 ; 0x20000
  5605. 8002b96: 2b00 cmp r3, #0
  5606. 8002b98: d119 bne.n 8002bce <HAL_RCC_ClockConfig+0xde>
  5607. {
  5608. return HAL_ERROR;
  5609. 8002b9a: 2301 movs r3, #1
  5610. 8002b9c: e07f b.n 8002c9e <HAL_RCC_ClockConfig+0x1ae>
  5611. }
  5612. }
  5613. /* PLL is selected as System Clock Source */
  5614. else if((RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) ||
  5615. 8002b9e: 687b ldr r3, [r7, #4]
  5616. 8002ba0: 685b ldr r3, [r3, #4]
  5617. 8002ba2: 2b02 cmp r3, #2
  5618. 8002ba4: d003 beq.n 8002bae <HAL_RCC_ClockConfig+0xbe>
  5619. (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLRCLK))
  5620. 8002ba6: 687b ldr r3, [r7, #4]
  5621. 8002ba8: 685b ldr r3, [r3, #4]
  5622. else if((RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) ||
  5623. 8002baa: 2b03 cmp r3, #3
  5624. 8002bac: d107 bne.n 8002bbe <HAL_RCC_ClockConfig+0xce>
  5625. {
  5626. /* Check the PLL ready flag */
  5627. if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
  5628. 8002bae: 4b3f ldr r3, [pc, #252] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5629. 8002bb0: 681b ldr r3, [r3, #0]
  5630. 8002bb2: f003 7300 and.w r3, r3, #33554432 ; 0x2000000
  5631. 8002bb6: 2b00 cmp r3, #0
  5632. 8002bb8: d109 bne.n 8002bce <HAL_RCC_ClockConfig+0xde>
  5633. {
  5634. return HAL_ERROR;
  5635. 8002bba: 2301 movs r3, #1
  5636. 8002bbc: e06f b.n 8002c9e <HAL_RCC_ClockConfig+0x1ae>
  5637. }
  5638. /* HSI is selected as System Clock Source */
  5639. else
  5640. {
  5641. /* Check the HSI ready flag */
  5642. if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
  5643. 8002bbe: 4b3b ldr r3, [pc, #236] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5644. 8002bc0: 681b ldr r3, [r3, #0]
  5645. 8002bc2: f003 0302 and.w r3, r3, #2
  5646. 8002bc6: 2b00 cmp r3, #0
  5647. 8002bc8: d101 bne.n 8002bce <HAL_RCC_ClockConfig+0xde>
  5648. {
  5649. return HAL_ERROR;
  5650. 8002bca: 2301 movs r3, #1
  5651. 8002bcc: e067 b.n 8002c9e <HAL_RCC_ClockConfig+0x1ae>
  5652. }
  5653. }
  5654. __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource);
  5655. 8002bce: 4b37 ldr r3, [pc, #220] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5656. 8002bd0: 689b ldr r3, [r3, #8]
  5657. 8002bd2: f023 0203 bic.w r2, r3, #3
  5658. 8002bd6: 687b ldr r3, [r7, #4]
  5659. 8002bd8: 685b ldr r3, [r3, #4]
  5660. 8002bda: 4934 ldr r1, [pc, #208] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5661. 8002bdc: 4313 orrs r3, r2
  5662. 8002bde: 608b str r3, [r1, #8]
  5663. /* Get Start Tick */
  5664. tickstart = HAL_GetTick();
  5665. 8002be0: f7ff f9fe bl 8001fe0 <HAL_GetTick>
  5666. 8002be4: 60f8 str r0, [r7, #12]
  5667. while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos))
  5668. 8002be6: e00a b.n 8002bfe <HAL_RCC_ClockConfig+0x10e>
  5669. {
  5670. if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)
  5671. 8002be8: f7ff f9fa bl 8001fe0 <HAL_GetTick>
  5672. 8002bec: 4602 mov r2, r0
  5673. 8002bee: 68fb ldr r3, [r7, #12]
  5674. 8002bf0: 1ad3 subs r3, r2, r3
  5675. 8002bf2: f241 3288 movw r2, #5000 ; 0x1388
  5676. 8002bf6: 4293 cmp r3, r2
  5677. 8002bf8: d901 bls.n 8002bfe <HAL_RCC_ClockConfig+0x10e>
  5678. {
  5679. return HAL_TIMEOUT;
  5680. 8002bfa: 2303 movs r3, #3
  5681. 8002bfc: e04f b.n 8002c9e <HAL_RCC_ClockConfig+0x1ae>
  5682. while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos))
  5683. 8002bfe: 4b2b ldr r3, [pc, #172] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5684. 8002c00: 689b ldr r3, [r3, #8]
  5685. 8002c02: f003 020c and.w r2, r3, #12
  5686. 8002c06: 687b ldr r3, [r7, #4]
  5687. 8002c08: 685b ldr r3, [r3, #4]
  5688. 8002c0a: 009b lsls r3, r3, #2
  5689. 8002c0c: 429a cmp r2, r3
  5690. 8002c0e: d1eb bne.n 8002be8 <HAL_RCC_ClockConfig+0xf8>
  5691. }
  5692. }
  5693. }
  5694. /* Decreasing the number of wait states because of lower CPU frequency */
  5695. if(FLatency < __HAL_FLASH_GET_LATENCY())
  5696. 8002c10: 4b25 ldr r3, [pc, #148] ; (8002ca8 <HAL_RCC_ClockConfig+0x1b8>)
  5697. 8002c12: 681b ldr r3, [r3, #0]
  5698. 8002c14: f003 030f and.w r3, r3, #15
  5699. 8002c18: 683a ldr r2, [r7, #0]
  5700. 8002c1a: 429a cmp r2, r3
  5701. 8002c1c: d20c bcs.n 8002c38 <HAL_RCC_ClockConfig+0x148>
  5702. {
  5703. /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
  5704. __HAL_FLASH_SET_LATENCY(FLatency);
  5705. 8002c1e: 4b22 ldr r3, [pc, #136] ; (8002ca8 <HAL_RCC_ClockConfig+0x1b8>)
  5706. 8002c20: 683a ldr r2, [r7, #0]
  5707. 8002c22: b2d2 uxtb r2, r2
  5708. 8002c24: 701a strb r2, [r3, #0]
  5709. /* Check that the new number of wait states is taken into account to access the Flash
  5710. memory by reading the FLASH_ACR register */
  5711. if(__HAL_FLASH_GET_LATENCY() != FLatency)
  5712. 8002c26: 4b20 ldr r3, [pc, #128] ; (8002ca8 <HAL_RCC_ClockConfig+0x1b8>)
  5713. 8002c28: 681b ldr r3, [r3, #0]
  5714. 8002c2a: f003 030f and.w r3, r3, #15
  5715. 8002c2e: 683a ldr r2, [r7, #0]
  5716. 8002c30: 429a cmp r2, r3
  5717. 8002c32: d001 beq.n 8002c38 <HAL_RCC_ClockConfig+0x148>
  5718. {
  5719. return HAL_ERROR;
  5720. 8002c34: 2301 movs r3, #1
  5721. 8002c36: e032 b.n 8002c9e <HAL_RCC_ClockConfig+0x1ae>
  5722. }
  5723. }
  5724. /*-------------------------- PCLK1 Configuration ---------------------------*/
  5725. if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
  5726. 8002c38: 687b ldr r3, [r7, #4]
  5727. 8002c3a: 681b ldr r3, [r3, #0]
  5728. 8002c3c: f003 0304 and.w r3, r3, #4
  5729. 8002c40: 2b00 cmp r3, #0
  5730. 8002c42: d008 beq.n 8002c56 <HAL_RCC_ClockConfig+0x166>
  5731. {
  5732. assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider));
  5733. MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider);
  5734. 8002c44: 4b19 ldr r3, [pc, #100] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5735. 8002c46: 689b ldr r3, [r3, #8]
  5736. 8002c48: f423 52e0 bic.w r2, r3, #7168 ; 0x1c00
  5737. 8002c4c: 687b ldr r3, [r7, #4]
  5738. 8002c4e: 68db ldr r3, [r3, #12]
  5739. 8002c50: 4916 ldr r1, [pc, #88] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5740. 8002c52: 4313 orrs r3, r2
  5741. 8002c54: 608b str r3, [r1, #8]
  5742. }
  5743. /*-------------------------- PCLK2 Configuration ---------------------------*/
  5744. if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
  5745. 8002c56: 687b ldr r3, [r7, #4]
  5746. 8002c58: 681b ldr r3, [r3, #0]
  5747. 8002c5a: f003 0308 and.w r3, r3, #8
  5748. 8002c5e: 2b00 cmp r3, #0
  5749. 8002c60: d009 beq.n 8002c76 <HAL_RCC_ClockConfig+0x186>
  5750. {
  5751. assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider));
  5752. MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U));
  5753. 8002c62: 4b12 ldr r3, [pc, #72] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5754. 8002c64: 689b ldr r3, [r3, #8]
  5755. 8002c66: f423 4260 bic.w r2, r3, #57344 ; 0xe000
  5756. 8002c6a: 687b ldr r3, [r7, #4]
  5757. 8002c6c: 691b ldr r3, [r3, #16]
  5758. 8002c6e: 00db lsls r3, r3, #3
  5759. 8002c70: 490e ldr r1, [pc, #56] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5760. 8002c72: 4313 orrs r3, r2
  5761. 8002c74: 608b str r3, [r1, #8]
  5762. }
  5763. /* Update the SystemCoreClock global variable */
  5764. SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos];
  5765. 8002c76: f000 f821 bl 8002cbc <HAL_RCC_GetSysClockFreq>
  5766. 8002c7a: 4601 mov r1, r0
  5767. 8002c7c: 4b0b ldr r3, [pc, #44] ; (8002cac <HAL_RCC_ClockConfig+0x1bc>)
  5768. 8002c7e: 689b ldr r3, [r3, #8]
  5769. 8002c80: 091b lsrs r3, r3, #4
  5770. 8002c82: f003 030f and.w r3, r3, #15
  5771. 8002c86: 4a0a ldr r2, [pc, #40] ; (8002cb0 <HAL_RCC_ClockConfig+0x1c0>)
  5772. 8002c88: 5cd3 ldrb r3, [r2, r3]
  5773. 8002c8a: fa21 f303 lsr.w r3, r1, r3
  5774. 8002c8e: 4a09 ldr r2, [pc, #36] ; (8002cb4 <HAL_RCC_ClockConfig+0x1c4>)
  5775. 8002c90: 6013 str r3, [r2, #0]
  5776. /* Configure the source of time base considering new system clocks settings */
  5777. HAL_InitTick (uwTickPrio);
  5778. 8002c92: 4b09 ldr r3, [pc, #36] ; (8002cb8 <HAL_RCC_ClockConfig+0x1c8>)
  5779. 8002c94: 681b ldr r3, [r3, #0]
  5780. 8002c96: 4618 mov r0, r3
  5781. 8002c98: f7ff f95e bl 8001f58 <HAL_InitTick>
  5782. return HAL_OK;
  5783. 8002c9c: 2300 movs r3, #0
  5784. }
  5785. 8002c9e: 4618 mov r0, r3
  5786. 8002ca0: 3710 adds r7, #16
  5787. 8002ca2: 46bd mov sp, r7
  5788. 8002ca4: bd80 pop {r7, pc}
  5789. 8002ca6: bf00 nop
  5790. 8002ca8: 40023c00 .word 0x40023c00
  5791. 8002cac: 40023800 .word 0x40023800
  5792. 8002cb0: 08006018 .word 0x08006018
  5793. 8002cb4: 20000014 .word 0x20000014
  5794. 8002cb8: 20000018 .word 0x20000018
  5795. 08002cbc <HAL_RCC_GetSysClockFreq>:
  5796. *
  5797. *
  5798. * @retval SYSCLK frequency
  5799. */
  5800. __weak uint32_t HAL_RCC_GetSysClockFreq(void)
  5801. {
  5802. 8002cbc: b5f0 push {r4, r5, r6, r7, lr}
  5803. 8002cbe: b085 sub sp, #20
  5804. 8002cc0: af00 add r7, sp, #0
  5805. uint32_t pllm = 0U, pllvco = 0U, pllp = 0U;
  5806. 8002cc2: 2300 movs r3, #0
  5807. 8002cc4: 607b str r3, [r7, #4]
  5808. 8002cc6: 2300 movs r3, #0
  5809. 8002cc8: 60fb str r3, [r7, #12]
  5810. 8002cca: 2300 movs r3, #0
  5811. 8002ccc: 603b str r3, [r7, #0]
  5812. uint32_t sysclockfreq = 0U;
  5813. 8002cce: 2300 movs r3, #0
  5814. 8002cd0: 60bb str r3, [r7, #8]
  5815. /* Get SYSCLK source -------------------------------------------------------*/
  5816. switch (RCC->CFGR & RCC_CFGR_SWS)
  5817. 8002cd2: 4b63 ldr r3, [pc, #396] ; (8002e60 <HAL_RCC_GetSysClockFreq+0x1a4>)
  5818. 8002cd4: 689b ldr r3, [r3, #8]
  5819. 8002cd6: f003 030c and.w r3, r3, #12
  5820. 8002cda: 2b04 cmp r3, #4
  5821. 8002cdc: d007 beq.n 8002cee <HAL_RCC_GetSysClockFreq+0x32>
  5822. 8002cde: 2b08 cmp r3, #8
  5823. 8002ce0: d008 beq.n 8002cf4 <HAL_RCC_GetSysClockFreq+0x38>
  5824. 8002ce2: 2b00 cmp r3, #0
  5825. 8002ce4: f040 80b4 bne.w 8002e50 <HAL_RCC_GetSysClockFreq+0x194>
  5826. {
  5827. case RCC_CFGR_SWS_HSI: /* HSI used as system clock source */
  5828. {
  5829. sysclockfreq = HSI_VALUE;
  5830. 8002ce8: 4b5e ldr r3, [pc, #376] ; (8002e64 <HAL_RCC_GetSysClockFreq+0x1a8>)
  5831. 8002cea: 60bb str r3, [r7, #8]
  5832. break;
  5833. 8002cec: e0b3 b.n 8002e56 <HAL_RCC_GetSysClockFreq+0x19a>
  5834. }
  5835. case RCC_CFGR_SWS_HSE: /* HSE used as system clock source */
  5836. {
  5837. sysclockfreq = HSE_VALUE;
  5838. 8002cee: 4b5e ldr r3, [pc, #376] ; (8002e68 <HAL_RCC_GetSysClockFreq+0x1ac>)
  5839. 8002cf0: 60bb str r3, [r7, #8]
  5840. break;
  5841. 8002cf2: e0b0 b.n 8002e56 <HAL_RCC_GetSysClockFreq+0x19a>
  5842. }
  5843. case RCC_CFGR_SWS_PLL: /* PLL used as system clock source */
  5844. {
  5845. /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN
  5846. SYSCLK = PLL_VCO / PLLP */
  5847. pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
  5848. 8002cf4: 4b5a ldr r3, [pc, #360] ; (8002e60 <HAL_RCC_GetSysClockFreq+0x1a4>)
  5849. 8002cf6: 685b ldr r3, [r3, #4]
  5850. 8002cf8: f003 033f and.w r3, r3, #63 ; 0x3f
  5851. 8002cfc: 607b str r3, [r7, #4]
  5852. if(__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI)
  5853. 8002cfe: 4b58 ldr r3, [pc, #352] ; (8002e60 <HAL_RCC_GetSysClockFreq+0x1a4>)
  5854. 8002d00: 685b ldr r3, [r3, #4]
  5855. 8002d02: f403 0380 and.w r3, r3, #4194304 ; 0x400000
  5856. 8002d06: 2b00 cmp r3, #0
  5857. 8002d08: d04a beq.n 8002da0 <HAL_RCC_GetSysClockFreq+0xe4>
  5858. {
  5859. /* HSE used as PLL clock source */
  5860. pllvco = (uint32_t) ((((uint64_t) HSE_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
  5861. 8002d0a: 4b55 ldr r3, [pc, #340] ; (8002e60 <HAL_RCC_GetSysClockFreq+0x1a4>)
  5862. 8002d0c: 685b ldr r3, [r3, #4]
  5863. 8002d0e: 099b lsrs r3, r3, #6
  5864. 8002d10: f04f 0400 mov.w r4, #0
  5865. 8002d14: f240 11ff movw r1, #511 ; 0x1ff
  5866. 8002d18: f04f 0200 mov.w r2, #0
  5867. 8002d1c: ea03 0501 and.w r5, r3, r1
  5868. 8002d20: ea04 0602 and.w r6, r4, r2
  5869. 8002d24: 4629 mov r1, r5
  5870. 8002d26: 4632 mov r2, r6
  5871. 8002d28: f04f 0300 mov.w r3, #0
  5872. 8002d2c: f04f 0400 mov.w r4, #0
  5873. 8002d30: 0154 lsls r4, r2, #5
  5874. 8002d32: ea44 64d1 orr.w r4, r4, r1, lsr #27
  5875. 8002d36: 014b lsls r3, r1, #5
  5876. 8002d38: 4619 mov r1, r3
  5877. 8002d3a: 4622 mov r2, r4
  5878. 8002d3c: 1b49 subs r1, r1, r5
  5879. 8002d3e: eb62 0206 sbc.w r2, r2, r6
  5880. 8002d42: f04f 0300 mov.w r3, #0
  5881. 8002d46: f04f 0400 mov.w r4, #0
  5882. 8002d4a: 0194 lsls r4, r2, #6
  5883. 8002d4c: ea44 6491 orr.w r4, r4, r1, lsr #26
  5884. 8002d50: 018b lsls r3, r1, #6
  5885. 8002d52: 1a5b subs r3, r3, r1
  5886. 8002d54: eb64 0402 sbc.w r4, r4, r2
  5887. 8002d58: f04f 0100 mov.w r1, #0
  5888. 8002d5c: f04f 0200 mov.w r2, #0
  5889. 8002d60: 00e2 lsls r2, r4, #3
  5890. 8002d62: ea42 7253 orr.w r2, r2, r3, lsr #29
  5891. 8002d66: 00d9 lsls r1, r3, #3
  5892. 8002d68: 460b mov r3, r1
  5893. 8002d6a: 4614 mov r4, r2
  5894. 8002d6c: 195b adds r3, r3, r5
  5895. 8002d6e: eb44 0406 adc.w r4, r4, r6
  5896. 8002d72: f04f 0100 mov.w r1, #0
  5897. 8002d76: f04f 0200 mov.w r2, #0
  5898. 8002d7a: 0262 lsls r2, r4, #9
  5899. 8002d7c: ea42 52d3 orr.w r2, r2, r3, lsr #23
  5900. 8002d80: 0259 lsls r1, r3, #9
  5901. 8002d82: 460b mov r3, r1
  5902. 8002d84: 4614 mov r4, r2
  5903. 8002d86: 4618 mov r0, r3
  5904. 8002d88: 4621 mov r1, r4
  5905. 8002d8a: 687b ldr r3, [r7, #4]
  5906. 8002d8c: f04f 0400 mov.w r4, #0
  5907. 8002d90: 461a mov r2, r3
  5908. 8002d92: 4623 mov r3, r4
  5909. 8002d94: f7fd febc bl 8000b10 <__aeabi_uldivmod>
  5910. 8002d98: 4603 mov r3, r0
  5911. 8002d9a: 460c mov r4, r1
  5912. 8002d9c: 60fb str r3, [r7, #12]
  5913. 8002d9e: e049 b.n 8002e34 <HAL_RCC_GetSysClockFreq+0x178>
  5914. }
  5915. else
  5916. {
  5917. /* HSI used as PLL clock source */
  5918. pllvco = (uint32_t) ((((uint64_t) HSI_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
  5919. 8002da0: 4b2f ldr r3, [pc, #188] ; (8002e60 <HAL_RCC_GetSysClockFreq+0x1a4>)
  5920. 8002da2: 685b ldr r3, [r3, #4]
  5921. 8002da4: 099b lsrs r3, r3, #6
  5922. 8002da6: f04f 0400 mov.w r4, #0
  5923. 8002daa: f240 11ff movw r1, #511 ; 0x1ff
  5924. 8002dae: f04f 0200 mov.w r2, #0
  5925. 8002db2: ea03 0501 and.w r5, r3, r1
  5926. 8002db6: ea04 0602 and.w r6, r4, r2
  5927. 8002dba: 4629 mov r1, r5
  5928. 8002dbc: 4632 mov r2, r6
  5929. 8002dbe: f04f 0300 mov.w r3, #0
  5930. 8002dc2: f04f 0400 mov.w r4, #0
  5931. 8002dc6: 0154 lsls r4, r2, #5
  5932. 8002dc8: ea44 64d1 orr.w r4, r4, r1, lsr #27
  5933. 8002dcc: 014b lsls r3, r1, #5
  5934. 8002dce: 4619 mov r1, r3
  5935. 8002dd0: 4622 mov r2, r4
  5936. 8002dd2: 1b49 subs r1, r1, r5
  5937. 8002dd4: eb62 0206 sbc.w r2, r2, r6
  5938. 8002dd8: f04f 0300 mov.w r3, #0
  5939. 8002ddc: f04f 0400 mov.w r4, #0
  5940. 8002de0: 0194 lsls r4, r2, #6
  5941. 8002de2: ea44 6491 orr.w r4, r4, r1, lsr #26
  5942. 8002de6: 018b lsls r3, r1, #6
  5943. 8002de8: 1a5b subs r3, r3, r1
  5944. 8002dea: eb64 0402 sbc.w r4, r4, r2
  5945. 8002dee: f04f 0100 mov.w r1, #0
  5946. 8002df2: f04f 0200 mov.w r2, #0
  5947. 8002df6: 00e2 lsls r2, r4, #3
  5948. 8002df8: ea42 7253 orr.w r2, r2, r3, lsr #29
  5949. 8002dfc: 00d9 lsls r1, r3, #3
  5950. 8002dfe: 460b mov r3, r1
  5951. 8002e00: 4614 mov r4, r2
  5952. 8002e02: 195b adds r3, r3, r5
  5953. 8002e04: eb44 0406 adc.w r4, r4, r6
  5954. 8002e08: f04f 0100 mov.w r1, #0
  5955. 8002e0c: f04f 0200 mov.w r2, #0
  5956. 8002e10: 02a2 lsls r2, r4, #10
  5957. 8002e12: ea42 5293 orr.w r2, r2, r3, lsr #22
  5958. 8002e16: 0299 lsls r1, r3, #10
  5959. 8002e18: 460b mov r3, r1
  5960. 8002e1a: 4614 mov r4, r2
  5961. 8002e1c: 4618 mov r0, r3
  5962. 8002e1e: 4621 mov r1, r4
  5963. 8002e20: 687b ldr r3, [r7, #4]
  5964. 8002e22: f04f 0400 mov.w r4, #0
  5965. 8002e26: 461a mov r2, r3
  5966. 8002e28: 4623 mov r3, r4
  5967. 8002e2a: f7fd fe71 bl 8000b10 <__aeabi_uldivmod>
  5968. 8002e2e: 4603 mov r3, r0
  5969. 8002e30: 460c mov r4, r1
  5970. 8002e32: 60fb str r3, [r7, #12]
  5971. }
  5972. pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1U) *2U);
  5973. 8002e34: 4b0a ldr r3, [pc, #40] ; (8002e60 <HAL_RCC_GetSysClockFreq+0x1a4>)
  5974. 8002e36: 685b ldr r3, [r3, #4]
  5975. 8002e38: 0c1b lsrs r3, r3, #16
  5976. 8002e3a: f003 0303 and.w r3, r3, #3
  5977. 8002e3e: 3301 adds r3, #1
  5978. 8002e40: 005b lsls r3, r3, #1
  5979. 8002e42: 603b str r3, [r7, #0]
  5980. sysclockfreq = pllvco/pllp;
  5981. 8002e44: 68fa ldr r2, [r7, #12]
  5982. 8002e46: 683b ldr r3, [r7, #0]
  5983. 8002e48: fbb2 f3f3 udiv r3, r2, r3
  5984. 8002e4c: 60bb str r3, [r7, #8]
  5985. break;
  5986. 8002e4e: e002 b.n 8002e56 <HAL_RCC_GetSysClockFreq+0x19a>
  5987. }
  5988. default:
  5989. {
  5990. sysclockfreq = HSI_VALUE;
  5991. 8002e50: 4b04 ldr r3, [pc, #16] ; (8002e64 <HAL_RCC_GetSysClockFreq+0x1a8>)
  5992. 8002e52: 60bb str r3, [r7, #8]
  5993. break;
  5994. 8002e54: bf00 nop
  5995. }
  5996. }
  5997. return sysclockfreq;
  5998. 8002e56: 68bb ldr r3, [r7, #8]
  5999. }
  6000. 8002e58: 4618 mov r0, r3
  6001. 8002e5a: 3714 adds r7, #20
  6002. 8002e5c: 46bd mov sp, r7
  6003. 8002e5e: bdf0 pop {r4, r5, r6, r7, pc}
  6004. 8002e60: 40023800 .word 0x40023800
  6005. 8002e64: 00f42400 .word 0x00f42400
  6006. 8002e68: 007a1200 .word 0x007a1200
  6007. 08002e6c <HAL_RCC_GetHCLKFreq>:
  6008. * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency
  6009. * and updated within this function
  6010. * @retval HCLK frequency
  6011. */
  6012. uint32_t HAL_RCC_GetHCLKFreq(void)
  6013. {
  6014. 8002e6c: b480 push {r7}
  6015. 8002e6e: af00 add r7, sp, #0
  6016. return SystemCoreClock;
  6017. 8002e70: 4b03 ldr r3, [pc, #12] ; (8002e80 <HAL_RCC_GetHCLKFreq+0x14>)
  6018. 8002e72: 681b ldr r3, [r3, #0]
  6019. }
  6020. 8002e74: 4618 mov r0, r3
  6021. 8002e76: 46bd mov sp, r7
  6022. 8002e78: f85d 7b04 ldr.w r7, [sp], #4
  6023. 8002e7c: 4770 bx lr
  6024. 8002e7e: bf00 nop
  6025. 8002e80: 20000014 .word 0x20000014
  6026. 08002e84 <HAL_RCC_GetPCLK1Freq>:
  6027. * @note Each time PCLK1 changes, this function must be called to update the
  6028. * right PCLK1 value. Otherwise, any configuration based on this function will be incorrect.
  6029. * @retval PCLK1 frequency
  6030. */
  6031. uint32_t HAL_RCC_GetPCLK1Freq(void)
  6032. {
  6033. 8002e84: b580 push {r7, lr}
  6034. 8002e86: af00 add r7, sp, #0
  6035. /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
  6036. return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1)>> RCC_CFGR_PPRE1_Pos]);
  6037. 8002e88: f7ff fff0 bl 8002e6c <HAL_RCC_GetHCLKFreq>
  6038. 8002e8c: 4601 mov r1, r0
  6039. 8002e8e: 4b05 ldr r3, [pc, #20] ; (8002ea4 <HAL_RCC_GetPCLK1Freq+0x20>)
  6040. 8002e90: 689b ldr r3, [r3, #8]
  6041. 8002e92: 0a9b lsrs r3, r3, #10
  6042. 8002e94: f003 0307 and.w r3, r3, #7
  6043. 8002e98: 4a03 ldr r2, [pc, #12] ; (8002ea8 <HAL_RCC_GetPCLK1Freq+0x24>)
  6044. 8002e9a: 5cd3 ldrb r3, [r2, r3]
  6045. 8002e9c: fa21 f303 lsr.w r3, r1, r3
  6046. }
  6047. 8002ea0: 4618 mov r0, r3
  6048. 8002ea2: bd80 pop {r7, pc}
  6049. 8002ea4: 40023800 .word 0x40023800
  6050. 8002ea8: 08006028 .word 0x08006028
  6051. 08002eac <HAL_RCC_GetPCLK2Freq>:
  6052. * @note Each time PCLK2 changes, this function must be called to update the
  6053. * right PCLK2 value. Otherwise, any configuration based on this function will be incorrect.
  6054. * @retval PCLK2 frequency
  6055. */
  6056. uint32_t HAL_RCC_GetPCLK2Freq(void)
  6057. {
  6058. 8002eac: b580 push {r7, lr}
  6059. 8002eae: af00 add r7, sp, #0
  6060. /* Get HCLK source and Compute PCLK2 frequency ---------------------------*/
  6061. return (HAL_RCC_GetHCLKFreq()>> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2)>> RCC_CFGR_PPRE2_Pos]);
  6062. 8002eb0: f7ff ffdc bl 8002e6c <HAL_RCC_GetHCLKFreq>
  6063. 8002eb4: 4601 mov r1, r0
  6064. 8002eb6: 4b05 ldr r3, [pc, #20] ; (8002ecc <HAL_RCC_GetPCLK2Freq+0x20>)
  6065. 8002eb8: 689b ldr r3, [r3, #8]
  6066. 8002eba: 0b5b lsrs r3, r3, #13
  6067. 8002ebc: f003 0307 and.w r3, r3, #7
  6068. 8002ec0: 4a03 ldr r2, [pc, #12] ; (8002ed0 <HAL_RCC_GetPCLK2Freq+0x24>)
  6069. 8002ec2: 5cd3 ldrb r3, [r2, r3]
  6070. 8002ec4: fa21 f303 lsr.w r3, r1, r3
  6071. }
  6072. 8002ec8: 4618 mov r0, r3
  6073. 8002eca: bd80 pop {r7, pc}
  6074. 8002ecc: 40023800 .word 0x40023800
  6075. 8002ed0: 08006028 .word 0x08006028
  6076. 08002ed4 <HAL_RCCEx_PeriphCLKConfig>:
  6077. * domain (RTC and RCC_BDCR register expect BKPSRAM) will be reset
  6078. *
  6079. * @retval HAL status
  6080. */
  6081. HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
  6082. {
  6083. 8002ed4: b580 push {r7, lr}
  6084. 8002ed6: b086 sub sp, #24
  6085. 8002ed8: af00 add r7, sp, #0
  6086. 8002eda: 6078 str r0, [r7, #4]
  6087. uint32_t tickstart = 0U;
  6088. 8002edc: 2300 movs r3, #0
  6089. 8002ede: 617b str r3, [r7, #20]
  6090. uint32_t tmpreg1 = 0U;
  6091. 8002ee0: 2300 movs r3, #0
  6092. 8002ee2: 613b str r3, [r7, #16]
  6093. /* Check the parameters */
  6094. assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection));
  6095. /*---------------------------- I2S configuration ---------------------------*/
  6096. if((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) ||
  6097. 8002ee4: 687b ldr r3, [r7, #4]
  6098. 8002ee6: 681b ldr r3, [r3, #0]
  6099. 8002ee8: f003 0301 and.w r3, r3, #1
  6100. 8002eec: 2b00 cmp r3, #0
  6101. 8002eee: d105 bne.n 8002efc <HAL_RCCEx_PeriphCLKConfig+0x28>
  6102. (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_PLLI2S) == RCC_PERIPHCLK_PLLI2S))
  6103. 8002ef0: 687b ldr r3, [r7, #4]
  6104. 8002ef2: 681b ldr r3, [r3, #0]
  6105. 8002ef4: f003 0304 and.w r3, r3, #4
  6106. if((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) ||
  6107. 8002ef8: 2b00 cmp r3, #0
  6108. 8002efa: d035 beq.n 8002f68 <HAL_RCCEx_PeriphCLKConfig+0x94>
  6109. assert_param(IS_RCC_PLLI2SN_VALUE(PeriphClkInit->PLLI2S.PLLI2SN));
  6110. #if defined(STM32F411xE)
  6111. assert_param(IS_RCC_PLLI2SM_VALUE(PeriphClkInit->PLLI2S.PLLI2SM));
  6112. #endif /* STM32F411xE */
  6113. /* Disable the PLLI2S */
  6114. __HAL_RCC_PLLI2S_DISABLE();
  6115. 8002efc: 4b67 ldr r3, [pc, #412] ; (800309c <HAL_RCCEx_PeriphCLKConfig+0x1c8>)
  6116. 8002efe: 2200 movs r2, #0
  6117. 8002f00: 601a str r2, [r3, #0]
  6118. /* Get tick */
  6119. tickstart = HAL_GetTick();
  6120. 8002f02: f7ff f86d bl 8001fe0 <HAL_GetTick>
  6121. 8002f06: 6178 str r0, [r7, #20]
  6122. /* Wait till PLLI2S is disabled */
  6123. while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET)
  6124. 8002f08: e008 b.n 8002f1c <HAL_RCCEx_PeriphCLKConfig+0x48>
  6125. {
  6126. if((HAL_GetTick() - tickstart ) > PLLI2S_TIMEOUT_VALUE)
  6127. 8002f0a: f7ff f869 bl 8001fe0 <HAL_GetTick>
  6128. 8002f0e: 4602 mov r2, r0
  6129. 8002f10: 697b ldr r3, [r7, #20]
  6130. 8002f12: 1ad3 subs r3, r2, r3
  6131. 8002f14: 2b02 cmp r3, #2
  6132. 8002f16: d901 bls.n 8002f1c <HAL_RCCEx_PeriphCLKConfig+0x48>
  6133. {
  6134. /* return in case of Timeout detected */
  6135. return HAL_TIMEOUT;
  6136. 8002f18: 2303 movs r3, #3
  6137. 8002f1a: e0ba b.n 8003092 <HAL_RCCEx_PeriphCLKConfig+0x1be>
  6138. while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET)
  6139. 8002f1c: 4b60 ldr r3, [pc, #384] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6140. 8002f1e: 681b ldr r3, [r3, #0]
  6141. 8002f20: f003 6300 and.w r3, r3, #134217728 ; 0x8000000
  6142. 8002f24: 2b00 cmp r3, #0
  6143. 8002f26: d1f0 bne.n 8002f0a <HAL_RCCEx_PeriphCLKConfig+0x36>
  6144. __HAL_RCC_PLLI2S_I2SCLK_CONFIG(PeriphClkInit->PLLI2S.PLLI2SM, PeriphClkInit->PLLI2S.PLLI2SN, PeriphClkInit->PLLI2S.PLLI2SR);
  6145. #else
  6146. /* Configure the PLLI2S division factors */
  6147. /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) * (PLLI2SN/PLLM) */
  6148. /* I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */
  6149. __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , PeriphClkInit->PLLI2S.PLLI2SR);
  6150. 8002f28: 687b ldr r3, [r7, #4]
  6151. 8002f2a: 685b ldr r3, [r3, #4]
  6152. 8002f2c: 019a lsls r2, r3, #6
  6153. 8002f2e: 687b ldr r3, [r7, #4]
  6154. 8002f30: 689b ldr r3, [r3, #8]
  6155. 8002f32: 071b lsls r3, r3, #28
  6156. 8002f34: 495a ldr r1, [pc, #360] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6157. 8002f36: 4313 orrs r3, r2
  6158. 8002f38: f8c1 3084 str.w r3, [r1, #132] ; 0x84
  6159. #endif /* STM32F411xE */
  6160. /* Enable the PLLI2S */
  6161. __HAL_RCC_PLLI2S_ENABLE();
  6162. 8002f3c: 4b57 ldr r3, [pc, #348] ; (800309c <HAL_RCCEx_PeriphCLKConfig+0x1c8>)
  6163. 8002f3e: 2201 movs r2, #1
  6164. 8002f40: 601a str r2, [r3, #0]
  6165. /* Get tick */
  6166. tickstart = HAL_GetTick();
  6167. 8002f42: f7ff f84d bl 8001fe0 <HAL_GetTick>
  6168. 8002f46: 6178 str r0, [r7, #20]
  6169. /* Wait till PLLI2S is ready */
  6170. while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET)
  6171. 8002f48: e008 b.n 8002f5c <HAL_RCCEx_PeriphCLKConfig+0x88>
  6172. {
  6173. if((HAL_GetTick() - tickstart ) > PLLI2S_TIMEOUT_VALUE)
  6174. 8002f4a: f7ff f849 bl 8001fe0 <HAL_GetTick>
  6175. 8002f4e: 4602 mov r2, r0
  6176. 8002f50: 697b ldr r3, [r7, #20]
  6177. 8002f52: 1ad3 subs r3, r2, r3
  6178. 8002f54: 2b02 cmp r3, #2
  6179. 8002f56: d901 bls.n 8002f5c <HAL_RCCEx_PeriphCLKConfig+0x88>
  6180. {
  6181. /* return in case of Timeout detected */
  6182. return HAL_TIMEOUT;
  6183. 8002f58: 2303 movs r3, #3
  6184. 8002f5a: e09a b.n 8003092 <HAL_RCCEx_PeriphCLKConfig+0x1be>
  6185. while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET)
  6186. 8002f5c: 4b50 ldr r3, [pc, #320] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6187. 8002f5e: 681b ldr r3, [r3, #0]
  6188. 8002f60: f003 6300 and.w r3, r3, #134217728 ; 0x8000000
  6189. 8002f64: 2b00 cmp r3, #0
  6190. 8002f66: d0f0 beq.n 8002f4a <HAL_RCCEx_PeriphCLKConfig+0x76>
  6191. }
  6192. }
  6193. }
  6194. /*---------------------------- RTC configuration ---------------------------*/
  6195. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == (RCC_PERIPHCLK_RTC))
  6196. 8002f68: 687b ldr r3, [r7, #4]
  6197. 8002f6a: 681b ldr r3, [r3, #0]
  6198. 8002f6c: f003 0302 and.w r3, r3, #2
  6199. 8002f70: 2b00 cmp r3, #0
  6200. 8002f72: f000 8083 beq.w 800307c <HAL_RCCEx_PeriphCLKConfig+0x1a8>
  6201. {
  6202. /* Check for RTC Parameters used to output RTCCLK */
  6203. assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection));
  6204. /* Enable Power Clock*/
  6205. __HAL_RCC_PWR_CLK_ENABLE();
  6206. 8002f76: 2300 movs r3, #0
  6207. 8002f78: 60fb str r3, [r7, #12]
  6208. 8002f7a: 4b49 ldr r3, [pc, #292] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6209. 8002f7c: 6c1b ldr r3, [r3, #64] ; 0x40
  6210. 8002f7e: 4a48 ldr r2, [pc, #288] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6211. 8002f80: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
  6212. 8002f84: 6413 str r3, [r2, #64] ; 0x40
  6213. 8002f86: 4b46 ldr r3, [pc, #280] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6214. 8002f88: 6c1b ldr r3, [r3, #64] ; 0x40
  6215. 8002f8a: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
  6216. 8002f8e: 60fb str r3, [r7, #12]
  6217. 8002f90: 68fb ldr r3, [r7, #12]
  6218. /* Enable write access to Backup domain */
  6219. PWR->CR |= PWR_CR_DBP;
  6220. 8002f92: 4b44 ldr r3, [pc, #272] ; (80030a4 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
  6221. 8002f94: 681b ldr r3, [r3, #0]
  6222. 8002f96: 4a43 ldr r2, [pc, #268] ; (80030a4 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
  6223. 8002f98: f443 7380 orr.w r3, r3, #256 ; 0x100
  6224. 8002f9c: 6013 str r3, [r2, #0]
  6225. /* Get tick */
  6226. tickstart = HAL_GetTick();
  6227. 8002f9e: f7ff f81f bl 8001fe0 <HAL_GetTick>
  6228. 8002fa2: 6178 str r0, [r7, #20]
  6229. while((PWR->CR & PWR_CR_DBP) == RESET)
  6230. 8002fa4: e008 b.n 8002fb8 <HAL_RCCEx_PeriphCLKConfig+0xe4>
  6231. {
  6232. if((HAL_GetTick() - tickstart ) > RCC_DBP_TIMEOUT_VALUE)
  6233. 8002fa6: f7ff f81b bl 8001fe0 <HAL_GetTick>
  6234. 8002faa: 4602 mov r2, r0
  6235. 8002fac: 697b ldr r3, [r7, #20]
  6236. 8002fae: 1ad3 subs r3, r2, r3
  6237. 8002fb0: 2b02 cmp r3, #2
  6238. 8002fb2: d901 bls.n 8002fb8 <HAL_RCCEx_PeriphCLKConfig+0xe4>
  6239. {
  6240. return HAL_TIMEOUT;
  6241. 8002fb4: 2303 movs r3, #3
  6242. 8002fb6: e06c b.n 8003092 <HAL_RCCEx_PeriphCLKConfig+0x1be>
  6243. while((PWR->CR & PWR_CR_DBP) == RESET)
  6244. 8002fb8: 4b3a ldr r3, [pc, #232] ; (80030a4 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
  6245. 8002fba: 681b ldr r3, [r3, #0]
  6246. 8002fbc: f403 7380 and.w r3, r3, #256 ; 0x100
  6247. 8002fc0: 2b00 cmp r3, #0
  6248. 8002fc2: d0f0 beq.n 8002fa6 <HAL_RCCEx_PeriphCLKConfig+0xd2>
  6249. }
  6250. }
  6251. /* Reset the Backup domain only if the RTC Clock source selection is modified from reset value */
  6252. tmpreg1 = (RCC->BDCR & RCC_BDCR_RTCSEL);
  6253. 8002fc4: 4b36 ldr r3, [pc, #216] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6254. 8002fc6: 6f1b ldr r3, [r3, #112] ; 0x70
  6255. 8002fc8: f403 7340 and.w r3, r3, #768 ; 0x300
  6256. 8002fcc: 613b str r3, [r7, #16]
  6257. if((tmpreg1 != 0x00000000U) && ((tmpreg1) != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL)))
  6258. 8002fce: 693b ldr r3, [r7, #16]
  6259. 8002fd0: 2b00 cmp r3, #0
  6260. 8002fd2: d02f beq.n 8003034 <HAL_RCCEx_PeriphCLKConfig+0x160>
  6261. 8002fd4: 687b ldr r3, [r7, #4]
  6262. 8002fd6: 68db ldr r3, [r3, #12]
  6263. 8002fd8: f403 7340 and.w r3, r3, #768 ; 0x300
  6264. 8002fdc: 693a ldr r2, [r7, #16]
  6265. 8002fde: 429a cmp r2, r3
  6266. 8002fe0: d028 beq.n 8003034 <HAL_RCCEx_PeriphCLKConfig+0x160>
  6267. {
  6268. /* Store the content of BDCR register before the reset of Backup Domain */
  6269. tmpreg1 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
  6270. 8002fe2: 4b2f ldr r3, [pc, #188] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6271. 8002fe4: 6f1b ldr r3, [r3, #112] ; 0x70
  6272. 8002fe6: f423 7340 bic.w r3, r3, #768 ; 0x300
  6273. 8002fea: 613b str r3, [r7, #16]
  6274. /* RTC Clock selection can be changed only if the Backup Domain is reset */
  6275. __HAL_RCC_BACKUPRESET_FORCE();
  6276. 8002fec: 4b2e ldr r3, [pc, #184] ; (80030a8 <HAL_RCCEx_PeriphCLKConfig+0x1d4>)
  6277. 8002fee: 2201 movs r2, #1
  6278. 8002ff0: 601a str r2, [r3, #0]
  6279. __HAL_RCC_BACKUPRESET_RELEASE();
  6280. 8002ff2: 4b2d ldr r3, [pc, #180] ; (80030a8 <HAL_RCCEx_PeriphCLKConfig+0x1d4>)
  6281. 8002ff4: 2200 movs r2, #0
  6282. 8002ff6: 601a str r2, [r3, #0]
  6283. /* Restore the Content of BDCR register */
  6284. RCC->BDCR = tmpreg1;
  6285. 8002ff8: 4a29 ldr r2, [pc, #164] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6286. 8002ffa: 693b ldr r3, [r7, #16]
  6287. 8002ffc: 6713 str r3, [r2, #112] ; 0x70
  6288. /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */
  6289. if(HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON))
  6290. 8002ffe: 4b28 ldr r3, [pc, #160] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6291. 8003000: 6f1b ldr r3, [r3, #112] ; 0x70
  6292. 8003002: f003 0301 and.w r3, r3, #1
  6293. 8003006: 2b01 cmp r3, #1
  6294. 8003008: d114 bne.n 8003034 <HAL_RCCEx_PeriphCLKConfig+0x160>
  6295. {
  6296. /* Get tick */
  6297. tickstart = HAL_GetTick();
  6298. 800300a: f7fe ffe9 bl 8001fe0 <HAL_GetTick>
  6299. 800300e: 6178 str r0, [r7, #20]
  6300. /* Wait till LSE is ready */
  6301. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
  6302. 8003010: e00a b.n 8003028 <HAL_RCCEx_PeriphCLKConfig+0x154>
  6303. {
  6304. if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
  6305. 8003012: f7fe ffe5 bl 8001fe0 <HAL_GetTick>
  6306. 8003016: 4602 mov r2, r0
  6307. 8003018: 697b ldr r3, [r7, #20]
  6308. 800301a: 1ad3 subs r3, r2, r3
  6309. 800301c: f241 3288 movw r2, #5000 ; 0x1388
  6310. 8003020: 4293 cmp r3, r2
  6311. 8003022: d901 bls.n 8003028 <HAL_RCCEx_PeriphCLKConfig+0x154>
  6312. {
  6313. return HAL_TIMEOUT;
  6314. 8003024: 2303 movs r3, #3
  6315. 8003026: e034 b.n 8003092 <HAL_RCCEx_PeriphCLKConfig+0x1be>
  6316. while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
  6317. 8003028: 4b1d ldr r3, [pc, #116] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6318. 800302a: 6f1b ldr r3, [r3, #112] ; 0x70
  6319. 800302c: f003 0302 and.w r3, r3, #2
  6320. 8003030: 2b00 cmp r3, #0
  6321. 8003032: d0ee beq.n 8003012 <HAL_RCCEx_PeriphCLKConfig+0x13e>
  6322. }
  6323. }
  6324. }
  6325. }
  6326. __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection);
  6327. 8003034: 687b ldr r3, [r7, #4]
  6328. 8003036: 68db ldr r3, [r3, #12]
  6329. 8003038: f403 7340 and.w r3, r3, #768 ; 0x300
  6330. 800303c: f5b3 7f40 cmp.w r3, #768 ; 0x300
  6331. 8003040: d10d bne.n 800305e <HAL_RCCEx_PeriphCLKConfig+0x18a>
  6332. 8003042: 4b17 ldr r3, [pc, #92] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6333. 8003044: 689b ldr r3, [r3, #8]
  6334. 8003046: f423 12f8 bic.w r2, r3, #2031616 ; 0x1f0000
  6335. 800304a: 687b ldr r3, [r7, #4]
  6336. 800304c: 68db ldr r3, [r3, #12]
  6337. 800304e: f023 4370 bic.w r3, r3, #4026531840 ; 0xf0000000
  6338. 8003052: f423 7340 bic.w r3, r3, #768 ; 0x300
  6339. 8003056: 4912 ldr r1, [pc, #72] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6340. 8003058: 4313 orrs r3, r2
  6341. 800305a: 608b str r3, [r1, #8]
  6342. 800305c: e005 b.n 800306a <HAL_RCCEx_PeriphCLKConfig+0x196>
  6343. 800305e: 4b10 ldr r3, [pc, #64] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6344. 8003060: 689b ldr r3, [r3, #8]
  6345. 8003062: 4a0f ldr r2, [pc, #60] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6346. 8003064: f423 13f8 bic.w r3, r3, #2031616 ; 0x1f0000
  6347. 8003068: 6093 str r3, [r2, #8]
  6348. 800306a: 4b0d ldr r3, [pc, #52] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6349. 800306c: 6f1a ldr r2, [r3, #112] ; 0x70
  6350. 800306e: 687b ldr r3, [r7, #4]
  6351. 8003070: 68db ldr r3, [r3, #12]
  6352. 8003072: f3c3 030b ubfx r3, r3, #0, #12
  6353. 8003076: 490a ldr r1, [pc, #40] ; (80030a0 <HAL_RCCEx_PeriphCLKConfig+0x1cc>)
  6354. 8003078: 4313 orrs r3, r2
  6355. 800307a: 670b str r3, [r1, #112] ; 0x70
  6356. }
  6357. #if defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE)
  6358. /*---------------------------- TIM configuration ---------------------------*/
  6359. if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM) == (RCC_PERIPHCLK_TIM))
  6360. 800307c: 687b ldr r3, [r7, #4]
  6361. 800307e: 681b ldr r3, [r3, #0]
  6362. 8003080: f003 0308 and.w r3, r3, #8
  6363. 8003084: 2b00 cmp r3, #0
  6364. 8003086: d003 beq.n 8003090 <HAL_RCCEx_PeriphCLKConfig+0x1bc>
  6365. {
  6366. __HAL_RCC_TIMCLKPRESCALER(PeriphClkInit->TIMPresSelection);
  6367. 8003088: 687b ldr r3, [r7, #4]
  6368. 800308a: 7c1a ldrb r2, [r3, #16]
  6369. 800308c: 4b07 ldr r3, [pc, #28] ; (80030ac <HAL_RCCEx_PeriphCLKConfig+0x1d8>)
  6370. 800308e: 601a str r2, [r3, #0]
  6371. }
  6372. #endif /* STM32F401xC || STM32F401xE || STM32F411xE */
  6373. return HAL_OK;
  6374. 8003090: 2300 movs r3, #0
  6375. }
  6376. 8003092: 4618 mov r0, r3
  6377. 8003094: 3718 adds r7, #24
  6378. 8003096: 46bd mov sp, r7
  6379. 8003098: bd80 pop {r7, pc}
  6380. 800309a: bf00 nop
  6381. 800309c: 42470068 .word 0x42470068
  6382. 80030a0: 40023800 .word 0x40023800
  6383. 80030a4: 40007000 .word 0x40007000
  6384. 80030a8: 42470e40 .word 0x42470e40
  6385. 80030ac: 424711e0 .word 0x424711e0
  6386. 080030b0 <HAL_RTC_Init>:
  6387. * @param hrtc pointer to a RTC_HandleTypeDef structure that contains
  6388. * the configuration information for RTC.
  6389. * @retval HAL status
  6390. */
  6391. HAL_StatusTypeDef HAL_RTC_Init(RTC_HandleTypeDef *hrtc)
  6392. {
  6393. 80030b0: b580 push {r7, lr}
  6394. 80030b2: b082 sub sp, #8
  6395. 80030b4: af00 add r7, sp, #0
  6396. 80030b6: 6078 str r0, [r7, #4]
  6397. /* Check the RTC peripheral state */
  6398. if(hrtc == NULL)
  6399. 80030b8: 687b ldr r3, [r7, #4]
  6400. 80030ba: 2b00 cmp r3, #0
  6401. 80030bc: d101 bne.n 80030c2 <HAL_RTC_Init+0x12>
  6402. {
  6403. return HAL_ERROR;
  6404. 80030be: 2301 movs r3, #1
  6405. 80030c0: e083 b.n 80031ca <HAL_RTC_Init+0x11a>
  6406. {
  6407. hrtc->MspDeInitCallback = HAL_RTC_MspDeInit;
  6408. }
  6409. }
  6410. #else
  6411. if(hrtc->State == HAL_RTC_STATE_RESET)
  6412. 80030c2: 687b ldr r3, [r7, #4]
  6413. 80030c4: 7f5b ldrb r3, [r3, #29]
  6414. 80030c6: b2db uxtb r3, r3
  6415. 80030c8: 2b00 cmp r3, #0
  6416. 80030ca: d105 bne.n 80030d8 <HAL_RTC_Init+0x28>
  6417. {
  6418. /* Allocate lock resource and initialize it */
  6419. hrtc->Lock = HAL_UNLOCKED;
  6420. 80030cc: 687b ldr r3, [r7, #4]
  6421. 80030ce: 2200 movs r2, #0
  6422. 80030d0: 771a strb r2, [r3, #28]
  6423. /* Initialize RTC MSP */
  6424. HAL_RTC_MspInit(hrtc);
  6425. 80030d2: 6878 ldr r0, [r7, #4]
  6426. 80030d4: f7fe fe46 bl 8001d64 <HAL_RTC_MspInit>
  6427. }
  6428. #endif /* (USE_HAL_RTC_REGISTER_CALLBACKS) */
  6429. /* Set RTC state */
  6430. hrtc->State = HAL_RTC_STATE_BUSY;
  6431. 80030d8: 687b ldr r3, [r7, #4]
  6432. 80030da: 2202 movs r2, #2
  6433. 80030dc: 775a strb r2, [r3, #29]
  6434. /* Disable the write protection for RTC registers */
  6435. __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
  6436. 80030de: 687b ldr r3, [r7, #4]
  6437. 80030e0: 681b ldr r3, [r3, #0]
  6438. 80030e2: 22ca movs r2, #202 ; 0xca
  6439. 80030e4: 625a str r2, [r3, #36] ; 0x24
  6440. 80030e6: 687b ldr r3, [r7, #4]
  6441. 80030e8: 681b ldr r3, [r3, #0]
  6442. 80030ea: 2253 movs r2, #83 ; 0x53
  6443. 80030ec: 625a str r2, [r3, #36] ; 0x24
  6444. /* Set Initialization mode */
  6445. if(RTC_EnterInitMode(hrtc) != HAL_OK)
  6446. 80030ee: 6878 ldr r0, [r7, #4]
  6447. 80030f0: f000 fc26 bl 8003940 <RTC_EnterInitMode>
  6448. 80030f4: 4603 mov r3, r0
  6449. 80030f6: 2b00 cmp r3, #0
  6450. 80030f8: d008 beq.n 800310c <HAL_RTC_Init+0x5c>
  6451. {
  6452. /* Enable the write protection for RTC registers */
  6453. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  6454. 80030fa: 687b ldr r3, [r7, #4]
  6455. 80030fc: 681b ldr r3, [r3, #0]
  6456. 80030fe: 22ff movs r2, #255 ; 0xff
  6457. 8003100: 625a str r2, [r3, #36] ; 0x24
  6458. /* Set RTC state */
  6459. hrtc->State = HAL_RTC_STATE_ERROR;
  6460. 8003102: 687b ldr r3, [r7, #4]
  6461. 8003104: 2204 movs r2, #4
  6462. 8003106: 775a strb r2, [r3, #29]
  6463. return HAL_ERROR;
  6464. 8003108: 2301 movs r3, #1
  6465. 800310a: e05e b.n 80031ca <HAL_RTC_Init+0x11a>
  6466. }
  6467. else
  6468. {
  6469. /* Clear RTC_CR FMT, OSEL and POL Bits */
  6470. hrtc->Instance->CR &= ((uint32_t)~(RTC_CR_FMT | RTC_CR_OSEL | RTC_CR_POL));
  6471. 800310c: 687b ldr r3, [r7, #4]
  6472. 800310e: 681b ldr r3, [r3, #0]
  6473. 8003110: 689b ldr r3, [r3, #8]
  6474. 8003112: 687a ldr r2, [r7, #4]
  6475. 8003114: 6812 ldr r2, [r2, #0]
  6476. 8003116: f423 03e0 bic.w r3, r3, #7340032 ; 0x700000
  6477. 800311a: f023 0340 bic.w r3, r3, #64 ; 0x40
  6478. 800311e: 6093 str r3, [r2, #8]
  6479. /* Set RTC_CR register */
  6480. hrtc->Instance->CR |= (uint32_t)(hrtc->Init.HourFormat | hrtc->Init.OutPut | hrtc->Init.OutPutPolarity);
  6481. 8003120: 687b ldr r3, [r7, #4]
  6482. 8003122: 681b ldr r3, [r3, #0]
  6483. 8003124: 6899 ldr r1, [r3, #8]
  6484. 8003126: 687b ldr r3, [r7, #4]
  6485. 8003128: 685a ldr r2, [r3, #4]
  6486. 800312a: 687b ldr r3, [r7, #4]
  6487. 800312c: 691b ldr r3, [r3, #16]
  6488. 800312e: 431a orrs r2, r3
  6489. 8003130: 687b ldr r3, [r7, #4]
  6490. 8003132: 695b ldr r3, [r3, #20]
  6491. 8003134: 431a orrs r2, r3
  6492. 8003136: 687b ldr r3, [r7, #4]
  6493. 8003138: 681b ldr r3, [r3, #0]
  6494. 800313a: 430a orrs r2, r1
  6495. 800313c: 609a str r2, [r3, #8]
  6496. /* Configure the RTC PRER */
  6497. hrtc->Instance->PRER = (uint32_t)(hrtc->Init.SynchPrediv);
  6498. 800313e: 687b ldr r3, [r7, #4]
  6499. 8003140: 681b ldr r3, [r3, #0]
  6500. 8003142: 687a ldr r2, [r7, #4]
  6501. 8003144: 68d2 ldr r2, [r2, #12]
  6502. 8003146: 611a str r2, [r3, #16]
  6503. hrtc->Instance->PRER |= (uint32_t)(hrtc->Init.AsynchPrediv << 16U);
  6504. 8003148: 687b ldr r3, [r7, #4]
  6505. 800314a: 681b ldr r3, [r3, #0]
  6506. 800314c: 6919 ldr r1, [r3, #16]
  6507. 800314e: 687b ldr r3, [r7, #4]
  6508. 8003150: 689b ldr r3, [r3, #8]
  6509. 8003152: 041a lsls r2, r3, #16
  6510. 8003154: 687b ldr r3, [r7, #4]
  6511. 8003156: 681b ldr r3, [r3, #0]
  6512. 8003158: 430a orrs r2, r1
  6513. 800315a: 611a str r2, [r3, #16]
  6514. /* Exit Initialization mode */
  6515. hrtc->Instance->ISR &= (uint32_t)~RTC_ISR_INIT;
  6516. 800315c: 687b ldr r3, [r7, #4]
  6517. 800315e: 681b ldr r3, [r3, #0]
  6518. 8003160: 68da ldr r2, [r3, #12]
  6519. 8003162: 687b ldr r3, [r7, #4]
  6520. 8003164: 681b ldr r3, [r3, #0]
  6521. 8003166: f022 0280 bic.w r2, r2, #128 ; 0x80
  6522. 800316a: 60da str r2, [r3, #12]
  6523. /* If CR_BYPSHAD bit = 0, wait for synchro else this check is not needed */
  6524. if((hrtc->Instance->CR & RTC_CR_BYPSHAD) == RESET)
  6525. 800316c: 687b ldr r3, [r7, #4]
  6526. 800316e: 681b ldr r3, [r3, #0]
  6527. 8003170: 689b ldr r3, [r3, #8]
  6528. 8003172: f003 0320 and.w r3, r3, #32
  6529. 8003176: 2b00 cmp r3, #0
  6530. 8003178: d10e bne.n 8003198 <HAL_RTC_Init+0xe8>
  6531. {
  6532. if(HAL_RTC_WaitForSynchro(hrtc) != HAL_OK)
  6533. 800317a: 6878 ldr r0, [r7, #4]
  6534. 800317c: f000 fbb8 bl 80038f0 <HAL_RTC_WaitForSynchro>
  6535. 8003180: 4603 mov r3, r0
  6536. 8003182: 2b00 cmp r3, #0
  6537. 8003184: d008 beq.n 8003198 <HAL_RTC_Init+0xe8>
  6538. {
  6539. /* Enable the write protection for RTC registers */
  6540. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  6541. 8003186: 687b ldr r3, [r7, #4]
  6542. 8003188: 681b ldr r3, [r3, #0]
  6543. 800318a: 22ff movs r2, #255 ; 0xff
  6544. 800318c: 625a str r2, [r3, #36] ; 0x24
  6545. hrtc->State = HAL_RTC_STATE_ERROR;
  6546. 800318e: 687b ldr r3, [r7, #4]
  6547. 8003190: 2204 movs r2, #4
  6548. 8003192: 775a strb r2, [r3, #29]
  6549. return HAL_ERROR;
  6550. 8003194: 2301 movs r3, #1
  6551. 8003196: e018 b.n 80031ca <HAL_RTC_Init+0x11a>
  6552. }
  6553. }
  6554. hrtc->Instance->TAFCR &= (uint32_t)~RTC_TAFCR_ALARMOUTTYPE;
  6555. 8003198: 687b ldr r3, [r7, #4]
  6556. 800319a: 681b ldr r3, [r3, #0]
  6557. 800319c: 6c1a ldr r2, [r3, #64] ; 0x40
  6558. 800319e: 687b ldr r3, [r7, #4]
  6559. 80031a0: 681b ldr r3, [r3, #0]
  6560. 80031a2: f422 2280 bic.w r2, r2, #262144 ; 0x40000
  6561. 80031a6: 641a str r2, [r3, #64] ; 0x40
  6562. hrtc->Instance->TAFCR |= (uint32_t)(hrtc->Init.OutPutType);
  6563. 80031a8: 687b ldr r3, [r7, #4]
  6564. 80031aa: 681b ldr r3, [r3, #0]
  6565. 80031ac: 6c19 ldr r1, [r3, #64] ; 0x40
  6566. 80031ae: 687b ldr r3, [r7, #4]
  6567. 80031b0: 699a ldr r2, [r3, #24]
  6568. 80031b2: 687b ldr r3, [r7, #4]
  6569. 80031b4: 681b ldr r3, [r3, #0]
  6570. 80031b6: 430a orrs r2, r1
  6571. 80031b8: 641a str r2, [r3, #64] ; 0x40
  6572. /* Enable the write protection for RTC registers */
  6573. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  6574. 80031ba: 687b ldr r3, [r7, #4]
  6575. 80031bc: 681b ldr r3, [r3, #0]
  6576. 80031be: 22ff movs r2, #255 ; 0xff
  6577. 80031c0: 625a str r2, [r3, #36] ; 0x24
  6578. /* Set RTC state */
  6579. hrtc->State = HAL_RTC_STATE_READY;
  6580. 80031c2: 687b ldr r3, [r7, #4]
  6581. 80031c4: 2201 movs r2, #1
  6582. 80031c6: 775a strb r2, [r3, #29]
  6583. return HAL_OK;
  6584. 80031c8: 2300 movs r3, #0
  6585. }
  6586. }
  6587. 80031ca: 4618 mov r0, r3
  6588. 80031cc: 3708 adds r7, #8
  6589. 80031ce: 46bd mov sp, r7
  6590. 80031d0: bd80 pop {r7, pc}
  6591. 080031d2 <HAL_RTC_SetTime>:
  6592. * @arg RTC_FORMAT_BIN: Binary data format
  6593. * @arg RTC_FORMAT_BCD: BCD data format
  6594. * @retval HAL status
  6595. */
  6596. HAL_StatusTypeDef HAL_RTC_SetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format)
  6597. {
  6598. 80031d2: b590 push {r4, r7, lr}
  6599. 80031d4: b087 sub sp, #28
  6600. 80031d6: af00 add r7, sp, #0
  6601. 80031d8: 60f8 str r0, [r7, #12]
  6602. 80031da: 60b9 str r1, [r7, #8]
  6603. 80031dc: 607a str r2, [r7, #4]
  6604. uint32_t tmpreg = 0U;
  6605. 80031de: 2300 movs r3, #0
  6606. 80031e0: 617b str r3, [r7, #20]
  6607. assert_param(IS_RTC_FORMAT(Format));
  6608. assert_param(IS_RTC_DAYLIGHT_SAVING(sTime->DayLightSaving));
  6609. assert_param(IS_RTC_STORE_OPERATION(sTime->StoreOperation));
  6610. /* Process Locked */
  6611. __HAL_LOCK(hrtc);
  6612. 80031e2: 68fb ldr r3, [r7, #12]
  6613. 80031e4: 7f1b ldrb r3, [r3, #28]
  6614. 80031e6: 2b01 cmp r3, #1
  6615. 80031e8: d101 bne.n 80031ee <HAL_RTC_SetTime+0x1c>
  6616. 80031ea: 2302 movs r3, #2
  6617. 80031ec: e0aa b.n 8003344 <HAL_RTC_SetTime+0x172>
  6618. 80031ee: 68fb ldr r3, [r7, #12]
  6619. 80031f0: 2201 movs r2, #1
  6620. 80031f2: 771a strb r2, [r3, #28]
  6621. hrtc->State = HAL_RTC_STATE_BUSY;
  6622. 80031f4: 68fb ldr r3, [r7, #12]
  6623. 80031f6: 2202 movs r2, #2
  6624. 80031f8: 775a strb r2, [r3, #29]
  6625. if(Format == RTC_FORMAT_BIN)
  6626. 80031fa: 687b ldr r3, [r7, #4]
  6627. 80031fc: 2b00 cmp r3, #0
  6628. 80031fe: d126 bne.n 800324e <HAL_RTC_SetTime+0x7c>
  6629. {
  6630. if((hrtc->Instance->CR & RTC_CR_FMT) != (uint32_t)RESET)
  6631. 8003200: 68fb ldr r3, [r7, #12]
  6632. 8003202: 681b ldr r3, [r3, #0]
  6633. 8003204: 689b ldr r3, [r3, #8]
  6634. 8003206: f003 0340 and.w r3, r3, #64 ; 0x40
  6635. 800320a: 2b00 cmp r3, #0
  6636. 800320c: d102 bne.n 8003214 <HAL_RTC_SetTime+0x42>
  6637. assert_param(IS_RTC_HOUR12(sTime->Hours));
  6638. assert_param(IS_RTC_HOURFORMAT12(sTime->TimeFormat));
  6639. }
  6640. else
  6641. {
  6642. sTime->TimeFormat = 0x00U;
  6643. 800320e: 68bb ldr r3, [r7, #8]
  6644. 8003210: 2200 movs r2, #0
  6645. 8003212: 70da strb r2, [r3, #3]
  6646. assert_param(IS_RTC_HOUR24(sTime->Hours));
  6647. }
  6648. assert_param(IS_RTC_MINUTES(sTime->Minutes));
  6649. assert_param(IS_RTC_SECONDS(sTime->Seconds));
  6650. tmpreg = (uint32_t)(((uint32_t)RTC_ByteToBcd2(sTime->Hours) << 16U) | \
  6651. 8003214: 68bb ldr r3, [r7, #8]
  6652. 8003216: 781b ldrb r3, [r3, #0]
  6653. 8003218: 4618 mov r0, r3
  6654. 800321a: f000 fbbd bl 8003998 <RTC_ByteToBcd2>
  6655. 800321e: 4603 mov r3, r0
  6656. 8003220: 041c lsls r4, r3, #16
  6657. ((uint32_t)RTC_ByteToBcd2(sTime->Minutes) << 8U) | \
  6658. 8003222: 68bb ldr r3, [r7, #8]
  6659. 8003224: 785b ldrb r3, [r3, #1]
  6660. 8003226: 4618 mov r0, r3
  6661. 8003228: f000 fbb6 bl 8003998 <RTC_ByteToBcd2>
  6662. 800322c: 4603 mov r3, r0
  6663. 800322e: 021b lsls r3, r3, #8
  6664. tmpreg = (uint32_t)(((uint32_t)RTC_ByteToBcd2(sTime->Hours) << 16U) | \
  6665. 8003230: 431c orrs r4, r3
  6666. ((uint32_t)RTC_ByteToBcd2(sTime->Seconds)) | \
  6667. 8003232: 68bb ldr r3, [r7, #8]
  6668. 8003234: 789b ldrb r3, [r3, #2]
  6669. 8003236: 4618 mov r0, r3
  6670. 8003238: f000 fbae bl 8003998 <RTC_ByteToBcd2>
  6671. 800323c: 4603 mov r3, r0
  6672. ((uint32_t)RTC_ByteToBcd2(sTime->Minutes) << 8U) | \
  6673. 800323e: ea44 0203 orr.w r2, r4, r3
  6674. (((uint32_t)sTime->TimeFormat) << 16U));
  6675. 8003242: 68bb ldr r3, [r7, #8]
  6676. 8003244: 78db ldrb r3, [r3, #3]
  6677. 8003246: 041b lsls r3, r3, #16
  6678. tmpreg = (uint32_t)(((uint32_t)RTC_ByteToBcd2(sTime->Hours) << 16U) | \
  6679. 8003248: 4313 orrs r3, r2
  6680. 800324a: 617b str r3, [r7, #20]
  6681. 800324c: e018 b.n 8003280 <HAL_RTC_SetTime+0xae>
  6682. }
  6683. else
  6684. {
  6685. if((hrtc->Instance->CR & RTC_CR_FMT) != (uint32_t)RESET)
  6686. 800324e: 68fb ldr r3, [r7, #12]
  6687. 8003250: 681b ldr r3, [r3, #0]
  6688. 8003252: 689b ldr r3, [r3, #8]
  6689. 8003254: f003 0340 and.w r3, r3, #64 ; 0x40
  6690. 8003258: 2b00 cmp r3, #0
  6691. 800325a: d102 bne.n 8003262 <HAL_RTC_SetTime+0x90>
  6692. assert_param(IS_RTC_HOUR12(RTC_Bcd2ToByte(sTime->Hours)));
  6693. assert_param(IS_RTC_HOURFORMAT12(sTime->TimeFormat));
  6694. }
  6695. else
  6696. {
  6697. sTime->TimeFormat = 0x00U;
  6698. 800325c: 68bb ldr r3, [r7, #8]
  6699. 800325e: 2200 movs r2, #0
  6700. 8003260: 70da strb r2, [r3, #3]
  6701. assert_param(IS_RTC_HOUR24(RTC_Bcd2ToByte(sTime->Hours)));
  6702. }
  6703. assert_param(IS_RTC_MINUTES(RTC_Bcd2ToByte(sTime->Minutes)));
  6704. assert_param(IS_RTC_SECONDS(RTC_Bcd2ToByte(sTime->Seconds)));
  6705. tmpreg = (((uint32_t)(sTime->Hours) << 16U) | \
  6706. 8003262: 68bb ldr r3, [r7, #8]
  6707. 8003264: 781b ldrb r3, [r3, #0]
  6708. 8003266: 041a lsls r2, r3, #16
  6709. ((uint32_t)(sTime->Minutes) << 8U) | \
  6710. 8003268: 68bb ldr r3, [r7, #8]
  6711. 800326a: 785b ldrb r3, [r3, #1]
  6712. 800326c: 021b lsls r3, r3, #8
  6713. tmpreg = (((uint32_t)(sTime->Hours) << 16U) | \
  6714. 800326e: 4313 orrs r3, r2
  6715. ((uint32_t)sTime->Seconds) | \
  6716. 8003270: 68ba ldr r2, [r7, #8]
  6717. 8003272: 7892 ldrb r2, [r2, #2]
  6718. ((uint32_t)(sTime->Minutes) << 8U) | \
  6719. 8003274: 431a orrs r2, r3
  6720. ((uint32_t)(sTime->TimeFormat) << 16U));
  6721. 8003276: 68bb ldr r3, [r7, #8]
  6722. 8003278: 78db ldrb r3, [r3, #3]
  6723. 800327a: 041b lsls r3, r3, #16
  6724. tmpreg = (((uint32_t)(sTime->Hours) << 16U) | \
  6725. 800327c: 4313 orrs r3, r2
  6726. 800327e: 617b str r3, [r7, #20]
  6727. }
  6728. /* Disable the write protection for RTC registers */
  6729. __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
  6730. 8003280: 68fb ldr r3, [r7, #12]
  6731. 8003282: 681b ldr r3, [r3, #0]
  6732. 8003284: 22ca movs r2, #202 ; 0xca
  6733. 8003286: 625a str r2, [r3, #36] ; 0x24
  6734. 8003288: 68fb ldr r3, [r7, #12]
  6735. 800328a: 681b ldr r3, [r3, #0]
  6736. 800328c: 2253 movs r2, #83 ; 0x53
  6737. 800328e: 625a str r2, [r3, #36] ; 0x24
  6738. /* Set Initialization mode */
  6739. if(RTC_EnterInitMode(hrtc) != HAL_OK)
  6740. 8003290: 68f8 ldr r0, [r7, #12]
  6741. 8003292: f000 fb55 bl 8003940 <RTC_EnterInitMode>
  6742. 8003296: 4603 mov r3, r0
  6743. 8003298: 2b00 cmp r3, #0
  6744. 800329a: d00b beq.n 80032b4 <HAL_RTC_SetTime+0xe2>
  6745. {
  6746. /* Enable the write protection for RTC registers */
  6747. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  6748. 800329c: 68fb ldr r3, [r7, #12]
  6749. 800329e: 681b ldr r3, [r3, #0]
  6750. 80032a0: 22ff movs r2, #255 ; 0xff
  6751. 80032a2: 625a str r2, [r3, #36] ; 0x24
  6752. /* Set RTC state */
  6753. hrtc->State = HAL_RTC_STATE_ERROR;
  6754. 80032a4: 68fb ldr r3, [r7, #12]
  6755. 80032a6: 2204 movs r2, #4
  6756. 80032a8: 775a strb r2, [r3, #29]
  6757. /* Process Unlocked */
  6758. __HAL_UNLOCK(hrtc);
  6759. 80032aa: 68fb ldr r3, [r7, #12]
  6760. 80032ac: 2200 movs r2, #0
  6761. 80032ae: 771a strb r2, [r3, #28]
  6762. return HAL_ERROR;
  6763. 80032b0: 2301 movs r3, #1
  6764. 80032b2: e047 b.n 8003344 <HAL_RTC_SetTime+0x172>
  6765. }
  6766. else
  6767. {
  6768. /* Set the RTC_TR register */
  6769. hrtc->Instance->TR = (uint32_t)(tmpreg & RTC_TR_RESERVED_MASK);
  6770. 80032b4: 68fb ldr r3, [r7, #12]
  6771. 80032b6: 681a ldr r2, [r3, #0]
  6772. 80032b8: 697b ldr r3, [r7, #20]
  6773. 80032ba: f003 337f and.w r3, r3, #2139062143 ; 0x7f7f7f7f
  6774. 80032be: f023 43fe bic.w r3, r3, #2130706432 ; 0x7f000000
  6775. 80032c2: 6013 str r3, [r2, #0]
  6776. /* Clear the bits to be configured */
  6777. hrtc->Instance->CR &= (uint32_t)~RTC_CR_BCK;
  6778. 80032c4: 68fb ldr r3, [r7, #12]
  6779. 80032c6: 681b ldr r3, [r3, #0]
  6780. 80032c8: 689a ldr r2, [r3, #8]
  6781. 80032ca: 68fb ldr r3, [r7, #12]
  6782. 80032cc: 681b ldr r3, [r3, #0]
  6783. 80032ce: f422 2280 bic.w r2, r2, #262144 ; 0x40000
  6784. 80032d2: 609a str r2, [r3, #8]
  6785. /* Configure the RTC_CR register */
  6786. hrtc->Instance->CR |= (uint32_t)(sTime->DayLightSaving | sTime->StoreOperation);
  6787. 80032d4: 68fb ldr r3, [r7, #12]
  6788. 80032d6: 681b ldr r3, [r3, #0]
  6789. 80032d8: 6899 ldr r1, [r3, #8]
  6790. 80032da: 68bb ldr r3, [r7, #8]
  6791. 80032dc: 68da ldr r2, [r3, #12]
  6792. 80032de: 68bb ldr r3, [r7, #8]
  6793. 80032e0: 691b ldr r3, [r3, #16]
  6794. 80032e2: 431a orrs r2, r3
  6795. 80032e4: 68fb ldr r3, [r7, #12]
  6796. 80032e6: 681b ldr r3, [r3, #0]
  6797. 80032e8: 430a orrs r2, r1
  6798. 80032ea: 609a str r2, [r3, #8]
  6799. /* Exit Initialization mode */
  6800. hrtc->Instance->ISR &= (uint32_t)~RTC_ISR_INIT;
  6801. 80032ec: 68fb ldr r3, [r7, #12]
  6802. 80032ee: 681b ldr r3, [r3, #0]
  6803. 80032f0: 68da ldr r2, [r3, #12]
  6804. 80032f2: 68fb ldr r3, [r7, #12]
  6805. 80032f4: 681b ldr r3, [r3, #0]
  6806. 80032f6: f022 0280 bic.w r2, r2, #128 ; 0x80
  6807. 80032fa: 60da str r2, [r3, #12]
  6808. /* If CR_BYPSHAD bit = 0, wait for synchro else this check is not needed */
  6809. if((hrtc->Instance->CR & RTC_CR_BYPSHAD) == RESET)
  6810. 80032fc: 68fb ldr r3, [r7, #12]
  6811. 80032fe: 681b ldr r3, [r3, #0]
  6812. 8003300: 689b ldr r3, [r3, #8]
  6813. 8003302: f003 0320 and.w r3, r3, #32
  6814. 8003306: 2b00 cmp r3, #0
  6815. 8003308: d111 bne.n 800332e <HAL_RTC_SetTime+0x15c>
  6816. {
  6817. if(HAL_RTC_WaitForSynchro(hrtc) != HAL_OK)
  6818. 800330a: 68f8 ldr r0, [r7, #12]
  6819. 800330c: f000 faf0 bl 80038f0 <HAL_RTC_WaitForSynchro>
  6820. 8003310: 4603 mov r3, r0
  6821. 8003312: 2b00 cmp r3, #0
  6822. 8003314: d00b beq.n 800332e <HAL_RTC_SetTime+0x15c>
  6823. {
  6824. /* Enable the write protection for RTC registers */
  6825. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  6826. 8003316: 68fb ldr r3, [r7, #12]
  6827. 8003318: 681b ldr r3, [r3, #0]
  6828. 800331a: 22ff movs r2, #255 ; 0xff
  6829. 800331c: 625a str r2, [r3, #36] ; 0x24
  6830. hrtc->State = HAL_RTC_STATE_ERROR;
  6831. 800331e: 68fb ldr r3, [r7, #12]
  6832. 8003320: 2204 movs r2, #4
  6833. 8003322: 775a strb r2, [r3, #29]
  6834. /* Process Unlocked */
  6835. __HAL_UNLOCK(hrtc);
  6836. 8003324: 68fb ldr r3, [r7, #12]
  6837. 8003326: 2200 movs r2, #0
  6838. 8003328: 771a strb r2, [r3, #28]
  6839. return HAL_ERROR;
  6840. 800332a: 2301 movs r3, #1
  6841. 800332c: e00a b.n 8003344 <HAL_RTC_SetTime+0x172>
  6842. }
  6843. }
  6844. /* Enable the write protection for RTC registers */
  6845. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  6846. 800332e: 68fb ldr r3, [r7, #12]
  6847. 8003330: 681b ldr r3, [r3, #0]
  6848. 8003332: 22ff movs r2, #255 ; 0xff
  6849. 8003334: 625a str r2, [r3, #36] ; 0x24
  6850. hrtc->State = HAL_RTC_STATE_READY;
  6851. 8003336: 68fb ldr r3, [r7, #12]
  6852. 8003338: 2201 movs r2, #1
  6853. 800333a: 775a strb r2, [r3, #29]
  6854. __HAL_UNLOCK(hrtc);
  6855. 800333c: 68fb ldr r3, [r7, #12]
  6856. 800333e: 2200 movs r2, #0
  6857. 8003340: 771a strb r2, [r3, #28]
  6858. return HAL_OK;
  6859. 8003342: 2300 movs r3, #0
  6860. }
  6861. }
  6862. 8003344: 4618 mov r0, r3
  6863. 8003346: 371c adds r7, #28
  6864. 8003348: 46bd mov sp, r7
  6865. 800334a: bd90 pop {r4, r7, pc}
  6866. 0800334c <HAL_RTC_GetTime>:
  6867. * in the higher-order calendar shadow registers to ensure consistency between the time and date values.
  6868. * Reading RTC current time locks the values in calendar shadow registers until current date is read.
  6869. * @retval HAL status
  6870. */
  6871. HAL_StatusTypeDef HAL_RTC_GetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format)
  6872. {
  6873. 800334c: b580 push {r7, lr}
  6874. 800334e: b086 sub sp, #24
  6875. 8003350: af00 add r7, sp, #0
  6876. 8003352: 60f8 str r0, [r7, #12]
  6877. 8003354: 60b9 str r1, [r7, #8]
  6878. 8003356: 607a str r2, [r7, #4]
  6879. uint32_t tmpreg = 0U;
  6880. 8003358: 2300 movs r3, #0
  6881. 800335a: 617b str r3, [r7, #20]
  6882. /* Check the parameters */
  6883. assert_param(IS_RTC_FORMAT(Format));
  6884. /* Get subseconds structure field from the corresponding register */
  6885. sTime->SubSeconds = (uint32_t)(hrtc->Instance->SSR);
  6886. 800335c: 68fb ldr r3, [r7, #12]
  6887. 800335e: 681b ldr r3, [r3, #0]
  6888. 8003360: 6a9a ldr r2, [r3, #40] ; 0x28
  6889. 8003362: 68bb ldr r3, [r7, #8]
  6890. 8003364: 605a str r2, [r3, #4]
  6891. /* Get SecondFraction structure field from the corresponding register field*/
  6892. sTime->SecondFraction = (uint32_t)(hrtc->Instance->PRER & RTC_PRER_PREDIV_S);
  6893. 8003366: 68fb ldr r3, [r7, #12]
  6894. 8003368: 681b ldr r3, [r3, #0]
  6895. 800336a: 691b ldr r3, [r3, #16]
  6896. 800336c: f3c3 020e ubfx r2, r3, #0, #15
  6897. 8003370: 68bb ldr r3, [r7, #8]
  6898. 8003372: 609a str r2, [r3, #8]
  6899. /* Get the TR register */
  6900. tmpreg = (uint32_t)(hrtc->Instance->TR & RTC_TR_RESERVED_MASK);
  6901. 8003374: 68fb ldr r3, [r7, #12]
  6902. 8003376: 681b ldr r3, [r3, #0]
  6903. 8003378: 681b ldr r3, [r3, #0]
  6904. 800337a: f003 337f and.w r3, r3, #2139062143 ; 0x7f7f7f7f
  6905. 800337e: f023 43fe bic.w r3, r3, #2130706432 ; 0x7f000000
  6906. 8003382: 617b str r3, [r7, #20]
  6907. /* Fill the structure fields with the read parameters */
  6908. sTime->Hours = (uint8_t)((tmpreg & (RTC_TR_HT | RTC_TR_HU)) >> 16U);
  6909. 8003384: 697b ldr r3, [r7, #20]
  6910. 8003386: 0c1b lsrs r3, r3, #16
  6911. 8003388: b2db uxtb r3, r3
  6912. 800338a: f003 033f and.w r3, r3, #63 ; 0x3f
  6913. 800338e: b2da uxtb r2, r3
  6914. 8003390: 68bb ldr r3, [r7, #8]
  6915. 8003392: 701a strb r2, [r3, #0]
  6916. sTime->Minutes = (uint8_t)((tmpreg & (RTC_TR_MNT | RTC_TR_MNU)) >> 8U);
  6917. 8003394: 697b ldr r3, [r7, #20]
  6918. 8003396: 0a1b lsrs r3, r3, #8
  6919. 8003398: b2db uxtb r3, r3
  6920. 800339a: f003 037f and.w r3, r3, #127 ; 0x7f
  6921. 800339e: b2da uxtb r2, r3
  6922. 80033a0: 68bb ldr r3, [r7, #8]
  6923. 80033a2: 705a strb r2, [r3, #1]
  6924. sTime->Seconds = (uint8_t)(tmpreg & (RTC_TR_ST | RTC_TR_SU));
  6925. 80033a4: 697b ldr r3, [r7, #20]
  6926. 80033a6: b2db uxtb r3, r3
  6927. 80033a8: f003 037f and.w r3, r3, #127 ; 0x7f
  6928. 80033ac: b2da uxtb r2, r3
  6929. 80033ae: 68bb ldr r3, [r7, #8]
  6930. 80033b0: 709a strb r2, [r3, #2]
  6931. sTime->TimeFormat = (uint8_t)((tmpreg & (RTC_TR_PM)) >> 16U);
  6932. 80033b2: 697b ldr r3, [r7, #20]
  6933. 80033b4: 0c1b lsrs r3, r3, #16
  6934. 80033b6: b2db uxtb r3, r3
  6935. 80033b8: f003 0340 and.w r3, r3, #64 ; 0x40
  6936. 80033bc: b2da uxtb r2, r3
  6937. 80033be: 68bb ldr r3, [r7, #8]
  6938. 80033c0: 70da strb r2, [r3, #3]
  6939. /* Check the input parameters format */
  6940. if(Format == RTC_FORMAT_BIN)
  6941. 80033c2: 687b ldr r3, [r7, #4]
  6942. 80033c4: 2b00 cmp r3, #0
  6943. 80033c6: d11a bne.n 80033fe <HAL_RTC_GetTime+0xb2>
  6944. {
  6945. /* Convert the time structure parameters to Binary format */
  6946. sTime->Hours = (uint8_t)RTC_Bcd2ToByte(sTime->Hours);
  6947. 80033c8: 68bb ldr r3, [r7, #8]
  6948. 80033ca: 781b ldrb r3, [r3, #0]
  6949. 80033cc: 4618 mov r0, r3
  6950. 80033ce: f000 fb01 bl 80039d4 <RTC_Bcd2ToByte>
  6951. 80033d2: 4603 mov r3, r0
  6952. 80033d4: 461a mov r2, r3
  6953. 80033d6: 68bb ldr r3, [r7, #8]
  6954. 80033d8: 701a strb r2, [r3, #0]
  6955. sTime->Minutes = (uint8_t)RTC_Bcd2ToByte(sTime->Minutes);
  6956. 80033da: 68bb ldr r3, [r7, #8]
  6957. 80033dc: 785b ldrb r3, [r3, #1]
  6958. 80033de: 4618 mov r0, r3
  6959. 80033e0: f000 faf8 bl 80039d4 <RTC_Bcd2ToByte>
  6960. 80033e4: 4603 mov r3, r0
  6961. 80033e6: 461a mov r2, r3
  6962. 80033e8: 68bb ldr r3, [r7, #8]
  6963. 80033ea: 705a strb r2, [r3, #1]
  6964. sTime->Seconds = (uint8_t)RTC_Bcd2ToByte(sTime->Seconds);
  6965. 80033ec: 68bb ldr r3, [r7, #8]
  6966. 80033ee: 789b ldrb r3, [r3, #2]
  6967. 80033f0: 4618 mov r0, r3
  6968. 80033f2: f000 faef bl 80039d4 <RTC_Bcd2ToByte>
  6969. 80033f6: 4603 mov r3, r0
  6970. 80033f8: 461a mov r2, r3
  6971. 80033fa: 68bb ldr r3, [r7, #8]
  6972. 80033fc: 709a strb r2, [r3, #2]
  6973. }
  6974. return HAL_OK;
  6975. 80033fe: 2300 movs r3, #0
  6976. }
  6977. 8003400: 4618 mov r0, r3
  6978. 8003402: 3718 adds r7, #24
  6979. 8003404: 46bd mov sp, r7
  6980. 8003406: bd80 pop {r7, pc}
  6981. 08003408 <HAL_RTC_SetDate>:
  6982. * @arg RTC_FORMAT_BIN: Binary data format
  6983. * @arg RTC_FORMAT_BCD: BCD data format
  6984. * @retval HAL status
  6985. */
  6986. HAL_StatusTypeDef HAL_RTC_SetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format)
  6987. {
  6988. 8003408: b590 push {r4, r7, lr}
  6989. 800340a: b087 sub sp, #28
  6990. 800340c: af00 add r7, sp, #0
  6991. 800340e: 60f8 str r0, [r7, #12]
  6992. 8003410: 60b9 str r1, [r7, #8]
  6993. 8003412: 607a str r2, [r7, #4]
  6994. uint32_t datetmpreg = 0U;
  6995. 8003414: 2300 movs r3, #0
  6996. 8003416: 617b str r3, [r7, #20]
  6997. /* Check the parameters */
  6998. assert_param(IS_RTC_FORMAT(Format));
  6999. /* Process Locked */
  7000. __HAL_LOCK(hrtc);
  7001. 8003418: 68fb ldr r3, [r7, #12]
  7002. 800341a: 7f1b ldrb r3, [r3, #28]
  7003. 800341c: 2b01 cmp r3, #1
  7004. 800341e: d101 bne.n 8003424 <HAL_RTC_SetDate+0x1c>
  7005. 8003420: 2302 movs r3, #2
  7006. 8003422: e094 b.n 800354e <HAL_RTC_SetDate+0x146>
  7007. 8003424: 68fb ldr r3, [r7, #12]
  7008. 8003426: 2201 movs r2, #1
  7009. 8003428: 771a strb r2, [r3, #28]
  7010. hrtc->State = HAL_RTC_STATE_BUSY;
  7011. 800342a: 68fb ldr r3, [r7, #12]
  7012. 800342c: 2202 movs r2, #2
  7013. 800342e: 775a strb r2, [r3, #29]
  7014. if((Format == RTC_FORMAT_BIN) && ((sDate->Month & 0x10U) == 0x10U))
  7015. 8003430: 687b ldr r3, [r7, #4]
  7016. 8003432: 2b00 cmp r3, #0
  7017. 8003434: d10e bne.n 8003454 <HAL_RTC_SetDate+0x4c>
  7018. 8003436: 68bb ldr r3, [r7, #8]
  7019. 8003438: 785b ldrb r3, [r3, #1]
  7020. 800343a: f003 0310 and.w r3, r3, #16
  7021. 800343e: 2b00 cmp r3, #0
  7022. 8003440: d008 beq.n 8003454 <HAL_RTC_SetDate+0x4c>
  7023. {
  7024. sDate->Month = (uint8_t)((sDate->Month & (uint8_t)~(0x10U)) + (uint8_t)0x0AU);
  7025. 8003442: 68bb ldr r3, [r7, #8]
  7026. 8003444: 785b ldrb r3, [r3, #1]
  7027. 8003446: f023 0310 bic.w r3, r3, #16
  7028. 800344a: b2db uxtb r3, r3
  7029. 800344c: 330a adds r3, #10
  7030. 800344e: b2da uxtb r2, r3
  7031. 8003450: 68bb ldr r3, [r7, #8]
  7032. 8003452: 705a strb r2, [r3, #1]
  7033. }
  7034. assert_param(IS_RTC_WEEKDAY(sDate->WeekDay));
  7035. if(Format == RTC_FORMAT_BIN)
  7036. 8003454: 687b ldr r3, [r7, #4]
  7037. 8003456: 2b00 cmp r3, #0
  7038. 8003458: d11c bne.n 8003494 <HAL_RTC_SetDate+0x8c>
  7039. {
  7040. assert_param(IS_RTC_YEAR(sDate->Year));
  7041. assert_param(IS_RTC_MONTH(sDate->Month));
  7042. assert_param(IS_RTC_DATE(sDate->Date));
  7043. datetmpreg = (((uint32_t)RTC_ByteToBcd2(sDate->Year) << 16U) | \
  7044. 800345a: 68bb ldr r3, [r7, #8]
  7045. 800345c: 78db ldrb r3, [r3, #3]
  7046. 800345e: 4618 mov r0, r3
  7047. 8003460: f000 fa9a bl 8003998 <RTC_ByteToBcd2>
  7048. 8003464: 4603 mov r3, r0
  7049. 8003466: 041c lsls r4, r3, #16
  7050. ((uint32_t)RTC_ByteToBcd2(sDate->Month) << 8U) | \
  7051. 8003468: 68bb ldr r3, [r7, #8]
  7052. 800346a: 785b ldrb r3, [r3, #1]
  7053. 800346c: 4618 mov r0, r3
  7054. 800346e: f000 fa93 bl 8003998 <RTC_ByteToBcd2>
  7055. 8003472: 4603 mov r3, r0
  7056. 8003474: 021b lsls r3, r3, #8
  7057. datetmpreg = (((uint32_t)RTC_ByteToBcd2(sDate->Year) << 16U) | \
  7058. 8003476: 431c orrs r4, r3
  7059. ((uint32_t)RTC_ByteToBcd2(sDate->Date)) | \
  7060. 8003478: 68bb ldr r3, [r7, #8]
  7061. 800347a: 789b ldrb r3, [r3, #2]
  7062. 800347c: 4618 mov r0, r3
  7063. 800347e: f000 fa8b bl 8003998 <RTC_ByteToBcd2>
  7064. 8003482: 4603 mov r3, r0
  7065. ((uint32_t)RTC_ByteToBcd2(sDate->Month) << 8U) | \
  7066. 8003484: ea44 0203 orr.w r2, r4, r3
  7067. ((uint32_t)sDate->WeekDay << 13U));
  7068. 8003488: 68bb ldr r3, [r7, #8]
  7069. 800348a: 781b ldrb r3, [r3, #0]
  7070. 800348c: 035b lsls r3, r3, #13
  7071. datetmpreg = (((uint32_t)RTC_ByteToBcd2(sDate->Year) << 16U) | \
  7072. 800348e: 4313 orrs r3, r2
  7073. 8003490: 617b str r3, [r7, #20]
  7074. 8003492: e00e b.n 80034b2 <HAL_RTC_SetDate+0xaa>
  7075. {
  7076. assert_param(IS_RTC_YEAR(RTC_Bcd2ToByte(sDate->Year)));
  7077. assert_param(IS_RTC_MONTH(RTC_Bcd2ToByte(sDate->Month)));
  7078. assert_param(IS_RTC_DATE(RTC_Bcd2ToByte(sDate->Date)));
  7079. datetmpreg = ((((uint32_t)sDate->Year) << 16U) | \
  7080. 8003494: 68bb ldr r3, [r7, #8]
  7081. 8003496: 78db ldrb r3, [r3, #3]
  7082. 8003498: 041a lsls r2, r3, #16
  7083. (((uint32_t)sDate->Month) << 8U) | \
  7084. 800349a: 68bb ldr r3, [r7, #8]
  7085. 800349c: 785b ldrb r3, [r3, #1]
  7086. 800349e: 021b lsls r3, r3, #8
  7087. datetmpreg = ((((uint32_t)sDate->Year) << 16U) | \
  7088. 80034a0: 4313 orrs r3, r2
  7089. ((uint32_t)sDate->Date) | \
  7090. 80034a2: 68ba ldr r2, [r7, #8]
  7091. 80034a4: 7892 ldrb r2, [r2, #2]
  7092. (((uint32_t)sDate->Month) << 8U) | \
  7093. 80034a6: 431a orrs r2, r3
  7094. (((uint32_t)sDate->WeekDay) << 13U));
  7095. 80034a8: 68bb ldr r3, [r7, #8]
  7096. 80034aa: 781b ldrb r3, [r3, #0]
  7097. 80034ac: 035b lsls r3, r3, #13
  7098. datetmpreg = ((((uint32_t)sDate->Year) << 16U) | \
  7099. 80034ae: 4313 orrs r3, r2
  7100. 80034b0: 617b str r3, [r7, #20]
  7101. }
  7102. /* Disable the write protection for RTC registers */
  7103. __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
  7104. 80034b2: 68fb ldr r3, [r7, #12]
  7105. 80034b4: 681b ldr r3, [r3, #0]
  7106. 80034b6: 22ca movs r2, #202 ; 0xca
  7107. 80034b8: 625a str r2, [r3, #36] ; 0x24
  7108. 80034ba: 68fb ldr r3, [r7, #12]
  7109. 80034bc: 681b ldr r3, [r3, #0]
  7110. 80034be: 2253 movs r2, #83 ; 0x53
  7111. 80034c0: 625a str r2, [r3, #36] ; 0x24
  7112. /* Set Initialization mode */
  7113. if(RTC_EnterInitMode(hrtc) != HAL_OK)
  7114. 80034c2: 68f8 ldr r0, [r7, #12]
  7115. 80034c4: f000 fa3c bl 8003940 <RTC_EnterInitMode>
  7116. 80034c8: 4603 mov r3, r0
  7117. 80034ca: 2b00 cmp r3, #0
  7118. 80034cc: d00b beq.n 80034e6 <HAL_RTC_SetDate+0xde>
  7119. {
  7120. /* Enable the write protection for RTC registers */
  7121. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  7122. 80034ce: 68fb ldr r3, [r7, #12]
  7123. 80034d0: 681b ldr r3, [r3, #0]
  7124. 80034d2: 22ff movs r2, #255 ; 0xff
  7125. 80034d4: 625a str r2, [r3, #36] ; 0x24
  7126. /* Set RTC state*/
  7127. hrtc->State = HAL_RTC_STATE_ERROR;
  7128. 80034d6: 68fb ldr r3, [r7, #12]
  7129. 80034d8: 2204 movs r2, #4
  7130. 80034da: 775a strb r2, [r3, #29]
  7131. /* Process Unlocked */
  7132. __HAL_UNLOCK(hrtc);
  7133. 80034dc: 68fb ldr r3, [r7, #12]
  7134. 80034de: 2200 movs r2, #0
  7135. 80034e0: 771a strb r2, [r3, #28]
  7136. return HAL_ERROR;
  7137. 80034e2: 2301 movs r3, #1
  7138. 80034e4: e033 b.n 800354e <HAL_RTC_SetDate+0x146>
  7139. }
  7140. else
  7141. {
  7142. /* Set the RTC_DR register */
  7143. hrtc->Instance->DR = (uint32_t)(datetmpreg & RTC_DR_RESERVED_MASK);
  7144. 80034e6: 68fb ldr r3, [r7, #12]
  7145. 80034e8: 681a ldr r2, [r3, #0]
  7146. 80034ea: 697b ldr r3, [r7, #20]
  7147. 80034ec: f023 437f bic.w r3, r3, #4278190080 ; 0xff000000
  7148. 80034f0: f023 03c0 bic.w r3, r3, #192 ; 0xc0
  7149. 80034f4: 6053 str r3, [r2, #4]
  7150. /* Exit Initialization mode */
  7151. hrtc->Instance->ISR &= (uint32_t)~RTC_ISR_INIT;
  7152. 80034f6: 68fb ldr r3, [r7, #12]
  7153. 80034f8: 681b ldr r3, [r3, #0]
  7154. 80034fa: 68da ldr r2, [r3, #12]
  7155. 80034fc: 68fb ldr r3, [r7, #12]
  7156. 80034fe: 681b ldr r3, [r3, #0]
  7157. 8003500: f022 0280 bic.w r2, r2, #128 ; 0x80
  7158. 8003504: 60da str r2, [r3, #12]
  7159. /* If CR_BYPSHAD bit = 0, wait for synchro else this check is not needed */
  7160. if((hrtc->Instance->CR & RTC_CR_BYPSHAD) == RESET)
  7161. 8003506: 68fb ldr r3, [r7, #12]
  7162. 8003508: 681b ldr r3, [r3, #0]
  7163. 800350a: 689b ldr r3, [r3, #8]
  7164. 800350c: f003 0320 and.w r3, r3, #32
  7165. 8003510: 2b00 cmp r3, #0
  7166. 8003512: d111 bne.n 8003538 <HAL_RTC_SetDate+0x130>
  7167. {
  7168. if(HAL_RTC_WaitForSynchro(hrtc) != HAL_OK)
  7169. 8003514: 68f8 ldr r0, [r7, #12]
  7170. 8003516: f000 f9eb bl 80038f0 <HAL_RTC_WaitForSynchro>
  7171. 800351a: 4603 mov r3, r0
  7172. 800351c: 2b00 cmp r3, #0
  7173. 800351e: d00b beq.n 8003538 <HAL_RTC_SetDate+0x130>
  7174. {
  7175. /* Enable the write protection for RTC registers */
  7176. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  7177. 8003520: 68fb ldr r3, [r7, #12]
  7178. 8003522: 681b ldr r3, [r3, #0]
  7179. 8003524: 22ff movs r2, #255 ; 0xff
  7180. 8003526: 625a str r2, [r3, #36] ; 0x24
  7181. hrtc->State = HAL_RTC_STATE_ERROR;
  7182. 8003528: 68fb ldr r3, [r7, #12]
  7183. 800352a: 2204 movs r2, #4
  7184. 800352c: 775a strb r2, [r3, #29]
  7185. /* Process Unlocked */
  7186. __HAL_UNLOCK(hrtc);
  7187. 800352e: 68fb ldr r3, [r7, #12]
  7188. 8003530: 2200 movs r2, #0
  7189. 8003532: 771a strb r2, [r3, #28]
  7190. return HAL_ERROR;
  7191. 8003534: 2301 movs r3, #1
  7192. 8003536: e00a b.n 800354e <HAL_RTC_SetDate+0x146>
  7193. }
  7194. }
  7195. /* Enable the write protection for RTC registers */
  7196. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  7197. 8003538: 68fb ldr r3, [r7, #12]
  7198. 800353a: 681b ldr r3, [r3, #0]
  7199. 800353c: 22ff movs r2, #255 ; 0xff
  7200. 800353e: 625a str r2, [r3, #36] ; 0x24
  7201. hrtc->State = HAL_RTC_STATE_READY ;
  7202. 8003540: 68fb ldr r3, [r7, #12]
  7203. 8003542: 2201 movs r2, #1
  7204. 8003544: 775a strb r2, [r3, #29]
  7205. /* Process Unlocked */
  7206. __HAL_UNLOCK(hrtc);
  7207. 8003546: 68fb ldr r3, [r7, #12]
  7208. 8003548: 2200 movs r2, #0
  7209. 800354a: 771a strb r2, [r3, #28]
  7210. return HAL_OK;
  7211. 800354c: 2300 movs r3, #0
  7212. }
  7213. }
  7214. 800354e: 4618 mov r0, r3
  7215. 8003550: 371c adds r7, #28
  7216. 8003552: 46bd mov sp, r7
  7217. 8003554: bd90 pop {r4, r7, pc}
  7218. 08003556 <HAL_RTC_GetDate>:
  7219. * in the higher-order calendar shadow registers to ensure consistency between the time and date values.
  7220. * Reading RTC current time locks the values in calendar shadow registers until Current date is read.
  7221. * @retval HAL status
  7222. */
  7223. HAL_StatusTypeDef HAL_RTC_GetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format)
  7224. {
  7225. 8003556: b580 push {r7, lr}
  7226. 8003558: b086 sub sp, #24
  7227. 800355a: af00 add r7, sp, #0
  7228. 800355c: 60f8 str r0, [r7, #12]
  7229. 800355e: 60b9 str r1, [r7, #8]
  7230. 8003560: 607a str r2, [r7, #4]
  7231. uint32_t datetmpreg = 0U;
  7232. 8003562: 2300 movs r3, #0
  7233. 8003564: 617b str r3, [r7, #20]
  7234. /* Check the parameters */
  7235. assert_param(IS_RTC_FORMAT(Format));
  7236. /* Get the DR register */
  7237. datetmpreg = (uint32_t)(hrtc->Instance->DR & RTC_DR_RESERVED_MASK);
  7238. 8003566: 68fb ldr r3, [r7, #12]
  7239. 8003568: 681b ldr r3, [r3, #0]
  7240. 800356a: 685b ldr r3, [r3, #4]
  7241. 800356c: f023 437f bic.w r3, r3, #4278190080 ; 0xff000000
  7242. 8003570: f023 03c0 bic.w r3, r3, #192 ; 0xc0
  7243. 8003574: 617b str r3, [r7, #20]
  7244. /* Fill the structure fields with the read parameters */
  7245. sDate->Year = (uint8_t)((datetmpreg & (RTC_DR_YT | RTC_DR_YU)) >> 16U);
  7246. 8003576: 697b ldr r3, [r7, #20]
  7247. 8003578: 0c1b lsrs r3, r3, #16
  7248. 800357a: b2da uxtb r2, r3
  7249. 800357c: 68bb ldr r3, [r7, #8]
  7250. 800357e: 70da strb r2, [r3, #3]
  7251. sDate->Month = (uint8_t)((datetmpreg & (RTC_DR_MT | RTC_DR_MU)) >> 8U);
  7252. 8003580: 697b ldr r3, [r7, #20]
  7253. 8003582: 0a1b lsrs r3, r3, #8
  7254. 8003584: b2db uxtb r3, r3
  7255. 8003586: f003 031f and.w r3, r3, #31
  7256. 800358a: b2da uxtb r2, r3
  7257. 800358c: 68bb ldr r3, [r7, #8]
  7258. 800358e: 705a strb r2, [r3, #1]
  7259. sDate->Date = (uint8_t)(datetmpreg & (RTC_DR_DT | RTC_DR_DU));
  7260. 8003590: 697b ldr r3, [r7, #20]
  7261. 8003592: b2db uxtb r3, r3
  7262. 8003594: f003 033f and.w r3, r3, #63 ; 0x3f
  7263. 8003598: b2da uxtb r2, r3
  7264. 800359a: 68bb ldr r3, [r7, #8]
  7265. 800359c: 709a strb r2, [r3, #2]
  7266. sDate->WeekDay = (uint8_t)((datetmpreg & (RTC_DR_WDU)) >> 13U);
  7267. 800359e: 697b ldr r3, [r7, #20]
  7268. 80035a0: 0b5b lsrs r3, r3, #13
  7269. 80035a2: b2db uxtb r3, r3
  7270. 80035a4: f003 0307 and.w r3, r3, #7
  7271. 80035a8: b2da uxtb r2, r3
  7272. 80035aa: 68bb ldr r3, [r7, #8]
  7273. 80035ac: 701a strb r2, [r3, #0]
  7274. /* Check the input parameters format */
  7275. if(Format == RTC_FORMAT_BIN)
  7276. 80035ae: 687b ldr r3, [r7, #4]
  7277. 80035b0: 2b00 cmp r3, #0
  7278. 80035b2: d11a bne.n 80035ea <HAL_RTC_GetDate+0x94>
  7279. {
  7280. /* Convert the date structure parameters to Binary format */
  7281. sDate->Year = (uint8_t)RTC_Bcd2ToByte(sDate->Year);
  7282. 80035b4: 68bb ldr r3, [r7, #8]
  7283. 80035b6: 78db ldrb r3, [r3, #3]
  7284. 80035b8: 4618 mov r0, r3
  7285. 80035ba: f000 fa0b bl 80039d4 <RTC_Bcd2ToByte>
  7286. 80035be: 4603 mov r3, r0
  7287. 80035c0: 461a mov r2, r3
  7288. 80035c2: 68bb ldr r3, [r7, #8]
  7289. 80035c4: 70da strb r2, [r3, #3]
  7290. sDate->Month = (uint8_t)RTC_Bcd2ToByte(sDate->Month);
  7291. 80035c6: 68bb ldr r3, [r7, #8]
  7292. 80035c8: 785b ldrb r3, [r3, #1]
  7293. 80035ca: 4618 mov r0, r3
  7294. 80035cc: f000 fa02 bl 80039d4 <RTC_Bcd2ToByte>
  7295. 80035d0: 4603 mov r3, r0
  7296. 80035d2: 461a mov r2, r3
  7297. 80035d4: 68bb ldr r3, [r7, #8]
  7298. 80035d6: 705a strb r2, [r3, #1]
  7299. sDate->Date = (uint8_t)RTC_Bcd2ToByte(sDate->Date);
  7300. 80035d8: 68bb ldr r3, [r7, #8]
  7301. 80035da: 789b ldrb r3, [r3, #2]
  7302. 80035dc: 4618 mov r0, r3
  7303. 80035de: f000 f9f9 bl 80039d4 <RTC_Bcd2ToByte>
  7304. 80035e2: 4603 mov r3, r0
  7305. 80035e4: 461a mov r2, r3
  7306. 80035e6: 68bb ldr r3, [r7, #8]
  7307. 80035e8: 709a strb r2, [r3, #2]
  7308. }
  7309. return HAL_OK;
  7310. 80035ea: 2300 movs r3, #0
  7311. }
  7312. 80035ec: 4618 mov r0, r3
  7313. 80035ee: 3718 adds r7, #24
  7314. 80035f0: 46bd mov sp, r7
  7315. 80035f2: bd80 pop {r7, pc}
  7316. 080035f4 <HAL_RTC_SetAlarm_IT>:
  7317. * @arg RTC_FORMAT_BIN: Binary data format
  7318. * @arg RTC_FORMAT_BCD: BCD data format
  7319. * @retval HAL status
  7320. */
  7321. HAL_StatusTypeDef HAL_RTC_SetAlarm_IT(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format)
  7322. {
  7323. 80035f4: b590 push {r4, r7, lr}
  7324. 80035f6: b089 sub sp, #36 ; 0x24
  7325. 80035f8: af00 add r7, sp, #0
  7326. 80035fa: 60f8 str r0, [r7, #12]
  7327. 80035fc: 60b9 str r1, [r7, #8]
  7328. 80035fe: 607a str r2, [r7, #4]
  7329. uint32_t tmpreg = 0U, subsecondtmpreg = 0U;
  7330. 8003600: 2300 movs r3, #0
  7331. 8003602: 61fb str r3, [r7, #28]
  7332. 8003604: 2300 movs r3, #0
  7333. 8003606: 61bb str r3, [r7, #24]
  7334. __IO uint32_t count = RTC_TIMEOUT_VALUE * (SystemCoreClock / 32U / 1000U) ;
  7335. 8003608: 4b93 ldr r3, [pc, #588] ; (8003858 <HAL_RTC_SetAlarm_IT+0x264>)
  7336. 800360a: 681b ldr r3, [r3, #0]
  7337. 800360c: 4a93 ldr r2, [pc, #588] ; (800385c <HAL_RTC_SetAlarm_IT+0x268>)
  7338. 800360e: fba2 2303 umull r2, r3, r2, r3
  7339. 8003612: 0adb lsrs r3, r3, #11
  7340. 8003614: f44f 727a mov.w r2, #1000 ; 0x3e8
  7341. 8003618: fb02 f303 mul.w r3, r2, r3
  7342. 800361c: 617b str r3, [r7, #20]
  7343. assert_param(IS_RTC_ALARM_DATE_WEEKDAY_SEL(sAlarm->AlarmDateWeekDaySel));
  7344. assert_param(IS_RTC_ALARM_SUB_SECOND_VALUE(sAlarm->AlarmTime.SubSeconds));
  7345. assert_param(IS_RTC_ALARM_SUB_SECOND_MASK(sAlarm->AlarmSubSecondMask));
  7346. /* Process Locked */
  7347. __HAL_LOCK(hrtc);
  7348. 800361e: 68fb ldr r3, [r7, #12]
  7349. 8003620: 7f1b ldrb r3, [r3, #28]
  7350. 8003622: 2b01 cmp r3, #1
  7351. 8003624: d101 bne.n 800362a <HAL_RTC_SetAlarm_IT+0x36>
  7352. 8003626: 2302 movs r3, #2
  7353. 8003628: e111 b.n 800384e <HAL_RTC_SetAlarm_IT+0x25a>
  7354. 800362a: 68fb ldr r3, [r7, #12]
  7355. 800362c: 2201 movs r2, #1
  7356. 800362e: 771a strb r2, [r3, #28]
  7357. hrtc->State = HAL_RTC_STATE_BUSY;
  7358. 8003630: 68fb ldr r3, [r7, #12]
  7359. 8003632: 2202 movs r2, #2
  7360. 8003634: 775a strb r2, [r3, #29]
  7361. if(Format == RTC_FORMAT_BIN)
  7362. 8003636: 687b ldr r3, [r7, #4]
  7363. 8003638: 2b00 cmp r3, #0
  7364. 800363a: d137 bne.n 80036ac <HAL_RTC_SetAlarm_IT+0xb8>
  7365. {
  7366. if((hrtc->Instance->CR & RTC_CR_FMT) != (uint32_t)RESET)
  7367. 800363c: 68fb ldr r3, [r7, #12]
  7368. 800363e: 681b ldr r3, [r3, #0]
  7369. 8003640: 689b ldr r3, [r3, #8]
  7370. 8003642: f003 0340 and.w r3, r3, #64 ; 0x40
  7371. 8003646: 2b00 cmp r3, #0
  7372. 8003648: d102 bne.n 8003650 <HAL_RTC_SetAlarm_IT+0x5c>
  7373. assert_param(IS_RTC_HOUR12(sAlarm->AlarmTime.Hours));
  7374. assert_param(IS_RTC_HOURFORMAT12(sAlarm->AlarmTime.TimeFormat));
  7375. }
  7376. else
  7377. {
  7378. sAlarm->AlarmTime.TimeFormat = 0x00U;
  7379. 800364a: 68bb ldr r3, [r7, #8]
  7380. 800364c: 2200 movs r2, #0
  7381. 800364e: 70da strb r2, [r3, #3]
  7382. }
  7383. else
  7384. {
  7385. assert_param(IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(sAlarm->AlarmDateWeekDay));
  7386. }
  7387. tmpreg = (((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Hours) << 16U) | \
  7388. 8003650: 68bb ldr r3, [r7, #8]
  7389. 8003652: 781b ldrb r3, [r3, #0]
  7390. 8003654: 4618 mov r0, r3
  7391. 8003656: f000 f99f bl 8003998 <RTC_ByteToBcd2>
  7392. 800365a: 4603 mov r3, r0
  7393. 800365c: 041c lsls r4, r3, #16
  7394. ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Minutes) << 8U) | \
  7395. 800365e: 68bb ldr r3, [r7, #8]
  7396. 8003660: 785b ldrb r3, [r3, #1]
  7397. 8003662: 4618 mov r0, r3
  7398. 8003664: f000 f998 bl 8003998 <RTC_ByteToBcd2>
  7399. 8003668: 4603 mov r3, r0
  7400. 800366a: 021b lsls r3, r3, #8
  7401. tmpreg = (((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Hours) << 16U) | \
  7402. 800366c: 431c orrs r4, r3
  7403. ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Seconds)) | \
  7404. 800366e: 68bb ldr r3, [r7, #8]
  7405. 8003670: 789b ldrb r3, [r3, #2]
  7406. 8003672: 4618 mov r0, r3
  7407. 8003674: f000 f990 bl 8003998 <RTC_ByteToBcd2>
  7408. 8003678: 4603 mov r3, r0
  7409. ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Minutes) << 8U) | \
  7410. 800367a: ea44 0203 orr.w r2, r4, r3
  7411. ((uint32_t)(sAlarm->AlarmTime.TimeFormat) << 16U) | \
  7412. 800367e: 68bb ldr r3, [r7, #8]
  7413. 8003680: 78db ldrb r3, [r3, #3]
  7414. 8003682: 041b lsls r3, r3, #16
  7415. ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Seconds)) | \
  7416. 8003684: ea42 0403 orr.w r4, r2, r3
  7417. ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmDateWeekDay) << 24U) | \
  7418. 8003688: 68bb ldr r3, [r7, #8]
  7419. 800368a: f893 3020 ldrb.w r3, [r3, #32]
  7420. 800368e: 4618 mov r0, r3
  7421. 8003690: f000 f982 bl 8003998 <RTC_ByteToBcd2>
  7422. 8003694: 4603 mov r3, r0
  7423. 8003696: 061b lsls r3, r3, #24
  7424. ((uint32_t)(sAlarm->AlarmTime.TimeFormat) << 16U) | \
  7425. 8003698: ea44 0203 orr.w r2, r4, r3
  7426. ((uint32_t)sAlarm->AlarmDateWeekDaySel) | \
  7427. 800369c: 68bb ldr r3, [r7, #8]
  7428. 800369e: 69db ldr r3, [r3, #28]
  7429. ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmDateWeekDay) << 24U) | \
  7430. 80036a0: 431a orrs r2, r3
  7431. ((uint32_t)sAlarm->AlarmMask));
  7432. 80036a2: 68bb ldr r3, [r7, #8]
  7433. 80036a4: 695b ldr r3, [r3, #20]
  7434. tmpreg = (((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Hours) << 16U) | \
  7435. 80036a6: 4313 orrs r3, r2
  7436. 80036a8: 61fb str r3, [r7, #28]
  7437. 80036aa: e023 b.n 80036f4 <HAL_RTC_SetAlarm_IT+0x100>
  7438. }
  7439. else
  7440. {
  7441. if((hrtc->Instance->CR & RTC_CR_FMT) != (uint32_t)RESET)
  7442. 80036ac: 68fb ldr r3, [r7, #12]
  7443. 80036ae: 681b ldr r3, [r3, #0]
  7444. 80036b0: 689b ldr r3, [r3, #8]
  7445. 80036b2: f003 0340 and.w r3, r3, #64 ; 0x40
  7446. 80036b6: 2b00 cmp r3, #0
  7447. 80036b8: d102 bne.n 80036c0 <HAL_RTC_SetAlarm_IT+0xcc>
  7448. assert_param(IS_RTC_HOUR12(RTC_Bcd2ToByte(sAlarm->AlarmTime.Hours)));
  7449. assert_param(IS_RTC_HOURFORMAT12(sAlarm->AlarmTime.TimeFormat));
  7450. }
  7451. else
  7452. {
  7453. sAlarm->AlarmTime.TimeFormat = 0x00U;
  7454. 80036ba: 68bb ldr r3, [r7, #8]
  7455. 80036bc: 2200 movs r2, #0
  7456. 80036be: 70da strb r2, [r3, #3]
  7457. }
  7458. else
  7459. {
  7460. assert_param(IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(RTC_Bcd2ToByte(sAlarm->AlarmDateWeekDay)));
  7461. }
  7462. tmpreg = (((uint32_t)(sAlarm->AlarmTime.Hours) << 16U) | \
  7463. 80036c0: 68bb ldr r3, [r7, #8]
  7464. 80036c2: 781b ldrb r3, [r3, #0]
  7465. 80036c4: 041a lsls r2, r3, #16
  7466. ((uint32_t)(sAlarm->AlarmTime.Minutes) << 8U) | \
  7467. 80036c6: 68bb ldr r3, [r7, #8]
  7468. 80036c8: 785b ldrb r3, [r3, #1]
  7469. 80036ca: 021b lsls r3, r3, #8
  7470. tmpreg = (((uint32_t)(sAlarm->AlarmTime.Hours) << 16U) | \
  7471. 80036cc: 4313 orrs r3, r2
  7472. ((uint32_t) sAlarm->AlarmTime.Seconds) | \
  7473. 80036ce: 68ba ldr r2, [r7, #8]
  7474. 80036d0: 7892 ldrb r2, [r2, #2]
  7475. ((uint32_t)(sAlarm->AlarmTime.Minutes) << 8U) | \
  7476. 80036d2: 431a orrs r2, r3
  7477. ((uint32_t)(sAlarm->AlarmTime.TimeFormat) << 16U) | \
  7478. 80036d4: 68bb ldr r3, [r7, #8]
  7479. 80036d6: 78db ldrb r3, [r3, #3]
  7480. 80036d8: 041b lsls r3, r3, #16
  7481. ((uint32_t) sAlarm->AlarmTime.Seconds) | \
  7482. 80036da: 431a orrs r2, r3
  7483. ((uint32_t)(sAlarm->AlarmDateWeekDay) << 24U) | \
  7484. 80036dc: 68bb ldr r3, [r7, #8]
  7485. 80036de: f893 3020 ldrb.w r3, [r3, #32]
  7486. 80036e2: 061b lsls r3, r3, #24
  7487. ((uint32_t)(sAlarm->AlarmTime.TimeFormat) << 16U) | \
  7488. 80036e4: 431a orrs r2, r3
  7489. ((uint32_t)sAlarm->AlarmDateWeekDaySel) | \
  7490. 80036e6: 68bb ldr r3, [r7, #8]
  7491. 80036e8: 69db ldr r3, [r3, #28]
  7492. ((uint32_t)(sAlarm->AlarmDateWeekDay) << 24U) | \
  7493. 80036ea: 431a orrs r2, r3
  7494. ((uint32_t)sAlarm->AlarmMask));
  7495. 80036ec: 68bb ldr r3, [r7, #8]
  7496. 80036ee: 695b ldr r3, [r3, #20]
  7497. tmpreg = (((uint32_t)(sAlarm->AlarmTime.Hours) << 16U) | \
  7498. 80036f0: 4313 orrs r3, r2
  7499. 80036f2: 61fb str r3, [r7, #28]
  7500. }
  7501. /* Configure the Alarm A or Alarm B Sub Second registers */
  7502. subsecondtmpreg = (uint32_t)((uint32_t)(sAlarm->AlarmTime.SubSeconds) | (uint32_t)(sAlarm->AlarmSubSecondMask));
  7503. 80036f4: 68bb ldr r3, [r7, #8]
  7504. 80036f6: 685a ldr r2, [r3, #4]
  7505. 80036f8: 68bb ldr r3, [r7, #8]
  7506. 80036fa: 699b ldr r3, [r3, #24]
  7507. 80036fc: 4313 orrs r3, r2
  7508. 80036fe: 61bb str r3, [r7, #24]
  7509. /* Disable the write protection for RTC registers */
  7510. __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
  7511. 8003700: 68fb ldr r3, [r7, #12]
  7512. 8003702: 681b ldr r3, [r3, #0]
  7513. 8003704: 22ca movs r2, #202 ; 0xca
  7514. 8003706: 625a str r2, [r3, #36] ; 0x24
  7515. 8003708: 68fb ldr r3, [r7, #12]
  7516. 800370a: 681b ldr r3, [r3, #0]
  7517. 800370c: 2253 movs r2, #83 ; 0x53
  7518. 800370e: 625a str r2, [r3, #36] ; 0x24
  7519. /* Configure the Alarm register */
  7520. if(sAlarm->Alarm == RTC_ALARM_A)
  7521. 8003710: 68bb ldr r3, [r7, #8]
  7522. 8003712: 6a5b ldr r3, [r3, #36] ; 0x24
  7523. 8003714: f5b3 7f80 cmp.w r3, #256 ; 0x100
  7524. 8003718: d141 bne.n 800379e <HAL_RTC_SetAlarm_IT+0x1aa>
  7525. {
  7526. /* Disable the Alarm A interrupt */
  7527. __HAL_RTC_ALARMA_DISABLE(hrtc);
  7528. 800371a: 68fb ldr r3, [r7, #12]
  7529. 800371c: 681b ldr r3, [r3, #0]
  7530. 800371e: 689a ldr r2, [r3, #8]
  7531. 8003720: 68fb ldr r3, [r7, #12]
  7532. 8003722: 681b ldr r3, [r3, #0]
  7533. 8003724: f422 7280 bic.w r2, r2, #256 ; 0x100
  7534. 8003728: 609a str r2, [r3, #8]
  7535. /* Clear flag alarm A */
  7536. __HAL_RTC_ALARM_CLEAR_FLAG(hrtc, RTC_FLAG_ALRAF);
  7537. 800372a: 68fb ldr r3, [r7, #12]
  7538. 800372c: 681b ldr r3, [r3, #0]
  7539. 800372e: 68db ldr r3, [r3, #12]
  7540. 8003730: b2da uxtb r2, r3
  7541. 8003732: 68fb ldr r3, [r7, #12]
  7542. 8003734: 681b ldr r3, [r3, #0]
  7543. 8003736: f462 72c0 orn r2, r2, #384 ; 0x180
  7544. 800373a: 60da str r2, [r3, #12]
  7545. /* Wait till RTC ALRAWF flag is set and if Time out is reached exit */
  7546. do
  7547. {
  7548. if (count-- == 0U)
  7549. 800373c: 697b ldr r3, [r7, #20]
  7550. 800373e: 1e5a subs r2, r3, #1
  7551. 8003740: 617a str r2, [r7, #20]
  7552. 8003742: 2b00 cmp r3, #0
  7553. 8003744: d10b bne.n 800375e <HAL_RTC_SetAlarm_IT+0x16a>
  7554. {
  7555. /* Enable the write protection for RTC registers */
  7556. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  7557. 8003746: 68fb ldr r3, [r7, #12]
  7558. 8003748: 681b ldr r3, [r3, #0]
  7559. 800374a: 22ff movs r2, #255 ; 0xff
  7560. 800374c: 625a str r2, [r3, #36] ; 0x24
  7561. hrtc->State = HAL_RTC_STATE_TIMEOUT;
  7562. 800374e: 68fb ldr r3, [r7, #12]
  7563. 8003750: 2203 movs r2, #3
  7564. 8003752: 775a strb r2, [r3, #29]
  7565. /* Process Unlocked */
  7566. __HAL_UNLOCK(hrtc);
  7567. 8003754: 68fb ldr r3, [r7, #12]
  7568. 8003756: 2200 movs r2, #0
  7569. 8003758: 771a strb r2, [r3, #28]
  7570. return HAL_TIMEOUT;
  7571. 800375a: 2303 movs r3, #3
  7572. 800375c: e077 b.n 800384e <HAL_RTC_SetAlarm_IT+0x25a>
  7573. }
  7574. }
  7575. while (__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRAWF) == RESET);
  7576. 800375e: 68fb ldr r3, [r7, #12]
  7577. 8003760: 681b ldr r3, [r3, #0]
  7578. 8003762: 68db ldr r3, [r3, #12]
  7579. 8003764: f003 0301 and.w r3, r3, #1
  7580. 8003768: 2b00 cmp r3, #0
  7581. 800376a: d0e7 beq.n 800373c <HAL_RTC_SetAlarm_IT+0x148>
  7582. hrtc->Instance->ALRMAR = (uint32_t)tmpreg;
  7583. 800376c: 68fb ldr r3, [r7, #12]
  7584. 800376e: 681b ldr r3, [r3, #0]
  7585. 8003770: 69fa ldr r2, [r7, #28]
  7586. 8003772: 61da str r2, [r3, #28]
  7587. /* Configure the Alarm A Sub Second register */
  7588. hrtc->Instance->ALRMASSR = subsecondtmpreg;
  7589. 8003774: 68fb ldr r3, [r7, #12]
  7590. 8003776: 681b ldr r3, [r3, #0]
  7591. 8003778: 69ba ldr r2, [r7, #24]
  7592. 800377a: 645a str r2, [r3, #68] ; 0x44
  7593. /* Configure the Alarm state: Enable Alarm */
  7594. __HAL_RTC_ALARMA_ENABLE(hrtc);
  7595. 800377c: 68fb ldr r3, [r7, #12]
  7596. 800377e: 681b ldr r3, [r3, #0]
  7597. 8003780: 689a ldr r2, [r3, #8]
  7598. 8003782: 68fb ldr r3, [r7, #12]
  7599. 8003784: 681b ldr r3, [r3, #0]
  7600. 8003786: f442 7280 orr.w r2, r2, #256 ; 0x100
  7601. 800378a: 609a str r2, [r3, #8]
  7602. /* Configure the Alarm interrupt */
  7603. __HAL_RTC_ALARM_ENABLE_IT(hrtc,RTC_IT_ALRA);
  7604. 800378c: 68fb ldr r3, [r7, #12]
  7605. 800378e: 681b ldr r3, [r3, #0]
  7606. 8003790: 689a ldr r2, [r3, #8]
  7607. 8003792: 68fb ldr r3, [r7, #12]
  7608. 8003794: 681b ldr r3, [r3, #0]
  7609. 8003796: f442 5280 orr.w r2, r2, #4096 ; 0x1000
  7610. 800379a: 609a str r2, [r3, #8]
  7611. 800379c: e040 b.n 8003820 <HAL_RTC_SetAlarm_IT+0x22c>
  7612. }
  7613. else
  7614. {
  7615. /* Disable the Alarm B interrupt */
  7616. __HAL_RTC_ALARMB_DISABLE(hrtc);
  7617. 800379e: 68fb ldr r3, [r7, #12]
  7618. 80037a0: 681b ldr r3, [r3, #0]
  7619. 80037a2: 689a ldr r2, [r3, #8]
  7620. 80037a4: 68fb ldr r3, [r7, #12]
  7621. 80037a6: 681b ldr r3, [r3, #0]
  7622. 80037a8: f422 7200 bic.w r2, r2, #512 ; 0x200
  7623. 80037ac: 609a str r2, [r3, #8]
  7624. /* Clear flag alarm B */
  7625. __HAL_RTC_ALARM_CLEAR_FLAG(hrtc, RTC_FLAG_ALRBF);
  7626. 80037ae: 68fb ldr r3, [r7, #12]
  7627. 80037b0: 681b ldr r3, [r3, #0]
  7628. 80037b2: 68db ldr r3, [r3, #12]
  7629. 80037b4: b2da uxtb r2, r3
  7630. 80037b6: 68fb ldr r3, [r7, #12]
  7631. 80037b8: 681b ldr r3, [r3, #0]
  7632. 80037ba: f462 7220 orn r2, r2, #640 ; 0x280
  7633. 80037be: 60da str r2, [r3, #12]
  7634. /* Wait till RTC ALRBWF flag is set and if Time out is reached exit */
  7635. do
  7636. {
  7637. if (count-- == 0U)
  7638. 80037c0: 697b ldr r3, [r7, #20]
  7639. 80037c2: 1e5a subs r2, r3, #1
  7640. 80037c4: 617a str r2, [r7, #20]
  7641. 80037c6: 2b00 cmp r3, #0
  7642. 80037c8: d10b bne.n 80037e2 <HAL_RTC_SetAlarm_IT+0x1ee>
  7643. {
  7644. /* Enable the write protection for RTC registers */
  7645. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  7646. 80037ca: 68fb ldr r3, [r7, #12]
  7647. 80037cc: 681b ldr r3, [r3, #0]
  7648. 80037ce: 22ff movs r2, #255 ; 0xff
  7649. 80037d0: 625a str r2, [r3, #36] ; 0x24
  7650. hrtc->State = HAL_RTC_STATE_TIMEOUT;
  7651. 80037d2: 68fb ldr r3, [r7, #12]
  7652. 80037d4: 2203 movs r2, #3
  7653. 80037d6: 775a strb r2, [r3, #29]
  7654. /* Process Unlocked */
  7655. __HAL_UNLOCK(hrtc);
  7656. 80037d8: 68fb ldr r3, [r7, #12]
  7657. 80037da: 2200 movs r2, #0
  7658. 80037dc: 771a strb r2, [r3, #28]
  7659. return HAL_TIMEOUT;
  7660. 80037de: 2303 movs r3, #3
  7661. 80037e0: e035 b.n 800384e <HAL_RTC_SetAlarm_IT+0x25a>
  7662. }
  7663. }
  7664. while (__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRBWF) == RESET);
  7665. 80037e2: 68fb ldr r3, [r7, #12]
  7666. 80037e4: 681b ldr r3, [r3, #0]
  7667. 80037e6: 68db ldr r3, [r3, #12]
  7668. 80037e8: f003 0302 and.w r3, r3, #2
  7669. 80037ec: 2b00 cmp r3, #0
  7670. 80037ee: d0e7 beq.n 80037c0 <HAL_RTC_SetAlarm_IT+0x1cc>
  7671. hrtc->Instance->ALRMBR = (uint32_t)tmpreg;
  7672. 80037f0: 68fb ldr r3, [r7, #12]
  7673. 80037f2: 681b ldr r3, [r3, #0]
  7674. 80037f4: 69fa ldr r2, [r7, #28]
  7675. 80037f6: 621a str r2, [r3, #32]
  7676. /* Configure the Alarm B Sub Second register */
  7677. hrtc->Instance->ALRMBSSR = subsecondtmpreg;
  7678. 80037f8: 68fb ldr r3, [r7, #12]
  7679. 80037fa: 681b ldr r3, [r3, #0]
  7680. 80037fc: 69ba ldr r2, [r7, #24]
  7681. 80037fe: 649a str r2, [r3, #72] ; 0x48
  7682. /* Configure the Alarm state: Enable Alarm */
  7683. __HAL_RTC_ALARMB_ENABLE(hrtc);
  7684. 8003800: 68fb ldr r3, [r7, #12]
  7685. 8003802: 681b ldr r3, [r3, #0]
  7686. 8003804: 689a ldr r2, [r3, #8]
  7687. 8003806: 68fb ldr r3, [r7, #12]
  7688. 8003808: 681b ldr r3, [r3, #0]
  7689. 800380a: f442 7200 orr.w r2, r2, #512 ; 0x200
  7690. 800380e: 609a str r2, [r3, #8]
  7691. /* Configure the Alarm interrupt */
  7692. __HAL_RTC_ALARM_ENABLE_IT(hrtc, RTC_IT_ALRB);
  7693. 8003810: 68fb ldr r3, [r7, #12]
  7694. 8003812: 681b ldr r3, [r3, #0]
  7695. 8003814: 689a ldr r2, [r3, #8]
  7696. 8003816: 68fb ldr r3, [r7, #12]
  7697. 8003818: 681b ldr r3, [r3, #0]
  7698. 800381a: f442 5200 orr.w r2, r2, #8192 ; 0x2000
  7699. 800381e: 609a str r2, [r3, #8]
  7700. }
  7701. /* RTC Alarm Interrupt Configuration: EXTI configuration */
  7702. __HAL_RTC_ALARM_EXTI_ENABLE_IT();
  7703. 8003820: 4b0f ldr r3, [pc, #60] ; (8003860 <HAL_RTC_SetAlarm_IT+0x26c>)
  7704. 8003822: 681b ldr r3, [r3, #0]
  7705. 8003824: 4a0e ldr r2, [pc, #56] ; (8003860 <HAL_RTC_SetAlarm_IT+0x26c>)
  7706. 8003826: f443 3300 orr.w r3, r3, #131072 ; 0x20000
  7707. 800382a: 6013 str r3, [r2, #0]
  7708. EXTI->RTSR |= RTC_EXTI_LINE_ALARM_EVENT;
  7709. 800382c: 4b0c ldr r3, [pc, #48] ; (8003860 <HAL_RTC_SetAlarm_IT+0x26c>)
  7710. 800382e: 689b ldr r3, [r3, #8]
  7711. 8003830: 4a0b ldr r2, [pc, #44] ; (8003860 <HAL_RTC_SetAlarm_IT+0x26c>)
  7712. 8003832: f443 3300 orr.w r3, r3, #131072 ; 0x20000
  7713. 8003836: 6093 str r3, [r2, #8]
  7714. /* Enable the write protection for RTC registers */
  7715. __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
  7716. 8003838: 68fb ldr r3, [r7, #12]
  7717. 800383a: 681b ldr r3, [r3, #0]
  7718. 800383c: 22ff movs r2, #255 ; 0xff
  7719. 800383e: 625a str r2, [r3, #36] ; 0x24
  7720. hrtc->State = HAL_RTC_STATE_READY;
  7721. 8003840: 68fb ldr r3, [r7, #12]
  7722. 8003842: 2201 movs r2, #1
  7723. 8003844: 775a strb r2, [r3, #29]
  7724. /* Process Unlocked */
  7725. __HAL_UNLOCK(hrtc);
  7726. 8003846: 68fb ldr r3, [r7, #12]
  7727. 8003848: 2200 movs r2, #0
  7728. 800384a: 771a strb r2, [r3, #28]
  7729. return HAL_OK;
  7730. 800384c: 2300 movs r3, #0
  7731. }
  7732. 800384e: 4618 mov r0, r3
  7733. 8003850: 3724 adds r7, #36 ; 0x24
  7734. 8003852: 46bd mov sp, r7
  7735. 8003854: bd90 pop {r4, r7, pc}
  7736. 8003856: bf00 nop
  7737. 8003858: 20000014 .word 0x20000014
  7738. 800385c: 10624dd3 .word 0x10624dd3
  7739. 8003860: 40013c00 .word 0x40013c00
  7740. 08003864 <HAL_RTC_AlarmIRQHandler>:
  7741. * @param hrtc pointer to a RTC_HandleTypeDef structure that contains
  7742. * the configuration information for RTC.
  7743. * @retval None
  7744. */
  7745. void HAL_RTC_AlarmIRQHandler(RTC_HandleTypeDef* hrtc)
  7746. {
  7747. 8003864: b580 push {r7, lr}
  7748. 8003866: b082 sub sp, #8
  7749. 8003868: af00 add r7, sp, #0
  7750. 800386a: 6078 str r0, [r7, #4]
  7751. /* Get the AlarmA interrupt source enable status */
  7752. if(__HAL_RTC_ALARM_GET_IT_SOURCE(hrtc, RTC_IT_ALRA) != (uint32_t)RESET)
  7753. 800386c: 687b ldr r3, [r7, #4]
  7754. 800386e: 681b ldr r3, [r3, #0]
  7755. 8003870: 689b ldr r3, [r3, #8]
  7756. 8003872: f403 5380 and.w r3, r3, #4096 ; 0x1000
  7757. 8003876: 2b00 cmp r3, #0
  7758. 8003878: d012 beq.n 80038a0 <HAL_RTC_AlarmIRQHandler+0x3c>
  7759. {
  7760. /* Get the pending status of the AlarmA Interrupt */
  7761. if(__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRAF) != (uint32_t)RESET)
  7762. 800387a: 687b ldr r3, [r7, #4]
  7763. 800387c: 681b ldr r3, [r3, #0]
  7764. 800387e: 68db ldr r3, [r3, #12]
  7765. 8003880: f403 7380 and.w r3, r3, #256 ; 0x100
  7766. 8003884: 2b00 cmp r3, #0
  7767. 8003886: d00b beq.n 80038a0 <HAL_RTC_AlarmIRQHandler+0x3c>
  7768. {
  7769. /* AlarmA callback */
  7770. #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
  7771. hrtc->AlarmAEventCallback(hrtc);
  7772. #else
  7773. HAL_RTC_AlarmAEventCallback(hrtc);
  7774. 8003888: 6878 ldr r0, [r7, #4]
  7775. 800388a: f7fe fa35 bl 8001cf8 <HAL_RTC_AlarmAEventCallback>
  7776. #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
  7777. /* Clear the AlarmA interrupt pending bit */
  7778. __HAL_RTC_ALARM_CLEAR_FLAG(hrtc,RTC_FLAG_ALRAF);
  7779. 800388e: 687b ldr r3, [r7, #4]
  7780. 8003890: 681b ldr r3, [r3, #0]
  7781. 8003892: 68db ldr r3, [r3, #12]
  7782. 8003894: b2da uxtb r2, r3
  7783. 8003896: 687b ldr r3, [r7, #4]
  7784. 8003898: 681b ldr r3, [r3, #0]
  7785. 800389a: f462 72c0 orn r2, r2, #384 ; 0x180
  7786. 800389e: 60da str r2, [r3, #12]
  7787. }
  7788. }
  7789. /* Get the AlarmB interrupt source enable status */
  7790. if(__HAL_RTC_ALARM_GET_IT_SOURCE(hrtc, RTC_IT_ALRB) != (uint32_t)RESET)
  7791. 80038a0: 687b ldr r3, [r7, #4]
  7792. 80038a2: 681b ldr r3, [r3, #0]
  7793. 80038a4: 689b ldr r3, [r3, #8]
  7794. 80038a6: f403 5300 and.w r3, r3, #8192 ; 0x2000
  7795. 80038aa: 2b00 cmp r3, #0
  7796. 80038ac: d012 beq.n 80038d4 <HAL_RTC_AlarmIRQHandler+0x70>
  7797. {
  7798. /* Get the pending status of the AlarmB Interrupt */
  7799. if(__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRBF) != (uint32_t)RESET)
  7800. 80038ae: 687b ldr r3, [r7, #4]
  7801. 80038b0: 681b ldr r3, [r3, #0]
  7802. 80038b2: 68db ldr r3, [r3, #12]
  7803. 80038b4: f403 7300 and.w r3, r3, #512 ; 0x200
  7804. 80038b8: 2b00 cmp r3, #0
  7805. 80038ba: d00b beq.n 80038d4 <HAL_RTC_AlarmIRQHandler+0x70>
  7806. {
  7807. /* AlarmB callback */
  7808. #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
  7809. hrtc->AlarmBEventCallback(hrtc);
  7810. #else
  7811. HAL_RTCEx_AlarmBEventCallback(hrtc);
  7812. 80038bc: 6878 ldr r0, [r7, #4]
  7813. 80038be: f000 f8a7 bl 8003a10 <HAL_RTCEx_AlarmBEventCallback>
  7814. #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
  7815. /* Clear the AlarmB interrupt pending bit */
  7816. __HAL_RTC_ALARM_CLEAR_FLAG(hrtc,RTC_FLAG_ALRBF);
  7817. 80038c2: 687b ldr r3, [r7, #4]
  7818. 80038c4: 681b ldr r3, [r3, #0]
  7819. 80038c6: 68db ldr r3, [r3, #12]
  7820. 80038c8: b2da uxtb r2, r3
  7821. 80038ca: 687b ldr r3, [r7, #4]
  7822. 80038cc: 681b ldr r3, [r3, #0]
  7823. 80038ce: f462 7220 orn r2, r2, #640 ; 0x280
  7824. 80038d2: 60da str r2, [r3, #12]
  7825. }
  7826. }
  7827. /* Clear the EXTI's line Flag for RTC Alarm */
  7828. __HAL_RTC_ALARM_EXTI_CLEAR_FLAG();
  7829. 80038d4: 4b05 ldr r3, [pc, #20] ; (80038ec <HAL_RTC_AlarmIRQHandler+0x88>)
  7830. 80038d6: f44f 3200 mov.w r2, #131072 ; 0x20000
  7831. 80038da: 615a str r2, [r3, #20]
  7832. /* Change RTC state */
  7833. hrtc->State = HAL_RTC_STATE_READY;
  7834. 80038dc: 687b ldr r3, [r7, #4]
  7835. 80038de: 2201 movs r2, #1
  7836. 80038e0: 775a strb r2, [r3, #29]
  7837. }
  7838. 80038e2: bf00 nop
  7839. 80038e4: 3708 adds r7, #8
  7840. 80038e6: 46bd mov sp, r7
  7841. 80038e8: bd80 pop {r7, pc}
  7842. 80038ea: bf00 nop
  7843. 80038ec: 40013c00 .word 0x40013c00
  7844. 080038f0 <HAL_RTC_WaitForSynchro>:
  7845. * @param hrtc pointer to a RTC_HandleTypeDef structure that contains
  7846. * the configuration information for RTC.
  7847. * @retval HAL status
  7848. */
  7849. HAL_StatusTypeDef HAL_RTC_WaitForSynchro(RTC_HandleTypeDef* hrtc)
  7850. {
  7851. 80038f0: b580 push {r7, lr}
  7852. 80038f2: b084 sub sp, #16
  7853. 80038f4: af00 add r7, sp, #0
  7854. 80038f6: 6078 str r0, [r7, #4]
  7855. uint32_t tickstart = 0U;
  7856. 80038f8: 2300 movs r3, #0
  7857. 80038fa: 60fb str r3, [r7, #12]
  7858. /* Clear RSF flag */
  7859. hrtc->Instance->ISR &= (uint32_t)RTC_RSF_MASK;
  7860. 80038fc: 687b ldr r3, [r7, #4]
  7861. 80038fe: 681b ldr r3, [r3, #0]
  7862. 8003900: 68da ldr r2, [r3, #12]
  7863. 8003902: 687b ldr r3, [r7, #4]
  7864. 8003904: 681b ldr r3, [r3, #0]
  7865. 8003906: f022 02a0 bic.w r2, r2, #160 ; 0xa0
  7866. 800390a: 60da str r2, [r3, #12]
  7867. /* Get tick */
  7868. tickstart = HAL_GetTick();
  7869. 800390c: f7fe fb68 bl 8001fe0 <HAL_GetTick>
  7870. 8003910: 60f8 str r0, [r7, #12]
  7871. /* Wait the registers to be synchronised */
  7872. while((hrtc->Instance->ISR & RTC_ISR_RSF) == (uint32_t)RESET)
  7873. 8003912: e009 b.n 8003928 <HAL_RTC_WaitForSynchro+0x38>
  7874. {
  7875. if((HAL_GetTick() - tickstart ) > RTC_TIMEOUT_VALUE)
  7876. 8003914: f7fe fb64 bl 8001fe0 <HAL_GetTick>
  7877. 8003918: 4602 mov r2, r0
  7878. 800391a: 68fb ldr r3, [r7, #12]
  7879. 800391c: 1ad3 subs r3, r2, r3
  7880. 800391e: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8
  7881. 8003922: d901 bls.n 8003928 <HAL_RTC_WaitForSynchro+0x38>
  7882. {
  7883. return HAL_TIMEOUT;
  7884. 8003924: 2303 movs r3, #3
  7885. 8003926: e007 b.n 8003938 <HAL_RTC_WaitForSynchro+0x48>
  7886. while((hrtc->Instance->ISR & RTC_ISR_RSF) == (uint32_t)RESET)
  7887. 8003928: 687b ldr r3, [r7, #4]
  7888. 800392a: 681b ldr r3, [r3, #0]
  7889. 800392c: 68db ldr r3, [r3, #12]
  7890. 800392e: f003 0320 and.w r3, r3, #32
  7891. 8003932: 2b00 cmp r3, #0
  7892. 8003934: d0ee beq.n 8003914 <HAL_RTC_WaitForSynchro+0x24>
  7893. }
  7894. }
  7895. return HAL_OK;
  7896. 8003936: 2300 movs r3, #0
  7897. }
  7898. 8003938: 4618 mov r0, r3
  7899. 800393a: 3710 adds r7, #16
  7900. 800393c: 46bd mov sp, r7
  7901. 800393e: bd80 pop {r7, pc}
  7902. 08003940 <RTC_EnterInitMode>:
  7903. * @param hrtc pointer to a RTC_HandleTypeDef structure that contains
  7904. * the configuration information for RTC.
  7905. * @retval HAL status
  7906. */
  7907. HAL_StatusTypeDef RTC_EnterInitMode(RTC_HandleTypeDef* hrtc)
  7908. {
  7909. 8003940: b580 push {r7, lr}
  7910. 8003942: b084 sub sp, #16
  7911. 8003944: af00 add r7, sp, #0
  7912. 8003946: 6078 str r0, [r7, #4]
  7913. uint32_t tickstart = 0U;
  7914. 8003948: 2300 movs r3, #0
  7915. 800394a: 60fb str r3, [r7, #12]
  7916. /* Check if the Initialization mode is set */
  7917. if((hrtc->Instance->ISR & RTC_ISR_INITF) == (uint32_t)RESET)
  7918. 800394c: 687b ldr r3, [r7, #4]
  7919. 800394e: 681b ldr r3, [r3, #0]
  7920. 8003950: 68db ldr r3, [r3, #12]
  7921. 8003952: f003 0340 and.w r3, r3, #64 ; 0x40
  7922. 8003956: 2b00 cmp r3, #0
  7923. 8003958: d119 bne.n 800398e <RTC_EnterInitMode+0x4e>
  7924. {
  7925. /* Set the Initialization mode */
  7926. hrtc->Instance->ISR = (uint32_t)RTC_INIT_MASK;
  7927. 800395a: 687b ldr r3, [r7, #4]
  7928. 800395c: 681b ldr r3, [r3, #0]
  7929. 800395e: f04f 32ff mov.w r2, #4294967295
  7930. 8003962: 60da str r2, [r3, #12]
  7931. /* Get tick */
  7932. tickstart = HAL_GetTick();
  7933. 8003964: f7fe fb3c bl 8001fe0 <HAL_GetTick>
  7934. 8003968: 60f8 str r0, [r7, #12]
  7935. /* Wait till RTC is in INIT state and if Time out is reached exit */
  7936. while((hrtc->Instance->ISR & RTC_ISR_INITF) == (uint32_t)RESET)
  7937. 800396a: e009 b.n 8003980 <RTC_EnterInitMode+0x40>
  7938. {
  7939. if((HAL_GetTick() - tickstart ) > RTC_TIMEOUT_VALUE)
  7940. 800396c: f7fe fb38 bl 8001fe0 <HAL_GetTick>
  7941. 8003970: 4602 mov r2, r0
  7942. 8003972: 68fb ldr r3, [r7, #12]
  7943. 8003974: 1ad3 subs r3, r2, r3
  7944. 8003976: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8
  7945. 800397a: d901 bls.n 8003980 <RTC_EnterInitMode+0x40>
  7946. {
  7947. return HAL_TIMEOUT;
  7948. 800397c: 2303 movs r3, #3
  7949. 800397e: e007 b.n 8003990 <RTC_EnterInitMode+0x50>
  7950. while((hrtc->Instance->ISR & RTC_ISR_INITF) == (uint32_t)RESET)
  7951. 8003980: 687b ldr r3, [r7, #4]
  7952. 8003982: 681b ldr r3, [r3, #0]
  7953. 8003984: 68db ldr r3, [r3, #12]
  7954. 8003986: f003 0340 and.w r3, r3, #64 ; 0x40
  7955. 800398a: 2b00 cmp r3, #0
  7956. 800398c: d0ee beq.n 800396c <RTC_EnterInitMode+0x2c>
  7957. }
  7958. }
  7959. }
  7960. return HAL_OK;
  7961. 800398e: 2300 movs r3, #0
  7962. }
  7963. 8003990: 4618 mov r0, r3
  7964. 8003992: 3710 adds r7, #16
  7965. 8003994: 46bd mov sp, r7
  7966. 8003996: bd80 pop {r7, pc}
  7967. 08003998 <RTC_ByteToBcd2>:
  7968. * @brief Converts a 2 digit decimal to BCD format.
  7969. * @param Value Byte to be converted
  7970. * @retval Converted byte
  7971. */
  7972. uint8_t RTC_ByteToBcd2(uint8_t Value)
  7973. {
  7974. 8003998: b480 push {r7}
  7975. 800399a: b085 sub sp, #20
  7976. 800399c: af00 add r7, sp, #0
  7977. 800399e: 4603 mov r3, r0
  7978. 80039a0: 71fb strb r3, [r7, #7]
  7979. uint32_t bcdhigh = 0U;
  7980. 80039a2: 2300 movs r3, #0
  7981. 80039a4: 60fb str r3, [r7, #12]
  7982. while(Value >= 10U)
  7983. 80039a6: e005 b.n 80039b4 <RTC_ByteToBcd2+0x1c>
  7984. {
  7985. bcdhigh++;
  7986. 80039a8: 68fb ldr r3, [r7, #12]
  7987. 80039aa: 3301 adds r3, #1
  7988. 80039ac: 60fb str r3, [r7, #12]
  7989. Value -= 10U;
  7990. 80039ae: 79fb ldrb r3, [r7, #7]
  7991. 80039b0: 3b0a subs r3, #10
  7992. 80039b2: 71fb strb r3, [r7, #7]
  7993. while(Value >= 10U)
  7994. 80039b4: 79fb ldrb r3, [r7, #7]
  7995. 80039b6: 2b09 cmp r3, #9
  7996. 80039b8: d8f6 bhi.n 80039a8 <RTC_ByteToBcd2+0x10>
  7997. }
  7998. return ((uint8_t)(bcdhigh << 4U) | Value);
  7999. 80039ba: 68fb ldr r3, [r7, #12]
  8000. 80039bc: b2db uxtb r3, r3
  8001. 80039be: 011b lsls r3, r3, #4
  8002. 80039c0: b2da uxtb r2, r3
  8003. 80039c2: 79fb ldrb r3, [r7, #7]
  8004. 80039c4: 4313 orrs r3, r2
  8005. 80039c6: b2db uxtb r3, r3
  8006. }
  8007. 80039c8: 4618 mov r0, r3
  8008. 80039ca: 3714 adds r7, #20
  8009. 80039cc: 46bd mov sp, r7
  8010. 80039ce: f85d 7b04 ldr.w r7, [sp], #4
  8011. 80039d2: 4770 bx lr
  8012. 080039d4 <RTC_Bcd2ToByte>:
  8013. * @brief Converts from 2 digit BCD to Binary.
  8014. * @param Value BCD value to be converted
  8015. * @retval Converted word
  8016. */
  8017. uint8_t RTC_Bcd2ToByte(uint8_t Value)
  8018. {
  8019. 80039d4: b480 push {r7}
  8020. 80039d6: b085 sub sp, #20
  8021. 80039d8: af00 add r7, sp, #0
  8022. 80039da: 4603 mov r3, r0
  8023. 80039dc: 71fb strb r3, [r7, #7]
  8024. uint32_t tmp = 0U;
  8025. 80039de: 2300 movs r3, #0
  8026. 80039e0: 60fb str r3, [r7, #12]
  8027. tmp = ((uint8_t)(Value & (uint8_t)0xF0) >> (uint8_t)0x4) * 10;
  8028. 80039e2: 79fb ldrb r3, [r7, #7]
  8029. 80039e4: 091b lsrs r3, r3, #4
  8030. 80039e6: b2db uxtb r3, r3
  8031. 80039e8: 461a mov r2, r3
  8032. 80039ea: 4613 mov r3, r2
  8033. 80039ec: 009b lsls r3, r3, #2
  8034. 80039ee: 4413 add r3, r2
  8035. 80039f0: 005b lsls r3, r3, #1
  8036. 80039f2: 60fb str r3, [r7, #12]
  8037. return (tmp + (Value & (uint8_t)0x0F));
  8038. 80039f4: 79fb ldrb r3, [r7, #7]
  8039. 80039f6: f003 030f and.w r3, r3, #15
  8040. 80039fa: b2da uxtb r2, r3
  8041. 80039fc: 68fb ldr r3, [r7, #12]
  8042. 80039fe: b2db uxtb r3, r3
  8043. 8003a00: 4413 add r3, r2
  8044. 8003a02: b2db uxtb r3, r3
  8045. }
  8046. 8003a04: 4618 mov r0, r3
  8047. 8003a06: 3714 adds r7, #20
  8048. 8003a08: 46bd mov sp, r7
  8049. 8003a0a: f85d 7b04 ldr.w r7, [sp], #4
  8050. 8003a0e: 4770 bx lr
  8051. 08003a10 <HAL_RTCEx_AlarmBEventCallback>:
  8052. * @param hrtc pointer to a RTC_HandleTypeDef structure that contains
  8053. * the configuration information for RTC.
  8054. * @retval None
  8055. */
  8056. __weak void HAL_RTCEx_AlarmBEventCallback(RTC_HandleTypeDef *hrtc)
  8057. {
  8058. 8003a10: b480 push {r7}
  8059. 8003a12: b083 sub sp, #12
  8060. 8003a14: af00 add r7, sp, #0
  8061. 8003a16: 6078 str r0, [r7, #4]
  8062. /* Prevent unused argument(s) compilation warning */
  8063. UNUSED(hrtc);
  8064. /* NOTE : This function Should not be modified, when the callback is needed,
  8065. the HAL_RTC_AlarmBEventCallback could be implemented in the user file
  8066. */
  8067. }
  8068. 8003a18: bf00 nop
  8069. 8003a1a: 370c adds r7, #12
  8070. 8003a1c: 46bd mov sp, r7
  8071. 8003a1e: f85d 7b04 ldr.w r7, [sp], #4
  8072. 8003a22: 4770 bx lr
  8073. 08003a24 <HAL_UART_Init>:
  8074. * @param huart Pointer to a UART_HandleTypeDef structure that contains
  8075. * the configuration information for the specified UART module.
  8076. * @retval HAL status
  8077. */
  8078. HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
  8079. {
  8080. 8003a24: b580 push {r7, lr}
  8081. 8003a26: b082 sub sp, #8
  8082. 8003a28: af00 add r7, sp, #0
  8083. 8003a2a: 6078 str r0, [r7, #4]
  8084. /* Check the UART handle allocation */
  8085. if (huart == NULL)
  8086. 8003a2c: 687b ldr r3, [r7, #4]
  8087. 8003a2e: 2b00 cmp r3, #0
  8088. 8003a30: d101 bne.n 8003a36 <HAL_UART_Init+0x12>
  8089. {
  8090. return HAL_ERROR;
  8091. 8003a32: 2301 movs r3, #1
  8092. 8003a34: e03f b.n 8003ab6 <HAL_UART_Init+0x92>
  8093. assert_param(IS_UART_INSTANCE(huart->Instance));
  8094. }
  8095. assert_param(IS_UART_WORD_LENGTH(huart->Init.WordLength));
  8096. assert_param(IS_UART_OVERSAMPLING(huart->Init.OverSampling));
  8097. if (huart->gState == HAL_UART_STATE_RESET)
  8098. 8003a36: 687b ldr r3, [r7, #4]
  8099. 8003a38: f893 3039 ldrb.w r3, [r3, #57] ; 0x39
  8100. 8003a3c: b2db uxtb r3, r3
  8101. 8003a3e: 2b00 cmp r3, #0
  8102. 8003a40: d106 bne.n 8003a50 <HAL_UART_Init+0x2c>
  8103. {
  8104. /* Allocate lock resource and initialize it */
  8105. huart->Lock = HAL_UNLOCKED;
  8106. 8003a42: 687b ldr r3, [r7, #4]
  8107. 8003a44: 2200 movs r2, #0
  8108. 8003a46: f883 2038 strb.w r2, [r3, #56] ; 0x38
  8109. /* Init the low level hardware */
  8110. huart->MspInitCallback(huart);
  8111. #else
  8112. /* Init the low level hardware : GPIO, CLOCK */
  8113. HAL_UART_MspInit(huart);
  8114. 8003a4a: 6878 ldr r0, [r7, #4]
  8115. 8003a4c: f7fe f9a6 bl 8001d9c <HAL_UART_MspInit>
  8116. #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */
  8117. }
  8118. huart->gState = HAL_UART_STATE_BUSY;
  8119. 8003a50: 687b ldr r3, [r7, #4]
  8120. 8003a52: 2224 movs r2, #36 ; 0x24
  8121. 8003a54: f883 2039 strb.w r2, [r3, #57] ; 0x39
  8122. /* Disable the peripheral */
  8123. __HAL_UART_DISABLE(huart);
  8124. 8003a58: 687b ldr r3, [r7, #4]
  8125. 8003a5a: 681b ldr r3, [r3, #0]
  8126. 8003a5c: 68da ldr r2, [r3, #12]
  8127. 8003a5e: 687b ldr r3, [r7, #4]
  8128. 8003a60: 681b ldr r3, [r3, #0]
  8129. 8003a62: f422 5200 bic.w r2, r2, #8192 ; 0x2000
  8130. 8003a66: 60da str r2, [r3, #12]
  8131. /* Set the UART Communication parameters */
  8132. UART_SetConfig(huart);
  8133. 8003a68: 6878 ldr r0, [r7, #4]
  8134. 8003a6a: f000 f90b bl 8003c84 <UART_SetConfig>
  8135. /* In asynchronous mode, the following bits must be kept cleared:
  8136. - LINEN and CLKEN bits in the USART_CR2 register,
  8137. - SCEN, HDSEL and IREN bits in the USART_CR3 register.*/
  8138. CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
  8139. 8003a6e: 687b ldr r3, [r7, #4]
  8140. 8003a70: 681b ldr r3, [r3, #0]
  8141. 8003a72: 691a ldr r2, [r3, #16]
  8142. 8003a74: 687b ldr r3, [r7, #4]
  8143. 8003a76: 681b ldr r3, [r3, #0]
  8144. 8003a78: f422 4290 bic.w r2, r2, #18432 ; 0x4800
  8145. 8003a7c: 611a str r2, [r3, #16]
  8146. CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
  8147. 8003a7e: 687b ldr r3, [r7, #4]
  8148. 8003a80: 681b ldr r3, [r3, #0]
  8149. 8003a82: 695a ldr r2, [r3, #20]
  8150. 8003a84: 687b ldr r3, [r7, #4]
  8151. 8003a86: 681b ldr r3, [r3, #0]
  8152. 8003a88: f022 022a bic.w r2, r2, #42 ; 0x2a
  8153. 8003a8c: 615a str r2, [r3, #20]
  8154. /* Enable the peripheral */
  8155. __HAL_UART_ENABLE(huart);
  8156. 8003a8e: 687b ldr r3, [r7, #4]
  8157. 8003a90: 681b ldr r3, [r3, #0]
  8158. 8003a92: 68da ldr r2, [r3, #12]
  8159. 8003a94: 687b ldr r3, [r7, #4]
  8160. 8003a96: 681b ldr r3, [r3, #0]
  8161. 8003a98: f442 5200 orr.w r2, r2, #8192 ; 0x2000
  8162. 8003a9c: 60da str r2, [r3, #12]
  8163. /* Initialize the UART state */
  8164. huart->ErrorCode = HAL_UART_ERROR_NONE;
  8165. 8003a9e: 687b ldr r3, [r7, #4]
  8166. 8003aa0: 2200 movs r2, #0
  8167. 8003aa2: 63da str r2, [r3, #60] ; 0x3c
  8168. huart->gState = HAL_UART_STATE_READY;
  8169. 8003aa4: 687b ldr r3, [r7, #4]
  8170. 8003aa6: 2220 movs r2, #32
  8171. 8003aa8: f883 2039 strb.w r2, [r3, #57] ; 0x39
  8172. huart->RxState = HAL_UART_STATE_READY;
  8173. 8003aac: 687b ldr r3, [r7, #4]
  8174. 8003aae: 2220 movs r2, #32
  8175. 8003ab0: f883 203a strb.w r2, [r3, #58] ; 0x3a
  8176. return HAL_OK;
  8177. 8003ab4: 2300 movs r3, #0
  8178. }
  8179. 8003ab6: 4618 mov r0, r3
  8180. 8003ab8: 3708 adds r7, #8
  8181. 8003aba: 46bd mov sp, r7
  8182. 8003abc: bd80 pop {r7, pc}
  8183. 08003abe <HAL_UART_Transmit>:
  8184. * @param Size Amount of data elements (u8 or u16) to be sent
  8185. * @param Timeout Timeout duration
  8186. * @retval HAL status
  8187. */
  8188. HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
  8189. {
  8190. 8003abe: b580 push {r7, lr}
  8191. 8003ac0: b088 sub sp, #32
  8192. 8003ac2: af02 add r7, sp, #8
  8193. 8003ac4: 60f8 str r0, [r7, #12]
  8194. 8003ac6: 60b9 str r1, [r7, #8]
  8195. 8003ac8: 603b str r3, [r7, #0]
  8196. 8003aca: 4613 mov r3, r2
  8197. 8003acc: 80fb strh r3, [r7, #6]
  8198. uint16_t *tmp;
  8199. uint32_t tickstart = 0U;
  8200. 8003ace: 2300 movs r3, #0
  8201. 8003ad0: 617b str r3, [r7, #20]
  8202. /* Check that a Tx process is not already ongoing */
  8203. if (huart->gState == HAL_UART_STATE_READY)
  8204. 8003ad2: 68fb ldr r3, [r7, #12]
  8205. 8003ad4: f893 3039 ldrb.w r3, [r3, #57] ; 0x39
  8206. 8003ad8: b2db uxtb r3, r3
  8207. 8003ada: 2b20 cmp r3, #32
  8208. 8003adc: f040 8083 bne.w 8003be6 <HAL_UART_Transmit+0x128>
  8209. {
  8210. if ((pData == NULL) || (Size == 0U))
  8211. 8003ae0: 68bb ldr r3, [r7, #8]
  8212. 8003ae2: 2b00 cmp r3, #0
  8213. 8003ae4: d002 beq.n 8003aec <HAL_UART_Transmit+0x2e>
  8214. 8003ae6: 88fb ldrh r3, [r7, #6]
  8215. 8003ae8: 2b00 cmp r3, #0
  8216. 8003aea: d101 bne.n 8003af0 <HAL_UART_Transmit+0x32>
  8217. {
  8218. return HAL_ERROR;
  8219. 8003aec: 2301 movs r3, #1
  8220. 8003aee: e07b b.n 8003be8 <HAL_UART_Transmit+0x12a>
  8221. }
  8222. /* Process Locked */
  8223. __HAL_LOCK(huart);
  8224. 8003af0: 68fb ldr r3, [r7, #12]
  8225. 8003af2: f893 3038 ldrb.w r3, [r3, #56] ; 0x38
  8226. 8003af6: 2b01 cmp r3, #1
  8227. 8003af8: d101 bne.n 8003afe <HAL_UART_Transmit+0x40>
  8228. 8003afa: 2302 movs r3, #2
  8229. 8003afc: e074 b.n 8003be8 <HAL_UART_Transmit+0x12a>
  8230. 8003afe: 68fb ldr r3, [r7, #12]
  8231. 8003b00: 2201 movs r2, #1
  8232. 8003b02: f883 2038 strb.w r2, [r3, #56] ; 0x38
  8233. huart->ErrorCode = HAL_UART_ERROR_NONE;
  8234. 8003b06: 68fb ldr r3, [r7, #12]
  8235. 8003b08: 2200 movs r2, #0
  8236. 8003b0a: 63da str r2, [r3, #60] ; 0x3c
  8237. huart->gState = HAL_UART_STATE_BUSY_TX;
  8238. 8003b0c: 68fb ldr r3, [r7, #12]
  8239. 8003b0e: 2221 movs r2, #33 ; 0x21
  8240. 8003b10: f883 2039 strb.w r2, [r3, #57] ; 0x39
  8241. /* Init tickstart for timeout managment */
  8242. tickstart = HAL_GetTick();
  8243. 8003b14: f7fe fa64 bl 8001fe0 <HAL_GetTick>
  8244. 8003b18: 6178 str r0, [r7, #20]
  8245. huart->TxXferSize = Size;
  8246. 8003b1a: 68fb ldr r3, [r7, #12]
  8247. 8003b1c: 88fa ldrh r2, [r7, #6]
  8248. 8003b1e: 849a strh r2, [r3, #36] ; 0x24
  8249. huart->TxXferCount = Size;
  8250. 8003b20: 68fb ldr r3, [r7, #12]
  8251. 8003b22: 88fa ldrh r2, [r7, #6]
  8252. 8003b24: 84da strh r2, [r3, #38] ; 0x26
  8253. /* Process Unlocked */
  8254. __HAL_UNLOCK(huart);
  8255. 8003b26: 68fb ldr r3, [r7, #12]
  8256. 8003b28: 2200 movs r2, #0
  8257. 8003b2a: f883 2038 strb.w r2, [r3, #56] ; 0x38
  8258. while (huart->TxXferCount > 0U)
  8259. 8003b2e: e042 b.n 8003bb6 <HAL_UART_Transmit+0xf8>
  8260. {
  8261. huart->TxXferCount--;
  8262. 8003b30: 68fb ldr r3, [r7, #12]
  8263. 8003b32: 8cdb ldrh r3, [r3, #38] ; 0x26
  8264. 8003b34: b29b uxth r3, r3
  8265. 8003b36: 3b01 subs r3, #1
  8266. 8003b38: b29a uxth r2, r3
  8267. 8003b3a: 68fb ldr r3, [r7, #12]
  8268. 8003b3c: 84da strh r2, [r3, #38] ; 0x26
  8269. if (huart->Init.WordLength == UART_WORDLENGTH_9B)
  8270. 8003b3e: 68fb ldr r3, [r7, #12]
  8271. 8003b40: 689b ldr r3, [r3, #8]
  8272. 8003b42: f5b3 5f80 cmp.w r3, #4096 ; 0x1000
  8273. 8003b46: d122 bne.n 8003b8e <HAL_UART_Transmit+0xd0>
  8274. {
  8275. if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK)
  8276. 8003b48: 683b ldr r3, [r7, #0]
  8277. 8003b4a: 9300 str r3, [sp, #0]
  8278. 8003b4c: 697b ldr r3, [r7, #20]
  8279. 8003b4e: 2200 movs r2, #0
  8280. 8003b50: 2180 movs r1, #128 ; 0x80
  8281. 8003b52: 68f8 ldr r0, [r7, #12]
  8282. 8003b54: f000 f84c bl 8003bf0 <UART_WaitOnFlagUntilTimeout>
  8283. 8003b58: 4603 mov r3, r0
  8284. 8003b5a: 2b00 cmp r3, #0
  8285. 8003b5c: d001 beq.n 8003b62 <HAL_UART_Transmit+0xa4>
  8286. {
  8287. return HAL_TIMEOUT;
  8288. 8003b5e: 2303 movs r3, #3
  8289. 8003b60: e042 b.n 8003be8 <HAL_UART_Transmit+0x12a>
  8290. }
  8291. tmp = (uint16_t *) pData;
  8292. 8003b62: 68bb ldr r3, [r7, #8]
  8293. 8003b64: 613b str r3, [r7, #16]
  8294. huart->Instance->DR = (*tmp & (uint16_t)0x01FF);
  8295. 8003b66: 693b ldr r3, [r7, #16]
  8296. 8003b68: 881b ldrh r3, [r3, #0]
  8297. 8003b6a: 461a mov r2, r3
  8298. 8003b6c: 68fb ldr r3, [r7, #12]
  8299. 8003b6e: 681b ldr r3, [r3, #0]
  8300. 8003b70: f3c2 0208 ubfx r2, r2, #0, #9
  8301. 8003b74: 605a str r2, [r3, #4]
  8302. if (huart->Init.Parity == UART_PARITY_NONE)
  8303. 8003b76: 68fb ldr r3, [r7, #12]
  8304. 8003b78: 691b ldr r3, [r3, #16]
  8305. 8003b7a: 2b00 cmp r3, #0
  8306. 8003b7c: d103 bne.n 8003b86 <HAL_UART_Transmit+0xc8>
  8307. {
  8308. pData += 2U;
  8309. 8003b7e: 68bb ldr r3, [r7, #8]
  8310. 8003b80: 3302 adds r3, #2
  8311. 8003b82: 60bb str r3, [r7, #8]
  8312. 8003b84: e017 b.n 8003bb6 <HAL_UART_Transmit+0xf8>
  8313. }
  8314. else
  8315. {
  8316. pData += 1U;
  8317. 8003b86: 68bb ldr r3, [r7, #8]
  8318. 8003b88: 3301 adds r3, #1
  8319. 8003b8a: 60bb str r3, [r7, #8]
  8320. 8003b8c: e013 b.n 8003bb6 <HAL_UART_Transmit+0xf8>
  8321. }
  8322. }
  8323. else
  8324. {
  8325. if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK)
  8326. 8003b8e: 683b ldr r3, [r7, #0]
  8327. 8003b90: 9300 str r3, [sp, #0]
  8328. 8003b92: 697b ldr r3, [r7, #20]
  8329. 8003b94: 2200 movs r2, #0
  8330. 8003b96: 2180 movs r1, #128 ; 0x80
  8331. 8003b98: 68f8 ldr r0, [r7, #12]
  8332. 8003b9a: f000 f829 bl 8003bf0 <UART_WaitOnFlagUntilTimeout>
  8333. 8003b9e: 4603 mov r3, r0
  8334. 8003ba0: 2b00 cmp r3, #0
  8335. 8003ba2: d001 beq.n 8003ba8 <HAL_UART_Transmit+0xea>
  8336. {
  8337. return HAL_TIMEOUT;
  8338. 8003ba4: 2303 movs r3, #3
  8339. 8003ba6: e01f b.n 8003be8 <HAL_UART_Transmit+0x12a>
  8340. }
  8341. huart->Instance->DR = (*pData++ & (uint8_t)0xFF);
  8342. 8003ba8: 68bb ldr r3, [r7, #8]
  8343. 8003baa: 1c5a adds r2, r3, #1
  8344. 8003bac: 60ba str r2, [r7, #8]
  8345. 8003bae: 781a ldrb r2, [r3, #0]
  8346. 8003bb0: 68fb ldr r3, [r7, #12]
  8347. 8003bb2: 681b ldr r3, [r3, #0]
  8348. 8003bb4: 605a str r2, [r3, #4]
  8349. while (huart->TxXferCount > 0U)
  8350. 8003bb6: 68fb ldr r3, [r7, #12]
  8351. 8003bb8: 8cdb ldrh r3, [r3, #38] ; 0x26
  8352. 8003bba: b29b uxth r3, r3
  8353. 8003bbc: 2b00 cmp r3, #0
  8354. 8003bbe: d1b7 bne.n 8003b30 <HAL_UART_Transmit+0x72>
  8355. }
  8356. }
  8357. if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK)
  8358. 8003bc0: 683b ldr r3, [r7, #0]
  8359. 8003bc2: 9300 str r3, [sp, #0]
  8360. 8003bc4: 697b ldr r3, [r7, #20]
  8361. 8003bc6: 2200 movs r2, #0
  8362. 8003bc8: 2140 movs r1, #64 ; 0x40
  8363. 8003bca: 68f8 ldr r0, [r7, #12]
  8364. 8003bcc: f000 f810 bl 8003bf0 <UART_WaitOnFlagUntilTimeout>
  8365. 8003bd0: 4603 mov r3, r0
  8366. 8003bd2: 2b00 cmp r3, #0
  8367. 8003bd4: d001 beq.n 8003bda <HAL_UART_Transmit+0x11c>
  8368. {
  8369. return HAL_TIMEOUT;
  8370. 8003bd6: 2303 movs r3, #3
  8371. 8003bd8: e006 b.n 8003be8 <HAL_UART_Transmit+0x12a>
  8372. }
  8373. /* At end of Tx process, restore huart->gState to Ready */
  8374. huart->gState = HAL_UART_STATE_READY;
  8375. 8003bda: 68fb ldr r3, [r7, #12]
  8376. 8003bdc: 2220 movs r2, #32
  8377. 8003bde: f883 2039 strb.w r2, [r3, #57] ; 0x39
  8378. return HAL_OK;
  8379. 8003be2: 2300 movs r3, #0
  8380. 8003be4: e000 b.n 8003be8 <HAL_UART_Transmit+0x12a>
  8381. }
  8382. else
  8383. {
  8384. return HAL_BUSY;
  8385. 8003be6: 2302 movs r3, #2
  8386. }
  8387. }
  8388. 8003be8: 4618 mov r0, r3
  8389. 8003bea: 3718 adds r7, #24
  8390. 8003bec: 46bd mov sp, r7
  8391. 8003bee: bd80 pop {r7, pc}
  8392. 08003bf0 <UART_WaitOnFlagUntilTimeout>:
  8393. * @param Tickstart Tick start value
  8394. * @param Timeout Timeout duration
  8395. * @retval HAL status
  8396. */
  8397. static HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout)
  8398. {
  8399. 8003bf0: b580 push {r7, lr}
  8400. 8003bf2: b084 sub sp, #16
  8401. 8003bf4: af00 add r7, sp, #0
  8402. 8003bf6: 60f8 str r0, [r7, #12]
  8403. 8003bf8: 60b9 str r1, [r7, #8]
  8404. 8003bfa: 603b str r3, [r7, #0]
  8405. 8003bfc: 4613 mov r3, r2
  8406. 8003bfe: 71fb strb r3, [r7, #7]
  8407. /* Wait until flag is set */
  8408. while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
  8409. 8003c00: e02c b.n 8003c5c <UART_WaitOnFlagUntilTimeout+0x6c>
  8410. {
  8411. /* Check for the Timeout */
  8412. if (Timeout != HAL_MAX_DELAY)
  8413. 8003c02: 69bb ldr r3, [r7, #24]
  8414. 8003c04: f1b3 3fff cmp.w r3, #4294967295
  8415. 8003c08: d028 beq.n 8003c5c <UART_WaitOnFlagUntilTimeout+0x6c>
  8416. {
  8417. if ((Timeout == 0U) || ((HAL_GetTick() - Tickstart) > Timeout))
  8418. 8003c0a: 69bb ldr r3, [r7, #24]
  8419. 8003c0c: 2b00 cmp r3, #0
  8420. 8003c0e: d007 beq.n 8003c20 <UART_WaitOnFlagUntilTimeout+0x30>
  8421. 8003c10: f7fe f9e6 bl 8001fe0 <HAL_GetTick>
  8422. 8003c14: 4602 mov r2, r0
  8423. 8003c16: 683b ldr r3, [r7, #0]
  8424. 8003c18: 1ad3 subs r3, r2, r3
  8425. 8003c1a: 69ba ldr r2, [r7, #24]
  8426. 8003c1c: 429a cmp r2, r3
  8427. 8003c1e: d21d bcs.n 8003c5c <UART_WaitOnFlagUntilTimeout+0x6c>
  8428. {
  8429. /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */
  8430. CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
  8431. 8003c20: 68fb ldr r3, [r7, #12]
  8432. 8003c22: 681b ldr r3, [r3, #0]
  8433. 8003c24: 68da ldr r2, [r3, #12]
  8434. 8003c26: 68fb ldr r3, [r7, #12]
  8435. 8003c28: 681b ldr r3, [r3, #0]
  8436. 8003c2a: f422 72d0 bic.w r2, r2, #416 ; 0x1a0
  8437. 8003c2e: 60da str r2, [r3, #12]
  8438. CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
  8439. 8003c30: 68fb ldr r3, [r7, #12]
  8440. 8003c32: 681b ldr r3, [r3, #0]
  8441. 8003c34: 695a ldr r2, [r3, #20]
  8442. 8003c36: 68fb ldr r3, [r7, #12]
  8443. 8003c38: 681b ldr r3, [r3, #0]
  8444. 8003c3a: f022 0201 bic.w r2, r2, #1
  8445. 8003c3e: 615a str r2, [r3, #20]
  8446. huart->gState = HAL_UART_STATE_READY;
  8447. 8003c40: 68fb ldr r3, [r7, #12]
  8448. 8003c42: 2220 movs r2, #32
  8449. 8003c44: f883 2039 strb.w r2, [r3, #57] ; 0x39
  8450. huart->RxState = HAL_UART_STATE_READY;
  8451. 8003c48: 68fb ldr r3, [r7, #12]
  8452. 8003c4a: 2220 movs r2, #32
  8453. 8003c4c: f883 203a strb.w r2, [r3, #58] ; 0x3a
  8454. /* Process Unlocked */
  8455. __HAL_UNLOCK(huart);
  8456. 8003c50: 68fb ldr r3, [r7, #12]
  8457. 8003c52: 2200 movs r2, #0
  8458. 8003c54: f883 2038 strb.w r2, [r3, #56] ; 0x38
  8459. return HAL_TIMEOUT;
  8460. 8003c58: 2303 movs r3, #3
  8461. 8003c5a: e00f b.n 8003c7c <UART_WaitOnFlagUntilTimeout+0x8c>
  8462. while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
  8463. 8003c5c: 68fb ldr r3, [r7, #12]
  8464. 8003c5e: 681b ldr r3, [r3, #0]
  8465. 8003c60: 681a ldr r2, [r3, #0]
  8466. 8003c62: 68bb ldr r3, [r7, #8]
  8467. 8003c64: 4013 ands r3, r2
  8468. 8003c66: 68ba ldr r2, [r7, #8]
  8469. 8003c68: 429a cmp r2, r3
  8470. 8003c6a: bf0c ite eq
  8471. 8003c6c: 2301 moveq r3, #1
  8472. 8003c6e: 2300 movne r3, #0
  8473. 8003c70: b2db uxtb r3, r3
  8474. 8003c72: 461a mov r2, r3
  8475. 8003c74: 79fb ldrb r3, [r7, #7]
  8476. 8003c76: 429a cmp r2, r3
  8477. 8003c78: d0c3 beq.n 8003c02 <UART_WaitOnFlagUntilTimeout+0x12>
  8478. }
  8479. }
  8480. }
  8481. return HAL_OK;
  8482. 8003c7a: 2300 movs r3, #0
  8483. }
  8484. 8003c7c: 4618 mov r0, r3
  8485. 8003c7e: 3710 adds r7, #16
  8486. 8003c80: 46bd mov sp, r7
  8487. 8003c82: bd80 pop {r7, pc}
  8488. 08003c84 <UART_SetConfig>:
  8489. * @param huart Pointer to a UART_HandleTypeDef structure that contains
  8490. * the configuration information for the specified UART module.
  8491. * @retval None
  8492. */
  8493. static void UART_SetConfig(UART_HandleTypeDef *huart)
  8494. {
  8495. 8003c84: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
  8496. 8003c88: b085 sub sp, #20
  8497. 8003c8a: af00 add r7, sp, #0
  8498. 8003c8c: 6078 str r0, [r7, #4]
  8499. assert_param(IS_UART_MODE(huart->Init.Mode));
  8500. /*-------------------------- USART CR2 Configuration -----------------------*/
  8501. /* Configure the UART Stop Bits: Set STOP[13:12] bits
  8502. according to huart->Init.StopBits value */
  8503. MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits);
  8504. 8003c8e: 687b ldr r3, [r7, #4]
  8505. 8003c90: 681b ldr r3, [r3, #0]
  8506. 8003c92: 691b ldr r3, [r3, #16]
  8507. 8003c94: f423 5140 bic.w r1, r3, #12288 ; 0x3000
  8508. 8003c98: 687b ldr r3, [r7, #4]
  8509. 8003c9a: 68da ldr r2, [r3, #12]
  8510. 8003c9c: 687b ldr r3, [r7, #4]
  8511. 8003c9e: 681b ldr r3, [r3, #0]
  8512. 8003ca0: 430a orrs r2, r1
  8513. 8003ca2: 611a str r2, [r3, #16]
  8514. Set the M bits according to huart->Init.WordLength value
  8515. Set PCE and PS bits according to huart->Init.Parity value
  8516. Set TE and RE bits according to huart->Init.Mode value
  8517. Set OVER8 bit according to huart->Init.OverSampling value */
  8518. tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling;
  8519. 8003ca4: 687b ldr r3, [r7, #4]
  8520. 8003ca6: 689a ldr r2, [r3, #8]
  8521. 8003ca8: 687b ldr r3, [r7, #4]
  8522. 8003caa: 691b ldr r3, [r3, #16]
  8523. 8003cac: 431a orrs r2, r3
  8524. 8003cae: 687b ldr r3, [r7, #4]
  8525. 8003cb0: 695b ldr r3, [r3, #20]
  8526. 8003cb2: 431a orrs r2, r3
  8527. 8003cb4: 687b ldr r3, [r7, #4]
  8528. 8003cb6: 69db ldr r3, [r3, #28]
  8529. 8003cb8: 4313 orrs r3, r2
  8530. 8003cba: 60fb str r3, [r7, #12]
  8531. MODIFY_REG(huart->Instance->CR1,
  8532. 8003cbc: 687b ldr r3, [r7, #4]
  8533. 8003cbe: 681b ldr r3, [r3, #0]
  8534. 8003cc0: 68db ldr r3, [r3, #12]
  8535. 8003cc2: f423 4316 bic.w r3, r3, #38400 ; 0x9600
  8536. 8003cc6: f023 030c bic.w r3, r3, #12
  8537. 8003cca: 687a ldr r2, [r7, #4]
  8538. 8003ccc: 6812 ldr r2, [r2, #0]
  8539. 8003cce: 68f9 ldr r1, [r7, #12]
  8540. 8003cd0: 430b orrs r3, r1
  8541. 8003cd2: 60d3 str r3, [r2, #12]
  8542. (uint32_t)(USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | USART_CR1_TE | USART_CR1_RE | USART_CR1_OVER8),
  8543. tmpreg);
  8544. /*-------------------------- USART CR3 Configuration -----------------------*/
  8545. /* Configure the UART HFC: Set CTSE and RTSE bits according to huart->Init.HwFlowCtl value */
  8546. MODIFY_REG(huart->Instance->CR3, (USART_CR3_RTSE | USART_CR3_CTSE), huart->Init.HwFlowCtl);
  8547. 8003cd4: 687b ldr r3, [r7, #4]
  8548. 8003cd6: 681b ldr r3, [r3, #0]
  8549. 8003cd8: 695b ldr r3, [r3, #20]
  8550. 8003cda: f423 7140 bic.w r1, r3, #768 ; 0x300
  8551. 8003cde: 687b ldr r3, [r7, #4]
  8552. 8003ce0: 699a ldr r2, [r3, #24]
  8553. 8003ce2: 687b ldr r3, [r7, #4]
  8554. 8003ce4: 681b ldr r3, [r3, #0]
  8555. 8003ce6: 430a orrs r2, r1
  8556. 8003ce8: 615a str r2, [r3, #20]
  8557. /* Check the Over Sampling */
  8558. if (huart->Init.OverSampling == UART_OVERSAMPLING_8)
  8559. 8003cea: 687b ldr r3, [r7, #4]
  8560. 8003cec: 69db ldr r3, [r3, #28]
  8561. 8003cee: f5b3 4f00 cmp.w r3, #32768 ; 0x8000
  8562. 8003cf2: f040 818b bne.w 800400c <UART_SetConfig+0x388>
  8563. {
  8564. pclk = HAL_RCC_GetPCLK2Freq();
  8565. huart->Instance->BRR = UART_BRR_SAMPLING8(pclk, huart->Init.BaudRate);
  8566. }
  8567. #elif defined(USART6)
  8568. if ((huart->Instance == USART1) || (huart->Instance == USART6))
  8569. 8003cf6: 687b ldr r3, [r7, #4]
  8570. 8003cf8: 681b ldr r3, [r3, #0]
  8571. 8003cfa: 4ac1 ldr r2, [pc, #772] ; (8004000 <UART_SetConfig+0x37c>)
  8572. 8003cfc: 4293 cmp r3, r2
  8573. 8003cfe: d005 beq.n 8003d0c <UART_SetConfig+0x88>
  8574. 8003d00: 687b ldr r3, [r7, #4]
  8575. 8003d02: 681b ldr r3, [r3, #0]
  8576. 8003d04: 4abf ldr r2, [pc, #764] ; (8004004 <UART_SetConfig+0x380>)
  8577. 8003d06: 4293 cmp r3, r2
  8578. 8003d08: f040 80bd bne.w 8003e86 <UART_SetConfig+0x202>
  8579. {
  8580. pclk = HAL_RCC_GetPCLK2Freq();
  8581. 8003d0c: f7ff f8ce bl 8002eac <HAL_RCC_GetPCLK2Freq>
  8582. 8003d10: 60b8 str r0, [r7, #8]
  8583. huart->Instance->BRR = UART_BRR_SAMPLING8(pclk, huart->Init.BaudRate);
  8584. 8003d12: 68bb ldr r3, [r7, #8]
  8585. 8003d14: 461d mov r5, r3
  8586. 8003d16: f04f 0600 mov.w r6, #0
  8587. 8003d1a: 46a8 mov r8, r5
  8588. 8003d1c: 46b1 mov r9, r6
  8589. 8003d1e: eb18 0308 adds.w r3, r8, r8
  8590. 8003d22: eb49 0409 adc.w r4, r9, r9
  8591. 8003d26: 4698 mov r8, r3
  8592. 8003d28: 46a1 mov r9, r4
  8593. 8003d2a: eb18 0805 adds.w r8, r8, r5
  8594. 8003d2e: eb49 0906 adc.w r9, r9, r6
  8595. 8003d32: f04f 0100 mov.w r1, #0
  8596. 8003d36: f04f 0200 mov.w r2, #0
  8597. 8003d3a: ea4f 02c9 mov.w r2, r9, lsl #3
  8598. 8003d3e: ea42 7258 orr.w r2, r2, r8, lsr #29
  8599. 8003d42: ea4f 01c8 mov.w r1, r8, lsl #3
  8600. 8003d46: 4688 mov r8, r1
  8601. 8003d48: 4691 mov r9, r2
  8602. 8003d4a: eb18 0005 adds.w r0, r8, r5
  8603. 8003d4e: eb49 0106 adc.w r1, r9, r6
  8604. 8003d52: 687b ldr r3, [r7, #4]
  8605. 8003d54: 685b ldr r3, [r3, #4]
  8606. 8003d56: 461d mov r5, r3
  8607. 8003d58: f04f 0600 mov.w r6, #0
  8608. 8003d5c: 196b adds r3, r5, r5
  8609. 8003d5e: eb46 0406 adc.w r4, r6, r6
  8610. 8003d62: 461a mov r2, r3
  8611. 8003d64: 4623 mov r3, r4
  8612. 8003d66: f7fc fed3 bl 8000b10 <__aeabi_uldivmod>
  8613. 8003d6a: 4603 mov r3, r0
  8614. 8003d6c: 460c mov r4, r1
  8615. 8003d6e: 461a mov r2, r3
  8616. 8003d70: 4ba5 ldr r3, [pc, #660] ; (8004008 <UART_SetConfig+0x384>)
  8617. 8003d72: fba3 2302 umull r2, r3, r3, r2
  8618. 8003d76: 095b lsrs r3, r3, #5
  8619. 8003d78: ea4f 1803 mov.w r8, r3, lsl #4
  8620. 8003d7c: 68bb ldr r3, [r7, #8]
  8621. 8003d7e: 461d mov r5, r3
  8622. 8003d80: f04f 0600 mov.w r6, #0
  8623. 8003d84: 46a9 mov r9, r5
  8624. 8003d86: 46b2 mov sl, r6
  8625. 8003d88: eb19 0309 adds.w r3, r9, r9
  8626. 8003d8c: eb4a 040a adc.w r4, sl, sl
  8627. 8003d90: 4699 mov r9, r3
  8628. 8003d92: 46a2 mov sl, r4
  8629. 8003d94: eb19 0905 adds.w r9, r9, r5
  8630. 8003d98: eb4a 0a06 adc.w sl, sl, r6
  8631. 8003d9c: f04f 0100 mov.w r1, #0
  8632. 8003da0: f04f 0200 mov.w r2, #0
  8633. 8003da4: ea4f 02ca mov.w r2, sl, lsl #3
  8634. 8003da8: ea42 7259 orr.w r2, r2, r9, lsr #29
  8635. 8003dac: ea4f 01c9 mov.w r1, r9, lsl #3
  8636. 8003db0: 4689 mov r9, r1
  8637. 8003db2: 4692 mov sl, r2
  8638. 8003db4: eb19 0005 adds.w r0, r9, r5
  8639. 8003db8: eb4a 0106 adc.w r1, sl, r6
  8640. 8003dbc: 687b ldr r3, [r7, #4]
  8641. 8003dbe: 685b ldr r3, [r3, #4]
  8642. 8003dc0: 461d mov r5, r3
  8643. 8003dc2: f04f 0600 mov.w r6, #0
  8644. 8003dc6: 196b adds r3, r5, r5
  8645. 8003dc8: eb46 0406 adc.w r4, r6, r6
  8646. 8003dcc: 461a mov r2, r3
  8647. 8003dce: 4623 mov r3, r4
  8648. 8003dd0: f7fc fe9e bl 8000b10 <__aeabi_uldivmod>
  8649. 8003dd4: 4603 mov r3, r0
  8650. 8003dd6: 460c mov r4, r1
  8651. 8003dd8: 461a mov r2, r3
  8652. 8003dda: 4b8b ldr r3, [pc, #556] ; (8004008 <UART_SetConfig+0x384>)
  8653. 8003ddc: fba3 1302 umull r1, r3, r3, r2
  8654. 8003de0: 095b lsrs r3, r3, #5
  8655. 8003de2: 2164 movs r1, #100 ; 0x64
  8656. 8003de4: fb01 f303 mul.w r3, r1, r3
  8657. 8003de8: 1ad3 subs r3, r2, r3
  8658. 8003dea: 00db lsls r3, r3, #3
  8659. 8003dec: 3332 adds r3, #50 ; 0x32
  8660. 8003dee: 4a86 ldr r2, [pc, #536] ; (8004008 <UART_SetConfig+0x384>)
  8661. 8003df0: fba2 2303 umull r2, r3, r2, r3
  8662. 8003df4: 095b lsrs r3, r3, #5
  8663. 8003df6: 005b lsls r3, r3, #1
  8664. 8003df8: f403 73f8 and.w r3, r3, #496 ; 0x1f0
  8665. 8003dfc: 4498 add r8, r3
  8666. 8003dfe: 68bb ldr r3, [r7, #8]
  8667. 8003e00: 461d mov r5, r3
  8668. 8003e02: f04f 0600 mov.w r6, #0
  8669. 8003e06: 46a9 mov r9, r5
  8670. 8003e08: 46b2 mov sl, r6
  8671. 8003e0a: eb19 0309 adds.w r3, r9, r9
  8672. 8003e0e: eb4a 040a adc.w r4, sl, sl
  8673. 8003e12: 4699 mov r9, r3
  8674. 8003e14: 46a2 mov sl, r4
  8675. 8003e16: eb19 0905 adds.w r9, r9, r5
  8676. 8003e1a: eb4a 0a06 adc.w sl, sl, r6
  8677. 8003e1e: f04f 0100 mov.w r1, #0
  8678. 8003e22: f04f 0200 mov.w r2, #0
  8679. 8003e26: ea4f 02ca mov.w r2, sl, lsl #3
  8680. 8003e2a: ea42 7259 orr.w r2, r2, r9, lsr #29
  8681. 8003e2e: ea4f 01c9 mov.w r1, r9, lsl #3
  8682. 8003e32: 4689 mov r9, r1
  8683. 8003e34: 4692 mov sl, r2
  8684. 8003e36: eb19 0005 adds.w r0, r9, r5
  8685. 8003e3a: eb4a 0106 adc.w r1, sl, r6
  8686. 8003e3e: 687b ldr r3, [r7, #4]
  8687. 8003e40: 685b ldr r3, [r3, #4]
  8688. 8003e42: 461d mov r5, r3
  8689. 8003e44: f04f 0600 mov.w r6, #0
  8690. 8003e48: 196b adds r3, r5, r5
  8691. 8003e4a: eb46 0406 adc.w r4, r6, r6
  8692. 8003e4e: 461a mov r2, r3
  8693. 8003e50: 4623 mov r3, r4
  8694. 8003e52: f7fc fe5d bl 8000b10 <__aeabi_uldivmod>
  8695. 8003e56: 4603 mov r3, r0
  8696. 8003e58: 460c mov r4, r1
  8697. 8003e5a: 461a mov r2, r3
  8698. 8003e5c: 4b6a ldr r3, [pc, #424] ; (8004008 <UART_SetConfig+0x384>)
  8699. 8003e5e: fba3 1302 umull r1, r3, r3, r2
  8700. 8003e62: 095b lsrs r3, r3, #5
  8701. 8003e64: 2164 movs r1, #100 ; 0x64
  8702. 8003e66: fb01 f303 mul.w r3, r1, r3
  8703. 8003e6a: 1ad3 subs r3, r2, r3
  8704. 8003e6c: 00db lsls r3, r3, #3
  8705. 8003e6e: 3332 adds r3, #50 ; 0x32
  8706. 8003e70: 4a65 ldr r2, [pc, #404] ; (8004008 <UART_SetConfig+0x384>)
  8707. 8003e72: fba2 2303 umull r2, r3, r2, r3
  8708. 8003e76: 095b lsrs r3, r3, #5
  8709. 8003e78: f003 0207 and.w r2, r3, #7
  8710. 8003e7c: 687b ldr r3, [r7, #4]
  8711. 8003e7e: 681b ldr r3, [r3, #0]
  8712. 8003e80: 4442 add r2, r8
  8713. 8003e82: 609a str r2, [r3, #8]
  8714. 8003e84: e26f b.n 8004366 <UART_SetConfig+0x6e2>
  8715. huart->Instance->BRR = UART_BRR_SAMPLING8(pclk, huart->Init.BaudRate);
  8716. }
  8717. #endif /* USART6 */
  8718. else
  8719. {
  8720. pclk = HAL_RCC_GetPCLK1Freq();
  8721. 8003e86: f7fe fffd bl 8002e84 <HAL_RCC_GetPCLK1Freq>
  8722. 8003e8a: 60b8 str r0, [r7, #8]
  8723. huart->Instance->BRR = UART_BRR_SAMPLING8(pclk, huart->Init.BaudRate);
  8724. 8003e8c: 68bb ldr r3, [r7, #8]
  8725. 8003e8e: 461d mov r5, r3
  8726. 8003e90: f04f 0600 mov.w r6, #0
  8727. 8003e94: 46a8 mov r8, r5
  8728. 8003e96: 46b1 mov r9, r6
  8729. 8003e98: eb18 0308 adds.w r3, r8, r8
  8730. 8003e9c: eb49 0409 adc.w r4, r9, r9
  8731. 8003ea0: 4698 mov r8, r3
  8732. 8003ea2: 46a1 mov r9, r4
  8733. 8003ea4: eb18 0805 adds.w r8, r8, r5
  8734. 8003ea8: eb49 0906 adc.w r9, r9, r6
  8735. 8003eac: f04f 0100 mov.w r1, #0
  8736. 8003eb0: f04f 0200 mov.w r2, #0
  8737. 8003eb4: ea4f 02c9 mov.w r2, r9, lsl #3
  8738. 8003eb8: ea42 7258 orr.w r2, r2, r8, lsr #29
  8739. 8003ebc: ea4f 01c8 mov.w r1, r8, lsl #3
  8740. 8003ec0: 4688 mov r8, r1
  8741. 8003ec2: 4691 mov r9, r2
  8742. 8003ec4: eb18 0005 adds.w r0, r8, r5
  8743. 8003ec8: eb49 0106 adc.w r1, r9, r6
  8744. 8003ecc: 687b ldr r3, [r7, #4]
  8745. 8003ece: 685b ldr r3, [r3, #4]
  8746. 8003ed0: 461d mov r5, r3
  8747. 8003ed2: f04f 0600 mov.w r6, #0
  8748. 8003ed6: 196b adds r3, r5, r5
  8749. 8003ed8: eb46 0406 adc.w r4, r6, r6
  8750. 8003edc: 461a mov r2, r3
  8751. 8003ede: 4623 mov r3, r4
  8752. 8003ee0: f7fc fe16 bl 8000b10 <__aeabi_uldivmod>
  8753. 8003ee4: 4603 mov r3, r0
  8754. 8003ee6: 460c mov r4, r1
  8755. 8003ee8: 461a mov r2, r3
  8756. 8003eea: 4b47 ldr r3, [pc, #284] ; (8004008 <UART_SetConfig+0x384>)
  8757. 8003eec: fba3 2302 umull r2, r3, r3, r2
  8758. 8003ef0: 095b lsrs r3, r3, #5
  8759. 8003ef2: ea4f 1803 mov.w r8, r3, lsl #4
  8760. 8003ef6: 68bb ldr r3, [r7, #8]
  8761. 8003ef8: 461d mov r5, r3
  8762. 8003efa: f04f 0600 mov.w r6, #0
  8763. 8003efe: 46a9 mov r9, r5
  8764. 8003f00: 46b2 mov sl, r6
  8765. 8003f02: eb19 0309 adds.w r3, r9, r9
  8766. 8003f06: eb4a 040a adc.w r4, sl, sl
  8767. 8003f0a: 4699 mov r9, r3
  8768. 8003f0c: 46a2 mov sl, r4
  8769. 8003f0e: eb19 0905 adds.w r9, r9, r5
  8770. 8003f12: eb4a 0a06 adc.w sl, sl, r6
  8771. 8003f16: f04f 0100 mov.w r1, #0
  8772. 8003f1a: f04f 0200 mov.w r2, #0
  8773. 8003f1e: ea4f 02ca mov.w r2, sl, lsl #3
  8774. 8003f22: ea42 7259 orr.w r2, r2, r9, lsr #29
  8775. 8003f26: ea4f 01c9 mov.w r1, r9, lsl #3
  8776. 8003f2a: 4689 mov r9, r1
  8777. 8003f2c: 4692 mov sl, r2
  8778. 8003f2e: eb19 0005 adds.w r0, r9, r5
  8779. 8003f32: eb4a 0106 adc.w r1, sl, r6
  8780. 8003f36: 687b ldr r3, [r7, #4]
  8781. 8003f38: 685b ldr r3, [r3, #4]
  8782. 8003f3a: 461d mov r5, r3
  8783. 8003f3c: f04f 0600 mov.w r6, #0
  8784. 8003f40: 196b adds r3, r5, r5
  8785. 8003f42: eb46 0406 adc.w r4, r6, r6
  8786. 8003f46: 461a mov r2, r3
  8787. 8003f48: 4623 mov r3, r4
  8788. 8003f4a: f7fc fde1 bl 8000b10 <__aeabi_uldivmod>
  8789. 8003f4e: 4603 mov r3, r0
  8790. 8003f50: 460c mov r4, r1
  8791. 8003f52: 461a mov r2, r3
  8792. 8003f54: 4b2c ldr r3, [pc, #176] ; (8004008 <UART_SetConfig+0x384>)
  8793. 8003f56: fba3 1302 umull r1, r3, r3, r2
  8794. 8003f5a: 095b lsrs r3, r3, #5
  8795. 8003f5c: 2164 movs r1, #100 ; 0x64
  8796. 8003f5e: fb01 f303 mul.w r3, r1, r3
  8797. 8003f62: 1ad3 subs r3, r2, r3
  8798. 8003f64: 00db lsls r3, r3, #3
  8799. 8003f66: 3332 adds r3, #50 ; 0x32
  8800. 8003f68: 4a27 ldr r2, [pc, #156] ; (8004008 <UART_SetConfig+0x384>)
  8801. 8003f6a: fba2 2303 umull r2, r3, r2, r3
  8802. 8003f6e: 095b lsrs r3, r3, #5
  8803. 8003f70: 005b lsls r3, r3, #1
  8804. 8003f72: f403 73f8 and.w r3, r3, #496 ; 0x1f0
  8805. 8003f76: 4498 add r8, r3
  8806. 8003f78: 68bb ldr r3, [r7, #8]
  8807. 8003f7a: 461d mov r5, r3
  8808. 8003f7c: f04f 0600 mov.w r6, #0
  8809. 8003f80: 46a9 mov r9, r5
  8810. 8003f82: 46b2 mov sl, r6
  8811. 8003f84: eb19 0309 adds.w r3, r9, r9
  8812. 8003f88: eb4a 040a adc.w r4, sl, sl
  8813. 8003f8c: 4699 mov r9, r3
  8814. 8003f8e: 46a2 mov sl, r4
  8815. 8003f90: eb19 0905 adds.w r9, r9, r5
  8816. 8003f94: eb4a 0a06 adc.w sl, sl, r6
  8817. 8003f98: f04f 0100 mov.w r1, #0
  8818. 8003f9c: f04f 0200 mov.w r2, #0
  8819. 8003fa0: ea4f 02ca mov.w r2, sl, lsl #3
  8820. 8003fa4: ea42 7259 orr.w r2, r2, r9, lsr #29
  8821. 8003fa8: ea4f 01c9 mov.w r1, r9, lsl #3
  8822. 8003fac: 4689 mov r9, r1
  8823. 8003fae: 4692 mov sl, r2
  8824. 8003fb0: eb19 0005 adds.w r0, r9, r5
  8825. 8003fb4: eb4a 0106 adc.w r1, sl, r6
  8826. 8003fb8: 687b ldr r3, [r7, #4]
  8827. 8003fba: 685b ldr r3, [r3, #4]
  8828. 8003fbc: 461d mov r5, r3
  8829. 8003fbe: f04f 0600 mov.w r6, #0
  8830. 8003fc2: 196b adds r3, r5, r5
  8831. 8003fc4: eb46 0406 adc.w r4, r6, r6
  8832. 8003fc8: 461a mov r2, r3
  8833. 8003fca: 4623 mov r3, r4
  8834. 8003fcc: f7fc fda0 bl 8000b10 <__aeabi_uldivmod>
  8835. 8003fd0: 4603 mov r3, r0
  8836. 8003fd2: 460c mov r4, r1
  8837. 8003fd4: 461a mov r2, r3
  8838. 8003fd6: 4b0c ldr r3, [pc, #48] ; (8004008 <UART_SetConfig+0x384>)
  8839. 8003fd8: fba3 1302 umull r1, r3, r3, r2
  8840. 8003fdc: 095b lsrs r3, r3, #5
  8841. 8003fde: 2164 movs r1, #100 ; 0x64
  8842. 8003fe0: fb01 f303 mul.w r3, r1, r3
  8843. 8003fe4: 1ad3 subs r3, r2, r3
  8844. 8003fe6: 00db lsls r3, r3, #3
  8845. 8003fe8: 3332 adds r3, #50 ; 0x32
  8846. 8003fea: 4a07 ldr r2, [pc, #28] ; (8004008 <UART_SetConfig+0x384>)
  8847. 8003fec: fba2 2303 umull r2, r3, r2, r3
  8848. 8003ff0: 095b lsrs r3, r3, #5
  8849. 8003ff2: f003 0207 and.w r2, r3, #7
  8850. 8003ff6: 687b ldr r3, [r7, #4]
  8851. 8003ff8: 681b ldr r3, [r3, #0]
  8852. 8003ffa: 4442 add r2, r8
  8853. 8003ffc: 609a str r2, [r3, #8]
  8854. {
  8855. pclk = HAL_RCC_GetPCLK1Freq();
  8856. huart->Instance->BRR = UART_BRR_SAMPLING16(pclk, huart->Init.BaudRate);
  8857. }
  8858. }
  8859. }
  8860. 8003ffe: e1b2 b.n 8004366 <UART_SetConfig+0x6e2>
  8861. 8004000: 40011000 .word 0x40011000
  8862. 8004004: 40011400 .word 0x40011400
  8863. 8004008: 51eb851f .word 0x51eb851f
  8864. if ((huart->Instance == USART1) || (huart->Instance == USART6))
  8865. 800400c: 687b ldr r3, [r7, #4]
  8866. 800400e: 681b ldr r3, [r3, #0]
  8867. 8004010: 4ad7 ldr r2, [pc, #860] ; (8004370 <UART_SetConfig+0x6ec>)
  8868. 8004012: 4293 cmp r3, r2
  8869. 8004014: d005 beq.n 8004022 <UART_SetConfig+0x39e>
  8870. 8004016: 687b ldr r3, [r7, #4]
  8871. 8004018: 681b ldr r3, [r3, #0]
  8872. 800401a: 4ad6 ldr r2, [pc, #856] ; (8004374 <UART_SetConfig+0x6f0>)
  8873. 800401c: 4293 cmp r3, r2
  8874. 800401e: f040 80d1 bne.w 80041c4 <UART_SetConfig+0x540>
  8875. pclk = HAL_RCC_GetPCLK2Freq();
  8876. 8004022: f7fe ff43 bl 8002eac <HAL_RCC_GetPCLK2Freq>
  8877. 8004026: 60b8 str r0, [r7, #8]
  8878. huart->Instance->BRR = UART_BRR_SAMPLING16(pclk, huart->Init.BaudRate);
  8879. 8004028: 68bb ldr r3, [r7, #8]
  8880. 800402a: 469a mov sl, r3
  8881. 800402c: f04f 0b00 mov.w fp, #0
  8882. 8004030: 46d0 mov r8, sl
  8883. 8004032: 46d9 mov r9, fp
  8884. 8004034: eb18 0308 adds.w r3, r8, r8
  8885. 8004038: eb49 0409 adc.w r4, r9, r9
  8886. 800403c: 4698 mov r8, r3
  8887. 800403e: 46a1 mov r9, r4
  8888. 8004040: eb18 080a adds.w r8, r8, sl
  8889. 8004044: eb49 090b adc.w r9, r9, fp
  8890. 8004048: f04f 0100 mov.w r1, #0
  8891. 800404c: f04f 0200 mov.w r2, #0
  8892. 8004050: ea4f 02c9 mov.w r2, r9, lsl #3
  8893. 8004054: ea42 7258 orr.w r2, r2, r8, lsr #29
  8894. 8004058: ea4f 01c8 mov.w r1, r8, lsl #3
  8895. 800405c: 4688 mov r8, r1
  8896. 800405e: 4691 mov r9, r2
  8897. 8004060: eb1a 0508 adds.w r5, sl, r8
  8898. 8004064: eb4b 0609 adc.w r6, fp, r9
  8899. 8004068: 687b ldr r3, [r7, #4]
  8900. 800406a: 685b ldr r3, [r3, #4]
  8901. 800406c: 4619 mov r1, r3
  8902. 800406e: f04f 0200 mov.w r2, #0
  8903. 8004072: f04f 0300 mov.w r3, #0
  8904. 8004076: f04f 0400 mov.w r4, #0
  8905. 800407a: 0094 lsls r4, r2, #2
  8906. 800407c: ea44 7491 orr.w r4, r4, r1, lsr #30
  8907. 8004080: 008b lsls r3, r1, #2
  8908. 8004082: 461a mov r2, r3
  8909. 8004084: 4623 mov r3, r4
  8910. 8004086: 4628 mov r0, r5
  8911. 8004088: 4631 mov r1, r6
  8912. 800408a: f7fc fd41 bl 8000b10 <__aeabi_uldivmod>
  8913. 800408e: 4603 mov r3, r0
  8914. 8004090: 460c mov r4, r1
  8915. 8004092: 461a mov r2, r3
  8916. 8004094: 4bb8 ldr r3, [pc, #736] ; (8004378 <UART_SetConfig+0x6f4>)
  8917. 8004096: fba3 2302 umull r2, r3, r3, r2
  8918. 800409a: 095b lsrs r3, r3, #5
  8919. 800409c: ea4f 1803 mov.w r8, r3, lsl #4
  8920. 80040a0: 68bb ldr r3, [r7, #8]
  8921. 80040a2: 469b mov fp, r3
  8922. 80040a4: f04f 0c00 mov.w ip, #0
  8923. 80040a8: 46d9 mov r9, fp
  8924. 80040aa: 46e2 mov sl, ip
  8925. 80040ac: eb19 0309 adds.w r3, r9, r9
  8926. 80040b0: eb4a 040a adc.w r4, sl, sl
  8927. 80040b4: 4699 mov r9, r3
  8928. 80040b6: 46a2 mov sl, r4
  8929. 80040b8: eb19 090b adds.w r9, r9, fp
  8930. 80040bc: eb4a 0a0c adc.w sl, sl, ip
  8931. 80040c0: f04f 0100 mov.w r1, #0
  8932. 80040c4: f04f 0200 mov.w r2, #0
  8933. 80040c8: ea4f 02ca mov.w r2, sl, lsl #3
  8934. 80040cc: ea42 7259 orr.w r2, r2, r9, lsr #29
  8935. 80040d0: ea4f 01c9 mov.w r1, r9, lsl #3
  8936. 80040d4: 4689 mov r9, r1
  8937. 80040d6: 4692 mov sl, r2
  8938. 80040d8: eb1b 0509 adds.w r5, fp, r9
  8939. 80040dc: eb4c 060a adc.w r6, ip, sl
  8940. 80040e0: 687b ldr r3, [r7, #4]
  8941. 80040e2: 685b ldr r3, [r3, #4]
  8942. 80040e4: 4619 mov r1, r3
  8943. 80040e6: f04f 0200 mov.w r2, #0
  8944. 80040ea: f04f 0300 mov.w r3, #0
  8945. 80040ee: f04f 0400 mov.w r4, #0
  8946. 80040f2: 0094 lsls r4, r2, #2
  8947. 80040f4: ea44 7491 orr.w r4, r4, r1, lsr #30
  8948. 80040f8: 008b lsls r3, r1, #2
  8949. 80040fa: 461a mov r2, r3
  8950. 80040fc: 4623 mov r3, r4
  8951. 80040fe: 4628 mov r0, r5
  8952. 8004100: 4631 mov r1, r6
  8953. 8004102: f7fc fd05 bl 8000b10 <__aeabi_uldivmod>
  8954. 8004106: 4603 mov r3, r0
  8955. 8004108: 460c mov r4, r1
  8956. 800410a: 461a mov r2, r3
  8957. 800410c: 4b9a ldr r3, [pc, #616] ; (8004378 <UART_SetConfig+0x6f4>)
  8958. 800410e: fba3 1302 umull r1, r3, r3, r2
  8959. 8004112: 095b lsrs r3, r3, #5
  8960. 8004114: 2164 movs r1, #100 ; 0x64
  8961. 8004116: fb01 f303 mul.w r3, r1, r3
  8962. 800411a: 1ad3 subs r3, r2, r3
  8963. 800411c: 011b lsls r3, r3, #4
  8964. 800411e: 3332 adds r3, #50 ; 0x32
  8965. 8004120: 4a95 ldr r2, [pc, #596] ; (8004378 <UART_SetConfig+0x6f4>)
  8966. 8004122: fba2 2303 umull r2, r3, r2, r3
  8967. 8004126: 095b lsrs r3, r3, #5
  8968. 8004128: f003 03f0 and.w r3, r3, #240 ; 0xf0
  8969. 800412c: 4498 add r8, r3
  8970. 800412e: 68bb ldr r3, [r7, #8]
  8971. 8004130: 469b mov fp, r3
  8972. 8004132: f04f 0c00 mov.w ip, #0
  8973. 8004136: 46d9 mov r9, fp
  8974. 8004138: 46e2 mov sl, ip
  8975. 800413a: eb19 0309 adds.w r3, r9, r9
  8976. 800413e: eb4a 040a adc.w r4, sl, sl
  8977. 8004142: 4699 mov r9, r3
  8978. 8004144: 46a2 mov sl, r4
  8979. 8004146: eb19 090b adds.w r9, r9, fp
  8980. 800414a: eb4a 0a0c adc.w sl, sl, ip
  8981. 800414e: f04f 0100 mov.w r1, #0
  8982. 8004152: f04f 0200 mov.w r2, #0
  8983. 8004156: ea4f 02ca mov.w r2, sl, lsl #3
  8984. 800415a: ea42 7259 orr.w r2, r2, r9, lsr #29
  8985. 800415e: ea4f 01c9 mov.w r1, r9, lsl #3
  8986. 8004162: 4689 mov r9, r1
  8987. 8004164: 4692 mov sl, r2
  8988. 8004166: eb1b 0509 adds.w r5, fp, r9
  8989. 800416a: eb4c 060a adc.w r6, ip, sl
  8990. 800416e: 687b ldr r3, [r7, #4]
  8991. 8004170: 685b ldr r3, [r3, #4]
  8992. 8004172: 4619 mov r1, r3
  8993. 8004174: f04f 0200 mov.w r2, #0
  8994. 8004178: f04f 0300 mov.w r3, #0
  8995. 800417c: f04f 0400 mov.w r4, #0
  8996. 8004180: 0094 lsls r4, r2, #2
  8997. 8004182: ea44 7491 orr.w r4, r4, r1, lsr #30
  8998. 8004186: 008b lsls r3, r1, #2
  8999. 8004188: 461a mov r2, r3
  9000. 800418a: 4623 mov r3, r4
  9001. 800418c: 4628 mov r0, r5
  9002. 800418e: 4631 mov r1, r6
  9003. 8004190: f7fc fcbe bl 8000b10 <__aeabi_uldivmod>
  9004. 8004194: 4603 mov r3, r0
  9005. 8004196: 460c mov r4, r1
  9006. 8004198: 461a mov r2, r3
  9007. 800419a: 4b77 ldr r3, [pc, #476] ; (8004378 <UART_SetConfig+0x6f4>)
  9008. 800419c: fba3 1302 umull r1, r3, r3, r2
  9009. 80041a0: 095b lsrs r3, r3, #5
  9010. 80041a2: 2164 movs r1, #100 ; 0x64
  9011. 80041a4: fb01 f303 mul.w r3, r1, r3
  9012. 80041a8: 1ad3 subs r3, r2, r3
  9013. 80041aa: 011b lsls r3, r3, #4
  9014. 80041ac: 3332 adds r3, #50 ; 0x32
  9015. 80041ae: 4a72 ldr r2, [pc, #456] ; (8004378 <UART_SetConfig+0x6f4>)
  9016. 80041b0: fba2 2303 umull r2, r3, r2, r3
  9017. 80041b4: 095b lsrs r3, r3, #5
  9018. 80041b6: f003 020f and.w r2, r3, #15
  9019. 80041ba: 687b ldr r3, [r7, #4]
  9020. 80041bc: 681b ldr r3, [r3, #0]
  9021. 80041be: 4442 add r2, r8
  9022. 80041c0: 609a str r2, [r3, #8]
  9023. 80041c2: e0d0 b.n 8004366 <UART_SetConfig+0x6e2>
  9024. pclk = HAL_RCC_GetPCLK1Freq();
  9025. 80041c4: f7fe fe5e bl 8002e84 <HAL_RCC_GetPCLK1Freq>
  9026. 80041c8: 60b8 str r0, [r7, #8]
  9027. huart->Instance->BRR = UART_BRR_SAMPLING16(pclk, huart->Init.BaudRate);
  9028. 80041ca: 68bb ldr r3, [r7, #8]
  9029. 80041cc: 469a mov sl, r3
  9030. 80041ce: f04f 0b00 mov.w fp, #0
  9031. 80041d2: 46d0 mov r8, sl
  9032. 80041d4: 46d9 mov r9, fp
  9033. 80041d6: eb18 0308 adds.w r3, r8, r8
  9034. 80041da: eb49 0409 adc.w r4, r9, r9
  9035. 80041de: 4698 mov r8, r3
  9036. 80041e0: 46a1 mov r9, r4
  9037. 80041e2: eb18 080a adds.w r8, r8, sl
  9038. 80041e6: eb49 090b adc.w r9, r9, fp
  9039. 80041ea: f04f 0100 mov.w r1, #0
  9040. 80041ee: f04f 0200 mov.w r2, #0
  9041. 80041f2: ea4f 02c9 mov.w r2, r9, lsl #3
  9042. 80041f6: ea42 7258 orr.w r2, r2, r8, lsr #29
  9043. 80041fa: ea4f 01c8 mov.w r1, r8, lsl #3
  9044. 80041fe: 4688 mov r8, r1
  9045. 8004200: 4691 mov r9, r2
  9046. 8004202: eb1a 0508 adds.w r5, sl, r8
  9047. 8004206: eb4b 0609 adc.w r6, fp, r9
  9048. 800420a: 687b ldr r3, [r7, #4]
  9049. 800420c: 685b ldr r3, [r3, #4]
  9050. 800420e: 4619 mov r1, r3
  9051. 8004210: f04f 0200 mov.w r2, #0
  9052. 8004214: f04f 0300 mov.w r3, #0
  9053. 8004218: f04f 0400 mov.w r4, #0
  9054. 800421c: 0094 lsls r4, r2, #2
  9055. 800421e: ea44 7491 orr.w r4, r4, r1, lsr #30
  9056. 8004222: 008b lsls r3, r1, #2
  9057. 8004224: 461a mov r2, r3
  9058. 8004226: 4623 mov r3, r4
  9059. 8004228: 4628 mov r0, r5
  9060. 800422a: 4631 mov r1, r6
  9061. 800422c: f7fc fc70 bl 8000b10 <__aeabi_uldivmod>
  9062. 8004230: 4603 mov r3, r0
  9063. 8004232: 460c mov r4, r1
  9064. 8004234: 461a mov r2, r3
  9065. 8004236: 4b50 ldr r3, [pc, #320] ; (8004378 <UART_SetConfig+0x6f4>)
  9066. 8004238: fba3 2302 umull r2, r3, r3, r2
  9067. 800423c: 095b lsrs r3, r3, #5
  9068. 800423e: ea4f 1803 mov.w r8, r3, lsl #4
  9069. 8004242: 68bb ldr r3, [r7, #8]
  9070. 8004244: 469b mov fp, r3
  9071. 8004246: f04f 0c00 mov.w ip, #0
  9072. 800424a: 46d9 mov r9, fp
  9073. 800424c: 46e2 mov sl, ip
  9074. 800424e: eb19 0309 adds.w r3, r9, r9
  9075. 8004252: eb4a 040a adc.w r4, sl, sl
  9076. 8004256: 4699 mov r9, r3
  9077. 8004258: 46a2 mov sl, r4
  9078. 800425a: eb19 090b adds.w r9, r9, fp
  9079. 800425e: eb4a 0a0c adc.w sl, sl, ip
  9080. 8004262: f04f 0100 mov.w r1, #0
  9081. 8004266: f04f 0200 mov.w r2, #0
  9082. 800426a: ea4f 02ca mov.w r2, sl, lsl #3
  9083. 800426e: ea42 7259 orr.w r2, r2, r9, lsr #29
  9084. 8004272: ea4f 01c9 mov.w r1, r9, lsl #3
  9085. 8004276: 4689 mov r9, r1
  9086. 8004278: 4692 mov sl, r2
  9087. 800427a: eb1b 0509 adds.w r5, fp, r9
  9088. 800427e: eb4c 060a adc.w r6, ip, sl
  9089. 8004282: 687b ldr r3, [r7, #4]
  9090. 8004284: 685b ldr r3, [r3, #4]
  9091. 8004286: 4619 mov r1, r3
  9092. 8004288: f04f 0200 mov.w r2, #0
  9093. 800428c: f04f 0300 mov.w r3, #0
  9094. 8004290: f04f 0400 mov.w r4, #0
  9095. 8004294: 0094 lsls r4, r2, #2
  9096. 8004296: ea44 7491 orr.w r4, r4, r1, lsr #30
  9097. 800429a: 008b lsls r3, r1, #2
  9098. 800429c: 461a mov r2, r3
  9099. 800429e: 4623 mov r3, r4
  9100. 80042a0: 4628 mov r0, r5
  9101. 80042a2: 4631 mov r1, r6
  9102. 80042a4: f7fc fc34 bl 8000b10 <__aeabi_uldivmod>
  9103. 80042a8: 4603 mov r3, r0
  9104. 80042aa: 460c mov r4, r1
  9105. 80042ac: 461a mov r2, r3
  9106. 80042ae: 4b32 ldr r3, [pc, #200] ; (8004378 <UART_SetConfig+0x6f4>)
  9107. 80042b0: fba3 1302 umull r1, r3, r3, r2
  9108. 80042b4: 095b lsrs r3, r3, #5
  9109. 80042b6: 2164 movs r1, #100 ; 0x64
  9110. 80042b8: fb01 f303 mul.w r3, r1, r3
  9111. 80042bc: 1ad3 subs r3, r2, r3
  9112. 80042be: 011b lsls r3, r3, #4
  9113. 80042c0: 3332 adds r3, #50 ; 0x32
  9114. 80042c2: 4a2d ldr r2, [pc, #180] ; (8004378 <UART_SetConfig+0x6f4>)
  9115. 80042c4: fba2 2303 umull r2, r3, r2, r3
  9116. 80042c8: 095b lsrs r3, r3, #5
  9117. 80042ca: f003 03f0 and.w r3, r3, #240 ; 0xf0
  9118. 80042ce: 4498 add r8, r3
  9119. 80042d0: 68bb ldr r3, [r7, #8]
  9120. 80042d2: 469b mov fp, r3
  9121. 80042d4: f04f 0c00 mov.w ip, #0
  9122. 80042d8: 46d9 mov r9, fp
  9123. 80042da: 46e2 mov sl, ip
  9124. 80042dc: eb19 0309 adds.w r3, r9, r9
  9125. 80042e0: eb4a 040a adc.w r4, sl, sl
  9126. 80042e4: 4699 mov r9, r3
  9127. 80042e6: 46a2 mov sl, r4
  9128. 80042e8: eb19 090b adds.w r9, r9, fp
  9129. 80042ec: eb4a 0a0c adc.w sl, sl, ip
  9130. 80042f0: f04f 0100 mov.w r1, #0
  9131. 80042f4: f04f 0200 mov.w r2, #0
  9132. 80042f8: ea4f 02ca mov.w r2, sl, lsl #3
  9133. 80042fc: ea42 7259 orr.w r2, r2, r9, lsr #29
  9134. 8004300: ea4f 01c9 mov.w r1, r9, lsl #3
  9135. 8004304: 4689 mov r9, r1
  9136. 8004306: 4692 mov sl, r2
  9137. 8004308: eb1b 0509 adds.w r5, fp, r9
  9138. 800430c: eb4c 060a adc.w r6, ip, sl
  9139. 8004310: 687b ldr r3, [r7, #4]
  9140. 8004312: 685b ldr r3, [r3, #4]
  9141. 8004314: 4619 mov r1, r3
  9142. 8004316: f04f 0200 mov.w r2, #0
  9143. 800431a: f04f 0300 mov.w r3, #0
  9144. 800431e: f04f 0400 mov.w r4, #0
  9145. 8004322: 0094 lsls r4, r2, #2
  9146. 8004324: ea44 7491 orr.w r4, r4, r1, lsr #30
  9147. 8004328: 008b lsls r3, r1, #2
  9148. 800432a: 461a mov r2, r3
  9149. 800432c: 4623 mov r3, r4
  9150. 800432e: 4628 mov r0, r5
  9151. 8004330: 4631 mov r1, r6
  9152. 8004332: f7fc fbed bl 8000b10 <__aeabi_uldivmod>
  9153. 8004336: 4603 mov r3, r0
  9154. 8004338: 460c mov r4, r1
  9155. 800433a: 461a mov r2, r3
  9156. 800433c: 4b0e ldr r3, [pc, #56] ; (8004378 <UART_SetConfig+0x6f4>)
  9157. 800433e: fba3 1302 umull r1, r3, r3, r2
  9158. 8004342: 095b lsrs r3, r3, #5
  9159. 8004344: 2164 movs r1, #100 ; 0x64
  9160. 8004346: fb01 f303 mul.w r3, r1, r3
  9161. 800434a: 1ad3 subs r3, r2, r3
  9162. 800434c: 011b lsls r3, r3, #4
  9163. 800434e: 3332 adds r3, #50 ; 0x32
  9164. 8004350: 4a09 ldr r2, [pc, #36] ; (8004378 <UART_SetConfig+0x6f4>)
  9165. 8004352: fba2 2303 umull r2, r3, r2, r3
  9166. 8004356: 095b lsrs r3, r3, #5
  9167. 8004358: f003 020f and.w r2, r3, #15
  9168. 800435c: 687b ldr r3, [r7, #4]
  9169. 800435e: 681b ldr r3, [r3, #0]
  9170. 8004360: 4442 add r2, r8
  9171. 8004362: 609a str r2, [r3, #8]
  9172. }
  9173. 8004364: e7ff b.n 8004366 <UART_SetConfig+0x6e2>
  9174. 8004366: bf00 nop
  9175. 8004368: 3714 adds r7, #20
  9176. 800436a: 46bd mov sp, r7
  9177. 800436c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
  9178. 8004370: 40011000 .word 0x40011000
  9179. 8004374: 40011400 .word 0x40011400
  9180. 8004378: 51eb851f .word 0x51eb851f
  9181. 0800437c <__errno>:
  9182. 800437c: 4b01 ldr r3, [pc, #4] ; (8004384 <__errno+0x8>)
  9183. 800437e: 6818 ldr r0, [r3, #0]
  9184. 8004380: 4770 bx lr
  9185. 8004382: bf00 nop
  9186. 8004384: 20000020 .word 0x20000020
  9187. 08004388 <__libc_init_array>:
  9188. 8004388: b570 push {r4, r5, r6, lr}
  9189. 800438a: 4e0d ldr r6, [pc, #52] ; (80043c0 <__libc_init_array+0x38>)
  9190. 800438c: 4c0d ldr r4, [pc, #52] ; (80043c4 <__libc_init_array+0x3c>)
  9191. 800438e: 1ba4 subs r4, r4, r6
  9192. 8004390: 10a4 asrs r4, r4, #2
  9193. 8004392: 2500 movs r5, #0
  9194. 8004394: 42a5 cmp r5, r4
  9195. 8004396: d109 bne.n 80043ac <__libc_init_array+0x24>
  9196. 8004398: 4e0b ldr r6, [pc, #44] ; (80043c8 <__libc_init_array+0x40>)
  9197. 800439a: 4c0c ldr r4, [pc, #48] ; (80043cc <__libc_init_array+0x44>)
  9198. 800439c: f001 fde2 bl 8005f64 <_init>
  9199. 80043a0: 1ba4 subs r4, r4, r6
  9200. 80043a2: 10a4 asrs r4, r4, #2
  9201. 80043a4: 2500 movs r5, #0
  9202. 80043a6: 42a5 cmp r5, r4
  9203. 80043a8: d105 bne.n 80043b6 <__libc_init_array+0x2e>
  9204. 80043aa: bd70 pop {r4, r5, r6, pc}
  9205. 80043ac: f856 3025 ldr.w r3, [r6, r5, lsl #2]
  9206. 80043b0: 4798 blx r3
  9207. 80043b2: 3501 adds r5, #1
  9208. 80043b4: e7ee b.n 8004394 <__libc_init_array+0xc>
  9209. 80043b6: f856 3025 ldr.w r3, [r6, r5, lsl #2]
  9210. 80043ba: 4798 blx r3
  9211. 80043bc: 3501 adds r5, #1
  9212. 80043be: e7f2 b.n 80043a6 <__libc_init_array+0x1e>
  9213. 80043c0: 08006218 .word 0x08006218
  9214. 80043c4: 08006218 .word 0x08006218
  9215. 80043c8: 08006218 .word 0x08006218
  9216. 80043cc: 0800621c .word 0x0800621c
  9217. 080043d0 <memset>:
  9218. 80043d0: 4402 add r2, r0
  9219. 80043d2: 4603 mov r3, r0
  9220. 80043d4: 4293 cmp r3, r2
  9221. 80043d6: d100 bne.n 80043da <memset+0xa>
  9222. 80043d8: 4770 bx lr
  9223. 80043da: f803 1b01 strb.w r1, [r3], #1
  9224. 80043de: e7f9 b.n 80043d4 <memset+0x4>
  9225. 080043e0 <cos>:
  9226. 80043e0: b51f push {r0, r1, r2, r3, r4, lr}
  9227. 80043e2: ec51 0b10 vmov r0, r1, d0
  9228. 80043e6: 4a1e ldr r2, [pc, #120] ; (8004460 <cos+0x80>)
  9229. 80043e8: f021 4300 bic.w r3, r1, #2147483648 ; 0x80000000
  9230. 80043ec: 4293 cmp r3, r2
  9231. 80043ee: dc06 bgt.n 80043fe <cos+0x1e>
  9232. 80043f0: ed9f 1b19 vldr d1, [pc, #100] ; 8004458 <cos+0x78>
  9233. 80043f4: f000 fe8c bl 8005110 <__kernel_cos>
  9234. 80043f8: ec51 0b10 vmov r0, r1, d0
  9235. 80043fc: e007 b.n 800440e <cos+0x2e>
  9236. 80043fe: 4a19 ldr r2, [pc, #100] ; (8004464 <cos+0x84>)
  9237. 8004400: 4293 cmp r3, r2
  9238. 8004402: dd09 ble.n 8004418 <cos+0x38>
  9239. 8004404: ee10 2a10 vmov r2, s0
  9240. 8004408: 460b mov r3, r1
  9241. 800440a: f7fb fef1 bl 80001f0 <__aeabi_dsub>
  9242. 800440e: ec41 0b10 vmov d0, r0, r1
  9243. 8004412: b005 add sp, #20
  9244. 8004414: f85d fb04 ldr.w pc, [sp], #4
  9245. 8004418: 4668 mov r0, sp
  9246. 800441a: f000 fbd5 bl 8004bc8 <__ieee754_rem_pio2>
  9247. 800441e: f000 0003 and.w r0, r0, #3
  9248. 8004422: 2801 cmp r0, #1
  9249. 8004424: ed9d 1b02 vldr d1, [sp, #8]
  9250. 8004428: ed9d 0b00 vldr d0, [sp]
  9251. 800442c: d007 beq.n 800443e <cos+0x5e>
  9252. 800442e: 2802 cmp r0, #2
  9253. 8004430: d00e beq.n 8004450 <cos+0x70>
  9254. 8004432: 2800 cmp r0, #0
  9255. 8004434: d0de beq.n 80043f4 <cos+0x14>
  9256. 8004436: 2001 movs r0, #1
  9257. 8004438: f001 fa72 bl 8005920 <__kernel_sin>
  9258. 800443c: e7dc b.n 80043f8 <cos+0x18>
  9259. 800443e: f001 fa6f bl 8005920 <__kernel_sin>
  9260. 8004442: ec53 2b10 vmov r2, r3, d0
  9261. 8004446: ee10 0a10 vmov r0, s0
  9262. 800444a: f103 4100 add.w r1, r3, #2147483648 ; 0x80000000
  9263. 800444e: e7de b.n 800440e <cos+0x2e>
  9264. 8004450: f000 fe5e bl 8005110 <__kernel_cos>
  9265. 8004454: e7f5 b.n 8004442 <cos+0x62>
  9266. 8004456: bf00 nop
  9267. ...
  9268. 8004460: 3fe921fb .word 0x3fe921fb
  9269. 8004464: 7fefffff .word 0x7fefffff
  9270. 08004468 <floor>:
  9271. 8004468: ec51 0b10 vmov r0, r1, d0
  9272. 800446c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
  9273. 8004470: f3c1 570a ubfx r7, r1, #20, #11
  9274. 8004474: f2a7 36ff subw r6, r7, #1023 ; 0x3ff
  9275. 8004478: 2e13 cmp r6, #19
  9276. 800447a: 460c mov r4, r1
  9277. 800447c: ee10 5a10 vmov r5, s0
  9278. 8004480: 4680 mov r8, r0
  9279. 8004482: dc34 bgt.n 80044ee <floor+0x86>
  9280. 8004484: 2e00 cmp r6, #0
  9281. 8004486: da16 bge.n 80044b6 <floor+0x4e>
  9282. 8004488: a335 add r3, pc, #212 ; (adr r3, 8004560 <floor+0xf8>)
  9283. 800448a: e9d3 2300 ldrd r2, r3, [r3]
  9284. 800448e: f7fb feb1 bl 80001f4 <__adddf3>
  9285. 8004492: 2200 movs r2, #0
  9286. 8004494: 2300 movs r3, #0
  9287. 8004496: f7fc faf3 bl 8000a80 <__aeabi_dcmpgt>
  9288. 800449a: b148 cbz r0, 80044b0 <floor+0x48>
  9289. 800449c: 2c00 cmp r4, #0
  9290. 800449e: da59 bge.n 8004554 <floor+0xec>
  9291. 80044a0: f024 4300 bic.w r3, r4, #2147483648 ; 0x80000000
  9292. 80044a4: 4a30 ldr r2, [pc, #192] ; (8004568 <floor+0x100>)
  9293. 80044a6: 432b orrs r3, r5
  9294. 80044a8: 2500 movs r5, #0
  9295. 80044aa: 42ab cmp r3, r5
  9296. 80044ac: bf18 it ne
  9297. 80044ae: 4614 movne r4, r2
  9298. 80044b0: 4621 mov r1, r4
  9299. 80044b2: 4628 mov r0, r5
  9300. 80044b4: e025 b.n 8004502 <floor+0x9a>
  9301. 80044b6: 4f2d ldr r7, [pc, #180] ; (800456c <floor+0x104>)
  9302. 80044b8: 4137 asrs r7, r6
  9303. 80044ba: ea01 0307 and.w r3, r1, r7
  9304. 80044be: 4303 orrs r3, r0
  9305. 80044c0: d01f beq.n 8004502 <floor+0x9a>
  9306. 80044c2: a327 add r3, pc, #156 ; (adr r3, 8004560 <floor+0xf8>)
  9307. 80044c4: e9d3 2300 ldrd r2, r3, [r3]
  9308. 80044c8: f7fb fe94 bl 80001f4 <__adddf3>
  9309. 80044cc: 2200 movs r2, #0
  9310. 80044ce: 2300 movs r3, #0
  9311. 80044d0: f7fc fad6 bl 8000a80 <__aeabi_dcmpgt>
  9312. 80044d4: 2800 cmp r0, #0
  9313. 80044d6: d0eb beq.n 80044b0 <floor+0x48>
  9314. 80044d8: 2c00 cmp r4, #0
  9315. 80044da: bfbe ittt lt
  9316. 80044dc: f44f 1380 movlt.w r3, #1048576 ; 0x100000
  9317. 80044e0: fa43 f606 asrlt.w r6, r3, r6
  9318. 80044e4: 19a4 addlt r4, r4, r6
  9319. 80044e6: ea24 0407 bic.w r4, r4, r7
  9320. 80044ea: 2500 movs r5, #0
  9321. 80044ec: e7e0 b.n 80044b0 <floor+0x48>
  9322. 80044ee: 2e33 cmp r6, #51 ; 0x33
  9323. 80044f0: dd0b ble.n 800450a <floor+0xa2>
  9324. 80044f2: f5b6 6f80 cmp.w r6, #1024 ; 0x400
  9325. 80044f6: d104 bne.n 8004502 <floor+0x9a>
  9326. 80044f8: ee10 2a10 vmov r2, s0
  9327. 80044fc: 460b mov r3, r1
  9328. 80044fe: f7fb fe79 bl 80001f4 <__adddf3>
  9329. 8004502: ec41 0b10 vmov d0, r0, r1
  9330. 8004506: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
  9331. 800450a: f2a7 4713 subw r7, r7, #1043 ; 0x413
  9332. 800450e: f04f 33ff mov.w r3, #4294967295
  9333. 8004512: fa23 f707 lsr.w r7, r3, r7
  9334. 8004516: 4207 tst r7, r0
  9335. 8004518: d0f3 beq.n 8004502 <floor+0x9a>
  9336. 800451a: a311 add r3, pc, #68 ; (adr r3, 8004560 <floor+0xf8>)
  9337. 800451c: e9d3 2300 ldrd r2, r3, [r3]
  9338. 8004520: f7fb fe68 bl 80001f4 <__adddf3>
  9339. 8004524: 2200 movs r2, #0
  9340. 8004526: 2300 movs r3, #0
  9341. 8004528: f7fc faaa bl 8000a80 <__aeabi_dcmpgt>
  9342. 800452c: 2800 cmp r0, #0
  9343. 800452e: d0bf beq.n 80044b0 <floor+0x48>
  9344. 8004530: 2c00 cmp r4, #0
  9345. 8004532: da02 bge.n 800453a <floor+0xd2>
  9346. 8004534: 2e14 cmp r6, #20
  9347. 8004536: d103 bne.n 8004540 <floor+0xd8>
  9348. 8004538: 3401 adds r4, #1
  9349. 800453a: ea25 0507 bic.w r5, r5, r7
  9350. 800453e: e7b7 b.n 80044b0 <floor+0x48>
  9351. 8004540: 2301 movs r3, #1
  9352. 8004542: f1c6 0634 rsb r6, r6, #52 ; 0x34
  9353. 8004546: fa03 f606 lsl.w r6, r3, r6
  9354. 800454a: 4435 add r5, r6
  9355. 800454c: 4545 cmp r5, r8
  9356. 800454e: bf38 it cc
  9357. 8004550: 18e4 addcc r4, r4, r3
  9358. 8004552: e7f2 b.n 800453a <floor+0xd2>
  9359. 8004554: 2500 movs r5, #0
  9360. 8004556: 462c mov r4, r5
  9361. 8004558: e7aa b.n 80044b0 <floor+0x48>
  9362. 800455a: bf00 nop
  9363. 800455c: f3af 8000 nop.w
  9364. 8004560: 8800759c .word 0x8800759c
  9365. 8004564: 7e37e43c .word 0x7e37e43c
  9366. 8004568: bff00000 .word 0xbff00000
  9367. 800456c: 000fffff .word 0x000fffff
  9368. 08004570 <sin>:
  9369. 8004570: b51f push {r0, r1, r2, r3, r4, lr}
  9370. 8004572: ec51 0b10 vmov r0, r1, d0
  9371. 8004576: 4a20 ldr r2, [pc, #128] ; (80045f8 <sin+0x88>)
  9372. 8004578: f021 4300 bic.w r3, r1, #2147483648 ; 0x80000000
  9373. 800457c: 4293 cmp r3, r2
  9374. 800457e: dc07 bgt.n 8004590 <sin+0x20>
  9375. 8004580: ed9f 1b1b vldr d1, [pc, #108] ; 80045f0 <sin+0x80>
  9376. 8004584: 2000 movs r0, #0
  9377. 8004586: f001 f9cb bl 8005920 <__kernel_sin>
  9378. 800458a: ec51 0b10 vmov r0, r1, d0
  9379. 800458e: e007 b.n 80045a0 <sin+0x30>
  9380. 8004590: 4a1a ldr r2, [pc, #104] ; (80045fc <sin+0x8c>)
  9381. 8004592: 4293 cmp r3, r2
  9382. 8004594: dd09 ble.n 80045aa <sin+0x3a>
  9383. 8004596: ee10 2a10 vmov r2, s0
  9384. 800459a: 460b mov r3, r1
  9385. 800459c: f7fb fe28 bl 80001f0 <__aeabi_dsub>
  9386. 80045a0: ec41 0b10 vmov d0, r0, r1
  9387. 80045a4: b005 add sp, #20
  9388. 80045a6: f85d fb04 ldr.w pc, [sp], #4
  9389. 80045aa: 4668 mov r0, sp
  9390. 80045ac: f000 fb0c bl 8004bc8 <__ieee754_rem_pio2>
  9391. 80045b0: f000 0003 and.w r0, r0, #3
  9392. 80045b4: 2801 cmp r0, #1
  9393. 80045b6: ed9d 1b02 vldr d1, [sp, #8]
  9394. 80045ba: ed9d 0b00 vldr d0, [sp]
  9395. 80045be: d004 beq.n 80045ca <sin+0x5a>
  9396. 80045c0: 2802 cmp r0, #2
  9397. 80045c2: d005 beq.n 80045d0 <sin+0x60>
  9398. 80045c4: b970 cbnz r0, 80045e4 <sin+0x74>
  9399. 80045c6: 2001 movs r0, #1
  9400. 80045c8: e7dd b.n 8004586 <sin+0x16>
  9401. 80045ca: f000 fda1 bl 8005110 <__kernel_cos>
  9402. 80045ce: e7dc b.n 800458a <sin+0x1a>
  9403. 80045d0: 2001 movs r0, #1
  9404. 80045d2: f001 f9a5 bl 8005920 <__kernel_sin>
  9405. 80045d6: ec53 2b10 vmov r2, r3, d0
  9406. 80045da: ee10 0a10 vmov r0, s0
  9407. 80045de: f103 4100 add.w r1, r3, #2147483648 ; 0x80000000
  9408. 80045e2: e7dd b.n 80045a0 <sin+0x30>
  9409. 80045e4: f000 fd94 bl 8005110 <__kernel_cos>
  9410. 80045e8: e7f5 b.n 80045d6 <sin+0x66>
  9411. 80045ea: bf00 nop
  9412. 80045ec: f3af 8000 nop.w
  9413. ...
  9414. 80045f8: 3fe921fb .word 0x3fe921fb
  9415. 80045fc: 7fefffff .word 0x7fefffff
  9416. 08004600 <tan>:
  9417. 8004600: b51f push {r0, r1, r2, r3, r4, lr}
  9418. 8004602: ec51 0b10 vmov r0, r1, d0
  9419. 8004606: 4a14 ldr r2, [pc, #80] ; (8004658 <tan+0x58>)
  9420. 8004608: f021 4300 bic.w r3, r1, #2147483648 ; 0x80000000
  9421. 800460c: 4293 cmp r3, r2
  9422. 800460e: dc05 bgt.n 800461c <tan+0x1c>
  9423. 8004610: ed9f 1b0f vldr d1, [pc, #60] ; 8004650 <tan+0x50>
  9424. 8004614: 2001 movs r0, #1
  9425. 8004616: f001 fa3f bl 8005a98 <__kernel_tan>
  9426. 800461a: e009 b.n 8004630 <tan+0x30>
  9427. 800461c: 4a0f ldr r2, [pc, #60] ; (800465c <tan+0x5c>)
  9428. 800461e: 4293 cmp r3, r2
  9429. 8004620: dd09 ble.n 8004636 <tan+0x36>
  9430. 8004622: ee10 2a10 vmov r2, s0
  9431. 8004626: 460b mov r3, r1
  9432. 8004628: f7fb fde2 bl 80001f0 <__aeabi_dsub>
  9433. 800462c: ec41 0b10 vmov d0, r0, r1
  9434. 8004630: b005 add sp, #20
  9435. 8004632: f85d fb04 ldr.w pc, [sp], #4
  9436. 8004636: 4668 mov r0, sp
  9437. 8004638: f000 fac6 bl 8004bc8 <__ieee754_rem_pio2>
  9438. 800463c: 0040 lsls r0, r0, #1
  9439. 800463e: f000 0002 and.w r0, r0, #2
  9440. 8004642: f1c0 0001 rsb r0, r0, #1
  9441. 8004646: ed9d 1b02 vldr d1, [sp, #8]
  9442. 800464a: ed9d 0b00 vldr d0, [sp]
  9443. 800464e: e7e2 b.n 8004616 <tan+0x16>
  9444. ...
  9445. 8004658: 3fe921fb .word 0x3fe921fb
  9446. 800465c: 7fefffff .word 0x7fefffff
  9447. 08004660 <acos>:
  9448. 8004660: b5f0 push {r4, r5, r6, r7, lr}
  9449. 8004662: ed2d 8b02 vpush {d8}
  9450. 8004666: 4e26 ldr r6, [pc, #152] ; (8004700 <acos+0xa0>)
  9451. 8004668: b08b sub sp, #44 ; 0x2c
  9452. 800466a: ec55 4b10 vmov r4, r5, d0
  9453. 800466e: f000 f84f bl 8004710 <__ieee754_acos>
  9454. 8004672: f996 3000 ldrsb.w r3, [r6]
  9455. 8004676: eeb0 8a40 vmov.f32 s16, s0
  9456. 800467a: eef0 8a60 vmov.f32 s17, s1
  9457. 800467e: 3301 adds r3, #1
  9458. 8004680: d036 beq.n 80046f0 <acos+0x90>
  9459. 8004682: 4622 mov r2, r4
  9460. 8004684: 462b mov r3, r5
  9461. 8004686: 4620 mov r0, r4
  9462. 8004688: 4629 mov r1, r5
  9463. 800468a: f7fc fa03 bl 8000a94 <__aeabi_dcmpun>
  9464. 800468e: 4607 mov r7, r0
  9465. 8004690: bb70 cbnz r0, 80046f0 <acos+0x90>
  9466. 8004692: ec45 4b10 vmov d0, r4, r5
  9467. 8004696: f001 fbcb bl 8005e30 <fabs>
  9468. 800469a: 2200 movs r2, #0
  9469. 800469c: 4b19 ldr r3, [pc, #100] ; (8004704 <acos+0xa4>)
  9470. 800469e: ec51 0b10 vmov r0, r1, d0
  9471. 80046a2: f7fc f9ed bl 8000a80 <__aeabi_dcmpgt>
  9472. 80046a6: b318 cbz r0, 80046f0 <acos+0x90>
  9473. 80046a8: 2301 movs r3, #1
  9474. 80046aa: 9300 str r3, [sp, #0]
  9475. 80046ac: 4816 ldr r0, [pc, #88] ; (8004708 <acos+0xa8>)
  9476. 80046ae: 4b17 ldr r3, [pc, #92] ; (800470c <acos+0xac>)
  9477. 80046b0: 9301 str r3, [sp, #4]
  9478. 80046b2: 9708 str r7, [sp, #32]
  9479. 80046b4: e9cd 4504 strd r4, r5, [sp, #16]
  9480. 80046b8: e9cd 4502 strd r4, r5, [sp, #8]
  9481. 80046bc: f001 fbc4 bl 8005e48 <nan>
  9482. 80046c0: f996 3000 ldrsb.w r3, [r6]
  9483. 80046c4: 2b02 cmp r3, #2
  9484. 80046c6: ed8d 0b06 vstr d0, [sp, #24]
  9485. 80046ca: d104 bne.n 80046d6 <acos+0x76>
  9486. 80046cc: f7ff fe56 bl 800437c <__errno>
  9487. 80046d0: 2321 movs r3, #33 ; 0x21
  9488. 80046d2: 6003 str r3, [r0, #0]
  9489. 80046d4: e004 b.n 80046e0 <acos+0x80>
  9490. 80046d6: 4668 mov r0, sp
  9491. 80046d8: f001 fbb3 bl 8005e42 <matherr>
  9492. 80046dc: 2800 cmp r0, #0
  9493. 80046de: d0f5 beq.n 80046cc <acos+0x6c>
  9494. 80046e0: 9b08 ldr r3, [sp, #32]
  9495. 80046e2: b11b cbz r3, 80046ec <acos+0x8c>
  9496. 80046e4: f7ff fe4a bl 800437c <__errno>
  9497. 80046e8: 9b08 ldr r3, [sp, #32]
  9498. 80046ea: 6003 str r3, [r0, #0]
  9499. 80046ec: ed9d 8b06 vldr d8, [sp, #24]
  9500. 80046f0: eeb0 0a48 vmov.f32 s0, s16
  9501. 80046f4: eef0 0a68 vmov.f32 s1, s17
  9502. 80046f8: b00b add sp, #44 ; 0x2c
  9503. 80046fa: ecbd 8b02 vpop {d8}
  9504. 80046fe: bdf0 pop {r4, r5, r6, r7, pc}
  9505. 8004700: 20000084 .word 0x20000084
  9506. 8004704: 3ff00000 .word 0x3ff00000
  9507. 8004708: 08006034 .word 0x08006034
  9508. 800470c: 08006030 .word 0x08006030
  9509. 08004710 <__ieee754_acos>:
  9510. 8004710: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
  9511. 8004714: ec55 4b10 vmov r4, r5, d0
  9512. 8004718: 49b7 ldr r1, [pc, #732] ; (80049f8 <__ieee754_acos+0x2e8>)
  9513. 800471a: f025 4300 bic.w r3, r5, #2147483648 ; 0x80000000
  9514. 800471e: 428b cmp r3, r1
  9515. 8004720: dd1b ble.n 800475a <__ieee754_acos+0x4a>
  9516. 8004722: f103 4340 add.w r3, r3, #3221225472 ; 0xc0000000
  9517. 8004726: f503 1380 add.w r3, r3, #1048576 ; 0x100000
  9518. 800472a: 4323 orrs r3, r4
  9519. 800472c: d109 bne.n 8004742 <__ieee754_acos+0x32>
  9520. 800472e: 2d00 cmp r5, #0
  9521. 8004730: f300 8211 bgt.w 8004b56 <__ieee754_acos+0x446>
  9522. 8004734: a196 add r1, pc, #600 ; (adr r1, 8004990 <__ieee754_acos+0x280>)
  9523. 8004736: e9d1 0100 ldrd r0, r1, [r1]
  9524. 800473a: ec41 0b10 vmov d0, r0, r1
  9525. 800473e: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
  9526. 8004742: ee10 2a10 vmov r2, s0
  9527. 8004746: 462b mov r3, r5
  9528. 8004748: 4620 mov r0, r4
  9529. 800474a: 4629 mov r1, r5
  9530. 800474c: f7fb fd50 bl 80001f0 <__aeabi_dsub>
  9531. 8004750: 4602 mov r2, r0
  9532. 8004752: 460b mov r3, r1
  9533. 8004754: f7fc f82e bl 80007b4 <__aeabi_ddiv>
  9534. 8004758: e7ef b.n 800473a <__ieee754_acos+0x2a>
  9535. 800475a: 49a8 ldr r1, [pc, #672] ; (80049fc <__ieee754_acos+0x2ec>)
  9536. 800475c: 428b cmp r3, r1
  9537. 800475e: f300 8087 bgt.w 8004870 <__ieee754_acos+0x160>
  9538. 8004762: 4aa7 ldr r2, [pc, #668] ; (8004a00 <__ieee754_acos+0x2f0>)
  9539. 8004764: 4293 cmp r3, r2
  9540. 8004766: f340 81f9 ble.w 8004b5c <__ieee754_acos+0x44c>
  9541. 800476a: ee10 2a10 vmov r2, s0
  9542. 800476e: ee10 0a10 vmov r0, s0
  9543. 8004772: 462b mov r3, r5
  9544. 8004774: 4629 mov r1, r5
  9545. 8004776: f7fb fef3 bl 8000560 <__aeabi_dmul>
  9546. 800477a: a387 add r3, pc, #540 ; (adr r3, 8004998 <__ieee754_acos+0x288>)
  9547. 800477c: e9d3 2300 ldrd r2, r3, [r3]
  9548. 8004780: 4606 mov r6, r0
  9549. 8004782: 460f mov r7, r1
  9550. 8004784: f7fb feec bl 8000560 <__aeabi_dmul>
  9551. 8004788: a385 add r3, pc, #532 ; (adr r3, 80049a0 <__ieee754_acos+0x290>)
  9552. 800478a: e9d3 2300 ldrd r2, r3, [r3]
  9553. 800478e: f7fb fd31 bl 80001f4 <__adddf3>
  9554. 8004792: 4632 mov r2, r6
  9555. 8004794: 463b mov r3, r7
  9556. 8004796: f7fb fee3 bl 8000560 <__aeabi_dmul>
  9557. 800479a: a383 add r3, pc, #524 ; (adr r3, 80049a8 <__ieee754_acos+0x298>)
  9558. 800479c: e9d3 2300 ldrd r2, r3, [r3]
  9559. 80047a0: f7fb fd26 bl 80001f0 <__aeabi_dsub>
  9560. 80047a4: 4632 mov r2, r6
  9561. 80047a6: 463b mov r3, r7
  9562. 80047a8: f7fb feda bl 8000560 <__aeabi_dmul>
  9563. 80047ac: a380 add r3, pc, #512 ; (adr r3, 80049b0 <__ieee754_acos+0x2a0>)
  9564. 80047ae: e9d3 2300 ldrd r2, r3, [r3]
  9565. 80047b2: f7fb fd1f bl 80001f4 <__adddf3>
  9566. 80047b6: 4632 mov r2, r6
  9567. 80047b8: 463b mov r3, r7
  9568. 80047ba: f7fb fed1 bl 8000560 <__aeabi_dmul>
  9569. 80047be: a37e add r3, pc, #504 ; (adr r3, 80049b8 <__ieee754_acos+0x2a8>)
  9570. 80047c0: e9d3 2300 ldrd r2, r3, [r3]
  9571. 80047c4: f7fb fd14 bl 80001f0 <__aeabi_dsub>
  9572. 80047c8: 4632 mov r2, r6
  9573. 80047ca: 463b mov r3, r7
  9574. 80047cc: f7fb fec8 bl 8000560 <__aeabi_dmul>
  9575. 80047d0: a37b add r3, pc, #492 ; (adr r3, 80049c0 <__ieee754_acos+0x2b0>)
  9576. 80047d2: e9d3 2300 ldrd r2, r3, [r3]
  9577. 80047d6: f7fb fd0d bl 80001f4 <__adddf3>
  9578. 80047da: 4632 mov r2, r6
  9579. 80047dc: 463b mov r3, r7
  9580. 80047de: f7fb febf bl 8000560 <__aeabi_dmul>
  9581. 80047e2: a379 add r3, pc, #484 ; (adr r3, 80049c8 <__ieee754_acos+0x2b8>)
  9582. 80047e4: e9d3 2300 ldrd r2, r3, [r3]
  9583. 80047e8: 4680 mov r8, r0
  9584. 80047ea: 4689 mov r9, r1
  9585. 80047ec: 4630 mov r0, r6
  9586. 80047ee: 4639 mov r1, r7
  9587. 80047f0: f7fb feb6 bl 8000560 <__aeabi_dmul>
  9588. 80047f4: a376 add r3, pc, #472 ; (adr r3, 80049d0 <__ieee754_acos+0x2c0>)
  9589. 80047f6: e9d3 2300 ldrd r2, r3, [r3]
  9590. 80047fa: f7fb fcf9 bl 80001f0 <__aeabi_dsub>
  9591. 80047fe: 4632 mov r2, r6
  9592. 8004800: 463b mov r3, r7
  9593. 8004802: f7fb fead bl 8000560 <__aeabi_dmul>
  9594. 8004806: a374 add r3, pc, #464 ; (adr r3, 80049d8 <__ieee754_acos+0x2c8>)
  9595. 8004808: e9d3 2300 ldrd r2, r3, [r3]
  9596. 800480c: f7fb fcf2 bl 80001f4 <__adddf3>
  9597. 8004810: 4632 mov r2, r6
  9598. 8004812: 463b mov r3, r7
  9599. 8004814: f7fb fea4 bl 8000560 <__aeabi_dmul>
  9600. 8004818: a371 add r3, pc, #452 ; (adr r3, 80049e0 <__ieee754_acos+0x2d0>)
  9601. 800481a: e9d3 2300 ldrd r2, r3, [r3]
  9602. 800481e: f7fb fce7 bl 80001f0 <__aeabi_dsub>
  9603. 8004822: 4632 mov r2, r6
  9604. 8004824: 463b mov r3, r7
  9605. 8004826: f7fb fe9b bl 8000560 <__aeabi_dmul>
  9606. 800482a: 2200 movs r2, #0
  9607. 800482c: 4b75 ldr r3, [pc, #468] ; (8004a04 <__ieee754_acos+0x2f4>)
  9608. 800482e: f7fb fce1 bl 80001f4 <__adddf3>
  9609. 8004832: 4602 mov r2, r0
  9610. 8004834: 460b mov r3, r1
  9611. 8004836: 4640 mov r0, r8
  9612. 8004838: 4649 mov r1, r9
  9613. 800483a: f7fb ffbb bl 80007b4 <__aeabi_ddiv>
  9614. 800483e: 4622 mov r2, r4
  9615. 8004840: 462b mov r3, r5
  9616. 8004842: f7fb fe8d bl 8000560 <__aeabi_dmul>
  9617. 8004846: 4602 mov r2, r0
  9618. 8004848: 460b mov r3, r1
  9619. 800484a: a167 add r1, pc, #412 ; (adr r1, 80049e8 <__ieee754_acos+0x2d8>)
  9620. 800484c: e9d1 0100 ldrd r0, r1, [r1]
  9621. 8004850: f7fb fcce bl 80001f0 <__aeabi_dsub>
  9622. 8004854: 4602 mov r2, r0
  9623. 8004856: 460b mov r3, r1
  9624. 8004858: 4620 mov r0, r4
  9625. 800485a: 4629 mov r1, r5
  9626. 800485c: f7fb fcc8 bl 80001f0 <__aeabi_dsub>
  9627. 8004860: 4602 mov r2, r0
  9628. 8004862: 460b mov r3, r1
  9629. 8004864: a162 add r1, pc, #392 ; (adr r1, 80049f0 <__ieee754_acos+0x2e0>)
  9630. 8004866: e9d1 0100 ldrd r0, r1, [r1]
  9631. 800486a: f7fb fcc1 bl 80001f0 <__aeabi_dsub>
  9632. 800486e: e764 b.n 800473a <__ieee754_acos+0x2a>
  9633. 8004870: 2d00 cmp r5, #0
  9634. 8004872: f280 80cb bge.w 8004a0c <__ieee754_acos+0x2fc>
  9635. 8004876: ee10 0a10 vmov r0, s0
  9636. 800487a: 2200 movs r2, #0
  9637. 800487c: 4b61 ldr r3, [pc, #388] ; (8004a04 <__ieee754_acos+0x2f4>)
  9638. 800487e: 4629 mov r1, r5
  9639. 8004880: f7fb fcb8 bl 80001f4 <__adddf3>
  9640. 8004884: 2200 movs r2, #0
  9641. 8004886: 4b60 ldr r3, [pc, #384] ; (8004a08 <__ieee754_acos+0x2f8>)
  9642. 8004888: f7fb fe6a bl 8000560 <__aeabi_dmul>
  9643. 800488c: a342 add r3, pc, #264 ; (adr r3, 8004998 <__ieee754_acos+0x288>)
  9644. 800488e: e9d3 2300 ldrd r2, r3, [r3]
  9645. 8004892: 4604 mov r4, r0
  9646. 8004894: 460d mov r5, r1
  9647. 8004896: f7fb fe63 bl 8000560 <__aeabi_dmul>
  9648. 800489a: a341 add r3, pc, #260 ; (adr r3, 80049a0 <__ieee754_acos+0x290>)
  9649. 800489c: e9d3 2300 ldrd r2, r3, [r3]
  9650. 80048a0: f7fb fca8 bl 80001f4 <__adddf3>
  9651. 80048a4: 4622 mov r2, r4
  9652. 80048a6: 462b mov r3, r5
  9653. 80048a8: f7fb fe5a bl 8000560 <__aeabi_dmul>
  9654. 80048ac: a33e add r3, pc, #248 ; (adr r3, 80049a8 <__ieee754_acos+0x298>)
  9655. 80048ae: e9d3 2300 ldrd r2, r3, [r3]
  9656. 80048b2: f7fb fc9d bl 80001f0 <__aeabi_dsub>
  9657. 80048b6: 4622 mov r2, r4
  9658. 80048b8: 462b mov r3, r5
  9659. 80048ba: f7fb fe51 bl 8000560 <__aeabi_dmul>
  9660. 80048be: a33c add r3, pc, #240 ; (adr r3, 80049b0 <__ieee754_acos+0x2a0>)
  9661. 80048c0: e9d3 2300 ldrd r2, r3, [r3]
  9662. 80048c4: f7fb fc96 bl 80001f4 <__adddf3>
  9663. 80048c8: 4622 mov r2, r4
  9664. 80048ca: 462b mov r3, r5
  9665. 80048cc: f7fb fe48 bl 8000560 <__aeabi_dmul>
  9666. 80048d0: a339 add r3, pc, #228 ; (adr r3, 80049b8 <__ieee754_acos+0x2a8>)
  9667. 80048d2: e9d3 2300 ldrd r2, r3, [r3]
  9668. 80048d6: f7fb fc8b bl 80001f0 <__aeabi_dsub>
  9669. 80048da: 4622 mov r2, r4
  9670. 80048dc: 462b mov r3, r5
  9671. 80048de: f7fb fe3f bl 8000560 <__aeabi_dmul>
  9672. 80048e2: a337 add r3, pc, #220 ; (adr r3, 80049c0 <__ieee754_acos+0x2b0>)
  9673. 80048e4: e9d3 2300 ldrd r2, r3, [r3]
  9674. 80048e8: f7fb fc84 bl 80001f4 <__adddf3>
  9675. 80048ec: 4622 mov r2, r4
  9676. 80048ee: 462b mov r3, r5
  9677. 80048f0: f7fb fe36 bl 8000560 <__aeabi_dmul>
  9678. 80048f4: ec45 4b10 vmov d0, r4, r5
  9679. 80048f8: 4680 mov r8, r0
  9680. 80048fa: 4689 mov r9, r1
  9681. 80048fc: f000 fb56 bl 8004fac <__ieee754_sqrt>
  9682. 8004900: a331 add r3, pc, #196 ; (adr r3, 80049c8 <__ieee754_acos+0x2b8>)
  9683. 8004902: e9d3 2300 ldrd r2, r3, [r3]
  9684. 8004906: 4620 mov r0, r4
  9685. 8004908: 4629 mov r1, r5
  9686. 800490a: ec57 6b10 vmov r6, r7, d0
  9687. 800490e: f7fb fe27 bl 8000560 <__aeabi_dmul>
  9688. 8004912: a32f add r3, pc, #188 ; (adr r3, 80049d0 <__ieee754_acos+0x2c0>)
  9689. 8004914: e9d3 2300 ldrd r2, r3, [r3]
  9690. 8004918: f7fb fc6a bl 80001f0 <__aeabi_dsub>
  9691. 800491c: 4622 mov r2, r4
  9692. 800491e: 462b mov r3, r5
  9693. 8004920: f7fb fe1e bl 8000560 <__aeabi_dmul>
  9694. 8004924: a32c add r3, pc, #176 ; (adr r3, 80049d8 <__ieee754_acos+0x2c8>)
  9695. 8004926: e9d3 2300 ldrd r2, r3, [r3]
  9696. 800492a: f7fb fc63 bl 80001f4 <__adddf3>
  9697. 800492e: 4622 mov r2, r4
  9698. 8004930: 462b mov r3, r5
  9699. 8004932: f7fb fe15 bl 8000560 <__aeabi_dmul>
  9700. 8004936: a32a add r3, pc, #168 ; (adr r3, 80049e0 <__ieee754_acos+0x2d0>)
  9701. 8004938: e9d3 2300 ldrd r2, r3, [r3]
  9702. 800493c: f7fb fc58 bl 80001f0 <__aeabi_dsub>
  9703. 8004940: 4622 mov r2, r4
  9704. 8004942: 462b mov r3, r5
  9705. 8004944: f7fb fe0c bl 8000560 <__aeabi_dmul>
  9706. 8004948: 2200 movs r2, #0
  9707. 800494a: 4b2e ldr r3, [pc, #184] ; (8004a04 <__ieee754_acos+0x2f4>)
  9708. 800494c: f7fb fc52 bl 80001f4 <__adddf3>
  9709. 8004950: 4602 mov r2, r0
  9710. 8004952: 460b mov r3, r1
  9711. 8004954: 4640 mov r0, r8
  9712. 8004956: 4649 mov r1, r9
  9713. 8004958: f7fb ff2c bl 80007b4 <__aeabi_ddiv>
  9714. 800495c: 4632 mov r2, r6
  9715. 800495e: 463b mov r3, r7
  9716. 8004960: f7fb fdfe bl 8000560 <__aeabi_dmul>
  9717. 8004964: a320 add r3, pc, #128 ; (adr r3, 80049e8 <__ieee754_acos+0x2d8>)
  9718. 8004966: e9d3 2300 ldrd r2, r3, [r3]
  9719. 800496a: f7fb fc41 bl 80001f0 <__aeabi_dsub>
  9720. 800496e: 4632 mov r2, r6
  9721. 8004970: 463b mov r3, r7
  9722. 8004972: f7fb fc3f bl 80001f4 <__adddf3>
  9723. 8004976: 4602 mov r2, r0
  9724. 8004978: 460b mov r3, r1
  9725. 800497a: f7fb fc3b bl 80001f4 <__adddf3>
  9726. 800497e: 4602 mov r2, r0
  9727. 8004980: 460b mov r3, r1
  9728. 8004982: a103 add r1, pc, #12 ; (adr r1, 8004990 <__ieee754_acos+0x280>)
  9729. 8004984: e9d1 0100 ldrd r0, r1, [r1]
  9730. 8004988: e76f b.n 800486a <__ieee754_acos+0x15a>
  9731. 800498a: bf00 nop
  9732. 800498c: f3af 8000 nop.w
  9733. 8004990: 54442d18 .word 0x54442d18
  9734. 8004994: 400921fb .word 0x400921fb
  9735. 8004998: 0dfdf709 .word 0x0dfdf709
  9736. 800499c: 3f023de1 .word 0x3f023de1
  9737. 80049a0: 7501b288 .word 0x7501b288
  9738. 80049a4: 3f49efe0 .word 0x3f49efe0
  9739. 80049a8: b5688f3b .word 0xb5688f3b
  9740. 80049ac: 3fa48228 .word 0x3fa48228
  9741. 80049b0: 0e884455 .word 0x0e884455
  9742. 80049b4: 3fc9c155 .word 0x3fc9c155
  9743. 80049b8: 03eb6f7d .word 0x03eb6f7d
  9744. 80049bc: 3fd4d612 .word 0x3fd4d612
  9745. 80049c0: 55555555 .word 0x55555555
  9746. 80049c4: 3fc55555 .word 0x3fc55555
  9747. 80049c8: b12e9282 .word 0xb12e9282
  9748. 80049cc: 3fb3b8c5 .word 0x3fb3b8c5
  9749. 80049d0: 1b8d0159 .word 0x1b8d0159
  9750. 80049d4: 3fe6066c .word 0x3fe6066c
  9751. 80049d8: 9c598ac8 .word 0x9c598ac8
  9752. 80049dc: 40002ae5 .word 0x40002ae5
  9753. 80049e0: 1c8a2d4b .word 0x1c8a2d4b
  9754. 80049e4: 40033a27 .word 0x40033a27
  9755. 80049e8: 33145c07 .word 0x33145c07
  9756. 80049ec: 3c91a626 .word 0x3c91a626
  9757. 80049f0: 54442d18 .word 0x54442d18
  9758. 80049f4: 3ff921fb .word 0x3ff921fb
  9759. 80049f8: 3fefffff .word 0x3fefffff
  9760. 80049fc: 3fdfffff .word 0x3fdfffff
  9761. 8004a00: 3c600000 .word 0x3c600000
  9762. 8004a04: 3ff00000 .word 0x3ff00000
  9763. 8004a08: 3fe00000 .word 0x3fe00000
  9764. 8004a0c: ee10 2a10 vmov r2, s0
  9765. 8004a10: 462b mov r3, r5
  9766. 8004a12: 2000 movs r0, #0
  9767. 8004a14: 496a ldr r1, [pc, #424] ; (8004bc0 <__ieee754_acos+0x4b0>)
  9768. 8004a16: f7fb fbeb bl 80001f0 <__aeabi_dsub>
  9769. 8004a1a: 2200 movs r2, #0
  9770. 8004a1c: 4b69 ldr r3, [pc, #420] ; (8004bc4 <__ieee754_acos+0x4b4>)
  9771. 8004a1e: f7fb fd9f bl 8000560 <__aeabi_dmul>
  9772. 8004a22: 4604 mov r4, r0
  9773. 8004a24: 460d mov r5, r1
  9774. 8004a26: ec45 4b10 vmov d0, r4, r5
  9775. 8004a2a: f000 fabf bl 8004fac <__ieee754_sqrt>
  9776. 8004a2e: a34e add r3, pc, #312 ; (adr r3, 8004b68 <__ieee754_acos+0x458>)
  9777. 8004a30: e9d3 2300 ldrd r2, r3, [r3]
  9778. 8004a34: 4620 mov r0, r4
  9779. 8004a36: 4629 mov r1, r5
  9780. 8004a38: ec59 8b10 vmov r8, r9, d0
  9781. 8004a3c: f7fb fd90 bl 8000560 <__aeabi_dmul>
  9782. 8004a40: a34b add r3, pc, #300 ; (adr r3, 8004b70 <__ieee754_acos+0x460>)
  9783. 8004a42: e9d3 2300 ldrd r2, r3, [r3]
  9784. 8004a46: f7fb fbd5 bl 80001f4 <__adddf3>
  9785. 8004a4a: 4622 mov r2, r4
  9786. 8004a4c: 462b mov r3, r5
  9787. 8004a4e: f7fb fd87 bl 8000560 <__aeabi_dmul>
  9788. 8004a52: a349 add r3, pc, #292 ; (adr r3, 8004b78 <__ieee754_acos+0x468>)
  9789. 8004a54: e9d3 2300 ldrd r2, r3, [r3]
  9790. 8004a58: f7fb fbca bl 80001f0 <__aeabi_dsub>
  9791. 8004a5c: 4622 mov r2, r4
  9792. 8004a5e: 462b mov r3, r5
  9793. 8004a60: f7fb fd7e bl 8000560 <__aeabi_dmul>
  9794. 8004a64: a346 add r3, pc, #280 ; (adr r3, 8004b80 <__ieee754_acos+0x470>)
  9795. 8004a66: e9d3 2300 ldrd r2, r3, [r3]
  9796. 8004a6a: f7fb fbc3 bl 80001f4 <__adddf3>
  9797. 8004a6e: 4622 mov r2, r4
  9798. 8004a70: 462b mov r3, r5
  9799. 8004a72: f7fb fd75 bl 8000560 <__aeabi_dmul>
  9800. 8004a76: a344 add r3, pc, #272 ; (adr r3, 8004b88 <__ieee754_acos+0x478>)
  9801. 8004a78: e9d3 2300 ldrd r2, r3, [r3]
  9802. 8004a7c: f7fb fbb8 bl 80001f0 <__aeabi_dsub>
  9803. 8004a80: 4622 mov r2, r4
  9804. 8004a82: 462b mov r3, r5
  9805. 8004a84: f7fb fd6c bl 8000560 <__aeabi_dmul>
  9806. 8004a88: a341 add r3, pc, #260 ; (adr r3, 8004b90 <__ieee754_acos+0x480>)
  9807. 8004a8a: e9d3 2300 ldrd r2, r3, [r3]
  9808. 8004a8e: f7fb fbb1 bl 80001f4 <__adddf3>
  9809. 8004a92: 4622 mov r2, r4
  9810. 8004a94: 462b mov r3, r5
  9811. 8004a96: f7fb fd63 bl 8000560 <__aeabi_dmul>
  9812. 8004a9a: a33f add r3, pc, #252 ; (adr r3, 8004b98 <__ieee754_acos+0x488>)
  9813. 8004a9c: e9d3 2300 ldrd r2, r3, [r3]
  9814. 8004aa0: 4682 mov sl, r0
  9815. 8004aa2: 468b mov fp, r1
  9816. 8004aa4: 4620 mov r0, r4
  9817. 8004aa6: 4629 mov r1, r5
  9818. 8004aa8: f7fb fd5a bl 8000560 <__aeabi_dmul>
  9819. 8004aac: a33c add r3, pc, #240 ; (adr r3, 8004ba0 <__ieee754_acos+0x490>)
  9820. 8004aae: e9d3 2300 ldrd r2, r3, [r3]
  9821. 8004ab2: f7fb fb9d bl 80001f0 <__aeabi_dsub>
  9822. 8004ab6: 4622 mov r2, r4
  9823. 8004ab8: 462b mov r3, r5
  9824. 8004aba: f7fb fd51 bl 8000560 <__aeabi_dmul>
  9825. 8004abe: a33a add r3, pc, #232 ; (adr r3, 8004ba8 <__ieee754_acos+0x498>)
  9826. 8004ac0: e9d3 2300 ldrd r2, r3, [r3]
  9827. 8004ac4: f7fb fb96 bl 80001f4 <__adddf3>
  9828. 8004ac8: 4622 mov r2, r4
  9829. 8004aca: 462b mov r3, r5
  9830. 8004acc: f7fb fd48 bl 8000560 <__aeabi_dmul>
  9831. 8004ad0: a337 add r3, pc, #220 ; (adr r3, 8004bb0 <__ieee754_acos+0x4a0>)
  9832. 8004ad2: e9d3 2300 ldrd r2, r3, [r3]
  9833. 8004ad6: f7fb fb8b bl 80001f0 <__aeabi_dsub>
  9834. 8004ada: 4622 mov r2, r4
  9835. 8004adc: 462b mov r3, r5
  9836. 8004ade: f7fb fd3f bl 8000560 <__aeabi_dmul>
  9837. 8004ae2: 2200 movs r2, #0
  9838. 8004ae4: 4b36 ldr r3, [pc, #216] ; (8004bc0 <__ieee754_acos+0x4b0>)
  9839. 8004ae6: f7fb fb85 bl 80001f4 <__adddf3>
  9840. 8004aea: 4602 mov r2, r0
  9841. 8004aec: 460b mov r3, r1
  9842. 8004aee: 4650 mov r0, sl
  9843. 8004af0: 4659 mov r1, fp
  9844. 8004af2: f7fb fe5f bl 80007b4 <__aeabi_ddiv>
  9845. 8004af6: 4642 mov r2, r8
  9846. 8004af8: 464b mov r3, r9
  9847. 8004afa: f7fb fd31 bl 8000560 <__aeabi_dmul>
  9848. 8004afe: 2600 movs r6, #0
  9849. 8004b00: 4682 mov sl, r0
  9850. 8004b02: 468b mov fp, r1
  9851. 8004b04: 4632 mov r2, r6
  9852. 8004b06: 464b mov r3, r9
  9853. 8004b08: 4630 mov r0, r6
  9854. 8004b0a: 4649 mov r1, r9
  9855. 8004b0c: f7fb fd28 bl 8000560 <__aeabi_dmul>
  9856. 8004b10: 4602 mov r2, r0
  9857. 8004b12: 460b mov r3, r1
  9858. 8004b14: 4620 mov r0, r4
  9859. 8004b16: 4629 mov r1, r5
  9860. 8004b18: f7fb fb6a bl 80001f0 <__aeabi_dsub>
  9861. 8004b1c: 4632 mov r2, r6
  9862. 8004b1e: 4604 mov r4, r0
  9863. 8004b20: 460d mov r5, r1
  9864. 8004b22: 464b mov r3, r9
  9865. 8004b24: 4640 mov r0, r8
  9866. 8004b26: 4649 mov r1, r9
  9867. 8004b28: f7fb fb64 bl 80001f4 <__adddf3>
  9868. 8004b2c: 4602 mov r2, r0
  9869. 8004b2e: 460b mov r3, r1
  9870. 8004b30: 4620 mov r0, r4
  9871. 8004b32: 4629 mov r1, r5
  9872. 8004b34: f7fb fe3e bl 80007b4 <__aeabi_ddiv>
  9873. 8004b38: 4602 mov r2, r0
  9874. 8004b3a: 460b mov r3, r1
  9875. 8004b3c: 4650 mov r0, sl
  9876. 8004b3e: 4659 mov r1, fp
  9877. 8004b40: f7fb fb58 bl 80001f4 <__adddf3>
  9878. 8004b44: 4632 mov r2, r6
  9879. 8004b46: 464b mov r3, r9
  9880. 8004b48: f7fb fb54 bl 80001f4 <__adddf3>
  9881. 8004b4c: 4602 mov r2, r0
  9882. 8004b4e: 460b mov r3, r1
  9883. 8004b50: f7fb fb50 bl 80001f4 <__adddf3>
  9884. 8004b54: e5f1 b.n 800473a <__ieee754_acos+0x2a>
  9885. 8004b56: 2000 movs r0, #0
  9886. 8004b58: 2100 movs r1, #0
  9887. 8004b5a: e5ee b.n 800473a <__ieee754_acos+0x2a>
  9888. 8004b5c: a116 add r1, pc, #88 ; (adr r1, 8004bb8 <__ieee754_acos+0x4a8>)
  9889. 8004b5e: e9d1 0100 ldrd r0, r1, [r1]
  9890. 8004b62: e5ea b.n 800473a <__ieee754_acos+0x2a>
  9891. 8004b64: f3af 8000 nop.w
  9892. 8004b68: 0dfdf709 .word 0x0dfdf709
  9893. 8004b6c: 3f023de1 .word 0x3f023de1
  9894. 8004b70: 7501b288 .word 0x7501b288
  9895. 8004b74: 3f49efe0 .word 0x3f49efe0
  9896. 8004b78: b5688f3b .word 0xb5688f3b
  9897. 8004b7c: 3fa48228 .word 0x3fa48228
  9898. 8004b80: 0e884455 .word 0x0e884455
  9899. 8004b84: 3fc9c155 .word 0x3fc9c155
  9900. 8004b88: 03eb6f7d .word 0x03eb6f7d
  9901. 8004b8c: 3fd4d612 .word 0x3fd4d612
  9902. 8004b90: 55555555 .word 0x55555555
  9903. 8004b94: 3fc55555 .word 0x3fc55555
  9904. 8004b98: b12e9282 .word 0xb12e9282
  9905. 8004b9c: 3fb3b8c5 .word 0x3fb3b8c5
  9906. 8004ba0: 1b8d0159 .word 0x1b8d0159
  9907. 8004ba4: 3fe6066c .word 0x3fe6066c
  9908. 8004ba8: 9c598ac8 .word 0x9c598ac8
  9909. 8004bac: 40002ae5 .word 0x40002ae5
  9910. 8004bb0: 1c8a2d4b .word 0x1c8a2d4b
  9911. 8004bb4: 40033a27 .word 0x40033a27
  9912. 8004bb8: 54442d18 .word 0x54442d18
  9913. 8004bbc: 3ff921fb .word 0x3ff921fb
  9914. 8004bc0: 3ff00000 .word 0x3ff00000
  9915. 8004bc4: 3fe00000 .word 0x3fe00000
  9916. 08004bc8 <__ieee754_rem_pio2>:
  9917. 8004bc8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
  9918. 8004bcc: ec57 6b10 vmov r6, r7, d0
  9919. 8004bd0: 4bc3 ldr r3, [pc, #780] ; (8004ee0 <__ieee754_rem_pio2+0x318>)
  9920. 8004bd2: b08d sub sp, #52 ; 0x34
  9921. 8004bd4: f027 4800 bic.w r8, r7, #2147483648 ; 0x80000000
  9922. 8004bd8: 4598 cmp r8, r3
  9923. 8004bda: 4604 mov r4, r0
  9924. 8004bdc: 9704 str r7, [sp, #16]
  9925. 8004bde: dc07 bgt.n 8004bf0 <__ieee754_rem_pio2+0x28>
  9926. 8004be0: 2200 movs r2, #0
  9927. 8004be2: 2300 movs r3, #0
  9928. 8004be4: ed84 0b00 vstr d0, [r4]
  9929. 8004be8: e9c0 2302 strd r2, r3, [r0, #8]
  9930. 8004bec: 2500 movs r5, #0
  9931. 8004bee: e027 b.n 8004c40 <__ieee754_rem_pio2+0x78>
  9932. 8004bf0: 4bbc ldr r3, [pc, #752] ; (8004ee4 <__ieee754_rem_pio2+0x31c>)
  9933. 8004bf2: 4598 cmp r8, r3
  9934. 8004bf4: dc75 bgt.n 8004ce2 <__ieee754_rem_pio2+0x11a>
  9935. 8004bf6: 9b04 ldr r3, [sp, #16]
  9936. 8004bf8: 4dbb ldr r5, [pc, #748] ; (8004ee8 <__ieee754_rem_pio2+0x320>)
  9937. 8004bfa: 2b00 cmp r3, #0
  9938. 8004bfc: ee10 0a10 vmov r0, s0
  9939. 8004c00: a3a9 add r3, pc, #676 ; (adr r3, 8004ea8 <__ieee754_rem_pio2+0x2e0>)
  9940. 8004c02: e9d3 2300 ldrd r2, r3, [r3]
  9941. 8004c06: 4639 mov r1, r7
  9942. 8004c08: dd36 ble.n 8004c78 <__ieee754_rem_pio2+0xb0>
  9943. 8004c0a: f7fb faf1 bl 80001f0 <__aeabi_dsub>
  9944. 8004c0e: 45a8 cmp r8, r5
  9945. 8004c10: 4606 mov r6, r0
  9946. 8004c12: 460f mov r7, r1
  9947. 8004c14: d018 beq.n 8004c48 <__ieee754_rem_pio2+0x80>
  9948. 8004c16: a3a6 add r3, pc, #664 ; (adr r3, 8004eb0 <__ieee754_rem_pio2+0x2e8>)
  9949. 8004c18: e9d3 2300 ldrd r2, r3, [r3]
  9950. 8004c1c: f7fb fae8 bl 80001f0 <__aeabi_dsub>
  9951. 8004c20: 4602 mov r2, r0
  9952. 8004c22: 460b mov r3, r1
  9953. 8004c24: e9c4 2300 strd r2, r3, [r4]
  9954. 8004c28: 4630 mov r0, r6
  9955. 8004c2a: 4639 mov r1, r7
  9956. 8004c2c: f7fb fae0 bl 80001f0 <__aeabi_dsub>
  9957. 8004c30: a39f add r3, pc, #636 ; (adr r3, 8004eb0 <__ieee754_rem_pio2+0x2e8>)
  9958. 8004c32: e9d3 2300 ldrd r2, r3, [r3]
  9959. 8004c36: f7fb fadb bl 80001f0 <__aeabi_dsub>
  9960. 8004c3a: e9c4 0102 strd r0, r1, [r4, #8]
  9961. 8004c3e: 2501 movs r5, #1
  9962. 8004c40: 4628 mov r0, r5
  9963. 8004c42: b00d add sp, #52 ; 0x34
  9964. 8004c44: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
  9965. 8004c48: a39b add r3, pc, #620 ; (adr r3, 8004eb8 <__ieee754_rem_pio2+0x2f0>)
  9966. 8004c4a: e9d3 2300 ldrd r2, r3, [r3]
  9967. 8004c4e: f7fb facf bl 80001f0 <__aeabi_dsub>
  9968. 8004c52: a39b add r3, pc, #620 ; (adr r3, 8004ec0 <__ieee754_rem_pio2+0x2f8>)
  9969. 8004c54: e9d3 2300 ldrd r2, r3, [r3]
  9970. 8004c58: 4606 mov r6, r0
  9971. 8004c5a: 460f mov r7, r1
  9972. 8004c5c: f7fb fac8 bl 80001f0 <__aeabi_dsub>
  9973. 8004c60: 4602 mov r2, r0
  9974. 8004c62: 460b mov r3, r1
  9975. 8004c64: e9c4 2300 strd r2, r3, [r4]
  9976. 8004c68: 4630 mov r0, r6
  9977. 8004c6a: 4639 mov r1, r7
  9978. 8004c6c: f7fb fac0 bl 80001f0 <__aeabi_dsub>
  9979. 8004c70: a393 add r3, pc, #588 ; (adr r3, 8004ec0 <__ieee754_rem_pio2+0x2f8>)
  9980. 8004c72: e9d3 2300 ldrd r2, r3, [r3]
  9981. 8004c76: e7de b.n 8004c36 <__ieee754_rem_pio2+0x6e>
  9982. 8004c78: f7fb fabc bl 80001f4 <__adddf3>
  9983. 8004c7c: 45a8 cmp r8, r5
  9984. 8004c7e: 4606 mov r6, r0
  9985. 8004c80: 460f mov r7, r1
  9986. 8004c82: d016 beq.n 8004cb2 <__ieee754_rem_pio2+0xea>
  9987. 8004c84: a38a add r3, pc, #552 ; (adr r3, 8004eb0 <__ieee754_rem_pio2+0x2e8>)
  9988. 8004c86: e9d3 2300 ldrd r2, r3, [r3]
  9989. 8004c8a: f7fb fab3 bl 80001f4 <__adddf3>
  9990. 8004c8e: 4602 mov r2, r0
  9991. 8004c90: 460b mov r3, r1
  9992. 8004c92: e9c4 2300 strd r2, r3, [r4]
  9993. 8004c96: 4630 mov r0, r6
  9994. 8004c98: 4639 mov r1, r7
  9995. 8004c9a: f7fb faa9 bl 80001f0 <__aeabi_dsub>
  9996. 8004c9e: a384 add r3, pc, #528 ; (adr r3, 8004eb0 <__ieee754_rem_pio2+0x2e8>)
  9997. 8004ca0: e9d3 2300 ldrd r2, r3, [r3]
  9998. 8004ca4: f7fb faa6 bl 80001f4 <__adddf3>
  9999. 8004ca8: f04f 35ff mov.w r5, #4294967295
  10000. 8004cac: e9c4 0102 strd r0, r1, [r4, #8]
  10001. 8004cb0: e7c6 b.n 8004c40 <__ieee754_rem_pio2+0x78>
  10002. 8004cb2: a381 add r3, pc, #516 ; (adr r3, 8004eb8 <__ieee754_rem_pio2+0x2f0>)
  10003. 8004cb4: e9d3 2300 ldrd r2, r3, [r3]
  10004. 8004cb8: f7fb fa9c bl 80001f4 <__adddf3>
  10005. 8004cbc: a380 add r3, pc, #512 ; (adr r3, 8004ec0 <__ieee754_rem_pio2+0x2f8>)
  10006. 8004cbe: e9d3 2300 ldrd r2, r3, [r3]
  10007. 8004cc2: 4606 mov r6, r0
  10008. 8004cc4: 460f mov r7, r1
  10009. 8004cc6: f7fb fa95 bl 80001f4 <__adddf3>
  10010. 8004cca: 4602 mov r2, r0
  10011. 8004ccc: 460b mov r3, r1
  10012. 8004cce: e9c4 2300 strd r2, r3, [r4]
  10013. 8004cd2: 4630 mov r0, r6
  10014. 8004cd4: 4639 mov r1, r7
  10015. 8004cd6: f7fb fa8b bl 80001f0 <__aeabi_dsub>
  10016. 8004cda: a379 add r3, pc, #484 ; (adr r3, 8004ec0 <__ieee754_rem_pio2+0x2f8>)
  10017. 8004cdc: e9d3 2300 ldrd r2, r3, [r3]
  10018. 8004ce0: e7e0 b.n 8004ca4 <__ieee754_rem_pio2+0xdc>
  10019. 8004ce2: 4b82 ldr r3, [pc, #520] ; (8004eec <__ieee754_rem_pio2+0x324>)
  10020. 8004ce4: 4598 cmp r8, r3
  10021. 8004ce6: f300 80d0 bgt.w 8004e8a <__ieee754_rem_pio2+0x2c2>
  10022. 8004cea: f001 f8a1 bl 8005e30 <fabs>
  10023. 8004cee: ec57 6b10 vmov r6, r7, d0
  10024. 8004cf2: ee10 0a10 vmov r0, s0
  10025. 8004cf6: a374 add r3, pc, #464 ; (adr r3, 8004ec8 <__ieee754_rem_pio2+0x300>)
  10026. 8004cf8: e9d3 2300 ldrd r2, r3, [r3]
  10027. 8004cfc: 4639 mov r1, r7
  10028. 8004cfe: f7fb fc2f bl 8000560 <__aeabi_dmul>
  10029. 8004d02: 2200 movs r2, #0
  10030. 8004d04: 4b7a ldr r3, [pc, #488] ; (8004ef0 <__ieee754_rem_pio2+0x328>)
  10031. 8004d06: f7fb fa75 bl 80001f4 <__adddf3>
  10032. 8004d0a: f7fb fed9 bl 8000ac0 <__aeabi_d2iz>
  10033. 8004d0e: 4605 mov r5, r0
  10034. 8004d10: f7fb fbbc bl 800048c <__aeabi_i2d>
  10035. 8004d14: a364 add r3, pc, #400 ; (adr r3, 8004ea8 <__ieee754_rem_pio2+0x2e0>)
  10036. 8004d16: e9d3 2300 ldrd r2, r3, [r3]
  10037. 8004d1a: e9cd 0102 strd r0, r1, [sp, #8]
  10038. 8004d1e: f7fb fc1f bl 8000560 <__aeabi_dmul>
  10039. 8004d22: 4602 mov r2, r0
  10040. 8004d24: 460b mov r3, r1
  10041. 8004d26: 4630 mov r0, r6
  10042. 8004d28: 4639 mov r1, r7
  10043. 8004d2a: f7fb fa61 bl 80001f0 <__aeabi_dsub>
  10044. 8004d2e: a360 add r3, pc, #384 ; (adr r3, 8004eb0 <__ieee754_rem_pio2+0x2e8>)
  10045. 8004d30: e9d3 2300 ldrd r2, r3, [r3]
  10046. 8004d34: 4682 mov sl, r0
  10047. 8004d36: 468b mov fp, r1
  10048. 8004d38: e9dd 0102 ldrd r0, r1, [sp, #8]
  10049. 8004d3c: f7fb fc10 bl 8000560 <__aeabi_dmul>
  10050. 8004d40: 2d1f cmp r5, #31
  10051. 8004d42: 4606 mov r6, r0
  10052. 8004d44: 460f mov r7, r1
  10053. 8004d46: dc0c bgt.n 8004d62 <__ieee754_rem_pio2+0x19a>
  10054. 8004d48: 1e6a subs r2, r5, #1
  10055. 8004d4a: 4b6a ldr r3, [pc, #424] ; (8004ef4 <__ieee754_rem_pio2+0x32c>)
  10056. 8004d4c: f853 3022 ldr.w r3, [r3, r2, lsl #2]
  10057. 8004d50: 4543 cmp r3, r8
  10058. 8004d52: d006 beq.n 8004d62 <__ieee754_rem_pio2+0x19a>
  10059. 8004d54: 4632 mov r2, r6
  10060. 8004d56: 463b mov r3, r7
  10061. 8004d58: 4650 mov r0, sl
  10062. 8004d5a: 4659 mov r1, fp
  10063. 8004d5c: f7fb fa48 bl 80001f0 <__aeabi_dsub>
  10064. 8004d60: e00e b.n 8004d80 <__ieee754_rem_pio2+0x1b8>
  10065. 8004d62: 4632 mov r2, r6
  10066. 8004d64: 463b mov r3, r7
  10067. 8004d66: 4650 mov r0, sl
  10068. 8004d68: 4659 mov r1, fp
  10069. 8004d6a: f7fb fa41 bl 80001f0 <__aeabi_dsub>
  10070. 8004d6e: ea4f 5328 mov.w r3, r8, asr #20
  10071. 8004d72: 9305 str r3, [sp, #20]
  10072. 8004d74: 9a05 ldr r2, [sp, #20]
  10073. 8004d76: f3c1 530a ubfx r3, r1, #20, #11
  10074. 8004d7a: 1ad3 subs r3, r2, r3
  10075. 8004d7c: 2b10 cmp r3, #16
  10076. 8004d7e: dc02 bgt.n 8004d86 <__ieee754_rem_pio2+0x1be>
  10077. 8004d80: e9c4 0100 strd r0, r1, [r4]
  10078. 8004d84: e039 b.n 8004dfa <__ieee754_rem_pio2+0x232>
  10079. 8004d86: a34c add r3, pc, #304 ; (adr r3, 8004eb8 <__ieee754_rem_pio2+0x2f0>)
  10080. 8004d88: e9d3 2300 ldrd r2, r3, [r3]
  10081. 8004d8c: e9dd 0102 ldrd r0, r1, [sp, #8]
  10082. 8004d90: f7fb fbe6 bl 8000560 <__aeabi_dmul>
  10083. 8004d94: 4606 mov r6, r0
  10084. 8004d96: 460f mov r7, r1
  10085. 8004d98: 4602 mov r2, r0
  10086. 8004d9a: 460b mov r3, r1
  10087. 8004d9c: 4650 mov r0, sl
  10088. 8004d9e: 4659 mov r1, fp
  10089. 8004da0: f7fb fa26 bl 80001f0 <__aeabi_dsub>
  10090. 8004da4: 4602 mov r2, r0
  10091. 8004da6: 460b mov r3, r1
  10092. 8004da8: 4680 mov r8, r0
  10093. 8004daa: 4689 mov r9, r1
  10094. 8004dac: 4650 mov r0, sl
  10095. 8004dae: 4659 mov r1, fp
  10096. 8004db0: f7fb fa1e bl 80001f0 <__aeabi_dsub>
  10097. 8004db4: 4632 mov r2, r6
  10098. 8004db6: 463b mov r3, r7
  10099. 8004db8: f7fb fa1a bl 80001f0 <__aeabi_dsub>
  10100. 8004dbc: a340 add r3, pc, #256 ; (adr r3, 8004ec0 <__ieee754_rem_pio2+0x2f8>)
  10101. 8004dbe: e9d3 2300 ldrd r2, r3, [r3]
  10102. 8004dc2: 4606 mov r6, r0
  10103. 8004dc4: 460f mov r7, r1
  10104. 8004dc6: e9dd 0102 ldrd r0, r1, [sp, #8]
  10105. 8004dca: f7fb fbc9 bl 8000560 <__aeabi_dmul>
  10106. 8004dce: 4632 mov r2, r6
  10107. 8004dd0: 463b mov r3, r7
  10108. 8004dd2: f7fb fa0d bl 80001f0 <__aeabi_dsub>
  10109. 8004dd6: 4602 mov r2, r0
  10110. 8004dd8: 460b mov r3, r1
  10111. 8004dda: 4606 mov r6, r0
  10112. 8004ddc: 460f mov r7, r1
  10113. 8004dde: 4640 mov r0, r8
  10114. 8004de0: 4649 mov r1, r9
  10115. 8004de2: f7fb fa05 bl 80001f0 <__aeabi_dsub>
  10116. 8004de6: 9a05 ldr r2, [sp, #20]
  10117. 8004de8: f3c1 530a ubfx r3, r1, #20, #11
  10118. 8004dec: 1ad3 subs r3, r2, r3
  10119. 8004dee: 2b31 cmp r3, #49 ; 0x31
  10120. 8004df0: dc20 bgt.n 8004e34 <__ieee754_rem_pio2+0x26c>
  10121. 8004df2: e9c4 0100 strd r0, r1, [r4]
  10122. 8004df6: 46c2 mov sl, r8
  10123. 8004df8: 46cb mov fp, r9
  10124. 8004dfa: e9d4 8900 ldrd r8, r9, [r4]
  10125. 8004dfe: 4650 mov r0, sl
  10126. 8004e00: 4642 mov r2, r8
  10127. 8004e02: 464b mov r3, r9
  10128. 8004e04: 4659 mov r1, fp
  10129. 8004e06: f7fb f9f3 bl 80001f0 <__aeabi_dsub>
  10130. 8004e0a: 463b mov r3, r7
  10131. 8004e0c: 4632 mov r2, r6
  10132. 8004e0e: f7fb f9ef bl 80001f0 <__aeabi_dsub>
  10133. 8004e12: 9b04 ldr r3, [sp, #16]
  10134. 8004e14: 2b00 cmp r3, #0
  10135. 8004e16: e9c4 0102 strd r0, r1, [r4, #8]
  10136. 8004e1a: f6bf af11 bge.w 8004c40 <__ieee754_rem_pio2+0x78>
  10137. 8004e1e: f109 4300 add.w r3, r9, #2147483648 ; 0x80000000
  10138. 8004e22: 6063 str r3, [r4, #4]
  10139. 8004e24: f8c4 8000 str.w r8, [r4]
  10140. 8004e28: 60a0 str r0, [r4, #8]
  10141. 8004e2a: f101 4300 add.w r3, r1, #2147483648 ; 0x80000000
  10142. 8004e2e: 60e3 str r3, [r4, #12]
  10143. 8004e30: 426d negs r5, r5
  10144. 8004e32: e705 b.n 8004c40 <__ieee754_rem_pio2+0x78>
  10145. 8004e34: a326 add r3, pc, #152 ; (adr r3, 8004ed0 <__ieee754_rem_pio2+0x308>)
  10146. 8004e36: e9d3 2300 ldrd r2, r3, [r3]
  10147. 8004e3a: e9dd 0102 ldrd r0, r1, [sp, #8]
  10148. 8004e3e: f7fb fb8f bl 8000560 <__aeabi_dmul>
  10149. 8004e42: 4606 mov r6, r0
  10150. 8004e44: 460f mov r7, r1
  10151. 8004e46: 4602 mov r2, r0
  10152. 8004e48: 460b mov r3, r1
  10153. 8004e4a: 4640 mov r0, r8
  10154. 8004e4c: 4649 mov r1, r9
  10155. 8004e4e: f7fb f9cf bl 80001f0 <__aeabi_dsub>
  10156. 8004e52: 4602 mov r2, r0
  10157. 8004e54: 460b mov r3, r1
  10158. 8004e56: 4682 mov sl, r0
  10159. 8004e58: 468b mov fp, r1
  10160. 8004e5a: 4640 mov r0, r8
  10161. 8004e5c: 4649 mov r1, r9
  10162. 8004e5e: f7fb f9c7 bl 80001f0 <__aeabi_dsub>
  10163. 8004e62: 4632 mov r2, r6
  10164. 8004e64: 463b mov r3, r7
  10165. 8004e66: f7fb f9c3 bl 80001f0 <__aeabi_dsub>
  10166. 8004e6a: a31b add r3, pc, #108 ; (adr r3, 8004ed8 <__ieee754_rem_pio2+0x310>)
  10167. 8004e6c: e9d3 2300 ldrd r2, r3, [r3]
  10168. 8004e70: 4606 mov r6, r0
  10169. 8004e72: 460f mov r7, r1
  10170. 8004e74: e9dd 0102 ldrd r0, r1, [sp, #8]
  10171. 8004e78: f7fb fb72 bl 8000560 <__aeabi_dmul>
  10172. 8004e7c: 4632 mov r2, r6
  10173. 8004e7e: 463b mov r3, r7
  10174. 8004e80: f7fb f9b6 bl 80001f0 <__aeabi_dsub>
  10175. 8004e84: 4606 mov r6, r0
  10176. 8004e86: 460f mov r7, r1
  10177. 8004e88: e764 b.n 8004d54 <__ieee754_rem_pio2+0x18c>
  10178. 8004e8a: 4b1b ldr r3, [pc, #108] ; (8004ef8 <__ieee754_rem_pio2+0x330>)
  10179. 8004e8c: 4598 cmp r8, r3
  10180. 8004e8e: dd35 ble.n 8004efc <__ieee754_rem_pio2+0x334>
  10181. 8004e90: ee10 2a10 vmov r2, s0
  10182. 8004e94: 463b mov r3, r7
  10183. 8004e96: 4630 mov r0, r6
  10184. 8004e98: 4639 mov r1, r7
  10185. 8004e9a: f7fb f9a9 bl 80001f0 <__aeabi_dsub>
  10186. 8004e9e: e9c4 0102 strd r0, r1, [r4, #8]
  10187. 8004ea2: e9c4 0100 strd r0, r1, [r4]
  10188. 8004ea6: e6a1 b.n 8004bec <__ieee754_rem_pio2+0x24>
  10189. 8004ea8: 54400000 .word 0x54400000
  10190. 8004eac: 3ff921fb .word 0x3ff921fb
  10191. 8004eb0: 1a626331 .word 0x1a626331
  10192. 8004eb4: 3dd0b461 .word 0x3dd0b461
  10193. 8004eb8: 1a600000 .word 0x1a600000
  10194. 8004ebc: 3dd0b461 .word 0x3dd0b461
  10195. 8004ec0: 2e037073 .word 0x2e037073
  10196. 8004ec4: 3ba3198a .word 0x3ba3198a
  10197. 8004ec8: 6dc9c883 .word 0x6dc9c883
  10198. 8004ecc: 3fe45f30 .word 0x3fe45f30
  10199. 8004ed0: 2e000000 .word 0x2e000000
  10200. 8004ed4: 3ba3198a .word 0x3ba3198a
  10201. 8004ed8: 252049c1 .word 0x252049c1
  10202. 8004edc: 397b839a .word 0x397b839a
  10203. 8004ee0: 3fe921fb .word 0x3fe921fb
  10204. 8004ee4: 4002d97b .word 0x4002d97b
  10205. 8004ee8: 3ff921fb .word 0x3ff921fb
  10206. 8004eec: 413921fb .word 0x413921fb
  10207. 8004ef0: 3fe00000 .word 0x3fe00000
  10208. 8004ef4: 08006038 .word 0x08006038
  10209. 8004ef8: 7fefffff .word 0x7fefffff
  10210. 8004efc: ea4f 5528 mov.w r5, r8, asr #20
  10211. 8004f00: f2a5 4516 subw r5, r5, #1046 ; 0x416
  10212. 8004f04: eba8 5105 sub.w r1, r8, r5, lsl #20
  10213. 8004f08: 4630 mov r0, r6
  10214. 8004f0a: 460f mov r7, r1
  10215. 8004f0c: f7fb fdd8 bl 8000ac0 <__aeabi_d2iz>
  10216. 8004f10: f7fb fabc bl 800048c <__aeabi_i2d>
  10217. 8004f14: 4602 mov r2, r0
  10218. 8004f16: 460b mov r3, r1
  10219. 8004f18: 4630 mov r0, r6
  10220. 8004f1a: 4639 mov r1, r7
  10221. 8004f1c: e9cd 2306 strd r2, r3, [sp, #24]
  10222. 8004f20: f7fb f966 bl 80001f0 <__aeabi_dsub>
  10223. 8004f24: 2200 movs r2, #0
  10224. 8004f26: 4b1f ldr r3, [pc, #124] ; (8004fa4 <__ieee754_rem_pio2+0x3dc>)
  10225. 8004f28: f7fb fb1a bl 8000560 <__aeabi_dmul>
  10226. 8004f2c: 460f mov r7, r1
  10227. 8004f2e: 4606 mov r6, r0
  10228. 8004f30: f7fb fdc6 bl 8000ac0 <__aeabi_d2iz>
  10229. 8004f34: f7fb faaa bl 800048c <__aeabi_i2d>
  10230. 8004f38: 4602 mov r2, r0
  10231. 8004f3a: 460b mov r3, r1
  10232. 8004f3c: 4630 mov r0, r6
  10233. 8004f3e: 4639 mov r1, r7
  10234. 8004f40: e9cd 2308 strd r2, r3, [sp, #32]
  10235. 8004f44: f7fb f954 bl 80001f0 <__aeabi_dsub>
  10236. 8004f48: 2200 movs r2, #0
  10237. 8004f4a: 4b16 ldr r3, [pc, #88] ; (8004fa4 <__ieee754_rem_pio2+0x3dc>)
  10238. 8004f4c: f7fb fb08 bl 8000560 <__aeabi_dmul>
  10239. 8004f50: e9cd 010a strd r0, r1, [sp, #40] ; 0x28
  10240. 8004f54: f10d 0930 add.w r9, sp, #48 ; 0x30
  10241. 8004f58: f04f 0803 mov.w r8, #3
  10242. 8004f5c: 2600 movs r6, #0
  10243. 8004f5e: 2700 movs r7, #0
  10244. 8004f60: 4632 mov r2, r6
  10245. 8004f62: 463b mov r3, r7
  10246. 8004f64: e979 0102 ldrd r0, r1, [r9, #-8]!
  10247. 8004f68: f108 3aff add.w sl, r8, #4294967295
  10248. 8004f6c: f7fb fd60 bl 8000a30 <__aeabi_dcmpeq>
  10249. 8004f70: b9b0 cbnz r0, 8004fa0 <__ieee754_rem_pio2+0x3d8>
  10250. 8004f72: 4b0d ldr r3, [pc, #52] ; (8004fa8 <__ieee754_rem_pio2+0x3e0>)
  10251. 8004f74: 9301 str r3, [sp, #4]
  10252. 8004f76: 2302 movs r3, #2
  10253. 8004f78: 9300 str r3, [sp, #0]
  10254. 8004f7a: 462a mov r2, r5
  10255. 8004f7c: 4643 mov r3, r8
  10256. 8004f7e: 4621 mov r1, r4
  10257. 8004f80: a806 add r0, sp, #24
  10258. 8004f82: f000 f98d bl 80052a0 <__kernel_rem_pio2>
  10259. 8004f86: 9b04 ldr r3, [sp, #16]
  10260. 8004f88: 2b00 cmp r3, #0
  10261. 8004f8a: 4605 mov r5, r0
  10262. 8004f8c: f6bf ae58 bge.w 8004c40 <__ieee754_rem_pio2+0x78>
  10263. 8004f90: 6863 ldr r3, [r4, #4]
  10264. 8004f92: f103 4300 add.w r3, r3, #2147483648 ; 0x80000000
  10265. 8004f96: 6063 str r3, [r4, #4]
  10266. 8004f98: 68e3 ldr r3, [r4, #12]
  10267. 8004f9a: f103 4300 add.w r3, r3, #2147483648 ; 0x80000000
  10268. 8004f9e: e746 b.n 8004e2e <__ieee754_rem_pio2+0x266>
  10269. 8004fa0: 46d0 mov r8, sl
  10270. 8004fa2: e7dd b.n 8004f60 <__ieee754_rem_pio2+0x398>
  10271. 8004fa4: 41700000 .word 0x41700000
  10272. 8004fa8: 080060b8 .word 0x080060b8
  10273. 08004fac <__ieee754_sqrt>:
  10274. 8004fac: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
  10275. 8004fb0: 4955 ldr r1, [pc, #340] ; (8005108 <__ieee754_sqrt+0x15c>)
  10276. 8004fb2: ec55 4b10 vmov r4, r5, d0
  10277. 8004fb6: 43a9 bics r1, r5
  10278. 8004fb8: 462b mov r3, r5
  10279. 8004fba: 462a mov r2, r5
  10280. 8004fbc: d112 bne.n 8004fe4 <__ieee754_sqrt+0x38>
  10281. 8004fbe: ee10 2a10 vmov r2, s0
  10282. 8004fc2: ee10 0a10 vmov r0, s0
  10283. 8004fc6: 4629 mov r1, r5
  10284. 8004fc8: f7fb faca bl 8000560 <__aeabi_dmul>
  10285. 8004fcc: 4602 mov r2, r0
  10286. 8004fce: 460b mov r3, r1
  10287. 8004fd0: 4620 mov r0, r4
  10288. 8004fd2: 4629 mov r1, r5
  10289. 8004fd4: f7fb f90e bl 80001f4 <__adddf3>
  10290. 8004fd8: 4604 mov r4, r0
  10291. 8004fda: 460d mov r5, r1
  10292. 8004fdc: ec45 4b10 vmov d0, r4, r5
  10293. 8004fe0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
  10294. 8004fe4: 2d00 cmp r5, #0
  10295. 8004fe6: ee10 0a10 vmov r0, s0
  10296. 8004fea: 4621 mov r1, r4
  10297. 8004fec: dc0f bgt.n 800500e <__ieee754_sqrt+0x62>
  10298. 8004fee: f025 4600 bic.w r6, r5, #2147483648 ; 0x80000000
  10299. 8004ff2: 4330 orrs r0, r6
  10300. 8004ff4: d0f2 beq.n 8004fdc <__ieee754_sqrt+0x30>
  10301. 8004ff6: b155 cbz r5, 800500e <__ieee754_sqrt+0x62>
  10302. 8004ff8: ee10 2a10 vmov r2, s0
  10303. 8004ffc: 4620 mov r0, r4
  10304. 8004ffe: 4629 mov r1, r5
  10305. 8005000: f7fb f8f6 bl 80001f0 <__aeabi_dsub>
  10306. 8005004: 4602 mov r2, r0
  10307. 8005006: 460b mov r3, r1
  10308. 8005008: f7fb fbd4 bl 80007b4 <__aeabi_ddiv>
  10309. 800500c: e7e4 b.n 8004fd8 <__ieee754_sqrt+0x2c>
  10310. 800500e: 151b asrs r3, r3, #20
  10311. 8005010: d073 beq.n 80050fa <__ieee754_sqrt+0x14e>
  10312. 8005012: f2a3 33ff subw r3, r3, #1023 ; 0x3ff
  10313. 8005016: 07dd lsls r5, r3, #31
  10314. 8005018: f3c2 0213 ubfx r2, r2, #0, #20
  10315. 800501c: bf48 it mi
  10316. 800501e: 0fc8 lsrmi r0, r1, #31
  10317. 8005020: f442 1280 orr.w r2, r2, #1048576 ; 0x100000
  10318. 8005024: bf44 itt mi
  10319. 8005026: 0049 lslmi r1, r1, #1
  10320. 8005028: eb00 0242 addmi.w r2, r0, r2, lsl #1
  10321. 800502c: 2500 movs r5, #0
  10322. 800502e: 1058 asrs r0, r3, #1
  10323. 8005030: 0fcb lsrs r3, r1, #31
  10324. 8005032: eb03 0242 add.w r2, r3, r2, lsl #1
  10325. 8005036: 0049 lsls r1, r1, #1
  10326. 8005038: 2316 movs r3, #22
  10327. 800503a: 462c mov r4, r5
  10328. 800503c: f44f 1600 mov.w r6, #2097152 ; 0x200000
  10329. 8005040: 19a7 adds r7, r4, r6
  10330. 8005042: 4297 cmp r7, r2
  10331. 8005044: bfde ittt le
  10332. 8005046: 19bc addle r4, r7, r6
  10333. 8005048: 1bd2 suble r2, r2, r7
  10334. 800504a: 19ad addle r5, r5, r6
  10335. 800504c: 0fcf lsrs r7, r1, #31
  10336. 800504e: 3b01 subs r3, #1
  10337. 8005050: eb07 0242 add.w r2, r7, r2, lsl #1
  10338. 8005054: ea4f 0141 mov.w r1, r1, lsl #1
  10339. 8005058: ea4f 0656 mov.w r6, r6, lsr #1
  10340. 800505c: d1f0 bne.n 8005040 <__ieee754_sqrt+0x94>
  10341. 800505e: f04f 0c20 mov.w ip, #32
  10342. 8005062: 469e mov lr, r3
  10343. 8005064: f04f 4600 mov.w r6, #2147483648 ; 0x80000000
  10344. 8005068: 42a2 cmp r2, r4
  10345. 800506a: eb06 070e add.w r7, r6, lr
  10346. 800506e: dc02 bgt.n 8005076 <__ieee754_sqrt+0xca>
  10347. 8005070: d112 bne.n 8005098 <__ieee754_sqrt+0xec>
  10348. 8005072: 428f cmp r7, r1
  10349. 8005074: d810 bhi.n 8005098 <__ieee754_sqrt+0xec>
  10350. 8005076: 2f00 cmp r7, #0
  10351. 8005078: eb07 0e06 add.w lr, r7, r6
  10352. 800507c: da42 bge.n 8005104 <__ieee754_sqrt+0x158>
  10353. 800507e: f1be 0f00 cmp.w lr, #0
  10354. 8005082: db3f blt.n 8005104 <__ieee754_sqrt+0x158>
  10355. 8005084: f104 0801 add.w r8, r4, #1
  10356. 8005088: 1b12 subs r2, r2, r4
  10357. 800508a: 428f cmp r7, r1
  10358. 800508c: bf88 it hi
  10359. 800508e: f102 32ff addhi.w r2, r2, #4294967295
  10360. 8005092: 1bc9 subs r1, r1, r7
  10361. 8005094: 4433 add r3, r6
  10362. 8005096: 4644 mov r4, r8
  10363. 8005098: 0052 lsls r2, r2, #1
  10364. 800509a: f1bc 0c01 subs.w ip, ip, #1
  10365. 800509e: eb02 72d1 add.w r2, r2, r1, lsr #31
  10366. 80050a2: ea4f 0656 mov.w r6, r6, lsr #1
  10367. 80050a6: ea4f 0141 mov.w r1, r1, lsl #1
  10368. 80050aa: d1dd bne.n 8005068 <__ieee754_sqrt+0xbc>
  10369. 80050ac: 430a orrs r2, r1
  10370. 80050ae: d006 beq.n 80050be <__ieee754_sqrt+0x112>
  10371. 80050b0: 1c5c adds r4, r3, #1
  10372. 80050b2: bf13 iteet ne
  10373. 80050b4: 3301 addne r3, #1
  10374. 80050b6: 3501 addeq r5, #1
  10375. 80050b8: 4663 moveq r3, ip
  10376. 80050ba: f023 0301 bicne.w r3, r3, #1
  10377. 80050be: 106a asrs r2, r5, #1
  10378. 80050c0: 085b lsrs r3, r3, #1
  10379. 80050c2: 07e9 lsls r1, r5, #31
  10380. 80050c4: f102 527f add.w r2, r2, #1069547520 ; 0x3fc00000
  10381. 80050c8: f502 1200 add.w r2, r2, #2097152 ; 0x200000
  10382. 80050cc: bf48 it mi
  10383. 80050ce: f043 4300 orrmi.w r3, r3, #2147483648 ; 0x80000000
  10384. 80050d2: eb02 5500 add.w r5, r2, r0, lsl #20
  10385. 80050d6: 461c mov r4, r3
  10386. 80050d8: e780 b.n 8004fdc <__ieee754_sqrt+0x30>
  10387. 80050da: 0aca lsrs r2, r1, #11
  10388. 80050dc: 3815 subs r0, #21
  10389. 80050de: 0549 lsls r1, r1, #21
  10390. 80050e0: 2a00 cmp r2, #0
  10391. 80050e2: d0fa beq.n 80050da <__ieee754_sqrt+0x12e>
  10392. 80050e4: 02d6 lsls r6, r2, #11
  10393. 80050e6: d50a bpl.n 80050fe <__ieee754_sqrt+0x152>
  10394. 80050e8: f1c3 0420 rsb r4, r3, #32
  10395. 80050ec: fa21 f404 lsr.w r4, r1, r4
  10396. 80050f0: 1e5d subs r5, r3, #1
  10397. 80050f2: 4099 lsls r1, r3
  10398. 80050f4: 4322 orrs r2, r4
  10399. 80050f6: 1b43 subs r3, r0, r5
  10400. 80050f8: e78b b.n 8005012 <__ieee754_sqrt+0x66>
  10401. 80050fa: 4618 mov r0, r3
  10402. 80050fc: e7f0 b.n 80050e0 <__ieee754_sqrt+0x134>
  10403. 80050fe: 0052 lsls r2, r2, #1
  10404. 8005100: 3301 adds r3, #1
  10405. 8005102: e7ef b.n 80050e4 <__ieee754_sqrt+0x138>
  10406. 8005104: 46a0 mov r8, r4
  10407. 8005106: e7bf b.n 8005088 <__ieee754_sqrt+0xdc>
  10408. 8005108: 7ff00000 .word 0x7ff00000
  10409. 800510c: 00000000 .word 0x00000000
  10410. 08005110 <__kernel_cos>:
  10411. 8005110: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
  10412. 8005114: ec59 8b10 vmov r8, r9, d0
  10413. 8005118: f029 4600 bic.w r6, r9, #2147483648 ; 0x80000000
  10414. 800511c: f1b6 5f79 cmp.w r6, #1044381696 ; 0x3e400000
  10415. 8005120: ed2d 8b02 vpush {d8}
  10416. 8005124: eeb0 8a41 vmov.f32 s16, s2
  10417. 8005128: eef0 8a61 vmov.f32 s17, s3
  10418. 800512c: da07 bge.n 800513e <__kernel_cos+0x2e>
  10419. 800512e: ee10 0a10 vmov r0, s0
  10420. 8005132: 4649 mov r1, r9
  10421. 8005134: f7fb fcc4 bl 8000ac0 <__aeabi_d2iz>
  10422. 8005138: 2800 cmp r0, #0
  10423. 800513a: f000 8089 beq.w 8005250 <__kernel_cos+0x140>
  10424. 800513e: 4642 mov r2, r8
  10425. 8005140: 464b mov r3, r9
  10426. 8005142: 4640 mov r0, r8
  10427. 8005144: 4649 mov r1, r9
  10428. 8005146: f7fb fa0b bl 8000560 <__aeabi_dmul>
  10429. 800514a: 2200 movs r2, #0
  10430. 800514c: 4b4e ldr r3, [pc, #312] ; (8005288 <__kernel_cos+0x178>)
  10431. 800514e: 4604 mov r4, r0
  10432. 8005150: 460d mov r5, r1
  10433. 8005152: f7fb fa05 bl 8000560 <__aeabi_dmul>
  10434. 8005156: a340 add r3, pc, #256 ; (adr r3, 8005258 <__kernel_cos+0x148>)
  10435. 8005158: e9d3 2300 ldrd r2, r3, [r3]
  10436. 800515c: 4682 mov sl, r0
  10437. 800515e: 468b mov fp, r1
  10438. 8005160: 4620 mov r0, r4
  10439. 8005162: 4629 mov r1, r5
  10440. 8005164: f7fb f9fc bl 8000560 <__aeabi_dmul>
  10441. 8005168: a33d add r3, pc, #244 ; (adr r3, 8005260 <__kernel_cos+0x150>)
  10442. 800516a: e9d3 2300 ldrd r2, r3, [r3]
  10443. 800516e: f7fb f841 bl 80001f4 <__adddf3>
  10444. 8005172: 4622 mov r2, r4
  10445. 8005174: 462b mov r3, r5
  10446. 8005176: f7fb f9f3 bl 8000560 <__aeabi_dmul>
  10447. 800517a: a33b add r3, pc, #236 ; (adr r3, 8005268 <__kernel_cos+0x158>)
  10448. 800517c: e9d3 2300 ldrd r2, r3, [r3]
  10449. 8005180: f7fb f836 bl 80001f0 <__aeabi_dsub>
  10450. 8005184: 4622 mov r2, r4
  10451. 8005186: 462b mov r3, r5
  10452. 8005188: f7fb f9ea bl 8000560 <__aeabi_dmul>
  10453. 800518c: a338 add r3, pc, #224 ; (adr r3, 8005270 <__kernel_cos+0x160>)
  10454. 800518e: e9d3 2300 ldrd r2, r3, [r3]
  10455. 8005192: f7fb f82f bl 80001f4 <__adddf3>
  10456. 8005196: 4622 mov r2, r4
  10457. 8005198: 462b mov r3, r5
  10458. 800519a: f7fb f9e1 bl 8000560 <__aeabi_dmul>
  10459. 800519e: a336 add r3, pc, #216 ; (adr r3, 8005278 <__kernel_cos+0x168>)
  10460. 80051a0: e9d3 2300 ldrd r2, r3, [r3]
  10461. 80051a4: f7fb f824 bl 80001f0 <__aeabi_dsub>
  10462. 80051a8: 4622 mov r2, r4
  10463. 80051aa: 462b mov r3, r5
  10464. 80051ac: f7fb f9d8 bl 8000560 <__aeabi_dmul>
  10465. 80051b0: a333 add r3, pc, #204 ; (adr r3, 8005280 <__kernel_cos+0x170>)
  10466. 80051b2: e9d3 2300 ldrd r2, r3, [r3]
  10467. 80051b6: f7fb f81d bl 80001f4 <__adddf3>
  10468. 80051ba: 4622 mov r2, r4
  10469. 80051bc: 462b mov r3, r5
  10470. 80051be: f7fb f9cf bl 8000560 <__aeabi_dmul>
  10471. 80051c2: 4622 mov r2, r4
  10472. 80051c4: 462b mov r3, r5
  10473. 80051c6: f7fb f9cb bl 8000560 <__aeabi_dmul>
  10474. 80051ca: ec53 2b18 vmov r2, r3, d8
  10475. 80051ce: 4604 mov r4, r0
  10476. 80051d0: 460d mov r5, r1
  10477. 80051d2: 4640 mov r0, r8
  10478. 80051d4: 4649 mov r1, r9
  10479. 80051d6: f7fb f9c3 bl 8000560 <__aeabi_dmul>
  10480. 80051da: 460b mov r3, r1
  10481. 80051dc: 4602 mov r2, r0
  10482. 80051de: 4629 mov r1, r5
  10483. 80051e0: 4620 mov r0, r4
  10484. 80051e2: f7fb f805 bl 80001f0 <__aeabi_dsub>
  10485. 80051e6: 4b29 ldr r3, [pc, #164] ; (800528c <__kernel_cos+0x17c>)
  10486. 80051e8: 429e cmp r6, r3
  10487. 80051ea: 4680 mov r8, r0
  10488. 80051ec: 4689 mov r9, r1
  10489. 80051ee: dc11 bgt.n 8005214 <__kernel_cos+0x104>
  10490. 80051f0: 4602 mov r2, r0
  10491. 80051f2: 460b mov r3, r1
  10492. 80051f4: 4650 mov r0, sl
  10493. 80051f6: 4659 mov r1, fp
  10494. 80051f8: f7fa fffa bl 80001f0 <__aeabi_dsub>
  10495. 80051fc: 460b mov r3, r1
  10496. 80051fe: 4924 ldr r1, [pc, #144] ; (8005290 <__kernel_cos+0x180>)
  10497. 8005200: 4602 mov r2, r0
  10498. 8005202: 2000 movs r0, #0
  10499. 8005204: f7fa fff4 bl 80001f0 <__aeabi_dsub>
  10500. 8005208: ecbd 8b02 vpop {d8}
  10501. 800520c: ec41 0b10 vmov d0, r0, r1
  10502. 8005210: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
  10503. 8005214: 4b1f ldr r3, [pc, #124] ; (8005294 <__kernel_cos+0x184>)
  10504. 8005216: 491e ldr r1, [pc, #120] ; (8005290 <__kernel_cos+0x180>)
  10505. 8005218: 429e cmp r6, r3
  10506. 800521a: bfcc ite gt
  10507. 800521c: 4d1e ldrgt r5, [pc, #120] ; (8005298 <__kernel_cos+0x188>)
  10508. 800521e: f5a6 1500 suble.w r5, r6, #2097152 ; 0x200000
  10509. 8005222: 2400 movs r4, #0
  10510. 8005224: 4622 mov r2, r4
  10511. 8005226: 462b mov r3, r5
  10512. 8005228: 2000 movs r0, #0
  10513. 800522a: f7fa ffe1 bl 80001f0 <__aeabi_dsub>
  10514. 800522e: 4622 mov r2, r4
  10515. 8005230: 4606 mov r6, r0
  10516. 8005232: 460f mov r7, r1
  10517. 8005234: 462b mov r3, r5
  10518. 8005236: 4650 mov r0, sl
  10519. 8005238: 4659 mov r1, fp
  10520. 800523a: f7fa ffd9 bl 80001f0 <__aeabi_dsub>
  10521. 800523e: 4642 mov r2, r8
  10522. 8005240: 464b mov r3, r9
  10523. 8005242: f7fa ffd5 bl 80001f0 <__aeabi_dsub>
  10524. 8005246: 4602 mov r2, r0
  10525. 8005248: 460b mov r3, r1
  10526. 800524a: 4630 mov r0, r6
  10527. 800524c: 4639 mov r1, r7
  10528. 800524e: e7d9 b.n 8005204 <__kernel_cos+0xf4>
  10529. 8005250: 2000 movs r0, #0
  10530. 8005252: 490f ldr r1, [pc, #60] ; (8005290 <__kernel_cos+0x180>)
  10531. 8005254: e7d8 b.n 8005208 <__kernel_cos+0xf8>
  10532. 8005256: bf00 nop
  10533. 8005258: be8838d4 .word 0xbe8838d4
  10534. 800525c: bda8fae9 .word 0xbda8fae9
  10535. 8005260: bdb4b1c4 .word 0xbdb4b1c4
  10536. 8005264: 3e21ee9e .word 0x3e21ee9e
  10537. 8005268: 809c52ad .word 0x809c52ad
  10538. 800526c: 3e927e4f .word 0x3e927e4f
  10539. 8005270: 19cb1590 .word 0x19cb1590
  10540. 8005274: 3efa01a0 .word 0x3efa01a0
  10541. 8005278: 16c15177 .word 0x16c15177
  10542. 800527c: 3f56c16c .word 0x3f56c16c
  10543. 8005280: 5555554c .word 0x5555554c
  10544. 8005284: 3fa55555 .word 0x3fa55555
  10545. 8005288: 3fe00000 .word 0x3fe00000
  10546. 800528c: 3fd33332 .word 0x3fd33332
  10547. 8005290: 3ff00000 .word 0x3ff00000
  10548. 8005294: 3fe90000 .word 0x3fe90000
  10549. 8005298: 3fd20000 .word 0x3fd20000
  10550. 800529c: 00000000 .word 0x00000000
  10551. 080052a0 <__kernel_rem_pio2>:
  10552. 80052a0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
  10553. 80052a4: ed2d 8b02 vpush {d8}
  10554. 80052a8: f5ad 7d1b sub.w sp, sp, #620 ; 0x26c
  10555. 80052ac: 1ed4 subs r4, r2, #3
  10556. 80052ae: 9308 str r3, [sp, #32]
  10557. 80052b0: 9101 str r1, [sp, #4]
  10558. 80052b2: 4bc5 ldr r3, [pc, #788] ; (80055c8 <__kernel_rem_pio2+0x328>)
  10559. 80052b4: 99a6 ldr r1, [sp, #664] ; 0x298
  10560. 80052b6: 9009 str r0, [sp, #36] ; 0x24
  10561. 80052b8: f853 3021 ldr.w r3, [r3, r1, lsl #2]
  10562. 80052bc: 9304 str r3, [sp, #16]
  10563. 80052be: 9b08 ldr r3, [sp, #32]
  10564. 80052c0: 3b01 subs r3, #1
  10565. 80052c2: 9307 str r3, [sp, #28]
  10566. 80052c4: 2318 movs r3, #24
  10567. 80052c6: fb94 f4f3 sdiv r4, r4, r3
  10568. 80052ca: f06f 0317 mvn.w r3, #23
  10569. 80052ce: ea24 74e4 bic.w r4, r4, r4, asr #31
  10570. 80052d2: fb04 3303 mla r3, r4, r3, r3
  10571. 80052d6: eb03 0a02 add.w sl, r3, r2
  10572. 80052da: 9b04 ldr r3, [sp, #16]
  10573. 80052dc: 9a07 ldr r2, [sp, #28]
  10574. 80052de: ed9f 8bb6 vldr d8, [pc, #728] ; 80055b8 <__kernel_rem_pio2+0x318>
  10575. 80052e2: eb03 0802 add.w r8, r3, r2
  10576. 80052e6: 9ba7 ldr r3, [sp, #668] ; 0x29c
  10577. 80052e8: 1aa7 subs r7, r4, r2
  10578. 80052ea: eb03 0987 add.w r9, r3, r7, lsl #2
  10579. 80052ee: ae22 add r6, sp, #136 ; 0x88
  10580. 80052f0: 2500 movs r5, #0
  10581. 80052f2: 4545 cmp r5, r8
  10582. 80052f4: dd13 ble.n 800531e <__kernel_rem_pio2+0x7e>
  10583. 80052f6: ed9f 8bb0 vldr d8, [pc, #704] ; 80055b8 <__kernel_rem_pio2+0x318>
  10584. 80052fa: f50d 7be4 add.w fp, sp, #456 ; 0x1c8
  10585. 80052fe: 2600 movs r6, #0
  10586. 8005300: 9b04 ldr r3, [sp, #16]
  10587. 8005302: 429e cmp r6, r3
  10588. 8005304: dc32 bgt.n 800536c <__kernel_rem_pio2+0xcc>
  10589. 8005306: 9b09 ldr r3, [sp, #36] ; 0x24
  10590. 8005308: 9302 str r3, [sp, #8]
  10591. 800530a: 9b08 ldr r3, [sp, #32]
  10592. 800530c: 199d adds r5, r3, r6
  10593. 800530e: ab22 add r3, sp, #136 ; 0x88
  10594. 8005310: eb03 03c5 add.w r3, r3, r5, lsl #3
  10595. 8005314: 9306 str r3, [sp, #24]
  10596. 8005316: ec59 8b18 vmov r8, r9, d8
  10597. 800531a: 2700 movs r7, #0
  10598. 800531c: e01f b.n 800535e <__kernel_rem_pio2+0xbe>
  10599. 800531e: 42ef cmn r7, r5
  10600. 8005320: d407 bmi.n 8005332 <__kernel_rem_pio2+0x92>
  10601. 8005322: f859 0025 ldr.w r0, [r9, r5, lsl #2]
  10602. 8005326: f7fb f8b1 bl 800048c <__aeabi_i2d>
  10603. 800532a: e8e6 0102 strd r0, r1, [r6], #8
  10604. 800532e: 3501 adds r5, #1
  10605. 8005330: e7df b.n 80052f2 <__kernel_rem_pio2+0x52>
  10606. 8005332: ec51 0b18 vmov r0, r1, d8
  10607. 8005336: e7f8 b.n 800532a <__kernel_rem_pio2+0x8a>
  10608. 8005338: 9906 ldr r1, [sp, #24]
  10609. 800533a: 9d02 ldr r5, [sp, #8]
  10610. 800533c: e971 2302 ldrd r2, r3, [r1, #-8]!
  10611. 8005340: 9106 str r1, [sp, #24]
  10612. 8005342: e8f5 0102 ldrd r0, r1, [r5], #8
  10613. 8005346: 9502 str r5, [sp, #8]
  10614. 8005348: f7fb f90a bl 8000560 <__aeabi_dmul>
  10615. 800534c: 4602 mov r2, r0
  10616. 800534e: 460b mov r3, r1
  10617. 8005350: 4640 mov r0, r8
  10618. 8005352: 4649 mov r1, r9
  10619. 8005354: f7fa ff4e bl 80001f4 <__adddf3>
  10620. 8005358: 3701 adds r7, #1
  10621. 800535a: 4680 mov r8, r0
  10622. 800535c: 4689 mov r9, r1
  10623. 800535e: 9b07 ldr r3, [sp, #28]
  10624. 8005360: 429f cmp r7, r3
  10625. 8005362: dde9 ble.n 8005338 <__kernel_rem_pio2+0x98>
  10626. 8005364: e8eb 8902 strd r8, r9, [fp], #8
  10627. 8005368: 3601 adds r6, #1
  10628. 800536a: e7c9 b.n 8005300 <__kernel_rem_pio2+0x60>
  10629. 800536c: 9b04 ldr r3, [sp, #16]
  10630. 800536e: aa0e add r2, sp, #56 ; 0x38
  10631. 8005370: eb02 0383 add.w r3, r2, r3, lsl #2
  10632. 8005374: 930c str r3, [sp, #48] ; 0x30
  10633. 8005376: 9ba7 ldr r3, [sp, #668] ; 0x29c
  10634. 8005378: eb03 0384 add.w r3, r3, r4, lsl #2
  10635. 800537c: 9c04 ldr r4, [sp, #16]
  10636. 800537e: 930b str r3, [sp, #44] ; 0x2c
  10637. 8005380: ab9a add r3, sp, #616 ; 0x268
  10638. 8005382: f104 5b00 add.w fp, r4, #536870912 ; 0x20000000
  10639. 8005386: eb03 03c4 add.w r3, r3, r4, lsl #3
  10640. 800538a: f10b 3bff add.w fp, fp, #4294967295
  10641. 800538e: e953 8928 ldrd r8, r9, [r3, #-160] ; 0xa0
  10642. 8005392: ea4f 0bcb mov.w fp, fp, lsl #3
  10643. 8005396: ab9a add r3, sp, #616 ; 0x268
  10644. 8005398: 445b add r3, fp
  10645. 800539a: f1a3 0698 sub.w r6, r3, #152 ; 0x98
  10646. 800539e: 2500 movs r5, #0
  10647. 80053a0: 1b63 subs r3, r4, r5
  10648. 80053a2: 2b00 cmp r3, #0
  10649. 80053a4: dc78 bgt.n 8005498 <__kernel_rem_pio2+0x1f8>
  10650. 80053a6: 4650 mov r0, sl
  10651. 80053a8: ec49 8b10 vmov d0, r8, r9
  10652. 80053ac: f000 fd54 bl 8005e58 <scalbn>
  10653. 80053b0: ec57 6b10 vmov r6, r7, d0
  10654. 80053b4: 2200 movs r2, #0
  10655. 80053b6: f04f 537f mov.w r3, #1069547520 ; 0x3fc00000
  10656. 80053ba: ee10 0a10 vmov r0, s0
  10657. 80053be: 4639 mov r1, r7
  10658. 80053c0: f7fb f8ce bl 8000560 <__aeabi_dmul>
  10659. 80053c4: ec41 0b10 vmov d0, r0, r1
  10660. 80053c8: f7ff f84e bl 8004468 <floor>
  10661. 80053cc: 2200 movs r2, #0
  10662. 80053ce: ec51 0b10 vmov r0, r1, d0
  10663. 80053d2: 4b7e ldr r3, [pc, #504] ; (80055cc <__kernel_rem_pio2+0x32c>)
  10664. 80053d4: f7fb f8c4 bl 8000560 <__aeabi_dmul>
  10665. 80053d8: 4602 mov r2, r0
  10666. 80053da: 460b mov r3, r1
  10667. 80053dc: 4630 mov r0, r6
  10668. 80053de: 4639 mov r1, r7
  10669. 80053e0: f7fa ff06 bl 80001f0 <__aeabi_dsub>
  10670. 80053e4: 460f mov r7, r1
  10671. 80053e6: 4606 mov r6, r0
  10672. 80053e8: f7fb fb6a bl 8000ac0 <__aeabi_d2iz>
  10673. 80053ec: 9006 str r0, [sp, #24]
  10674. 80053ee: f7fb f84d bl 800048c <__aeabi_i2d>
  10675. 80053f2: 4602 mov r2, r0
  10676. 80053f4: 460b mov r3, r1
  10677. 80053f6: 4630 mov r0, r6
  10678. 80053f8: 4639 mov r1, r7
  10679. 80053fa: f7fa fef9 bl 80001f0 <__aeabi_dsub>
  10680. 80053fe: f1ba 0f00 cmp.w sl, #0
  10681. 8005402: 4606 mov r6, r0
  10682. 8005404: 460f mov r7, r1
  10683. 8005406: dd6c ble.n 80054e2 <__kernel_rem_pio2+0x242>
  10684. 8005408: 1e62 subs r2, r4, #1
  10685. 800540a: ab0e add r3, sp, #56 ; 0x38
  10686. 800540c: f1ca 0118 rsb r1, sl, #24
  10687. 8005410: f853 0022 ldr.w r0, [r3, r2, lsl #2]
  10688. 8005414: 9d06 ldr r5, [sp, #24]
  10689. 8005416: fa40 f301 asr.w r3, r0, r1
  10690. 800541a: 441d add r5, r3
  10691. 800541c: 408b lsls r3, r1
  10692. 800541e: 1ac0 subs r0, r0, r3
  10693. 8005420: ab0e add r3, sp, #56 ; 0x38
  10694. 8005422: 9506 str r5, [sp, #24]
  10695. 8005424: f843 0022 str.w r0, [r3, r2, lsl #2]
  10696. 8005428: f1ca 0317 rsb r3, sl, #23
  10697. 800542c: fa40 f303 asr.w r3, r0, r3
  10698. 8005430: 9302 str r3, [sp, #8]
  10699. 8005432: 9b02 ldr r3, [sp, #8]
  10700. 8005434: 2b00 cmp r3, #0
  10701. 8005436: dd62 ble.n 80054fe <__kernel_rem_pio2+0x25e>
  10702. 8005438: 9b06 ldr r3, [sp, #24]
  10703. 800543a: 2200 movs r2, #0
  10704. 800543c: 3301 adds r3, #1
  10705. 800543e: 9306 str r3, [sp, #24]
  10706. 8005440: 4615 mov r5, r2
  10707. 8005442: f06f 417f mvn.w r1, #4278190080 ; 0xff000000
  10708. 8005446: 4294 cmp r4, r2
  10709. 8005448: f300 8095 bgt.w 8005576 <__kernel_rem_pio2+0x2d6>
  10710. 800544c: f1ba 0f00 cmp.w sl, #0
  10711. 8005450: dd07 ble.n 8005462 <__kernel_rem_pio2+0x1c2>
  10712. 8005452: f1ba 0f01 cmp.w sl, #1
  10713. 8005456: f000 80a2 beq.w 800559e <__kernel_rem_pio2+0x2fe>
  10714. 800545a: f1ba 0f02 cmp.w sl, #2
  10715. 800545e: f000 80c1 beq.w 80055e4 <__kernel_rem_pio2+0x344>
  10716. 8005462: 9b02 ldr r3, [sp, #8]
  10717. 8005464: 2b02 cmp r3, #2
  10718. 8005466: d14a bne.n 80054fe <__kernel_rem_pio2+0x25e>
  10719. 8005468: 4632 mov r2, r6
  10720. 800546a: 463b mov r3, r7
  10721. 800546c: 2000 movs r0, #0
  10722. 800546e: 4958 ldr r1, [pc, #352] ; (80055d0 <__kernel_rem_pio2+0x330>)
  10723. 8005470: f7fa febe bl 80001f0 <__aeabi_dsub>
  10724. 8005474: 4606 mov r6, r0
  10725. 8005476: 460f mov r7, r1
  10726. 8005478: 2d00 cmp r5, #0
  10727. 800547a: d040 beq.n 80054fe <__kernel_rem_pio2+0x25e>
  10728. 800547c: 4650 mov r0, sl
  10729. 800547e: ed9f 0b50 vldr d0, [pc, #320] ; 80055c0 <__kernel_rem_pio2+0x320>
  10730. 8005482: f000 fce9 bl 8005e58 <scalbn>
  10731. 8005486: 4630 mov r0, r6
  10732. 8005488: 4639 mov r1, r7
  10733. 800548a: ec53 2b10 vmov r2, r3, d0
  10734. 800548e: f7fa feaf bl 80001f0 <__aeabi_dsub>
  10735. 8005492: 4606 mov r6, r0
  10736. 8005494: 460f mov r7, r1
  10737. 8005496: e032 b.n 80054fe <__kernel_rem_pio2+0x25e>
  10738. 8005498: 2200 movs r2, #0
  10739. 800549a: 4b4e ldr r3, [pc, #312] ; (80055d4 <__kernel_rem_pio2+0x334>)
  10740. 800549c: 4640 mov r0, r8
  10741. 800549e: 4649 mov r1, r9
  10742. 80054a0: f7fb f85e bl 8000560 <__aeabi_dmul>
  10743. 80054a4: f7fb fb0c bl 8000ac0 <__aeabi_d2iz>
  10744. 80054a8: f7fa fff0 bl 800048c <__aeabi_i2d>
  10745. 80054ac: 2200 movs r2, #0
  10746. 80054ae: 4b4a ldr r3, [pc, #296] ; (80055d8 <__kernel_rem_pio2+0x338>)
  10747. 80054b0: e9cd 0102 strd r0, r1, [sp, #8]
  10748. 80054b4: f7fb f854 bl 8000560 <__aeabi_dmul>
  10749. 80054b8: 4602 mov r2, r0
  10750. 80054ba: 460b mov r3, r1
  10751. 80054bc: 4640 mov r0, r8
  10752. 80054be: 4649 mov r1, r9
  10753. 80054c0: f7fa fe96 bl 80001f0 <__aeabi_dsub>
  10754. 80054c4: f7fb fafc bl 8000ac0 <__aeabi_d2iz>
  10755. 80054c8: ab0e add r3, sp, #56 ; 0x38
  10756. 80054ca: f843 0025 str.w r0, [r3, r5, lsl #2]
  10757. 80054ce: e976 2302 ldrd r2, r3, [r6, #-8]!
  10758. 80054d2: e9dd 0102 ldrd r0, r1, [sp, #8]
  10759. 80054d6: f7fa fe8d bl 80001f4 <__adddf3>
  10760. 80054da: 3501 adds r5, #1
  10761. 80054dc: 4680 mov r8, r0
  10762. 80054de: 4689 mov r9, r1
  10763. 80054e0: e75e b.n 80053a0 <__kernel_rem_pio2+0x100>
  10764. 80054e2: d105 bne.n 80054f0 <__kernel_rem_pio2+0x250>
  10765. 80054e4: 1e63 subs r3, r4, #1
  10766. 80054e6: aa0e add r2, sp, #56 ; 0x38
  10767. 80054e8: f852 0023 ldr.w r0, [r2, r3, lsl #2]
  10768. 80054ec: 15c3 asrs r3, r0, #23
  10769. 80054ee: e79f b.n 8005430 <__kernel_rem_pio2+0x190>
  10770. 80054f0: 2200 movs r2, #0
  10771. 80054f2: 4b3a ldr r3, [pc, #232] ; (80055dc <__kernel_rem_pio2+0x33c>)
  10772. 80054f4: f7fb faba bl 8000a6c <__aeabi_dcmpge>
  10773. 80054f8: 2800 cmp r0, #0
  10774. 80054fa: d139 bne.n 8005570 <__kernel_rem_pio2+0x2d0>
  10775. 80054fc: 9002 str r0, [sp, #8]
  10776. 80054fe: 2200 movs r2, #0
  10777. 8005500: 2300 movs r3, #0
  10778. 8005502: 4630 mov r0, r6
  10779. 8005504: 4639 mov r1, r7
  10780. 8005506: f7fb fa93 bl 8000a30 <__aeabi_dcmpeq>
  10781. 800550a: 2800 cmp r0, #0
  10782. 800550c: f000 80c7 beq.w 800569e <__kernel_rem_pio2+0x3fe>
  10783. 8005510: 1e65 subs r5, r4, #1
  10784. 8005512: 462b mov r3, r5
  10785. 8005514: 2200 movs r2, #0
  10786. 8005516: 9904 ldr r1, [sp, #16]
  10787. 8005518: 428b cmp r3, r1
  10788. 800551a: da6a bge.n 80055f2 <__kernel_rem_pio2+0x352>
  10789. 800551c: 2a00 cmp r2, #0
  10790. 800551e: f000 8088 beq.w 8005632 <__kernel_rem_pio2+0x392>
  10791. 8005522: ab0e add r3, sp, #56 ; 0x38
  10792. 8005524: f1aa 0a18 sub.w sl, sl, #24
  10793. 8005528: f853 3025 ldr.w r3, [r3, r5, lsl #2]
  10794. 800552c: 2b00 cmp r3, #0
  10795. 800552e: f000 80b4 beq.w 800569a <__kernel_rem_pio2+0x3fa>
  10796. 8005532: 4650 mov r0, sl
  10797. 8005534: ed9f 0b22 vldr d0, [pc, #136] ; 80055c0 <__kernel_rem_pio2+0x320>
  10798. 8005538: f000 fc8e bl 8005e58 <scalbn>
  10799. 800553c: 00ec lsls r4, r5, #3
  10800. 800553e: ab72 add r3, sp, #456 ; 0x1c8
  10801. 8005540: 191e adds r6, r3, r4
  10802. 8005542: ec59 8b10 vmov r8, r9, d0
  10803. 8005546: f106 0a08 add.w sl, r6, #8
  10804. 800554a: 462f mov r7, r5
  10805. 800554c: 2f00 cmp r7, #0
  10806. 800554e: f280 80df bge.w 8005710 <__kernel_rem_pio2+0x470>
  10807. 8005552: ed9f 8b19 vldr d8, [pc, #100] ; 80055b8 <__kernel_rem_pio2+0x318>
  10808. 8005556: f04f 0a00 mov.w sl, #0
  10809. 800555a: eba5 030a sub.w r3, r5, sl
  10810. 800555e: 2b00 cmp r3, #0
  10811. 8005560: f2c0 810a blt.w 8005778 <__kernel_rem_pio2+0x4d8>
  10812. 8005564: f8df b078 ldr.w fp, [pc, #120] ; 80055e0 <__kernel_rem_pio2+0x340>
  10813. 8005568: ec59 8b18 vmov r8, r9, d8
  10814. 800556c: 2700 movs r7, #0
  10815. 800556e: e0f5 b.n 800575c <__kernel_rem_pio2+0x4bc>
  10816. 8005570: 2302 movs r3, #2
  10817. 8005572: 9302 str r3, [sp, #8]
  10818. 8005574: e760 b.n 8005438 <__kernel_rem_pio2+0x198>
  10819. 8005576: ab0e add r3, sp, #56 ; 0x38
  10820. 8005578: f853 3022 ldr.w r3, [r3, r2, lsl #2]
  10821. 800557c: b94d cbnz r5, 8005592 <__kernel_rem_pio2+0x2f2>
  10822. 800557e: b12b cbz r3, 800558c <__kernel_rem_pio2+0x2ec>
  10823. 8005580: a80e add r0, sp, #56 ; 0x38
  10824. 8005582: f1c3 7380 rsb r3, r3, #16777216 ; 0x1000000
  10825. 8005586: f840 3022 str.w r3, [r0, r2, lsl #2]
  10826. 800558a: 2301 movs r3, #1
  10827. 800558c: 3201 adds r2, #1
  10828. 800558e: 461d mov r5, r3
  10829. 8005590: e759 b.n 8005446 <__kernel_rem_pio2+0x1a6>
  10830. 8005592: a80e add r0, sp, #56 ; 0x38
  10831. 8005594: 1acb subs r3, r1, r3
  10832. 8005596: f840 3022 str.w r3, [r0, r2, lsl #2]
  10833. 800559a: 462b mov r3, r5
  10834. 800559c: e7f6 b.n 800558c <__kernel_rem_pio2+0x2ec>
  10835. 800559e: 1e62 subs r2, r4, #1
  10836. 80055a0: ab0e add r3, sp, #56 ; 0x38
  10837. 80055a2: f853 3022 ldr.w r3, [r3, r2, lsl #2]
  10838. 80055a6: f3c3 0316 ubfx r3, r3, #0, #23
  10839. 80055aa: a90e add r1, sp, #56 ; 0x38
  10840. 80055ac: f841 3022 str.w r3, [r1, r2, lsl #2]
  10841. 80055b0: e757 b.n 8005462 <__kernel_rem_pio2+0x1c2>
  10842. 80055b2: bf00 nop
  10843. 80055b4: f3af 8000 nop.w
  10844. ...
  10845. 80055c4: 3ff00000 .word 0x3ff00000
  10846. 80055c8: 08006200 .word 0x08006200
  10847. 80055cc: 40200000 .word 0x40200000
  10848. 80055d0: 3ff00000 .word 0x3ff00000
  10849. 80055d4: 3e700000 .word 0x3e700000
  10850. 80055d8: 41700000 .word 0x41700000
  10851. 80055dc: 3fe00000 .word 0x3fe00000
  10852. 80055e0: 080061c0 .word 0x080061c0
  10853. 80055e4: 1e62 subs r2, r4, #1
  10854. 80055e6: ab0e add r3, sp, #56 ; 0x38
  10855. 80055e8: f853 3022 ldr.w r3, [r3, r2, lsl #2]
  10856. 80055ec: f3c3 0315 ubfx r3, r3, #0, #22
  10857. 80055f0: e7db b.n 80055aa <__kernel_rem_pio2+0x30a>
  10858. 80055f2: a90e add r1, sp, #56 ; 0x38
  10859. 80055f4: f851 1023 ldr.w r1, [r1, r3, lsl #2]
  10860. 80055f8: 3b01 subs r3, #1
  10861. 80055fa: 430a orrs r2, r1
  10862. 80055fc: e78b b.n 8005516 <__kernel_rem_pio2+0x276>
  10863. 80055fe: 3301 adds r3, #1
  10864. 8005600: f852 1d04 ldr.w r1, [r2, #-4]!
  10865. 8005604: 2900 cmp r1, #0
  10866. 8005606: d0fa beq.n 80055fe <__kernel_rem_pio2+0x35e>
  10867. 8005608: 9a08 ldr r2, [sp, #32]
  10868. 800560a: 4422 add r2, r4
  10869. 800560c: 00d2 lsls r2, r2, #3
  10870. 800560e: a922 add r1, sp, #136 ; 0x88
  10871. 8005610: 18e3 adds r3, r4, r3
  10872. 8005612: 9206 str r2, [sp, #24]
  10873. 8005614: 440a add r2, r1
  10874. 8005616: 9302 str r3, [sp, #8]
  10875. 8005618: f10b 0108 add.w r1, fp, #8
  10876. 800561c: f102 0308 add.w r3, r2, #8
  10877. 8005620: 1c66 adds r6, r4, #1
  10878. 8005622: 910a str r1, [sp, #40] ; 0x28
  10879. 8005624: 2500 movs r5, #0
  10880. 8005626: 930d str r3, [sp, #52] ; 0x34
  10881. 8005628: 9b02 ldr r3, [sp, #8]
  10882. 800562a: 42b3 cmp r3, r6
  10883. 800562c: da04 bge.n 8005638 <__kernel_rem_pio2+0x398>
  10884. 800562e: 461c mov r4, r3
  10885. 8005630: e6a6 b.n 8005380 <__kernel_rem_pio2+0xe0>
  10886. 8005632: 9a0c ldr r2, [sp, #48] ; 0x30
  10887. 8005634: 2301 movs r3, #1
  10888. 8005636: e7e3 b.n 8005600 <__kernel_rem_pio2+0x360>
  10889. 8005638: 9b06 ldr r3, [sp, #24]
  10890. 800563a: 18ef adds r7, r5, r3
  10891. 800563c: ab22 add r3, sp, #136 ; 0x88
  10892. 800563e: 441f add r7, r3
  10893. 8005640: 9b0b ldr r3, [sp, #44] ; 0x2c
  10894. 8005642: f853 0026 ldr.w r0, [r3, r6, lsl #2]
  10895. 8005646: f7fa ff21 bl 800048c <__aeabi_i2d>
  10896. 800564a: 9b09 ldr r3, [sp, #36] ; 0x24
  10897. 800564c: 461c mov r4, r3
  10898. 800564e: 9b0d ldr r3, [sp, #52] ; 0x34
  10899. 8005650: e9c7 0100 strd r0, r1, [r7]
  10900. 8005654: eb03 0b05 add.w fp, r3, r5
  10901. 8005658: 2700 movs r7, #0
  10902. 800565a: f04f 0800 mov.w r8, #0
  10903. 800565e: f04f 0900 mov.w r9, #0
  10904. 8005662: 9b07 ldr r3, [sp, #28]
  10905. 8005664: 429f cmp r7, r3
  10906. 8005666: dd08 ble.n 800567a <__kernel_rem_pio2+0x3da>
  10907. 8005668: 9b0a ldr r3, [sp, #40] ; 0x28
  10908. 800566a: aa72 add r2, sp, #456 ; 0x1c8
  10909. 800566c: 18eb adds r3, r5, r3
  10910. 800566e: 4413 add r3, r2
  10911. 8005670: e9c3 8902 strd r8, r9, [r3, #8]
  10912. 8005674: 3601 adds r6, #1
  10913. 8005676: 3508 adds r5, #8
  10914. 8005678: e7d6 b.n 8005628 <__kernel_rem_pio2+0x388>
  10915. 800567a: e97b 2302 ldrd r2, r3, [fp, #-8]!
  10916. 800567e: e8f4 0102 ldrd r0, r1, [r4], #8
  10917. 8005682: f7fa ff6d bl 8000560 <__aeabi_dmul>
  10918. 8005686: 4602 mov r2, r0
  10919. 8005688: 460b mov r3, r1
  10920. 800568a: 4640 mov r0, r8
  10921. 800568c: 4649 mov r1, r9
  10922. 800568e: f7fa fdb1 bl 80001f4 <__adddf3>
  10923. 8005692: 3701 adds r7, #1
  10924. 8005694: 4680 mov r8, r0
  10925. 8005696: 4689 mov r9, r1
  10926. 8005698: e7e3 b.n 8005662 <__kernel_rem_pio2+0x3c2>
  10927. 800569a: 3d01 subs r5, #1
  10928. 800569c: e741 b.n 8005522 <__kernel_rem_pio2+0x282>
  10929. 800569e: f1ca 0000 rsb r0, sl, #0
  10930. 80056a2: ec47 6b10 vmov d0, r6, r7
  10931. 80056a6: f000 fbd7 bl 8005e58 <scalbn>
  10932. 80056aa: ec57 6b10 vmov r6, r7, d0
  10933. 80056ae: 2200 movs r2, #0
  10934. 80056b0: 4b99 ldr r3, [pc, #612] ; (8005918 <__kernel_rem_pio2+0x678>)
  10935. 80056b2: ee10 0a10 vmov r0, s0
  10936. 80056b6: 4639 mov r1, r7
  10937. 80056b8: f7fb f9d8 bl 8000a6c <__aeabi_dcmpge>
  10938. 80056bc: b1f8 cbz r0, 80056fe <__kernel_rem_pio2+0x45e>
  10939. 80056be: 2200 movs r2, #0
  10940. 80056c0: 4b96 ldr r3, [pc, #600] ; (800591c <__kernel_rem_pio2+0x67c>)
  10941. 80056c2: 4630 mov r0, r6
  10942. 80056c4: 4639 mov r1, r7
  10943. 80056c6: f7fa ff4b bl 8000560 <__aeabi_dmul>
  10944. 80056ca: f7fb f9f9 bl 8000ac0 <__aeabi_d2iz>
  10945. 80056ce: 4680 mov r8, r0
  10946. 80056d0: f7fa fedc bl 800048c <__aeabi_i2d>
  10947. 80056d4: 2200 movs r2, #0
  10948. 80056d6: 4b90 ldr r3, [pc, #576] ; (8005918 <__kernel_rem_pio2+0x678>)
  10949. 80056d8: f7fa ff42 bl 8000560 <__aeabi_dmul>
  10950. 80056dc: 460b mov r3, r1
  10951. 80056de: 4602 mov r2, r0
  10952. 80056e0: 4639 mov r1, r7
  10953. 80056e2: 4630 mov r0, r6
  10954. 80056e4: f7fa fd84 bl 80001f0 <__aeabi_dsub>
  10955. 80056e8: f7fb f9ea bl 8000ac0 <__aeabi_d2iz>
  10956. 80056ec: 1c65 adds r5, r4, #1
  10957. 80056ee: ab0e add r3, sp, #56 ; 0x38
  10958. 80056f0: f10a 0a18 add.w sl, sl, #24
  10959. 80056f4: f843 0024 str.w r0, [r3, r4, lsl #2]
  10960. 80056f8: f843 8025 str.w r8, [r3, r5, lsl #2]
  10961. 80056fc: e719 b.n 8005532 <__kernel_rem_pio2+0x292>
  10962. 80056fe: 4630 mov r0, r6
  10963. 8005700: 4639 mov r1, r7
  10964. 8005702: f7fb f9dd bl 8000ac0 <__aeabi_d2iz>
  10965. 8005706: ab0e add r3, sp, #56 ; 0x38
  10966. 8005708: 4625 mov r5, r4
  10967. 800570a: f843 0024 str.w r0, [r3, r4, lsl #2]
  10968. 800570e: e710 b.n 8005532 <__kernel_rem_pio2+0x292>
  10969. 8005710: ab0e add r3, sp, #56 ; 0x38
  10970. 8005712: f853 0027 ldr.w r0, [r3, r7, lsl #2]
  10971. 8005716: f7fa feb9 bl 800048c <__aeabi_i2d>
  10972. 800571a: 4642 mov r2, r8
  10973. 800571c: 464b mov r3, r9
  10974. 800571e: f7fa ff1f bl 8000560 <__aeabi_dmul>
  10975. 8005722: 2200 movs r2, #0
  10976. 8005724: e96a 0102 strd r0, r1, [sl, #-8]!
  10977. 8005728: 4b7c ldr r3, [pc, #496] ; (800591c <__kernel_rem_pio2+0x67c>)
  10978. 800572a: 4640 mov r0, r8
  10979. 800572c: 4649 mov r1, r9
  10980. 800572e: f7fa ff17 bl 8000560 <__aeabi_dmul>
  10981. 8005732: 3f01 subs r7, #1
  10982. 8005734: 4680 mov r8, r0
  10983. 8005736: 4689 mov r9, r1
  10984. 8005738: e708 b.n 800554c <__kernel_rem_pio2+0x2ac>
  10985. 800573a: eb06 03c7 add.w r3, r6, r7, lsl #3
  10986. 800573e: e9d3 2300 ldrd r2, r3, [r3]
  10987. 8005742: e8fb 0102 ldrd r0, r1, [fp], #8
  10988. 8005746: f7fa ff0b bl 8000560 <__aeabi_dmul>
  10989. 800574a: 4602 mov r2, r0
  10990. 800574c: 460b mov r3, r1
  10991. 800574e: 4640 mov r0, r8
  10992. 8005750: 4649 mov r1, r9
  10993. 8005752: f7fa fd4f bl 80001f4 <__adddf3>
  10994. 8005756: 3701 adds r7, #1
  10995. 8005758: 4680 mov r8, r0
  10996. 800575a: 4689 mov r9, r1
  10997. 800575c: 9b04 ldr r3, [sp, #16]
  10998. 800575e: 429f cmp r7, r3
  10999. 8005760: dc01 bgt.n 8005766 <__kernel_rem_pio2+0x4c6>
  11000. 8005762: 45ba cmp sl, r7
  11001. 8005764: dae9 bge.n 800573a <__kernel_rem_pio2+0x49a>
  11002. 8005766: ab4a add r3, sp, #296 ; 0x128
  11003. 8005768: eb03 03ca add.w r3, r3, sl, lsl #3
  11004. 800576c: e9c3 8900 strd r8, r9, [r3]
  11005. 8005770: f10a 0a01 add.w sl, sl, #1
  11006. 8005774: 3e08 subs r6, #8
  11007. 8005776: e6f0 b.n 800555a <__kernel_rem_pio2+0x2ba>
  11008. 8005778: 9ba6 ldr r3, [sp, #664] ; 0x298
  11009. 800577a: 2b03 cmp r3, #3
  11010. 800577c: d85b bhi.n 8005836 <__kernel_rem_pio2+0x596>
  11011. 800577e: e8df f003 tbb [pc, r3]
  11012. 8005782: 264a .short 0x264a
  11013. 8005784: 0226 .short 0x0226
  11014. 8005786: ab9a add r3, sp, #616 ; 0x268
  11015. 8005788: 441c add r4, r3
  11016. 800578a: f5a4 749c sub.w r4, r4, #312 ; 0x138
  11017. 800578e: 46a2 mov sl, r4
  11018. 8005790: 46ab mov fp, r5
  11019. 8005792: f1bb 0f00 cmp.w fp, #0
  11020. 8005796: dc6c bgt.n 8005872 <__kernel_rem_pio2+0x5d2>
  11021. 8005798: 46a2 mov sl, r4
  11022. 800579a: 46ab mov fp, r5
  11023. 800579c: f1bb 0f01 cmp.w fp, #1
  11024. 80057a0: f300 8086 bgt.w 80058b0 <__kernel_rem_pio2+0x610>
  11025. 80057a4: 2000 movs r0, #0
  11026. 80057a6: 2100 movs r1, #0
  11027. 80057a8: 2d01 cmp r5, #1
  11028. 80057aa: f300 80a0 bgt.w 80058ee <__kernel_rem_pio2+0x64e>
  11029. 80057ae: 9b02 ldr r3, [sp, #8]
  11030. 80057b0: e9dd 784a ldrd r7, r8, [sp, #296] ; 0x128
  11031. 80057b4: e9dd 564c ldrd r5, r6, [sp, #304] ; 0x130
  11032. 80057b8: 2b00 cmp r3, #0
  11033. 80057ba: f040 809e bne.w 80058fa <__kernel_rem_pio2+0x65a>
  11034. 80057be: 9b01 ldr r3, [sp, #4]
  11035. 80057c0: e9c3 7800 strd r7, r8, [r3]
  11036. 80057c4: e9c3 5602 strd r5, r6, [r3, #8]
  11037. 80057c8: e9c3 0104 strd r0, r1, [r3, #16]
  11038. 80057cc: e033 b.n 8005836 <__kernel_rem_pio2+0x596>
  11039. 80057ce: 3408 adds r4, #8
  11040. 80057d0: ab4a add r3, sp, #296 ; 0x128
  11041. 80057d2: 441c add r4, r3
  11042. 80057d4: 462e mov r6, r5
  11043. 80057d6: 2000 movs r0, #0
  11044. 80057d8: 2100 movs r1, #0
  11045. 80057da: 2e00 cmp r6, #0
  11046. 80057dc: da3a bge.n 8005854 <__kernel_rem_pio2+0x5b4>
  11047. 80057de: 9b02 ldr r3, [sp, #8]
  11048. 80057e0: 2b00 cmp r3, #0
  11049. 80057e2: d03d beq.n 8005860 <__kernel_rem_pio2+0x5c0>
  11050. 80057e4: 4602 mov r2, r0
  11051. 80057e6: f101 4300 add.w r3, r1, #2147483648 ; 0x80000000
  11052. 80057ea: 9c01 ldr r4, [sp, #4]
  11053. 80057ec: e9c4 2300 strd r2, r3, [r4]
  11054. 80057f0: 4602 mov r2, r0
  11055. 80057f2: 460b mov r3, r1
  11056. 80057f4: e9dd 014a ldrd r0, r1, [sp, #296] ; 0x128
  11057. 80057f8: f7fa fcfa bl 80001f0 <__aeabi_dsub>
  11058. 80057fc: ae4c add r6, sp, #304 ; 0x130
  11059. 80057fe: 2401 movs r4, #1
  11060. 8005800: 42a5 cmp r5, r4
  11061. 8005802: da30 bge.n 8005866 <__kernel_rem_pio2+0x5c6>
  11062. 8005804: 9b02 ldr r3, [sp, #8]
  11063. 8005806: b113 cbz r3, 800580e <__kernel_rem_pio2+0x56e>
  11064. 8005808: f101 4300 add.w r3, r1, #2147483648 ; 0x80000000
  11065. 800580c: 4619 mov r1, r3
  11066. 800580e: 9b01 ldr r3, [sp, #4]
  11067. 8005810: e9c3 0102 strd r0, r1, [r3, #8]
  11068. 8005814: e00f b.n 8005836 <__kernel_rem_pio2+0x596>
  11069. 8005816: ab9a add r3, sp, #616 ; 0x268
  11070. 8005818: 441c add r4, r3
  11071. 800581a: f5a4 749c sub.w r4, r4, #312 ; 0x138
  11072. 800581e: 2000 movs r0, #0
  11073. 8005820: 2100 movs r1, #0
  11074. 8005822: 2d00 cmp r5, #0
  11075. 8005824: da10 bge.n 8005848 <__kernel_rem_pio2+0x5a8>
  11076. 8005826: 9b02 ldr r3, [sp, #8]
  11077. 8005828: b113 cbz r3, 8005830 <__kernel_rem_pio2+0x590>
  11078. 800582a: f101 4300 add.w r3, r1, #2147483648 ; 0x80000000
  11079. 800582e: 4619 mov r1, r3
  11080. 8005830: 9b01 ldr r3, [sp, #4]
  11081. 8005832: e9c3 0100 strd r0, r1, [r3]
  11082. 8005836: 9b06 ldr r3, [sp, #24]
  11083. 8005838: f003 0007 and.w r0, r3, #7
  11084. 800583c: f50d 7d1b add.w sp, sp, #620 ; 0x26c
  11085. 8005840: ecbd 8b02 vpop {d8}
  11086. 8005844: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
  11087. 8005848: e974 2302 ldrd r2, r3, [r4, #-8]!
  11088. 800584c: f7fa fcd2 bl 80001f4 <__adddf3>
  11089. 8005850: 3d01 subs r5, #1
  11090. 8005852: e7e6 b.n 8005822 <__kernel_rem_pio2+0x582>
  11091. 8005854: e974 2302 ldrd r2, r3, [r4, #-8]!
  11092. 8005858: f7fa fccc bl 80001f4 <__adddf3>
  11093. 800585c: 3e01 subs r6, #1
  11094. 800585e: e7bc b.n 80057da <__kernel_rem_pio2+0x53a>
  11095. 8005860: 4602 mov r2, r0
  11096. 8005862: 460b mov r3, r1
  11097. 8005864: e7c1 b.n 80057ea <__kernel_rem_pio2+0x54a>
  11098. 8005866: e8f6 2302 ldrd r2, r3, [r6], #8
  11099. 800586a: f7fa fcc3 bl 80001f4 <__adddf3>
  11100. 800586e: 3401 adds r4, #1
  11101. 8005870: e7c6 b.n 8005800 <__kernel_rem_pio2+0x560>
  11102. 8005872: e95a 8904 ldrd r8, r9, [sl, #-16]
  11103. 8005876: ed3a 7b02 vldmdb sl!, {d7}
  11104. 800587a: 4640 mov r0, r8
  11105. 800587c: ec53 2b17 vmov r2, r3, d7
  11106. 8005880: 4649 mov r1, r9
  11107. 8005882: ed8d 7b04 vstr d7, [sp, #16]
  11108. 8005886: f7fa fcb5 bl 80001f4 <__adddf3>
  11109. 800588a: 4602 mov r2, r0
  11110. 800588c: 460b mov r3, r1
  11111. 800588e: 4606 mov r6, r0
  11112. 8005890: 460f mov r7, r1
  11113. 8005892: 4640 mov r0, r8
  11114. 8005894: 4649 mov r1, r9
  11115. 8005896: f7fa fcab bl 80001f0 <__aeabi_dsub>
  11116. 800589a: e9dd 2304 ldrd r2, r3, [sp, #16]
  11117. 800589e: f7fa fca9 bl 80001f4 <__adddf3>
  11118. 80058a2: f10b 3bff add.w fp, fp, #4294967295
  11119. 80058a6: e9ca 0100 strd r0, r1, [sl]
  11120. 80058aa: e94a 6702 strd r6, r7, [sl, #-8]
  11121. 80058ae: e770 b.n 8005792 <__kernel_rem_pio2+0x4f2>
  11122. 80058b0: e95a 6704 ldrd r6, r7, [sl, #-16]
  11123. 80058b4: ed3a 7b02 vldmdb sl!, {d7}
  11124. 80058b8: 4630 mov r0, r6
  11125. 80058ba: ec53 2b17 vmov r2, r3, d7
  11126. 80058be: 4639 mov r1, r7
  11127. 80058c0: ed8d 7b04 vstr d7, [sp, #16]
  11128. 80058c4: f7fa fc96 bl 80001f4 <__adddf3>
  11129. 80058c8: 4602 mov r2, r0
  11130. 80058ca: 460b mov r3, r1
  11131. 80058cc: 4680 mov r8, r0
  11132. 80058ce: 4689 mov r9, r1
  11133. 80058d0: 4630 mov r0, r6
  11134. 80058d2: 4639 mov r1, r7
  11135. 80058d4: f7fa fc8c bl 80001f0 <__aeabi_dsub>
  11136. 80058d8: e9dd 2304 ldrd r2, r3, [sp, #16]
  11137. 80058dc: f7fa fc8a bl 80001f4 <__adddf3>
  11138. 80058e0: f10b 3bff add.w fp, fp, #4294967295
  11139. 80058e4: e9ca 0100 strd r0, r1, [sl]
  11140. 80058e8: e94a 8902 strd r8, r9, [sl, #-8]
  11141. 80058ec: e756 b.n 800579c <__kernel_rem_pio2+0x4fc>
  11142. 80058ee: e974 2302 ldrd r2, r3, [r4, #-8]!
  11143. 80058f2: f7fa fc7f bl 80001f4 <__adddf3>
  11144. 80058f6: 3d01 subs r5, #1
  11145. 80058f8: e756 b.n 80057a8 <__kernel_rem_pio2+0x508>
  11146. 80058fa: 9b01 ldr r3, [sp, #4]
  11147. 80058fc: 9a01 ldr r2, [sp, #4]
  11148. 80058fe: 601f str r7, [r3, #0]
  11149. 8005900: f108 4400 add.w r4, r8, #2147483648 ; 0x80000000
  11150. 8005904: 605c str r4, [r3, #4]
  11151. 8005906: 609d str r5, [r3, #8]
  11152. 8005908: f106 4300 add.w r3, r6, #2147483648 ; 0x80000000
  11153. 800590c: 60d3 str r3, [r2, #12]
  11154. 800590e: f101 4300 add.w r3, r1, #2147483648 ; 0x80000000
  11155. 8005912: 6110 str r0, [r2, #16]
  11156. 8005914: 6153 str r3, [r2, #20]
  11157. 8005916: e78e b.n 8005836 <__kernel_rem_pio2+0x596>
  11158. 8005918: 41700000 .word 0x41700000
  11159. 800591c: 3e700000 .word 0x3e700000
  11160. 08005920 <__kernel_sin>:
  11161. 8005920: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
  11162. 8005924: ec55 4b10 vmov r4, r5, d0
  11163. 8005928: b085 sub sp, #20
  11164. 800592a: f025 4300 bic.w r3, r5, #2147483648 ; 0x80000000
  11165. 800592e: f1b3 5f79 cmp.w r3, #1044381696 ; 0x3e400000
  11166. 8005932: ed8d 1b00 vstr d1, [sp]
  11167. 8005936: 9002 str r0, [sp, #8]
  11168. 8005938: da06 bge.n 8005948 <__kernel_sin+0x28>
  11169. 800593a: ee10 0a10 vmov r0, s0
  11170. 800593e: 4629 mov r1, r5
  11171. 8005940: f7fb f8be bl 8000ac0 <__aeabi_d2iz>
  11172. 8005944: 2800 cmp r0, #0
  11173. 8005946: d051 beq.n 80059ec <__kernel_sin+0xcc>
  11174. 8005948: 4622 mov r2, r4
  11175. 800594a: 462b mov r3, r5
  11176. 800594c: 4620 mov r0, r4
  11177. 800594e: 4629 mov r1, r5
  11178. 8005950: f7fa fe06 bl 8000560 <__aeabi_dmul>
  11179. 8005954: 4682 mov sl, r0
  11180. 8005956: 468b mov fp, r1
  11181. 8005958: 4602 mov r2, r0
  11182. 800595a: 460b mov r3, r1
  11183. 800595c: 4620 mov r0, r4
  11184. 800595e: 4629 mov r1, r5
  11185. 8005960: f7fa fdfe bl 8000560 <__aeabi_dmul>
  11186. 8005964: a341 add r3, pc, #260 ; (adr r3, 8005a6c <__kernel_sin+0x14c>)
  11187. 8005966: e9d3 2300 ldrd r2, r3, [r3]
  11188. 800596a: 4680 mov r8, r0
  11189. 800596c: 4689 mov r9, r1
  11190. 800596e: 4650 mov r0, sl
  11191. 8005970: 4659 mov r1, fp
  11192. 8005972: f7fa fdf5 bl 8000560 <__aeabi_dmul>
  11193. 8005976: a33f add r3, pc, #252 ; (adr r3, 8005a74 <__kernel_sin+0x154>)
  11194. 8005978: e9d3 2300 ldrd r2, r3, [r3]
  11195. 800597c: f7fa fc38 bl 80001f0 <__aeabi_dsub>
  11196. 8005980: 4652 mov r2, sl
  11197. 8005982: 465b mov r3, fp
  11198. 8005984: f7fa fdec bl 8000560 <__aeabi_dmul>
  11199. 8005988: a33c add r3, pc, #240 ; (adr r3, 8005a7c <__kernel_sin+0x15c>)
  11200. 800598a: e9d3 2300 ldrd r2, r3, [r3]
  11201. 800598e: f7fa fc31 bl 80001f4 <__adddf3>
  11202. 8005992: 4652 mov r2, sl
  11203. 8005994: 465b mov r3, fp
  11204. 8005996: f7fa fde3 bl 8000560 <__aeabi_dmul>
  11205. 800599a: a33a add r3, pc, #232 ; (adr r3, 8005a84 <__kernel_sin+0x164>)
  11206. 800599c: e9d3 2300 ldrd r2, r3, [r3]
  11207. 80059a0: f7fa fc26 bl 80001f0 <__aeabi_dsub>
  11208. 80059a4: 4652 mov r2, sl
  11209. 80059a6: 465b mov r3, fp
  11210. 80059a8: f7fa fdda bl 8000560 <__aeabi_dmul>
  11211. 80059ac: a337 add r3, pc, #220 ; (adr r3, 8005a8c <__kernel_sin+0x16c>)
  11212. 80059ae: e9d3 2300 ldrd r2, r3, [r3]
  11213. 80059b2: f7fa fc1f bl 80001f4 <__adddf3>
  11214. 80059b6: 9b02 ldr r3, [sp, #8]
  11215. 80059b8: 4606 mov r6, r0
  11216. 80059ba: 460f mov r7, r1
  11217. 80059bc: b9db cbnz r3, 80059f6 <__kernel_sin+0xd6>
  11218. 80059be: 4602 mov r2, r0
  11219. 80059c0: 460b mov r3, r1
  11220. 80059c2: 4650 mov r0, sl
  11221. 80059c4: 4659 mov r1, fp
  11222. 80059c6: f7fa fdcb bl 8000560 <__aeabi_dmul>
  11223. 80059ca: a325 add r3, pc, #148 ; (adr r3, 8005a60 <__kernel_sin+0x140>)
  11224. 80059cc: e9d3 2300 ldrd r2, r3, [r3]
  11225. 80059d0: f7fa fc0e bl 80001f0 <__aeabi_dsub>
  11226. 80059d4: 4642 mov r2, r8
  11227. 80059d6: 464b mov r3, r9
  11228. 80059d8: f7fa fdc2 bl 8000560 <__aeabi_dmul>
  11229. 80059dc: 4602 mov r2, r0
  11230. 80059de: 460b mov r3, r1
  11231. 80059e0: 4620 mov r0, r4
  11232. 80059e2: 4629 mov r1, r5
  11233. 80059e4: f7fa fc06 bl 80001f4 <__adddf3>
  11234. 80059e8: 4604 mov r4, r0
  11235. 80059ea: 460d mov r5, r1
  11236. 80059ec: ec45 4b10 vmov d0, r4, r5
  11237. 80059f0: b005 add sp, #20
  11238. 80059f2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
  11239. 80059f6: 2200 movs r2, #0
  11240. 80059f8: 4b1b ldr r3, [pc, #108] ; (8005a68 <__kernel_sin+0x148>)
  11241. 80059fa: e9dd 0100 ldrd r0, r1, [sp]
  11242. 80059fe: f7fa fdaf bl 8000560 <__aeabi_dmul>
  11243. 8005a02: 4632 mov r2, r6
  11244. 8005a04: e9cd 0102 strd r0, r1, [sp, #8]
  11245. 8005a08: 463b mov r3, r7
  11246. 8005a0a: 4640 mov r0, r8
  11247. 8005a0c: 4649 mov r1, r9
  11248. 8005a0e: f7fa fda7 bl 8000560 <__aeabi_dmul>
  11249. 8005a12: 4602 mov r2, r0
  11250. 8005a14: 460b mov r3, r1
  11251. 8005a16: e9dd 0102 ldrd r0, r1, [sp, #8]
  11252. 8005a1a: f7fa fbe9 bl 80001f0 <__aeabi_dsub>
  11253. 8005a1e: 4652 mov r2, sl
  11254. 8005a20: 465b mov r3, fp
  11255. 8005a22: f7fa fd9d bl 8000560 <__aeabi_dmul>
  11256. 8005a26: e9dd 2300 ldrd r2, r3, [sp]
  11257. 8005a2a: f7fa fbe1 bl 80001f0 <__aeabi_dsub>
  11258. 8005a2e: a30c add r3, pc, #48 ; (adr r3, 8005a60 <__kernel_sin+0x140>)
  11259. 8005a30: e9d3 2300 ldrd r2, r3, [r3]
  11260. 8005a34: 4606 mov r6, r0
  11261. 8005a36: 460f mov r7, r1
  11262. 8005a38: 4640 mov r0, r8
  11263. 8005a3a: 4649 mov r1, r9
  11264. 8005a3c: f7fa fd90 bl 8000560 <__aeabi_dmul>
  11265. 8005a40: 4602 mov r2, r0
  11266. 8005a42: 460b mov r3, r1
  11267. 8005a44: 4630 mov r0, r6
  11268. 8005a46: 4639 mov r1, r7
  11269. 8005a48: f7fa fbd4 bl 80001f4 <__adddf3>
  11270. 8005a4c: 4602 mov r2, r0
  11271. 8005a4e: 460b mov r3, r1
  11272. 8005a50: 4620 mov r0, r4
  11273. 8005a52: 4629 mov r1, r5
  11274. 8005a54: f7fa fbcc bl 80001f0 <__aeabi_dsub>
  11275. 8005a58: e7c6 b.n 80059e8 <__kernel_sin+0xc8>
  11276. 8005a5a: bf00 nop
  11277. 8005a5c: f3af 8000 nop.w
  11278. 8005a60: 55555549 .word 0x55555549
  11279. 8005a64: 3fc55555 .word 0x3fc55555
  11280. 8005a68: 3fe00000 .word 0x3fe00000
  11281. 8005a6c: 5acfd57c .word 0x5acfd57c
  11282. 8005a70: 3de5d93a .word 0x3de5d93a
  11283. 8005a74: 8a2b9ceb .word 0x8a2b9ceb
  11284. 8005a78: 3e5ae5e6 .word 0x3e5ae5e6
  11285. 8005a7c: 57b1fe7d .word 0x57b1fe7d
  11286. 8005a80: 3ec71de3 .word 0x3ec71de3
  11287. 8005a84: 19c161d5 .word 0x19c161d5
  11288. 8005a88: 3f2a01a0 .word 0x3f2a01a0
  11289. 8005a8c: 1110f8a6 .word 0x1110f8a6
  11290. 8005a90: 3f811111 .word 0x3f811111
  11291. 8005a94: 00000000 .word 0x00000000
  11292. 08005a98 <__kernel_tan>:
  11293. 8005a98: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
  11294. 8005a9c: ec5b ab10 vmov sl, fp, d0
  11295. 8005aa0: 4bbf ldr r3, [pc, #764] ; (8005da0 <__kernel_tan+0x308>)
  11296. 8005aa2: b089 sub sp, #36 ; 0x24
  11297. 8005aa4: f02b 4700 bic.w r7, fp, #2147483648 ; 0x80000000
  11298. 8005aa8: 429f cmp r7, r3
  11299. 8005aaa: ec59 8b11 vmov r8, r9, d1
  11300. 8005aae: 4606 mov r6, r0
  11301. 8005ab0: f8cd b008 str.w fp, [sp, #8]
  11302. 8005ab4: dc22 bgt.n 8005afc <__kernel_tan+0x64>
  11303. 8005ab6: ee10 0a10 vmov r0, s0
  11304. 8005aba: 4659 mov r1, fp
  11305. 8005abc: f7fb f800 bl 8000ac0 <__aeabi_d2iz>
  11306. 8005ac0: 2800 cmp r0, #0
  11307. 8005ac2: d145 bne.n 8005b50 <__kernel_tan+0xb8>
  11308. 8005ac4: 1c73 adds r3, r6, #1
  11309. 8005ac6: 4652 mov r2, sl
  11310. 8005ac8: 4313 orrs r3, r2
  11311. 8005aca: 433b orrs r3, r7
  11312. 8005acc: d110 bne.n 8005af0 <__kernel_tan+0x58>
  11313. 8005ace: ec4b ab10 vmov d0, sl, fp
  11314. 8005ad2: f000 f9ad bl 8005e30 <fabs>
  11315. 8005ad6: 49b3 ldr r1, [pc, #716] ; (8005da4 <__kernel_tan+0x30c>)
  11316. 8005ad8: ec53 2b10 vmov r2, r3, d0
  11317. 8005adc: 2000 movs r0, #0
  11318. 8005ade: f7fa fe69 bl 80007b4 <__aeabi_ddiv>
  11319. 8005ae2: 4682 mov sl, r0
  11320. 8005ae4: 468b mov fp, r1
  11321. 8005ae6: ec4b ab10 vmov d0, sl, fp
  11322. 8005aea: b009 add sp, #36 ; 0x24
  11323. 8005aec: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
  11324. 8005af0: 2e01 cmp r6, #1
  11325. 8005af2: d0f8 beq.n 8005ae6 <__kernel_tan+0x4e>
  11326. 8005af4: 465b mov r3, fp
  11327. 8005af6: 2000 movs r0, #0
  11328. 8005af8: 49ab ldr r1, [pc, #684] ; (8005da8 <__kernel_tan+0x310>)
  11329. 8005afa: e7f0 b.n 8005ade <__kernel_tan+0x46>
  11330. 8005afc: 4bab ldr r3, [pc, #684] ; (8005dac <__kernel_tan+0x314>)
  11331. 8005afe: 429f cmp r7, r3
  11332. 8005b00: dd26 ble.n 8005b50 <__kernel_tan+0xb8>
  11333. 8005b02: 9b02 ldr r3, [sp, #8]
  11334. 8005b04: 2b00 cmp r3, #0
  11335. 8005b06: da09 bge.n 8005b1c <__kernel_tan+0x84>
  11336. 8005b08: f10b 4300 add.w r3, fp, #2147483648 ; 0x80000000
  11337. 8005b0c: 469b mov fp, r3
  11338. 8005b0e: ee10 aa10 vmov sl, s0
  11339. 8005b12: f109 4300 add.w r3, r9, #2147483648 ; 0x80000000
  11340. 8005b16: ee11 8a10 vmov r8, s2
  11341. 8005b1a: 4699 mov r9, r3
  11342. 8005b1c: 4652 mov r2, sl
  11343. 8005b1e: 465b mov r3, fp
  11344. 8005b20: a181 add r1, pc, #516 ; (adr r1, 8005d28 <__kernel_tan+0x290>)
  11345. 8005b22: e9d1 0100 ldrd r0, r1, [r1]
  11346. 8005b26: f7fa fb63 bl 80001f0 <__aeabi_dsub>
  11347. 8005b2a: 4642 mov r2, r8
  11348. 8005b2c: 464b mov r3, r9
  11349. 8005b2e: 4604 mov r4, r0
  11350. 8005b30: 460d mov r5, r1
  11351. 8005b32: a17f add r1, pc, #508 ; (adr r1, 8005d30 <__kernel_tan+0x298>)
  11352. 8005b34: e9d1 0100 ldrd r0, r1, [r1]
  11353. 8005b38: f7fa fb5a bl 80001f0 <__aeabi_dsub>
  11354. 8005b3c: 4622 mov r2, r4
  11355. 8005b3e: 462b mov r3, r5
  11356. 8005b40: f7fa fb58 bl 80001f4 <__adddf3>
  11357. 8005b44: f04f 0800 mov.w r8, #0
  11358. 8005b48: 4682 mov sl, r0
  11359. 8005b4a: 468b mov fp, r1
  11360. 8005b4c: f04f 0900 mov.w r9, #0
  11361. 8005b50: 4652 mov r2, sl
  11362. 8005b52: 465b mov r3, fp
  11363. 8005b54: 4650 mov r0, sl
  11364. 8005b56: 4659 mov r1, fp
  11365. 8005b58: f7fa fd02 bl 8000560 <__aeabi_dmul>
  11366. 8005b5c: 4602 mov r2, r0
  11367. 8005b5e: 460b mov r3, r1
  11368. 8005b60: e9cd 0100 strd r0, r1, [sp]
  11369. 8005b64: f7fa fcfc bl 8000560 <__aeabi_dmul>
  11370. 8005b68: e9dd 2300 ldrd r2, r3, [sp]
  11371. 8005b6c: 4604 mov r4, r0
  11372. 8005b6e: 460d mov r5, r1
  11373. 8005b70: 4650 mov r0, sl
  11374. 8005b72: 4659 mov r1, fp
  11375. 8005b74: f7fa fcf4 bl 8000560 <__aeabi_dmul>
  11376. 8005b78: a36f add r3, pc, #444 ; (adr r3, 8005d38 <__kernel_tan+0x2a0>)
  11377. 8005b7a: e9d3 2300 ldrd r2, r3, [r3]
  11378. 8005b7e: e9cd 0104 strd r0, r1, [sp, #16]
  11379. 8005b82: 4620 mov r0, r4
  11380. 8005b84: 4629 mov r1, r5
  11381. 8005b86: f7fa fceb bl 8000560 <__aeabi_dmul>
  11382. 8005b8a: a36d add r3, pc, #436 ; (adr r3, 8005d40 <__kernel_tan+0x2a8>)
  11383. 8005b8c: e9d3 2300 ldrd r2, r3, [r3]
  11384. 8005b90: f7fa fb30 bl 80001f4 <__adddf3>
  11385. 8005b94: 4622 mov r2, r4
  11386. 8005b96: 462b mov r3, r5
  11387. 8005b98: f7fa fce2 bl 8000560 <__aeabi_dmul>
  11388. 8005b9c: a36a add r3, pc, #424 ; (adr r3, 8005d48 <__kernel_tan+0x2b0>)
  11389. 8005b9e: e9d3 2300 ldrd r2, r3, [r3]
  11390. 8005ba2: f7fa fb27 bl 80001f4 <__adddf3>
  11391. 8005ba6: 4622 mov r2, r4
  11392. 8005ba8: 462b mov r3, r5
  11393. 8005baa: f7fa fcd9 bl 8000560 <__aeabi_dmul>
  11394. 8005bae: a368 add r3, pc, #416 ; (adr r3, 8005d50 <__kernel_tan+0x2b8>)
  11395. 8005bb0: e9d3 2300 ldrd r2, r3, [r3]
  11396. 8005bb4: f7fa fb1e bl 80001f4 <__adddf3>
  11397. 8005bb8: 4622 mov r2, r4
  11398. 8005bba: 462b mov r3, r5
  11399. 8005bbc: f7fa fcd0 bl 8000560 <__aeabi_dmul>
  11400. 8005bc0: a365 add r3, pc, #404 ; (adr r3, 8005d58 <__kernel_tan+0x2c0>)
  11401. 8005bc2: e9d3 2300 ldrd r2, r3, [r3]
  11402. 8005bc6: f7fa fb15 bl 80001f4 <__adddf3>
  11403. 8005bca: 4622 mov r2, r4
  11404. 8005bcc: 462b mov r3, r5
  11405. 8005bce: f7fa fcc7 bl 8000560 <__aeabi_dmul>
  11406. 8005bd2: a363 add r3, pc, #396 ; (adr r3, 8005d60 <__kernel_tan+0x2c8>)
  11407. 8005bd4: e9d3 2300 ldrd r2, r3, [r3]
  11408. 8005bd8: f7fa fb0c bl 80001f4 <__adddf3>
  11409. 8005bdc: e9dd 2300 ldrd r2, r3, [sp]
  11410. 8005be0: f7fa fcbe bl 8000560 <__aeabi_dmul>
  11411. 8005be4: a360 add r3, pc, #384 ; (adr r3, 8005d68 <__kernel_tan+0x2d0>)
  11412. 8005be6: e9d3 2300 ldrd r2, r3, [r3]
  11413. 8005bea: e9cd 0106 strd r0, r1, [sp, #24]
  11414. 8005bee: 4620 mov r0, r4
  11415. 8005bf0: 4629 mov r1, r5
  11416. 8005bf2: f7fa fcb5 bl 8000560 <__aeabi_dmul>
  11417. 8005bf6: a35e add r3, pc, #376 ; (adr r3, 8005d70 <__kernel_tan+0x2d8>)
  11418. 8005bf8: e9d3 2300 ldrd r2, r3, [r3]
  11419. 8005bfc: f7fa fafa bl 80001f4 <__adddf3>
  11420. 8005c00: 4622 mov r2, r4
  11421. 8005c02: 462b mov r3, r5
  11422. 8005c04: f7fa fcac bl 8000560 <__aeabi_dmul>
  11423. 8005c08: a35b add r3, pc, #364 ; (adr r3, 8005d78 <__kernel_tan+0x2e0>)
  11424. 8005c0a: e9d3 2300 ldrd r2, r3, [r3]
  11425. 8005c0e: f7fa faf1 bl 80001f4 <__adddf3>
  11426. 8005c12: 4622 mov r2, r4
  11427. 8005c14: 462b mov r3, r5
  11428. 8005c16: f7fa fca3 bl 8000560 <__aeabi_dmul>
  11429. 8005c1a: a359 add r3, pc, #356 ; (adr r3, 8005d80 <__kernel_tan+0x2e8>)
  11430. 8005c1c: e9d3 2300 ldrd r2, r3, [r3]
  11431. 8005c20: f7fa fae8 bl 80001f4 <__adddf3>
  11432. 8005c24: 4622 mov r2, r4
  11433. 8005c26: 462b mov r3, r5
  11434. 8005c28: f7fa fc9a bl 8000560 <__aeabi_dmul>
  11435. 8005c2c: a356 add r3, pc, #344 ; (adr r3, 8005d88 <__kernel_tan+0x2f0>)
  11436. 8005c2e: e9d3 2300 ldrd r2, r3, [r3]
  11437. 8005c32: f7fa fadf bl 80001f4 <__adddf3>
  11438. 8005c36: 4622 mov r2, r4
  11439. 8005c38: 462b mov r3, r5
  11440. 8005c3a: f7fa fc91 bl 8000560 <__aeabi_dmul>
  11441. 8005c3e: a354 add r3, pc, #336 ; (adr r3, 8005d90 <__kernel_tan+0x2f8>)
  11442. 8005c40: e9d3 2300 ldrd r2, r3, [r3]
  11443. 8005c44: f7fa fad6 bl 80001f4 <__adddf3>
  11444. 8005c48: 4602 mov r2, r0
  11445. 8005c4a: 460b mov r3, r1
  11446. 8005c4c: e9dd 0106 ldrd r0, r1, [sp, #24]
  11447. 8005c50: f7fa fad0 bl 80001f4 <__adddf3>
  11448. 8005c54: e9dd 2304 ldrd r2, r3, [sp, #16]
  11449. 8005c58: f7fa fc82 bl 8000560 <__aeabi_dmul>
  11450. 8005c5c: 4642 mov r2, r8
  11451. 8005c5e: 464b mov r3, r9
  11452. 8005c60: f7fa fac8 bl 80001f4 <__adddf3>
  11453. 8005c64: e9dd 2300 ldrd r2, r3, [sp]
  11454. 8005c68: f7fa fc7a bl 8000560 <__aeabi_dmul>
  11455. 8005c6c: 4642 mov r2, r8
  11456. 8005c6e: 464b mov r3, r9
  11457. 8005c70: f7fa fac0 bl 80001f4 <__adddf3>
  11458. 8005c74: a348 add r3, pc, #288 ; (adr r3, 8005d98 <__kernel_tan+0x300>)
  11459. 8005c76: e9d3 2300 ldrd r2, r3, [r3]
  11460. 8005c7a: 4604 mov r4, r0
  11461. 8005c7c: 460d mov r5, r1
  11462. 8005c7e: e9dd 0104 ldrd r0, r1, [sp, #16]
  11463. 8005c82: f7fa fc6d bl 8000560 <__aeabi_dmul>
  11464. 8005c86: 4622 mov r2, r4
  11465. 8005c88: 462b mov r3, r5
  11466. 8005c8a: f7fa fab3 bl 80001f4 <__adddf3>
  11467. 8005c8e: e9cd 0100 strd r0, r1, [sp]
  11468. 8005c92: 460b mov r3, r1
  11469. 8005c94: 4602 mov r2, r0
  11470. 8005c96: 4659 mov r1, fp
  11471. 8005c98: 4650 mov r0, sl
  11472. 8005c9a: f7fa faab bl 80001f4 <__adddf3>
  11473. 8005c9e: 4b43 ldr r3, [pc, #268] ; (8005dac <__kernel_tan+0x314>)
  11474. 8005ca0: 429f cmp r7, r3
  11475. 8005ca2: 4604 mov r4, r0
  11476. 8005ca4: 460d mov r5, r1
  11477. 8005ca6: f340 8083 ble.w 8005db0 <__kernel_tan+0x318>
  11478. 8005caa: 4630 mov r0, r6
  11479. 8005cac: f7fa fbee bl 800048c <__aeabi_i2d>
  11480. 8005cb0: 4622 mov r2, r4
  11481. 8005cb2: 4680 mov r8, r0
  11482. 8005cb4: 4689 mov r9, r1
  11483. 8005cb6: 462b mov r3, r5
  11484. 8005cb8: 4620 mov r0, r4
  11485. 8005cba: 4629 mov r1, r5
  11486. 8005cbc: f7fa fc50 bl 8000560 <__aeabi_dmul>
  11487. 8005cc0: 4642 mov r2, r8
  11488. 8005cc2: 4606 mov r6, r0
  11489. 8005cc4: 460f mov r7, r1
  11490. 8005cc6: 464b mov r3, r9
  11491. 8005cc8: 4620 mov r0, r4
  11492. 8005cca: 4629 mov r1, r5
  11493. 8005ccc: f7fa fa92 bl 80001f4 <__adddf3>
  11494. 8005cd0: 4602 mov r2, r0
  11495. 8005cd2: 460b mov r3, r1
  11496. 8005cd4: 4630 mov r0, r6
  11497. 8005cd6: 4639 mov r1, r7
  11498. 8005cd8: f7fa fd6c bl 80007b4 <__aeabi_ddiv>
  11499. 8005cdc: e9dd 2300 ldrd r2, r3, [sp]
  11500. 8005ce0: f7fa fa86 bl 80001f0 <__aeabi_dsub>
  11501. 8005ce4: 4602 mov r2, r0
  11502. 8005ce6: 460b mov r3, r1
  11503. 8005ce8: 4650 mov r0, sl
  11504. 8005cea: 4659 mov r1, fp
  11505. 8005cec: f7fa fa80 bl 80001f0 <__aeabi_dsub>
  11506. 8005cf0: 4602 mov r2, r0
  11507. 8005cf2: 460b mov r3, r1
  11508. 8005cf4: f7fa fa7e bl 80001f4 <__adddf3>
  11509. 8005cf8: 4602 mov r2, r0
  11510. 8005cfa: 460b mov r3, r1
  11511. 8005cfc: 4640 mov r0, r8
  11512. 8005cfe: 4649 mov r1, r9
  11513. 8005d00: f7fa fa76 bl 80001f0 <__aeabi_dsub>
  11514. 8005d04: 9b02 ldr r3, [sp, #8]
  11515. 8005d06: 4604 mov r4, r0
  11516. 8005d08: 1798 asrs r0, r3, #30
  11517. 8005d0a: f000 0002 and.w r0, r0, #2
  11518. 8005d0e: f1c0 0001 rsb r0, r0, #1
  11519. 8005d12: 460d mov r5, r1
  11520. 8005d14: f7fa fbba bl 800048c <__aeabi_i2d>
  11521. 8005d18: 4602 mov r2, r0
  11522. 8005d1a: 460b mov r3, r1
  11523. 8005d1c: 4620 mov r0, r4
  11524. 8005d1e: 4629 mov r1, r5
  11525. 8005d20: f7fa fc1e bl 8000560 <__aeabi_dmul>
  11526. 8005d24: e6dd b.n 8005ae2 <__kernel_tan+0x4a>
  11527. 8005d26: bf00 nop
  11528. 8005d28: 54442d18 .word 0x54442d18
  11529. 8005d2c: 3fe921fb .word 0x3fe921fb
  11530. 8005d30: 33145c07 .word 0x33145c07
  11531. 8005d34: 3c81a626 .word 0x3c81a626
  11532. 8005d38: 74bf7ad4 .word 0x74bf7ad4
  11533. 8005d3c: 3efb2a70 .word 0x3efb2a70
  11534. 8005d40: 32f0a7e9 .word 0x32f0a7e9
  11535. 8005d44: 3f12b80f .word 0x3f12b80f
  11536. 8005d48: 1a8d1068 .word 0x1a8d1068
  11537. 8005d4c: 3f3026f7 .word 0x3f3026f7
  11538. 8005d50: fee08315 .word 0xfee08315
  11539. 8005d54: 3f57dbc8 .word 0x3f57dbc8
  11540. 8005d58: e96e8493 .word 0xe96e8493
  11541. 8005d5c: 3f8226e3 .word 0x3f8226e3
  11542. 8005d60: 1bb341fe .word 0x1bb341fe
  11543. 8005d64: 3faba1ba .word 0x3faba1ba
  11544. 8005d68: db605373 .word 0xdb605373
  11545. 8005d6c: bef375cb .word 0xbef375cb
  11546. 8005d70: a03792a6 .word 0xa03792a6
  11547. 8005d74: 3f147e88 .word 0x3f147e88
  11548. 8005d78: f2f26501 .word 0xf2f26501
  11549. 8005d7c: 3f4344d8 .word 0x3f4344d8
  11550. 8005d80: c9560328 .word 0xc9560328
  11551. 8005d84: 3f6d6d22 .word 0x3f6d6d22
  11552. 8005d88: 8406d637 .word 0x8406d637
  11553. 8005d8c: 3f9664f4 .word 0x3f9664f4
  11554. 8005d90: 1110fe7a .word 0x1110fe7a
  11555. 8005d94: 3fc11111 .word 0x3fc11111
  11556. 8005d98: 55555563 .word 0x55555563
  11557. 8005d9c: 3fd55555 .word 0x3fd55555
  11558. 8005da0: 3e2fffff .word 0x3e2fffff
  11559. 8005da4: 3ff00000 .word 0x3ff00000
  11560. 8005da8: bff00000 .word 0xbff00000
  11561. 8005dac: 3fe59427 .word 0x3fe59427
  11562. 8005db0: 2e01 cmp r6, #1
  11563. 8005db2: d036 beq.n 8005e22 <__kernel_tan+0x38a>
  11564. 8005db4: 460f mov r7, r1
  11565. 8005db6: 4602 mov r2, r0
  11566. 8005db8: 460b mov r3, r1
  11567. 8005dba: 2000 movs r0, #0
  11568. 8005dbc: 491a ldr r1, [pc, #104] ; (8005e28 <__kernel_tan+0x390>)
  11569. 8005dbe: f7fa fcf9 bl 80007b4 <__aeabi_ddiv>
  11570. 8005dc2: 2600 movs r6, #0
  11571. 8005dc4: e9cd 0102 strd r0, r1, [sp, #8]
  11572. 8005dc8: 4652 mov r2, sl
  11573. 8005dca: 465b mov r3, fp
  11574. 8005dcc: 4630 mov r0, r6
  11575. 8005dce: 4639 mov r1, r7
  11576. 8005dd0: f7fa fa0e bl 80001f0 <__aeabi_dsub>
  11577. 8005dd4: e9dd 4502 ldrd r4, r5, [sp, #8]
  11578. 8005dd8: 4602 mov r2, r0
  11579. 8005dda: 460b mov r3, r1
  11580. 8005ddc: e9dd 0100 ldrd r0, r1, [sp]
  11581. 8005de0: f7fa fa06 bl 80001f0 <__aeabi_dsub>
  11582. 8005de4: 4632 mov r2, r6
  11583. 8005de6: 462b mov r3, r5
  11584. 8005de8: f7fa fbba bl 8000560 <__aeabi_dmul>
  11585. 8005dec: 4632 mov r2, r6
  11586. 8005dee: 4682 mov sl, r0
  11587. 8005df0: 468b mov fp, r1
  11588. 8005df2: 462b mov r3, r5
  11589. 8005df4: 4630 mov r0, r6
  11590. 8005df6: 4639 mov r1, r7
  11591. 8005df8: f7fa fbb2 bl 8000560 <__aeabi_dmul>
  11592. 8005dfc: 2200 movs r2, #0
  11593. 8005dfe: 4b0b ldr r3, [pc, #44] ; (8005e2c <__kernel_tan+0x394>)
  11594. 8005e00: f7fa f9f8 bl 80001f4 <__adddf3>
  11595. 8005e04: 4602 mov r2, r0
  11596. 8005e06: 460b mov r3, r1
  11597. 8005e08: 4650 mov r0, sl
  11598. 8005e0a: 4659 mov r1, fp
  11599. 8005e0c: f7fa f9f2 bl 80001f4 <__adddf3>
  11600. 8005e10: e9dd 2302 ldrd r2, r3, [sp, #8]
  11601. 8005e14: f7fa fba4 bl 8000560 <__aeabi_dmul>
  11602. 8005e18: 4632 mov r2, r6
  11603. 8005e1a: 462b mov r3, r5
  11604. 8005e1c: f7fa f9ea bl 80001f4 <__adddf3>
  11605. 8005e20: e65f b.n 8005ae2 <__kernel_tan+0x4a>
  11606. 8005e22: 4682 mov sl, r0
  11607. 8005e24: 468b mov fp, r1
  11608. 8005e26: e65e b.n 8005ae6 <__kernel_tan+0x4e>
  11609. 8005e28: bff00000 .word 0xbff00000
  11610. 8005e2c: 3ff00000 .word 0x3ff00000
  11611. 08005e30 <fabs>:
  11612. 8005e30: ec51 0b10 vmov r0, r1, d0
  11613. 8005e34: ee10 2a10 vmov r2, s0
  11614. 8005e38: f021 4300 bic.w r3, r1, #2147483648 ; 0x80000000
  11615. 8005e3c: ec43 2b10 vmov d0, r2, r3
  11616. 8005e40: 4770 bx lr
  11617. 08005e42 <matherr>:
  11618. 8005e42: 2000 movs r0, #0
  11619. 8005e44: 4770 bx lr
  11620. ...
  11621. 08005e48 <nan>:
  11622. 8005e48: ed9f 0b01 vldr d0, [pc, #4] ; 8005e50 <nan+0x8>
  11623. 8005e4c: 4770 bx lr
  11624. 8005e4e: bf00 nop
  11625. 8005e50: 00000000 .word 0x00000000
  11626. 8005e54: 7ff80000 .word 0x7ff80000
  11627. 08005e58 <scalbn>:
  11628. 8005e58: b570 push {r4, r5, r6, lr}
  11629. 8005e5a: ec55 4b10 vmov r4, r5, d0
  11630. 8005e5e: f3c5 520a ubfx r2, r5, #20, #11
  11631. 8005e62: 4606 mov r6, r0
  11632. 8005e64: 462b mov r3, r5
  11633. 8005e66: b9aa cbnz r2, 8005e94 <scalbn+0x3c>
  11634. 8005e68: f025 4300 bic.w r3, r5, #2147483648 ; 0x80000000
  11635. 8005e6c: 4323 orrs r3, r4
  11636. 8005e6e: d03b beq.n 8005ee8 <scalbn+0x90>
  11637. 8005e70: 4b31 ldr r3, [pc, #196] ; (8005f38 <scalbn+0xe0>)
  11638. 8005e72: 4629 mov r1, r5
  11639. 8005e74: 2200 movs r2, #0
  11640. 8005e76: ee10 0a10 vmov r0, s0
  11641. 8005e7a: f7fa fb71 bl 8000560 <__aeabi_dmul>
  11642. 8005e7e: 4b2f ldr r3, [pc, #188] ; (8005f3c <scalbn+0xe4>)
  11643. 8005e80: 429e cmp r6, r3
  11644. 8005e82: 4604 mov r4, r0
  11645. 8005e84: 460d mov r5, r1
  11646. 8005e86: da12 bge.n 8005eae <scalbn+0x56>
  11647. 8005e88: a327 add r3, pc, #156 ; (adr r3, 8005f28 <scalbn+0xd0>)
  11648. 8005e8a: e9d3 2300 ldrd r2, r3, [r3]
  11649. 8005e8e: f7fa fb67 bl 8000560 <__aeabi_dmul>
  11650. 8005e92: e009 b.n 8005ea8 <scalbn+0x50>
  11651. 8005e94: f240 71ff movw r1, #2047 ; 0x7ff
  11652. 8005e98: 428a cmp r2, r1
  11653. 8005e9a: d10c bne.n 8005eb6 <scalbn+0x5e>
  11654. 8005e9c: ee10 2a10 vmov r2, s0
  11655. 8005ea0: 4620 mov r0, r4
  11656. 8005ea2: 4629 mov r1, r5
  11657. 8005ea4: f7fa f9a6 bl 80001f4 <__adddf3>
  11658. 8005ea8: 4604 mov r4, r0
  11659. 8005eaa: 460d mov r5, r1
  11660. 8005eac: e01c b.n 8005ee8 <scalbn+0x90>
  11661. 8005eae: f3c1 520a ubfx r2, r1, #20, #11
  11662. 8005eb2: 460b mov r3, r1
  11663. 8005eb4: 3a36 subs r2, #54 ; 0x36
  11664. 8005eb6: 4432 add r2, r6
  11665. 8005eb8: f240 71fe movw r1, #2046 ; 0x7fe
  11666. 8005ebc: 428a cmp r2, r1
  11667. 8005ebe: dd0b ble.n 8005ed8 <scalbn+0x80>
  11668. 8005ec0: ec45 4b11 vmov d1, r4, r5
  11669. 8005ec4: ed9f 0b1a vldr d0, [pc, #104] ; 8005f30 <scalbn+0xd8>
  11670. 8005ec8: f000 f83c bl 8005f44 <copysign>
  11671. 8005ecc: a318 add r3, pc, #96 ; (adr r3, 8005f30 <scalbn+0xd8>)
  11672. 8005ece: e9d3 2300 ldrd r2, r3, [r3]
  11673. 8005ed2: ec51 0b10 vmov r0, r1, d0
  11674. 8005ed6: e7da b.n 8005e8e <scalbn+0x36>
  11675. 8005ed8: 2a00 cmp r2, #0
  11676. 8005eda: dd08 ble.n 8005eee <scalbn+0x96>
  11677. 8005edc: f023 43ff bic.w r3, r3, #2139095040 ; 0x7f800000
  11678. 8005ee0: f423 03e0 bic.w r3, r3, #7340032 ; 0x700000
  11679. 8005ee4: ea43 5502 orr.w r5, r3, r2, lsl #20
  11680. 8005ee8: ec45 4b10 vmov d0, r4, r5
  11681. 8005eec: bd70 pop {r4, r5, r6, pc}
  11682. 8005eee: f112 0f35 cmn.w r2, #53 ; 0x35
  11683. 8005ef2: da0d bge.n 8005f10 <scalbn+0xb8>
  11684. 8005ef4: f24c 3350 movw r3, #50000 ; 0xc350
  11685. 8005ef8: 429e cmp r6, r3
  11686. 8005efa: ec45 4b11 vmov d1, r4, r5
  11687. 8005efe: dce1 bgt.n 8005ec4 <scalbn+0x6c>
  11688. 8005f00: ed9f 0b09 vldr d0, [pc, #36] ; 8005f28 <scalbn+0xd0>
  11689. 8005f04: f000 f81e bl 8005f44 <copysign>
  11690. 8005f08: a307 add r3, pc, #28 ; (adr r3, 8005f28 <scalbn+0xd0>)
  11691. 8005f0a: e9d3 2300 ldrd r2, r3, [r3]
  11692. 8005f0e: e7e0 b.n 8005ed2 <scalbn+0x7a>
  11693. 8005f10: f023 43ff bic.w r3, r3, #2139095040 ; 0x7f800000
  11694. 8005f14: 3236 adds r2, #54 ; 0x36
  11695. 8005f16: f423 03e0 bic.w r3, r3, #7340032 ; 0x700000
  11696. 8005f1a: ea43 5502 orr.w r5, r3, r2, lsl #20
  11697. 8005f1e: 4620 mov r0, r4
  11698. 8005f20: 4629 mov r1, r5
  11699. 8005f22: 2200 movs r2, #0
  11700. 8005f24: 4b06 ldr r3, [pc, #24] ; (8005f40 <scalbn+0xe8>)
  11701. 8005f26: e7b2 b.n 8005e8e <scalbn+0x36>
  11702. 8005f28: c2f8f359 .word 0xc2f8f359
  11703. 8005f2c: 01a56e1f .word 0x01a56e1f
  11704. 8005f30: 8800759c .word 0x8800759c
  11705. 8005f34: 7e37e43c .word 0x7e37e43c
  11706. 8005f38: 43500000 .word 0x43500000
  11707. 8005f3c: ffff3cb0 .word 0xffff3cb0
  11708. 8005f40: 3c900000 .word 0x3c900000
  11709. 08005f44 <copysign>:
  11710. 8005f44: ec51 0b10 vmov r0, r1, d0
  11711. 8005f48: ee11 0a90 vmov r0, s3
  11712. 8005f4c: ee10 2a10 vmov r2, s0
  11713. 8005f50: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000
  11714. 8005f54: f000 4000 and.w r0, r0, #2147483648 ; 0x80000000
  11715. 8005f58: ea41 0300 orr.w r3, r1, r0
  11716. 8005f5c: ec43 2b10 vmov d0, r2, r3
  11717. 8005f60: 4770 bx lr
  11718. ...
  11719. 08005f64 <_init>:
  11720. 8005f64: b5f8 push {r3, r4, r5, r6, r7, lr}
  11721. 8005f66: bf00 nop
  11722. 8005f68: bcf8 pop {r3, r4, r5, r6, r7}
  11723. 8005f6a: bc08 pop {r3}
  11724. 8005f6c: 469e mov lr, r3
  11725. 8005f6e: 4770 bx lr
  11726. 08005f70 <_fini>:
  11727. 8005f70: b5f8 push {r3, r4, r5, r6, r7, lr}
  11728. 8005f72: bf00 nop
  11729. 8005f74: bcf8 pop {r3, r4, r5, r6, r7}
  11730. 8005f76: bc08 pop {r3}
  11731. 8005f78: 469e mov lr, r3
  11732. 8005f7a: 4770 bx lr